2
* Copyright 2008 Alain Boyer <alainboyer@gmail.com>
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU Library General Public License version 2 as
6
* published by the Free Software Foundation
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details
13
* You should have received a copy of the GNU Library General Public
14
* License along with this program; if not, write to the
15
* Free Software Foundation, Inc.,
16
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19
#include "tasksource.h"
22
#include "tasksengine.h"
23
#include "taskservice.h"
25
TaskSource::TaskSource(StartupPtr startup, QObject *parent) :
26
Plasma::DataContainer(parent),
31
setObjectName(TasksEngine::getStartupName(m_startup));
32
setData("startup", true);
33
setData("task", false);
34
updateStartup(TaskManager::TaskUnchanged);
37
TaskSource::TaskSource(TaskPtr task, QObject *parent) :
38
Plasma::DataContainer(parent),
43
setObjectName(TasksEngine::getTaskName(m_task));
44
setData("startup", false);
45
setData("task", true);
46
setData("className", m_task->className());
47
setData("classClass", m_task->classClass());
48
updateTask(TaskManager::EverythingChanged);
51
TaskSource::~TaskSource()
55
Plasma::Service *TaskSource::createService()
57
return new TaskService(this);
60
TaskPtr TaskSource::getTask()
65
bool TaskSource::isTask() const
70
void TaskSource::updateStartup(::TaskManager::TaskChanges startupChanges)
72
switch (startupChanges) {
73
case TaskManager::TaskUnchanged:
74
setData("text", m_startup->text());
75
setData("bin", m_startup->bin());
76
setData("icon", m_startup->icon());
81
void TaskSource::updateTask(::TaskManager::TaskChanges taskChanges)
83
// only a subset of task information is exported
84
switch (taskChanges) {
85
case TaskManager::EverythingChanged:
86
setData("name", m_task->name());
87
setData("visibleName", m_task->visibleName());
88
setData("visibleNameWithState", m_task->visibleNameWithState());
89
setData("maximized", m_task->isMaximized());
90
setData("minimized", m_task->isMinimized());
91
setData("shaded", m_task->isShaded());
92
setData("fullScreen", m_task->isFullScreen());
93
setData("alwaysOnTop", m_task->isAlwaysOnTop());
94
setData("keptBelowOthers", m_task->isKeptBelowOthers());
95
setData("active", m_task->isActive());
96
setData("onTop", m_task->isOnTop());
97
setData("onCurrentDesktop", m_task->isOnCurrentDesktop());
98
setData("onAllDesktops", m_task->isOnAllDesktops());
99
setData("desktop", m_task->desktop());
100
setData("onCurrentActivity", m_task->isOnCurrentActivity());
101
setData("onAllActivities", m_task->isOnAllActivities());
102
setData("activities", m_task->activities());
103
setData("icon", m_task->icon());
104
setData("actionMinimize", m_task->info().actionSupported(NET::ActionMinimize));
105
setData("actionMaximize", m_task->info().actionSupported(NET::ActionMax));
106
setData("actionShade", m_task->info().actionSupported(NET::ActionShade));
107
setData("actionResize", m_task->info().actionSupported(NET::ActionResize));
108
setData("actionMove", m_task->info().actionSupported(NET::ActionMove));
109
setData("actionClose", m_task->info().actionSupported(NET::ActionClose));
110
setData("actionChangeDesktop", m_task->info().actionSupported(NET::ActionChangeDesktop));
111
setData("actionFullScreen", m_task->info().actionSupported(NET::ActionFullScreen));
113
case TaskManager::IconChanged:
114
setData("icon", m_task->icon());
116
case TaskManager::NameChanged:
117
setData("name", m_task->name());
118
setData("visibleName", m_task->visibleName());
119
setData("visibleNameWithState", m_task->visibleNameWithState());
121
case TaskManager::StateChanged:
122
setData("maximized", m_task->isMaximized());
123
setData("minimized", m_task->isMinimized());
124
setData("shaded", m_task->isShaded());
125
setData("fullScreen", m_task->isFullScreen());
126
setData("alwaysOnTop", m_task->isAlwaysOnTop());
127
setData("keptBelowOthers", m_task->isKeptBelowOthers());
128
setData("active", m_task->isActive());
129
setData("onTop", m_task->isOnTop());
130
setData("visibleNameWithState", m_task->visibleNameWithState());
132
case TaskManager::DesktopChanged:
133
setData("onCurrentDesktop", m_task->isOnCurrentDesktop());
134
setData("onAllDesktops", m_task->isOnAllDesktops());
135
setData("desktop", m_task->desktop());
138
case TaskManager::ActivitiesChanged:
139
setData("onCurrentActivity", m_task->isOnCurrentActivity());
140
setData("onAllActivities", m_task->isOnAllActivities());
141
setData("activities", m_task->activities());
142
case TaskManager::ActionsChanged:
143
setData("actionMinimize", m_task->info().actionSupported(NET::ActionMinimize));
144
setData("actionMaximize", m_task->info().actionSupported(NET::ActionMax));
145
setData("actionShade", m_task->info().actionSupported(NET::ActionShade));
146
setData("actionResize", m_task->info().actionSupported(NET::ActionResize));
147
setData("actionMove", m_task->info().actionSupported(NET::ActionMove));
148
setData("actionClose", m_task->info().actionSupported(NET::ActionClose));
149
setData("actionChangeDesktop", m_task->info().actionSupported(NET::ActionChangeDesktop));
150
setData("actionFullScreen", m_task->info().actionSupported(NET::ActionFullScreen));
158
void TaskSource::updateDesktop(int desktop)
161
const bool onCurrentDesktop = m_task->isOnCurrentDesktop();
162
if (data()["onCurrentDesktop"].toBool() != onCurrentDesktop) {
163
setData("onCurrentDesktop", onCurrentDesktop);
168
void TaskSource::updateActivity()
170
const bool onCurrentActivity = m_task->isOnCurrentActivity();
171
if (data()["onCurrentActivity"].toBool() != onCurrentActivity) {
172
setData("onCurrentActivity", onCurrentActivity);
177
#include "tasksource.moc"