void PrinterModel::insertDest(int pos, const KCupsPrinter &printer) { // Create the printer item QStandardItem *stdItem = new QStandardItem(printer.name()); stdItem->setData(printer.name(), DestName); stdItem->setIcon(printer.icon()); // update the item updateDest(stdItem, printer); // insert the printer Item insertRow(pos, stdItem); }
void ConfigurePrinterInterface::ConfigurePrinter(const QString &destName) { if (!m_uis.contains(destName)) { // Reserve this since the CUPS call might take a long time m_uis[destName] = 0; QStringList att; att << KCUPS_PRINTER_NAME; att << KCUPS_PRINTER_TYPE; // Get destinations with these attributes KCupsRequest *request = new KCupsRequest; request->getPrinters(att); request->waitTillFinished(); bool found = false; KCupsPrinter printer; KCupsPrinters printers = request->printers(); for (int i = 0; i < printers.size(); i++) { if (printers.at(i).name() == destName) { printer = printers.at(i); found = true; break; } } request->deleteLater(); if (found) { ConfigureDialog *ui = new ConfigureDialog(printer.name(), printer.isClass()); connect(m_updateUi, SIGNAL(timeout()), ui, SLOT(update())); connect(ui, SIGNAL(finished()), this, SLOT(RemovePrinter())); ui->show(); m_uis[printer.name()] = ui; } else { // Remove the reservation m_uis.remove(destName); // if no destination was found and we aren't showing // a queue quit the app if (m_uis.isEmpty()) { emit quit(); } return; } } // Check it it's not reserved if (m_uis.value(destName)) { KWindowSystem::forceActiveWindow(m_uis.value(destName)->winId()); } }
void PrintersEngine::updatePrinterSource(const KCupsPrinter &printer) { QString source = printer.name(); Data sourceData = query(source); bool changed = false; if (sourceData[QLatin1String("printerName")] != printer.name()) { sourceData[QLatin1String("printerName")] = printer.name(); changed = true; } if (sourceData[QLatin1String("info")] != printer.info()) { sourceData[QLatin1String("info")] = printer.info(); changed = true; } QString state; switch (printer.state()) { case KCupsPrinter::Idle: state = QLatin1String("idle"); break; case KCupsPrinter::Printing: state = QLatin1String("printing"); break; case KCupsPrinter::Stoped: state = QLatin1String("stopped"); break; default: state = QLatin1String("unknown"); } if (sourceData[QLatin1String("stateEnum")] != state) { sourceData[QLatin1String("stateEnum")] = state; changed = true; } if (sourceData[QLatin1String("stateMessage")] != printer.stateMsg()) { sourceData[QLatin1String("stateMessage")] = printer.stateMsg(); changed = true; } if (sourceData[QLatin1String("iconName")] != printer.iconName()) { sourceData[QLatin1String("iconName")] = printer.iconName(); changed = true; } if (changed) { // update only if data changes to avoid uneeded updates on the views setData(source, sourceData); } kDebug() << source << changed; }