[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kactivities/ivan/plugin-refactor] /: Features object
From: Ivan Čukić <ivan.cukic () kde ! org>
Date: 2012-06-30 21:04:40
Message-ID: 20120630210440.65086A60C6 () git ! kde ! org
[Download RAW message or body]
Git commit 4c321b6c1e47c7c120512c34ca5732d46bd20f9c by Ivan Čukić.
Committed on 29/06/2012 at 10:07.
Pushed by ivan into branch 'ivan/plugin-refactor'.
Features object
M +7 -0 lib/CMakeLists.txt
M +2 -3 lib/info.cpp
M +12 -0 lib/manager_p.cpp
M +4 -1 lib/manager_p.h
M +19 -5 service/Application.cpp
M +10 -5 service/Application.h
M +6 -0 service/CMakeLists.txt
A +67 -0 service/Features.cpp [License: GPL (v2)]
M +9 -0 service/Features.h
M +0 -1 service/Resources.cpp
http://commits.kde.org/kactivities/4c321b6c1e47c7c120512c34ca5732d46bd20f9c
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index a7c0514..e064b8b 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -86,6 +86,13 @@ qt4_add_dbus_interface(
resources_interface
)
+qt4_add_dbus_interface(
+ kactivities_LIB_SRCS
+
+ ../common/dbus/org.kde.ActivityManager.Features.xml
+ features_interface
+ )
+
kde4_add_library(
kactivities SHARED
${kactivities_LIB_SRCS}
diff --git a/lib/info.cpp b/lib/info.cpp
index dd315bc..9cafb72 100644
--- a/lib/info.cpp
+++ b/lib/info.cpp
@@ -170,10 +170,9 @@ Info::Availability Info::availability() const
if (Manager::activities()->ListActivities().value().contains(d->id)) {
result = BasicInfo;
- // TODO:
- // if (Manager::self()->IsFeatureOperational("activity/resource-linking")) {
+ if (Manager::features()->IsFeatureOperational("resource-linking")) {
result = Everything;
- // }
+ }
}
return result;
diff --git a/lib/manager_p.cpp b/lib/manager_p.cpp
index 307a449..f3e35d8 100644
--- a/lib/manager_p.cpp
+++ b/lib/manager_p.cpp
@@ -46,6 +46,13 @@ Manager::Manager()
ACTIVITY_MANAGER_DBUS_OBJECT "/Resources",
QDBusConnection::sessionBus(),
this
+ )),
+ m_features(
+ new org::kde::ActivityManager::Features(
+ ACTIVITY_MANAGER_DBUS_PATH,
+ ACTIVITY_MANAGER_DBUS_OBJECT "/Features",
+ QDBusConnection::sessionBus(),
+ this
))
{
connect(&m_watcher, SIGNAL(serviceOwnerChanged(const QString &, const QString &, \
const QString &)), @@ -104,5 +111,10 @@ Service::Resources * Manager::resources()
return self()->m_resources;
}
+Service::Features * Manager::features()
+{
+ return self()->m_features;
+}
+
} // namespace KActivities
diff --git a/lib/manager_p.h b/lib/manager_p.h
index 2e482e4..16f329c 100644
--- a/lib/manager_p.h
+++ b/lib/manager_p.h
@@ -22,6 +22,7 @@
#include "activities_interface.h"
#include "resources_interface.h"
+#include "features_interface.h"
#include <QDBusServiceWatcher>
@@ -39,6 +40,7 @@ public:
static Service::Activities * activities();
static Service::Resources * resources();
+ static Service::Features * features();
public Q_SLOTS:
void serviceOwnerChanged(const QString & serviceName, const QString & oldOwner, \
const QString & newOwner); @@ -54,7 +56,8 @@ private:
static Manager * s_instance;
Service::Activities * const m_activities;
- Service::Resources * const m_resources;
+ Service::Resources * const m_resources;
+ Service::Features * const m_features;
};
} // namespace KActivities
diff --git a/service/Application.cpp b/service/Application.cpp
index 816da64..7604228 100644
--- a/service/Application.cpp
+++ b/service/Application.cpp
@@ -29,6 +29,7 @@
#include <Activities.h>
#include <Resources.h>
+#include <Features.h>
#include <signal.h>
#include <stdlib.h>
@@ -38,6 +39,8 @@
#include <utils/nullptr.h>
#include <utils/override_macro.h>
+static QList < QThread * > s_moduleThreads;
+
template <typename T>
T * runInQThread()
{
@@ -45,8 +48,8 @@ T * runInQThread()
class Thread: public QThread {
public:
- Thread(T * ptr)
- : QThread(ptr), object(ptr)
+ Thread(T * ptr = nullptr)
+ : QThread(), object(ptr)
{
}
@@ -55,6 +58,8 @@ T * runInQThread()
qDebug() << "This is the current thread id for" <<
T::staticMetaObject.className() << QThread::currentThreadId() << \
QThread::currentThread(); exec();
+
+ delete object;
}
private:
@@ -62,6 +67,8 @@ T * runInQThread()
} * thread = new Thread(object);
+ s_moduleThreads << thread;
+
object->moveToThread(thread);
thread->start();
@@ -71,9 +78,10 @@ T * runInQThread()
}
Application::Application()
- : KApplication(),
- m_resources (runInQThread<Resources>()),
- m_activities(runInQThread<Activities>())
+ : KUniqueApplication(),
+ m_resources (runInQThread <Resources> ()),
+ m_activities (runInQThread <Activities> ()),
+ m_features (runInQThread <Features> ())
{
// TODO: We should move away from any GUI code
setQuitOnLastWindowClosed(false);
@@ -94,6 +102,12 @@ Application::Application()
Application::~Application()
{
+ foreach (QThread * thread, s_moduleThreads) {
+ thread->quit();
+ thread->wait();
+
+ delete thread;
+ }
}
Activities & Application::activities() const
diff --git a/service/Application.h b/service/Application.h
index 4bde757..e7077d2 100644
--- a/service/Application.h
+++ b/service/Application.h
@@ -20,16 +20,17 @@
#ifndef APPLICATION_H
#define APPLICATION_H
-#include <KApplication>
+#include <KUniqueApplication>
#include <memory>
class Resources;
class Activities;
+class Features;
/**
* Application
*/
-class Application: public KApplication {
+class Application: public KUniqueApplication {
public:
Application();
virtual ~Application();
@@ -38,11 +39,15 @@ public:
Resources & resources() const;
Activities & activities() const;
- // Features & features() const;
+ Features & features() const;
private:
- const std::unique_ptr < Resources > m_resources;
- const std::unique_ptr < Activities > m_activities;
+ Resources * m_resources;
+ Activities * m_activities;
+ Features * m_features;
+ // const std::unique_ptr < Resources > m_resources;
+ // const std::unique_ptr < Activities > m_activities;
+ // const std::unique_ptr < Features > m_features;
};
#endif // APPLICATION_H
diff --git a/service/CMakeLists.txt b/service/CMakeLists.txt
index e34c2f2..e934c31 100644
--- a/service/CMakeLists.txt
+++ b/service/CMakeLists.txt
@@ -80,6 +80,7 @@ set (activity_manager_SRCS
Activities.cpp
Resources.cpp
+ Features.cpp
NepomukActivityManager.cpp
@@ -143,6 +144,11 @@ qt4_add_dbus_adaptor (activity_manager_SRCS
Resources.h Resources
)
+qt4_add_dbus_adaptor (activity_manager_SRCS
+ ../common/dbus/org.kde.ActivityManager.Features.xml
+ Features.h Features
+ )
+
kde4_add_executable (activity-manager ${activity_manager_SRCS})
target_link_libraries (activity-manager
diff --git a/service/Features.cpp b/service/Features.cpp
new file mode 100644
index 0000000..d7f41d0
--- /dev/null
+++ b/service/Features.cpp
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2012 Ivan Cukic <ivan.cukic(at)kde.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2,
+ * or (at your option) any later version, as published by the Free
+ * Software Foundation
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <Features.h>
+#include "featuresadaptor.h"
+
+#include <NepomukActivityManager.h>
+
+#include "common.h"
+#include "jobs/encryption/all.h"
+
+#include <utils/d_ptr_implementation.h>
+
+class Features::Private {
+
+};
+
+Features::Features(QObject * parent)
+ : QObject(parent), d()
+{
+ new FeaturesAdaptor(this);
+ QDBusConnection::sessionBus().registerObject(
+ ACTIVITY_MANAGER_OBJECT_PATH(Features), this);
+}
+
+Features::~Features()
+{
+}
+
+bool Features::IsFeatureEnabled(const QString & activity, const QString & feature) \
const +{
+ return true;
+}
+
+bool Features::IsFeatureOperational(const QString & feature) const
+{
+ if (feature == "resource-linking") {
+ return NEPOMUK_PRESENT;
+ }
+
+ if (feature == "encryption") {
+ return Jobs::Encryption::Common::isEnabled();
+ }
+
+ return false;
+}
+
+void Features::SetFeatureEnabled(const QString & activity, const QString & feature, \
bool value) +{
+}
+
diff --git a/service/Features.h b/service/Features.h
index efdc5ae..47a9df5 100644
--- a/service/Features.h
+++ b/service/Features.h
@@ -37,6 +37,15 @@ class Features: public QObject {
Q_CLASSINFO("D-Bus Interface", "org.kde.ActivityManager.Features")
public:
+ Features(QObject * parent = nullptr);
+ virtual ~Features();
+
+public Q_SLOTS:
+ bool IsFeatureOperational(const QString & feature) const;
+
+ bool IsFeatureEnabled(const QString & activity, const QString & feature) const;
+
+ void SetFeatureEnabled(const QString & activity, const QString & feature, bool \
value);
private:
diff --git a/service/Resources.cpp b/service/Resources.cpp
index 6b808a5..0401857 100644
--- a/service/Resources.cpp
+++ b/service/Resources.cpp
@@ -44,7 +44,6 @@
// TODO
static QString CurrentActivity()
{
- qDebug() << Application::self().activities().CurrentActivity();
return Application::self().activities().CurrentActivity();
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic