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.
koffice/chalk/ui/squeezedcombobox.h

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