bool KMCupsJobManager::listJobs(const QString& prname, KMJobManager::JobType type, int limit) { IppRequest req; QStringList keys; CupsInfos *infos = CupsInfos::self(); // wanted attributes keys.append("job-id"); keys.append("job-uri"); keys.append("job-name"); keys.append("job-state"); keys.append("job-printer-uri"); keys.append("job-k-octets"); keys.append("job-originating-user-name"); keys.append("job-k-octets-completed"); keys.append("job-media-sheets"); keys.append("job-media-sheets-completed"); keys.append("job-priority"); keys.append("job-billing"); req.setOperation(IPP_GET_JOBS); // add printer-uri KMPrinter *mp = KMManager::self()->findPrinter(prname); if (!mp) return false; if (!mp->uri().isEmpty()) { req.addURI(IPP_TAG_OPERATION, "printer-uri", mp->uri().prettyURL()); /* req.setHost(mp->uri().host()); req.setPort(mp->uri().port()); */ } else req.addURI(IPP_TAG_OPERATION, "printer-uri", QString("ipp://%1/%2/%3").arg(infos->hostaddr(), (mp&&mp->isClass())?"classes":"printers", prname)); // other attributes req.addKeyword(IPP_TAG_OPERATION, "requested-attributes", keys); if (type == KMJobManager::CompletedJobs) req.addKeyword(IPP_TAG_OPERATION,"which-jobs",QString::fromLatin1("completed")); if (limit > 0) req.addInteger(IPP_TAG_OPERATION,"limit",limit); // send request if (req.doRequest("/")) parseListAnswer(req, mp); else return false; return true; }
void KMWIppSelect::initPrinter(KMPrinter *p) { // storage variables QString host, login, password; int port; // save config host = CupsInfos::self()->host(); login = CupsInfos::self()->login(); password = CupsInfos::self()->password(); port = CupsInfos::self()->port(); m_list->clear(); // retrieve printer list KURL url = p->device(); CupsInfos::self()->setHost(url.host()); CupsInfos::self()->setLogin(url.user()); CupsInfos::self()->setPassword(url.pass()); CupsInfos::self()->setPort(url.port()); IppRequest req; QString uri; req.setOperation(CUPS_GET_PRINTERS); uri = QString::fromLatin1("ipp://%1/printers/").arg(CupsInfos::self()->hostaddr()); req.addURI(IPP_TAG_OPERATION,"printer-uri",uri); req.addKeyword(IPP_TAG_OPERATION,"requested-attributes",QString::fromLatin1("printer-name")); if (req.doRequest("/printers/")) { ipp_attribute_t *attr = req.first(); while (attr) { if (attr->name && strcmp(attr->name,"printer-name") == 0) m_list->insertItem(SmallIcon("kdeprint_printer"),QString::fromLatin1(attr->values[0].string.text)); attr = attr->next; } m_list->sort(); } // restore config CupsInfos::self()->setHost(host); CupsInfos::self()->setLogin(login); CupsInfos::self()->setPassword(password); CupsInfos::self()->setPort(port); }