• Skip to content
  • Skip to link menu
KDE 4.2 API Reference
  • KDE API Reference
  • kdepim
  • Sitemap
  • Contact Us
 

akregator

actionmanagerimpl.cpp

Go to the documentation of this file.
00001 /*
00002     This file is part of Akregator.
00003 
00004     Copyright (C) 2005 Frank Osterfeld <osterfeld@kde.org>
00005 
00006     This program is free software; you can redistribute it and/or modify
00007     it under the terms of the GNU General Public License as published by
00008     the Free Software Foundation; either version 2 of the License, or
00009     (at your option) any later version.
00010 
00011     This program is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00014     GNU General Public License for more details.
00015 
00016     You should have received a copy of the GNU General Public License
00017     along with this program; if not, write to the Free Software
00018     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00019 
00020     As a special exception, permission is given to link this program
00021     with any edition of Qt, and distribute the resulting executable,
00022     without including the source code for Qt in the source distribution.
00023 */
00024 
00025 #include "actionmanagerimpl.h"
00026 #include "akregatorconfig.h"
00027 #include "akregator_part.h"
00028 #include "articlelistview.h"
00029 #include "articleviewer.h"
00030 #include "feed.h"
00031 #include "fetchqueue.h"
00032 #include "folder.h"
00033 #include "framemanager.h"
00034 #include "kernel.h"
00035 #include "mainwidget.h"
00036 //#include "speechclient.h"
00037 #include "subscriptionlistview.h"
00038 #include "tabwidget.h"
00039 #include "trayicon.h"
00040 #include "treenode.h"
00041 #include "treenodevisitor.h"
00042 
00043 #include <kactionmenu.h>
00044 #include <ktoolbarpopupaction.h>
00045 #include <kaction.h>
00046 #include <KToggleAction>
00047 #include <kactioncollection.h>
00048 #include <kdebug.h>
00049 #include <klocale.h>
00050 #include <kmenu.h>
00051 #include <kshortcut.h>
00052 #include <kstandardshortcut.h>
00053 #include <kstandardaction.h>
00054 #include <kxmlguifactory.h>
00055 #include <kicon.h>
00056 
00057 #include <QHash>
00058 #include <QWidget>
00059 
00060 namespace Akregator
00061 {
00062 
00063 class ActionManagerImpl::NodeSelectVisitor : public TreeNodeVisitor
00064 {
00065     public:
00066     NodeSelectVisitor(ActionManagerImpl* manager) : m_manager(manager) {}
00067 
00068     virtual bool visitFeed(Feed* node)
00069     {
00070         QAction* remove = m_manager->action("feed_remove");
00071         if (remove)
00072             remove->setEnabled(true);
00073         QAction* hp = m_manager->action("feed_homepage");
00074         if (hp)
00075             hp->setEnabled(!node->htmlUrl().isEmpty());
00076         m_manager->action("feed_fetch")->setText(i18n("&Fetch Feed"));
00077         m_manager->action("feed_remove")->setText(i18n("&Delete Feed"));
00078         m_manager->action("feed_modify")->setText(i18n("&Edit Feed..."));
00079         m_manager->action("feed_mark_all_as_read")->setText(i18n("&Mark Feed as Read"));
00080 
00081         return true;
00082     }
00083 
00084     virtual bool visitFolder(Folder* node)
00085     {
00086         QAction* remove = m_manager->action("feed_remove");
00087         if (remove)
00088             remove->setEnabled(node->parent()); // root nodes must not be deleted
00089         QAction* hp = m_manager->action("feed_homepage");
00090         if (hp)
00091             hp->setEnabled(false);
00092 
00093         m_manager->action("feed_fetch")->setText(i18n("&Fetch Feeds"));
00094         m_manager->action("feed_remove")->setText(i18n("&Delete Folder"));
00095         m_manager->action("feed_modify")->setText(i18n("&Rename Folder"));
00096         m_manager->action("feed_mark_all_as_read")->setText(i18n("&Mark Feeds as Read"));
00097 
00098         return true;
00099     }
00100 
00101     private:
00102     ActionManagerImpl* m_manager;
00103 };
00104 
00105 class ActionManagerImpl::ActionManagerImplPrivate
00106 {
00107 public:
00108 
00109     NodeSelectVisitor* nodeSelectVisitor;
00110     ArticleListView* articleList;
00111     SubscriptionListView* subscriptionListView;
00112     MainWidget* mainWidget;
00113     ArticleViewer* articleViewer;
00114     Part* part;
00115     TrayIcon* trayIcon;
00116     KActionMenu* tagMenu;
00117     KActionCollection* actionCollection;
00118     TabWidget* tabWidget;
00119     KAction* speakSelectedArticlesAction;
00120     FrameManager* frameManager;
00121 };
00122 
00123 
00124 void ActionManagerImpl::slotNodeSelected(TreeNode* node)
00125 {
00126     if (node != 0)
00127         d->nodeSelectVisitor->visit(node);
00128 }
00129 
00130 ActionManagerImpl::ActionManagerImpl(Part* part, QObject* parent ) : ActionManager(parent), d(new ActionManagerImplPrivate)
00131 {
00132     d->nodeSelectVisitor = new NodeSelectVisitor(this);
00133     d->part = part;
00134     d->subscriptionListView = 0;
00135     d->articleList = 0;
00136     d->trayIcon = 0;
00137     d->articleViewer = 0;
00138     d->mainWidget = 0;
00139     d->tabWidget = 0;
00140     d->tagMenu = 0;
00141     d->frameManager = 0;
00142     d->speakSelectedArticlesAction = 0;
00143     d->actionCollection = part->actionCollection();
00144     initPart();
00145 }
00146 
00147 ActionManagerImpl::~ActionManagerImpl()
00148 {
00149     delete d->nodeSelectVisitor;
00150     delete d;
00151     d = 0;
00152 }
00153 
00154 void ActionManagerImpl::initTrayIcon(TrayIcon* trayIcon)
00155 {
00156     if (d->trayIcon)
00157         return;
00158     else d->trayIcon = trayIcon;
00159 
00160     QMenu* traypop = trayIcon->contextMenu();
00161 
00162     if (actionCollection()->action("feed_fetch_all"))
00163         traypop->addAction(actionCollection()->action("feed_fetch_all"));
00164     if (actionCollection()->action("options_configure"))
00165         traypop->addAction(actionCollection()->action("options_configure"));
00166 }
00167 
00168 void ActionManagerImpl::initPart()
00169 {
00170     KAction *action = d->actionCollection->addAction("file_import");
00171     action->setText(i18n("&Import Feeds..."));
00172     action->setIcon(KIcon("document-import"));
00173     connect(action, SIGNAL(triggered(bool)), d->part, SLOT(fileImport()));
00174     action = d->actionCollection->addAction("file_export");
00175     action->setText(i18n("&Export Feeds..." ));
00176     action->setIcon(KIcon("document-export"));
00177     connect(action, SIGNAL(triggered(bool)), d->part, SLOT(fileExport()));
00178 
00179     KAction *configure = d->actionCollection->addAction("options_configure");
00180     configure->setText(i18n("&Configure Akregator..."));
00181     configure->setIcon(KIcon("configure"));
00182     connect(configure, SIGNAL(triggered()), d->part, SLOT(showOptions()));
00183 
00184     /*action = d->actionCollection->addAction("akregator_configure_akregator");
00185     action->setIcon(KIcon("configure"));
00186     action->setText(i18n("Configure &Akregator..."));
00187     connect(action, SIGNAL(triggered(bool)), d->part, SLOT(showOptions()));*/
00188 }
00189 
00190 void ActionManagerImpl::initMainWidget(MainWidget* mainWidget)
00191 {
00192     if (d->mainWidget)
00193         return;
00194 
00195     d->mainWidget = mainWidget;
00196 
00197     KActionCollection* coll = actionCollection();
00198 
00199     // Feed/Feed Group popup menu
00200     KAction* action = coll->addAction("feed_homepage");
00201     action->setText(i18n("&Open Homepage"));
00202     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotOpenHomepage()));
00203     action->setShortcuts(KShortcut( "Ctrl+H" ));
00204 
00205     action = coll->addAction("feed_add");
00206     action->setIcon(KIcon("feed-subscribe"));
00207     action->setText(i18n("&Add Feed..."));
00208     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotFeedAdd()));
00209     action->setShortcuts(KShortcut( "Insert" ));
00210 
00211     action = coll->addAction("feed_add_group");
00212     action->setIcon(KIcon("folder-new"));
00213     action->setText(i18n("Ne&w Folder..."));
00214     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotFeedAddGroup()));
00215     action->setShortcuts(KShortcut( "Shift+Insert" ));
00216 
00217     action = coll->addAction("feed_remove");
00218     action->setIcon(KIcon("edit-delete"));
00219     action->setText(i18n("&Delete Feed"));
00220     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotFeedRemove()));
00221     action->setShortcuts(KShortcut( "Alt+Delete" ));
00222 
00223     action = coll->addAction("feed_modify");
00224     action->setIcon(KIcon("document-properties"));
00225     action->setText(i18n("&Edit Feed..."));
00226     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotFeedModify()));
00227     action->setShortcuts(KShortcut( "F2" ));
00228 
00229     KActionMenu* vm = coll->add<KActionMenu>("view_mode");
00230     vm->setText(i18n("&View Mode"));
00231 
00232     QActionGroup* agViewMode = new QActionGroup(this);
00233     KToggleAction *ra = coll->add<KToggleAction>("normal_view");
00234     ra->setIcon(KIcon("view-split-top-bottom"));
00235     ra->setText(i18n("&Normal View"));
00236     connect(ra, SIGNAL(triggered(bool) ), d->mainWidget, SLOT(slotNormalView()));
00237     ra->setShortcuts(KShortcut( "Ctrl+Shift+1" ));
00238     ra->setActionGroup(agViewMode);
00239     vm->addAction(ra);
00240 
00241     ra = coll->add<KToggleAction>("widescreen_view");
00242     ra->setIcon(KIcon("view-split-left-right"));
00243     ra->setText(i18n("&Widescreen View"));
00244     connect(ra, SIGNAL(triggered(bool) ), d->mainWidget, SLOT(slotWidescreenView()));
00245     ra->setShortcuts(KShortcut( "Ctrl+Shift+2" ));
00246     ra->setActionGroup(agViewMode);
00247     vm->addAction(ra);
00248 
00249     ra = coll->add<KToggleAction>("combined_view");
00250     ra->setIcon(KIcon("view-list-text"));
00251     ra->setText(i18n("C&ombined View"));
00252     connect(ra, SIGNAL(triggered(bool) ), d->mainWidget, SLOT(slotCombinedView()));
00253     ra->setShortcuts(KShortcut( "Ctrl+Shift+3" ));
00254     ra->setActionGroup(agViewMode);
00255     vm->addAction(ra);
00256 
00257     // toolbar / feed menu
00258     action = coll->addAction("feed_fetch");
00259     action->setIcon(KIcon("go-down"));
00260     action->setText(i18n("&Fetch Feed"));
00261     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotFetchCurrentFeed()));
00262     action->setShortcuts(KStandardShortcut::shortcut(KStandardShortcut::Reload));
00263 
00264     action = coll->addAction("feed_fetch_all");
00265     action->setIcon(KIcon("go-bottom"));
00266     action->setText(i18n("Fe&tch All Feeds"));
00267     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotFetchAllFeeds()));
00268     action->setShortcuts(KShortcut( "Ctrl+L" ));
00269 
00270     KAction *stopAction = coll->addAction("feed_stop");
00271     stopAction->setIcon(KIcon("process-stop"));
00272     stopAction->setText(i18n("&Abort Fetches"));
00273     connect(stopAction, SIGNAL(triggered(bool)), Kernel::self()->fetchQueue(), SLOT(slotAbort()));
00274     stopAction->setShortcut(QKeySequence(Qt::Key_Escape));
00275     stopAction->setEnabled(false);
00276 
00277     action = coll->addAction("feed_mark_all_as_read");
00278     action->setIcon(KIcon("mail-mark-read"));
00279     action->setText(i18n("&Mark Feed as Read"));
00280     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotMarkAllRead()));
00281     action->setShortcuts(KShortcut( "Ctrl+R" ));
00282 
00283     action = coll->addAction("feed_mark_all_feeds_as_read");
00284     action->setIcon(KIcon("mail-mark-read"));
00285     action->setText(i18n("Ma&rk All Feeds as Read"));
00286     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotMarkAllFeedsRead()));
00287     action->setShortcuts(KShortcut( "Ctrl+Shift+R" ));
00288 
00289     // Settings menu
00290     KToggleAction *sqf = coll->add<KToggleAction>("show_quick_filter");
00291     sqf->setText(i18n("Show Quick Filter"));
00292     connect(sqf, SIGNAL(triggered(bool) ), d->mainWidget, SLOT(slotToggleShowQuickFilter()));
00293     sqf->setChecked( Settings::showQuickFilter() );
00294 
00295     action = coll->addAction("article_open" );
00296     action->setIcon(KIcon("tab-new"));
00297     action->setText(i18n("Open in Tab"));
00298     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotOpenCurrentArticle()));
00299     action->setShortcuts(KShortcut( "Shift+Return" ));
00300 
00301     action = coll->addAction("article_open_external" );
00302     action->setIcon(KIcon("window-new"));
00303     action->setText(i18n("Open in External Browser"));
00304     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotOpenCurrentArticleInBrowser()));
00305     action->setShortcuts(KShortcut( "Ctrl+Shift+Return" ));
00306 
00307     action = coll->addAction("article_copy_link_address" );
00308     action->setText(i18n("Copy Link Address"));
00309     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotCopyLinkAddress()));
00310 
00311     action = coll->addAction("go_prev_unread_article");
00312     action->setText(i18n("Pre&vious Unread Article"));
00313     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotPrevUnreadArticle()));
00314     action->setShortcut(QKeySequence(Qt::Key_Minus));
00315 
00316     action = coll->addAction("go_next_unread_article");
00317     action->setText(i18n("Ne&xt Unread Article"));
00318     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotNextUnreadArticle()));
00319     action->setShortcuts(KShortcut(Qt::Key_Equal, Qt::Key_Plus));
00320 
00321     action = coll->addAction("article_delete");
00322     action->setIcon(KIcon("edit-delete"));
00323     action->setText(i18n("&Delete"));
00324     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotArticleDelete()));
00325     action->setShortcuts(KShortcut( "Delete" ));
00326 
00327     KActionMenu* statusMenu = coll->add<KActionMenu>("article_set_status");
00328     statusMenu->setText(i18n("&Mark As"));
00329 
00330     //d->speakSelectedArticlesAction = new KAction(KIcon("media-playback-start"), i18n("&Speak Selected Articles"), actionCollection(), "akr_texttospeech");
00331     //connect(d->speakSelectedArticlesAction, SIGNAL(triggered(bool) ), d->mainWidget, SLOT(slotTextToSpeechRequest()));
00332 
00333     //KAction *abortTTS = new KAction(KIcon("media-playback-stop"), i18n( "&Stop Speaking" ), actionCollection(), "akr_aborttexttospeech");
00334     //connect(abortTTS, SIGNAL(triggered(bool)), SpeechClient::self(), SLOT(slotAbortJobs()));
00335     //abortTTS->setShortcut(QKeySequence(Qt::Key_Escape));
00336     //abortTTS->setEnabled(false);
00337 
00338     //connect(SpeechClient::self(), SIGNAL(signalActivated(bool)),
00339     //abortTTS, SLOT(setEnabled(bool)));
00340 
00341     action = coll->addAction("article_set_status_read");
00342     action->setText(i18nc("as in: mark as read","&Read"));
00343     action->setIcon(KIcon("mail-mark-read"));
00344     action->setToolTip(i18n("Mark selected article as read"));
00345     action->setShortcuts(KShortcut( "Ctrl+E" ));
00346     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotSetSelectedArticleRead()));
00347     statusMenu->addAction(action);
00348 
00349     action = coll->addAction("article_set_status_new");
00350     action->setText(i18n("&New"));
00351     action->setIcon(KIcon("mail-mark-unread-new"));
00352     action->setShortcuts(KShortcut( "Ctrl+N" ));
00353     action->setToolTip(i18n("Mark selected article as new"));
00354     connect(action, SIGNAL(triggered(bool)),  d->mainWidget, SLOT(slotSetSelectedArticleNew()));
00355     statusMenu->addAction(action);
00356 
00357 
00358     action = coll->addAction("article_set_status_unread");
00359     action->setText(i18n("&Unread"));
00360     action->setIcon(KIcon("mail-mark-unread"));
00361     action->setToolTip(i18n("Mark selected article as unread"));
00362     action->setShortcuts(KShortcut( "Ctrl+U" ));
00363     connect(action, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotSetSelectedArticleUnread()));
00364     statusMenu->addAction(action);
00365 
00366     KToggleAction* importantAction = coll->add<KToggleAction>("article_set_status_important");
00367     importantAction->setText(i18n("&Mark as Important"));
00368     importantAction->setIcon(KIcon("mail-mark-important"));
00369     importantAction->setShortcuts(KShortcut("Ctrl+I"));
00370     importantAction->setCheckedState(KGuiItem(i18n("Remove &Important Mark")));
00371     connect(importantAction, SIGNAL(triggered(bool)), d->mainWidget, SLOT(slotArticleToggleKeepFlag(bool)));
00372 
00373     action = coll->addAction("feedstree_move_up");
00374     action->setText(i18n("Move Node Up"));
00375     connect(action, SIGNAL(triggered(bool)), mainWidget, SLOT(slotMoveCurrentNodeUp()));
00376     action->setShortcuts(KShortcut( "Shift+Alt+Up" ));
00377 
00378     action = coll->addAction("feedstree_move_down");
00379     action->setText(i18n("Move Node Down"));
00380     connect(action, SIGNAL(triggered(bool)), mainWidget, SLOT(slotMoveCurrentNodeDown()));
00381     action->setShortcuts(KShortcut( "Shift+Alt+Down" ));
00382 
00383     action = coll->addAction(i18n("Move Node Left"));
00384     action->setText(i18n("Move Node Left"));
00385     connect(action, SIGNAL(triggered(bool)), mainWidget, SLOT(slotMoveCurrentNodeLeft()));
00386     action->setShortcuts(KShortcut( "Shift+Alt+Left" ));
00387 
00388     action = coll->addAction("feedstree_move_right");
00389     action->setText(i18n("Move Node Right"));
00390     connect(action, SIGNAL(triggered(bool)), mainWidget, SLOT(slotMoveCurrentNodeRight()));
00391     action->setShortcuts(KShortcut( "Shift+Alt+Right" ));
00392 
00393     action = coll->addAction("file_sendlink");
00394     action->setIcon(KIcon("mail-message-new"));
00395     action->setText(i18n("Send &Link Address..."));
00396     connect(action, SIGNAL(triggered(bool)), mainWidget, SLOT(slotSendLink()));
00397 
00398     action = coll->addAction("file_sendfile");
00399     action->setIcon(KIcon("mail-message-new"));
00400     action->setText(i18n("Send &File..."));
00401     connect(action, SIGNAL(triggered(bool)), mainWidget, SLOT(slotSendFile()));
00402 }
00403 
00404 void ActionManagerImpl::initArticleViewer(ArticleViewer* articleViewer)
00405 {
00406     if (d->articleViewer)
00407         return;
00408     else
00409         d->articleViewer = articleViewer;
00410 }
00411 
00412 void ActionManagerImpl::initArticleListView(ArticleListView* articleList)
00413 {
00414     if (d->articleList)
00415         return;
00416     else
00417         d->articleList = articleList;
00418 
00419     KAction *action = actionCollection()->addAction("go_previous_article");
00420     action->setText(i18n("&Previous Article"));
00421     connect(action, SIGNAL(triggered(bool)), articleList, SLOT(slotPreviousArticle()));
00422     action->setShortcuts(KShortcut( "Left" ));
00423     action = actionCollection()->addAction("go_next_article");
00424     action->setText(i18n("&Next Article"));
00425     connect(action, SIGNAL(triggered(bool)), articleList, SLOT(slotNextArticle()));
00426     action->setShortcuts(KShortcut( "Right" ));
00427 }
00428 
00429 void ActionManagerImpl::initSubscriptionListView(SubscriptionListView* subscriptionListView)
00430 {
00431     if (d->subscriptionListView)
00432         return;
00433     else
00434         d->subscriptionListView = subscriptionListView;
00435 
00436     KActionCollection *coll = actionCollection();
00437 
00438     KAction *action = coll->addAction("go_prev_feed");
00439     action->setText(i18n("&Previous Feed"));
00440     connect(action, SIGNAL(triggered(bool)), subscriptionListView, SLOT(slotPrevFeed()));
00441     action->setShortcuts(KShortcut( "P" ));
00442 
00443     action = coll->addAction("go_next_feed");
00444     action->setText(i18n("&Next Feed"));
00445     connect(action, SIGNAL(triggered(bool)), subscriptionListView, SLOT(slotNextFeed()));
00446     action->setShortcuts(KShortcut( "N" ));
00447 
00448     action = coll->addAction("go_next_unread_feed");
00449     action->setText(i18n("N&ext Unread Feed"));
00450     connect(action, SIGNAL(triggered(bool)), subscriptionListView, SLOT(slotNextUnreadFeed()));
00451     action->setShortcut(  QKeySequence(Qt::ALT+Qt::Key_Plus) );
00452 
00453     action = coll->addAction("go_prev_unread_feed");
00454     action->setText(i18n("Prev&ious Unread Feed"));
00455     connect(action, SIGNAL(triggered(bool)), subscriptionListView, SLOT(slotPrevUnreadFeed()));
00456     action->setShortcut( QKeySequence(Qt::ALT+Qt::Key_Minus) );
00457 
00458     action = coll->addAction("feedstree_home");
00459     action->setText(i18n("Go to Top of Tree"));
00460     connect(action, SIGNAL(triggered(bool)), subscriptionListView, SLOT(slotItemBegin()));
00461     action->setShortcuts(KShortcut( "Ctrl+Home" ));
00462 
00463     action = coll->addAction("feedstree_end");
00464     action->setText(i18n("Go to Bottom of Tree"));
00465     connect(action, SIGNAL(triggered(bool)), subscriptionListView, SLOT(slotItemEnd()));
00466     action->setShortcuts(KShortcut( "Ctrl+End" ));
00467 
00468     action = coll->addAction("feedstree_left");
00469     action->setText(i18n("Go Left in Tree"));
00470     connect(action, SIGNAL(triggered(bool)), subscriptionListView, SLOT(slotItemLeft()));
00471     action->setShortcuts(KShortcut( "Ctrl+Left" ));
00472 
00473     action = coll->addAction("feedstree_right");
00474     action->setText(i18n("Go Right in Tree"));
00475     connect(action, SIGNAL(triggered(bool)), subscriptionListView, SLOT(slotItemRight()));
00476     action->setShortcuts(KShortcut( "Ctrl+Right" ));
00477 
00478     action = coll->addAction("feedstree_up");
00479     action->setText(i18n("Go Up in Tree"));
00480     connect(action, SIGNAL(triggered(bool)), subscriptionListView, SLOT(slotItemUp()));
00481     action->setShortcuts(KShortcut( "Ctrl+Up" ));
00482 
00483     action = coll->addAction("feedstree_down" );
00484     action->setText(i18n("Go Down in Tree"));
00485     connect(action, SIGNAL(triggered(bool)), subscriptionListView, SLOT(slotItemDown()));
00486     action->setShortcuts(KShortcut( "Ctrl+Down" ));
00487 }
00488 
00489 void ActionManagerImpl::initTabWidget(TabWidget* tabWidget)
00490 {
00491     if (d->tabWidget)
00492         return;
00493     else
00494         d->tabWidget = tabWidget;
00495 
00496     KActionCollection *coll = actionCollection();
00497 
00498     KAction *action = coll->addAction("select_next_tab");
00499     action->setText(i18n("Select Next Tab"));
00500     connect(action, SIGNAL(triggered(bool)), d->tabWidget, SLOT(slotNextTab()));
00501     action->setShortcuts(KShortcut( "Ctrl+Period" ));
00502 
00503     action = coll->addAction("select_previous_tab");
00504     action->setText(i18n("Select Previous Tab"));
00505     connect(action, SIGNAL(triggered(bool)), d->tabWidget, SLOT(slotPreviousTab()));
00506     action->setShortcuts(KShortcut( "Ctrl+Comma" ));
00507 
00508     action = coll->addAction("tab_detach");
00509     action->setIcon(KIcon("tab-detach"));
00510     action->setText(i18n("Detach Tab"));
00511     connect(action, SIGNAL(triggered(bool)), d->tabWidget, SLOT(slotDetachTab()));
00512     action->setShortcut(QKeySequence(Qt::CTRL+Qt::SHIFT+Qt::Key_B));
00513 
00514     action = coll->addAction("tab_copylinkaddress");
00515     action->setText(i18n("Copy Link Address"));
00516     connect(action, SIGNAL(triggered(bool)), d->tabWidget, SLOT(slotCopyLinkAddress()));
00517 
00518     action = coll->addAction("tab_remove");
00519     action->setIcon(KIcon("tab-close"));
00520     action->setText(i18n("&Close Tab"));
00521     connect(action, SIGNAL(triggered(bool)), d->tabWidget, SLOT(slotCloseTab()));
00522     action->setShortcuts(KStandardShortcut::close());
00523 }
00524 
00525 void ActionManagerImpl::initFrameManager(FrameManager* frameManager)
00526 {
00527     if (d->frameManager)
00528         return;
00529 
00530     d->frameManager = frameManager;
00531 
00532     KToolBarPopupAction* forward = new KToolBarPopupAction(KIcon("go-next"), i18nc("Go forward in browser history", "Forward"), this);
00533     d->actionCollection->addAction("browser_forward", forward);
00534     forward->setShortcuts(KShortcut("Alt+Right"));
00535     connect(forward, SIGNAL(triggered()), frameManager, SLOT(slotBrowserForward()));
00536 
00537     connect(forward->menu(), SIGNAL(aboutToShow()), frameManager, SLOT(slotBrowserForwardAboutToShow()));
00538 
00539     KToolBarPopupAction* back = new KToolBarPopupAction(KIcon("go-previous"), i18nc("Go back in browser history", "Back"), this);
00540     d->actionCollection->addAction("browser_back", back);
00541     back->setShortcuts(KShortcut("Alt+Left"));
00542     connect(back, SIGNAL(triggered()), frameManager, SLOT(slotBrowserBack()));
00543 
00544     connect(back->menu(), SIGNAL(aboutToShow()), frameManager, SLOT(slotBrowserBackAboutToShow()));
00545 
00546     KAction *action = d->actionCollection->addAction("browser_reload");
00547     action->setIcon(KIcon("view-refresh"));
00548     action->setText(i18n("Reload"));
00549     connect(action, SIGNAL(triggered(bool) ), frameManager, SLOT(slotBrowserReload()));
00550 
00551     action = d->actionCollection->addAction("browser_stop");
00552     action->setIcon(KIcon("process-stop"));
00553     action->setText(i18n("Stop"));
00554     connect(action, SIGNAL(triggered(bool) ), frameManager, SLOT(slotBrowserStop()));
00555 }
00556 
00557 QWidget* ActionManagerImpl::container(const char* name)
00558 {
00559     return d->part->factory()->container(name, d->part);
00560 }
00561 
00562 
00563 KActionCollection* ActionManagerImpl::actionCollection()
00564 {
00565     return d->actionCollection;
00566 }
00567 
00568 QAction* ActionManagerImpl::action(const char* name)
00569 {
00570     return d->actionCollection != 0 ? d->actionCollection->action(name) : 0;
00571 }
00572 
00573 } // namespace Akregator
00574 
00575 #include "actionmanagerimpl.moc"

akregator

Skip menu "akregator"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members

kdepim

Skip menu "kdepim"
  • akonadi
  •   clients
  •   kabc
  •   kcal
  •   kcm
  • akregator
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt
  • kdgantt1
  • kjots
  • kleopatra
  • kmail
  • kmobiletools
  • knode
  • knotes
  • kontact
  • kontactinterfaces
  • korganizer
  •   korgac
  • kpilot
  • ktimetracker
  • libkdepim
  • libkholidays
  • libkleo
  • libkpgp
  • maildir
Generated for kdepim by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal