~ubuntu-branches/ubuntu/utopic/kde-workspace/utopic-proposed

« back to all changes in this revision

Viewing changes to plasma/generic/dataengines/tasks/tasksource.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Michał Zając
  • Date: 2011-07-09 08:31:15 UTC
  • Revision ID: james.westby@ubuntu.com-20110709083115-ohyxn6z93mily9fc
Tags: upstream-4.6.90
Import upstream version 4.6.90

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright 2008 Alain Boyer <alainboyer@gmail.com>
 
3
 *
 
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
 
7
 *
 
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
 
12
 *
 
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.
 
17
 */
 
18
 
 
19
#include "tasksource.h"
 
20
 
 
21
// own
 
22
#include "tasksengine.h"
 
23
#include "taskservice.h"
 
24
 
 
25
TaskSource::TaskSource(StartupPtr startup, QObject *parent) :
 
26
    Plasma::DataContainer(parent),
 
27
    m_startup(startup),
 
28
    m_task(),
 
29
    m_isTask(false)
 
30
{
 
31
    setObjectName(TasksEngine::getStartupName(m_startup));
 
32
    setData("startup", true);
 
33
    setData("task", false);
 
34
    updateStartup(TaskManager::TaskUnchanged);
 
35
}
 
36
 
 
37
TaskSource::TaskSource(TaskPtr task, QObject *parent) :
 
38
    Plasma::DataContainer(parent),
 
39
    m_startup(),
 
40
    m_task(task),
 
41
    m_isTask(true)
 
42
{
 
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);
 
49
}
 
50
 
 
51
TaskSource::~TaskSource()
 
52
{
 
53
}
 
54
 
 
55
Plasma::Service *TaskSource::createService()
 
56
{
 
57
    return new TaskService(this);
 
58
}
 
59
 
 
60
TaskPtr TaskSource::getTask()
 
61
{
 
62
    return m_task;
 
63
}
 
64
 
 
65
bool TaskSource::isTask() const 
 
66
{
 
67
    return m_isTask;
 
68
}
 
69
 
 
70
void TaskSource::updateStartup(::TaskManager::TaskChanges startupChanges)
 
71
{
 
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());
 
77
    }
 
78
    checkForUpdate();
 
79
}
 
80
 
 
81
void TaskSource::updateTask(::TaskManager::TaskChanges taskChanges)
 
82
{
 
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));
 
112
            break;
 
113
        case TaskManager::IconChanged:
 
114
            setData("icon", m_task->icon());
 
115
            break;
 
116
        case TaskManager::NameChanged:
 
117
            setData("name", m_task->name());
 
118
            setData("visibleName", m_task->visibleName());
 
119
            setData("visibleNameWithState", m_task->visibleNameWithState());
 
120
            break;
 
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());
 
131
            break;
 
132
        case TaskManager::DesktopChanged:
 
133
            setData("onCurrentDesktop", m_task->isOnCurrentDesktop());
 
134
            setData("onAllDesktops", m_task->isOnAllDesktops());
 
135
            setData("desktop", m_task->desktop());
 
136
            break;
 
137
            break;
 
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));
 
151
            break;
 
152
        default:
 
153
            break;
 
154
    }
 
155
    checkForUpdate();
 
156
}
 
157
 
 
158
void TaskSource::updateDesktop(int desktop)
 
159
{
 
160
    Q_UNUSED(desktop);
 
161
    const bool onCurrentDesktop = m_task->isOnCurrentDesktop();
 
162
    if (data()["onCurrentDesktop"].toBool() != onCurrentDesktop) {
 
163
        setData("onCurrentDesktop", onCurrentDesktop);
 
164
        checkForUpdate();
 
165
    }
 
166
}
 
167
 
 
168
void TaskSource::updateActivity()
 
169
{
 
170
    const bool onCurrentActivity = m_task->isOnCurrentActivity();
 
171
    if (data()["onCurrentActivity"].toBool() != onCurrentActivity) {
 
172
        setData("onCurrentActivity", onCurrentActivity);
 
173
        checkForUpdate();
 
174
    }
 
175
}
 
176
 
 
177
#include "tasksource.moc"