bool KMSpecialManager::loadDesktopFile(const QString& filename) { KSimpleConfig conf(filename); conf.setGroup("General"); int n = conf.readNumEntry("Number",0); for (int i=0;i<n;i++) { QString grpname = QString::fromLatin1("Printer %1").arg(i); if (!conf.hasGroup(grpname)) continue; conf.setGroup(grpname); KMPrinter *printer = new KMPrinter; printer->setName(conf.readEntry("Name")); printer->setPrinterName(printer->name()); printer->setDescription(conf.readEntry("Description")); printer->setLocation(conf.readEntry("Comment")); printer->setOption("kde-special-command",conf.readPathEntry("Command")); printer->setOption("kde-special-file",conf.readPathEntry("File")); printer->setOption("kde-special-extension",conf.readEntry("Extension")); printer->setOption("kde-special-mimetype",conf.readEntry("Mimetype")); printer->setOption("kde-special-require",conf.readEntry("Require")); printer->setPixmap(conf.readEntry("Icon","unknown")); printer->setType(KMPrinter::Special); if ( !KdeprintChecker::check( &conf ) || !KXmlCommandManager::self()->checkCommand( printer->option( "kde-special-command" ), KXmlCommandManager::None, KXmlCommandManager::None, 0 ) ) printer->addType(KMPrinter::Invalid); printer->setState(KMPrinter::Idle); printer->setAcceptJobs(true); m_mgr->addPrinter(printer); } return true; }
bool KRlprPrinterImpl::setupCommand(TQString& cmd, KPrinter *printer) { // retrieve the KMPrinter object, to get host and queue name KMPrinter *rpr = KMFactory::self()->manager()->findPrinter(printer->printerName()); if (!rpr) return false; QString host(rpr->option("host")), queue(rpr->option("queue")); if (!host.isEmpty() && !queue.isEmpty()) { QString exestr = TDEStandardDirs::findExe("rlpr"); if (exestr.isEmpty()) { printer->setErrorMessage(i18n("The <b>%1</b> executable could not be found in your path. Check your installation.").arg("rlpr")); return false; } cmd = TQString::fromLatin1("%1 -H %2 -P %3 -\\#%4").arg(exestr).arg(quote(host)).arg(quote(queue)).arg(printer->numCopies()); // proxy settings TDEConfig *conf = KMFactory::self()->printConfig(); conf->setGroup("RLPR"); QString host = conf->readEntry("ProxyHost",TQString::null), port = conf->readEntry("ProxyPort",TQString::null); if (!host.isEmpty()) { cmd.append(" -X ").append(quote(host)); if (!port.isEmpty()) cmd.append(" --port=").append(port); } return true; } else { printer->setErrorMessage(i18n("The printer is incompletely defined. Try to reinstall it.")); return false; } }