~dantti/apper/master

« back to all changes in this revision

Viewing changes to libapper/KpkIcons.cpp

  • Committer: Daniel Nicoletti
  • Date: 2011-07-27 21:02:31 UTC
  • Revision ID: git-v1:2fb51b7787e2e9d70d2085cc8181a12f4277b047
The idea of libshared, was for it to be static, as
this doesn't seem too simple as putting STATIC word
I'm renaming it to libapper so we don't have such a geniric
lib installed (as pointed by Kevin Kofler

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************
 
2
 *   Copyright (C) 2008 by Trever Fischer                                  *
 
3
 *   wm161@wm161.net                                                       *
 
4
 *   Copyright (C) 2009-2010 by Daniel Nicoletti                           *
 
5
 *   dantti85-pk@yahoo.com.br                                              *
 
6
 *                                                                         *
 
7
 *   This program is free software; you can redistribute it and/or modify  *
 
8
 *   it under the terms of the GNU General Public License as published by  *
 
9
 *   the Free Software Foundation; either version 2 of the License, or     *
 
10
 *   (at your option) any later version.                                   *
 
11
 *                                                                         *
 
12
 *   This program is distributed in the hope that it will be useful,       *
 
13
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 
14
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 
15
 *   GNU General Public License for more details.                          *
 
16
 *                                                                         *
 
17
 *   You should have received a copy of the GNU General Public License     *
 
18
 *   along with this program; see the file COPYING. If not, write to       *
 
19
 *   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,  *
 
20
 *   Boston, MA 02110-1301, USA.                                           *
 
21
 ***************************************************************************/
 
22
 
 
23
#include <config.h>
 
24
 
 
25
#include "KpkIcons.h"
 
26
 
 
27
#include <KIconLoader>
 
28
#include <KStandardDirs>
 
29
 
 
30
#include <KDebug>
 
31
 
 
32
bool KpkIcons::init = false;
 
33
QHash<QString, KIcon> KpkIcons::cache = QHash<QString, KIcon>();
 
34
 
 
35
void KpkIcons::configure()
 
36
{
 
37
    KGlobal::dirs()->addResourceDir("xdgdata-pixmap", "/usr/share/app-install/icons/");
 
38
    KIconLoader::global()->reconfigure("kpackagekit", 0);
 
39
    KpkIcons::init = true;
 
40
}
 
41
 
 
42
KIcon KpkIcons::getIcon(const QString &name)
 
43
{
 
44
//     kDebug() << 1 << name;
 
45
    if (!KpkIcons::init) {
 
46
        KpkIcons::configure();
 
47
    }
 
48
 
 
49
    return KIcon(name);
 
50
}
 
51
 
 
52
KIcon KpkIcons::getIcon(const QString &name, const QString &defaultName)
 
53
{
 
54
//     kDebug() << 2 << name << defaultName;
 
55
    if (!KpkIcons::init) {
 
56
        KpkIcons::configure();
 
57
    }
 
58
 
 
59
    if (name.isEmpty()) {
 
60
        return KIcon();
 
61
    }
 
62
 
 
63
    bool isNull;
 
64
    isNull = KIconLoader::global()->iconPath(name, KIconLoader::NoGroup, true).isEmpty();
 
65
 
 
66
    if (isNull && !defaultName.isNull()) {
 
67
        return KIcon(defaultName);
 
68
    } else if (isNull) {
 
69
        return KIcon();
 
70
    }
 
71
    return KIcon(name);
 
72
}
 
73
 
 
74
QString KpkIcons::statusIconName(Transaction::Status status)
 
75
{
 
76
    if (!KpkIcons::init) {
 
77
        KpkIcons::configure();
 
78
    }
 
79
    switch (status) {
 
80
    case Transaction::UnknownStatus              : return "help-browser";
 
81
    case Transaction::StatusCancel               :
 
82
    case Transaction::StatusCleanup              : return "package-clean-up";
 
83
    case Transaction::StatusCommit               : return "package-working";//TODO needs a better icon
 
84
    case Transaction::StatusDepResolve           : return "package-info";
 
85
    case Transaction::StatusDownloadChangelog    :
 
86
    case Transaction::StatusDownloadFilelist     :
 
87
    case Transaction::StatusDownloadGroup        :
 
88
    case Transaction::StatusDownloadPackagelist  : return "refresh-cache";
 
89
    case Transaction::StatusDownload             : return "package-download";
 
90
    case Transaction::StatusDownloadRepository   :
 
91
    case Transaction::StatusDownloadUpdateinfo   : return "refresh-cache";
 
92
    case Transaction::StatusFinished             : return "package-clean-up";
 
93
    case Transaction::StatusGeneratePackageList  : return "refresh-cache";
 
94
    case Transaction::StatusWaitingForLock       : return "dialog-password";
 
95
    case Transaction::StatusWaitingForAuth       : return "dialog-password";//IMPROVE ME
 
96
    case Transaction::StatusInfo                 : return "package-info";
 
97
    case Transaction::StatusInstall              : return "kpk-package-add";
 
98
    case Transaction::StatusLoadingCache         : return "refresh-cache";
 
99
    case Transaction::StatusObsolete             : return "package-clean-up";
 
100
    case Transaction::StatusQuery                : return "search-package";
 
101
    case Transaction::StatusRefreshCache         : return "refresh-cache";
 
102
    case Transaction::StatusRemove               : return "package-removed";
 
103
    case Transaction::StatusRepackaging          : return "package-clean-up";
 
104
    case Transaction::StatusRequest              : return "search-package";
 
105
    case Transaction::StatusRollback             : return "package-rollback";
 
106
    case Transaction::StatusRunning              : return "package-working";
 
107
    case Transaction::StatusScanApplications     : return "search-package";
 
108
    case Transaction::StatusSetup                : return "package-working";
 
109
    case Transaction::StatusSigCheck             :
 
110
    case Transaction::StatusTestCommit           : return "package-info";//TODO needs a better icon
 
111
    case Transaction::StatusUpdate               : return "package-update";
 
112
    case Transaction::StatusWait                 : return "package-wait";
 
113
    case Transaction::StatusScanProcessList      : return "package-info";
 
114
    case Transaction::StatusCheckExecutableFiles : return "package-info";
 
115
    case Transaction::StatusCheckLibraries       : return "package-info";
 
116
    case Transaction::StatusCopyFiles            : return "package-info";
 
117
    }
 
118
    kDebug() << "status icon unrecognised: " << status;
 
119
    return "help-browser";
 
120
}
 
121
 
 
122
KIcon KpkIcons::statusIcon(Transaction::Status status)
 
123
{
 
124
    return KIcon(KpkIcons::statusIconName(status));
 
125
}
 
126
 
 
127
QString KpkIcons::statusAnimation(Transaction::Status status)
 
128
{
 
129
    if (!KpkIcons::init) {
 
130
        KpkIcons::configure();
 
131
    }
 
132
    switch (status) {
 
133
    case Transaction::UnknownStatus             : return "help-browser";
 
134
    case Transaction::StatusCancel              :
 
135
    case Transaction::StatusCleanup             : return "pk-cleaning-up";
 
136
    case Transaction::StatusCommit              :
 
137
    case Transaction::StatusDepResolve          : return "pk-testing";
 
138
    case Transaction::StatusDownloadChangelog   :
 
139
    case Transaction::StatusDownloadFilelist    :
 
140
    case Transaction::StatusDownloadGroup       :
 
141
    case Transaction::StatusDownloadPackagelist : return "pk-refresh-cache";
 
142
    case Transaction::StatusDownload            : return "pk-downloading";
 
143
    case Transaction::StatusDownloadRepository  :
 
144
    case Transaction::StatusDownloadUpdateinfo  : return "pk-refresh-cache";
 
145
    case Transaction::StatusFinished            : return "pk-cleaning-up";
 
146
    case Transaction::StatusGeneratePackageList : return "pk-searching";
 
147
    case Transaction::StatusWaitingForLock      : return "pk-waiting";
 
148
    case Transaction::StatusInfo                : return "package-working";
 
149
    case Transaction::StatusInstall             : return "pk-installing";
 
150
    case Transaction::StatusLoadingCache        : return "pk-refresh-cache";
 
151
    case Transaction::StatusObsolete            : return "pk-cleaning-up";
 
152
    case Transaction::StatusQuery               : return "pk-searching";
 
153
    case Transaction::StatusRefreshCache        : return "pk-refresh-cache";
 
154
    case Transaction::StatusRemove              : return "package-removed";//TODO do the animation
 
155
    case Transaction::StatusRepackaging         : return "pk-searching";
 
156
    case Transaction::StatusRequest             : return "process-working";
 
157
    case Transaction::StatusRollback            : return "package-removed";
 
158
    case Transaction::StatusRunning             : return "pk-testing";
 
159
    case Transaction::StatusScanApplications    : return "pk-searching";
 
160
    case Transaction::StatusSetup               : return "pk-searching";
 
161
    case Transaction::StatusSigCheck            : return "package-info";
 
162
    case Transaction::StatusTestCommit          : return "pk-testing";
 
163
    case Transaction::StatusUpdate              : return "pk-installing";
 
164
    case Transaction::StatusWait                : return "pk-waiting";
 
165
    case Transaction::StatusWaitingForAuth      : return "dialog-password";
 
166
    case Transaction::StatusScanProcessList     : return "utilities-system-monitor";
 
167
    default                              : kDebug() << "status icon unrecognised: " << status;
 
168
        return "help-browser";
 
169
    }
 
170
}
 
171
 
 
172
QString KpkIcons::actionIconName(Transaction::Role role)
 
173
{
 
174
    if (!KpkIcons::init) {
 
175
        KpkIcons::configure();
 
176
    }
 
177
    switch (role) {
 
178
    case Transaction::UnknownRole                 : return "applications-other";
 
179
    case Transaction::RoleAcceptEula              : return "package-info";
 
180
    case Transaction::RoleCancel                  : return "process-stop";
 
181
    case Transaction::RoleDownloadPackages        : return "package-download";
 
182
    case Transaction::RoleGetCategories           : return "package-info";
 
183
    case Transaction::RoleGetDepends              : return "package-info";
 
184
    case Transaction::RoleGetDetails              : return "package-info";
 
185
    case Transaction::RoleGetDistroUpgrades       : return "distro-upgrade";
 
186
    case Transaction::RoleGetFiles                : return "search-package";
 
187
    case Transaction::RoleGetOldTransactions      : return "package-info";
 
188
    case Transaction::RoleGetPackages             : return "package-packages";
 
189
    case Transaction::RoleGetRepoList             : return "package-orign";
 
190
    case Transaction::RoleGetRequires             : return "package-info";
 
191
    case Transaction::RoleGetUpdateDetail         : return "package-info";
 
192
    case Transaction::RoleGetUpdates              : return "package-info";
 
193
    case Transaction::RoleInstallFiles            : return "package-installed";
 
194
    case Transaction::RoleInstallPackages         : return "package-installed";
 
195
    case Transaction::RoleInstallSignature        : return "package-installed";
 
196
    case Transaction::RoleRefreshCache            : return "refresh-cache";
 
197
    case Transaction::RoleRemovePackages          : return "package-removed";
 
198
    case Transaction::RoleRepoEnable              : return "package-orign";
 
199
    case Transaction::RoleRepoSetData             : return "package-orign";
 
200
    case Transaction::RoleResolve                 : return "search-package";
 
201
    case Transaction::RoleRollback                : return "package-rollback";
 
202
    case Transaction::RoleSearchDetails           : return "search-package";
 
203
    case Transaction::RoleSearchFile              : return "search-package";
 
204
    case Transaction::RoleSearchGroup             : return "search-package";
 
205
    case Transaction::RoleSearchName              : return "search-package";
 
206
    case Transaction::RoleUpdatePackages          : return "package-update";
 
207
    case Transaction::RoleUpdateSystem            : return "distro-upgrade";//TODO
 
208
    case Transaction::RoleUpgradeSystem           : return "distro-upgrade";//TODO
 
209
    case Transaction::RoleWhatProvides            : return "search-package";
 
210
    case Transaction::RoleSimulateInstallFiles    : return "package-installed";
 
211
    case Transaction::RoleSimulateInstallPackages : return "package-installed";
 
212
    case Transaction::RoleSimulateRemovePackages  : return "package-removed";
 
213
    case Transaction::RoleSimulateUpdatePackages  : return "package-update'";
 
214
    }
 
215
    kDebug() << "action unrecognised: " << role;
 
216
    return "applications-other";
 
217
}
 
218
 
 
219
KIcon KpkIcons::actionIcon(Transaction::Role role)
 
220
{
 
221
    return KIcon(actionIconName(role));
 
222
}
 
223
 
 
224
KIcon KpkIcons::groupsIcon(Package::Group group)
 
225
{
 
226
    if (!KpkIcons::init) {
 
227
        KpkIcons::configure();
 
228
    }
 
229
    switch (group) {
 
230
    case Package::UnknownGroup         : return KIcon("unknown");
 
231
    case Package::GroupAccessibility   : return KIcon("preferences-desktop-accessibility");
 
232
    case Package::GroupAccessories     : return KIcon("applications-accessories");
 
233
    case Package::GroupAdminTools      : return KIcon("dialog-password");
 
234
    case Package::GroupCommunication   : return KIcon("network-workgroup");//FIXME
 
235
    case Package::GroupDesktopGnome    : return KIcon("kpk-desktop-gnome");
 
236
    case Package::GroupDesktopKde      : return KIcon("kde");
 
237
    case Package::GroupDesktopOther    : return KIcon("user-desktop");
 
238
    case Package::GroupDesktopXfce     : return KIcon("kpk-desktop-xfce");
 
239
    case Package::GroupDocumentation   : return KIcon("accessories-dictionary");//FIXME
 
240
    case Package::GroupEducation       : return KIcon("applications-education");
 
241
    case Package::GroupElectronics     : return KIcon("media-flash");
 
242
    case Package::GroupFonts           : return KIcon("preferences-desktop-font");
 
243
    case Package::GroupGames           : return KIcon("applications-games");
 
244
    case Package::GroupGraphics        : return KIcon("applications-graphics");
 
245
    case Package::GroupInternet        : return KIcon("applications-internet");
 
246
    case Package::GroupLegacy          : return KIcon("media-floppy");
 
247
    case Package::GroupLocalization    : return KIcon("applications-education-language");
 
248
    case Package::GroupMaps            : return KIcon("Maps");//FIXME
 
249
    case Package::GroupCollections     : return KIcon("package-orign");
 
250
    case Package::GroupMultimedia      : return KIcon("applications-multimedia");
 
251
    case Package::GroupNetwork         : return KIcon("network-wired");
 
252
    case Package::GroupOffice          : return KIcon("applications-office");
 
253
    case Package::GroupOther           : return KIcon("applications-other");
 
254
    case Package::GroupPowerManagement : return KIcon("battery");
 
255
    case Package::GroupProgramming     : return KIcon("applications-development");
 
256
    case Package::GroupPublishing      : return KIcon("accessories-text-editor");
 
257
    case Package::GroupRepos           : return KIcon("application-x-compressed-tar");
 
258
    case Package::GroupScience         : return KIcon("applications-science");
 
259
    case Package::GroupSecurity        : return KIcon("security-high");
 
260
    case Package::GroupServers         : return KIcon("network-server");
 
261
    case Package::GroupSystem          : return KIcon("applications-system");
 
262
    case Package::GroupVirtualization  : return KIcon("cpu");
 
263
    case Package::GroupVendor          : return KIcon("application-certificate");
 
264
    case Package::GroupNewest          : return KIcon("dialog-information");
 
265
    }
 
266
    kDebug() << "group unrecognised: " << group;
 
267
    return KIcon("unknown");
 
268
}
 
269
 
 
270
KIcon KpkIcons::packageIcon(Package::Info info)
 
271
{
 
272
    if (!KpkIcons::init) {
 
273
        KpkIcons::configure();
 
274
    }
 
275
    switch (info) {
 
276
    case Package::InfoBugfix      : return KIcon("script-error");
 
277
    case Package::InfoEnhancement : return KIcon("ktip");
 
278
    case Package::InfoImportant   : return KIcon("security-low");
 
279
    case Package::InfoLow         : return KIcon("security-high");
 
280
    case Package::InfoSecurity    : return KIcon("security-medium");
 
281
    case Package::InfoNormal      : return KIcon("emblem-new");
 
282
    case Package::InfoBlocked     : return KIcon("dialog-cancel");
 
283
    case Package::InfoAvailable   : return KIcon("package-download");
 
284
    case Package::InfoInstalled   : return KIcon("package-installed");
 
285
    default                    : return KIcon("package");
 
286
    }
 
287
}
 
288
 
 
289
QString KpkIcons::restartIconName(Package::Restart type)
 
290
{
 
291
    if (!KpkIcons::init) {
 
292
        KpkIcons::configure();
 
293
    }
 
294
    // These names MUST be standard icons, otherwise KStatusNotifierItem
 
295
    // will not be able to load them
 
296
    switch (type) {
 
297
    case Package::RestartSecuritySystem  :
 
298
    case Package::RestartSystem          : return "system-reboot";
 
299
    case Package::RestartSecuritySession :
 
300
    case Package::RestartSession         : return "system-log-out";
 
301
    case Package::RestartApplication     : return "process-stop";
 
302
    case Package::RestartNone            :
 
303
    case Package::UnknownRestart         : break;
 
304
    }
 
305
    return "";
 
306
}
 
307
 
 
308
KIcon KpkIcons::restartIcon(Package::Restart type)
 
309
{
 
310
    return KpkIcons::getIcon(restartIconName(type));
 
311
}
 
312
 
 
313
QIcon KpkIcons::getPreloadedIcon(const QString &name)
 
314
{
 
315
    if (!KpkIcons::init) {
 
316
        KpkIcons::configure();
 
317
    }
 
318
 
 
319
    kDebug() << KIconLoader::global()->iconPath(name, KIconLoader::NoGroup, true);
 
320
    QIcon icon;
 
321
    icon.addPixmap(KIcon(name).pixmap(48, 48));
 
322
    return icon;
 
323
}
 
324