diff options
Diffstat (limited to 'kdeprint/cups/kcupsprinterimpl.cpp')
-rw-r--r-- | kdeprint/cups/kcupsprinterimpl.cpp | 159 |
1 files changed, 0 insertions, 159 deletions
diff --git a/kdeprint/cups/kcupsprinterimpl.cpp b/kdeprint/cups/kcupsprinterimpl.cpp deleted file mode 100644 index e016e9954..000000000 --- a/kdeprint/cups/kcupsprinterimpl.cpp +++ /dev/null @@ -1,159 +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 "kcupsprinterimpl.h" -#include "kprinter.h" -#include "driver.h" -#include "kmfactory.h" -#include "kmmanager.h" -#include "cupsinfos.h" - -#include <tqfile.h> -#include <cups/cups.h> -#include <stdlib.h> -#include <kprocess.h> - -static void mapToCupsOptions(const TQMap<TQString,TQString>& opts, TQString& cmd); - -TQSize rangeToSize(const TQString& s) -{ - TQString range = s; - int p(-1); - int from, to; - - if ((p=range.find(',')) != -1) - range.truncate(p); - if ((p=range.find('-')) != -1) - { - from = range.left(p).toInt(); - to = range.right(range.length()-p-1).toInt(); - } - else if (!range.isEmpty()) - from = to = range.toInt(); - else - from = to = 0; - - return TQSize(from,to); -} -//****************************************************************************************************** - -KCupsPrinterImpl::KCupsPrinterImpl(TQObject *parent, const char *name, const TQStringList & /*args*/) -: KPrinterImpl(parent,name) -{ -} - -KCupsPrinterImpl::~KCupsPrinterImpl() -{ -} - -bool KCupsPrinterImpl::setupCommand(TQString& cmd, KPrinter *printer) -{ - // check printer object - if (!printer) return false; - - TQString hoststr = TQString::tqfromLatin1("%1:%2").arg(CupsInfos::self()->host()).arg(CupsInfos::self()->port()); - cmd = TQString::tqfromLatin1("cupsdoprint -P %1 -J %3 -H %2").arg(quote(printer->printerName())).arg(quote(hoststr)).arg(quote(printer->docName())); - if (!CupsInfos::self()->login().isEmpty()) - { - TQString userstr(CupsInfos::self()->login()); - //if (!CupsInfos::self()->password().isEmpty()) - // userstr += (":" + CupsInfos::self()->password()); - cmd.append(" -U ").append(quote(userstr)); - } - mapToCupsOptions(printer->options(),cmd); - return true; -} - -void KCupsPrinterImpl::preparePrinting(KPrinter *printer) -{ - // process orientation - TQString o = printer->option("orientation-requested"); - printer->setOption("kde-orientation",(o == "4" || o == "5" ? "Landscape" : "Portrait")); - // if it's a TQt application, then convert orientation as it will be handled by TQt directly - if (printer->applicationType() == KPrinter::Dialog) - printer->setOption("orientation-requested",(o == "5" || o == "6" ? "6" : "3")); - - // translate copies number - if (!printer->option("kde-copies").isEmpty()) printer->setOption("copies",printer->option("kde-copies")); - - // page ranges are handled by CUPS, so application should print all pages - if (printer->pageSelection() == KPrinter::SystemSide) - { // TQt => CUPS - // translations - if (!printer->option("kde-range").isEmpty()) - printer->setOption("page-ranges",printer->option("kde-range")); - if (printer->option("kde-pageorder") == "Reverse") - printer->setOption("OutputOrder",printer->option("kde-pageorder")); - o = printer->option("kde-pageset"); - if (!o.isEmpty() && o != "0") - printer->setOption("page-set",(o == "1" ? "odd" : "even")); - printer->setOption("multiple-document-handling",(printer->option("kde-collate") == "Collate" ? "separate-documents-collated-copies" : "separate-documents-uncollated-copies")); - } - else - { // No translation needed (but range => (from,to)) - TQString range = printer->option("kde-range"); - if (!range.isEmpty()) - { - TQSize s = rangeToSize(range); - printer->setOption("kde-from",TQString::number(s.width())); - printer->setOption("kde-to",TQString::number(s.height())); - } - } - - // needed for page size and margins - KPrinterImpl::preparePrinting(printer); -} - -void KCupsPrinterImpl::broadcastOption(const TQString& key, const TQString& value) -{ - KPrinterImpl::broadcastOption(key,value); - if (key == "kde-orientation") - KPrinterImpl::broadcastOption("orientation-requested",(value == "Landscape" ? "4" : "3")); - else if (key == "kde-pagesize") - { - TQString pagename = TQString::tqfromLatin1(pageSizeToPageName((KPrinter::PageSize)value.toInt())); - KPrinterImpl::broadcastOption("PageSize",pagename); - // simple hack for classes - KPrinterImpl::broadcastOption("media",pagename); - } -} - -//****************************************************************************************************** - -static void mapToCupsOptions(const TQMap<TQString,TQString>& opts, TQString& cmd) -{ - TQString optstr; - for (TQMap<TQString,TQString>::ConstIterator it=opts.begin(); it!=opts.end(); ++it) - { - // only encode those options that doesn't start with "kde-" or "app-". - if (!it.key().startsWith("kde-") && !it.key().startsWith("app-") && !it.key().startsWith("_kde")) - { - TQString key = it.key(); - if (key.startsWith("KDEPrint-")) - /* Those are keys added by the "Additional Tags" page. * - * Strip the prefix to build valid a CUPS option. */ - key = key.mid(9); - optstr.append(" ").append(key); - if (!it.data().isEmpty()) - optstr.append("=").append(it.data()); - } - } - if (!optstr.isEmpty()) - cmd.append(" -o ").append( KProcess::quote( optstr ) ); -} |