public UserConfigStorage() { AppManager.Instance.UserManager.AfterGetData = AfterGetData; AppManager.Instance.UserManager.AfterSaved = user => { var oldUser = usersList.FirstOrDefault(u => u.Id == user.Id); if (oldUser != null) { usersList.Remove(oldUser); } usersList.Add((T)user); usersList.Save(); }; usersList.OnMerge += usersList_OnMerge; }
protected virtual void DeleteTrackList (CachedList<DatabaseTrackInfo> list) { is_deleting = true; DeleteTrackJob.Total += (int) list.Count; List<DatabaseTrackInfo> skip_deletion = null; // Remove from file system foreach (DatabaseTrackInfo track in list) { if (track == null) { DeleteTrackJob.Completed++; continue; } try { DeleteTrackJob.Status = String.Format ("{0} - {1}", track.ArtistName, track.TrackTitle); if (!DeleteTrack (track)) { if (skip_deletion == null) { skip_deletion = new List<DatabaseTrackInfo> (); } skip_deletion.Add (track); } } catch (Exception e) { Log.Exception (e); ErrorSource.AddMessage (e.Message, track.Uri.ToString ()); } DeleteTrackJob.Completed++; if (DeleteTrackJob.Completed % 10 == 0 && !DeleteTrackJob.IsFinished) { OnTracksDeleted (); } } is_deleting = false; if (DeleteTrackJob.Total == DeleteTrackJob.Completed) { delete_track_job.Finish (); delete_track_job = null; } if (skip_deletion != null) { list.Remove (skip_deletion); skip_deletion.Clear (); skip_deletion = null; } // Remove from database if (list.Count > 0) { ServiceManager.DbConnection.Execute (remove_list_command, DateTime.Now, list.CacheId, list.CacheId); } ThreadAssist.ProxyToMain (delegate { OnTracksDeleted (); OnUserNotifyUpdated (); OnUpdated (); }); }
protected virtual void DeleteTrackList(CachedList <DatabaseTrackInfo> list) { is_deleting = true; DeleteTrackJob.Total += (int)list.Count; List <DatabaseTrackInfo> skip_deletion = null; // Remove from file system foreach (DatabaseTrackInfo track in list) { if (track == null) { DeleteTrackJob.Completed++; continue; } try { DeleteTrackJob.Status = String.Format("{0} - {1}", track.ArtistName, track.TrackTitle); if (!DeleteTrack(track)) { if (skip_deletion == null) { skip_deletion = new List <DatabaseTrackInfo> (); } skip_deletion.Add(track); } } catch (Exception e) { Log.Exception(e); ErrorSource.AddMessage(e.Message, track.Uri.ToString()); } DeleteTrackJob.Completed++; if (DeleteTrackJob.Completed % 10 == 0 && !DeleteTrackJob.IsFinished) { OnTracksDeleted(); } } is_deleting = false; if (DeleteTrackJob.Total == DeleteTrackJob.Completed) { delete_track_job.Finish(); delete_track_job = null; } if (skip_deletion != null) { list.Remove(skip_deletion); skip_deletion.Clear(); skip_deletion = null; } // Remove from database if (list.Count > 0) { ServiceManager.DbConnection.Execute(remove_list_command, DateTime.Now, list.CacheId, list.CacheId); } ThreadAssist.ProxyToMain(delegate { OnTracksDeleted(); OnUserNotifyUpdated(); OnUpdated(); }); }