void KMThreadJob::createJob(int ID, const TQString& printer, const TQString& name, const TQString& owner, int size) { KMThreadJob mth(0); KMJob *job = new KMJob(); job->setId(ID); job->setPrinter(printer); job->setName(name); job->setOwner(owner); job->setSize(size); job->setType(KMJob::Threaded); mth.createJob(job); }
bool KMThreadJob::loadJobs() { TQFile f(jobFile()); if (f.exists() && f.open(IO_ReadOnly)) { TQTextStream t(&f); TQString line; m_jobs.clear(); while (!t.eof()) { line = t.readLine().stripWhiteSpace(); if (line.isEmpty()) continue; TQStringList ll = TQStringList::split(CHARSEP,line,true); if (ll.count() == 5) { KMJob *job = new KMJob(); job->setId(ll[0].toInt()); job->setName(ll[1]); job->setPrinter(ll[2]); job->setOwner(ll[3]); job->setSize(ll[4].toInt()); job->setState(KMJob::Printing); job->setType(KMJob::Threaded); job->setUri("proc:/"+ll[0]); if (job->id() > 0 && checkJob(job->id())) m_jobs.insert(job->id(),job); else delete job; } } return true; } return false; }
void KMCupsJobManager::parseListAnswer(IppRequest& req, KMPrinter *pr) { ipp_attribute_t *attr = req.first(); KMJob *job = new KMJob(); QString uri; while (attr) { QString name(attr->name); if (name == "job-id") job->setId(attr->values[0].integer); else if (name == "job-uri") job->setUri(QString::fromLocal8Bit(attr->values[0].string.text)); else if (name == "job-name") job->setName(QString::fromLocal8Bit(attr->values[0].string.text)); else if (name == "job-state") { switch (attr->values[0].integer) { case IPP_JOB_PENDING: job->setState(KMJob::Queued); break; case IPP_JOB_HELD: job->setState(KMJob::Held); break; case IPP_JOB_PROCESSING: job->setState(KMJob::Printing); break; case IPP_JOB_STOPPED: job->setState(KMJob::Error); break; case IPP_JOB_CANCELLED: job->setState(KMJob::Cancelled); break; case IPP_JOB_ABORTED: job->setState(KMJob::Aborted); break; case IPP_JOB_COMPLETED: job->setState(KMJob::Completed); break; default: job->setState(KMJob::Unknown); break; } } else if (name == "job-k-octets") job->setSize(attr->values[0].integer); else if (name == "job-originating-user-name") job->setOwner(QString::fromLocal8Bit(attr->values[0].string.text)); else if (name == "job-k-octets-completed") job->setProcessedSize(attr->values[0].integer); else if (name == "job-media-sheets") job->setPages(attr->values[0].integer); else if (name == "job-media-sheets-completed") job->setProcessedPages(attr->values[0].integer); else if (name == "job-printer-uri" && !pr->isRemote()) { QString str(attr->values[0].string.text); int p = str.findRev('/'); if (p != -1) job->setPrinter(str.mid(p+1)); } else if (name == "job-priority") { job->setAttribute(0, QString::fromLatin1("%1").arg(attr->values[0].integer, 3)); } else if (name == "job-billing") { job->setAttributeCount(2); job->setAttribute(1, QString::fromLocal8Bit(attr->values[0].string.text)); } if (name.isEmpty() || attr == req.last()) { if (job->printer().isEmpty()) job->setPrinter(pr->printerName()); job->setRemote(pr->isRemote()); addJob(job); // don't use job after this call !!! job = new KMJob(); } attr = attr->next; } delete job; }