/** * @file IAction.java * * @revision: none * * @version 0.0.01 * @author: Zenki (zhajun), zenki2001cn@163.com * @date: 2011-7-7 下午02:00:28 */ package com.easyview.ebook.reader.engine.core; import com.easyview.ebook.reader.engine.model.Book; import com.easyview.ebook.reader.engine.model.BookSearchInfo; import com.easyview.ebook.reader.engine.model.IBookChapterCursor; import com.easyview.ebook.reader.engine.model.IBookMarkCursor; import com.easyview.ebook.reader.engine.model.BookEmphasisInfo.BookEmphasis; import com.easyview.ebook.reader.engine.model.BookMarkInfo.Bookmark; /** * 閱讀器操作接口.所有交互行為的方法通過該接口來提供. */ public interface IAction { /** * 打開書籍,不帶執行參數. 打開書籍前,需要調用IEngineService.setBook(book)方法進行初始化 * <p> * 如果從書簽位置打開,需要調用 {@link IBookMarkCursor#setBookmarkTogo(Bookmark)} 來設置書簽頁 * <p> */ public void openBook(); /** * 打開書籍,帶執行參數. 打開書籍前,需要調用IEngineService.setBook(Book book)方法進行初始化 * <p> * 如果從書簽位置打開,需要調用 {@link IBookMarkCursor#setBookmarkTogo(Bookmark)} 來設置書簽頁 * <p> * * @param preDo * 開書之前需要執行的回調接口 * @param toDo * 開書之後需要執行的回調接口 */ public void openBook(IActionCall preDo, IActionCall toDo); /** * Page 跳轉頁碼. * * @param pageNum * 需要跳轉的頁碼 */ public void pageJumpTo(final int pageNum); /** * Page 跳轉頁碼. * * @param pageNum * 需要跳轉的頁碼 * @param preDo * 跳轉頁碼之前需要執行的回調接口 * @param toDo * 跳轉頁碼之後需要執行的回調接口 */ public void pageJumpTo(final int pageNum, IActionCall preDo, IActionCall toDo); /** * 向上翻頁,不帶回調接口. */ public void pageUp(); /** * 向上翻頁,帶回調接口. * * @param preDo * 向上翻頁之前需要執行的回調接口 * @param toDo * 向上翻頁之後需要執行的回調接口 */ public void pageUp(IActionCall preDo, IActionCall toDo); /** * 向下翻頁,不帶回調接口. */ public void pageDown(); /** * 向下翻頁,帶回調接口. * * @param preDo * 向下翻頁之前需要執行的回調接口 * @param toDo * 向下翻頁之後需要執行的回調接口 */ public void pageDown(IActionCall preDo, IActionCall toDo); /** * 根據縮放等級調整字體大小,不帶回調接口. * * @param lv 字體等級大小 */ public void pageZoomLevel(int lv); /** * 根據縮放等級調整字體大小,帶回調接口. * * @param lv 字體等級大小 * @param preDo * 調整字體大小之前需要執行的回調接口 * @param toDo * 調整字體大小之後需要執行的回調接口 */ public void pageZoomLevel(int lv, IActionCall preDo, IActionCall toDo); /** * 放大一級字體,不帶回調接口. */ public void pageZoomIn(); /** * 放大一級字體,帶回調接口. * * @param preDo * 執行動作之前的調用的回調接口 * @param toDo * 執行動作之後的調用的回調接口 */ public void pageZoomIn(IActionCall preDo, IActionCall toDo); /** * 縮小一級字體,不帶回調接口. */ public void pageZoomOut(); /** * 縮小一級字體,帶回調接口. * * @param preDo * 執行動作之前的調用的回調接口 * @param toDo * 執行動作之後的調用的回調接口 */ public void pageZoomOut(IActionCall preDo, IActionCall toDo); /** * 進入搜索模式,不帶回調接口. */ public void enterSearchMode(); /** * 進入搜索模式,帶回調接口. * * @param preDo * 執行動作之前的調用的回調接口 * @param toDo * 執行動作之後的調用的回調接口 */ public void enterSearchMode(IActionCall preDo, IActionCall toDo); /** * 搜索下一個結果,不帶回調接口. */ public void searchGoNext(); /** * 搜索下一個結果,帶回調接口. * * @param preDo * 執行動作之前的調用的回調接口 * @param toDo * 執行動作之後的調用的回調接口 */ public void searchGoNext(IActionCall preDo, IActionCall toDo); /** * 搜索前一個結果,不帶回調接口. */ public void searchGoPrevious(); /** * 搜索前一個結果,帶回調接口. * * @param preDo * 執行動作之前的調用的回調接口 * @param toDo * 執行動作之後的調用的回調接口 */ public void searchGoPrevious(IActionCall preDo, IActionCall toDo); /** * 根據搜索結果,跳轉到相應頁面.不帶回調接口. * * @param result 搜索結果. */ public void searchGotoResult(BookSearchInfo.BookSearchResult result); /** * 根據搜索結果,跳轉到相應頁面.帶回調接口. * * @param result 搜索結果. * @param preDo * 執行動作之前的調用的回調接口 * @param toDo * 執行動作之後的調用的回調接口 */ public void searchGotoResult(BookSearchInfo.BookSearchResult result, IActionCall preDo, IActionCall toDo); /** * 退出搜索,不帶回調接口. */ public void quitSearch(); /** * 退出搜索,帶回調接口. * * @param preDo * 執行動作之前的調用的回調接口 * @param toDo * 執行動作之後的調用的回調接口 */ public void quitSearch(IActionCall preDo, IActionCall toDo); /** * 添加書簽,不帶回調接口. */ public void addBookmark(); /** * 添加書簽,帶回調接口. * * @param preDo * 執行動作之前的調用的回調接口 * @param toDo * 執行動作之後的調用的回調接口 */ public void addBookmark(IActionCall preDo, IActionCall toDo); /** * 跳轉至書簽位置,不帶回調接口. * <p> * 需要調用 {@link IBookMarkCursor#setBookmarkTogo(Bookmark)} 來設置書簽頁 * <p> */ public void gotoBookmark(); /** * 跳轉至書簽位置,帶回調接口. * <p> * 需要調用 {@link IBookMarkCursor#setBookmarkTogo(Bookmark)} 來設置書簽頁 * <p> * * @param preDo * 執行動作之前的調用的回調接口 * @param toDo * 執行動作之後的調用的回調接口 */ public void gotoBookmark(IActionCall preDo, IActionCall toDo); /** * 跳轉至書簽位置,不帶回調接口. * * @param bookmark 將要跳轉至的書簽 */ public void gotoBookmark(Bookmark bookmark); /** * 跳轉至書簽位置,帶回調接口. * * @param bookmark 將要跳轉至的書簽 * @param preDo * 執行動作之前的調用的回調接口 * @param toDo * 執行動作之後的調用的回調接口 */ public void gotoBookmark(Bookmark bookmark, IActionCall preDo, IActionCall toDo); /** * 刪除書簽,不帶回調接口. * * @param bookmark * 需要刪除的書簽 * @see com.easyview.ebook.reader.engine.model.BookMarkInfo.Bookmark */ public void deleteBookmark(Bookmark bookmark); /** * 刪除書簽,帶回調接口. * * @param bookmark * 需要刪除的書簽 * @param preDo * 執行動作之前調用的回調接口 * @param toDo * 執行動作之後調用的回調接口 */ public void deleteBookmark(final Bookmark bookmark, IActionCall preDo, IActionCall toDo); /** * 刪除所有書簽,不帶回調接口. */ public void delAllBookmark(); /** * 刪除所有書簽,帶回調接口. * * @param preDo * 執行動作之前調用的回調接口 * @param toDo * 執行動作之後調用的回調接口 */ public void delAllBookmark(IActionCall preDo, IActionCall toDo); /** * 裝載章節信息,不帶回調接口. 章節越多,加載時間越長. */ public void loadChapterInformation(); /** * 裝載章節信息,帶回調接口. 章節越多,加載時間越長. * * @param preDo * 執行動作之前調用的回調接口 * @param toDo * 執行動作之後調用的回調接口 */ public void loadChapterInformation(IActionCall preDo, IActionCall toDo); /** * 通過章節的標題進行跳轉,不帶回調接口. * <p> * * @param title 需要跳轉的章節標題名稱 * {@link IBookChapterCursor#getChapterList()} 獲取章節標題列表. */ public void chapterJumpByTitle(final String title); /** * 通過章節的標題進行跳轉,帶回調接口. * <p> * * @param title 需要跳轉的章節標題名稱 * @param preDo 執行動作之前調用的回調接口 * @param toDo 執行動作之後調用的回調接口 * {@link IBookChapterCursor#getChapterList()} 獲取章節標題列表. */ public void chapterJumpByTitle(final String title, IActionCall preDo, IActionCall toDo); /** * 通過章節序號進行跳轉,不帶回調接口. * <p> * * @param index 章節序號 * {@link IBookChapterCursor#getChapterIndexByTitle(String)} 獲取章節序號. */ public void chapterJumpByIndex(final int index); /** * 通過章節序號進行跳轉,帶回調接口. * <p> * * @param index 章節序號 * @param preDo 執行動作之前調用的回調接口 * @param toDo 執行動作之後調用的回調接口 * {@link IBookChapterCursor#getChapterIndexByTitle(String)} 獲取章節序號. */ public void chapterJumpByIndex(final int index, IActionCall preDo, IActionCall toDo); /** * 跳轉至上一章節,不帶回調接口. */ public void chapterUp(); /** * 跳轉至上一章節,帶回調接口. * * @param preDo * 執行動作之前調用的回調接口 * @param toDo * 執行動作之後調用的回調接口 */ public void chapterUp(IActionCall preDo, IActionCall toDo); /** * 跳轉至下一章節,不帶回調接口. */ public void chapterDown(); /** * 跳轉至上一章節,帶回調接口. * * @param preDo * 執行動作之前調用的回調接口 * @param toDo * 執行動作之後調用的回調接口 */ public void chapterDown(IActionCall preDo, IActionCall toDo); /** * 關閉圖書,不帶回調接口. 退出應用時,需要關閉圖書,釋放資源,通常在onStop中調用. */ public void closeBook(); /** * 關閉圖書,帶回調接口. 退出應用時,需要關閉圖書,釋放資源,通常在onStop中調用. * * @param preDo * 執行動作之前調用的回調接口 * @param toDo * 執行動作之後調用的回調接口 */ public void closeBook(IActionCall preDo, IActionCall toDo); /** * 設置橫豎屏模式,不帶回調接口. * <p> * 设置横屏模式,当前屏幕變化後,調用該方法. * <p> * 该方法是用来通知Engine对变化后的视图做出处理,需要重新設置變化後的視圖寬度和高度. * <p> * 必要时重新初始化并载入Render对象. * * @param viewWidth 變化後的視圖寬度. * @param viewHeight 變化後的視圖高度. */ public void resizeScreen(int viewWidth, int viewHeight); /** * 設置橫豎屏模式,帶回調接口. * <p> * 设置横屏模式,当前屏幕變化後,調用該方法. * <p> * 该方法是用来通知Engine对变化后的视图做出处理,需要重新設置變化後的視圖寬度和高度. * <p> * 必要时重新初始化并载入Render对象. * * @param viewWidth 變化後的視圖寬度. * @param viewHeight 變化後的視圖高度. * @param preDo 執行動作之前調用的回調接口 * @param toDo 執行動作之後調用的回調接口 */ public void resizeScreen(int viewWidth, int viewHeight, IActionCall preDo, IActionCall toDo); /** * 通過點擊屏幕坐標打開鏈接,不帶回調接口. * * @param x * x坐標 * @param y * y坐標 */ public void openLinkByTouch(int x, int y); /** * 通過點擊屏幕坐標打開鏈接,帶回調接口. * * @param x * x坐標 * @param y * y坐標 * @param preDo * 執行動作之前調用的回調接口 * @param toDo * 執行動作之後調用的回調接口 */ public void openLinkByTouch(final int x, final int y, IActionCall preDo, IActionCall toDo); /** * 處理TouchDown事件. 該事件目前只能處理字符高亮. * * @param x * x坐標 * @param y * y坐標 */ public void onTouchDown(final double x, final double y); /** * 處理TouchMove事件. 該事件目前只能處理字符高亮. * * @param x * x坐標 * @param y * y坐標 */ public void onTouchMove(final double x, final double y); /** * 處理TouchUp事件. 該事件目前只能處理字符高亮. * * @param x * x坐標 * @param y * y坐標 */ public void onTouchUp(final double x, final double y); /** * 刪除高亮選擇,不帶回調接口. * * @param emphasis * 高亮選擇對象 */ public void delHighlight(BookEmphasis emphasis); /** * 刪除高亮選擇,帶回調接口. * * @param emp * 高亮選擇對象 * @param preDo * 執行動作之前調用的回調接口 * @param toDo * 執行動作之後調用的回調接口 */ public void delHighlight(final BookEmphasis emp, IActionCall preDo, IActionCall toDo); /** * 刪除所有高亮選擇,不帶回調接口. */ public void delAllHighlight(); /** * 刪除所有高亮選擇,帶回調接口. * * @param preDo * 執行動作之前調用的回調接口 * @param toDo * 執行動作之後調用的回調接口 */ public void delAllHighlight(IActionCall preDo, IActionCall toDo); /** * 跳转至高亮选择,不带回调接口. * * @param emphasis * 高亮選擇對象 */ public void gotoHighlight(BookEmphasis emphasis); /** * 跳转至高亮选择,带回调接口. * * @param emphasis * 高亮選擇對象 * @param preDo * 執行動作之前調用的回調接口 * @param toDo * 執行動作之後調用的回調接口 */ public void gotoHighlight(final BookEmphasis emphasis, IActionCall preDo, IActionCall toDo); /** * 抓取當前頁的文本內容,不带回调接口. * 抓取的文本內容通過Book對象獲取. * @see Book#getPageText(). */ public void fetchText(); /** * 抓取當前頁的文本內容,带回调接口. * 抓取的文本內容通過Book對象獲取. * @see Book#getPageText(). * * @param preDo * 執行動作之前調用的回調接口 * @param toDo * 執行動作之後調用的回調接口 */ public void fetchText(IActionCall preDo, IActionCall toDo); /** * 取消所有尚未执行的动作. */ public void cancelActions(); }