• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • kdeprint
 

kdeprint

kmcupsuimanager.cpp
00001 /*
00002  *  This file is part of the KDE libraries
00003  *  Copyright (c) 2001 Michael Goffioul <kdeprint@swing.be>
00004  *
00005  *  This library is free software; you can redistribute it and/or
00006  *  modify it under the terms of the GNU Library General Public
00007  *  License version 2 as published by the Free Software Foundation.
00008  *
00009  *  This library is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  *  Library General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU Library General Public License
00015  *  along with this library; see the file COPYING.LIB.  If not, write to
00016  *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017  *  Boston, MA 02110-1301, USA.
00018  **/
00019 
00020 #include "kmcupsuimanager.h"
00021 #include "kmpropertypage.h"
00022 #include "kmwizard.h"
00023 #include "kmconfigdialog.h"
00024 #include "kmwbackend.h"
00025 #include "kmfactory.h"
00026 #include "kprinter.h"
00027 
00028 #include "kmpropbanners.h"
00029 #include "kmpropmembers.h"
00030 #include "kmpropbackend.h"
00031 #include "kmpropdriver.h"
00032 #include "kmwbanners.h"
00033 #include "kmwipp.h"
00034 #include "kmwippselect.h"
00035 #include "kmwippprinter.h"
00036 #include "kmconfigcups.h"
00037 #include "kmconfigcupsdir.h"
00038 #include "kmwfax.h"
00039 #include "kmwother.h"
00040 #include "kmwquota.h"
00041 #include "kmpropquota.h"
00042 #include "kmwusers.h"
00043 #include "kmpropusers.h"
00044 #include "kpschedulepage.h"
00045 #include "kptagspage.h"
00046 
00047 #include "kprinterpropertydialog.h"
00048 #include "kpgeneralpage.h"
00049 #include "kpimagepage.h"
00050 #include "kptextpage.h"
00051 #include "kphpgl2page.h"
00052 
00053 #include "ipprequest.h"
00054 #include "cupsinfos.h"
00055 
00056 #include <tqlistview.h>
00057 #include <tqwhatsthis.h>
00058 #include <klocale.h>
00059 #include <kdebug.h>
00060 #include <kaction.h>
00061 #include <kmessagebox.h>
00062 
00063 #include "config.h"
00064 
00065 KMCupsUiManager::KMCupsUiManager(TQObject *parent, const char *name, const TQStringList & /*args*/)
00066 : KMUiManager(parent,name)
00067 {
00068 }
00069 
00070 KMCupsUiManager::~KMCupsUiManager()
00071 {
00072 }
00073 
00074 void KMCupsUiManager::setupPropertyPages(KMPropertyPage *p)
00075 {
00076     p->addPropPage(new KMPropMembers(p, "Members"));
00077     p->addPropPage(new KMPropBackend(p, "Backend"));
00078     p->addPropPage(new KMPropDriver(p, "Driver"));
00079     p->addPropPage(new KMPropBanners(p, "Banners"));
00080     p->addPropPage(new KMPropQuota(p, "Quotas"));
00081     p->addPropPage(new KMPropUsers(p, "Users"));
00082 }
00083 
00084 void KMCupsUiManager::setupWizard(KMWizard *wizard)
00085 {
00086     TQString whatsThisRemoteCUPSIPPBackend =
00087         i18n( "<qt><p>Print queue on remote CUPS server</p>"
00088               "<p>Use this for a print queue installed on a remote "
00089               "machine running a CUPS server. This allows to use "
00090               "remote printers when CUPS browsing is turned off.</p></qt>"
00091             );
00092 
00093     TQString whatsThisRemotePrinterIPPBackend =
00094         i18n( "<qt><p>Network IPP printer</p>"
00095               "<p>Use this for a network-enabled printer using the "
00096               "IPP protocol. Modern high-end printers can use this mode. "
00097               "Use this mode instead of TCP if your printer can do both.</p></qt>"
00098             );
00099 
00100     TQString whatsThisSerialFaxModemBackend =
00101         i18n( "<qt><p>Fax/Modem printer</p>"
00102               "<p>Use this for a fax/modem printer. This requires the installation "
00103               "of the <a href=\"http://vigna.dsi.unimi.it/fax4CUPS/\">fax4CUPS</a> backend. Documents sent on this printer will be faxed "
00104               "to the given target fax number.</p></qt>"
00105             );
00106 
00107     TQString whatsThisOtherPrintertypeBackend =
00108         i18n( "<qt><p>Other printer</p>"
00109               "<p>Use this for any printer type. To use this option, you must know "
00110               "the URI of the printer you want to install. Refer to the CUPS documentation "
00111               "for more information about the printer URI. This option is mainly useful for "
00112               "printer types using 3rd party backends not covered by the other possibilities.</p></qt>"
00113             );
00114 
00115     TQString whatsThisClassOfPrinters =
00116         i18n( "<qt><p>Class of printers</p>"
00117               "<p>Use this to create a class of printers. When sending a document to a class, "
00118               "the document is actually sent to the first available (idle) printer in the class. "
00119               "Refer to the CUPS documentation for more information about class of printers.</p></qt>"
00120             );
00121 
00122     KMWBackend  *backend = wizard->backendPage();
00123     if (!backend)
00124         return;
00125     backend->addBackend(KMWizard::Local,false);
00126     backend->addBackend(KMWizard::LPD,false);
00127     backend->addBackend(KMWizard::SMB,false,KMWizard::Password);
00128     backend->addBackend(KMWizard::TCP,false);
00129     backend->addBackend(KMWizard::IPP,i18n("Re&mote CUPS server (IPP/HTTP)"),false,whatsThisRemoteCUPSIPPBackend,KMWizard::Password);
00130     backend->addBackend(KMWizard::Custom+1,i18n("Network printer w/&IPP (IPP/HTTP)"),false,whatsThisRemotePrinterIPPBackend);
00131     backend->addBackend(KMWizard::Custom+2,i18n("S&erial Fax/Modem printer"),false,whatsThisSerialFaxModemBackend);
00132     backend->addBackend(KMWizard::Custom+5,i18n("Other &printer type"),false,whatsThisOtherPrintertypeBackend);
00133     backend->addBackend();
00134     backend->addBackend(KMWizard::Class,i18n("Cl&ass of printers"),false,whatsThisClassOfPrinters);
00135 
00136     IppRequest  req;
00137     QString     uri;
00138 
00139     req.setOperation(CUPS_GET_DEVICES);
00140     uri = TQString::fromLocal8Bit("ipp://%1/printers/").arg(CupsInfos::self()->hostaddr());
00141     req.addURI(IPP_TAG_OPERATION,"printer-uri",uri);
00142 
00143     if (req.doRequest("/"))
00144     {
00145         ipp_attribute_t *attr = req.first();
00146         while (attr)
00147         {
00148 #ifdef HAVE_CUPS_1_6
00149             if (ippGetName(attr) && strcmp(ippGetName(attr),"device-uri") == 0)
00150             {
00151                 if (strncmp(ippGetString(attr, 0, NULL),"socket",6) == 0) backend->enableBackend(KMWizard::TCP,true);
00152                 else if (strncmp(ippGetString(attr, 0, NULL),"parallel",8) == 0) backend->enableBackend(KMWizard::Local,true);
00153                 else if (strncmp(ippGetString(attr, 0, NULL),"serial",6) == 0) backend->enableBackend(KMWizard::Local,true);
00154                 else if (strncmp(ippGetString(attr, 0, NULL),"smb",3) == 0) backend->enableBackend(KMWizard::SMB,true);
00155                 else if (strncmp(ippGetString(attr, 0, NULL),"lpd",3) == 0) backend->enableBackend(KMWizard::LPD,true);
00156                 else if (strncmp(ippGetString(attr, 0, NULL),"usb",3) == 0) backend->enableBackend(KMWizard::Local,true);
00157                 else if (strncmp(ippGetString(attr, 0, NULL),"http",4) == 0 || strncmp(ippGetString(attr, 0, NULL),"ipp",3) == 0)
00158                 {
00159                     backend->enableBackend(KMWizard::IPP,true);
00160                     backend->enableBackend(KMWizard::Custom+1,true);
00161                 }
00162                 else if (strncmp(ippGetString(attr, 0, NULL),"fax",3) == 0) backend->enableBackend(KMWizard::Custom+2,true);
00163             }
00164             attr = ippNextAttribute(req.request());
00165 #else // HAVE_CUPS_1_6
00166             if (attr->name && strcmp(attr->name,"device-uri") == 0)
00167             {
00168                 if (strncmp(attr->values[0].string.text,"socket",6) == 0) backend->enableBackend(KMWizard::TCP,true);
00169                 else if (strncmp(attr->values[0].string.text,"parallel",8) == 0) backend->enableBackend(KMWizard::Local,true);
00170                 else if (strncmp(attr->values[0].string.text,"serial",6) == 0) backend->enableBackend(KMWizard::Local,true);
00171                 else if (strncmp(attr->values[0].string.text,"smb",3) == 0) backend->enableBackend(KMWizard::SMB,true);
00172                 else if (strncmp(attr->values[0].string.text,"lpd",3) == 0) backend->enableBackend(KMWizard::LPD,true);
00173                 else if (strncmp(attr->values[0].string.text,"usb",3) == 0) backend->enableBackend(KMWizard::Local,true);
00174                 else if (strncmp(attr->values[0].string.text,"http",4) == 0 || strncmp(attr->values[0].string.text,"ipp",3) == 0)
00175                 {
00176                     backend->enableBackend(KMWizard::IPP,true);
00177                     backend->enableBackend(KMWizard::Custom+1,true);
00178                 }
00179                 else if (strncmp(attr->values[0].string.text,"fax",3) == 0) backend->enableBackend(KMWizard::Custom+2,true);
00180             }
00181             attr = attr->next;
00182 #endif // HAVE_CUPS_1_6
00183         }
00184         backend->enableBackend(KMWizard::Class, true);
00185         backend->enableBackend(KMWizard::Custom+5, true);
00186     }
00187     else
00188         KMessageBox::error(wizard,
00189             "<qt><nobr>" +
00190             i18n("An error occurred while retrieving the list of available backends:") +
00191             "</nobr><br><br>" + req.statusMessage() + "</qt>");
00192 
00193     // banners page
00194     wizard->addPage(new KMWBanners(wizard));
00195     wizard->setNextPage(KMWizard::DriverTest,KMWizard::Banners);
00196     wizard->addPage(new KMWIpp(wizard));
00197     wizard->addPage(new KMWIppSelect(wizard));
00198     wizard->addPage(new KMWIppPrinter(wizard));
00199     wizard->addPage(new KMWFax(wizard));
00200     wizard->addPage(new KMWQuota(wizard));
00201     wizard->addPage(new KMWUsers(wizard));
00202     wizard->addPage(new KMWOther(wizard));
00203 }
00204 
00205 void KMCupsUiManager::setupPrinterPropertyDialog(KPrinterPropertyDialog *dlg)
00206 {
00207     // add general page
00208     dlg->addPage(new KPGeneralPage(dlg->printer(),dlg->driver(),dlg,"GeneralPage"));
00209     if (KMFactory::self()->settings()->application != KPrinter::Dialog)
00210     {
00211         dlg->addPage(new KPImagePage(dlg->driver(), dlg, "ImagePage"));
00212         dlg->addPage(new KPTextPage(dlg->driver(), dlg, "TextPage"));
00213         dlg->addPage(new KPHpgl2Page(dlg, "Hpgl2Page"));
00214     }
00215 }
00216 
00217 void KMCupsUiManager::setupConfigDialog(KMConfigDialog *dlg)
00218 {
00219     dlg->addConfigPage(new KMConfigCups(dlg));
00220     dlg->addConfigPage(new KMConfigCupsDir(dlg));
00221 }
00222 
00223 int KMCupsUiManager::pluginPageCap()
00224 {
00225     return (KMUiManager::CopyAll & ~KMUiManager::Current);
00226 }
00227 
00228 void KMCupsUiManager::setupPrintDialogPages(TQPtrList<KPrintDialogPage>* pages)
00229 {
00230     pages->append(new KPSchedulePage());
00231     pages->append(new KPTagsPage());
00232 }
00233 
00234 void KMCupsUiManager::setupJobViewer(TQListView *lv)
00235 {
00236     lv->addColumn(i18n("Priority"));
00237     lv->setColumnAlignment(lv->columns()-1, Qt::AlignRight|Qt::AlignVCenter);
00238     lv->addColumn(i18n("Billing Information"));
00239     lv->setColumnAlignment(lv->columns()-1, Qt::AlignRight|Qt::AlignVCenter);
00240 }

kdeprint

Skip menu "kdeprint"
  • Main Page
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Class Members
  • Related Pages

kdeprint

Skip menu "kdeprint"
  • arts
  • dcop
  • dnssd
  • interfaces
  •     interface
  •     library
  •   kspeech
  •   ktexteditor
  • kabc
  • kate
  • kcmshell
  • kdecore
  • kded
  • kdefx
  • kdeprint
  • kdesu
  • kdeui
  • kdoctools
  • khtml
  • kimgio
  • kinit
  • kio
  •   bookmarks
  •   httpfilter
  •   kfile
  •   kio
  •   kioexec
  •   kpasswdserver
  •   kssl
  • kioslave
  •   http
  • kjs
  • kmdi
  •   kmdi
  • knewstuff
  • kparts
  • krandr
  • kresources
  • kspell2
  • kunittest
  • kutils
  • kwallet
  • libkmid
  • libkscreensaver
Generated for kdeprint by doxygen 1.7.6.1
This website is maintained by Timothy Pearson.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. |