1/* Copyright 2016 Software Freedom Conservancy Inc.
2 *
3 * This software is licensed under the GNU Lesser General Public License
4 * (version 2.1 or later).  See the COPYING file in this distribution.
5 */
6
7#if UNITY_SUPPORT
8public class UnityProgressBar : Object {
9
10    private static Unity.LauncherEntry l = Unity.LauncherEntry.get_for_desktop_id("shotwell.desktop");
11    private static UnityProgressBar? visible_uniprobar;
12
13    private double progress;
14    private bool visible;
15
16    public static UnityProgressBar get_instance() {
17        if (visible_uniprobar == null) {
18            visible_uniprobar = new UnityProgressBar();
19        }
20
21        return visible_uniprobar;
22    }
23
24    private UnityProgressBar() {
25        progress = 0.0;
26        visible = false;
27    }
28
29    ~UnityProgressBar () {
30        reset_progress_bar();
31    }
32
33    public double get_progress () {
34        return progress;
35    }
36
37    public void set_progress (double percent) {
38        progress = percent;
39        update_visibility();
40    }
41
42    private void update_visibility () {
43        set_progress_bar(this, progress);
44    }
45
46    public bool get_visible () {
47        return visible;
48    }
49
50    public void set_visible (bool visible) {
51        this.visible = visible;
52
53        if (!visible) {
54            //if not visible and currently displayed, remove Unity progress bar
55            reset_progress_bar();
56        } else {
57            //update_visibility if this progress bar wants to be drawn
58            update_visibility();
59        }
60    }
61
62    public void reset () {
63        set_visible(false);
64        progress = 0.0;
65    }
66
67    private static void set_progress_bar (UnityProgressBar uniprobar, double percent) {
68        //set new visible ProgressBar
69        visible_uniprobar = uniprobar;
70        if (!l.progress_visible)
71            l.progress_visible = true;
72        l.progress = percent;
73    }
74
75    private static void reset_progress_bar () {
76        //reset to default values
77        visible_uniprobar = null;
78        l.progress = 0.0;
79        l.progress_visible = false;
80    }
81}
82
83#endif
84