diff options
author | Jörg Frings-Fürst <debian@jff.email> | 2018-10-01 07:17:16 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff.email> | 2018-10-01 07:17:16 +0200 |
commit | 71137cc5832110d91599d68790402cf196762ed3 (patch) | |
tree | e7985bbfb6ca50ea738b38a9f852ee51431d48a7 /src/import-roll/ImportRollBranch.vala | |
parent | 8ae550d463720d5d1c0e253af29843ff15de1a54 (diff) | |
parent | 1e92964463e564bb3359a7110342182fcfdc67f2 (diff) |
Merge branch 'release/debian/0.30.1-1'debian/0.30.1-1
Diffstat (limited to 'src/import-roll/ImportRollBranch.vala')
-rw-r--r-- | src/import-roll/ImportRollBranch.vala | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/import-roll/ImportRollBranch.vala b/src/import-roll/ImportRollBranch.vala new file mode 100644 index 0000000..32337cc --- /dev/null +++ b/src/import-roll/ImportRollBranch.vala @@ -0,0 +1,45 @@ +public class ImportRoll.Branch : Sidebar.Branch { + private Gee.HashMap<int64?, ImportRoll.SidebarEntry> entries; + + public class Branch() { + base (new ImportRoll.Root(), + Sidebar.Branch.Options.HIDE_IF_EMPTY, + ImportRoll.Branch.comparator); + + this.entries = new Gee.HashMap<int64?, ImportRoll.SidebarEntry>((Gee.HashDataFunc<int64?>)GLib.int64_hash, + (Gee.EqualDataFunc<int64?>)GLib.int64_equal); + + foreach (var source in MediaCollectionRegistry.get_instance().get_all()) { + on_import_rolls_altered(source); + source.import_roll_altered.connect(on_import_rolls_altered); + } + + } + + private static int comparator(Sidebar.Entry a, Sidebar.Entry b) { + if (a == b) + return 0; + + var entry_a = (ImportRoll.SidebarEntry) a; + var entry_b = (ImportRoll.SidebarEntry) b; + + return -ImportID.compare_func(entry_a.get_id(), entry_b.get_id()); + } + + private void on_import_rolls_altered(MediaSourceCollection source) { + var ids = source.get_import_roll_ids(); + foreach (var id in ids) { + if (!this.entries.has_key (id.id)) { + var entry = new ImportRoll.SidebarEntry(id); + entries.set(id.id, entry); + graft(get_root(), entry); + } + } + } +} + +private class ImportRoll.Root : Sidebar.Header { + public Root() { + base (_("Imports"), _("Browse the library’s import history")); + } +} |