summaryrefslogtreecommitdiffstats
path: root/kdeprint/management/kmmainview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdeprint/management/kmmainview.cpp')
-rw-r--r--kdeprint/management/kmmainview.cpp920
1 files changed, 0 insertions, 920 deletions
diff --git a/kdeprint/management/kmmainview.cpp b/kdeprint/management/kmmainview.cpp
deleted file mode 100644
index f5f905af3..000000000
--- a/kdeprint/management/kmmainview.cpp
+++ /dev/null
@@ -1,920 +0,0 @@
-/*
- * This file is part of the KDE libraries
- * Copyright (c) 2001 Michael Goffioul <tdeprint@swing.be>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License version 2 as published by the Free Software Foundation.
- *
- * This library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- **/
-
-#include "kmmainview.h"
-#include "kmtimer.h"
-#include "kmprinterview.h"
-#include "kmpages.h"
-#include "kmmanager.h"
-#include "kmuimanager.h"
-#include "kmfactory.h"
-#include "kmvirtualmanager.h"
-#include "kmprinter.h"
-#include "driver.h"
-#include "kmdriverdialog.h"
-#include "kmwizard.h"
-#include "kmconfigdialog.h"
-#include "kmspecialprinterdlg.h"
-#include "plugincombobox.h"
-#include "kiconselectaction.h"
-#include "messagewindow.h"
-
-#include <tqdockarea.h>
-#include <kmenubar.h>
-#include <tqtimer.h>
-#include <tqcombobox.h>
-#include <tqlabel.h>
-#include <tqlayout.h>
-#include <tqpopupmenu.h>
-#include <kmessagebox.h>
-#include <kaction.h>
-#include <klocale.h>
-#include <kconfig.h>
-#include <ktoolbar.h>
-#include <ktoolbarbutton.h>
-#include <kdebug.h>
-#include <kpopupmenu.h>
-#include <klibloader.h>
-#include <kdialogbase.h>
-#include <ksimpleconfig.h>
-#include <kstandarddirs.h>
-#include <kapplication.h>
-#include <kprocess.h>
-
-#undef m_manager
-#define m_manager KMFactory::self()->manager()
-
-int tdeprint_management_add_printer_wizard( TQWidget* parent )
-{
- KMWizard dlg(parent);
- int flag(0);
- if (dlg.exec())
- {
- flag = 1;
- // check if the printer already exists, and ask confirmation if needed.
- if (KMFactory::self()->manager()->findPrinter(dlg.printer()->name()) != 0)
- if (KMessageBox::warningContinueCancel(parent,i18n("The printer %1 already exists. Continuing will overwrite existing printer. Do you want to continue?").arg(dlg.printer()->name())) == KMessageBox::Cancel)
- flag = 0;
- // try to add printer only if flag is true.
- if (flag && !KMFactory::self()->manager()->createPrinter(dlg.printer()))
- flag = -1;
- }
- return flag;
-}
-
-KMMainView::KMMainView(TQWidget *parent, const char *name, KActionCollection *coll)
-: TQWidget(parent, name)
-{
- m_current = 0;
- m_first = true;
-
- // create widgets
- m_printerview = new KMPrinterView(this, "PrinterView");
- m_printerpages = new KMPages(this, "PrinterPages");
- m_pop = new TQPopupMenu(this);
- m_toolbar = new KToolBar(this, "ToolBar");
- m_toolbar->setMovingEnabled(false);
- m_plugin = new PluginComboBox(this, "Plugin");
- /*
- m_menubar = new KMenuBar( this );
- static_cast<KMenuBar*>( m_menubar )->setTopLevelMenu( false );
- */
- m_menubar = new KToolBar( this, "MenuBar", false, false );
- m_menubar->setIconText( KToolBar::IconTextRight );
- m_menubar->setMovingEnabled( false );
-
- // layout
- TQVBoxLayout *m_layout = new TQVBoxLayout(this, 0, 0);
- m_layout->addWidget(m_toolbar);
- m_layout->addWidget( m_menubar );
- m_boxlayout = new TQBoxLayout(TQBoxLayout::TopToBottom, 0, 0);
- m_layout->addLayout(m_boxlayout);
- m_boxlayout->addWidget(m_printerview);
- m_boxlayout->addWidget(m_printerpages);
- m_layout->addSpacing(5);
- m_layout->addWidget(m_plugin, 0);
-
- // connections
- connect(KMTimer::self(),TQT_SIGNAL(timeout()),TQT_SLOT(slotTimer()));
- connect(m_printerview,TQT_SIGNAL(printerSelected(const TQString&)),TQT_SLOT(slotPrinterSelected(const TQString&)));
- connect(m_printerview,TQT_SIGNAL(rightButtonClicked(const TQString&,const TQPoint&)),TQT_SLOT(slotRightButtonClicked(const TQString&,const TQPoint&)));
- connect(m_pop,TQT_SIGNAL(aboutToShow()),KMTimer::self(),TQT_SLOT(hold()));
- connect(m_pop,TQT_SIGNAL(aboutToHide()),KMTimer::self(),TQT_SLOT(release()));
- connect( m_manager, TQT_SIGNAL( updatePossible( bool ) ), TQT_SLOT( slotUpdatePossible( bool ) ) );
-
- // actions
- if (coll)
- m_actions = coll;
- else
- m_actions = new KActionCollection(this);
- initActions();
-
- // first update
- restoreSettings();
- loadParameters();
-
- // delay first update until KMManager is ready
- reset( i18n( "Initializing manager..." ), true, true );
-}
-
-KMMainView::~KMMainView()
-{
- saveSettings();
- //KMFactory::release();
-}
-
-void KMMainView::loadParameters()
-{
-}
-
-void KMMainView::restoreSettings()
-{
- KConfig *conf = KMFactory::self()->printConfig();
- conf->setGroup("General");
- setViewType((KMPrinterView::ViewType)conf->readNumEntry("ViewType",KMPrinterView::Icons));
- setOrientation(conf->readNumEntry("Orientation", Qt::Vertical));
- bool view = conf->readBoolEntry("ViewToolBar",false);
- slotToggleToolBar(view);
- ((KToggleAction*)m_actions->action("view_toolbar"))->setChecked(view);
- view = conf->readBoolEntry( "ViewMenuBar", true );
- slotToggleMenuBar( view );
- static_cast<KToggleAction*>( m_actions->action( "view_menubar" ) )->setChecked( view );
- view = conf->readBoolEntry("ViewPrinterInfos",true);
- slotShowPrinterInfos(view);
- ((KToggleAction*)m_actions->action("view_printerinfos"))->setChecked(view);
-}
-
-void KMMainView::saveSettings()
-{
- KConfig *conf = KMFactory::self()->printConfig();
- conf->setGroup("General");
- conf->writeEntry("ViewType",(int)m_printerview->viewType());
- conf->writeEntry("Orientation",(int)orientation());
- conf->writeEntry("ViewToolBar",((KToggleAction*)m_actions->action("view_toolbar"))->isChecked());
- conf->writeEntry("ViewMenuBar",static_cast<KToggleAction*>( m_actions->action("view_menubar") )->isChecked());
- conf->writeEntry("ViewPrinterInfos",((KToggleAction*)m_actions->action("view_printerinfos"))->isChecked());
- conf->sync();
-}
-
-void KMMainView::initActions()
-{
- KIconSelectAction *vact = new KIconSelectAction(i18n("&View"),0,m_actions,"view_change");
- TQStringList iconlst;
- iconlst << "view_icon" << "view_detailed" << "view_tree";
- vact->setItems(TQStringList::split(',',i18n("&Icons,&List,&Tree"),false), iconlst);
- vact->setCurrentItem(0);
- connect(vact,TQT_SIGNAL(activated(int)),TQT_SLOT(slotChangeView(int)));
-
- KActionMenu *stateAct = new KActionMenu(i18n("Start/Stop Printer"), "tdeprint_printstate", m_actions, "printer_state_change");
- stateAct->setDelayed(false);
- stateAct->insert(new KAction(i18n("&Start Printer"),"tdeprint_enableprinter",0,TQT_TQOBJECT(this),TQT_SLOT(slotChangePrinterState()),m_actions,"printer_start"));
- stateAct->insert(new KAction(i18n("Sto&p Printer"),"tdeprint_stopprinter",0,TQT_TQOBJECT(this),TQT_SLOT(slotChangePrinterState()),m_actions,"printer_stop"));
-
- stateAct = new KActionMenu(i18n("Enable/Disable Job Spooling"), "tdeprint_queuestate", m_actions, "printer_spool_change");
- stateAct->setDelayed(false);
- stateAct->insert(new KAction(i18n("&Enable Job Spooling"),"tdeprint_enableprinter",0,TQT_TQOBJECT(this),TQT_SLOT(slotChangePrinterState()),m_actions,"printer_enable"));
- stateAct->insert(new KAction(i18n("&Disable Job Spooling"),"tdeprint_stopprinter",0,TQT_TQOBJECT(this),TQT_SLOT(slotChangePrinterState()),m_actions,"printer_disable"));
-
- new KAction(i18n("&Remove"),"edittrash",0,TQT_TQOBJECT(this),TQT_SLOT(slotRemove()),m_actions,"printer_remove");
- new KAction(i18n("&Configure..."),"configure",0,TQT_TQOBJECT(this),TQT_SLOT(slotConfigure()),m_actions,"printer_configure");
- new KAction(i18n("Add &Printer/Class..."),"tdeprint_addprinter",0,TQT_TQOBJECT(this),TQT_SLOT(slotAdd()),m_actions,"printer_add");
- new KAction(i18n("Add &Special (pseudo) Printer..."),"tdeprint_addpseudo",0,TQT_TQOBJECT(this),TQT_SLOT(slotAddSpecial()),m_actions,"printer_add_special");
- new KAction(i18n("Set as &Local Default"),"tdeprint_defaulthard",0,TQT_TQOBJECT(this),TQT_SLOT(slotHardDefault()),m_actions,"printer_hard_default");
- new KAction(i18n("Set as &User Default"),"tdeprint_defaultsoft",0,TQT_TQOBJECT(this),TQT_SLOT(slotSoftDefault()),m_actions,"printer_soft_default");
- new KAction(i18n("&Test Printer..."),"tdeprint_testprinter",0,TQT_TQOBJECT(this),TQT_SLOT(slotTest()),m_actions,"printer_test");
- new KAction(i18n("Configure &Manager..."),"tdeprint_configmgr",0,TQT_TQOBJECT(this),TQT_SLOT(slotManagerConfigure()),m_actions,"manager_configure");
- new KAction(i18n("Initialize Manager/&View"),"reload",0,TQT_TQOBJECT(this),TQT_SLOT(slotInit()),m_actions,"view_refresh");
-
- KIconSelectAction *dact = new KIconSelectAction(i18n("&Orientation"),0,m_actions,"orientation_change");
- iconlst.clear();
- iconlst << "view_top_bottom" << "view_left_right";
- dact->setItems(TQStringList::split(',',i18n("&Vertical,&Horizontal"),false), iconlst);
- dact->setCurrentItem(0);
- connect(dact,TQT_SIGNAL(activated(int)),TQT_SLOT(slotChangeDirection(int)));
-
- new KAction(i18n("R&estart Server"),"tdeprint_restartsrv",0,TQT_TQOBJECT(this),TQT_SLOT(slotServerRestart()),m_actions,"server_restart");
- new KAction(i18n("Configure &Server..."),"tdeprint_configsrv",0,TQT_TQOBJECT(this),TQT_SLOT(slotServerConfigure()),m_actions,"server_configure");
- new KAction(i18n("Configure Server Access..."),"tdeprint_configsrv",0,TQT_TQOBJECT(this),TQT_SLOT(slotServerAccessConfigure()),m_actions,"server_access_configure");
-
- KToggleAction *tact = new KToggleAction(i18n("Show &Toolbar"),0,m_actions,"view_toolbar");
- tact->setCheckedState(i18n("Hide &Toolbar"));
- connect(tact,TQT_SIGNAL(toggled(bool)),TQT_SLOT(slotToggleToolBar(bool)));
- tact = new KToggleAction( i18n( "Show Me&nu Toolbar" ), 0, m_actions, "view_menubar" );
- tact->setCheckedState(i18n("Hide Me&nu Toolbar"));
- connect( tact, TQT_SIGNAL( toggled( bool ) ), TQT_SLOT( slotToggleMenuBar( bool ) ) );
- tact = new KToggleAction(i18n("Show Pr&inter Details"),"tdeprint_printer_infos", 0,m_actions,"view_printerinfos");
- tact->setCheckedState(KGuiItem(i18n("Hide Pr&inter Details"),"tdeprint_printer_infos"));
- tact->setChecked(true);
- connect(tact,TQT_SIGNAL(toggled(bool)),TQT_SLOT(slotShowPrinterInfos(bool)));
-
- tact = new KToggleAction(i18n("Toggle Printer &Filtering"), "filter", 0, m_actions, "view_pfilter");
- tact->setChecked(KMManager::self()->isFilterEnabled());
- connect(tact, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotToggleFilter(bool)));
-
- new KAction( i18n( "%1 &Handbook" ).arg( "KDEPrint" ), "contents", 0, TQT_TQOBJECT(this), TQT_SLOT( slotHelp() ), m_actions, "invoke_help" );
- new KAction( i18n( "%1 &Web Site" ).arg( "KDEPrint" ), "network", 0, TQT_TQOBJECT(this), TQT_SLOT( slotHelp() ), m_actions, "invoke_web" );
-
- KActionMenu *mact = new KActionMenu(i18n("Pri&nter Tools"), "package_utilities", m_actions, "printer_tool");
- mact->setDelayed(false);
- connect(mact->popupMenu(), TQT_SIGNAL(activated(int)), TQT_SLOT(slotToolSelected(int)));
- TQStringList files = KGlobal::dirs()->findAllResources("data", "tdeprint/tools/*.desktop");
- for (TQStringList::ConstIterator it=files.begin(); it!=files.end(); ++it)
- {
- KSimpleConfig conf(*it);
- conf.setGroup("Desktop Entry");
- mact->popupMenu()->insertItem(conf.readEntry("Name", "Unnamed"), mact->popupMenu()->count());
- m_toollist << conf.readEntry("X-KDE-Library");
- }
-
- // add actions to the toolbar
- m_actions->action("printer_add")->plug(m_toolbar);
- m_actions->action("printer_add_special")->plug(m_toolbar);
- m_toolbar->insertLineSeparator();
- m_actions->action("printer_state_change")->plug(m_toolbar);
- m_actions->action("printer_spool_change")->plug(m_toolbar);
- m_toolbar->insertSeparator();
- m_actions->action("printer_hard_default")->plug(m_toolbar);
- m_actions->action("printer_soft_default")->plug(m_toolbar);
- m_actions->action("printer_remove")->plug(m_toolbar);
- m_toolbar->insertSeparator();
- m_actions->action("printer_configure")->plug(m_toolbar);
- m_actions->action("printer_test")->plug(m_toolbar);
- m_actions->action("printer_tool")->plug(m_toolbar);
- m_pactionsindex = m_toolbar->insertSeparator();
- m_toolbar->insertLineSeparator();
- m_actions->action("server_restart")->plug(m_toolbar);
- m_actions->action("server_configure")->plug(m_toolbar);
- m_toolbar->insertLineSeparator();
- m_actions->action("manager_configure")->plug(m_toolbar);
- m_actions->action("view_refresh")->plug(m_toolbar);
- m_toolbar->insertLineSeparator();
- m_actions->action("view_printerinfos")->plug(m_toolbar);
- m_actions->action("view_change")->plug(m_toolbar);
- m_actions->action("orientation_change")->plug(m_toolbar);
- m_actions->action("view_pfilter")->plug(m_toolbar);
-
- // add actions to the menu bar
- TQPopupMenu *menu = new TQPopupMenu( this );
- m_actions->action( "printer_add" )->plug( menu );
- m_actions->action( "printer_add_special" )->plug( menu );
- //m_menubar->insertItem( i18n( "Add" ), menu );
- m_menubar->insertButton( "wizard", 0, true, i18n( "Add" ) );
- m_menubar->getButton( 0 )->setPopup( menu, true );
- menu = new TQPopupMenu( this );
- m_actions->action("printer_state_change")->plug( menu );
- m_actions->action("printer_spool_change")->plug( menu );
- menu->insertSeparator();
- m_actions->action("printer_hard_default")->plug( menu );
- m_actions->action("printer_soft_default")->plug( menu );
- m_actions->action("printer_remove")->plug( menu );
- menu->insertSeparator();
- m_actions->action("printer_configure")->plug( menu );
- m_actions->action("printer_test")->plug( menu );
- m_actions->action("printer_tool")->plug( menu );
- menu->insertSeparator();
- //m_menubar->insertItem( i18n( "Printer" ), menu );
- m_menubar->insertButton( "printer1", 1, true, i18n( "Printer" ) );
- m_menubar->getButton( 1 )->setPopup( menu, true );
- menu = new TQPopupMenu( this );
- m_actions->action("server_restart")->plug( menu );
- m_actions->action("server_configure")->plug( menu );
- //m_menubar->insertItem( i18n( "Server" ), menu );
- m_menubar->insertButton( "misc", 2, true, i18n( "Print Server" ) );
- m_menubar->getButton( 2 )->setPopup( menu, true );
- menu = new TQPopupMenu( this );
- m_actions->action("manager_configure")->plug( menu );
- m_actions->action("view_refresh")->plug( menu );
- //m_menubar->insertItem( i18n( "Manager" ), menu );
- m_menubar->insertButton( "tdeprint_configmgr", 3, true, i18n( "Print Manager" ) );
- m_menubar->getButton( 3 )->setPopup( menu, true );
- menu = new TQPopupMenu( this );
- m_actions->action("view_printerinfos")->plug( menu );
- m_actions->action("view_change")->plug( menu );
- m_actions->action("orientation_change")->plug( menu );
- m_actions->action( "view_toolbar" )->plug ( menu );
- m_actions->action( "view_menubar" )->plug ( menu );
- menu->insertSeparator();
- m_actions->action("view_pfilter")->plug( menu );
- //m_menubar->insertItem( i18n( "View" ), menu );
- m_menubar->insertButton( "view_remove", 4, true, i18n( "View" ) );
- m_menubar->getButton( 4 )->setPopup( menu, true );
- //m_menubar->setMinimumHeight( m_menubar->heightForWidth( 1000 ) );
- menu = new TQPopupMenu( this );
- m_actions->action( "invoke_help" )->plug( menu );
- m_actions->action( "invoke_web" )->plug( menu );
- m_menubar->insertButton( "help", 5, true, i18n( "Documentation" ) );
- m_menubar->getButton( 5 )->setPopup( menu, true );
-
- loadPluginActions();
- slotPrinterSelected(TQString::null);
-}
-
-void KMMainView::slotRefresh()
-{
- // TODO: remove me
-}
-
-void KMMainView::slotTimer()
-{
- kdDebug() << "KMMainView::slotTimer" << endl;
- TQPtrList<KMPrinter> *printerlist = m_manager->printerList();
- bool ok = m_manager->errorMsg().isEmpty();
- m_printerview->setPrinterList(printerlist);
- if ( m_first )
- {
- if ( !ok )
- showErrorMsg(i18n("An error occurred while retrieving the printer list."));
- else
- {
- /* try to select the most appropriate printer:
- * - soft default owner printer
- * - hard default printer
- * - first printer
- */
- TQPtrListIterator<KMPrinter> it( *printerlist );
- KMPrinter *p1 = 0, *p2 = 0, *p3 = 0;
- while ( it.current() )
- {
- if ( !it.current()->isVirtual() )
- {
- if ( it.current()->ownSoftDefault() )
- {
- p1 = it.current();
- break;
- }
- else if ( it.current()->isHardDefault() )
- p2 = it.current();
- else if ( !p3 )
- p3 = it.current();
- }
- ++it;
- }
- if ( p1 || p2 || p3 )
- m_printerview->setPrinter( p1 ? p1 : ( p2 ? p2 : p3 ) );
- }
- m_first = false;
- }
-}
-
-void KMMainView::slotPrinterSelected(const TQString& prname)
-{
- KMPrinter *p = KMManager::self()->findPrinter(prname);
- m_current = p;
- if (p && !p->isSpecial())
- KMFactory::self()->manager()->completePrinter(p);
- m_printerpages->setPrinter(p);
-
- // update actions state (only if toolbar enabled, workaround for toolbar
- // problem).
- //if (m_toolbar->isEnabled())
- //{
- int mask = (m_manager->hasManagement() ? m_manager->printerOperationMask() : 0);
- bool sp = !(p && p->isSpecial());
-// m_actions->action("printer_remove")->setEnabled(!sp || ((mask & KMManager::PrinterRemoval) && p && p->isLocal() && !p->isImplicit()));
- m_actions->action("printer_remove")->setEnabled(!sp || ((mask & KMManager::PrinterRemoval) && p && !p->isImplicit()));
- m_actions->action("printer_configure")->setEnabled(!sp || ((mask & KMManager::PrinterConfigure) && p && !p->isClass(true) /*&& p->isLocal()*/));
- m_actions->action("printer_hard_default")->setEnabled((sp && (mask & KMManager::PrinterDefault) && p && !p->isClass(true) && !p->isHardDefault() && p->isLocal()));
- m_actions->action("printer_soft_default")->setEnabled((p && !p->isSoftDefault()));
- m_actions->action("printer_test")->setEnabled((sp && (mask & KMManager::PrinterTesting) && p && !p->isClass(true)));
- bool stmask = (sp && (mask & KMManager::PrinterEnabling) && p);
- m_actions->action("printer_state_change")->setEnabled(stmask && p->isLocal());
- m_actions->action("printer_spool_change")->setEnabled(stmask);
- m_actions->action("printer_start")->setEnabled((stmask && p->state() == KMPrinter::Stopped));
- m_actions->action("printer_stop")->setEnabled((stmask && p->state() != KMPrinter::Stopped));
- m_actions->action("printer_enable")->setEnabled((stmask && !p->acceptJobs()));
- m_actions->action("printer_disable")->setEnabled((stmask && p->acceptJobs()));
-
- m_actions->action("printer_add")->setEnabled((mask & KMManager::PrinterCreation));
- mask = m_manager->serverOperationMask();
- m_actions->action("server_restart")->setEnabled((mask & KMManager::ServerRestarting));
- m_actions->action("server_configure")->setEnabled((mask & KMManager::ServerConfigure));
-
- KMFactory::self()->manager()->validatePluginActions(m_actions, p);
- //}
- m_actions->action("printer_tool")->setEnabled(p && !p->isClass(true) && !p->isRemote() && !p->isSpecial());
-}
-
-void KMMainView::setViewType(int ID)
-{
- ((KSelectAction*)m_actions->action("view_change"))->setCurrentItem(ID);
- slotChangeView(ID);
-}
-
-int KMMainView::viewType() const
-{ return m_printerview->viewType(); }
-
-void KMMainView::slotChangeView(int ID)
-{
- kdDebug() << "KMMainView::slotChangeView" << endl;
- if (ID >= KMPrinterView::Icons && ID <= KMPrinterView::Tree)
- m_printerview->setViewType((KMPrinterView::ViewType)ID);
-}
-
-void KMMainView::slotRightButtonClicked(const TQString& prname, const TQPoint& p)
-{
- KMPrinter *printer = KMManager::self()->findPrinter(prname);
- // construct popup menu
- m_pop->clear();
- if (printer)
- {
- m_current = printer;
- if (!printer->isSpecial())
- {
- if (printer->isLocal())
- m_actions->action((printer->state() == KMPrinter::Stopped ? "printer_start" : "printer_stop"))->plug(m_pop);
- m_actions->action((printer->acceptJobs() ? "printer_disable" : "printer_enable"))->plug(m_pop);
- m_pop->insertSeparator();
- }
- if (!printer->isSoftDefault()) m_actions->action("printer_soft_default")->plug(m_pop);
- if (printer->isLocal() && !printer->isImplicit())
- {
- if (!printer->isHardDefault()) m_actions->action("printer_hard_default")->plug(m_pop);
- m_actions->action("printer_remove")->plug(m_pop);
- m_pop->insertSeparator();
- if (!printer->isClass(true))
- {
- m_actions->action("printer_configure")->plug(m_pop);
- m_actions->action("printer_test")->plug(m_pop);
- m_actions->action("printer_tool")->plug(m_pop);
- m_pop->insertSeparator();
- }
- }
- else
- {
- m_actions->action("printer_remove")->plug(m_pop);
- m_pop->insertSeparator();
- if (!printer->isClass(true))
- {
- m_actions->action("printer_configure")->plug(m_pop);
- m_actions->action("printer_test")->plug(m_pop);
- }
- m_pop->insertSeparator();
- }
- if (!printer->isSpecial())
- {
- TQValueList<KAction*> pactions = m_actions->actions("plugin");
- for (TQValueList<KAction*>::Iterator it=pactions.begin(); it!=pactions.end(); ++it)
- (*it)->plug(m_pop);
- if (pactions.count() > 0)
- m_pop->insertSeparator();
- }
- }
- else
- {
- m_actions->action("printer_add")->plug(m_pop);
- m_actions->action("printer_add_special")->plug(m_pop);
- m_pop->insertSeparator();
- m_actions->action("server_restart")->plug(m_pop);
- m_actions->action("server_configure")->plug(m_pop);
- m_pop->insertSeparator();
- m_actions->action("manager_configure")->plug(m_pop);
- m_actions->action("view_refresh")->plug(m_pop);
- m_pop->insertSeparator();
- }
- m_actions->action("view_printerinfos")->plug(m_pop);
- m_actions->action("view_change")->plug(m_pop);
- m_actions->action("orientation_change")->plug(m_pop);
- m_actions->action("view_toolbar")->plug(m_pop);
- m_actions->action("view_menubar")->plug(m_pop);
- m_pop->insertSeparator();
- m_actions->action("view_pfilter")->plug(m_pop);
-
- // pop the menu
- m_pop->popup(p);
-}
-
-void KMMainView::slotChangePrinterState()
-{
- TQString opname = TQT_TQOBJECT_CONST(sender())->name();
- if (m_current && opname.startsWith("printer_"))
- {
- opname = opname.mid(8);
- KMTimer::self()->hold();
- bool result(false);
- if (opname == "enable")
- result = m_manager->enablePrinter(m_current, true);
- else if (opname == "disable")
- result = m_manager->enablePrinter(m_current, false);
- else if (opname == "start")
- result = m_manager->startPrinter(m_current, true);
- else if (opname == "stop")
- result = m_manager->startPrinter(m_current, false);
- if (!result)
- showErrorMsg(i18n("Unable to modify the state of printer %1.").arg(m_current->printerName()));
- KMTimer::self()->release(result);
- }
-}
-
-void KMMainView::slotRemove()
-{
- if (m_current)
- {
- KMTimer::self()->hold();
- bool result(false);
- if (KMessageBox::warningYesNo(this,i18n("Do you really want to remove %1?").arg(m_current->printerName())) == KMessageBox::Yes)
- if (m_current->isSpecial())
- {
- if (!(result=m_manager->removeSpecialPrinter(m_current)))
- showErrorMsg(i18n("Unable to remove special printer %1.").arg(m_current->printerName()));
- }
- else if (!(result=m_manager->removePrinter(m_current)))
- showErrorMsg(i18n("Unable to remove printer %1.").arg(m_current->printerName()));
- KMTimer::self()->release(result);
- }
-}
-
-void KMMainView::slotConfigure()
-{
- if (m_current)
- {
- KMTimer::self()->hold();
- bool needRefresh(false);
- if (m_current->isSpecial())
- {
- KMSpecialPrinterDlg dlg(this);
- dlg.setPrinter(m_current);
- if (dlg.exec())
- {
- KMPrinter *prt = dlg.printer();
- if (prt->name() != m_current->name())
- m_manager->removeSpecialPrinter(m_current);
- m_manager->createSpecialPrinter(prt);
- needRefresh = true;
- }
- }
- else
- {
- DrMain *driver = m_manager->loadPrinterDriver(m_current, true);
- if (driver)
- {
- KMDriverDialog dlg(this);
- dlg.setCaption(i18n("Configure %1").arg(m_current->printerName()));
- dlg.setDriver(driver);
- // disable OK button for remote printer (read-only dialog)
- if (m_current->isRemote())
- dlg.enableButtonOK(false);
- if (dlg.exec())
- if (!m_manager->savePrinterDriver(m_current,driver))
- showErrorMsg(i18n("Unable to modify settings of printer %1.").arg(m_current->printerName()));
- delete driver;
- }
- else
- showErrorMsg(i18n("Unable to load a valid driver for printer %1.").arg(m_current->printerName()));
- }
- KMTimer::self()->release(needRefresh);
- }
-}
-
-void KMMainView::slotAdd()
-{
- KMTimer::self()->hold();
-
- int result(0);
- if ((result=tdeprint_management_add_printer_wizard(this)) == -1)
- showErrorMsg(i18n("Unable to create printer."));
-
- KMTimer::self()->release((result == 1));
-}
-
-void KMMainView::slotHardDefault()
-{
- if (m_current)
- {
- KMTimer::self()->hold();
- bool result = m_manager->setDefaultPrinter(m_current);
- if (!result)
- showErrorMsg(i18n("Unable to define printer %1 as default.").arg(m_current->printerName()));
- KMTimer::self()->release(result);
- }
-}
-
-void KMMainView::slotSoftDefault()
-{
- if (m_current)
- {
- KMTimer::self()->hold();
- KMFactory::self()->virtualManager()->setAsDefault(m_current,TQString::null);
- KMTimer::self()->release(true);
- }
-}
-
-void KMMainView::setOrientation(int o)
-{
- int ID = (o == Qt::Horizontal ? 1 : 0);
- ((KSelectAction*)m_actions->action("orientation_change"))->setCurrentItem(ID);
- slotChangeDirection(ID);
-}
-
-int KMMainView::orientation() const
-{ return (m_boxlayout->direction() == TQBoxLayout::LeftToRight ? Qt::Horizontal : Qt::Vertical); }
-
-void KMMainView::slotChangeDirection(int d)
-{
- m_boxlayout->setDirection(d == 1 ? TQBoxLayout::LeftToRight : TQBoxLayout::TopToBottom);
-}
-
-void KMMainView::slotTest()
-{
- if (m_current)
- {
- KMTimer::self()->hold();
- if (KMessageBox::warningContinueCancel(this, i18n("You are about to print a test page on %1. Do you want to continue?").arg(m_current->printerName()), TQString::null, i18n("Print Test Page"), "printTestPage") == KMessageBox::Continue)
- {
- if (KMFactory::self()->manager()->testPrinter(m_current))
- KMessageBox::information(this,i18n("Test page successfully sent to printer %1.").arg(m_current->printerName()));
- else
- showErrorMsg(i18n("Unable to test printer %1.").arg(m_current->printerName()));
- }
- KMTimer::self()->release(true);
- }
-}
-
-void KMMainView::showErrorMsg(const TQString& msg, bool usemgr)
-{
- TQString s(msg);
- if (usemgr)
- {
- s.prepend("<p>");
- s.append(" ");
- s += i18n("Error message received from manager:</p><p>%1</p>");
- if (m_manager->errorMsg().isEmpty())
- s = s.arg(i18n("Internal error (no error message)."));
- else
- s = s.arg(m_manager->errorMsg());
- // clean up error message
- m_manager->setErrorMsg(TQString::null);
- }
- s.prepend("<qt>").append("</qt>");
- KMTimer::self()->hold();
- KMessageBox::error(this,s);
- KMTimer::self()->release();
-}
-
-void KMMainView::slotServerRestart()
-{
- KMTimer::self()->hold();
- bool result = m_manager->restartServer();
- if (!result)
- {
- showErrorMsg(i18n("Unable to restart print server."));
- KMTimer::self()->release( false );
- }
- else
- {
- reset( i18n( "Restarting server..." ), false, false );
- }
-}
-
-void KMMainView::slotServerConfigure()
-{
- KMTimer::self()->hold();
- bool result = m_manager->configureServer(this);
- if (!result)
- {
- showErrorMsg(i18n("Unable to configure print server."));
- KMTimer::self()->release( false );
- }
- else
- {
- reset( i18n( "Configuring server..." ), false, false );
- }
-}
-
-void KMMainView::slotServerConfigureAccess()
-{
- KProcess *proc = new KProcess;
- *proc << "/usr/bin/system-config-printer-kde";
- proc->start(KProcess::DontCare);
-}
-
-void KMMainView::slotToggleToolBar(bool on)
-{
- if (on) m_toolbar->show();
- else m_toolbar->hide();
-}
-
-void KMMainView::slotToggleMenuBar( bool on )
-{
- if ( on )
- m_menubar->show();
- else
- m_menubar->hide();
-}
-
-void KMMainView::slotManagerConfigure()
-{
- KMTimer::self()->hold();
- KMConfigDialog dlg(this,"ConfigDialog");
- if ( dlg.exec() )
- {
- loadParameters();
- }
- /* when "OK":
- * => the config file is saved
- * => triggering a DCOP signal
- * => configChanged() called
- * hence no need to refresh, just release the timer
- */
- KMTimer::self()->release( false );
-}
-
-void KMMainView::slotAddSpecial()
-{
- KMTimer::self()->hold();
- KMSpecialPrinterDlg dlg(this);
- if (dlg.exec())
- {
- KMPrinter *prt = dlg.printer();
- m_manager->createSpecialPrinter(prt);
- }
- KMTimer::self()->release(true);
-}
-
-void KMMainView::slotShowPrinterInfos(bool on)
-{
- if (on)
- m_printerpages->show();
- else
- m_printerpages->hide();
- m_actions->action("orientation_change")->setEnabled(on);
-}
-
-void KMMainView::enableToolbar(bool on)
-{
- KToggleAction *act = (KToggleAction*)m_actions->action("view_toolbar");
- m_toolbar->setEnabled(on);
- act->setEnabled(on);
- if (on && act->isChecked())
- m_toolbar->show();
- else
- m_toolbar->hide();
-}
-
-KAction* KMMainView::action(const char *name)
-{
- return m_actions->action(name);
-}
-
-/*
-void KMMainView::aboutToReload()
-{
- m_printerview->setPrinterList(0);
-}
-*/
-
-void KMMainView::reload()
-{
- removePluginActions();
- loadPluginActions();
-
- // redo the connection as the old manager object has been removed
- connect( m_manager, TQT_SIGNAL( updatePossible( bool ) ), TQT_SLOT( slotUpdatePossible( bool ) ) );
-
- // We must delay the refresh such that all objects has been
- // correctly reloaded (otherwise, crash in KMJobViewer).
- reset( i18n( "Initializing manager..." ), true, true );
-}
-
-void KMMainView::showPrinterInfos(bool on)
-{
- static_cast<KToggleAction*>(m_actions->action("view_printerinfos"))->setChecked(on);
- slotShowPrinterInfos(on);
-}
-
-bool KMMainView::printerInfosShown() const
-{
- return (static_cast<KToggleAction*>(m_actions->action("view_printerinfos"))->isChecked());
-}
-
-void KMMainView::loadPluginActions()
-{
- KMFactory::self()->manager()->createPluginActions(m_actions);
- TQValueList<KAction*> pactions = m_actions->actions("plugin");
- int index = m_pactionsindex;
- //TQPopupMenu *menu = m_menubar->findItem( m_menubar->idAt( 1 ) )->popup();
- TQPopupMenu *menu = m_menubar->getButton( 1 )->popup();
- for (TQValueList<KAction*>::Iterator it=pactions.begin(); it!=pactions.end(); ++it)
- {
- (*it)->plug(m_toolbar, index++);
- ( *it )->plug( menu );
- }
-}
-
-void KMMainView::removePluginActions()
-{
- TQValueList<KAction*> pactions = m_actions->actions("plugin");
- for (TQValueList<KAction*>::Iterator it=pactions.begin(); it!=pactions.end(); ++it)
- {
- (*it)->unplugAll();
- delete (*it);
- }
-}
-
-void KMMainView::slotToolSelected(int ID)
-{
- KMTimer::self()->hold();
-
- TQString libname = m_toollist[ID];
- libname.prepend("tdeprint_tool_");
- if (m_current && !m_current->device().isEmpty() && !libname.isEmpty())
- {
- KLibFactory *factory = KLibLoader::self()->factory(libname.local8Bit());
- if (factory)
- {
- TQStringList args;
- args << m_current->device() << m_current->printerName();
- KDialogBase *dlg = static_cast<KDialogBase*>(TQT_TQWIDGET(factory->create(TQT_TQOBJECT(this), "Tool", 0, args)));
- if (dlg)
- dlg->exec();
- delete dlg;
- }
- }
- else
- KMessageBox::error(this,
- i18n("Unable to start printer tool. Possible reasons are: "
- "no printer selected, the selected printer doesn't have "
- "any local device defined (printer port), or the tool library "
- "could not be found."));
-
- KMTimer::self()->release();
-}
-
-void KMMainView::slotToggleFilter(bool on)
-{
- KMTimer::self()->hold();
- KMManager::self()->enableFilter(on);
- KMTimer::self()->release(true);
-}
-
-void KMMainView::configChanged()
-{
- reset( i18n( "Initializing manager..." ), false, true );
-}
-
-void KMMainView::slotUpdatePossible( bool flag )
-{
- destroyMessageWindow();
- if ( !flag )
- showErrorMsg( i18n( "Unable to retrieve the printer list." ) );
- KMTimer::self()->release( true );
-}
-
-void KMMainView::createMessageWindow( const TQString& txt, int delay )
-{
- destroyMessageWindow();
- MessageWindow::add( m_printerview, txt, delay );
-}
-
-void KMMainView::destroyMessageWindow()
-{
- MessageWindow::remove( m_printerview );
-}
-
-void KMMainView::slotInit()
-{
- reset( i18n( "Initializing manager..." ), true, true );
-}
-
-void KMMainView::reset( const TQString& msg, bool useDelay, bool holdTimer )
-{
- if ( holdTimer )
- KMTimer::self()->hold();
- m_printerview->setPrinterList( 0 );
- if ( !msg.isEmpty() )
- createMessageWindow( msg, ( useDelay ? 500 : 0 ) );
- m_first = true;
- m_manager->checkUpdatePossible();
-}
-
-void KMMainView::slotHelp()
-{
- TQString s = TQT_TQOBJECT_CONST(sender())->name();
- if ( s == "invoke_help" )
- kapp->invokeHelp( TQString::null, "tdeprint" );
- else if ( s == "invoke_web" )
- {
- TQStringList args;
- args << "exec" << "http://printing.kde.org";
- kapp->tdeinitExec( "kfmclient", args );
- }
- else
- kdDebug( 500 ) << "Unknown help invokator: " << s << endl;
-}
-
-#include "kmmainview.moc"