1
/***************************************************************************
2
* Copyright (C) 2008 by Trever Fischer *
4
* Copyright (C) 2009-2010 by Daniel Nicoletti *
5
* dantti85-pk@yahoo.com.br *
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. *
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. *
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
***************************************************************************/
27
#include <KIconLoader>
28
#include <KStandardDirs>
32
bool KpkIcons::init = false;
33
QHash<QString, KIcon> KpkIcons::cache = QHash<QString, KIcon>();
35
void KpkIcons::configure()
37
KGlobal::dirs()->addResourceDir("xdgdata-pixmap", "/usr/share/app-install/icons/");
38
KIconLoader::global()->reconfigure("kpackagekit", 0);
39
KpkIcons::init = true;
42
KIcon KpkIcons::getIcon(const QString &name)
44
// kDebug() << 1 << name;
45
if (!KpkIcons::init) {
46
KpkIcons::configure();
52
KIcon KpkIcons::getIcon(const QString &name, const QString &defaultName)
54
// kDebug() << 2 << name << defaultName;
55
if (!KpkIcons::init) {
56
KpkIcons::configure();
64
isNull = KIconLoader::global()->iconPath(name, KIconLoader::NoGroup, true).isEmpty();
66
if (isNull && !defaultName.isNull()) {
67
return KIcon(defaultName);
74
QString KpkIcons::statusIconName(Transaction::Status status)
76
if (!KpkIcons::init) {
77
KpkIcons::configure();
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";
118
kDebug() << "status icon unrecognised: " << status;
119
return "help-browser";
122
KIcon KpkIcons::statusIcon(Transaction::Status status)
124
return KIcon(KpkIcons::statusIconName(status));
127
QString KpkIcons::statusAnimation(Transaction::Status status)
129
if (!KpkIcons::init) {
130
KpkIcons::configure();
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";
172
QString KpkIcons::actionIconName(Transaction::Role role)
174
if (!KpkIcons::init) {
175
KpkIcons::configure();
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'";
215
kDebug() << "action unrecognised: " << role;
216
return "applications-other";
219
KIcon KpkIcons::actionIcon(Transaction::Role role)
221
return KIcon(actionIconName(role));
224
KIcon KpkIcons::groupsIcon(Package::Group group)
226
if (!KpkIcons::init) {
227
KpkIcons::configure();
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");
266
kDebug() << "group unrecognised: " << group;
267
return KIcon("unknown");
270
KIcon KpkIcons::packageIcon(Package::Info info)
272
if (!KpkIcons::init) {
273
KpkIcons::configure();
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");
289
QString KpkIcons::restartIconName(Package::Restart type)
291
if (!KpkIcons::init) {
292
KpkIcons::configure();
294
// These names MUST be standard icons, otherwise KStatusNotifierItem
295
// will not be able to load them
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;
308
KIcon KpkIcons::restartIcon(Package::Restart type)
310
return KpkIcons::getIcon(restartIconName(type));
313
QIcon KpkIcons::getPreloadedIcon(const QString &name)
315
if (!KpkIcons::init) {
316
KpkIcons::configure();
319
kDebug() << KIconLoader::global()->iconPath(name, KIconLoader::NoGroup, true);
321
icon.addPixmap(KIcon(name).pixmap(48, 48));