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);
}
}