KToolBar * xQGanttBarViewPort::toolbar(QMainWindow *mw) { if(_toolbar || mw == 0) return _toolbar; _toolbar = new KToolBar(mw, QMainWindow::DockTop); mw->addToolBar(_toolbar); // KIconLoader* iconloader = new KIconLoader("kgantt"); _toolbar->insertButton("ganttSelect.png", 0, SIGNAL(clicked()), this, SLOT(setSelect()), true, i18n("Select")); KPopupMenu *selectMenu = new KPopupMenu(_toolbar); /* select all items */ QPixmap pix = _iconloader->loadIcon("ganttSelecttask.png", KIcon::Toolbar , 16); if(pix.isNull()) printf("ganttSelecttask.png not found !\n"); selectMenu->insertItem(pix, i18n("Select All"), this, SLOT(selectAll())); /* unselect all items */ pix = _iconloader->loadIcon("ganttUnselecttask", KIcon::Toolbar , 16); if(pix.isNull()) printf("ganttUnselecttask.png not found !\n"); selectMenu->insertItem(pix, i18n("Unselect All"), this, SLOT(unselectAll())); KToolBarButton *b = _toolbar->getButton(0); b->setDelayedPopup(selectMenu); _toolbar->insertButton("viewmag.png", 1, SIGNAL(clicked()), this, SLOT(setZoom()), true, i18n("Zoom")); KPopupMenu *zoomMenu = new KPopupMenu(_toolbar); pix = _iconloader->loadIcon("viewmag.png", KIcon::Toolbar , 16); if(pix.isNull()) printf("viewmag.png not found !\n"); zoomMenu->insertItem(pix, i18n("Zoom All"), this, SLOT(zoomAll())); zoomMenu->insertSeparator(); pix = _iconloader->loadIcon("viewmag+.png", KIcon::Toolbar , 16); if(pix.isNull()) printf("viewmag+.png not found !\n"); zoomMenu->insertItem(pix, i18n("Zoom In +"), this, SLOT(zoomIn())); pix = _iconloader->loadIcon("viewmag-.png", KIcon::Toolbar , 16); if(pix.isNull()) printf("viewmag-.png not found !\n"); zoomMenu->insertItem(pix, i18n("Zoom Out -"), this, SLOT(zoomOut())); b = _toolbar->getButton(1); b->setDelayedPopup(zoomMenu); _toolbar->insertButton("move.png", 2, SIGNAL(clicked()), this, SLOT(setMove()), true, i18n("Move")); return _toolbar; }
int DolphinContextMenu::insertOpenWithItems(KPopupMenu* popup, QValueVector<KService::Ptr>& openWithVector) { // Prepare 'Open With' sub menu. Usually a sub menu is created, where all applications // are listed which are registered to open the item. As last entry "Other..." will be // attached which allows to select a custom application. If no applications are registered // no sub menu is created at all, only "Open With..." will be offered. const KFileItemList* list = m_dolphinView->selectedItems(); assert(list != 0); bool insertOpenWithItems = true; const QString contextMimeType(m_fileInfo->mimetype()); KFileItemListIterator mimeIt(*list); KFileItem* item = 0; while (insertOpenWithItems && ((item = mimeIt.current()) != 0)) { insertOpenWithItems = (contextMimeType == item->mimetype()); ++mimeIt; } int openWithID = -1; if (insertOpenWithItems) { // fill the 'Open with' sub menu with application types const KMimeType::Ptr mimePtr = KMimeType::findByURL(m_fileInfo->url()); KTrader::OfferList offers = KTrader::self()->query(mimePtr->name(), "Type == 'Application'"); int index = openWithIDStart; if (offers.count() > 0) { KTrader::OfferList::Iterator it; KPopupMenu* openWithMenu = new KPopupMenu(); for(it = offers.begin(); it != offers.end(); ++it) { // The offer list from the KTrader returns duplicate // application entries. Although this seems to be a configuration // problem outside the scope of Dolphin, duplicated entries just // will be skipped here. const QString appName((*it)->name()); if (!containsEntry(openWithMenu, appName)) { openWithMenu->insertItem((*it)->pixmap(KIcon::Small), appName, index); openWithVector.append(*it); ++index; } } openWithMenu->insertSeparator(); openWithMenu->insertItem(i18n("&Other..."), index); popup->insertItem(i18n("Open With"), openWithMenu); } else { // No applications are registered, hence just offer // a "Open With..." item instead of a sub menu containing // only one entry. popup->insertItem(i18n("Open With..."), openWithIDStart); } openWithID = index; } else { // At least one of the selected items has a different MIME type. In this case // just show a disabled "Open With..." entry. popup->insertItem(i18n("Open With..."), openWithIDStart); popup->setItemEnabled(openWithIDStart, false); } popup->setItemEnabled(openWithID, insertOpenWithItems); return openWithID; }
void DolphinContextMenu::openViewportContextMenu() { // Parts of the following code have been taken // from the class KonqOperations located in // libqonq/konq_operations.h of Konqueror. // (Copyright (C) 2000 David Faure <*****@*****.**>) assert(m_fileInfo == 0); const int propertiesID = 100; const int bookmarkID = 101; KPopupMenu* popup = new KPopupMenu(m_dolphinView); Dolphin& dolphin = Dolphin::mainWin(); // setup 'Create New' menu KPopupMenu* createNewMenu = new KPopupMenu(); KAction* createFolderAction = dolphin.actionCollection()->action("create_folder"); if (createFolderAction != 0) { createFolderAction->plug(createNewMenu); } createNewMenu->insertSeparator(); KAction* action = 0; QPtrListIterator<KAction> fileGrouptIt(dolphin.fileGroupActions()); while ((action = fileGrouptIt.current()) != 0) { action->plug(createNewMenu); ++fileGrouptIt; } // TODO: not used yet. See documentation of Dolphin::linkGroupActions() // and Dolphin::linkToDeviceActions() in the header file for details. // //createNewMenu->insertSeparator(); // //QPtrListIterator<KAction> linkGroupIt(dolphin.linkGroupActions()); //while ((action = linkGroupIt.current()) != 0) { // action->plug(createNewMenu); // ++linkGroupIt; //} // //KPopupMenu* linkToDeviceMenu = new KPopupMenu(); //QPtrListIterator<KAction> linkToDeviceIt(dolphin.linkToDeviceActions()); //while ((action = linkToDeviceIt.current()) != 0) { // action->plug(linkToDeviceMenu); // ++linkToDeviceIt; //} // //createNewMenu->insertItem(i18n("Link to Device"), linkToDeviceMenu); const KURL& url = dolphin.activeView()->url(); if (url.protocol() == "trash") { popup->insertItem(i18n("Empty Deleted Items Folder"), emptyID); } else { popup->insertItem(SmallIcon("filenew"), i18n("Create New"), createNewMenu); } popup->insertSeparator(); KAction* pasteAction = dolphin.actionCollection()->action(KStdAction::stdName(KStdAction::Paste)); pasteAction->plug(popup); // setup 'View Mode' menu KPopupMenu* viewModeMenu = new KPopupMenu(); KAction* iconsMode = dolphin.actionCollection()->action("icons"); iconsMode->plug(viewModeMenu); KAction* detailsMode = dolphin.actionCollection()->action("details"); detailsMode->plug(viewModeMenu); KAction* previewsMode = dolphin.actionCollection()->action("previews"); previewsMode->plug(viewModeMenu); popup->insertItem(i18n("View Mode"), viewModeMenu); popup->insertSeparator(); popup->insertItem(i18n("Bookmark this folder"), bookmarkID); popup->insertSeparator(); popup->insertItem(i18n("Properties..."), propertiesID); int id = popup->exec(m_pos); if (id == emptyID) { KonqOperations::emptyTrash(); } else if (id == propertiesID) { new KPropertiesDialog(dolphin.activeView()->url()); } else if (id == bookmarkID) { const KURL& url = dolphin.activeView()->url(); KBookmark bookmark = EditBookmarkDialog::getBookmark(i18n("Add folder as bookmark"), url.filename(), url, "bookmark"); if (!bookmark.isNull()) { KBookmarkManager* manager = DolphinSettings::instance().bookmarkManager(); KBookmarkGroup root = manager->root(); root.addBookmark(manager, bookmark); manager->emitChanged(root); } } popup->deleteLater(); }
void DolphinContextMenu::openItemContextMenu() { // Parts of the following code have been taken // from the class KonqOperations located in // libqonq/konq_operations.h of Konqueror. // (Copyright (C) 2000 David Faure <*****@*****.**>) assert(m_fileInfo != 0); KPopupMenu* popup = new KPopupMenu(m_dolphinView); Dolphin& dolphin = Dolphin::mainWin(); const KURL::List urls = m_dolphinView->selectedURLs(); const KURL& url = dolphin.activeView()->url(); if (url.protocol() == "trash") { popup->insertItem(i18n("&Restore"), restoreID); } // insert 'Cut', 'Copy' and 'Paste' const KStdAction::StdAction actionNames[] = { KStdAction::Cut, KStdAction::Copy, KStdAction::Paste }; const int count = sizeof(actionNames) / sizeof(KStdAction::StdAction); for (int i = 0; i < count; ++i) { KAction* action = dolphin.actionCollection()->action(KStdAction::stdName(actionNames[i])); if (action != 0) { action->plug(popup); } } popup->insertSeparator(); // insert 'Rename' KAction* renameAction = dolphin.actionCollection()->action("rename"); renameAction->plug(popup); // insert 'Move to Trash' for local URLs, otherwise insert 'Delete' if (url.isLocalFile()) { KAction* moveToTrashAction = dolphin.actionCollection()->action("move_to_trash"); moveToTrashAction->plug(popup); } else { KAction* deleteAction = dolphin.actionCollection()->action("delete"); deleteAction->plug(popup); } // insert 'Bookmark this folder...' entry // urls is a list of selected items, so insert boolmark menu if // urls contains only one item, i.e. no multiple selection made if (m_fileInfo->isDir() && (urls.count() == 1)) { popup->insertItem(i18n("Bookmark this folder"), bookmarkID); } popup->insertSeparator(); // Insert 'Open With...' sub menu QValueVector<KService::Ptr> openWithVector; const int openWithID = insertOpenWithItems(popup, openWithVector); // Insert 'Actions' sub menu QValueVector<KDEDesktopMimeType::Service> actionsVector; insertActionItems(popup, actionsVector); // insert 'Properties...' entry popup->insertSeparator(); KAction* propertiesAction = dolphin.actionCollection()->action("properties"); propertiesAction->plug(popup); int id = popup->exec(m_pos); if (id == restoreID ) { KonqOperations::restoreTrashedItems(urls); } else if (id == bookmarkID) { const KURL selectedURL(m_fileInfo->url()); KBookmark bookmark = EditBookmarkDialog::getBookmark(i18n("Add folder as bookmark"), selectedURL.filename(), selectedURL, "bookmark"); if (!bookmark.isNull()) { KBookmarkManager* manager = DolphinSettings::instance().bookmarkManager(); KBookmarkGroup root = manager->root(); root.addBookmark(manager, bookmark); manager->emitChanged(root); } } else if (id >= actionsIDStart) { // one of the 'Actions' items has been selected KDEDesktopMimeType::executeService(urls, actionsVector[id - actionsIDStart]); } else if (id >= openWithIDStart) { // one of the 'Open With' items has been selected if (id == openWithID) { // the item 'Other...' has been selected KRun::displayOpenWithDialog(urls); } else { KService::Ptr servicePtr = openWithVector[id - openWithIDStart]; KRun::run(*servicePtr, urls); } } openWithVector.clear(); actionsVector.clear(); popup->deleteLater(); }
void subversionPart::contextMenu( QPopupMenu *popup, const Context *context ) { //no project, no subversion. Don't test on projectDirectory() here. If the user wants this project to have subversion support //give it to him. e.g. for out of root subprojects like with qmake if(!project()) return; kdDebug(9036) << "contextMenu()" << endl; if (context->hasType( Context::FileContext ) || context->hasType( Context::EditorContext )) { if (context->hasType( Context::FileContext )) { kdDebug(9036) << "Requested for a FileContext" << endl; const FileContext *fcontext = static_cast<const FileContext*>( context ); m_urls = fcontext->urls(); } else { kdDebug(9036) << "Requested for an EditorContext" << endl; const EditorContext *editorContext = static_cast<const EditorContext*>( context ); m_urls = editorContext->url(); } // THis stuff should end up into prepareOperation() URLUtil::dump( m_urls ); if (m_urls.count() <= 0) return; KPopupMenu *subMenu = new KPopupMenu( popup ); if (context->hasType( Context::FileContext )) popup->insertSeparator(); int id = subMenu->insertItem( actionCommit->text(), this, SLOT(slotCommit()) ); // CvsService let to do log and diff operations only on one file (or directory) at time /* if (m_urls.count() == 1) { subMenu->insertItem( actionDiff->text(), this, SLOT(slotDiff()) ); subMenu->insertItem( actionLog->text(), this, SLOT(slotLog()) ); }*/ subMenu->setWhatsThis(id, i18n("<b>Commit file(s)</b><p>Commits file to repository if modified.")); id = subMenu->insertItem( actionAdd->text(), this, SLOT(slotAdd()) ); subMenu->setWhatsThis(id, i18n("<b>Add file to repository</b><p>Adds file to repository.")); id = subMenu->insertItem( actionRemove->text(), this, SLOT(slotDel()) ); subMenu->setWhatsThis(id, i18n("<b>Remove from repository</b><p>Removes file(s) from repository.")); id = subMenu->insertItem( actionLog->text(), this, SLOT(slotLog()) ); subMenu->setWhatsThis(id, i18n("<b>Show logs..</b><p>View Logs")); id = subMenu->insertItem( actionBlame->text(), this, SLOT(slotBlame()) ); subMenu->setWhatsThis(id, i18n("<b>Blame 0:HEAD </b><p>Show Annotate")); subMenu->insertSeparator(); id = subMenu->insertItem( actionDiffLocal->text(), this, SLOT(slotDiffLocal()) ); subMenu->setWhatsThis(id, i18n("<b>Diff</b><p>Diff file to local disk.")); id = subMenu->insertItem( actionDiffHead->text(), this, SLOT(slotDiffHead()) ); subMenu->setWhatsThis(id, i18n("<b>Diff</b><p>Diff file to repository.")); id = subMenu->insertItem( actionUpdate->text(), this, SLOT(slotUpdate()) ); subMenu->setWhatsThis(id, i18n("<b>Update</b><p>Updates file(s) from repository.")); id = subMenu->insertItem( actionRevert->text(), this, SLOT(slotRevert()) ); subMenu->setWhatsThis(id, i18n("<b>Revert</b><p>Undo local changes.") ); id = subMenu->insertItem( actionResolve->text(), this, SLOT(slotResolve()) ); subMenu->setWhatsThis(id, i18n("<b>Resolve</b><p>Resolve conflicting state.") ); id = subMenu->insertItem( actionSwitch->text(), this, SLOT(slotSwitch()) ); subMenu->setWhatsThis(id, i18n("<b>Switch</b><p>Switch working tree.") ); id = subMenu->insertItem( actionCopy->text(), this, SLOT(slotCopy()) ); subMenu->setWhatsThis(id, i18n("<b>Copy</b><p>Copy from/between path/URLs") ); id = subMenu->insertItem( actionMerge->text(), this, SLOT(slotMerge()) ); subMenu->setWhatsThis(id, i18n("<b>Merge</b><p>Merge difference to working copy") ); /* subMenu->insertSeparator(); id = subMenu->insertItem( actionAddToIgnoreList->text(), this, SLOT(slotAddToIgnoreList()) ); subMenu->setWhatsThis(id, i18n("<b>Ignore in Subversion operations</b><p>Ignores file(s).")); id = subMenu->insertItem( actionRemoveFromIgnoreList->text(), this, SLOT(slotRemoveFromIgnoreList()) ); subMenu->setWhatsThis(id, i18n("<b>Do not ignore in Subversion operations</b><p>Do not ignore file(s).")); */ // Now insert in parent menu popup->insertItem( i18n("Subversion"), subMenu ); } }
void Amarok::coverContextMenu( QWidget *parent, QPoint point, const QString &artist, const QString &album, bool showCoverManager ) { KPopupMenu menu; enum { SHOW, FETCH, CUSTOM, DELETE, MANAGER }; menu.insertTitle( i18n( "Cover Image" ) ); menu.insertItem( SmallIconSet( Amarok::icon( "zoom" ) ), i18n( "&Show Fullsize" ), SHOW ); menu.insertItem( SmallIconSet( Amarok::icon( "download" ) ), i18n( "&Fetch From amazon.%1" ).arg( CoverManager::amazonTld() ), FETCH ); menu.insertItem( SmallIconSet( Amarok::icon( "files" ) ), i18n( "Set &Custom Cover" ), CUSTOM ); bool disable = !album.isEmpty(); // disable setting covers for unknown albums menu.setItemEnabled( FETCH, disable ); menu.setItemEnabled( CUSTOM, disable ); menu.insertSeparator(); menu.insertItem( SmallIconSet( Amarok::icon( "remove" ) ), i18n( "&Unset Cover" ), DELETE ); if ( showCoverManager ) { menu.insertSeparator(); menu.insertItem( SmallIconSet( Amarok::icon( "covermanager" ) ), i18n( "Cover &Manager" ), MANAGER ); } #ifndef AMAZON_SUPPORT menu.setItemEnabled( FETCH, false ); #endif disable = !CollectionDB::instance()->albumImage( artist, album, 0 ).contains( "nocover" ); menu.setItemEnabled( SHOW, disable ); menu.setItemEnabled( DELETE, disable ); switch( menu.exec( point ) ) { case SHOW: CoverManager::viewCover( artist, album, parent ); break; case DELETE: { const int button = KMessageBox::warningContinueCancel( parent, i18n( "Are you sure you want to remove this cover from the Collection?" ), QString::null, KStdGuiItem::del() ); if ( button == KMessageBox::Continue ) CollectionDB::instance()->removeAlbumImage( artist, album ); break; } case FETCH: #ifdef AMAZON_SUPPORT CollectionDB::instance()->fetchCover( parent, artist, album, false ); break; #endif case CUSTOM: { QString artist_id; artist_id.setNum( CollectionDB::instance()->artistID( artist ) ); QString album_id; album_id.setNum( CollectionDB::instance()->albumID( album ) ); QStringList values = CollectionDB::instance()->albumTracks( artist_id, album_id ); QString startPath = ":homedir"; if ( !values.isEmpty() ) { KURL url; url.setPath( values.first() ); startPath = url.directory(); } KURL file = KFileDialog::getImageOpenURL( startPath, parent, i18n("Select Cover Image File") ); if ( !file.isEmpty() ) CollectionDB::instance()->setAlbumImage( artist, album, file ); break; } case MANAGER: CoverManager::showOnce( album ); break; } }
/** * Deal with right click's */ void KBinaryClock::openContextMenu() { bool bImmutable = config()->isImmutable(); KPopupMenu *menu = new KPopupMenu(); menu->insertTitle( SmallIcon( "clock" ), i18n( "KBinaryClock" ) ); KLocale *loc = KGlobal::locale(); QDateTime dt = QDateTime::currentDateTime(); KPopupMenu *copyMenu = new KPopupMenu( menu ); copyMenu->insertItem(loc->formatDateTime(dt), 201); copyMenu->insertItem(loc->formatDate(dt.date()), 202); copyMenu->insertItem(loc->formatDate(dt.date(), true), 203); copyMenu->insertItem(loc->formatTime(dt.time()), 204); copyMenu->insertItem(loc->formatTime(dt.time(), true), 205); copyMenu->insertItem(dt.date().toString(), 206); copyMenu->insertItem(dt.time().toString(), 207); copyMenu->insertItem(dt.toString(), 208); connect( copyMenu, SIGNAL( activated(int) ), this, SLOT( slotCopyMenuActivated(int) ) ); if (!bImmutable) { if (kapp->authorize("user/root")) { menu->insertItem(SmallIcon("date"), i18n("&Adjust Date && Time..."), 103, 4); } menu->insertItem(SmallIcon("kcontrol"), i18n("Date && Time &Format..."), 104, 5); } menu->insertItem(SmallIcon("editcopy"), i18n("C&opy to Clipboard"), copyMenu, 105, 6); if (!bImmutable) { menu->insertSeparator(7); menu->insertItem(SmallIcon("configure"), i18n("&Configure KBinaryClock..."), 102, 8); } int result = menu->exec( QCursor::pos() ); KProcess proc; switch (result) { case 102: preferences(); break; case 103: proc << locate("exe", "kdesu"); proc << "--nonewdcop"; proc << QString("%1 clock --lang %2") .arg(locate("exe", "kcmshell")) .arg(KGlobal::locale()->language()); proc.start(KProcess::DontCare); break; case 104: proc << locate("exe", "kcmshell"); proc << "language"; proc.start(KProcess::DontCare); break; case 110: preferences(); break; } /* switch() */ delete menu; }
void QueueLabel::mousePressEvent( QMouseEvent* mouseEvent ) { hideToolTip(); if( m_timer.isActive() ) // if the user clicks again when (right after) the menu is open, { // (s)he probably wants to close it m_timer.stop(); return; } Playlist *pl = Playlist::instance(); PLItemList &queue = pl->m_nextTracks; if( queue.isEmpty() ) return; int length = 0; for( QPtrListIterator<PlaylistItem> it( queue ); *it; ++it ) { const int s = (*it)->length(); if( s > 0 ) length += s; } QPtrList<KPopupMenu> menus; menus.setAutoDelete( true ); KPopupMenu *menu = new KPopupMenu; menus.append( menu ); const uint count = queue.count(); if( length ) menu->insertTitle( i18n( "1 Queued Track (%1)", "%n Queued Tracks (%1)", count ) .arg( MetaBundle::prettyLength( length, true ) ) ); else menu->insertTitle( i18n( "1 Queued Track", "%n Queued Tracks", count ) ); Pana::actionCollection()->action( "queue_manager" )->plug( menu ); menu->insertItem( SmallIconSet( Pana::icon( "rewind" ) ), count > 1 ? i18n( "&Dequeue All Tracks" ) : i18n( "&Dequeue Track" ), 0 ); menu->insertSeparator(); uint i = 1; QPtrListIterator<PlaylistItem> it( queue ); it.toFirst(); while( i <= count ) { for( uint n = kMin( i + MAX_TO_SHOW - 1, count ); i <= n; ++i, ++it ) menu->insertItem( KStringHandler::rsqueeze( i18n( "%1. %2" ).arg( i ).arg( veryNiceTitle( *it ) ), 50 ), i ); if( i < count ) { menus.append( new KPopupMenu ); menu->insertSeparator(); menu->insertItem( i18n( "1 More Track", "%n More Tracks", count - i + 1 ), menus.getLast() ); menu = menus.getLast(); } } menu = menus.getFirst(); int mx, my; const int mw = menu->sizeHint().width(), mh = menu->sizeHint().height(), sy = mapFrom( Pana::StatusBar::instance(), QPoint( 0, 0 ) ).y(), sheight = Pana::StatusBar::instance()->height(); const QRect dr = QApplication::desktop()->availableGeometry( this ); if( mapYToGlobal( sy ) - mh > dr.y() ) my = mapYToGlobal( sy ) - mh; else if( mapYToGlobal( sy + sheight ) + mh < dr.y() + dr.height() ) my = mapYToGlobal( sy + sheight ); else my = mapToGlobal( mouseEvent->pos() ).y(); mx = mapXToGlobal( 0 ) - ( mw - width() ) / 2; int id = menu->exec( QPoint( mx, my ) ); if( id < 0 ) m_timer.start( 50, true ); else if( id == 0 ) //dequeue { const PLItemList dequeued = queue; while( !queue.isEmpty() ) pl->queue( queue.getLast(), true ); emit queueChanged( PLItemList(), dequeued ); } else { PlaylistItem *selected = queue.at( id - 1 ); if( selected ) pl->ensureItemCentered( selected ); } }