void FBReader::tryShowFootnoteView(const std::string &id, const std::string &type) { if (type == "external") { openLinkInBrowser(id); } else if (type == "internal") { if (myMode == BOOK_TEXT_MODE && !myModel.isNull()) { BookModel::Label label = myModel->label(id); if (!label.Model.isNull()) { if (label.Model == myModel->bookTextModel()) { bookTextView().gotoParagraph(label.ParagraphNumber); } else { FootnoteView &view = ((FootnoteView&)*myFootnoteView); view.setModel(label.Model); setMode(FOOTNOTE_MODE); view.gotoParagraph(label.ParagraphNumber); } setHyperlinkCursor(false); refreshWindow(); } } } else if (type == "book") { DownloadBookRunnable downloader(id); downloader.executeWithUI(); if (downloader.hasErrors()) { downloader.showErrorMessage(); } else { shared_ptr<Book> book; createBook(downloader.fileName(), book); if (!book.isNull()) { Library::Instance().addBook(book); openBook(book); refreshWindow(); } } } }
void FBReader::tryShowFootnoteView(const std::string &id, const std::string &type) { if (type == "external") { shared_ptr<ProgramCollection> collection = webBrowserCollection(); if (!collection.isNull()) { shared_ptr<Program> program = collection->currentProgram(); if (!program.isNull()) { program->run("openLink", id); } } } else if (type == "internal") { if (((myMode == BOOK_TEXT_MODE) || (myMode == FOOTNOTE_MODE) || (myMode == HYPERLINK_NAV_MODE)) && (myModel != 0)) { BookModel::Label label = myModel->label(id); if (!label.Model.isNull()) { if ((myMode != FOOTNOTE_MODE) && (label.Model == myModel->bookTextModel())) { bookTextView().gotoParagraph(label.ParagraphNumber); } else { FootnoteView &view = ((FootnoteView&)*myFootnoteView); view.setModel(label.Model, myModel->description()->language()); setMode(FOOTNOTE_MODE); view.gotoParagraph(label.ParagraphNumber); } setHyperlinkCursor(false); refreshWindow(); } } } else if (type == "book") { DownloadBookRunnable downloader(id); downloader.executeWithUI(); if (downloader.hasErrors()) { downloader.showErrorMessage(); } else { openFile(downloader.fileName()); } } }
void FBReader::tryShowFootnoteView(const std::string &id, bool external) { if (external) { shared_ptr<ProgramCollection> collection = webBrowserCollection(); if (!collection.isNull()) { shared_ptr<Program> program = collection->currentProgram(); if (!program.isNull()) { program->run("openLink", id); } } } else { if ((myMode == BOOK_TEXT_MODE) && (myModel != 0)) { BookModel::Label label = myModel->label(id); if (!label.Model.isNull()) { if (label.Model == myModel->bookTextModel()) { bookTextView().gotoParagraph(label.ParagraphNumber); } else { FootnoteView &view = ((FootnoteView&)*myFootnoteView); view.setModel(label.Model); setMode(FOOTNOTE_MODE); view.gotoParagraph(label.ParagraphNumber); } setHyperlinkCursor(false); refreshWindow(); } } } }
void FBReader::setMode(ViewMode mode) { if (mode == myMode) { return; } if (mode != BOOK_TEXT_MODE) { myActionOnCancel = RETURN_TO_TEXT_MODE; } myPreviousMode = myMode; myMode = mode; switch (myMode) { case BOOK_TEXT_MODE: setHyperlinkCursor(false); ((ZLTextView&)*myBookTextView).forceScrollbarUpdate(); setView(myBookTextView); break; case CONTENTS_MODE: ((ContentsView&)*myContentsView).gotoReference(); setView(myContentsView); break; case FOOTNOTE_MODE: setView(myFootnoteView); break; case LIBRARY_MODE: { shared_ptr<Book> currentBook = myModel->book(); ((LibraryView&)*myLibraryByAuthorView).showBook(currentBook); ((LibraryView&)*myLibraryByTagView).showBook(currentBook); showLibraryView(); break; } case BOOKMARKS_MODE: break; case NETWORK_LIBRARY_MODE: setView(myNetworkLibraryView); break; case UNDEFINED_MODE: case ALL_MODES: break; } refreshWindow(); }
void FBReader::setMode(ViewMode mode) { if (mode == myMode) { return; } if (mode != BOOK_TEXT_MODE) { myActionOnCancel = RETURN_TO_TEXT_MODE; } myPreviousMode = myMode; myMode = mode; switch (myMode) { case HYPERLINK_NAV_MODE: case BOOK_TEXT_MODE: setHyperlinkCursor(false); ((ZLTextView&)*myBookTextView).forceScrollbarUpdate(); setView(myBookTextView); break; case CONTENTS_MODE: ((ContentsView&)*myContentsView).gotoReference(); setView(myContentsView); break; case FOOTNOTE_MODE: setView(myFootnoteView); break; case BOOK_COLLECTION_MODE: collectionView().openWithBook((myModel != 0) ? myModel->description() : 0); setView(myCollectionView); break; case BOOKMARKS_MODE: break; case NET_LIBRARY_MODE: setView(myNetLibraryView); break; case UNDEFINED_MODE: case ALL_MODES: break; } }