From 05f61cfd645b8fc482e1c005a4a2a0f3bfd506db Mon Sep 17 00:00:00 2001 From: Thiago Rocha Date: Tue, 30 Sep 2014 10:19:15 -0300 Subject: [PATCH] Coleta impressoras cadastradas no CUPS do Linux. --- src/cacic_hardware.cpp | 32 ++++++++++++++++++++++++++++++++ src/cacic_hardware.h | 1 + 2 files changed, 33 insertions(+), 0 deletions(-) diff --git a/src/cacic_hardware.cpp b/src/cacic_hardware.cpp index 47bb909..0f1fcab 100644 --- a/src/cacic_hardware.cpp +++ b/src/cacic_hardware.cpp @@ -10,6 +10,10 @@ void cacic_hardware::iniciaColeta() #elif defined(Q_OS_LINUX) OperatingSystem operatingSystem; + + // Como criaremos pacotes agora, todas essas verificações podiam só + // ser incluídas como dependências. + // se o shell retorna erro ao tentar utilizar o lshw ou o dmidecode, instala o mesmo if( console("lshw").contains("/bin/sh:") ){ qDebug() << "lshw nao instalado."; if(operatingSystem.getIdOs() == OperatingSystem::LINUX_ARCH) @@ -288,6 +292,7 @@ QJsonObject cacic_hardware::coletaLinux() coletaLinuxBios(hardware); coletaLinuxMotherboard(hardware); coletaLinuxIsNotebook(hardware); + coletaLinuxPrinters(hardware); return hardware; } @@ -435,6 +440,33 @@ void cacic_hardware::coletaLinuxIsNotebook(QJsonObject &hardware) } +void cacic_hardware::coletaLinuxPrinters(QJsonObject &hardware) +{ + QStringList consoleOutput; + + if( console("lpstat").contains("/bin/sh:") ) { // Cups não instalado + return; + } else { + + consoleOutput = console("lpstat -a").split("\n"); + consoleOutput.removeLast(); // remover o último elemento que é somente vazio + + if( consoleOutput[0].contains("No destination") ) + return; + + QJsonArray printersList; + foreach(QString line, consoleOutput ) { + + if ( line.split(" ")[1] == QString("accepting") ) { + QString printerName = line.split(" ")[0]; + printersList.append(QJsonValue::fromVariant(printerName)); + } + } + hardware["printers"] = printersList; + } + +} + #endif QJsonObject cacic_hardware::toJsonObject() { return coletaHardware; diff --git a/src/cacic_hardware.h b/src/cacic_hardware.h index 8943d78..3c7dba1 100644 --- a/src/cacic_hardware.h +++ b/src/cacic_hardware.h @@ -34,6 +34,7 @@ private: void coletaLinuxBios(QJsonObject &hardware); void coletaLinuxMotherboard(QJsonObject &hardware); void coletaLinuxIsNotebook(QJsonObject &hardware); + void coletaLinuxPrinters(QJsonObject &hardware); #endif CCacic oCacic; -- libgit2 0.21.2