示例#1
0
        public static async void CheckNewMusic(FolderTree tree, Action <FolderTree> afterTreeUpdated = null)
        {
            MainPage.Instance?.Loader.ShowIndeterminant("ProcessRequest");
            var data = new TreeUpdateData();

            if (!await tree.CheckNewFile(data))
            {
                if (!string.IsNullOrEmpty(data.Message))
                {
                    MainPage.Instance.ShowNotification(data.Message);
                }
                MainPage.Instance?.Loader.Hide();
                return;
            }
            if (data.More != 0 || data.Less != 0)
            {
                Settings.settings.Tree.FindTree(tree).CopyFrom(tree);
                MusicLibraryPage.SortAndSetAllSongs(Settings.settings.Tree.Flatten());
                foreach (var listener in listeners)
                {
                    listener.PathSet(tree.Path);
                }
                if (data.Less != 0)
                {
                    MediaHelper.RemoveBadMusic();
                }
                afterTreeUpdated?.Invoke(tree);
                App.Save();
            }
            MainPage.Instance?.Loader.Hide();
            string message;

            if (data.More == 0 && data.Less == 0)
            {
                message = Helper.LocalizeMessage("CheckNewMusicResultNoChange");
            }
            else if (data.More == 0)
            {
                message = Helper.LocalizeMessage("CheckNewMusicResultRemoved", data.Less);
            }
            else if (data.Less == 0)
            {
                message = Helper.LocalizeMessage("CheckNewMusicResultAdded", data.More);
            }
            else
            {
                message = Helper.LocalizeMessage("CheckNewMusicResultChange", data.More, data.Less);
            }
            Helper.ShowNotificationWithoutLocalization(message);
        }