/* ============================================================ * 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 SQUEEZEDCOMBOBOX_H #define SQUEEZEDCOMBOBOX_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 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 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 m_originalItems; TQTimer* m_timer; SqueezedComboBoxTip* m_tooltip; }; #endif // SQUEEZEDCOMBOBOX_H