public async void ScrollToSwitchCurrentCatalog(CatalogDirection dir)
        {
            if (IsLoading)
            {
                return;
            }
            var value = GetCatalogByDirction(dir);

            if (value != null)
            {
                SetCurrentContent(value);
            }
            else
            {
                if (IsLoadingCatalogData)
                {
                    ToastHelper.ShowMessage("目录数据加载中,请稍后");
                    return;
                }

                if (CurrentBook.CatalogList == null)
                {
                    ToastHelper.ShowMessage("没有目录数据");
                    return;
                }

                await Task.Delay(10);

                NavigationService.NavigateTo(typeof(CatalogPage));
            }
        }
        /// <summary>
        ///  根据方向获取目录
        /// </summary>
        /// <param name="dir"></param>
        /// <returns></returns>
        public BookCatalog GetCatalogByDirction(CatalogDirection dir)
        {
            if (CurrentCatalog == null || CurrentBook.CatalogList == null || CurrentBook.CatalogList.Count == 0)
            {
                return(null);
            }

            var temp = CurrentBook.CatalogList.FirstOrDefault(p => p.CatalogUrl == CurrentCatalog.CatalogUrl);

            if (temp == null && dir == CatalogDirection.Next)
            {
                return(null);
            }

            if (temp == null && dir == CatalogDirection.Current)
            {
                return(CurrentCatalog);
            }

            var index = CurrentBook.CatalogList.IndexOf(temp);

            switch (dir)
            {
            case CatalogDirection.Current:

                return(temp);

            case CatalogDirection.Next:

                if (index < CurrentBook.CatalogList.Count - 1)
                {
                    return(CurrentBook.CatalogList[index + 1]);
                }
                break;

            case CatalogDirection.Pre:

                if (index > 0)
                {
                    return(CurrentBook.CatalogList[index - 1]);
                }
                break;
            }

            return(null);
        }
Beispiel #3
0
        private async void SwitchCatalog(CatalogDirection dir)
        {
            try
            {
                if (IsLoadingContent)
                {
                    return;
                }
                IsLoadingContent = true;
                await Task.Delay(0);

                var vm = (BookContentPageViewModel)DataContext;
                vm.ScrollToSwitchCurrentCatalog(dir);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            finally
            {
                IsLoadingContent = false;
            }
        }
        /// <summary>
        /// 根据方向获取目录数据
        /// </summary>
        /// <param name="dir"></param>
        /// <param name="isShowLoading"></param>
        /// <returns></returns>
        public async Task <Tuple <List <string>, string, BookCatalog> > GetCatalogDataByDirection(CatalogDirection dir, bool isShowLoading = false)
        {
            var catalog = GetCatalogByDirction(dir);

            if (catalog == null)
            {
                return(null);
            }

            var value = await GetCatalogContent(catalog, isShowLoading);

            return(new Tuple <List <string>, string, BookCatalog>(value.Item1, value.Item2, catalog));
        }