blob: 32a3e0d3fbc722285ad5fe9db2e5c96c4fac396f (
plain)
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
|
/* Copyright 2011-2014 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.
*/
public class Library.ImportQueueBranch : Sidebar.RootOnlyBranch {
private Library.ImportQueueSidebarEntry entry;
public ImportQueueBranch() {
// can't pass to base() an object that was allocated in declaration; see
// https://bugzilla.gnome.org/show_bug.cgi?id=646286
base (new Library.ImportQueueSidebarEntry());
entry = (Library.ImportQueueSidebarEntry) get_root();
// only attach signals to the page when it's created
entry.page_created.connect(on_page_created);
entry.destroying_page.connect(on_destroying_page);
// don't use entry.get_page() or get_queue_page() because (a) we don't want to
// create the page during initialization, and (b) we know there's no import activity
// at this moment
set_show_branch(false);
}
~ImportQueueBranch() {
entry.page_created.disconnect(on_page_created);
entry.destroying_page.disconnect(on_destroying_page);
}
public ImportQueuePage get_queue_page() {
return (ImportQueuePage) entry.get_page();
}
private void on_page_created() {
get_queue_page().batch_added.connect(on_batch_added_or_removed);
get_queue_page().batch_removed.connect(on_batch_added_or_removed);
}
private void on_destroying_page() {
get_queue_page().batch_added.disconnect(on_batch_added_or_removed);
get_queue_page().batch_removed.disconnect(on_batch_added_or_removed);
}
private void on_batch_added_or_removed() {
set_show_branch(get_queue_page().get_batch_count() > 0);
}
public void enqueue_and_schedule(BatchImport batch_import, bool allow_user_cancel) {
// want to display the branch before passing to the page because this might result in the
// page being created, and want it all hooked up in the tree prior to creating the page
set_show_branch(true);
get_queue_page().enqueue_and_schedule(batch_import, allow_user_cancel);
}
}
public class Library.ImportQueueSidebarEntry : Sidebar.SimplePageEntry {
public ImportQueueSidebarEntry() {
}
public override string get_sidebar_name() {
return ImportQueuePage.NAME;
}
public override Icon? get_sidebar_icon() {
return new ThemedIcon(Resources.ICON_IMPORTING);
}
protected override Page create_page() {
return new ImportQueuePage();
}
}
|