/*************************************************************************** * Copyright (C) 2004 by Paulo Moura Guedes * * moura@tdewebdev.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "actionmanager.h" #include #include #include #include #include #include #include "klinkstatus_part.h" #include "ui/sessionwidget.h" #include "ui/tabwidgetsession.h" #include "cfg/klsconfig.h" ActionManager* ActionManager::m_self = 0; ActionManager* ActionManager::getInstance() { Q_ASSERT(m_self); return m_self; } void ActionManager::setInstance(ActionManager* manager) { Q_ASSERT(manager); m_self = manager; } class ActionManager::ActionManagerPrivate { public: ActionManagerPrivate() : part(0), tabWidgetSession(0), sessionWidget(0) {} KActionCollection* actionCollection; KLinkStatusPart* part; TabWidgetSession* tabWidgetSession; SessionWidget* sessionWidget; }; ActionManager::ActionManager(TQObject *parent, const char *name) : TQObject(parent, name), d(new ActionManagerPrivate) {} ActionManager::~ActionManager() { delete d; d = 0; } void ActionManager::initPart(KLinkStatusPart* part) { Q_ASSERT(part); if(d->part) return; d->part = part; d->actionCollection = part->actionCollection(); KAction* action = 0; // *************** File menu ********************* new KAction(i18n("New Link Check"), "filenew", 0, d->part, TQT_SLOT(slotNewLinkCheck()), TQT_TQOBJECT(d->actionCollection), "new_link_check"); new KAction(i18n("Open URL..."), "fileopen", 0, d->part, TQT_SLOT(slotOpenLink()), TQT_TQOBJECT(d->actionCollection), "open_link"); action = new KAction(i18n("Close Tab"), "fileclose", 0, d->part, TQT_SLOT(slotClose()), TQT_TQOBJECT(d->actionCollection), "close_tab"); action->setEnabled(false); // *************** Settings menu ********************* (void) new KAction(i18n("Configure KLinkStatus..."), "configure", 0, d->part, TQT_SLOT(slotConfigureKLinkStatus()), TQT_TQOBJECT(d->actionCollection), "configure_klinkstatus"); // *************** Help menu ********************* (void) new KAction(i18n("About KLinkStatus"), "klinkstatus", 0, d->part, TQT_SLOT(slotAbout()), TQT_TQOBJECT(d->actionCollection), "about_klinkstatus"); (void) new KAction(i18n("&Report Bug..."), 0, 0, d->part, TQT_SLOT(slotReportBug()), TQT_TQOBJECT(d->actionCollection), "report_bug"); // *************** View menu ********************* } void ActionManager::initTabWidget(TabWidgetSession* tabWidgetSession) { Q_ASSERT(tabWidgetSession); if (d->tabWidgetSession) return; d->tabWidgetSession = tabWidgetSession; // *************** File menu ********************* KAction* action = new KAction(i18n("E&xport Results as HTML..."), "filesave", 0, TQT_TQOBJECT(d->tabWidgetSession), TQT_SLOT(slotExportAsHTML()), TQT_TQOBJECT(d->actionCollection), "file_export_html"); action->setEnabled(false); // *************** View menu ********************* // this action must be in the tabwidget because the slot can't be connected to a particular sessionWidget KToggleAction* toggle_action = new KToggleAction(i18n("&Follow last Link checked"), "make_tdevelop", "Ctrl+f", TQT_TQOBJECT(d->tabWidgetSession), TQT_SLOT(slotFollowLastLinkChecked()), TQT_TQOBJECT(d->actionCollection), "follow_last_link_checked"); toggle_action->setChecked(KLSConfig::followLastLinkChecked()); // this action must be in the tabwidget because the slot can't be connected to a particular sessionWidget toggle_action = new KToggleAction(i18n("&Hide Search Panel"), "bottom", "Ctrl+h", TQT_TQOBJECT(d->tabWidgetSession), TQT_SLOT(slotHideSearchPanel()), TQT_TQOBJECT(d->actionCollection), "hide_search_bar"); KGuiItem item(i18n("&Show Search Panel"), "top", "Show Search Panel"); toggle_action->setCheckedState(item); new KAction(i18n("&Reset Search Options"), "reload", "F5", TQT_TQOBJECT(d->tabWidgetSession), TQT_SLOT(slotResetSearchOptions()), TQT_TQOBJECT(d->actionCollection), "reset_search_bar"); // *************** Search menu ********************* toggle_action = new KToggleAction(i18n("&Start Search"), "player_play", "Ctrl+s", TQT_TQOBJECT(d->tabWidgetSession), TQT_SLOT(slotStartSearch()), TQT_TQOBJECT(d->actionCollection), "start_search"); toggle_action->setEnabled(false); toggle_action = new KToggleAction(i18n("&Pause Search"), "player_pause", "Ctrl+p", TQT_TQOBJECT(d->tabWidgetSession), TQT_SLOT(slotPauseSearch()), TQT_TQOBJECT(d->actionCollection), "pause_search"); toggle_action->setEnabled(false); action = new KAction(i18n("St&op Search"), "player_stop", "Ctrl+c", TQT_TQOBJECT(d->tabWidgetSession), TQT_SLOT(slotStopSearch()), TQT_TQOBJECT(d->actionCollection), "stop_search"); action->setEnabled(false); } void ActionManager::initSessionWidget(SessionWidget* sessionWidget) { Q_ASSERT(sessionWidget); if (d->sessionWidget) return; d->sessionWidget = sessionWidget; } TQWidget* ActionManager::container(const char* name) { return d->part->factory()->container(name, d->part); } KActionCollection* ActionManager::actionCollection() { return d->actionCollection; } KAction* ActionManager::action(const char* name, const char* classname) { return d->actionCollection != 0 ? d->actionCollection->action(name, classname) : 0; } void ActionManager::slotUpdateSessionWidgetActions(SessionWidget* page) { KToggleAction* start_search_action_ = static_cast (action("start_search")); KToggleAction* pause_search_action_ = static_cast (action("pause_search")); KAction* stop_search_action_ = action("stop_search"); if(page->inProgress()) { Q_ASSERT(!page->stopped()); start_search_action_->setEnabled(true); start_search_action_->setChecked(true); pause_search_action_->setEnabled(true); stop_search_action_->setEnabled(true); } if(page->paused()) { Q_ASSERT(page->inProgress()); Q_ASSERT(!page->stopped()); start_search_action_->setEnabled(true); start_search_action_->setChecked(true); pause_search_action_->setEnabled(true); pause_search_action_->setChecked(true); stop_search_action_->setEnabled(true); } if(page->stopped()) { Q_ASSERT(!page->inProgress()); Q_ASSERT(!page->paused()); start_search_action_->setEnabled(true); start_search_action_->setChecked(false); pause_search_action_->setEnabled(false); pause_search_action_->setChecked(false); stop_search_action_->setEnabled(false); } // ____________________________________________________________________ KToggleAction* toggleAction = static_cast (action("follow_last_link_checked")); if(!toggleAction) // the first sessionWidget is created before initSessionWidget is called { initSessionWidget(page); toggleAction = static_cast (action("follow_last_link_checked")); } Q_ASSERT(toggleAction); toggleAction->setChecked(page->followLastLinkChecked()); toggleAction = static_cast (action("hide_search_bar")); Q_ASSERT(toggleAction); toggleAction->setChecked(page->buttongroup_search->isHidden()); // ____________________________________________________________________ action("file_export_html")->setEnabled(!page->isEmpty()); } #include "actionmanager.moc"