summaryrefslogtreecommitdiffstats
path: root/chalk/ui/squeezedcombobox.h
diff options
context:
space:
mode:
Diffstat (limited to 'chalk/ui/squeezedcombobox.h')
-rw-r--r--chalk/ui/squeezedcombobox.h137
1 files changed, 137 insertions, 0 deletions
diff --git a/chalk/ui/squeezedcombobox.h b/chalk/ui/squeezedcombobox.h
new file mode 100644
index 00000000..66758335
--- /dev/null
+++ b/chalk/ui/squeezedcombobox.h
@@ -0,0 +1,137 @@
+/* ============================================================
+ * 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 STQUEEZEDCOMBOBOX_H
+#define STQUEEZEDCOMBOBOX_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 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<int,TQString> m_originalItems;
+ TQTimer* m_timer;
+ SqueezedComboBoxTip* m_tooltip;
+};
+
+#endif // STQUEEZEDCOMBOBOX_H