122
122
progress_notification(message, progress);
125
public void set_music_folder(string folder) {
126
settings.setMusicFolder(folder);
128
Thread.create<void*>(set_music_thread_function, false);
130
catch(GLib.Error err) {
131
stdout.printf("Could not create thread to set music folder: %s\n", err.message);
125
public void set_music_folder(string folder) {
126
progress_notification("Importing music from " + folder + ". This may take a while", 0.0);
128
settings.setMusicFolder(folder);
130
Thread.create<void*>(set_music_thread_function, false);
132
catch(GLib.Error err) {
133
stdout.printf("Could not create thread to set music folder: %s\n", err.message);
135
137
// i should do the actual file browsing here
136
public void* set_music_thread_function () {
137
var file = GLib.File.new_for_path(settings.getMusicFolder());
139
var items = fo.count_music_files(file);
140
fo.resetProgress(items);
142
var new_songs = new LinkedList<Song>();
143
var not_imported = new LinkedList<string>();
144
fo.get_music_files(file, ref new_songs, ref not_imported);
151
foreach(Song s in new_songs) {
153
_songs.set(s.rowid, s);
156
//tell user what songs were not imported.
157
foreach(string s in not_imported) {
158
stdout.printf("File %s was not imported\n", s);
161
Idle.add( () => { music_added(not_imported); return false; });
166
public void rescan_music_folder() {
168
Thread.create<void*>(rescan_music_thread_function, false);
170
catch(GLib.Error err) {
171
stdout.printf("Could not create thread to rescan music folder: %s\n", err.message);
175
public void* rescan_music_thread_function () {
176
LinkedList<string> paths = new LinkedList<string>();
178
foreach(Song s in _songs.values) {
182
fo.resetProgress(paths.size);
184
var not_imported = new LinkedList<string>();
185
fo.rescan_music(GLib.File.new_for_path(settings.getMusicFolder()), ref paths, ref not_imported);
187
// all songs remaining are no longer in folder hierarchy
188
dbm.remove_songs(paths);
190
//tell user what songs were not imported.
191
foreach(string s in not_imported) {
192
stdout.printf("File %s was not imported\n", s);
195
Idle.add( () => { music_rescanned(not_imported); return false; });
138
public void* set_music_thread_function () {
139
var file = GLib.File.new_for_path(settings.getMusicFolder());
141
var items = fo.count_music_files(file);
142
fo.resetProgress(items);
144
var new_songs = new LinkedList<Song>();
145
var not_imported = new LinkedList<string>();
146
fo.get_music_files(file, ref new_songs, ref not_imported);
153
foreach(Song s in new_songs) {
155
_songs.set(s.rowid, s);
158
//tell user what songs were not imported.
159
foreach(string s in not_imported) {
160
stdout.printf("File %s was not imported\n", s);
164
music_added(not_imported);
171
public void rescan_music_folder() {
172
progress_notification("Rescanning music for changes. This may take a while", 0.0);
175
Thread.create<void*>(rescan_music_thread_function, false);
177
catch(GLib.Error err) {
178
stdout.printf("Could not create thread to rescan music folder: %s\n", err.message);
182
public void* rescan_music_thread_function () {
183
LinkedList<string> paths = new LinkedList<string>();
185
foreach(Song s in _songs.values) {
189
fo.resetProgress(paths.size);
191
var not_imported = new LinkedList<string>();
192
fo.rescan_music(GLib.File.new_for_path(settings.getMusicFolder()), ref paths, ref not_imported);
194
// all songs remaining are no longer in folder hierarchy
195
dbm.remove_songs(paths);
197
//tell user what songs were not imported.
198
foreach(string s in not_imported) {
199
stdout.printf("File %s was not imported\n", s);
203
music_rescanned(not_imported);
200
210
/******************** Song list columns *******************/
201
211
public ArrayList<Gtk.TreeViewColumn> columns() {