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; }
void PrinterModel::updateDest(QStandardItem *destItem, const KCupsPrinter &printer) { // store if the printer is the network default bool isDefault = printer.isDefault(); if (isDefault != destItem->data(DestIsDefault).toBool()) { destItem->setData(isDefault, DestIsDefault); } // store the printer state QString status = destStatus(printer.state(), printer.stateMsg()); if (status != destItem->data(DestStatus)) { destItem->setData(status, DestStatus); } // store if the printer is shared bool shared = printer.isShared(); if (shared != destItem->data(DestIsShared)) { destItem->setData(shared, DestIsShared); } // store if the printer is accepting jobs bool accepting = printer.isAcceptingJobs(); if (accepting != destItem->data(DestIsAcceptingJobs)) { destItem->setData(accepting, DestIsAcceptingJobs); } // store if the printer is a class // the printer-type param is a flag bool isClass = printer.isClass(); if (isClass != destItem->data(DestIsClass)) { destItem->setData(isClass, DestIsClass); } // store if the printer type // the printer-type param is a flag uint printerType = printer.type(); if (printerType != destItem->data(DestType)) { destItem->setData(printerType, DestType); } // store the printer location QString location = printer.location(); if (location != destItem->data(DestLocation).toString()) { destItem->setData(location, DestLocation); } if (destItem->data(DestName).toString() != destItem->text()){ if (destItem->text() != destItem->data(DestName).toString()){ destItem->setText(destItem->data(DestName).toString()); } } // store the printer description QString description = printer.info(); if (description != destItem->data(DestDescription).toString()){ destItem->setData(description, DestDescription); } // store the printer kind QString kind = printer.makeAndModel(); if (kind != destItem->data(DestKind)) { destItem->setData(kind, DestKind); } // store the printer commands QStringList commands = printer.commands(); if (commands != destItem->data(DestCommands)) { destItem->setData(commands, DestCommands); } int markerChangeTime = printer.markerChangeTime(); if (markerChangeTime != destItem->data(DestMarkerChangeTime)) { destItem->setData(printer.markerChangeTime(), DestMarkerChangeTime); QVariantHash markers; markers["marker-change-time"] = printer.markerChangeTime(); markers["marker-colors"] = printer.argument("marker-colors"); markers["marker-levels"] = printer.argument("marker-levels"); markers["marker-names"] = printer.argument("marker-names"); markers["marker-types"] = printer.argument("marker-types"); destItem->setData(markers, DestMarkers); } }