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