void Configuration::setServiceMenu() { KMenu *menu = qobject_cast<KMenu*>(sender()); if (menu->actions().count() > 1) { return; } KServiceGroup::Ptr rootGroup = KServiceGroup::group(menu->actions()[0]->data().toString()); if (!rootGroup || !rootGroup->isValid() || rootGroup->noDisplay()) { return; } KServiceGroup::List list = rootGroup->entries(true, true, true, true); QAction *action = menu->addAction(KIcon("list-add"), i18n("Add This Menu")); action->setData(rootGroup->relPath()); menu->addSeparator(); for (int i = 0; i < list.count(); ++i) { if (list.at(i)->isType(KST_KService)) { const KService::Ptr service = KService::Ptr::staticCast(list.at(i)); action = menu->addAction(KIcon(service->icon()), service->name()); action->setEnabled(false); } else if (list.at(i)->isType(KST_KServiceGroup)) { const KServiceGroup::Ptr group = KServiceGroup::Ptr::staticCast(list.at(i)); if (group->noDisplay() || group->childCount() == 0) { continue; } KMenu *subMenu = new KMenu(menu); QAction *action = subMenu->addAction(QString()); action->setData(group->relPath()); action->setVisible(false); action = menu->addAction(KIcon(group->icon()), group->caption()); action->setMenu(subMenu); connect(subMenu, SIGNAL(aboutToShow()), this, SLOT(setServiceMenu())); } else if (list.at(i)->isType(KST_KServiceSeparator)) { menu->addSeparator(); } } }
void setupHelpButton(KDialog* dialog, KAboutData* aboutData) { QObject::disconnect(dialog, SIGNAL(helpClicked()), dialog, SLOT(slotHelp())); KHelpMenu* helpMenu = new KHelpMenu(dialog, aboutData, false); KMenu* menu = helpMenu->menu(); menu->removeAction(menu->actions().first()); QAction* openHandbookAction = new QAction(i18n("Handbook"), dialog); QObject::connect(openHandbookAction, SIGNAL(triggered(bool)), dialog, SLOT(slotHelp())); menu->insertAction(menu->actions().first(), openHandbookAction); dialog->button(KDialog::Help)->setMenu(menu); }
void ServiceCollectionTreeView::contextMenuEvent( QContextMenuEvent * event ) { if ( m_playableTracks ) CollectionTreeView::contextMenuEvent( event ); else { QModelIndexList indices = selectedIndexes(); if( filterModel() ) { QModelIndexList tmp; foreach( const QModelIndex &idx, indices ) { tmp.append( filterModel()->mapToSource( idx ) ); } indices = tmp; } if( !indices.isEmpty() ) { KMenu menu; if( indices.count() == 1 ) { if( indices.first().isValid() && indices.first().internalPointer() ) { Meta::DataPtr data = static_cast<CollectionTreeItem*>( indices.first().internalPointer() )->data(); if( data ) { Meta::CustomActionsCapability *cac = data->create<Meta::CustomActionsCapability>(); if( cac ) { QList<PopupDropperAction*> actions = cac->customActions(); if( actions.count() ) menu.addSeparator(); foreach( PopupDropperAction *action, actions ) menu.addAction( action ); delete cac; } } } } if( menu.actions().count() > 0 ) { (void)menu.exec( event->globalPos() ); QSet<CollectionTreeItem*> items; foreach( const QModelIndex &index, indices ) { if( index.isValid() && index.internalPointer() ) items.insert( static_cast<CollectionTreeItem*>( index.internalPointer() ) ); } }