示例#1
0
        public async Task LoadLocalAsync(bool SkipLatest = false, int maxItemCount = 10)
        {
            if (IsLoading)
            {
                return;
            }
            IsLoading = true;
            if (AppGlobal.RecentList == null)
            {
                await AppGlobal.LoadHistoryDataAsync();
            }
            var historyList = AppGlobal.RecentList;

            for (int i = 0; i < this.Count; ++i)
            {
                var hvm      = this[i];
                var bookmark = historyList.FirstOrDefault(bk => bk.Position.SeriesId == hvm.Position.SeriesId);
                if (bookmark == null || (SkipLatest && bookmark == historyList[historyList.Count - 1])) //Thus we should remove this item from our collection
                {
                    this.RemoveAt(i);
                    --i;
                }
            }

            int begin = historyList.Count - 1;

            if (SkipLatest)
            {
                --begin;
            }

            for (int idx = 0; idx <= begin; idx++)
            {
                var item = historyList[begin - idx];
                var hvm  = this.FirstOrDefault(vm => vm.Position.SeriesId == item.Position.SeriesId);
                if (hvm == null)
                {
                    hvm = new HistoryItemViewModel(item);
                    if (!String.IsNullOrEmpty(item.DescriptionThumbnailUri))
                    {
                        hvm.CoverImageUri = item.DescriptionThumbnailUri;
                    }
                    this.Insert(idx, hvm);
                }
                else
                {
                    hvm.Position           = item.Position;
                    hvm.ProgressPercentage = item.Progress;
                    hvm.CoverImageUri      = item.DescriptionImageUri;
                    if (!String.IsNullOrEmpty(item.DescriptionThumbnailUri))
                    {
                        hvm.CoverImageUri = item.DescriptionThumbnailUri;
                    }
                    hvm.Description  = item.ContentDescription;
                    hvm.ChapterTitle = item.ChapterTitle;
                    hvm.VolumeTitle  = item.VolumeTitle;
                    hvm.SeriesTitle  = item.SeriesTitle;
                    hvm.UpdateTime   = item.ViewDate;
                    var oldIdx = this.IndexOf(hvm); // should be greater or equal than idx
                    if (oldIdx != idx)
                    {
                        this.Move(oldIdx, idx);
                    }
                }
                if (this.Count >= maxItemCount) // Load the first 10th to show
                {
                    break;
                }
            }

            AppGlobal.IsHistoryListChanged = false;
            NotifyPropertyChanged("IsEmpty");
            IsLoading = false;
            IsLoaded  = true;
        }