1 #include "QtxPopupMenu.h"
6 Class: QtxPopupMenu::TitleMenuItem [Internal]
7 Descr: Custom menu item for popup title.
10 class QtxPopupMenu::TitleMenuItem : public QCustomMenuItem
13 TitleMenuItem( const QString&, const QIconSet&, const int );
14 virtual ~TitleMenuItem();
16 virtual bool fullSpan() const;
17 virtual bool isSeparator() const;
18 virtual void setFont( const QFont& );
20 virtual void paint( QPainter*, const QColorGroup&, bool, bool, int, int, int, int );
21 virtual QSize sizeHint();
30 QtxPopupMenu::TitleMenuItem::TitleMenuItem( const QString& txt, const QIconSet& ico, const int align )
38 QtxPopupMenu::TitleMenuItem::~TitleMenuItem()
42 bool QtxPopupMenu::TitleMenuItem::fullSpan() const
47 bool QtxPopupMenu::TitleMenuItem::isSeparator() const
52 void QtxPopupMenu::TitleMenuItem::setFont( const QFont& font )
55 myFont.setBold( true );
58 void QtxPopupMenu::TitleMenuItem::paint( QPainter* p, const QColorGroup& cg,
59 bool act, bool enabled, int x, int y, int w, int h )
64 p->fillRect( x, y, w, h, cg.brush( QColorGroup::Mid ) );
66 p->setPen( cg.shadow() );
67 p->drawRect( x, y, w, h );
71 int iw = p->fontMetrics().width( myText ) + ( myIcon.isNull() ? 0 : myIcon.pixmap().width() + s );
72 int ih = QMAX( ( myIcon.isNull() ? 0 : myIcon.pixmap().height() ), p->fontMetrics().height() );
77 if ( myAlign & AlignLeft )
79 else if ( myAlign & AlignRight )
81 else if ( myAlign & AlignHCenter )
82 ix = x + ( w - iw ) / 2;
84 if ( myAlign & AlignTop )
86 else if ( myAlign & AlignBottom )
87 iy = y + ( h - ih - m );
88 else if ( myAlign & AlignVCenter )
89 iy = y + ( h - ih ) / 2;
91 if ( !myIcon.isNull() )
93 p->drawPixmap( ix, iy + ( ih - myIcon.pixmap().height() ) / 2, myIcon.pixmap() );
94 ix += myIcon.pixmap().width() + s;
97 p->setPen( cg.brightText() );
98 p->drawText( ix, iy + ( ih - p->fontMetrics().height() ) / 2 +
99 p->fontMetrics().ascent(), myText, 0, -1 );
104 QSize QtxPopupMenu::TitleMenuItem::sizeHint()
106 QFontMetrics fM( myFont );
110 int w = fM.width( myText ) + ( myIcon.isNull() ? 0 : myIcon.pixmap().width() + s );
111 int h = QMAX( ( myIcon.isNull() ? 0 : myIcon.pixmap().height() ), fM.height() ) + 2 * m;
113 return QSize( w, h );
117 Class: QtxPopupMenu [Public]
118 Descr: Popup menu item with title.
121 QtxPopupMenu::QtxPopupMenu( QWidget* parent, const char* name )
122 : QPopupMenu( parent, name ),
124 myPolicy( TitleAuto ),
125 myAlign( AlignCenter )
129 QtxPopupMenu::~QtxPopupMenu()
133 QString QtxPopupMenu::titleText() const
138 QIconSet QtxPopupMenu::titleIcon() const
143 int QtxPopupMenu::titlePolicy() const
148 int QtxPopupMenu::titleAlignment() const
153 void QtxPopupMenu::setTitleText( const QString& txt )
163 void QtxPopupMenu::setTitleIcon( const QIconSet& ico )
170 void QtxPopupMenu::setTitlePolicy( const int p )
180 void QtxPopupMenu::setTitleAlignment( const int a )
190 void QtxPopupMenu::show()
197 void QtxPopupMenu::hide()
204 QtxPopupMenu::TitleMenuItem* QtxPopupMenu::createTitleItem( const QString& txt, const QIconSet& ico,
205 const int align ) const
207 return new TitleMenuItem( txt, ico, align );
210 void QtxPopupMenu::insertTitle()
212 if ( myId != -1 || titlePolicy() == TitleOff ||
213 ( titlePolicy() == TitleAuto && titleText().stripWhiteSpace().isEmpty() ) )
216 TitleMenuItem* item = createTitleItem( titleText(), titleIcon(), titleAlignment() );
218 myId = insertItem( item, -1, 0 );
221 void QtxPopupMenu::removeTitle()
230 void QtxPopupMenu::updateTitle()