diff options
author | Jörg Frings-Fürst <debian@jff.email> | 2018-09-30 14:09:20 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff.email> | 2018-09-30 14:09:20 +0200 |
commit | 5e9f4eea451a77ba3b93db3747841ed2bd969e9f (patch) | |
tree | 75046a38ca68975261d853a2e56ff7bf6b3e1daa /src/import-roll/ImportRollBranch.vala | |
parent | 18b52c2983a1b3409011f72d27f15de576c5eb1c (diff) |
New upstream version 0.30.1upstream/0.30.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")); + } +} |