[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