public bool Equals(PageId other) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } return(Chapter.Equals(other.Chapter) && PageNumber == other.PageNumber); }
private void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { if (_track.ChapterList.Count == 0) { return; } int playerPosition = mbApiInterface.Player_GetPosition(); Chapter currentChapter = _track.ChapterList.GetCurrentChapterFromPosition(playerPosition); if (!currentChapter.Equals(_currentChapter)) { _mainForm?.Invoke(_mainForm.SetCurrentChapterDelegate, currentChapter); _currentChapter = currentChapter; } // Repeat section if (RepeatSection.RepeatCheck(playerPosition)) { mbApiInterface.Player_SetPosition(RepeatSection.A.Position); } }
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(); } ); } } ); }