KNotesPlugin::KNotesPlugin( KontactInterface::Core *core, const QVariantList & ) : KontactInterface::Plugin( core, core, "knotes" ), mAboutData( 0 ) { setComponentData( KontactPluginFactory::componentData() ); KAction *action = new KAction( KIcon( "knotes" ), i18nc( "@action:inmenu", "New Popup Note..." ), this ); actionCollection()->addAction( "new_note", action ); connect( action, SIGNAL(triggered(bool)), SLOT(slotNewNote()) ); action->setShortcut( QKeySequence( Qt::CTRL + Qt::SHIFT + Qt::Key_N ) ); action->setHelpText( i18nc( "@info:status", "Create new popup note" ) ); action->setWhatsThis( i18nc( "@info:whatsthis", "You will be presented with a dialog where you can create a new popup note." ) ); insertNewAction( action ); KAction *syncAction = new KAction( KIcon( "view-refresh" ), i18nc( "@action:inmenu", "Sync Popup Notes" ), this ); actionCollection()->addAction( "knotes_sync", syncAction ); connect( syncAction, SIGNAL(triggered(bool)), SLOT(slotSyncNotes()) ); syncAction->setHelpText( i18nc( "@info:status", "Synchronize groupware notes" ) ); syncAction->setWhatsThis( i18nc( "@info:whatsthis", "Choose this option to synchronize your groupware notes." ) ); insertSyncAction( syncAction ); }
KJotsPlugin::KJotsPlugin( KontactInterface::Core *core, const QVariantList & ) : KontactInterface::Plugin( core, core, "kjots" ), m_interface( 0 ) { setComponentData( KontactPluginFactory::componentData() ); KAction *action = new KAction( KIcon( "document-new" ), i18nc( "@action:inmenu", "New KJots Page" ), this ); actionCollection()->addAction( "new_kjots_page", action ); action->setShortcut( QKeySequence( Qt::CTRL + Qt::SHIFT + Qt::Key_P ) ); action->setHelpText( i18nc( "@info:status", "Create a new jots page" ) ); action->setWhatsThis( i18nc( "@info:whatsthis", "You will be presented with a dialog where you can create a new jots page." ) ); connect( action, SIGNAL(triggered(bool)), SLOT( newPage()) ); insertNewAction( action ); action = new KAction( KIcon( "address-book-new" ), i18nc( "@action:inmenu", "New KJots Book" ), this ); actionCollection()->addAction( "new_kjots_book", action ); action->setShortcut( QKeySequence( Qt::CTRL + Qt::SHIFT + Qt::Key_B ) ); action->setHelpText( i18nc( "@info:status", "Create a new jots book" ) ); action->setWhatsThis( i18nc( "@info:whatsthis", "You will be presented with a dialog where you can create a new jots book." ) ); connect( action, SIGNAL(triggered(bool)), SLOT( newBook()) ); insertNewAction( action ); mUniqueAppWatcher = new KontactInterface::UniqueAppWatcher( new KontactInterface::UniqueAppHandlerFactory<KJotsUniqueAppHandler>(), this ); }
TodoPlugin::TodoPlugin( KontactInterface::Core *core, const QVariantList & ) : KontactInterface::Plugin( core, core, "korganizer", "todo" ), mIface( 0 ) { setComponentData( KontactPluginFactory::componentData() ); KIconLoader::global()->addAppDir( "korganizer" ); KIconLoader::global()->addAppDir( "kdepim" ); KAction *action = new KAction( KIcon( "task-new" ), i18nc( "@action:inmenu", "New To-do..." ), this ); actionCollection()->addAction( "new_todo", action ); action->setShortcut( QKeySequence( Qt::CTRL + Qt::SHIFT + Qt::Key_T ) ); action->setHelpText( i18nc( "@info:status", "Create a new to-do" ) ); action->setWhatsThis( i18nc( "@info:whatsthis", "You will be presented with a dialog where you can create a new to-do item." ) ); connect( action, SIGNAL(triggered(bool)), SLOT(slotNewTodo()) ); insertNewAction( action ); KAction *syncAction = new KAction( KIcon( "view-refresh" ), i18nc( "@action:inmenu", "Sync To-do List" ), this ); syncAction->setHelpText( i18nc( "@info:status", "Synchronize groupware to-do list" ) ); syncAction->setWhatsThis( i18nc( "@info:whatsthis", "Choose this option to synchronize your groupware to-do list." ) ); connect( syncAction, SIGNAL(triggered(bool)), SLOT(slotSyncTodos()) ); insertSyncAction( syncAction ); mUniqueAppWatcher = new KontactInterface::UniqueAppWatcher( new KontactInterface::UniqueAppHandlerFactory<KOrganizerUniqueAppHandler>(), this ); }
KAction* Player::setupKAction(const char *icon, QString text, QString help_text, const char *name) { KAction* action = new KAction(this); action->setIcon(KIcon(icon)); action->setText(text); action->setHelpText(help_text); actionCollection()->addAction(name, action); return action; }
CoisceimPlugin::CoisceimPlugin( KontactInterface::Core *core, const QVariantList & ) : KontactInterface::Plugin( core, core, "coisceim" ), m_interface( 0 ) { setComponentData( KontactPluginFactory::componentData() ); KAction *action = new KAction( KIcon( "byobu" ), i18nc( "@action:inmenu", "New Trip" ), this ); actionCollection()->addAction( "new_trip", action ); action->setHelpText( i18nc( "@info:status", "Create a new trip" ) ); connect( action, SIGNAL(triggered(bool)), SLOT(createTrip()) ); insertNewAction( action ); mUniqueAppWatcher = new KontactInterface::UniqueAppWatcher( new KontactInterface::UniqueAppHandlerFactory<CoisceimUniqueAppHandler>(), this ); }
void MainWindow::setupActions() { KAction *newDownloadAction = actionCollection()->addAction("new_download"); newDownloadAction->setText(i18n("&New Download...")); newDownloadAction->setIcon(KIcon("document-new")); newDownloadAction->setShortcuts(KShortcut("Ctrl+N")); newDownloadAction->setHelpText(i18n("Opens a dialog to add a transfer to the list")); connect(newDownloadAction, SIGNAL(triggered()), SLOT(slotNewTransfer())); KAction *openAction = actionCollection()->addAction("import_transfers"); openAction->setText(i18n("&Import Transfers...")); openAction->setIcon(KIcon("document-open")); openAction->setShortcuts(KShortcut("Ctrl+I")); openAction->setHelpText(i18n("Imports a list of transfers")); connect(openAction, SIGNAL(triggered()), SLOT(slotImportTransfers())); KAction *exportAction = actionCollection()->addAction("export_transfers"); exportAction->setText(i18n("&Export Transfers List...")); exportAction->setIcon(KIcon("document-export")); exportAction->setShortcuts(KShortcut("Ctrl+E")); exportAction->setHelpText(i18n("Exports the current transfers into a file")); connect(exportAction, SIGNAL(triggered()), SLOT(slotExportTransfers())); KAction *createMetalinkAction = actionCollection()->addAction("create_metalink"); createMetalinkAction->setText(i18n("&Create a Metalink...")); createMetalinkAction->setIcon(KIcon("journal-new")); createMetalinkAction->setHelpText(i18n("Creates or modifies a metalink and saves it on disk")); connect(createMetalinkAction, SIGNAL(triggered()), SLOT(slotCreateMetalink())); KAction *priorityTop = actionCollection()->addAction("priority_top"); priorityTop->setText(i18n("Top Priority")); priorityTop->setIcon(KIcon("arrow-up-double")); priorityTop->setShortcuts(KShortcut("Ctrl+PgUp")); priorityTop->setHelpText(i18n("Download selected transfer first")); connect(priorityTop, SIGNAL(triggered()), this, SLOT(slotPriorityTop())); KAction *priorityBottom = actionCollection()->addAction("priority_bottom"); priorityBottom->setText(i18n("Least Priority")); priorityBottom->setIcon(KIcon("arrow-down-double")); priorityBottom->setShortcuts(KShortcut("Ctrl+PgDown")); priorityBottom->setHelpText(i18n("Download selected transfer last")); connect(priorityBottom, SIGNAL(triggered()), this, SLOT(slotPriorityBottom())); KAction *priorityUp = actionCollection()->addAction("priority_up"); priorityUp->setText(i18n("Increase Priority")); priorityUp->setIcon(KIcon("arrow-up")); priorityUp->setShortcuts(KShortcut("Ctrl+Up")); priorityUp->setHelpText(i18n("Increase priority for selected transfer")); connect(priorityUp, SIGNAL(triggered()), this, SLOT(slotPriorityUp())); KAction *priorityDown = actionCollection()->addAction("priority_down"); priorityDown->setText(i18n("Decrease Priority")); priorityDown->setIcon(KIcon("arrow-down")); priorityDown->setShortcuts(KShortcut("Ctrl+Down")); priorityDown->setHelpText(i18n("Decrease priority for selected transfer")); connect(priorityDown, SIGNAL(triggered()), this, SLOT(slotPriorityDown())); //FIXME: Not needed maybe because the normal delete already deletes groups? KAction *deleteGroupAction = actionCollection()->addAction("delete_groups"); deleteGroupAction->setText(i18n("Delete Group")); deleteGroupAction->setIcon(KIcon("edit-delete")); deleteGroupAction->setHelpText(i18n("Delete selected group")); connect(deleteGroupAction, SIGNAL(triggered()), SLOT(slotDeleteGroup())); KAction *renameGroupAction = actionCollection()->addAction("rename_groups"); renameGroupAction->setText(i18n("Rename Group...")); renameGroupAction->setIcon(KIcon("edit-rename")); connect(renameGroupAction, SIGNAL(triggered()), SLOT(slotRenameGroup())); KAction *setIconGroupAction = actionCollection()->addAction("seticon_groups"); setIconGroupAction->setText(i18n("Set Icon...")); setIconGroupAction->setIcon(KIcon("preferences-desktop-icons")); setIconGroupAction->setHelpText(i18n("Select a custom icon for the selected group")); connect(setIconGroupAction, SIGNAL(triggered()), SLOT(slotSetIconGroup())); m_autoPasteAction = new KToggleAction(KIcon("edit-paste"), i18n("Auto-Paste Mode"), actionCollection()); actionCollection()->addAction("auto_paste", m_autoPasteAction); m_autoPasteAction->setChecked(Settings::autoPaste()); m_autoPasteAction->setWhatsThis(i18n("<b>Auto paste</b> button toggles the auto-paste mode " "on and off.\nWhen set, KGet will periodically scan " "the clipboard for URLs and paste them automatically.")); connect(m_autoPasteAction, SIGNAL(triggered()), SLOT(slotToggleAutoPaste())); m_konquerorIntegration = new KToggleAction(KIcon("konqueror"), i18n("Use KGet as Konqueror Download Manager"), actionCollection()); actionCollection()->addAction("konqueror_integration", m_konquerorIntegration); connect(m_konquerorIntegration, SIGNAL(triggered(bool)), SLOT(slotTrayKonquerorIntegration(bool))); m_konquerorIntegration->setChecked(Settings::konquerorIntegration()); // local - Destroys all sub-windows and exits KStandardAction::quit(this, SLOT(slotQuit()), actionCollection()); // local - Standard configure actions KStandardAction::preferences(this, SLOT(slotPreferences()), actionCollection()); KStandardAction::configureNotifications(this, SLOT(slotConfigureNotifications()), actionCollection()); m_menubarAction = KStandardAction::showMenubar(this, SLOT(slotShowMenubar()), actionCollection()); m_menubarAction->setChecked(!menuBar()->isHidden()); // Transfer related actions actionCollection()->addAction(KStandardAction::SelectAll, "select_all", m_viewsContainer, SLOT(selectAll())); KAction *deleteSelectedAction = actionCollection()->addAction("delete_selected_download"); deleteSelectedAction->setText(i18nc("delete selected transfer item", "Remove Selected")); deleteSelectedAction->setIcon(KIcon("edit-delete")); deleteSelectedAction->setShortcuts(KShortcut("Del")); deleteSelectedAction->setHelpText(i18n("Removes selected transfer and deletes files from disk if it's not finished")); connect(deleteSelectedAction, SIGNAL(triggered()), SLOT(slotDeleteSelected())); KAction *deleteAllFinishedAction = actionCollection()->addAction("delete_all_finished"); deleteAllFinishedAction->setText(i18nc("delete all finished transfers", "Remove All Finished")); deleteAllFinishedAction->setIcon(KIcon("edit-clear-list")); deleteAllFinishedAction->setHelpText(i18n("Removes all finished transfers and leaves all files on disk")); connect(deleteAllFinishedAction, SIGNAL(triggered()), SLOT(slotDeleteFinished())); KAction *deleteSelectedIncludingFilesAction = actionCollection()->addAction("delete_selected_download_including_files"); deleteSelectedIncludingFilesAction->setText(i18nc("delete selected transfer item and files", "Remove Selected and Delete Files")); deleteSelectedIncludingFilesAction->setIcon(KIcon("edit-delete")); deleteSelectedIncludingFilesAction->setHelpText(i18n("Removes selected transfer and deletes files from disk in any case")); connect(deleteSelectedIncludingFilesAction, SIGNAL(triggered()), SLOT(slotDeleteSelectedIncludingFiles())); KAction *redownloadSelectedAction = actionCollection()->addAction("redownload_selected_download"); redownloadSelectedAction->setText(i18nc("redownload selected transfer item", "Redownload Selected")); redownloadSelectedAction->setIcon(KIcon("view-refresh")); connect(redownloadSelectedAction, SIGNAL(triggered()), SLOT(slotRedownloadSelected())); KAction *startAllAction = actionCollection()->addAction("start_all_download"); startAllAction->setText(i18n("Start All")); startAllAction->setIcon(KIcon("media-seek-forward")); startAllAction->setShortcuts(KShortcut("Ctrl+R")); startAllAction->setHelpText(i18n("Starts / resumes all transfers")); connect(startAllAction, SIGNAL(triggered()), SLOT(slotStartAllDownload())); KAction *startSelectedAction = actionCollection()->addAction("start_selected_download"); startSelectedAction->setText(i18n("Start Selected")); startSelectedAction->setIcon(KIcon("media-playback-start")); startSelectedAction->setHelpText(i18n("Starts / resumes selected transfer")); connect(startSelectedAction, SIGNAL(triggered()), SLOT(slotStartSelectedDownload())); KAction *stopAllAction = actionCollection()->addAction("stop_all_download"); stopAllAction->setText(i18n("Pause All")); stopAllAction->setIcon(KIcon("media-playback-pause")); stopAllAction->setShortcuts(KShortcut("Ctrl+P")); stopAllAction->setHelpText(i18n("Pauses all transfers")); connect(stopAllAction, SIGNAL(triggered()), SLOT(slotStopAllDownload())); KAction *stopSelectedAction = actionCollection()->addAction("stop_selected_download"); stopSelectedAction->setText(i18n("Stop Selected")); stopSelectedAction->setIcon(KIcon("media-playback-pause")); stopSelectedAction->setHelpText(i18n("Pauses selected transfer")); connect(stopSelectedAction, SIGNAL(triggered()), SLOT(slotStopSelectedDownload())); KActionMenu *startActionMenu = new KActionMenu(KIcon("media-playback-start"), i18n("Start"), actionCollection()); actionCollection()->addAction("start_menu", startActionMenu); startActionMenu->setDelayed(true); startActionMenu->addAction(startSelectedAction); startActionMenu->addAction(startAllAction); connect(startActionMenu, SIGNAL(triggered()), SLOT(slotStartDownload())); KActionMenu *stopActionMenu = new KActionMenu(KIcon("media-playback-pause"), i18n("Pause"), actionCollection()); actionCollection()->addAction("stop_menu", stopActionMenu); stopActionMenu->setDelayed(true); stopActionMenu->addAction(stopSelectedAction); stopActionMenu->addAction(stopAllAction); connect(stopActionMenu, SIGNAL(triggered()), SLOT(slotStopDownload())); KAction *openDestAction = actionCollection()->addAction("transfer_open_dest"); openDestAction->setText(i18n("Open Destination")); openDestAction->setIcon(KIcon("document-open")); connect(openDestAction, SIGNAL(triggered()), SLOT(slotTransfersOpenDest())); KAction *openFileAction = actionCollection()->addAction("transfer_open_file"); openFileAction->setText(i18n("Open File")); openFileAction->setIcon(KIcon("document-open")); connect(openFileAction, SIGNAL(triggered()), SLOT(slotTransfersOpenFile())); KAction *showDetailsAction = new KToggleAction(KIcon("document-properties"), i18n("Show Details"), actionCollection()); actionCollection()->addAction("transfer_show_details", showDetailsAction); connect(showDetailsAction, SIGNAL(triggered()), SLOT(slotTransfersShowDetails())); KAction *copyUrlAction = actionCollection()->addAction("transfer_copy_source_url"); copyUrlAction->setText(i18n("Copy URL to Clipboard")); copyUrlAction->setIcon(KIcon("edit-copy")); connect(copyUrlAction, SIGNAL(triggered()), SLOT(slotTransfersCopySourceUrl())); KAction *transferHistoryAction = actionCollection()->addAction("transfer_history"); transferHistoryAction->setText(i18n("&Transfer History")); transferHistoryAction->setIcon(KIcon("view-history")); transferHistoryAction->setShortcuts(KShortcut("Ctrl+H")); connect(transferHistoryAction, SIGNAL(triggered()), SLOT(slotTransferHistory())); KAction *transferGroupSettingsAction = actionCollection()->addAction("transfer_group_settings"); transferGroupSettingsAction->setText(i18n("&Group Settings")); transferGroupSettingsAction->setIcon(KIcon("preferences-system")); transferGroupSettingsAction->setShortcuts(KShortcut("Ctrl+G")); connect(transferGroupSettingsAction, SIGNAL(triggered()), SLOT(slotTransferGroupSettings())); KAction *transferSettingsAction = actionCollection()->addAction("transfer_settings"); transferSettingsAction->setText(i18n("&Transfer Settings")); transferSettingsAction->setIcon(KIcon("preferences-system")); transferSettingsAction->setShortcuts(KShortcut("Ctrl+T")); connect(transferSettingsAction, SIGNAL(triggered()), SLOT(slotTransferSettings())); KAction *listLinksAction = actionCollection()->addAction("import_links"); listLinksAction->setText(i18n("Import &Links...")); listLinksAction->setIcon(KIcon("view-list-text")); listLinksAction->setShortcuts(KShortcut("Ctrl+L")); connect(listLinksAction, SIGNAL(triggered()), SLOT(slotShowListLinks())); //create the download finished actions which can be displayed in the toolbar KSelectAction *downloadFinishedActions = new KSelectAction(i18n("After downloads finished action"), this);//TODO maybe with name?? actionCollection()->addAction("download_finished_actions", downloadFinishedActions); downloadFinishedActions->setHelpText(i18n("Choose an action that is executed after all downloads have been finished.")); KAction *noAction = downloadFinishedActions->addAction(i18n("No Action")); connect(noAction, SIGNAL(triggered()), SLOT(slotDownloadFinishedActions())); downloadFinishedActions->addAction(noAction); KAction *quitAction = downloadFinishedActions->addAction(i18n("Quit KGet")); quitAction->setData(KGet::Quit); connect(quitAction, SIGNAL(triggered()), SLOT(slotDownloadFinishedActions())); downloadFinishedActions->addAction(quitAction); #ifdef HAVE_KWORKSPACE KAction *shutdownAction = downloadFinishedActions->addAction(i18n("Turn Off Computer")); shutdownAction->setData(KGet::Shutdown); connect(shutdownAction, SIGNAL(triggered()), SLOT(slotDownloadFinishedActions())); downloadFinishedActions->addAction(shutdownAction); KAction *hibernateAction = downloadFinishedActions->addAction(i18n("Hibernate Computer")); hibernateAction->setData(KGet::Hibernate); connect(hibernateAction, SIGNAL(triggered()), SLOT(slotDownloadFinishedActions())); downloadFinishedActions->addAction(hibernateAction); KAction *suspendAction = downloadFinishedActions->addAction(i18n("Suspend Computer")); suspendAction->setData(KGet::Suspend); connect(suspendAction, SIGNAL(triggered()), SLOT(slotDownloadFinishedActions())); downloadFinishedActions->addAction(suspendAction); #endif if (Settings::afterFinishActionEnabled()) { downloadFinishedActions->setCurrentItem(Settings::afterFinishAction() + 1); } else { downloadFinishedActions->setCurrentItem(0); } }
void KonqPopupMenuPrivate::init(KonqPopupMenu::Flags kpf, KParts::BrowserExtension::PopupFlags flags) { m_itemFlags = flags; q->setFont(KGlobalSettings::menuFont()); Q_ASSERT(m_popupItemProperties.items().count() >= 1); bool bTrashIncluded = false; const KFileItemList lstItems = m_popupItemProperties.items(); KFileItemList::const_iterator it = lstItems.constBegin(); const KFileItemList::const_iterator kend = lstItems.constEnd(); for ( ; it != kend; ++it ) { const KUrl url = (*it).url(); if ( !bTrashIncluded && ( ( url.protocol() == "trash" && url.path().length() <= 1 ) ) ) { bTrashIncluded = true; } } const bool isDirectory = m_popupItemProperties.isDirectory(); const bool sReading = m_popupItemProperties.supportsReading(); bool sDeleting = (m_itemFlags & KParts::BrowserExtension::NoDeletion) == 0 && m_popupItemProperties.supportsDeleting(); const bool sWriting = m_popupItemProperties.supportsWriting(); const bool sMoving = sDeleting && m_popupItemProperties.supportsMoving(); const bool isLocal = m_popupItemProperties.isLocal(); KUrl url = m_sViewURL; url.cleanPath(); bool isTrashLink = false; bool isCurrentTrash = false; bool currentDir = false; bool isSymLink = false; bool isSymLinkInSameDir = false; // true for "ln -s foo bar", false for links to foo/sub or /foo //check if url is current directory if ( lstItems.count() == 1 ) { KFileItem firstPopupItem( lstItems.first() ); if (firstPopupItem.isLink()) { isSymLink = true; isSymLinkInSameDir = !firstPopupItem.linkDest().contains('/'); } KUrl firstPopupURL( firstPopupItem.url() ); firstPopupURL.cleanPath(); //kDebug(1203) << "View path is " << url.url(); //kDebug(1203) << "First popup path is " << firstPopupURL.url(); currentDir = firstPopupURL.equals( url, KUrl::CompareWithoutTrailingSlash ); if ( firstPopupItem.isDesktopFile() ) { KDesktopFile desktopFile( firstPopupItem.localPath() ); const KConfigGroup cfg = desktopFile.desktopGroup(); isTrashLink = ( cfg.readEntry("Type") == "Link" && cfg.readEntry("URL") == "trash:/" ); } if (isTrashLink) { sDeleting = false; } // isCurrentTrash: popup on trash:/ itself, or on the trash.desktop link isCurrentTrash = (firstPopupURL.protocol() == "trash" && firstPopupURL.path().length() <= 1) || isTrashLink; } const bool isIntoTrash = (url.protocol() == "trash") && !isCurrentTrash; // trashed file, not trash:/ itself const bool bIsLink = (m_itemFlags & KParts::BrowserExtension::IsLink); //kDebug() << "isLocal=" << isLocal << " url=" << url << " isCurrentTrash=" << isCurrentTrash << " isIntoTrash=" << isIntoTrash << " bTrashIncluded=" << bTrashIncluded; ////////////////////////////////////////////////////////////////////////// addGroup( "topactions" ); // used e.g. for ShowMenuBar. includes a separator at the end KAction * act; KAction *actNewWindow = 0; #if 0 // TODO in the desktop code itself. if (( flags & KParts::BrowserExtension::ShowProperties ) && isOnDesktop && !KAuthorized::authorizeKAction("editable_desktop_icons")) { flags &= ~KParts::BrowserExtension::ShowProperties; // remove flag } #endif // Either 'newview' is in the actions we're given (probably in the tabhandling group) // or we need to insert it ourselves (e.g. for the desktop). // In the first case, actNewWindow must remain 0. if ( ((kpf & KonqPopupMenu::ShowNewWindow) != 0) && sReading ) { const QString openStr = i18n("&Open"); actNewWindow = new KAction(m_parentWidget /*for status tips*/); m_ownActions.append(actNewWindow); actNewWindow->setIcon( KIcon("window-new") ); actNewWindow->setText( openStr ); QObject::connect(actNewWindow, SIGNAL(triggered()), q, SLOT(slotPopupNewView())); } if ( isDirectory && sWriting && !isCurrentTrash ) // A dir, and we can create things into it { const bool mkdirRequested = m_itemFlags & KParts::BrowserExtension::ShowCreateDirectory; if ( (currentDir || mkdirRequested) && m_pMenuNew ) // Current dir -> add the "new" menu { // As requested by KNewFileMenu : m_pMenuNew->checkUpToDate(); m_pMenuNew->setPopupFiles(m_popupItemProperties.urlList()); q->addAction( m_pMenuNew ); q->addSeparator(); } else if (mkdirRequested) { KAction *actNewDir = new KAction(m_parentWidget); m_ownActions.append(actNewDir); actNewDir->setIcon( KIcon("folder-new") ); actNewDir->setText( i18n( "Create &Folder..." ) ); QObject::connect(actNewDir, SIGNAL(triggered()), q, SLOT(slotPopupNewDir())); q->addAction( actNewDir ); q->addSeparator(); } } else if ( isIntoTrash ) { // Trashed item, offer restoring act = new KAction(m_parentWidget /*for status tips*/); m_ownActions.append(act); act->setText( i18n( "&Restore" ) ); act->setHelpText(i18n("Restores this file or directory, back to the location where it was deleted from initially")); QObject::connect(act, SIGNAL(triggered()), q, SLOT(slotPopupRestoreTrashedItems())); q->addAction(act); } if (m_itemFlags & KParts::BrowserExtension::ShowNavigationItems) { if (m_itemFlags & KParts::BrowserExtension::ShowUp) addNamedAction( "go_up" ); addNamedAction( "go_back" ); addNamedAction( "go_forward" ); if (m_itemFlags & KParts::BrowserExtension::ShowReload) addNamedAction( "reload" ); q->addSeparator(); } if (!currentDir && isSymLink && !isSymLinkInSameDir) { // #65151: offer to open the target's parent dir act = new KAction(m_parentWidget); m_ownActions.append(act); act->setText(isDirectory ? i18n("Show Original Directory") : i18n("Show Original File")); act->setHelpText(i18n("Opens a new file manager window showing the target of this link, in its parent directory.")); QObject::connect(act, SIGNAL(triggered()), q, SLOT(slotShowOriginalFile())); q->addAction(act); } // "open in new window" is either provided by us, or by the tabhandling group if (actNewWindow) { q->addAction(actNewWindow); q->addSeparator(); } addGroup( "tabhandling" ); // includes a separator at the end if (m_itemFlags & KParts::BrowserExtension::ShowUrlOperations) { if ( !currentDir && sReading ) { if ( sDeleting ) { addNamedAction( "cut" ); } addNamedAction( "copy" ); } if ( isDirectory && sWriting ) { if ( currentDir ) addNamedAction( "paste" ); else addNamedAction( "pasteto" ); } } if ( isCurrentTrash ) { act = new KAction(m_parentWidget); m_ownActions.append(act); act->setIcon( KIcon("trash-empty") ); act->setText( i18n( "&Empty Trash Bin" ) ); KConfig trashConfig( "trashrc", KConfig::SimpleConfig); act->setEnabled( !trashConfig.group("Status").readEntry( "Empty", true ) ); QObject::connect(act, SIGNAL(triggered()), q, SLOT(slotPopupEmptyTrashBin())); q->addAction(act); } if ( isCurrentTrash ) { act = new KAction(m_parentWidget); m_ownActions.append(act); act->setIcon( KIcon("trash-empty") ); act->setText( i18n( "&Configure Trash Bin" ) ); QObject::connect(act, SIGNAL(triggered()), q, SLOT(slotConfigTrashBin())); q->addAction(act); } // This is used by KHTML, see khtml_popupmenu.rc (copy, selectAll, searchProvider etc.) // and by DolphinPart (rename, trash, delete) addGroup( "editactions" ); if (m_itemFlags & KParts::BrowserExtension::ShowTextSelectionItems) { // OK, we have to stop here. // Anything else that is provided by the part addGroup( "partactions" ); return; } if ( !isCurrentTrash && !isIntoTrash && (m_itemFlags & KParts::BrowserExtension::ShowBookmark)) { QString caption; if (currentDir) { const bool httpPage = m_sViewURL.protocol().startsWith("http", Qt::CaseInsensitive); if (httpPage) caption = i18n("&Bookmark This Page"); else caption = i18n("&Bookmark This Location"); } else if (isDirectory) caption = i18n("&Bookmark This Folder"); else if (bIsLink) caption = i18n("&Bookmark This Link"); else caption = i18n("&Bookmark This File"); act = new KAction(m_parentWidget); m_ownActions.append(act); act->setObjectName( QLatin1String("bookmark_add" )); // for unittest act->setIcon( KIcon("bookmark-new") ); act->setText( caption ); QObject::connect(act, SIGNAL(triggered()), q, SLOT(slotPopupAddToBookmark())); if (lstItems.count() > 1) act->setEnabled(false); if (KAuthorized::authorizeKAction("bookmarks")) q->addAction( act ); if (bIsLink) addGroup( "linkactions" ); // see khtml } // "Open With" actions m_menuActions.setItemListProperties(m_popupItemProperties); if ( sReading ) { m_menuActions.addOpenWithActionsTo(q, "DesktopEntryName != 'kfmclient' and DesktopEntryName != 'kfmclient_dir' and DesktopEntryName != 'kfmclient_html'"); QList<QAction *> previewActions = m_actionGroups.value("preview"); if (!previewActions.isEmpty()) { if (previewActions.count() == 1) { q->addAction(previewActions.first()); } else { QMenu* subMenu = new QMenu(i18n("Preview In"), q); subMenu->menuAction()->setObjectName( QLatin1String("preview_submenu" )); // for the unittest q->addMenu(subMenu); subMenu->addActions(previewActions); } } } // Second block, builtin + user m_menuActions.addServiceActionsTo(q); q->addSeparator(); // Use the Dolphin setting for showing the "Copy To" and "Move To" actions KSharedConfig::Ptr dolphin = KSharedConfig::openConfig("dolphinrc"); // CopyTo/MoveTo menus if (m_itemFlags & KParts::BrowserExtension::ShowUrlOperations && KConfigGroup(dolphin, "General").readEntry("ShowCopyMoveMenu", false)) { m_copyToMenu.setItems(lstItems); m_copyToMenu.setReadOnly(sMoving == false); m_copyToMenu.addActionsTo(q); q->addSeparator(); } if (!isCurrentTrash && !isIntoTrash && sReading && (kpf & KonqPopupMenu::NoPlugins) == 0) { addPlugins(); // now it's time to add plugins } if ( (m_itemFlags & KParts::BrowserExtension::ShowProperties) && KPropertiesDialog::canDisplay( lstItems ) ) { act = new KAction(m_parentWidget); m_ownActions.append(act); act->setObjectName( QLatin1String("properties" )); // for unittest act->setText( i18n( "&Properties" ) ); QObject::connect(act, SIGNAL(triggered()), q, SLOT(slotPopupProperties())); q->addAction(act); } while ( !q->actions().isEmpty() && q->actions().last()->isSeparator() ) delete q->actions().last(); if ( isDirectory && isLocal ) { if ( KFileShare::authorization() == KFileShare::Authorized ) { q->addSeparator(); act = new KAction(m_parentWidget); m_ownActions.append(act); act->setText( i18n("Share") ); QObject::connect(act, SIGNAL(triggered()), q, SLOT(slotOpenShareFileDialog())); q->addAction(act); } } // Anything else that is provided by the part addGroup( "partactions" ); }