private void LoadBookInfo( string id ) { string[] Argv = id.Split( new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries ); if ( Argv.Length == 2 ) { string Mode = Argv[ 0 ]; id = Argv[ 1 ]; if ( Mode == "Spider" ) { // XXX: TODO return; } else if ( Mode == "Local" ) { // XXX: TODO return; } // Commencing Level2 initializations new global::wenku8.System.Bootstrap().Level2(); } BookItem BookEx = X.Instance<BookItem>( XProto.BookItemEx, id ); BookEx.XSetProp( "Mode" , X.Const<string>( XProto.WProtocols, "ACTION_BOOK_META" ) ); ThisBook = BookEx; if ( SkipThisPage ) { new VolumeLoader( GoToContentReader ).Load( ThisBook ); return; } if ( ViewInfo ) { BookLoader BL = new BookLoader( UpdateBookInfoSection ); BL.Load( ThisBook, true ); BL.LoadIntro( ThisBook, true ); } if ( ViewTOC ) { new VolumeLoader( SetTemplateTOC ).Load( ThisBook ); } if ( ViewComments ) { SetTemplateComment( ThisBook ); } }
public void OpenBook( Chapter C, bool Reload = false, int Anchor = -1 ) { if ( OpenLock ) return; if ( C == null ) { Logger.Log( ID, "Oops, Chapter is null. Can't open nothing.", LogType.WARNING ); return; } if ( !Reload && C.Equals( CurrentChapter ) ) { if ( Anchor != -1 ) { ContentView.UserStartReading = false; ContentView.GotoIndex( Anchor ); } return; } ClosePane(); OpenMask(); CurrentChapter = C; OpenLock = true; // Throw this into background as it is resources intensive Task.Run( () => { if ( CurrentBook == null || C.aid != CurrentBook.Id ) { Shared.LoadMessage( "BookConstruct" ); if ( C is SChapter ) { CurrentBook = new BookInstruction( C as SChapter ); } else { CurrentBook = X.Instance<BookItem>( XProto.BookItemEx, C ); } } BookLoader BL = new BookLoader( BookLoaded ); BL.Load( CurrentBook, true ); // Fire up Episode stepper, used for stepping next episode if ( ES == null || ES.Chapter.aid != C.aid ) { Shared.LoadMessage( "EpisodeStepper" ); VolumeLoader VL = new VolumeLoader( ( BookItem b ) => { ES = new EpisodeStepper( new VolumesInfo( b ) ); SetInfoTemplate(); } ); VL.Load( CurrentBook ); } else { Worker.UIInvoke( () => SetInfoTemplate() ); } ReloadReader = () => { ContentFrame.Content = null; Shared.LoadMessage( "RedrawingContent" ); ContentView?.Dispose(); ContentView = new ReaderContent( this, Anchor ); SetLayoutAware(); ContentFrame.Content = ContentView; // Load Content at the very end ContentView.Load( false ); }; // Override reload here since // Since the selected index just won't update if ( Reload ) { ChapterLoader CL = new ChapterLoader( CurrentBook, x => { OpenLock = false; Redraw(); } ); // if book is local, use the cache CL.Load( CurrentChapter, CurrentBook.IsLocal ); } else { Worker.UIInvoke( () => { // Lock should be released before redrawing start OpenLock = false; Redraw(); } ); } } ); }
private void LoadBookInfo( BookItem Book ) { BookLoader BL = new BookLoader( ( NaN ) => { if ( SkipThisPage ) { new VolumeLoader( GoToContentReader ).Load( ThisBook ); return; } UpdateBookInfoSection( Book ); if ( ViewTOC ) { new VolumeLoader( SetTemplateTOC ).Load( ThisBook ); } } ); if ( ViewComments ) SetTemplateComment( Book ); BL.Load( ThisBook, useCache ); }
private void BookClicked( BookInfoItem BookItem ) { Logger.Log( ID, string.Format( "Clicked items is {0}, mode {1}", BookItem.Payload, BookItem.Mode ) ); BookItem b = X.Instance<BookItem>( XProto.BookItemEx, BookItem.Payload ); switch ( BookItem.Mode ) { case SectionMode.InfoPane: // Pane Loading = True b.XSetProp( "Mode", X.Const<string>( XProto.WProtocols, "ACTION_BOOK_META" ) ); BookLoader loader = new BookLoader( UpdatePane ); loader.Load( b, true ); loader.LoadIntro( b, true ); RollOutInfoPane(); break; case SectionMode.DirectNavigation: GotoBookInfoView( b.Id ); break; } }