83 lines
2.7 KiB
Java
83 lines
2.7 KiB
Java
package com.bifan.txtreaderlib.tasks;
|
|
|
|
import com.bifan.txtreaderlib.interfaces.ILoadListener;
|
|
import com.bifan.txtreaderlib.interfaces.IPage;
|
|
import com.bifan.txtreaderlib.interfaces.ITxtTask;
|
|
import com.bifan.txtreaderlib.main.TxtReaderContext;
|
|
import com.bifan.txtreaderlib.utils.ELogger;
|
|
|
|
/**
|
|
* Created by bifan-wei
|
|
* on 2017/11/27.
|
|
*/
|
|
|
|
public class TxtPageLoadTask implements ITxtTask {
|
|
private String tag = "TxtPageLoadTask";
|
|
private final int startParagraphIndex;
|
|
private final int startCharIndex;
|
|
|
|
public TxtPageLoadTask(int startParagraphIndex, int startCharIndex) {
|
|
this.startParagraphIndex = startParagraphIndex;
|
|
this.startCharIndex = startCharIndex;
|
|
}
|
|
|
|
@Override
|
|
public void Run(ILoadListener callBack, TxtReaderContext readerContext) {
|
|
callBack.onMessage("start load pageData");
|
|
|
|
IPage firstPage = null;
|
|
IPage midPage;
|
|
IPage nextPage = null;
|
|
|
|
midPage = readerContext.getPageDataPipeline().getPageStartFromProgress(startParagraphIndex, startCharIndex);
|
|
|
|
if (midPage != null && midPage.HasData()) {
|
|
firstPage = readerContext.getPageDataPipeline().getPageEndToProgress(midPage.getFirstChar().ParagraphIndex, midPage.getFirstChar().CharIndex - 1);
|
|
}
|
|
|
|
if (midPage != null && midPage.isFullPage()) {
|
|
nextPage = readerContext.getPageDataPipeline().getPageStartFromProgress(midPage.getLastChar().ParagraphIndex, midPage.getLastChar().CharIndex + 1);
|
|
}
|
|
|
|
ELogger.log(tag, "获取进度数据完成");
|
|
ELogger.log(tag, "startParagraphIndex/ startCharIndex+" + startParagraphIndex + "/" + startCharIndex);
|
|
|
|
//show the data
|
|
if (firstPage != null) {
|
|
ELogger.log(tag, "firstPage:" + firstPage.toString());
|
|
if (!firstPage.HasData()) {
|
|
firstPage = null;
|
|
}
|
|
} else {
|
|
ELogger.log(tag, "firstPage is null");
|
|
}
|
|
|
|
if (midPage != null) {
|
|
ELogger.log(tag, "midPage:" + midPage.toString());
|
|
if (!midPage.HasData()) {
|
|
midPage = null;
|
|
}
|
|
} else {
|
|
ELogger.log(tag, "midPage is null");
|
|
}
|
|
|
|
if (nextPage != null) {
|
|
ELogger.log(tag, "nextPage:" + nextPage.toString());
|
|
if (!nextPage.HasData()) {
|
|
nextPage = null;
|
|
}
|
|
} else {
|
|
ELogger.log(tag, "nextPage is null");
|
|
}
|
|
|
|
readerContext.getPageData().setFirstPage(firstPage);
|
|
readerContext.getPageData().setMidPage(midPage);
|
|
readerContext.getPageData().setLastPage(nextPage);
|
|
|
|
ITxtTask txtTask = new DrawPrepareTask();
|
|
txtTask.Run(callBack, readerContext);
|
|
|
|
}
|
|
|
|
}
|