[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/workspace/plasma/generic
From:       Chani Armitage <chanika () gmail ! com>
Date:       2010-11-01 17:04:03
Message-ID: 20101101170403.620D7AC89B () svn ! kde ! org
[Download RAW message or body]

SVN commit 1191995 by chani:

Activities DataEngine

also comes with an update for the activitybar plasmoid.

 M  +31 -66    applets/activitybar/activitybar.cpp  
 M  +5 -7      applets/activitybar/activitybar.h  
 M  +1 -0      dataengines/CMakeLists.txt  
 A             dataengines/activities (directory)  
 A             dataengines/activities/CMakeLists.txt  
 A             dataengines/activities/activities.operations  
 A             dataengines/activities/activityengine.cpp   [License: LGPL (v2+)]
 A             dataengines/activities/activityengine.h   [License: LGPL (v2+)]
 A             dataengines/activities/activityjob.cpp   [License: LGPL (v2)]
 A             dataengines/activities/activityjob.h   [License: LGPL (v2)]
 A             dataengines/activities/activityservice.cpp   [License: LGPL (v2+)]
 A             dataengines/activities/activityservice.h   [License: LGPL (v2+)]
 A             dataengines/activities/plasma-engine-activities.desktop  


--- trunk/KDE/kdebase/workspace/plasma/generic/applets/activitybar/activitybar.cpp \
#1191994:1191995 @@ -1,5 +1,6 @@
 /***************************************************************************
  *   Copyright (C) 2008 by Marco Martin <notmart@gmail.com>                *
+ *   Copyright (C) 2010 by Chani Armitage <chanika@gmail.com>              *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -30,14 +31,11 @@
 #include <Plasma/Context>
 #include <Plasma/Containment>
 #include <Plasma/TabBar>
+#include <Plasma/ServiceJob>
 
-#include <kactivitycontroller.h>
-#include <kactivityinfo.h>
-
-
 ActivityBar::ActivityBar(QObject *parent, const QVariantList &args)
     : Plasma::Applet(parent, args),
-      m_activityController(0)
+      m_engine(0)
 {
     resize(200, 60);
     setAspectRatioMode(Plasma::IgnoreAspectRatio);
@@ -61,17 +59,15 @@
     //while using the new activity API for plasma-desktop.
     //TODO 4.6 convert netbook to the activity API so we won't need this
     if (qApp->applicationName() == "plasma-desktop") {
-        m_activityController = new KActivityController(this);
-        QStringList activities = m_activityController->availableActivities();
+        m_engine = dataEngine("org.kde.activities");
+        QStringList activities = m_engine->sources();
+        //kDebug() << "$$$$$$$$$$$$# sources:" << activities.size();
         foreach (const QString &id, activities) {
             insertActivity(id);
         }
-        m_tabBar->setCurrentIndex(activities.indexOf(m_activityController->currentActivity()));
                
-
-        connect(m_activityController, SIGNAL(activityAdded(QString)), this, \
                SLOT(activityAdded(QString)));
-        connect(m_activityController, SIGNAL(activityRemoved(QString)), this, \
                SLOT(activityRemoved(QString)));
-        connect(m_activityController, SIGNAL(currentActivityChanged(QString)), this, \
                SLOT(currentActivityChanged(QString)));
-
+        m_engine->connectAllSources(this);
+        connect(m_engine, SIGNAL(sourceAdded(QString)), this, \
SLOT(activityAdded(QString))); +        connect(m_engine, \
                SIGNAL(sourceRemoved(QString)), this, \
                SLOT(activityRemoved(QString)));
         connect(m_tabBar, SIGNAL(currentChanged(int)), this, \
SLOT(switchActivity(int)));  } else {
         m_tabBar->nativeWidget()->installEventFilter(this);
@@ -148,17 +144,11 @@
 void ActivityBar::insertActivity(const QString &id)
 {
     //assumption: activities are always added at the end of the list
-    KActivityInfo *activity = new KActivityInfo(id, this);
-    m_activities.append(activity);
-    if (activity->isValid() && !activity->icon().isEmpty()) {
-        m_tabBar->addTab(KIcon(activity->icon()), activity->name());
-    } else {
-        m_tabBar->addTab(activity->name());
+    //kDebug() << "activity" << id;
+    m_activities.append(id);
+    m_tabBar->addTab(QString()); //name will be added on dataUpdated
     }
 
-    connect(activity, SIGNAL(nameChanged(QString)), this, \
                SLOT(activityNameChanged(QString)));
-}
-
 void ActivityBar::constraintsEvent(Plasma::Constraints constraints)
 {
     if (constraints & Plasma::FormFactorConstraint ) {
@@ -212,7 +202,10 @@
     if (newActive >= m_activities.count() || newActive < 0) {
         return;
     }
-    m_activityController->setCurrentActivity(m_activities.at(newActive)->id());
+    Plasma::Service *service = \
m_engine->serviceForSource(m_activities.at(newActive)); +    KConfigGroup op = \
service->operationDescription("setCurrent"); +    Plasma::ServiceJob *job = \
service->startOperationCall(op); +    connect(job, SIGNAL(finished(KJob*)), service, \
SLOT(deleteLater()));  }
 
 void ActivityBar::currentDesktopChanged(const int currentDesktop)
@@ -236,25 +229,6 @@
     }
 }
 
-void ActivityBar::currentActivityChanged(const QString &newId)
-{
-    int index = 0;
-    bool found = false;
-    foreach (KActivityInfo *info, m_activities) {
-        if (info->id() == newId) {
-            found = true;
-            break;
-        }
-        ++index;
-    }
-
-    if (found) {
-        m_tabBar->setCurrentIndex(index);
-    } else {
-        kDebug() << "can't find" << newId;
-    }
-}
-
 void ActivityBar::containmentAdded(Plasma::Containment *cont)
 {
     if (cont->containmentType() == Plasma::Containment::PanelContainment ||
@@ -276,13 +250,8 @@
 void ActivityBar::activityAdded(const QString &id)
 {
     insertActivity(id);
+    m_engine->connectSource(id, this);
 
-    kDebug() << id;
-    if (m_activityController->currentActivity() == id) {
-        kDebug() << "current";
-        m_tabBar->setCurrentIndex(m_activities.count() - 1);
-    }
-
     setPreferredSize(m_tabBar->nativeWidget()->sizeHint());
     emit sizeHintChanged(Qt::PreferredSize);
 }
@@ -305,21 +274,13 @@
 
 void ActivityBar::activityRemoved(const QString &id)
 {
-    int index = 0;
-    bool found = false;
-    foreach (KActivityInfo *info, m_activities) {
-        if (info->id() == id) {
-            found = true;
-            m_activities.removeAt(index);
-            delete info;
-            break;
-        }
-        ++index;
-    }
-    if (!found) {
+    int index = m_activities.indexOf(id);
+    if (index < 0) {
         return;
     }
 
+    m_activities.removeAt(index);
+
     m_tabBar->blockSignals(true);
     m_tabBar->removeTab(index);
     m_tabBar->blockSignals(false);
@@ -357,15 +318,19 @@
     }
 }
 
-void ActivityBar::activityNameChanged(const QString &newName)
+void ActivityBar::dataUpdated(const QString &source, const Plasma::DataEngine::Data \
&data)  {
-    KActivityInfo *info = qobject_cast<KActivityInfo*>(sender());
-    if (!info) {
+    //kDebug() << "$$$$$$$$$$$$$$$$$$$" << source;
+    if (source.startsWith('_')) {
+        //special source, not used yet
         return;
     }
-    int index = m_activities.indexOf(info);
-    if (index != -1) {
-        m_tabBar->setTabText(index, newName);
+
+    int index = m_activities.indexOf(source);
+    m_tabBar->setTabText(index, data["Name"].toString());
+    m_tabBar->setTabIcon(index, KIcon(data["Icon"].toString()));
+    if (data["Current"].toBool()) {
+        m_tabBar->setCurrentIndex(index);
     }
 }
 
--- trunk/KDE/kdebase/workspace/plasma/generic/applets/activitybar/activitybar.h \
#1191994:1191995 @@ -1,5 +1,6 @@
 /***************************************************************************
  *   Copyright (C) 2008 by Marco Martin <notmart@gmail.com>                *
+ *   Copyright (C) 2010 by Chani Armitage <chanika@gmail.com>              *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -22,6 +23,7 @@
 
 
 #include <Plasma/Applet>
+#include <Plasma/DataEngine>
 
 namespace Plasma
 {
@@ -29,9 +31,6 @@
     class Containment;
 }
 
-class KActivityController;
-class KActivityInfo;
-
 class ActivityBar : public Plasma::Applet
 {
 Q_OBJECT
@@ -59,14 +58,13 @@
     void switchActivity(int newActive);
     void activityAdded(const QString &id);
     void activityRemoved(const QString &id);
-    void activityNameChanged(const QString &newName);
-    void currentActivityChanged(const QString &newId);
+    void dataUpdated(const QString &source, const Plasma::DataEngine::Data &data);
 
 private:
     Plasma::TabBar *m_tabBar;
     QList<Plasma::Containment*> m_containments;
-    QList<KActivityInfo*> m_activities;
-    KActivityController *m_activityController;
+    QStringList m_activities;
+    Plasma::DataEngine *m_engine;
 };
 
 
--- trunk/KDE/kdebase/workspace/plasma/generic/dataengines/CMakeLists.txt \
#1191994:1191995 @@ -1,4 +1,5 @@
 add_subdirectory(applicationjobs)
+add_subdirectory(activities)
 add_subdirectory(apps)
 add_subdirectory(devicenotifications)
 add_subdirectory(dict)


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic