You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
3.7 KiB
138 lines
3.7 KiB
/* ============================================================
|
|
* Author: Tom Albers <tomalbers@kde.nl>
|
|
* Date : 2005-01-01
|
|
* Description :
|
|
*
|
|
* Copyright 2005 by Tom Albers
|
|
*
|
|
* This program is free software; you can redistribute it
|
|
* and/or modify it under the terms of the GNU General
|
|
* Public License as published by the Free Software Foundation;
|
|
* either version 2, or (at your option)
|
|
* any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* ============================================================ */
|
|
|
|
/** @file squeezedcombobox.h */
|
|
|
|
#ifndef SQUEEZEDCOMBOBOX_H
|
|
#define SQUEEZEDCOMBOBOX_H
|
|
|
|
class TQTimer;
|
|
|
|
// TQt includes.
|
|
|
|
#include <tqcombobox.h>
|
|
#include <tqtooltip.h>
|
|
|
|
class SqueezedComboBox;
|
|
|
|
/** @class SqueezedComboBoxTip
|
|
* This class shows a tooltip for a SqueezedComboBox
|
|
* the tooltip will contain the full text and helps
|
|
* the user find the correct entry. It is automatically
|
|
* activated when starting a SqueezedComboBox. This is
|
|
* inherited from TQToolTip
|
|
*
|
|
* @author Tom Albers
|
|
*/
|
|
class SqueezedComboBoxTip : public TQToolTip
|
|
{
|
|
public:
|
|
/**
|
|
* Constructor. An example call (as done in
|
|
* SqueezedComboBox::SqueezedComboBox):
|
|
* @code
|
|
* t = new SqueezedComboBoxTip( this->listBox()->viewport(), this );
|
|
* @endcode
|
|
*
|
|
* @param parent parent widget (viewport)
|
|
* @param name parent widget
|
|
*/
|
|
SqueezedComboBoxTip( TQWidget *parent, SqueezedComboBox *name );
|
|
|
|
protected:
|
|
/**
|
|
* Reimplemented version from TQToolTip which shows the
|
|
* tooltip when needed.
|
|
* @param pos the point where the mouse currently is
|
|
*/
|
|
void maybeTip( const TQPoint& pos );
|
|
|
|
private:
|
|
SqueezedComboBox* m_originalWidget;
|
|
};
|
|
|
|
/** @class SqueezedComboBox
|
|
*
|
|
* This widget is a TQComboBox, but then a little bit
|
|
* different. It only shows the right part of the items
|
|
* depending on de size of the widget. When it is not
|
|
* possible to show the complete item, it will be shortened
|
|
* and "..." will be prepended.
|
|
*
|
|
* @image html squeezedcombobox.png "This is how it looks"
|
|
* @author Tom Albers
|
|
*/
|
|
class SqueezedComboBox : public TQComboBox
|
|
{
|
|
Q_OBJECT
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
/**
|
|
* Constructor
|
|
* @param parent parent widget
|
|
* @param name name to give to the widget
|
|
*/
|
|
SqueezedComboBox(TQWidget *parent = 0, const char *name = 0 );
|
|
|
|
/**
|
|
* destructor
|
|
*/
|
|
virtual ~SqueezedComboBox();
|
|
|
|
bool contains(const TQString & text) const;
|
|
|
|
/**
|
|
* This inserts a item to the list. See TQComboBox::insertItem()
|
|
* for detaills. Please do not use TQComboBox::insertItem() to this
|
|
* widget, as that will fail.
|
|
* @param newItem the original (long version) of the item which needs
|
|
* to be added to the combobox
|
|
* @param index the position in the widget.
|
|
*/
|
|
void insertSqueezedItem(const TQString& newItem, int index);
|
|
|
|
/**
|
|
* This method returns the full text (not squeezed) of the currently
|
|
* highlighted item.
|
|
* @return full text of the highlighted item
|
|
*/
|
|
TQString itemHighlighted( );
|
|
|
|
/**
|
|
* Sets the sizeHint() of this widget.
|
|
*/
|
|
virtual TQSize sizeHint() const;
|
|
|
|
private slots:
|
|
void slotTimeOut();
|
|
void slotUpdateToolTip( int index );
|
|
|
|
private:
|
|
void resizeEvent ( TQResizeEvent * );
|
|
TQString squeezeText( const TQString& original);
|
|
|
|
TQMap<int,TQString> m_originalItems;
|
|
TQTimer* m_timer;
|
|
SqueezedComboBoxTip* m_tooltip;
|
|
};
|
|
|
|
#endif // SQUEEZEDCOMBOBOX_H
|