Beispiel #1
0
        public override async void Reload()
        {
            ILoader <BookItem> Loader = ZS.CreateLoader();

            IsLoading = true;

            MessageBus.Subscribe(this, MessageBus_OnDelivery);
            IList <GRRow <BookDisplay> > FirstPage = (await Loader.NextPage(30)).Remap(ToGRRow);

            MessageBus.Unsubscribe(this, MessageBus_OnDelivery);

            Observables <BookItem, GRRow <BookDisplay> > ItemsObservable = new Observables <BookItem, GRRow <BookDisplay> >(FirstPage);

            ItemsObservable.LoadEnd += (s, e) =>
            {
                MessageBus.Unsubscribe(this, MessageBus_OnDelivery);
                IsLoading = false;
            };

            ItemsObservable.LoadStart += (s, e) =>
            {
                IsLoading = true;
                MessageBus.Subscribe(this, MessageBus_OnDelivery);
            };

            ItemsObservable.ConnectLoader(Loader, b => b.Remap(ToGRRow));
            BkTable.Items = ItemsObservable;
            IsLoading     = false;
        }
Beispiel #2
0
        public async void OpenCommentStack(string CommId)
        {
            CommInit = true;

            DisplayControls(CommentControls);

            CommentSection.Visibility = Visibility.Visible;

            bool LoadFirst = true;
            Func <SHTarget, int, uint, string[], PostData> StackRequest = (a, b, c, Ids) =>
            {
                if (LoadFirst)
                {
                    LoadFirst = false;
                    return(Shared.ShRequest.GetCommentStack(Ids[0]));
                }

                return(Shared.ShRequest.GetComments(a, b, c, Ids));
            };

            HSLoader <HSComment> CLoader = new HSLoader <HSComment>(CommId, SHTarget.COMMENT, StackRequest)
            {
                ConvertResult = (x) => x.Flattern(y => y.Replies)
            };

            IEnumerable <HSComment> FirstPage = await CLoader.NextPage();

            CommentsSource = new Observables <HSComment, HSComment>(FirstPage.ToArray());

            CommentsSource.LoadStart += (x, y) => MarkLoading();
            CommentsSource.LoadEnd   += (x, y) => MarkNotLoading();

            CommentsSource.ConnectLoader(CLoader);
            CommentList.ItemsSource = CommentsSource;
        }
        private async void ViewFile( StorageFile file )
        {
            StorageFileStreamer SFS = new StorageFileStreamer( file );
            IList<string> FirstRead = await SFS.NextPage( 50 );

            Observables<string, string> OSF = new Observables<string, string>( FirstRead );
            OSF.ConnectLoader( SFS );

            TextContent.ItemsSource = OSF;
        }
Beispiel #4
0
        private async void ViewFile(StorageFile file)
        {
            StorageFileStreamer SFS       = new StorageFileStreamer(file);
            IList <string>      FirstRead = await SFS.NextPage(50);

            Observables <string, string> OSF = new Observables <string, string>(FirstRead);

            OSF.ConnectLoader(SFS);

            TextContent.ItemsSource = OSF;
        }
Beispiel #5
0
        public async Task OpenReview(Review R)
        {
            CommentLoader CL = new CommentLoader(
                R.Id
                , X.Call <XKey[]>(XProto.WRequest, "GetReplies", R.Id)
                , new CommentLoader.CommentXMLParser(GetReplies)
                );

            IList <Comment> FirstLoad = await CL.NextPage();

            Replies.ConnectLoader(CL);
            Replies.UpdateSource(FirstLoad);
        }
Beispiel #6
0
        public void Reload(Func <IQueryable <Book>, IQueryable <Book> > Filter)
        {
            lock (this)
            {
                if (IsLoading)
                {
                    return;
                }
                IsLoading = true;
            }

            StringResources stx = StringResources.Load("AppResources");

            Message = stx.Text("Loading");

            IQueryable <Book> Books = QuerySet(Shared.BooksDb.Books.AsQueryable());

            if (Filter != null)
            {
                Books = Filter(Books);
            }

            if (!string.IsNullOrEmpty(Search))
            {
                Books = Books.Where(x => x.Title.Contains(Search));
            }

            Books = Books.Include(x => x.Info);

            QueryLoader <Book> BLoader = new QueryLoader <Book>(Books, Shared.BooksDb);
            Observables <Book, GRRow <BookDisplay> > ItemsObservable = new Observables <Book, GRRow <BookDisplay> >();

            ItemsObservable.ConnectLoader(BLoader, x => x.Remap(ToGRRow));

            ItemsObservable.LoadEnd   += (s, e) => IsLoading = false;
            ItemsObservable.LoadStart += (s, e) =>
            {
                Message   = string.Format("{0} {1} / {2}", stx.Text("Loading"), BLoader.CurrentPage, BLoader.NTotal);
                IsLoading = true;
            };

            BkTable.Items = ItemsObservable;

            IsLoading = false;
        }
