From 4f8165cc8ab39bc28613d326aa1e5e7ce1dd7010 Mon Sep 17 00:00:00 2001 From: Alejandro Wainzinger Date: Sun, 5 Jun 2011 17:57:33 -0700 Subject: [PATCH] Check if Adium is running before setting status. Be more efficient about forming the Applescript string. --- .../infosystem/infoplugins/adiumplugin.cpp | 26 +++++++++++++++---- .../infosystem/infoplugins/adiumplugin.h | 2 ++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/libtomahawk/infosystem/infoplugins/adiumplugin.cpp b/src/libtomahawk/infosystem/infoplugins/adiumplugin.cpp index 8d97f5107..b684b454e 100644 --- a/src/libtomahawk/infosystem/infoplugins/adiumplugin.cpp +++ b/src/libtomahawk/infosystem/infoplugins/adiumplugin.cpp @@ -26,13 +26,18 @@ #include "adiumplugin.h" #include "adium.h" +QString adium_beforeStatus; +QString adium_afterStatus; + static void setStatus(const QString &status) { - QString adiumStatus = "tell application \"Adium\"\n"; - adiumStatus.append("set the status message of every account to \""); - adiumStatus.append(status); - adiumStatus.append("\"\nend tell\n"); - const char* scriptstr = adiumStatus.toUtf8(); + // The command that updates the status + QString scriptqstr; + scriptqstr.append(adium_beforeStatus); + scriptqstr.append(status); + scriptqstr.append(adium_afterStatus); + + const char* scriptstr = scriptqstr.toUtf8(); script( scriptstr ); } @@ -42,6 +47,17 @@ AdiumPlugin::AdiumPlugin() : InfoPlugin() { qDebug() << Q_FUNC_INFO; + + adium_beforeStatus = "if appIsRunning(\"Adium\") then\n"; + adium_beforeStatus.append("tell application \"Adium\"\n"); + adium_beforeStatus.append("set the status message of every account to \""); + + adium_afterStatus.append("\"\nend tell\n"); + adium_afterStatus.append("end if\n"); + adium_afterStatus.append("on appIsRunning(appName)\n"); + adium_afterStatus.append("tell application \"System Events\" to (name of processes) contains appName\n"); + adium_afterStatus.append("end appIsRunning\n"); + m_supportedPushTypes << InfoNowPlaying << InfoNowPaused << InfoNowResumed << InfoNowStopped; m_active = TomahawkSettings::instance()->nowPlayingEnabled(); diff --git a/src/libtomahawk/infosystem/infoplugins/adiumplugin.h b/src/libtomahawk/infosystem/infoplugins/adiumplugin.h index 8660ce3d8..776f62585 100644 --- a/src/libtomahawk/infosystem/infoplugins/adiumplugin.h +++ b/src/libtomahawk/infosystem/infoplugins/adiumplugin.h @@ -54,6 +54,8 @@ public slots: private: bool m_active; + QString m_beforeStatus; + QString m_afterStatus; };