CreatorController::CreatorController( ModelCodecManager* modelCodecManager, AbstractDocumentStrategy* documentStrategy, KXMLGUIClient* guiClient ) : AbstractXmlGuiController(), mModelCodecManager( modelCodecManager ), mDocumentStrategy( documentStrategy ) { KActionCollection* actionCollection = guiClient->actionCollection(); KActionMenu* newMenuAction = actionCollection->add<KActionMenu>( QLatin1String("file_new"), this, SLOT(onNewActionTriggered()) ); newMenuAction->setText( i18nc("@title:menu create new byte arrays from different sources", "New" ) ); newMenuAction->setIcon( KIcon( QLatin1String("document-new") ) ); newMenuAction->setShortcut( KStandardShortcut::openNew() ); QAction* newEmptyDocumentAction = new QAction( KIcon( QLatin1String("document-new") ), i18nc("@title:menu create a new empty document", "Empty" ), this ); // newEmptyDocumentAction->setToolTip( factory-toolTip() ); // i18nc( "@info:tooltip", "Create an empty document" ) ); // newEmptyDocumentAction->setHelpText( factory->helpText() ); // i18nc( "@info:status", "Create an new, empty document" ) ); // newEmptyDocumentAction->setWhatsThis( factory->whatsThis() ); // i18nc( "@info:whatsthis", "." ) ); connect( newEmptyDocumentAction, SIGNAL(triggered(bool)), SLOT(onNewActionTriggered()) ); QAction* newFromClipboardDocumentAction = new QAction( KIcon( QLatin1String("edit-paste") ), i18nc("@title:menu create a new document from data in the clipboard", "From Clipboard" ), this ); connect( newFromClipboardDocumentAction, SIGNAL(triggered(bool)), SLOT(onNewFromClipboardActionTriggered()) ); newMenuAction->addAction( newEmptyDocumentAction ); newMenuAction->addSeparator(); newMenuAction->addAction( newFromClipboardDocumentAction ); // generators const QList<AbstractModelDataGenerator*> generatorList = mModelCodecManager->generatorList(); const bool hasGenerators = ( generatorList.size() > 0 ); if( hasGenerators ) { newMenuAction->addSeparator(); // TODO: ask factory which mimetypes it can read // AbstractDocumentFactory->canCreateFromData( QMimeData() ) needs already data foreach( AbstractModelDataGenerator* generator, generatorList ) { const QString title = generator->typeName(); const QString iconName = QString::fromLatin1( "document-new" );//generator->iconName(); QAction* action = new QAction( KIcon(iconName), title, this ); action->setData( QVariant::fromValue(generator) ); connect( action, SIGNAL(triggered(bool)), SLOT(onNewFromGeneratorActionTriggered()) ); newMenuAction->addAction( action ); } } }
void JuK::setupActions() { KActionCollection *collection = ActionCollection::actions(); // Setup KDE standard actions that JuK uses. KStandardAction::quit(this, SLOT(slotQuit()), collection); KStandardAction::undo(this, SLOT(slotUndo()), collection); KStandardAction::cut(collection); KStandardAction::copy(collection); KStandardAction::paste(collection); KAction *clear = KStandardAction::clear(collection); KStandardAction::selectAll(collection); KStandardAction::keyBindings(this, SLOT(slotEditKeys()), collection); // Setup the menu which handles the random play options. KActionMenu *actionMenu = collection->add<KActionMenu>("actionMenu"); actionMenu->setText(i18n("&Random Play")); actionMenu->setIcon(KIcon( QLatin1String( "media-playlist-shuffle" ))); actionMenu->setDelayed(false); QActionGroup* randomPlayGroup = new QActionGroup(this); QAction *act = collection->add<KToggleAction>("disableRandomPlay"); act->setText(i18n("&Disable Random Play")); act->setIcon(KIcon( QLatin1String( "go-down" ))); act->setActionGroup(randomPlayGroup); actionMenu->addAction(act); m_randomPlayAction = collection->add<KToggleAction>("randomPlay"); m_randomPlayAction->setText(i18n("Use &Random Play")); m_randomPlayAction->setIcon(KIcon( QLatin1String( "media-playlist-shuffle" ))); m_randomPlayAction->setActionGroup(randomPlayGroup); actionMenu->addAction(m_randomPlayAction); act = collection->add<KToggleAction>("albumRandomPlay"); act->setText(i18n("Use &Album Random Play")); act->setIcon(KIcon( QLatin1String( "media-playlist-shuffle" ))); act->setActionGroup(randomPlayGroup); connect(act, SIGNAL(triggered(bool)), SLOT(slotCheckAlbumNextAction(bool))); actionMenu->addAction(act); act = collection->addAction("removeFromPlaylist", clear, SLOT(clear())); act->setText(i18n("Remove From Playlist")); act->setIcon(KIcon( QLatin1String( "list-remove" ))); act = collection->add<KToggleAction>("crossfadeTracks"); act->setText(i18n("Crossfade Between Tracks")); connect(act, SIGNAL(triggered(bool)), m_player, SLOT(setCrossfadeEnabled(bool))); act = collection->addAction("play", m_player, SLOT(play())); act->setText(i18n("&Play")); act->setIcon(KIcon( QLatin1String( "media-playback-start" ))); act = collection->addAction("pause", m_player, SLOT(pause())); act->setText(i18n("P&ause")); act->setIcon(KIcon( QLatin1String( "media-playback-pause" ))); act = collection->addAction("stop", m_player, SLOT(stop())); act->setText(i18n("&Stop")); act->setIcon(KIcon( QLatin1String( "media-playback-stop" ))); act = new KToolBarPopupAction(KIcon( QLatin1String( "media-skip-backward") ), i18nc("previous track", "Previous" ), collection); collection->addAction("back", act); connect(act, SIGNAL(triggered(bool)), m_player, SLOT(back())); act = collection->addAction("forward", m_player, SLOT(forward())); act->setText(i18nc("next track", "&Next")); act->setIcon(KIcon( QLatin1String( "media-skip-forward" ))); act = collection->addAction("loopPlaylist"); act->setText(i18n("&Loop Playlist")); act->setCheckable(true); act = collection->add<KToggleAction>("resizeColumnsManually"); act->setText(i18n("&Resize Playlist Columns Manually")); // the following are not visible by default act = collection->addAction("mute", m_player, SLOT(mute())); act->setText(i18nc("silence playback", "Mute")); act->setIcon(KIcon( QLatin1String( "audio-volume-muted" ))); act = collection->addAction("volumeUp", m_player, SLOT(volumeUp())); act->setText(i18n("Volume Up")); act->setIcon(KIcon( QLatin1String( "audio-volume-high" ))); act = collection->addAction("volumeDown", m_player, SLOT(volumeDown())); act->setText(i18n("Volume Down")); act->setIcon(KIcon( QLatin1String( "audio-volume-low" ))); act = collection->addAction("playPause", m_player, SLOT(playPause())); act->setText(i18n("Play / Pause")); act->setIcon(KIcon( QLatin1String( "media-playback-start" ))); act = collection->addAction("seekForward", m_player, SLOT(seekForward())); act->setText(i18n("Seek Forward")); act->setIcon(KIcon( QLatin1String( "media-seek-forward" ))); act = collection->addAction("seekBack", m_player, SLOT(seekBack())); act->setText(i18n("Seek Back")); act->setIcon(KIcon( QLatin1String( "media-seek-backward" ))); act = collection->addAction("showHide", this, SLOT(slotShowHide())); act->setText(i18n("Show / Hide")); ////////////////////////////////////////////////// // settings menu ////////////////////////////////////////////////// m_toggleSplashAction = collection->add<KToggleAction>("showSplashScreen"); m_toggleSplashAction->setText(i18n("Show Splash Screen on Startup")); m_toggleSystemTrayAction = collection->add<KToggleAction>("toggleSystemTray"); m_toggleSystemTrayAction->setText(i18n("&Dock in System Tray")); connect(m_toggleSystemTrayAction, SIGNAL(triggered(bool)), SLOT(slotToggleSystemTray(bool))); m_toggleDockOnCloseAction = collection->add<KToggleAction>("dockOnClose"); m_toggleDockOnCloseAction->setText(i18n("&Stay in System Tray on Close")); m_togglePopupsAction = collection->add<KToggleAction>("togglePopups"); m_togglePopupsAction->setText(i18n("Popup &Track Announcement")); act = collection->add<KToggleAction>("saveUpcomingTracks"); act->setText(i18n("Save &Play Queue on Exit")); act = collection->addAction("tagGuesserConfig", this, SLOT(slotConfigureTagGuesser())); act->setText(i18n("&Tag Guesser...")); act = collection->addAction("fileRenamerConfig", this, SLOT(slotConfigureFileRenamer())); act->setText(i18n("&File Renamer...")); act = collection->addAction("scrobblerConfig", this, SLOT(slotConfigureScrobbling())); act->setText(i18n("&Configure scrobbling...")); ////////////////////////////////////////////////// // just in the toolbar ////////////////////////////////////////////////// collection->addAction("trackPositionAction", new TrackPositionAction(i18n("Track Position"), this)); collection->addAction("volumeAction", new VolumeAction(i18n("Volume"), this)); ActionCollection::actions()->addAssociatedWidget(this); foreach (QAction* action, ActionCollection::actions()->actions()) action->setShortcutContext(Qt::WidgetWithChildrenShortcut); }
void ActionManagerImpl::initMainWidget(MainWidget* mainWidget) { if (d->mainWidget) return; d->mainWidget = mainWidget; KActionCollection* coll = actionCollection(); // Feed/Feed Group popup menu KAction* action = coll->addAction("feed_homepage"); action->setText(i18n("&Open Homepage")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotOpenHomepage())); action->setShortcuts(KShortcut( "Ctrl+H" )); action = coll->addAction("reload_all_tabs"); action->setIcon(KIcon("view-refresh")); action->setText(i18n("Reload All Tabs")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotReloadAllTabs())); action->setShortcuts(KShortcut( "Shift+F5" )); action = coll->addAction("feed_add"); action->setIcon(KIcon("feed-subscribe")); action->setText(i18n("&Add Feed...")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotFeedAdd())); action->setShortcuts(KShortcut( "Insert" )); action = coll->addAction("feed_add_group"); action->setIcon(KIcon("folder-new")); action->setText(i18n("Ne&w Folder...")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotFeedAddGroup())); action->setShortcuts(KShortcut( "Shift+Insert" )); action = coll->addAction("feed_remove"); action->setIcon(KIcon("edit-delete")); action->setText(i18n("&Delete Feed")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotFeedRemove())); action->setShortcuts(KShortcut( "Alt+Delete" )); action = coll->addAction("feed_modify"); action->setIcon(KIcon("document-properties")); action->setText(i18n("&Edit Feed...")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotFeedModify())); action->setShortcuts(KShortcut( "F2" )); // toolbar / View action = coll->addAction("normal_view"); action->setIcon(KIcon("view-split-top-bottom")); action->setText(i18n("&Normal View")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotNormalView())); action->setShortcuts(KShortcut( "Ctrl+Shift+1" )); action = coll->addAction("widescreen_view"); action->setIcon(KIcon("view-split-left-right")); action->setText(i18n("&Widescreen View")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotWidescreenView())); action->setShortcuts(KShortcut( "Ctrl+Shift+2" )); action = coll->addAction("combined_view"); action->setIcon(KIcon("view-list-text")); action->setText(i18n("C&ombined View")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotCombinedView())); action->setShortcuts(KShortcut( "Ctrl+Shift+3" )); // toolbar / feed menu action = coll->addAction("feed_fetch"); action->setIcon(KIcon("go-down")); action->setText(i18n("&Fetch Feed")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotFetchCurrentFeed())); action->setShortcuts(KStandardShortcut::shortcut(KStandardShortcut::Reload)); action = coll->addAction("feed_fetch_all"); action->setIcon(KIcon("go-bottom")); action->setText(i18n("Fe&tch All Feeds")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotFetchAllFeeds())); action->setShortcuts(KShortcut( "Ctrl+L" )); KAction *stopAction = coll->addAction("feed_stop"); stopAction->setIcon(KIcon("process-stop")); stopAction->setText(i18n("C&ancel Feed Fetches")); connect(stopAction, SIGNAL(triggered(bool)), Kernel::self()->fetchQueue(), SLOT(slotAbort())); stopAction->setShortcut(QKeySequence(Qt::Key_Escape)); stopAction->setEnabled(false); action = coll->addAction("feed_mark_all_as_read"); action->setIcon(KIcon("mail-mark-read")); action->setText(i18n("&Mark Feed as Read")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotMarkAllRead())); action->setShortcuts(KShortcut( "Ctrl+R" )); action = coll->addAction("feed_mark_all_feeds_as_read"); action->setIcon(KIcon("mail-mark-read")); action->setText(i18n("Ma&rk All Feeds as Read")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotMarkAllFeedsRead())); action->setShortcuts(KShortcut( "Ctrl+Shift+R" )); // Settings menu KToggleAction *sqf = coll->add<KToggleAction>("show_quick_filter"); sqf->setText(i18n("Show Quick Filter")); connect(sqf, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotToggleShowQuickFilter())); sqf->setChecked( Settings::showQuickFilter() ); action = coll->addAction("article_open" ); action->setIcon(KIcon("tab-new")); action->setText(i18n("Open in Tab")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotOpenSelectedArticles())); action->setShortcuts(KShortcut( "Shift+Return" )); action = coll->addAction("article_open_in_background" ); action->setIcon(KIcon("tab-new")); action->setText(i18n("Open in Background Tab")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotOpenSelectedArticlesInBackground())); action->setShortcuts(KShortcut( "Return" )); action = coll->addAction("article_open_external" ); action->setIcon(KIcon("window-new")); action->setText(i18n("Open in External Browser")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotOpenSelectedArticlesInBrowser())); action->setShortcuts(KShortcut( "Ctrl+Shift+Return" )); action = coll->addAction("article_copy_link_address" ); action->setText(i18n("Copy Link Address")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotCopyLinkAddress())); action = coll->addAction("go_prev_unread_article"); action->setIcon(KIcon("go-previous")); action->setText(i18n("Pre&vious Unread Article")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotPrevUnreadArticle())); action->setShortcut(QKeySequence(Qt::Key_Minus)); action = coll->addAction("go_next_unread_article"); action->setIcon(KIcon("go-next")); action->setText(i18n("Ne&xt Unread Article")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotNextUnreadArticle())); action->setShortcuts(KShortcut(Qt::Key_Plus, Qt::Key_Equal)); action = coll->addAction("article_delete"); action->setIcon(KIcon("edit-delete")); action->setText(i18n("&Delete")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotArticleDelete())); action->setShortcuts(KShortcut( "Delete" )); KActionMenu* statusMenu = coll->add<KActionMenu>("article_set_status"); statusMenu->setText(i18n("&Mark As")); statusMenu->setEnabled( false ); d->speakSelectedArticlesAction = coll->addAction("akr_texttospeech"); d->speakSelectedArticlesAction->setIcon(KIcon("media-playback-start")); d->speakSelectedArticlesAction->setText(i18n("&Speak Selected Articles")); connect(d->speakSelectedArticlesAction, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotTextToSpeechRequest())); action = coll->addAction("akr_aborttexttospeech"); action->setText(i18n( "&Stop Speaking" )); action->setIcon(KIcon("media-playback-stop")); connect(action, SIGNAL(triggered(bool)),SpeechClient::self(), SLOT(slotAbortJobs())); //action->setShortcuts(Qt::Key_Escape); action->setEnabled(false); connect(SpeechClient::self(), SIGNAL(signalActivated(bool)), action, SLOT(setEnabled(bool))); action = coll->addAction("article_set_status_read"); action->setText(i18nc("as in: mark as read","&Read")); action->setIcon(KIcon("mail-mark-read")); action->setToolTip(i18n("Mark selected article as read")); action->setShortcuts(KShortcut( "Ctrl+E" )); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotSetSelectedArticleRead())); statusMenu->addAction(action); action = coll->addAction("article_set_status_new"); action->setText(i18nc("as in: mark as new", "&New")); action->setIcon(KIcon("mail-mark-unread-new")); action->setShortcuts(KShortcut( "Ctrl+N" )); action->setToolTip(i18n("Mark selected article as new")); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotSetSelectedArticleNew())); statusMenu->addAction(action); action = coll->addAction("article_set_status_unread"); action->setText(i18nc("as in: mark as unread", "&Unread")); action->setIcon(KIcon("mail-mark-unread")); action->setToolTip(i18n("Mark selected article as unread")); action->setShortcuts(KShortcut( "Ctrl+U" )); connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotSetSelectedArticleUnread())); statusMenu->addAction(action); KToggleAction* importantAction = coll->add<KToggleAction>("article_set_status_important"); importantAction->setText(i18n("&Mark as Important")); importantAction->setIcon(KIcon("mail-mark-important")); KShortcut importantSC( "Ctrl+I" ); importantSC.setAlternate( Qt::Key_I ); importantAction->setShortcuts( importantSC ); importantAction->setCheckedState(KGuiItem(i18n("Remove &Important Mark"))); connect(importantAction, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotArticleToggleKeepFlag(bool))); action = coll->addAction("feedstree_move_up"); action->setText(i18n("Move Node Up")); connect(action, SIGNAL(triggered(bool)), mainWidget, SLOT(slotMoveCurrentNodeUp())); action->setShortcuts(KShortcut( "Shift+Alt+Up" )); action = coll->addAction("feedstree_move_down"); action->setText(i18n("Move Node Down")); connect(action, SIGNAL(triggered(bool)), mainWidget, SLOT(slotMoveCurrentNodeDown())); action->setShortcuts(KShortcut( "Shift+Alt+Down" )); action = coll->addAction(i18n("Move Node Left")); action->setText(i18n("Move Node Left")); connect(action, SIGNAL(triggered(bool)), mainWidget, SLOT(slotMoveCurrentNodeLeft())); action->setShortcuts(KShortcut( "Shift+Alt+Left" )); action = coll->addAction("feedstree_move_right"); action->setText(i18n("Move Node Right")); connect(action, SIGNAL(triggered(bool)), mainWidget, SLOT(slotMoveCurrentNodeRight())); action->setShortcuts(KShortcut( "Shift+Alt+Right" )); action = coll->addAction("file_sendlink"); action->setIcon(KIcon("mail-message-new")); action->setText(i18n("Send &Link Address...")); connect(action, SIGNAL(triggered(bool)), mainWidget, SLOT(slotSendLink())); action = coll->addAction("file_sendfile"); action->setIcon(KIcon("mail-message-new")); action->setText(i18n("Send &File...")); connect(action, SIGNAL(triggered(bool)), mainWidget, SLOT(slotSendFile())); setArticleActionsEnabled( false ); }