Beispiel #7
0
        private async void SetTwitter()
        {
            TwitterService.Instance.Initialize(AuthData.Token);
            TwitterLoader Loader = new TwitterLoader();

            Loader.Tags = new List <NameValue <bool> >();
            Loader.Tags.Add(new NameValue <bool>("wenku10", true));

            LoadingRing.IsActive = true;
            Observables <Tweet, Tweet> Tweets = new Observables <Tweet, Tweet>(await Loader.NextPage(20));

            LoadingRing.IsActive = false;

            Tweets.LoadStart += (s, e) => LoadingRing.IsActive = true;
            Tweets.LoadEnd   += (s, e) => LoadingRing.IsActive = false;

            Tweets.ConnectLoader(Loader);

            TweetsView.ItemsSource = Tweets;
        }
Beispiel #8
0
        private async void ReloadComments()
        {
            if (0 < LoadLevel)
            {
                return;
            }

            MarkLoading();
            HSLoader <HSComment> CLoader = new HSLoader <HSComment>(BindItem.Id, SHTarget.SCRIPT, Shared.ShRequest.GetComments)
            {
                ConvertResult = (x) => x.Flattern(y => y.Replies)
            };

            IList <HSComment> FirstPage = await CLoader.NextPage();

            MarkNotLoading();

            if (BindItem.Encrypted)
            {
                if (Crypt == null)
                {
                    CommentsSource = new Observables <HSComment, HSComment>(CrippledComments(FirstPage));
                    CommentsSource.ConnectLoader(CLoader, CrippledComments);
                }
                else
                {
                    CommentsSource = new Observables <HSComment, HSComment>(DecryptComments(FirstPage));
                    CommentsSource.ConnectLoader(CLoader, DecryptComments);
                }
            }
            else
            {
                CommentsSource = new Observables <HSComment, HSComment>(FirstPage);
                CommentsSource.ConnectLoader(CLoader);
            }

            CommentsSource.LoadStart += (x, y) => MarkLoading();
            CommentsSource.LoadEnd   += (x, y) => MarkNotLoading();
            CommentList.ItemsSource   = CommentsSource;
        }
Beispiel #9
0
        public override void Reload()
        {
            IsLoading = true;

            StringResources stx = StringResources.Load("LoadingMessage");

            Message = stx.Str("ProgressIndicator_Message");

            IEnumerable <string> AccessTokens = new TokenManager().AuthList.Remap(x => ( string )x.Value);

            SHSearchLoader SHLoader = new SHSearchLoader(Search, AccessTokens);

            Observables <HubScriptItem, GRRow <HSDisplay> > OHS = new Observables <HubScriptItem, GRRow <HSDisplay> >();

            OHS.ConnectLoader(SHLoader, x => x.Remap(ToGRRow));

            OHS.LoadEnd   += (s, e) => IsLoading = false;
            OHS.LoadStart += (s, e) => IsLoading = true;

            HSTable.Items = OHS;
            IsLoading     = false;
        }
Beispiel #10
0
        private async void ReloadRequests(SHTarget Target)
        {
            if (0 < LoadLevel)
            {
                return;
            }

            ReqTarget = Target;
            MarkLoading();
            HSLoader <SHRequest> CLoader = new HSLoader <SHRequest>(
                BindItem.Id
                , Target
                , (_Target, _Skip, _Limit, _Ids) => Shared.ShRequest.GetRequests(_Target, _Ids[0], _Skip, _Limit)
                );

            CLoader.ConvertResult = xs =>
            {
                XParameter XParam = XGrant.Parameter(BindItem.Id);
                if (XParam != null)
                {
                    foreach (SHRequest x in xs)
                    {
                        x.Granted = XParam.FindParameter(x.Id) != null;
                    }
                }
                return(xs.ToArray());
            };

            IList <SHRequest> FirstPage = await CLoader.NextPage();

            MarkNotLoading();

            RequestsSource = new Observables <SHRequest, SHRequest>(FirstPage);
            RequestsSource.ConnectLoader(CLoader);

            RequestsSource.LoadStart += (x, y) => MarkLoading();
            RequestsSource.LoadEnd   += (x, y) => MarkNotLoading();
            RequestList.ItemsSource   = RequestsSource;
        }
Beispiel #11
0
        private async void ReloadTweets()
        {
            await AuthData.Authenticate();

            TwitterLoader Loader = new TwitterLoader();

            Loader.Keyword = ThisBook.Title.TrimForSearch();
            Loader.Tags    = TagsAvailable;

            LoadingRing.IsActive = true;

            Observables <Tweet, Tweet> Tweets = new Observables <Tweet, Tweet>(await Loader.NextPage(20));

            Tweets.ConnectLoader(Loader);

            Tweets.LoadStart += (s, e) => { LoadingRing.IsActive = true; };
            Tweets.LoadEnd   += (s, e) => { LoadingRing.IsActive = false; };

            LoadingRing.IsActive = false;

            TweetsView.ItemsSource = Tweets;
        }
