26 #include <qpushbutton.h>
30 #define YUILogComponent "qt-ui"
31 #include <yui/YUILog.h>
35 #include "YQMenuButton.h"
36 #include <yui/YEvent.h>
43 const string & label )
44 : QWidget( (QWidget *) parent->widgetRep() )
45 , YMenuButton( parent, label )
49 _qt_button =
new QPushButton( fromUTF8( label ),
this );
51 _qt_button->move( YQButtonBorder, YQButtonBorder );
52 setMinimumSize( _qt_button->minimumSize()
53 + 2 * QSize( YQButtonBorder, YQButtonBorder ) );
66 _qt_button->setText( fromUTF8( label ) );
67 YMenuButton::setLabel( label );
79 if ( _qt_button->menu() )
80 delete _qt_button->menu();
86 QMenu * menu =
new QMenu( _qt_button );
87 YUI_CHECK_NEW( menu );
88 _qt_button->setMenu( menu );
89 menu->setProperty(
"class",
"ymenubutton QMenu" );
91 connect( menu, &pclass(menu)::triggered,
105 for ( YItemIterator it = begin; it != end; ++it )
110 if ( item->hasIconName() )
115 if ( item->hasChildren() )
120 subMenu = parentMenu->addMenu( fromUTF8( item->label() ));
122 subMenu = parentMenu->addMenu( icon, fromUTF8( item->label() ));
124 connect( subMenu, &pclass(subMenu)::triggered,
127 rebuildMenuTree( subMenu, item->childrenBegin(), item->childrenEnd() );
138 act = parentMenu->addAction( fromUTF8( item->label() ) );
140 act = parentMenu->addAction( icon, fromUTF8( item->label() ) );
142 _serials[act] = item->index();
152 if ( _serials.contains( action ) )
153 serialNo = _serials[action];
156 _selectedItem = findMenuItem( serialNo );
171 QTimer::singleShot( 100,
this, SLOT(
returnNow() ) );
175 yuiError() <<
"No menu item with serial no. " << serialNo << endl;
195 _qt_button->setEnabled( enabled );
196 YWidget::setEnabled( enabled );
202 return 2*YQButtonBorder + _qt_button->sizeHint().width();
208 return 2*YQButtonBorder + _qt_button->sizeHint().height();
215 _qt_button->resize( newWidth - 2 * YQButtonBorder,
216 newHeight - 2 * YQButtonBorder );
217 resize( newWidth, newHeight );
224 _qt_button->setFocus();