diff --git a/arch/PKGBUILD-git b/arch/PKGBUILD-git index fdb5ac1..3567242 100644 --- a/arch/PKGBUILD-git +++ b/arch/PKGBUILD-git @@ -17,7 +17,7 @@ optdepends=("amarok: for music player monitor" "mpd: for music player monitor" "nvidia-utils: for GPU monitor" "qmmp: for music player monitor") -makedepends=('cmake' 'extra-cmake-modules') +makedepends=('cmake' 'extra-cmake-modules' 'git') source=(${_pkgname}::git+https://github.com/arcan1s/awesome-widgets/) install=${pkgname}.install md5sums=('SKIP') diff --git a/sources/3rdparty/pdebug b/sources/3rdparty/pdebug index 294a590..75e4a0d 160000 --- a/sources/3rdparty/pdebug +++ b/sources/3rdparty/pdebug @@ -1 +1 @@ -Subproject commit 294a590bb966fd79eb2e93a7b02377ca57731cd5 +Subproject commit 75e4a0df83478802bba53345486b42c56713fe09 diff --git a/sources/extsysmon/CMakeLists.txt b/sources/extsysmon/CMakeLists.txt index 109b27b..31a2b2b 100644 --- a/sources/extsysmon/CMakeLists.txt +++ b/sources/extsysmon/CMakeLists.txt @@ -16,7 +16,8 @@ include_directories( file(GLOB SUBPROJECT_DESKTOP_IN *.desktop) file(RELATIVE_PATH SUBPROJECT_DESKTOP ${CMAKE_SOURCE_DIR} ${SUBPROJECT_DESKTOP_IN}) -file(GLOB_RECURSE SUBPROJECT_SOURCE *.cpp ${PROJECT_TRDPARTY_DIR}/task/*.cpp) +file(GLOB_RECURSE SUBPROJECT_SOURCE *.cpp ${PROJECT_TRDPARTY_DIR}/task/*.cpp + ${PROJECT_TRDPARTY_DIR}/pdebug/*.cpp) set(TASK_HEADER ${PROJECT_TRDPARTY_DIR}/task/task.h) file(GLOB SUBPROJECT_CONF *.conf) diff --git a/sources/extsysmon/extsysmon.cpp b/sources/extsysmon/extsysmon.cpp index 84579c7..7059d97 100644 --- a/sources/extsysmon/extsysmon.cpp +++ b/sources/extsysmon/extsysmon.cpp @@ -35,6 +35,7 @@ #include #include +#include #include #include "extquotes.h" @@ -48,6 +49,7 @@ ExtendedSysMon::ExtendedSysMon(QObject* parent, const QVariantList &args) : Plasma::DataEngine(parent, args) { Q_UNUSED(args) + qInstallMessageHandler(debugString); // debug QProcessEnvironment environment = QProcessEnvironment::systemEnvironment(); @@ -82,7 +84,7 @@ QStringList ExtendedSysMon::getAllHdd() const QStringList allDevices = QDir(QString("/dev")).entryList(QDir::System, QDir::Name); QStringList devices = allDevices.filter(QRegExp(QString("^[hms]d[a-z]$"))); for (int i=0; icall(QDBus::BlockWithGui, QString("ListNames")); if (listServices.arguments().isEmpty()) return QString(); - QStringList arguments = listServices.arguments()[0].toStringList(); + QStringList arguments = listServices.arguments().at(0).toStringList(); for (int i=0; i rawConfig; + QHash rawConfig; settings.beginGroup(QString("Configuration")); rawConfig[QString("ACPIPATH")] = settings.value(QString("ACPIPATH"), QString("/sys/class/power_supply/")).toString(); @@ -177,7 +179,7 @@ void ExtendedSysMon::readConfiguration() } -QMap ExtendedSysMon::updateConfiguration(QMap rawConfig) const +QHash ExtendedSysMon::updateConfiguration(QHash rawConfig) const { if (debug) qDebug() << PDEBUG; @@ -200,9 +202,9 @@ QMap ExtendedSysMon::updateConfiguration(QMap -1)) - devices.append(deviceList[i]); + if ((QFile::exists(deviceList.at(i))) && + (diskRegexp.indexIn(deviceList.at(i)) > -1)) + devices.append(deviceList.at(i)); if (devices.isEmpty()) rawConfig[QString("HDDDEV")] = allHddDevices.join(QChar(',')); else @@ -215,17 +217,17 @@ QMap ExtendedSysMon::updateConfiguration(QMaptoUnicode(process.output).trimmed(); if (configuration[QString("GPUDEV")] == QString("nvidia")) for (int i=0; i"))) { + if (qoutput.split(QChar('\n'), QString::SkipEmptyParts).at(i).contains(QString(""))) { QString load = qoutput.split(QChar('\n'), QString::SkipEmptyParts)[i] .remove(QString("")) .remove(QString("")) @@ -313,8 +314,8 @@ float ExtendedSysMon::getGpu(const QString device) const } else if (configuration[QString("GPUDEV")] == QString("ati")) for (int i=0; itoUnicode(process.output); if (configuration[QString("GPUDEV")] == QString("nvidia")) for (int i=0; i"))) { + if (qoutput.split(QChar('\n'), QString::SkipEmptyParts).at(i).contains(QString(""))) { QString temp = qoutput.split(QChar('\n'), QString::SkipEmptyParts)[i] .remove(QString("")) .remove(QString("C")); @@ -355,9 +356,9 @@ float ExtendedSysMon::getGpuTemp(const QString device) const } else if (configuration[QString("GPUDEV")] == QString("ati")) for (int i=0; itoUnicode(process.output).trimmed(); if (smartctl) { for (int i=0; i= 3) { - QString temp = qoutput.split(QChar(':'), QString::SkipEmptyParts)[2]; + QString temp = qoutput.split(QChar(':'), QString::SkipEmptyParts).at(2); temp.remove(QChar(0260)).remove(QChar('C')); value = temp.toFloat(); } @@ -407,10 +408,10 @@ QString ExtendedSysMon::getNetworkDevice() const QString device = QString("lo"); QList rawInterfaceList = QNetworkInterface::allInterfaces(); for (int i=0; itoUnicode(process.output).trimmed(); QString qstr = QString(""); for (int i=0; i 1) { - if (qstr.split(QString(": "), QString::SkipEmptyParts)[0] == QString("Album")) + if (qstr.split(QString(": "), QString::SkipEmptyParts).at(0) == QString("Album")) info[QString("album")] = qstr.split(QString(": "), QString::SkipEmptyParts)[1].trimmed(); - else if (qstr.split(QString(": "), QString::SkipEmptyParts)[0] == QString("Artist")) + else if (qstr.split(QString(": "), QString::SkipEmptyParts).at(0) == QString("Artist")) info[QString("artist")] = qstr.split(QString(": "), QString::SkipEmptyParts)[1].trimmed(); - else if (qstr.split(QString(": "), QString::SkipEmptyParts)[0] == QString("time")) { + else if (qstr.split(QString(": "), QString::SkipEmptyParts).at(0) == QString("time")) { info[QString("duration")] = qstr.split(QString(": "), QString::SkipEmptyParts)[1].trimmed().split(QString(":"))[0]; info[QString("progress")] = qstr.split(QString(": "), QString::SkipEmptyParts)[1].trimmed().split(QString(":"))[1]; - } else if (qstr.split(QString(": "), QString::SkipEmptyParts)[0] == QString("Title")) + } else if (qstr.split(QString(": "), QString::SkipEmptyParts).at(0) == QString("Title")) info[QString("title")] = qstr.split(QString(": "), QString::SkipEmptyParts)[1].trimmed(); } } @@ -488,57 +489,60 @@ QVariantMap ExtendedSysMon::getPlayerMpdInfo(const QString mpdAddress, const QSt } -QVariantMap ExtendedSysMon::getPlayerMprisInfo(const QString mpris) const +QVariantHash ExtendedSysMon::getPlayerMprisInfo(const QString mpris) const { if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << "MPRIS" << mpris; - QVariantMap info; + QVariantHash info; info[QString("album")] = QString("unknown"); info[QString("artist")] = QString("unknown"); info[QString("duration")] = 0; info[QString("progress")] = 0; info[QString("title")] = QString("unknown"); - // init - QDBusArgument arg; QDBusConnection bus = QDBusConnection::sessionBus(); - QDBusMessage response, request; - QVariantMap map; - - // general information - request = QDBusMessage::createMethodCall(QString("org.mpris.MediaPlayer2.%1").arg(mpris), - QString("/Player"), - QString(""), - QString("GetMetadata")); - response = bus.call(request, QDBus::BlockWithGui); - if (response.arguments().size() == 0) { + // comes from the following request: + // qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get org.mpris.MediaPlayer2.Player Metadata + // or the same but using dbus-send: + // dbus-send --print-reply --session --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'Metadata' + QVariantList args = QVariantList() << QString("org.mpris.MediaPlayer2.Player") << QString("Metadata"); + QDBusMessage request = QDBusMessage::createMethodCall(QString("org.mpris.MediaPlayer2.%1").arg(mpris), + QString("/org/mpris/MediaPlayer2"), + QString(""), + QString("Get")); + request.setArguments(args); + QDBusMessage response = bus.call(request, QDBus::BlockWithGui); + if ((response.type() != QDBusMessage::ReplyMessage) || (response.arguments().isEmpty())) { if (debug) qDebug() << PDEBUG << ":" << "Error message" << response.errorMessage(); } else { - arg = response.arguments()[0].value(); - arg >> map; - info[QString("album")] = map[QString("album")]; - info[QString("artist")] = map[QString("artist")]; - info[QString("duration")] = map[QString("time")]; - info[QString("title")] = map[QString("title")]; + // another portion of dirty magic + QVariantHash map = qdbus_cast(response.arguments().at(0) + .value().variant() + .value()); + info[QString("album")] = map.value(QString("xesam:album"), QString("unknown")); + // artist is array + info[QString("artist")] = map.value(QString("xesam:artist"), QString("unknown")).toString(); + info[QString("duration")] = map.value(QString("mpris:length"), 0).toInt() / (1000 * 1000); + info[QString("title")] = map.value(QString("xesam:title"), QString("unknown")); } // position - request = QDBusMessage::createMethodCall(QString("org.mpris.MediaPlayer2.%1").arg(mpris), - QString("/Player"), - QString(""), - QString("PositionGet")); + args[1] = QString("Position"); + request.setArguments(args); response = bus.call(request, QDBus::BlockWithGui); - if (response.arguments().size() == 0) { + if ((response.type() != QDBusMessage::ReplyMessage) || (response.arguments().isEmpty())) { if (debug) qDebug() << PDEBUG << ":" << "Error message" << response.errorMessage(); } else - info[QString("progress")] = response.arguments()[0].toInt() / 1000; + // this cast is simpler than the previous one ;) + info[QString("progress")] = response.arguments().at(0).value() + .variant().toLongLong() / (1000 * 1000); return info; } -QVariantMap ExtendedSysMon::getPsStats() const +QVariantHash ExtendedSysMon::getPsStats() const { if (debug) qDebug() << PDEBUG; @@ -548,16 +552,16 @@ QVariantMap ExtendedSysMon::getPsStats() const QStringList running; for (int i=0; iitems().count(); i++) - setData(source, externalScripts->items()[i]->tag(QString("custom")), - externalScripts->items()[i]->run()[QString("value")]); + setData(source, externalScripts->items().at(i)->tag(QString("custom")), + externalScripts->items().at(i)->run()[QString("value")]); } else if (source == QString("desktop")) { - QVariantMap desktop = getCurrentDesktop(); + QVariantHash desktop = getCurrentDesktop(); for (int i=0; iitems().count(); i++) - setData(source, externalUpgrade->items()[i]->tag(QString("pkgcount")), - externalUpgrade->items()[i]->run()[QString("value")]); + setData(source, externalUpgrade->items().at(i)->tag(QString("pkgcount")), + externalUpgrade->items().at(i)->run()[QString("value")]); } else if (source == QString("player")) { - QVariantMap player = getPlayerInfo(configuration[QString("PLAYER")], - configuration[QString("MPDADDRESS")], - configuration[QString("MPDPORT")], - configuration[QString("MPRIS")]); + QVariantHash player = getPlayerInfo(configuration[QString("PLAYER")], + configuration[QString("MPDADDRESS")], + configuration[QString("MPDPORT")], + configuration[QString("MPRIS")]); for (int i=0; iitems().count(); i++) { - QVariantMap data = externalQuotes->items()[i]->run(); + QVariantMap data = externalQuotes->items().at(i)->run(); for (int j=0; jitems()[i]->tag(data.keys()[j]), + setData(source, externalQuotes->items().at(i)->tag(data.keys()[j]), data[data.keys()[j]]); } } else if (source == QString("update")) { setData(source, QString("value"), true); } else if (source == QString("weather")) { for (int i=0; iitems().count(); i++) { - QVariantMap data = externalWeather->items()[i]->run(); + QVariantMap data = externalWeather->items().at(i)->run(); for (int j=0; jitems()[i]->tag(data.keys()[j]), + setData(source, externalWeather->items().at(i)->tag(data.keys()[j]), data[data.keys()[j]]); } } diff --git a/sources/extsysmon/extsysmon.h b/sources/extsysmon/extsysmon.h index fe40791..5059f9e 100644 --- a/sources/extsysmon/extsysmon.h +++ b/sources/extsysmon/extsysmon.h @@ -36,20 +36,20 @@ public: explicit ExtendedSysMon(QObject *parent, const QVariantList &args); ~ExtendedSysMon(); // update functions - QVariantMap getBattery(const QString acpiPath) const; - QVariantMap getCurrentDesktop() const; + QVariantHash getBattery(const QString acpiPath) const; + QVariantHash getCurrentDesktop() const; float getGpu(const QString device) const; float getGpuTemp(const QString device) const; float getHddTemp(const QString cmd, const QString device) const; QString getNetworkDevice() const; - QVariantMap getPlayerInfo(const QString playerName, - const QString mpdAddress = QString(), - const QString mpdPort = QString(), - const QString mpris = QString()) const; - QVariantMap getPlayerMpdInfo(const QString mpdAddress = QString(), - const QString mpdPort = QString()) const; - QVariantMap getPlayerMprisInfo(const QString mpris = QString()) const; - QVariantMap getPsStats() const; + QVariantHash getPlayerInfo(const QString playerName, + const QString mpdAddress = QString(), + const QString mpdPort = QString(), + const QString mpris = QString()) const; + QVariantHash getPlayerMpdInfo(const QString mpdAddress = QString(), + const QString mpdPort = QString()) const; + QVariantHash getPlayerMprisInfo(const QString mpris = QString()) const; + QVariantHash getPsStats() const; protected: bool sourceRequestEvent(const QString &source); @@ -58,7 +58,7 @@ protected: private: // configuration - QMap configuration; + QHash configuration; ExtItemAggregator *externalQuotes; ExtItemAggregator *externalScripts; ExtItemAggregator *externalUpgrade; @@ -69,7 +69,7 @@ private: QString getAutoGpu() const; QString getAutoMpris() const; void readConfiguration(); - QMap updateConfiguration(QMap rawConfig) const; + QHash updateConfiguration(QHash rawConfig) const; };