Beispiel #12
0
        private async void ReloadComments()
        {
            if ( LoadingRing.IsActive ) return;

            MarkLoading();
            HSLoader<HSComment> CLoader = new HSLoader<HSComment>( BindItem.Id, SHTarget.SCRIPT, Shared.ShRequest.GetComments )
            {
                ConvertResult = ( x ) => x.Flattern( y => y.Replies )
            };

            IList<HSComment> FirstPage = await CLoader.NextPage();
            MarkNotLoading();

            if ( BindItem.Encrypted )
            {
                if ( Crypt == null )
                {
                    CommentsSource = new Observables<HSComment, HSComment>( CrippledComments( FirstPage ) );
                    CommentsSource.ConnectLoader( CLoader, CrippledComments );
                }
                else
                {
                    CommentsSource = new Observables<HSComment, HSComment>( DecryptComments( FirstPage ) );
                    CommentsSource.ConnectLoader( CLoader, DecryptComments );
                }
            }
            else
            {
                CommentsSource = new Observables<HSComment, HSComment>( FirstPage );
                CommentsSource.ConnectLoader( CLoader );
            }

            CommentsSource.LoadStart += ( x, y ) => MarkLoading();
            CommentsSource.LoadEnd += ( x, y ) => MarkNotLoading();
            CommentList.ItemsSource = CommentsSource;
        }
Beispiel #13
0
        public async void OpenCommentStack( string CommId )
        {
            CommInit = true;

            DisplayControls( CommentControls );

            SimpleStory.DoubleAnimation(
                CommentStory, CommentSection
                , "(UIElement.RenderTransform).(TranslateTransform.Y)"
                , 0.25 * LayoutSettings.ScreenHeight, 0
            );

            SimpleStory.DoubleAnimation( CommentStory, CommentSection, "Opacity", 0, 1 );

            CommentSection.Visibility = Visibility.Visible;

            bool LoadFirst = true;
            Func<SHTarget, int, uint, string[], PostData> StackRequest = ( a, b, c, Ids ) =>
            {
                if ( LoadFirst )
                {
                    LoadFirst = false;
                    return Shared.ShRequest.GetCommentStack( Ids[ 0 ] );
                }

                return Shared.ShRequest.GetComments( a, b, c, Ids );
            };

            HSLoader<HSComment> CLoader = new HSLoader<HSComment>( CommId, SHTarget.COMMENT, StackRequest )
            {
                ConvertResult = ( x ) => x.Flattern( y => y.Replies )
            };

            IEnumerable<HSComment> FirstPage = await CLoader.NextPage();

            CommentsSource = new Observables<HSComment, HSComment>( FirstPage.ToArray() );

            CommentsSource.LoadStart += ( x, y ) => MarkLoading();
            CommentsSource.LoadEnd += ( x, y ) => MarkNotLoading();

            CommentsSource.ConnectLoader( CLoader );
            CommentList.ItemsSource = CommentsSource;

            CommentStory.Begin();
        }
Beispiel #14
0
        private async void ReloadRequests( SHTarget Target )
        {
            if ( LoadingRing.IsActive ) return;

            ReqTarget = Target;
            MarkLoading();
            HSLoader<SHRequest> CLoader = new HSLoader<SHRequest>(
                BindItem.Id
                , Target
                , ( _Target, _Skip, _Limit, _Ids ) => Shared.ShRequest.GetRequests( _Target, _Ids[0], _Skip, _Limit )
            );
            CLoader.ConvertResult = xs =>
            {
                XParameter XParam = XGrant.Parameter( BindItem.Id );
                if ( XParam != null )
                {
                    foreach ( SHRequest x in xs )
                    {
                        x.Granted = XParam.FindParameter( x.Id ) != null;
                    }
                }
                return xs.ToArray();
            };

            IList<SHRequest> FirstPage = await CLoader.NextPage();
            MarkNotLoading();

            RequestsSource = new Observables<SHRequest, SHRequest>( FirstPage );
            RequestsSource.ConnectLoader( CLoader );

            RequestsSource.LoadStart += ( x, y ) => MarkLoading();
            RequestsSource.LoadEnd += ( x, y ) => MarkNotLoading();
            RequestList.ItemsSource = RequestsSource;
        }
