summaryrefslogtreecommitdiffstats
path: root/kdeprint/kmmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdeprint/kmmanager.cpp')
-rw-r--r--kdeprint/kmmanager.cpp556
1 files changed, 0 insertions, 556 deletions
diff --git a/kdeprint/kmmanager.cpp b/kdeprint/kmmanager.cpp
deleted file mode 100644
index 01ca0dc77..000000000
--- a/kdeprint/kmmanager.cpp
+++ /dev/null
@@ -1,556 +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 "kmmanager.h"
-#include "kmprinter.h"
-#include "kmdbentry.h"
-#include "kmfactory.h"
-#include "kmvirtualmanager.h"
-#include "kmspecialmanager.h"
-#include "printerfilter.h"
-#include "kprinter.h"
-
-#include <zlib.h>
-#include <tqfile.h>
-#include <kstandarddirs.h>
-#include <kconfig.h>
-#include <klocale.h>
-#include <kdebug.h>
-#include <kapplication.h>
-#include <klibloader.h>
-#include <unistd.h>
-
-KMManager::KMManager(TQObject *parent, const char *name)
-: TQObject(parent,name)
-{
- m_printers.setAutoDelete(true);
- m_fprinters.setAutoDelete(false);
- m_hasmanagement = false;
- m_printeroperationmask = 0;
- m_serveroperationmask = 0;
- m_printerfilter = new PrinterFilter(this);
-
- m_specialmgr = new KMSpecialManager(this);
- Q_CHECK_PTR(m_specialmgr);
- m_virtualmgr = new KMVirtualManager(this);
- Q_CHECK_PTR(m_virtualmgr);
-
- // set default to true to not disturb code that
- // hasn't been adapted yet. Otherwise, should be false
- m_updatepossible = true;
-}
-
-KMManager::~KMManager()
-{
-}
-
-KMManager* KMManager::self()
-{
- return KMFactory::self()->manager();
-}
-
-bool KMManager::notImplemented()
-{
- setErrorMsg(i18n("This operation is not implemented."));
- return false;
-}
-
-bool KMManager::modifyPrinter(KMPrinter *oldp, KMPrinter *newp)
-{
- if (oldp->printerName() != newp->printerName())
- {
- // remove the old one, then create the new one. But before removing
- // the old one, retrieve its driver so that the new printer has the
- // same.
- DrMain *driver = loadPrinterDriver(oldp, true);
- newp->setDriver(driver);
- if (!removePrinter(oldp))
- return false;
- }
- return createPrinter(newp);
-}
-
-bool KMManager::createPrinter(KMPrinter*)
-{
- return notImplemented();
-}
-
-bool KMManager::removePrinter(KMPrinter*)
-{
- return notImplemented();
-}
-
-bool KMManager::removePrinter(const TQString& name)
-{
- KMPrinter *p = findPrinter(name);
- return (p ? removePrinter(p) : false);
-}
-
-bool KMManager::enablePrinter(KMPrinter*, bool)
-{
- return notImplemented();
-}
-
-bool KMManager::enablePrinter(const TQString& name, bool state)
-{
- KMPrinter *p = findPrinter(name);
- return (p ? enablePrinter(p, state) : false);
-}
-
-bool KMManager::startPrinter(KMPrinter*, bool)
-{
- return notImplemented();
-}
-
-bool KMManager::startPrinter(const TQString& name, bool state)
-{
- KMPrinter *p = findPrinter(name);
- return (p ? startPrinter(p, state) : false);
-}
-
-bool KMManager::upPrinter(KMPrinter *p, bool state)
-{
- bool result = enablePrinter(p, state);
- if (result)
- result = startPrinter(p, state);
- return result;
-}
-
-bool KMManager::completePrinter(KMPrinter*)
-{
- notImplemented();
- return true; // not false to allow instance config/creation
-}
-
-bool KMManager::completePrinterShort(KMPrinter *p)
-{
- return completePrinter(p);
-}
-
-bool KMManager::completePrinter(const TQString& name)
-{
- KMPrinter *p = findPrinter(name);
- return (p ? completePrinter(p) : false);
-}
-
-bool KMManager::setDefaultPrinter(KMPrinter*)
-{
- return notImplemented();
-}
-
-bool KMManager::setDefaultPrinter(const TQString& name)
-{
- KMPrinter *p = findPrinter(name);
- return (p ? setDefaultPrinter(p) : false);
-}
-
-bool KMManager::testPrinter(KMPrinter *prt)
-{
- // standard Test mechanism
- TQString testpage = testPage();
- if (testpage.isEmpty())
- {
- setErrorMsg(i18n("Unable to locate test page."));
- return false;
- }
- KPrinter pr;
- bool prExist = (findPrinter(prt->printerName()) != 0), result(false);
- pr.setPrinterName(prt->printerName());
- pr.setSearchName(prt->name());
- pr.setDocName("KDE Print Test");
- // the printing mechanism may involve some needed operations on the
- // printer, so temporary printers (created when testing) should be
- // temporarily added to the printer list, then taken out.
- if (!prExist)
- m_printers.append(prt);
- result = pr.printFiles(testpage, false, false);
- if (!prExist)
- m_printers.take(m_printers.count()-1);
- return result;
- // return notImplemented();
-}
-
-KMPrinter* KMManager::findPrinter(const TQString& name)
-{
- TQPtrListIterator<KMPrinter> it(m_printers);
- for (;it.current();++it)
- if (it.current()->name() == name) return it.current();
- //setErrorMsg(i18n("%1: printer not found.").arg(name));
- return 0;
-}
-
-KMPrinter* KMManager::softDefault() const
-{
- TQPtrListIterator<KMPrinter> it(m_printers);
- for (;it.current();++it)
- if (it.current()->isSoftDefault()) return it.current();
- return 0;
-}
-
-KMPrinter* KMManager::hardDefault() const
-{
- TQPtrListIterator<KMPrinter> it(m_printers);
- for (; it.current();++it)
- if (it.current()->isHardDefault())
- return it.current();
- return 0;
-}
-
-KMPrinter* KMManager::defaultPrinter()
-{
- printerList(false);
- KMPrinter *prt = softDefault();
- if (!prt)
- prt = hardDefault();
- return prt;
-}
-
-TQPtrList<KMPrinter>* KMManager::printerList(bool reload)
-{
- setErrorMsg(TQString::null);
- //kdDebug(500) << "Getting printer list: " << reload << endl;
-
- if (reload || m_printers.count() == 0)
- {
- // reset filter
- m_printerfilter->update();
- m_fprinters.clear();
-
- // first discard all printers
- discardAllPrinters(true);
-
- // make sure virtual printers will be reloaded if we don't have
- // any printer (for example if settings are wrong)
- if (m_printers.count() == 0)
- m_virtualmgr->reset();
-
- // List real printers (in subclasses)
- if ( m_updatepossible )
- listPrinters();
- // Listing of special printers has to be done before the instances
- // because now special printers can also have instances
- m_specialmgr->refresh();
- // list virtual printers (and undiscard virtual printers if necessary)
- if ( m_updatepossible )
- m_virtualmgr->refresh();
-
- // remove discarded printers
- for (uint i=0; i<m_printers.count(); i++)
- {
- KMPrinter *prt = m_printers.tqat(i);
- if (prt->isDiscarded())
- {
- m_printers.remove(i);
- i--;
- }
- else if (prt->isSpecial() || m_printerfilter->filter(prt))
- m_fprinters.append(prt);
- }
-
- // try to find the default printer from these situations:
- // - it already exists from .lpoptions file
- // - use the PRINTER variable
- if (!softDefault())
- {
- KMPrinter *defprinter = findPrinter(TQString::tqfromLatin1(getenv("PRINTER")));
- if (defprinter)
- setSoftDefault(defprinter);
- }
- }
-
- return &m_fprinters;
-}
-
-TQPtrList<KMPrinter>* KMManager::printerListComplete(bool reload)
-{
- printerList(reload);
- return &m_printers;
-}
-
-void KMManager::listPrinters()
-{
- // do nothing
-}
-
-void KMManager::addPrinter(KMPrinter *p)
-{
- if (p)
- {
- if (p->name().isEmpty())
- // discard printer with empty name
- delete p;
- else
- {
- KMPrinter *other = findPrinter(p->name());
- if (other)
- {
- other->copy(*p);
- delete p;
- }
- else
- {
- p->setDiscarded(false);
- m_printers.inSort(p);
- }
- }
- }
-}
-
-TQString KMManager::driverDbCreationProgram()
-{
- return TQString::null;
-}
-
-TQString KMManager::driverDirectory()
-{
- return TQString::null;
-}
-
-DrMain* KMManager::loadPrinterDriver(KMPrinter*, bool)
-{
- return NULL;
-}
-
-DrMain* KMManager::loadDbDriver(KMDBEntry *entry)
-{
- return loadFileDriver(entry->file);
-}
-
-DrMain* KMManager::loadFileDriver(const TQString&)
-{
- return NULL;
-}
-
-DrMain* KMManager::loadDriver(KMPrinter *p, bool config)
-{
- if (p->isSpecial())
- return m_specialmgr->loadDriver(p);
- else
- return loadPrinterDriver(p, config);
-}
-
-bool KMManager::savePrinterDriver(KMPrinter*,DrMain*)
-{
- return notImplemented();
-}
-
-bool KMManager::uncompressFile(const TQString& filename, TQString& destname)
-{
- TQFile f(filename);
- bool result(true);
- destname = TQString::null;
- if (f.exists() && f.open(IO_ReadOnly))
- {
- char buf[1024] = {0};
- f.readBlock(buf,2);
- if ((uchar)(buf[0]) == 037 && (uchar)(buf[1]) == 0213)
- {
- f.close();
- destname = locateLocal("tmp","tdeprint_") + KApplication::randomString(8);
- f.setName(destname);
-
- if (f.open(IO_WriteOnly))
- {
- gzFile in = gzopen(filename.latin1(),"r");
- int n(0);
- while ((n=gzread(in,buf,1024)) > 0)
- if (f.writeBlock(buf,n) != n)
- break;
- if (n != 0) result = false;
- gzclose(in);
- f.close();
- }
- }
- }
- return result;
-}
-
-void KMManager::setHardDefault(KMPrinter *p)
-{
- TQPtrListIterator<KMPrinter> it(m_printers);
- for (;it.current();++it)
- it.current()->setHardDefault(false);
- if (p) p->setHardDefault(true);
-}
-
-void KMManager::setSoftDefault(KMPrinter *p)
-{
- TQPtrListIterator<KMPrinter> it(m_printers);
- for (;it.current();++it)
- {
- it.current()->setSoftDefault(false);
- it.current()->setOwnSoftDefault(false);
- }
- if (p)
- {
- p->setSoftDefault(true);
- KMPrinter *pp = findPrinter(p->printerName());
- if (pp)
- pp->setOwnSoftDefault(true);
- }
-}
-
-bool KMManager::restartServer()
-{
- return notImplemented();
-}
-
-bool KMManager::configureServer(TQWidget*)
-{
- return notImplemented();
-}
-
-TQString KMManager::testPage()
-{
- KConfig *conf = KMFactory::self()->printConfig();
- conf->setGroup("General");
- QString tpage = conf->readPathEntry("TestPage");
- if (tpage.isEmpty())
- tpage = locate("data","tdeprint/testprint.ps");
- return tpage;
-}
-
-void KMManager::discardAllPrinters(bool on)
-{
- TQPtrListIterator<KMPrinter> it(m_printers);
- for (;it.current();++it)
- if (!on || !it.current()->isSpecial())
- it.current()->setDiscarded(on);
-}
-
-bool KMManager::validateDbDriver(KMDBEntry*)
-{
- return true;
-}
-
-bool KMManager::createSpecialPrinter(KMPrinter *p)
-{
- if (p && p->isSpecial())
- {
- KMPrinter *old = findPrinter(p->name());
- if (old && !old->isSpecial())
- {
- setErrorMsg(i18n("Can't overwrite regular printer with special printer settings."));
- return false;
- }
- // if the special printer already exists, it will be overwritten
- addPrinter(p);
- return m_specialmgr->savePrinters();
- }
- return false;
-}
-
-bool KMManager::removeSpecialPrinter(KMPrinter *p)
-{
- if (p && p->isSpecial() && m_printers.findRef(p) != -1)
- {
- m_printers.removeRef(p);
- return m_specialmgr->savePrinters();
- }
- return false;
-}
-
-/* format of output:
- Class0, URI0, Desc0, Printer0, Class1, URI1, Desc1, Printer1, ...
-
- Defaults to 3 parallel printers
-*/
-TQStringList KMManager::detectLocalPrinters()
-{
- TQStringList list;
- for (int i=0; i<3; i++)
- list << TQString() << TQString::tqfromLatin1("parallel:/dev/lp%1").arg(i) << i18n("Parallel Port #%1").arg(i+1) << TQString();
- return list;
-}
-
-int KMManager::addPrinterWizard(TQWidget *parent)
-{
- KLibrary *lib = KLibLoader::self()->library("libtdeprint_management_module");
- if (!lib)
- setErrorMsg(i18n("Unable to load KDE print management library: %1").arg(KLibLoader::self()->lastErrorMessage()));
- else
- {
- int (*func)(TQWidget*) = (int(*)(TQWidget*))lib->symbol("add_printer_wizard");
- if (!func)
- setErrorMsg(i18n("Unable to find wizard object in management library."));
- else
- return func(parent);
- }
- return (-1);
-}
-
-bool KMManager::invokeOptionsDialog(TQWidget *parent)
-{
- KLibrary *lib = KLibLoader::self()->library("libtdeprint_management_module");
- if (!lib)
- setErrorMsg(i18n("Unable to load KDE print management library: %1").arg(KLibLoader::self()->lastErrorMessage()));
- else
- {
- bool (*func)(TQWidget*) = (bool(*)(TQWidget*))lib->symbol("config_dialog");
- if (!func)
- setErrorMsg(i18n("Unable to find options dialog in management library."));
- else
- return func(parent);
- }
- return false;
-}
-
-void KMManager::createPluginActions(KActionCollection*)
-{
-}
-
-void KMManager::validatePluginActions(KActionCollection*, KMPrinter*)
-{
-}
-
-void KMManager::enableFilter(bool on)
-{
- m_printerfilter->setEnabled(on);
-}
-
-bool KMManager::isFilterEnabled() const
-{
- return m_printerfilter->isEnabled();
-}
-
-TQString KMManager::stateInformation()
-{
- return i18n("No plugin information available");
-}
-
-void KMManager::checkUpdatePossible()
-{
- m_updatepossible = false;
- checkUpdatePossibleInternal();
-}
-
-void KMManager::checkUpdatePossibleInternal()
-{
- setUpdatePossible( true );
-}
-
-void KMManager::setUpdatePossible( bool value )
-{
- if ( value != m_updatepossible )
- m_virtualmgr->reset();
- m_updatepossible = value;
- emit updatePossible( m_updatepossible );
-}
-
-#include "kmmanager.moc"