40 lines
1,001 B
Vala
40 lines
1,001 B
Vala
/* Copyright 2013-2015 Yorba Foundation
|
|
*
|
|
* This software is licensed under the GNU Lesser General Public License
|
|
* (version 2.1 or later). See the COPYING file in this distribution.
|
|
*/
|
|
|
|
/**
|
|
* Adapts a progress spinner to automatically display progress of a Geary.ProgressMonitor.
|
|
*/
|
|
public class MonitoredSpinner : Gtk.Spinner {
|
|
private Geary.ProgressMonitor? monitor = null;
|
|
|
|
public void set_progress_monitor(Geary.ProgressMonitor? monitor) {
|
|
if (monitor != null) {
|
|
this.monitor = monitor;
|
|
monitor.start.connect(on_start);
|
|
monitor.finish.connect(on_stop);
|
|
} else {
|
|
this.monitor = null;
|
|
stop();
|
|
hide();
|
|
}
|
|
}
|
|
|
|
public override void show() {
|
|
if (monitor != null && monitor.is_in_progress)
|
|
base.show();
|
|
}
|
|
|
|
private void on_start() {
|
|
start();
|
|
show();
|
|
}
|
|
|
|
private void on_stop() {
|
|
stop();
|
|
hide();
|
|
}
|
|
}
|
|
|