Beispiel #15
0
        public override void Reload()
        {
            if (SourceData == null)
            {
                string[] Lines = new string[0];

                if (Shared.Storage.FileExists(Local))
                {
                    Lines = Shared.Storage.GetString(Local).Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
                }
                else if (PhaseTable != null)
                {
                    if (PhaseTable.Table == null)
                    {
                        SourceData = new List <NameValue <string> >();
                    }
                    else
                    {
                        Lines = Encoding.UTF8.GetString(PhaseTable.Table).Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
                    }
                }

                if (Lines.Any())
                {
                    SourceData = Lines
                                 .Where(x => x.Contains(','))
                                 .Select(x =>
                    {
                        string[] s = x.Split(new char[] { ',' }, 2, StringSplitOptions.RemoveEmptyEntries);
                        return(new NameValue <string>(s[0], s[1]));
                    }).ToList();
                }

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

            LargeList <NameValue <string> > Results = null;

            if (!string.IsNullOrEmpty(Search))
            {
                if (Search[0] == '^')
                {
                    string HSearch = Search.Substring(1);
                    if (!string.IsNullOrEmpty(HSearch))
                    {
                        Results = new LargeList <NameValue <string> >(SourceData.Where(x => x.Name.IndexOf(HSearch) == 0 || x.Value.IndexOf(HSearch) == 0));
                    }
                }
                else if (Search[Search.Length - 1] == '$')
                {
                    string RSearch = Search.Substring(0, Search.Length - 1);
                    if (!string.IsNullOrEmpty(RSearch))
                    {
                        int RLen = RSearch.Length;
                        Results = new LargeList <NameValue <string> >(SourceData.Where(x =>
                        {
                            int RIndex = x.Name.Length - RLen;
                            if (0 < RIndex && x.Name.IndexOf(RSearch) == RIndex)
                            {
                                return(true);
                            }

                            RIndex = x.Value.Length - RLen;
                            if (0 < RIndex && x.Value.IndexOf(RSearch) == RIndex)
                            {
                                return(true);
                            }
                            return(false);
                        }));
                    }
                }
                else
                {
                    Results = new LargeList <NameValue <string> >(SourceData.Where(x => x.Name.Contains(Search) || x.Value.Contains(Search)));
                }
            }
            else
            {
                Results = new LargeList <NameValue <string> >(SourceData);
            }

            Observables <NameValue <string>, GRRow <NameValue <string> > > ItemsObservable = new Observables <NameValue <string>, GRRow <NameValue <string> > >();

            if (Results != null)
            {
                ItemsObservable.ConnectLoader(Results, x => x.Remap(ToGRRow));
            }

            ConvTable.Items = ItemsObservable;
        }
Beispiel #16
0
        public async Task Load()
        {
            IsLoading = true;
            CommentLoader CL = new CommentLoader(
                ThisBook.Id
                , X.Call<XKey[]>( "wenku8.Settings.WRequest, wenku8-protocol", "GetComments", ThisBook.Id )
                , new CommentLoader.CommentXMLParser( GetReviews )
            );
            IList<Comment> FirstLoad = await CL.NextPage();
            IsLoading = false;

            Comments = new Observables<Comment, Comment>( FirstLoad );
            Comments.LoadStart += ( s, e ) => IsLoading = true;
            Comments.LoadEnd += ( se, e ) => IsLoading = false;

            Comments.ConnectLoader( CL );

            NotifyChanged( "Comments" );
            SetControls( "NewComment", "Reload" );
        }
Beispiel #17
0
        public async Task Init()
        {
            if ( DataReady ) return;

            IsLoading = true;
            try
            {
                ZSFeedbackLoader<BookItem> ZSF = new ZSFeedbackLoader<BookItem>( PM.CreateSpider() );
                Data = new Observables<BookItem, BookItem>( await ZSF.NextPage() );
                Data.ConnectLoader( ZSF );

                Data.LoadStart += ( s, e ) => IsLoading = true;
                Data.LoadEnd += ( s, e ) => IsLoading = false;

                DataReady = true;
                NotifyChanged( "Data", "DataReady" );
            }
            finally
            {
                IsLoading = false;
            }
        }
Beispiel #18
0
        private void BookLoaded( IList<BookItem> aList )
        {
            IsLoading.IsActive = false;
            SCondition.Visibility
                = SearchTerm.Visibility
                = Visibility.Collapsed
                ;
            Status.Visibility = Visibility.Visible;

            SearchTerm.IsEnabled = false;

            Status.Text = stx.Text( "Search_ResultStamp_A" )
                + " " + LL.TotalCount + " "
                + stx.Text( "Search_ResultStamp_B" );

            Observables<BookItem, BookItem> ItemsObservable = new Observables<BookItem, BookItem>( aList );
            ItemsObservable.LoadEnd += ( a, b ) =>
            {
                IsLoading.IsActive = false;
            };
            ItemsObservable.LoadStart += ( a, b ) =>
            {
                IsLoading.IsActive = true;
            };

            ItemsObservable.ConnectLoader( LL );
            VGrid.ItemsSource = ItemsObservable;
        }