Skip to content

Commit

Permalink
混合规则使用##正则##替换
Browse files Browse the repository at this point in the history
  • Loading branch information
Invinciblelee committed May 27, 2019
2 parents 0c820eb + 823d01f commit c3350ae
Show file tree
Hide file tree
Showing 24 changed files with 146 additions and 64 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ public BookShelfBean copy() {
bookShelfBean.lastChapterName = lastChapterName;
bookShelfBean.chapterListSize = chapterListSize;
bookShelfBean.updateOff = updateOff;
bookShelfBean.setVariableString(variableString);
bookShelfBean.variableString = getVariableString();
bookShelfBean.bookInfoBean = bookInfoBean.copy();
if (chapterList != null) {
for (ChapterBean aChapterList : chapterList) {
Expand Down Expand Up @@ -297,7 +297,7 @@ public boolean isLocalBook() {
return LOCAL_TAG.equals(tag);
}

public boolean isAudioBook(){
public boolean isAudioBook() {
return BookType.AUDIO.equals(bookInfoBean.getBookType());
}

Expand Down
16 changes: 16 additions & 0 deletions app/src/main/java/com/monke/monkeybook/bean/BookmarkBean.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import android.os.Parcel;
import android.os.Parcelable;

import androidx.annotation.NonNull;

import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Id;
Expand Down Expand Up @@ -148,4 +150,18 @@ public void setPageIndex(Integer pageIndex) {
public String[] getFilters() {
return new String[]{chapterName, content};
}

@NonNull
@Override
public String toString() {
return "BookmarkBean{" +
"id=" + id +
", noteUrl='" + noteUrl + '\'' +
", bookName='" + bookName + '\'' +
", chapterName='" + chapterName + '\'' +
", chapterIndex=" + chapterIndex +
", pageIndex=" + pageIndex +
", content='" + content + '\'' +
'}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public DownloadBookBean(String name, String author, String tag, String noteUrl,
this.end = end;
}


protected DownloadBookBean(Parcel in) {
name = in.readString();
author = in.readString();
Expand Down Expand Up @@ -147,12 +148,12 @@ public int getSuccessCount() {
return successCount;
}

public int getWaitingCount(){
public int getWaitingCount() {
return this.downloadCount - this.successCount;
}

public synchronized void successCountAdd() {
if(this.successCount < this.downloadCount) {
if (this.successCount < this.downloadCount) {
this.successCount += 1;
}
}
Expand Down
13 changes: 13 additions & 0 deletions app/src/main/java/com/monke/monkeybook/help/ReadBookControl.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ public class ReadBookControl {
private Boolean canKeyTurn;
private Boolean readAloudCanKeyTurn;
private int clickSensitivity;
private Boolean showTitle;
private Boolean clickAllNext;
private Boolean showTimeBattery;
private String lastNoteUrl;
Expand Down Expand Up @@ -183,6 +184,7 @@ private ReadBookControl() {
this.paddingBottom = readPreference.getInt("paddingBottom", 0);
this.pageMode = readPreference.getInt("pageMode", 0);
this.spaceModeIndex = readPreference.getInt("spaceModeIndex", 3);
this.showTitle = readPreference.getBoolean("showTitle", true);

initPageConfiguration();
}
Expand Down Expand Up @@ -766,6 +768,17 @@ public boolean getLightIsFollowSys() {
return readPreference.getBoolean("isfollowsys", true);
}

public void setShowTitle(boolean showTitle){
this.showTitle = showTitle;
SharedPreferences.Editor editor = readPreference.edit();
editor.putBoolean("showTitle", showTitle);
editor.apply();
}

public boolean getShowTitle(){
return showTitle;
}

@NonNull
private Integer getConfigValue(int index, String key) {
Map<String, Integer> configMap = textDrawables.get(index);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ private byte[] generatePostData() {
}

private void generateUrlPath(String ruleUrl) {
url = URLUtils.getAbsoluteURL(baseUrl, ruleUrl);
url = URLUtils.getAbsUrl(baseUrl, ruleUrl);
host = StringUtils.getBaseUrl(url);
urlPath = url.substring(host.length());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ final void processRawUrls(@NonNull List<String> result, @NonNull RulePattern rul

ListIterator<String> iterator = result.listIterator();
while (iterator.hasNext()) {
iterator.set(URLUtils.getAbsoluteURL(getBaseURL(), iterator.next()));
iterator.set(URLUtils.getAbsUrl(getBaseURL(), iterator.next()));
}
}

Expand Down Expand Up @@ -161,7 +161,7 @@ final String processResultUrl(@NonNull String result, @NonNull RulePattern ruleP
final String processRawUrl(@NonNull String result, @NonNull RulePattern rulePattern) {
result = matchRegex(result, rulePattern);

result = URLUtils.getAbsoluteURL(getBaseURL(), result);
result = URLUtils.getAbsUrl(getBaseURL(), result);

return result;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ public void onNext(BookShelfBean bookShelfBean) {
printLog("●成功获取目录列表» 共" + size + "个章节");
ChapterBean chapterBean = bookShelfBean.getChapter(0);
printLog("●章节名称» " + chapterBean.getDurChapterName());
printLog("●章节网址» " + URLUtils.getAbsoluteURL(bookShelfBean.getBookInfoBean().getChapterListUrl(), chapterBean.getDurChapterUrl()));
printLog("●章节网址» " + URLUtils.getAbsUrl(bookShelfBean.getBookInfoBean().getChapterListUrl(), chapterBean.getDurChapterUrl()));
printLog(String.format("★%s 目录结束", getDoTime()));
bookContentDebug(bookShelfBean.getBookInfoBean(), chapterBean);
} else {
Expand Down Expand Up @@ -230,7 +230,7 @@ public void onSubscribe(Disposable d) {

@Override
public void onNext(BookContentBean bookContentBean) {
printLog("●成功获取正文页» " + URLUtils.getAbsoluteURL(bookInfoBean.getChapterListUrl(), bookContentBean.getDurChapterUrl()));
printLog("●成功获取正文页» " + URLUtils.getAbsUrl(bookInfoBean.getChapterListUrl(), bookContentBean.getDurChapterUrl()));
final String content = bookContentBean.getDurChapterContent();
if (content != null && content.length() > 3000) {
printLog("●章节内容» " + content.substring(0, 3000) + "\u00B7\u00B7\u00B7");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -265,46 +265,44 @@ public void onError(Throwable e) {

@Override
public void saveBookmark(BookmarkBean bookmarkBean) {
Observable.create((ObservableOnSubscribe<BookmarkBean>) e -> {
Observable.create((ObservableOnSubscribe<BookShelfBean>) e -> {
BookshelfHelp.saveBookmark(bookmarkBean);
bookShelf.setBookmarkList(BookshelfHelp.queryBookmarkList(bookmarkBean.getBookName()));
e.onNext(bookmarkBean);
e.onNext(bookShelf);
e.onComplete();
})
.subscribeOn(Schedulers.single())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<BookmarkBean>() {
.subscribe(new SimpleObserver<BookShelfBean>() {
@Override
public void onNext(BookmarkBean bookmarkBean) {
mView.updateBookmark(bookShelf);
public void onNext(BookShelfBean bookShelfBean) {
mView.updateBookmark(bookShelfBean);
}

@Override
public void onError(Throwable e) {

}
});
}

@Override
public void delBookmark(BookmarkBean bookmarkBean) {
Observable.create((ObservableOnSubscribe<BookmarkBean>) e -> {
Observable.create((ObservableOnSubscribe<BookShelfBean>) e -> {
BookshelfHelp.delBookmark(bookmarkBean);
bookShelf.setBookmarkList(BookshelfHelp.queryBookmarkList(bookmarkBean.getBookName()));
e.onNext(bookmarkBean);
e.onNext(bookShelf);
e.onComplete();
})
.subscribeOn(Schedulers.single())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<BookmarkBean>() {
.subscribe(new SimpleObserver<BookShelfBean>() {
@Override
public void onNext(BookmarkBean bookmarkBean) {
mView.updateBookmark(bookShelf);
public void onNext(BookShelfBean bookShelfBean) {
mView.updateBookmark(bookShelfBean);
}

@Override
public void onError(Throwable e) {

}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,11 @@ public int onStartCommand(Intent intent, int flags, int startId) {
}
break;
case removeDownloadAction:
int id = intent.getIntExtra("taskId", -1);
removeDownload(id);
if (intent.hasExtra("noteUrl")) {
removeDownload(intent.getStringExtra("noteUrl"));
} else {
removeDownload(intent.getIntExtra("taskId", -1));
}
break;
case cancelAction:
cancelDownload();
Expand Down Expand Up @@ -187,6 +190,20 @@ private void removeDownload(int id) {
}
}

private void removeDownload(String noteUrl) {
if (noteUrl == null) {
return;
}

for (int i = downloadTasks.size() - 1; i >= 0; i--) {
IDownloadTask downloadTask = downloadTasks.valueAt(i);
if (noteUrl.equals(downloadTask.getDownloadBook().getNoteUrl())) {
downloadTask.stopDownload();
break;
}
}
}

private void refreshDownloadList() {
ArrayList<DownloadBookBean> downloadBookBeans = new ArrayList<>();
for (int i = downloadTasks.size() - 1; i >= 0; i--) {
Expand Down
34 changes: 11 additions & 23 deletions app/src/main/java/com/monke/monkeybook/utils/URLUtils.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.monke.monkeybook.utils;

import org.jsoup.helper.StringUtil;

import java.net.MalformedURLException;
import java.net.URL;

Expand All @@ -13,42 +11,32 @@ private URLUtils() {
/**
* 获取绝对地址
*/
public static String getAbsoluteURL(String baseUrl, String relPath) {
public static String getAbsUrl(String baseUrl, String relPath) {
try {
String header = null;
final String header;
int index = indexOfHeader(relPath);
if (index >= 0) {
header = relPath.substring(0, index + 1);
relPath = relPath.substring(index + 1);
}
header = index == -1 ? "" : relPath.substring(0, index + 1);
relPath = relPath.substring(index + 1);

index = indexOfHeader(baseUrl);
if (index >= 0) {
baseUrl = baseUrl.substring(index + 1);
}
baseUrl = index == -1 ? baseUrl : baseUrl.substring(index + 1);

relPath = resolve(baseUrl, relPath);
relPath = header + resolve(baseUrl, relPath);

if (header != null) {
relPath = header + relPath;
}
} catch (Exception ignore) {
}
return relPath;
}

private static int indexOfHeader(String url) {
if (StringUtils.startWithIgnoreCase(url, "@header:")) {
return url.indexOf("}");
}
return -1;
return url.indexOf("}");
}

public static String resolve(String baseUrl, String relPath){
public static String resolve(String baseUrl, String relPath) {
try {
URL absoluteUrl = new URL(baseUrl);
URL parseUrl = new URL(absoluteUrl, relPath);
URL parseUrl = new URL(new URL(baseUrl), relPath);
return parseUrl.toString();
}catch (MalformedURLException ignore) {
} catch (MalformedURLException ignore) {
}
return relPath;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
import com.monke.monkeybook.service.ReadAloudService;
import com.monke.monkeybook.utils.StringUtils;
import com.monke.monkeybook.utils.SystemUtil;
import com.monke.monkeybook.utils.URLUtils;
import com.monke.monkeybook.view.fragment.ChapterDrawerFragment;
import com.monke.monkeybook.view.fragment.dialog.AlertDialog;
import com.monke.monkeybook.view.fragment.dialog.BookmarkDialog;
Expand All @@ -75,6 +76,7 @@
import com.monke.monkeybook.widget.page.PageView;
import com.monke.monkeybook.widget.theme.AppCompat;

import java.net.URL;
import java.util.List;

import butterknife.BindView;
Expand Down Expand Up @@ -480,7 +482,8 @@ private void showHideUrlViews() {
atvLayout.setVisibility(View.GONE);
} else {
int chapterIndex = mPresenter.getBookShelf().getDurChapter();
atvUrl.setText(mPresenter.getBookShelf().getChapter(chapterIndex).getDurChapterUrl());
atvUrl.setText(URLUtils.getAbsUrl(mPresenter.getBookShelf().getBookInfoBean().getChapterListUrl(),
mPresenter.getBookShelf().getChapter(chapterIndex).getDurChapterUrl()));
atvSourceName.setText(mPresenter.getBookShelf().getBookInfoBean().getOrigin());
if (TextUtils.isEmpty(atvUrl.getText())) {
atvDivider.setVisibility(View.GONE);
Expand Down Expand Up @@ -1201,7 +1204,6 @@ public void delBookmark(BookmarkBean bookmarkBean) {
public void openBookmark(BookmarkBean bookmarkBean) {
closeDrawer();
drawerLayout.postDelayed(() -> mPageLoader.skipToChapter(bookmarkBean.getChapterIndex(), bookmarkBean.getPageIndex()), DELAY_MIDDLE);

}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,6 @@ public void itemLongClick(BookmarkBean bookmarkBean) {

@Override
public void updateBookShelf(BookShelfBean bookShelfBean) {
getAdapter().setDataList(bookShelfBean.getBookmarkList());
getAdapter().setDataList(bookShelfBean.getBookmarkList());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
dismissAllowingStateLoss();
bookmarkBean.setContent(StringUtils.valueOf(tvContent.getText()));
if(bookmarkClick != null) {
bookmarkClick.openBookmark(bookmarkBean);
bookmarkClick.saveBookmark(bookmarkBean);
}
});

Expand All @@ -81,14 +81,14 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
dismissAllowingStateLoss();
bookmarkBean.setContent(StringUtils.valueOf(tvContent.getText()));
if(bookmarkClick != null) {
bookmarkClick.openBookmark(bookmarkBean);
bookmarkClick.saveBookmark(bookmarkBean);
}
});
View tvDel = findViewById(R.id.tv_del);
tvDel.setOnClickListener(v -> {
dismissAllowingStateLoss();
if(bookmarkClick != null) {
bookmarkClick.openBookmark(bookmarkBean);
bookmarkClick.delBookmark(bookmarkBean);
}
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import com.monke.monkeybook.model.SearchBookModel;
import com.monke.monkeybook.utils.ListUtils;
import com.monke.monkeybook.utils.NetworkUtil;
import com.monke.monkeybook.utils.ScreenUtils;
import com.monke.monkeybook.utils.ToastUtils;
import com.monke.monkeybook.view.adapter.ChangeSourceAdapter;
import com.monke.monkeybook.widget.refreshview.RefreshRecyclerView;
Expand Down Expand Up @@ -135,7 +136,8 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
@Override
protected void onDialogAttachWindow(@NonNull Window window) {
window.setGravity(Gravity.CENTER);
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
int height = getResources().getDisplayMetrics().heightPixels - ScreenUtils.getStatusBarHeight();
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, height);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
TextView tvDownload = findViewById(R.id.tv_download);

edtStart.setText(String.valueOf(start + 1));
edtEnd.setText(String.valueOf(total - 1));
edtEnd.setText(String.valueOf(total));

edtStart.addTextChangedListener(new TextWatcher() {
@Override
Expand Down
Loading

0 comments on commit c3350ae

Please sign in to comment.