void AnimeFileSummaryControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            try
            {
                if (this.DataContext == null)
                {
                    VideoQualityRecords.Clear();
                    GroupSummaryRecords.Clear();
                    return;
                }

                bool changedCombo = false;

                if (cboSortGroupQual.SelectedIndex != AppSettings.FileSummaryQualSortDefault && cboSortGroupQual.SelectedIndex >= 0)
                {
                    changedCombo = true;
                }
                if (cboFileSummaryType.SelectedIndex != AppSettings.FileSummaryTypeDefault && cboFileSummaryType.SelectedIndex >= 0)
                {
                    changedCombo = true;
                }

                cboSortGroupQual.SelectedIndex   = AppSettings.FileSummaryQualSortDefault;
                cboFileSummaryType.SelectedIndex = AppSettings.FileSummaryTypeDefault;

                if (!changedCombo)
                {
                    RefreshRecords();
                }
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
        private void RefreshRecords()
        {
            try
            {
                IsDataLoading         = true;
                IsDataFinishedLoading = false;



                TotalFileCount = 0;
                double fileSize = 0;

                VM_AniDB_Anime anime = DataContext as VM_AniDB_Anime;
                if (anime == null)
                {
                    return;
                }

                if (IsGroupQualityDetails)
                {
                    List <CL_GroupVideoQuality> summ = VM_ShokoServer.Instance.ShokoServices.GetGroupVideoQualitySummary(anime.AnimeID).CastList <CL_GroupVideoQuality>();
                    foreach (CL_GroupVideoQuality vidQual in summ)
                    {
                        TotalFileCount += vidQual.FileCountNormal + vidQual.FileCountSpecials;
                        fileSize       += vidQual.TotalFileSize;
                    }
                    VideoQualityRecords.ReplaceRange(summ);
                }
                else
                {
                    VideoQualityRecords.Clear();
                }
                if (IsGroupSummary)
                {
                    List <VM_GroupFileSummary> summ = VM_ShokoServer.Instance.ShokoServices.GetGroupFileSummary(anime.AnimeID).CastList <VM_GroupFileSummary>();
                    foreach (VM_GroupFileSummary vidQual in summ)
                    {
                        TotalFileCount += vidQual.FileCountNormal + vidQual.FileCountSpecials;
                        fileSize       += vidQual.TotalFileSize;
                    }
                    GroupSummaryRecords.ReplaceRange(summ);
                }
                else
                {
                    GroupSummaryRecords.Clear();
                }

                TotalFileSize = Formatting.FormatFileSize(fileSize);


                IsDataLoading         = false;
                IsDataFinishedLoading = true;
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
        private void RefreshRecords()
        {
            try
            {
                IsDataLoading         = true;
                IsDataFinishedLoading = false;

                VideoQualityRecords.Clear();
                GroupSummaryRecords.Clear();

                TotalFileCount = 0;
                double fileSize = 0;

                AniDB_AnimeVM anime = this.DataContext as AniDB_AnimeVM;
                if (anime == null)
                {
                    return;
                }

                if (IsGroupQualityDetails)
                {
                    List <JMMServerBinary.Contract_GroupVideoQuality> summ = JMMServerVM.Instance.clientBinaryHTTP.GetGroupVideoQualitySummary(anime.AnimeID);
                    foreach (JMMServerBinary.Contract_GroupVideoQuality contract in summ)
                    {
                        GroupVideoQualityVM vidQual = new GroupVideoQualityVM(contract);
                        TotalFileCount += vidQual.FileCountNormal + vidQual.FileCountSpecials;
                        fileSize       += vidQual.TotalFileSize;
                        VideoQualityRecords.Add(vidQual);
                    }
                }

                if (IsGroupSummary)
                {
                    List <JMMServerBinary.Contract_GroupFileSummary> summ = JMMServerVM.Instance.clientBinaryHTTP.GetGroupFileSummary(anime.AnimeID);
                    foreach (JMMServerBinary.Contract_GroupFileSummary contract in summ)
                    {
                        GroupFileSummaryVM vidQual = new GroupFileSummaryVM(contract);
                        TotalFileCount += vidQual.FileCountNormal + vidQual.FileCountSpecials;
                        fileSize       += vidQual.TotalFileSize;
                        GroupSummaryRecords.Add(vidQual);
                    }
                }

                TotalFileSize = Utils.FormatFileSize(fileSize);


                IsDataLoading         = false;
                IsDataFinishedLoading = true;
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }