-
-
Notifications
You must be signed in to change notification settings - Fork 100
/
ChangeInformation.vala
108 lines (93 loc) · 3.28 KB
/
ChangeInformation.vala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
// -*- Mode: vala; indent-tabs-mode: nil; tab-width: 4 -*-
/*-
* Copyright (c) 2014-2016 elementary LLC. (https://elementary.io)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Authored by: Corentin Noël <corentin@elementary.io>
*/
public class AppCenterCore.ChangeInformation : Object {
public enum Status {
UNKNOWN,
CANCELLED,
WAITING,
RUNNING,
FINISHED
}
/**
* This signal is likely to be fired from a non-main thread. Ensure any UI
* logic driven from this runs on the GTK thread
*/
public signal void status_changed ();
/**
* This signal is likely to be fired from a non-main thread. Ensure any UI
* logic driven from this runs on the GTK thread
*/
public signal void progress_changed ();
public Gee.ArrayList<string> updatable_packages { get; private set; }
public bool can_cancel { public get; private set; default=true; }
public double progress { public get; private set; default=0.0f; }
public Status status { public get; private set; default=Status.UNKNOWN; }
public string status_description { public get; private set; default=_("Waiting"); }
public uint64 size;
construct {
updatable_packages = new Gee.ArrayList<string> ();
size = 0;
}
public bool has_changes () {
return updatable_packages.size > 0;
}
public void start () {
progress = 0.0f;
status = Status.WAITING;
status_description = _("Waiting");
status_changed ();
progress_changed ();
}
public void complete () {
status = Status.FINISHED;
status_description = _("Finished");
status_changed ();
reset_progress ();
}
public void cancel () {
progress = 0.0f;
status = Status.CANCELLED;
status_description = _("Cancelling");
reset_progress ();
status_changed ();
progress_changed ();
}
public void clear_update_info () {
updatable_packages.clear ();
size = 0;
}
public void reset_progress () {
status = Status.UNKNOWN;
status_description = _("Starting");
progress = 0.0f;
}
public void callback (bool can_cancel, string status_description, double progress, Status status) {
if (this.can_cancel != can_cancel || this.status_description != status_description || this.status != status) {
this.can_cancel = can_cancel;
this.status_description = status_description;
this.status = status;
status_changed ();
}
if (this.progress != progress) {
this.progress = progress;
progress_changed ();
}
}
}