From kde-commits Mon Nov 01 10:53:48 2010 From: =?utf-8?q?Ivan=20=C4=8Cuki=C4=87?= Date: Mon, 01 Nov 2010 10:53:48 +0000 To: kde-commits Subject: KDE/kdebase/workspace Message-Id: <20101101105348.BA44EAC89B () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=128860888402041 SVN commit 1191877 by ivan: - Added the api for getting the service status - Propper handling of icon and name changes for the act manager M +13 -0 libs/kworkspace/kactivityconsumer.cpp M +14 -0 libs/kworkspace/kactivityconsumer.h M +16 -1 libs/kworkspace/kactivityinfo.cpp M +5 -0 libs/kworkspace/kactivityinfo.h M +6 -1 libs/kworkspace/kactivitymanager_p.cpp M +2 -0 libs/kworkspace/kactivitymanager_p.h M +9 -2 plasma/desktop/shell/activity.cpp M +1 -0 plasma/desktop/shell/activity.h --- trunk/KDE/kdebase/workspace/libs/kworkspace/kactivityconsumer.cpp #1191876:1191877 @@ -106,3 +106,16 @@ } } +KActivityConsumer::ServiceStatus KActivityConsumer::serviceStatus() +{ + if (!KActivityManager::isActivityServiceRunning()) { + return NotRunning; + } + + if (!KActivityManager::self()->IsBackstoreAvailable()) { + return BareFunctionality; + } + + return FullFunctionality; +} + --- trunk/KDE/kdebase/workspace/libs/kworkspace/kactivityconsumer.h #1191876:1191877 @@ -69,6 +69,15 @@ Closed }; + /** + * Different states of the activities service + */ + enum ServiceStatus { + NotRunning, ///< Service is not running + BareFunctionality, ///< Service is running without nepomuk backend + FullFunctionality, ///< Service is running, and nepomuk is available + }; + explicit KActivityConsumer(QObject * parent = 0); ~KActivityConsumer(); @@ -93,6 +102,11 @@ */ QStringList activitiesForResource(const KUrl & uri); + /** + * @returns status of the activities service + */ + static ServiceStatus serviceStatus(); + Q_SIGNALS: /** * This signal is emitted when the global --- trunk/KDE/kdebase/workspace/libs/kworkspace/kactivityinfo.cpp #1191876:1191877 @@ -167,7 +167,7 @@ #define KACTIVITYINFO_DBUS_CAST_RETURN(REPLY_TYPE, CAST_TYPE, METHOD) \ QDBusReply < REPLY_TYPE > dbusReply = METHOD; \ if (dbusReply.isValid()) { \ - return CAST_TYPE(dbusReply.value()); \ + return (CAST_TYPE)(dbusReply.value()); \ } else { \ return CAST_TYPE(); \ } @@ -206,6 +206,17 @@ QString, QString, KActivityManager::self()->ActivityIcon(d->id)); } +KActivityInfo::State KActivityInfo::state() const +{ + QDBusReply < int > dbusReply = KActivityManager::self()->ActivityState(d->id); + + if (dbusReply.isValid()) { + return (State)(dbusReply.value()); + } else { + return Invalid; + } +} + QString KActivityInfo::name(const QString & id) { KACTIVITYINFO_DBUS_CAST_RETURN( @@ -218,6 +229,10 @@ { Availability result = Nothing; + if (!KActivityManager::isActivityServiceRunning()) { + return result; + } + if (KActivityManager::self()->ListActivities().value().contains(d->id)) { result = BasicInfo; --- trunk/KDE/kdebase/workspace/libs/kworkspace/kactivityinfo.h #1191876:1191877 @@ -167,6 +167,11 @@ QString icon() const; /** + * @returns the state of the activity + */ + State state() const; + + /** * This function is provided for convenience. * @returns the name of the specified activity * @param id id of the activity --- trunk/KDE/kdebase/workspace/libs/kworkspace/kactivitymanager_p.cpp #1191876:1191877 @@ -42,7 +42,7 @@ { if (!s_instance) { // check if the activity manager is already running - if (!QDBusConnection::sessionBus().interface()->isServiceRegistered(ACTIVITY_MANAGER_DBUS_PATH)) { + if (!isActivityServiceRunning()) { // not running, trying to launch it QString error; @@ -66,3 +66,8 @@ return s_instance; } +bool KActivityManager::isActivityServiceRunning() +{ + return QDBusConnection::sessionBus().interface()->isServiceRegistered(ACTIVITY_MANAGER_DBUS_PATH); +} + --- trunk/KDE/kdebase/workspace/libs/kworkspace/kactivitymanager_p.h #1191876:1191877 @@ -26,6 +26,8 @@ public: static KActivityManager * self(); + static bool isActivityServiceRunning(); + private: KActivityManager(); --- trunk/KDE/kdebase/workspace/plasma/desktop/shell/activity.cpp #1191876:1191877 @@ -47,13 +47,14 @@ m_id(id), m_info(new KActivityInfo(id, this)) { - // connect(m_info, SIGNAL(changed()), this, SLOT(setName(QString))); + connect(m_info, SIGNAL(changed()), this, SLOT(activityChanged())); if (m_info) { m_name = m_info->name(); + m_icon = m_info->icon(); } else { m_name = m_id; - kDebug() << "nepomuk is probably broken :("; + m_icon = QString(); } m_corona = qobject_cast(PlasmaApp::self()->corona()); @@ -214,6 +215,12 @@ void Activity::setIcon(const QString &icon) { + if (m_icon == icon) { + return; + } + + m_icon = icon; + KActivityController().setActivityIcon(m_id, icon); emit changed(); } --- trunk/KDE/kdebase/workspace/plasma/desktop/shell/activity.h #1191876:1191877 @@ -136,6 +136,7 @@ QString m_id; QString m_name; + QString m_icon; QString m_plugin; QHash, Plasma::Containment*> m_containments; KActivityInfo *m_info;