2
2
* Copyright 2012 Luís Gabriel Lima <lampih@gmail.com>
3
* Copyright 2012-2013 Daniel Nicoletti <dantti12@gmail.com>
4
5
* This program is free software; you can redistribute it and/or
5
6
* modify it under the terms of the GNU General Public License as
19
20
import org.kde.plasma.core 0.1 as PlasmaCore
20
21
import org.kde.plasma.components 0.1 as PlasmaComponents
21
import org.packagekit 0.1 as PackageKit
22
import org.kde.apper 0.1 as Apper
28
29
property int minimumHeight: 320
29
30
property int minimumWidth: 370
35
36
property int implicitWidth: 0
37
38
property bool checkedForUpdates: false
39
property string tooltipText: i18n("Software Updates")
40
property string tooltipIcon: "kpackagekit-updates"
42
property Component compactRepresentation: CompactRepresentation {
39
47
anchors.fill: parent
46
54
Component.onCompleted: {
47
55
getUpdatesTransaction.package.connect(updatesModel.addSelectedPackage);
56
getUpdatesTransaction.errorCode.connect(errorCode);
48
57
getUpdatesTransaction.finished.connect(getUpdatesFinished);
50
59
Daemon.updatesChanged.connect(updatesChanged);
51
UpdaterPlasmoid.getUpdates.connect(getUpdates);
52
UpdaterPlasmoid.checkForNewUpdates.connect(checkForNewUpdates);
53
UpdaterPlasmoid.reviewUpdates.connect(reviewUpdates);
56
function checkForNewUpdates() {
61
// This allows the plasmoid to shrink when the layout changes
62
plasmoid.status = "PassiveStatus"
63
plasmoid.aspectRatioMode = IgnoreAspectRatio
64
plasmoid.popupEvent.connect(popupEventSlot)
65
plasmoid.setAction('checkForNewUpdates', i18n("Check for new updates"), 'view-refresh')
66
dbusInterface.registerService()
67
dbusInterface.reviewUpdates.connect(reviewUpdates)
68
dbusInterface.reviewUpdates.connect(plasmoid.showPopup)
71
function popupEventSlot(popped) {
73
root.forceActiveFocus()
78
function action_checkForNewUpdates() {
57
79
transactionView.refreshCache();
58
root.state = "TRANSACTION";
80
var error = transactionView.transaction.internalError;
82
statusView.title = PkStrings.daemonError(error);
83
statusView.subTitle = transactionView.transaction.internalErrorMessage;
84
statusView.iconName = "dialog-error";
85
root.state = "MESSAGE";
87
root.state = "TRANSACTION";
61
91
function reviewUpdates() {
82
112
getUpdatesTransaction.reset();
83
113
updatesModel.clear();
84
114
getUpdatesTransaction.getUpdates();
85
checkedForUpdates = true;
115
var error = getUpdatesTransaction.internalError;
117
statusView.title = PkStrings.daemonError(error);
118
statusView.subTitle = getUpdatesTransaction.internalErrorMessage;
119
statusView.iconName = "dialog-error";
122
checkedForUpdates = true;
127
function errorCode() {
128
statusView.title = i18n("Failed to get updates");
129
statusView.subTitle = PkStrings.daemonError(error);
130
statusView.iconName = "dialog-error";
132
plasmoid.status = "PassiveStatus"
89
135
function getUpdatesFinished() {
90
136
updatesModel.finished();
91
137
updatesView.sortModel.sortNow();
92
138
updatesModel.clearSelectedNotPresent();
93
UpdaterPlasmoid.updateIcon();
94
140
decideState(false);
97
143
function decideState(force) {
98
144
if (force || state !== "TRANSACTION") {
99
145
if (updatesModel.rowCount() === 0) {
100
var lastTime = UpdaterPlasmoid.getTimeSinceLastRefresh();
146
var lastTime = DaemonHelper.getTimeSinceLastRefresh();
101
147
statusView.title = PkStrings.lastCacheRefreshTitle(lastTime);
102
148
statusView.subTitle = PkStrings.lastCacheRefreshSubTitle(lastTime);
103
149
statusView.iconName = PkIcons.lastCacheRefreshIconName(lastTime);
105
UpdaterPlasmoid.setActive(false);
151
plasmoid.status = "PassiveStatus"
107
UpdaterPlasmoid.setActive(true);
153
plasmoid.status = "ActiveStatus"
108
154
root.state = "SELECTION";
118
PackageKit.Transaction {
164
function updateIcon() {
165
if (updatesModel.rowCount()) {
166
if (updatesModel.countInfo(Apper.Transaction.InfoSecurity)) {
167
tooltipIcon = "kpackagekit-security"
168
} else if (updatesModel.countInfo(Apper.Transaction.InfoImportant)) {
169
tooltipIcon = "kpackagekit-important"
171
tooltipIcon = "kpackagekit-updates"
173
tooltipText = i18np("You have one update",
174
"You have %1 updates",
175
updatesModel.rowCount())
177
tooltipIcon = "kpackagekit-updates"
178
tooltipText = i18n("Your system is up to date")
187
Apper.DBusUpdaterInterface {
192
// Grab updates in five minutes
196
onTriggered: getUpdates()
119
200
id: getUpdatesTransaction
121
busyView.title = PkStrings.action(role);
202
busyView.title = PkStrings.action(role, transactionFlags);
122
203
busyView.subTitle = PkStrings.status(status);
146
228
anchors.right: parent.right
147
229
text: i18n("Check for new updates")
148
230
iconSource: "system-software-update"
149
onClicked: checkForNewUpdates()
231
onClicked: action_checkForNewUpdates()