/* ============================================================ * Author: Tom Albers * 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 STQUEEZEDCOMBOBOX_H #define STQUEEZEDCOMBOBOX_H class TQTimer; // TQt includes. #include #include 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 tqparent tqparent widget (viewport) * @param name tqparent widget */ SqueezedComboBoxTip( TQWidget *tqparent, 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 tqparent tqparent widget * @param name name to give to the widget */ SqueezedComboBox(TQWidget *tqparent = 0, const char *name = 0 ); /** * destructor */ virtual ~SqueezedComboBox(); bool tqcontains(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 tqsizeHint() of this widget. */ virtual TQSize tqsizeHint() const; private slots: void slotTimeOut(); void slotUpdateToolTip( int index ); private: void resizeEvent ( TQResizeEvent * ); TQString squeezeText( const TQString& original); TQMap m_originalItems; TQTimer* m_timer; SqueezedComboBoxTip* m_tooltip; }; #endif // STQUEEZEDCOMBOBOX_H