27
27
build_async.begin ();
30
private Gee.HashMap<unowned Device, int> _devices;
30
32
private async void build_async () {
33
Idle.add_full (VIEW_CONSTRUCT_PRIORITY, build_async.callback);
32
36
grid_view = new GridView (this);
42
46
welcome_screen.append_with_pixbuf (music_folder_icon, _("Locate"), _("Change your music folder."));
44
48
welcome_screen.activated.connect (welcome_screen_activated);
49
_devices = new Gee.HashMap<Device, int> ();
46
51
embedded_alert = new Granite.Widgets.EmbeddedAlert ();
48
53
// Refresh view layout
56
connect_data_signals ();
51
57
yield set_media_async (lm.media ());
52
connect_data_signals ();
55
60
private void connect_data_signals () {
58
63
* possible with internal media. This view wrapper is not intended for use
59
64
* with external (i.e. doesn't belong to library) media anyway.
66
lm.device_added.connect (on_device_added);
67
lm.device_removed.connect (on_device_removed);
68
lm.device_name_changed.connect (on_device_name_changed);
61
69
lm.media_added.connect (on_library_media_added);
62
70
lm.media_removed.connect (on_library_media_removed);
63
71
lm.media_updated.connect (on_library_media_updated);
74
private void on_device_added (Device d) {
75
int id = welcome_screen.append (d.get_icon().to_string (), _("Import your Music"), _("Import all your Music from %s into your library.").printf(d.getDisplayName()));
77
welcome_screen.show_all ();
80
private void on_device_removed (Device d) {
81
int id = _devices.get (d);
83
welcome_screen.remove_item (_devices.get (d));
85
_devices.unset (d, null);
88
private void on_device_name_changed (Device d) {
89
welcome_screen.remove_item (_devices.get (d));
90
_devices.unset (d, null);
91
int id = welcome_screen.append (d.get_icon().to_string (), _("Import your Music"), _("Import all your Music from %s into your library.").printf(d.getDisplayName()));
93
welcome_screen.show_all ();
66
96
private void on_library_media_added (Gee.Collection<int> added_ids) {
67
97
// Convert ids to real media
68
98
var to_add = lm.media_from_ids (added_ids);
105
135
if (!String.is_empty (folder, true))
106
136
lw.setMusicFolder (folder);
139
foreach (var device_entry in _devices.entries) {
140
if (device_entry.value == index) {
141
((Device)device_entry.key).transfer_all_to_library();