28 #define YUILogComponent "qt-ui"
29 #include <yui/YUILog.h>
33 #include "YQContextMenu.h"
34 #include <yui/YEvent.h>
40 , _suppressCancelEvent(false )
42 yuiWarning() <<
"YQContextMenu";
49 , _position ( position )
64 QMenu * menu =
new QMenu( 0 );
65 YUI_CHECK_NEW( menu );
66 menu->setProperty(
"class",
"ycontextmenu QMenu" );
68 connect( menu, SIGNAL( triggered ( QAction * ) ),
71 connect( menu, SIGNAL( aboutToHide () ),
78 menu->popup( _position );
85 for ( YItemIterator it = begin; it != end; ++it )
90 if ( item->hasIconName() )
92 std::string iconName = iconFullPath( item );
93 icon = QPixmap( iconName.c_str() );
96 yuiWarning() <<
"Can't load icon " << iconName << std::endl;
99 if ( item->hasChildren() )
104 subMenu = parentMenu->addMenu( fromUTF8( item->label() ));
106 subMenu = parentMenu->addMenu( QIcon( icon ), fromUTF8( item->label() ));
108 connect( subMenu, SIGNAL( triggered ( QAction * ) ),
111 rebuildMenuTree( subMenu, item->childrenBegin(), item->childrenEnd() );
122 act = parentMenu->addAction( fromUTF8( item->label() ) );
124 act = parentMenu->addAction( QIcon( icon ), fromUTF8( item->label() ) );
126 _serials[act] = item->index();
143 if ( ! _suppressCancelEvent )
146 _suppressCancelEvent =
false;
154 if ( _serials.contains( action ) )
155 serialNo = _serials[action];
158 _selectedItem = findMenuItem( serialNo );
173 _suppressCancelEvent =
true;
174 QTimer::singleShot( 100,
this, SLOT(
returnNow() ) );
178 yuiError() <<
"No menu item with serial no. " << serialNo << std::endl;
213 #include "YQContextMenu.moc"