Skip to content
This repository has been archived by the owner on Mar 3, 2020. It is now read-only.

Commit

Permalink
try to merge duplicate chapters
Browse files Browse the repository at this point in the history
  • Loading branch information
zsakvo committed Dec 8, 2018
1 parent f0b6c2b commit b5f61aa
Show file tree
Hide file tree
Showing 7 changed files with 254 additions and 63 deletions.
181 changes: 147 additions & 34 deletions app/src/main/java/cc/zsakvo/yueduhchelper/BooksCacheFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

import androidx.appcompat.app.AlertDialog;
import cc.zsakvo.yueduhchelper.listener.ReadCacheListener;
Expand All @@ -38,6 +41,10 @@ public class BooksCacheFragment extends PreferenceFragment implements SyncBooksL
private StringBuilder bookContent;
private String bookName;
private ProgressDialog progressDialog;
private Boolean autoMerge;
private List<String> books;
private Map<String, String> bookMaps;
private Map<String, Integer> bookChaptersMaps;

@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
Expand All @@ -48,6 +55,9 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
getPreferenceManager().setSharedPreferencesName("settings");
getPreferenceManager().setSharedPreferencesMode(Context.MODE_PRIVATE);
setPreferencesFromResource(R.xml.books_cache,null);

autoMerge = cha.getSharedPreferences("settings",MODE_PRIVATE).getBoolean("cs_auto_merge",true);

}

private void getBooksCache(){
Expand All @@ -63,16 +73,14 @@ private void writeFile(String content,String bookName){
new WriteFile(this).execute(content,folderPath,bookName);
}



@SuppressWarnings("ConstantConditions")
@Override
public void showBooks( Map<String, Integer> map) {
public void showBooks(List<String> list,Map<String, String> bsm,Map<String, Integer> bcm,Map<String, Integer> bsnm) {
PreferenceScreen p = getPreferenceScreen();
p.removeAll();
PreferenceCategory preferenceCategory = new PreferenceCategory(cha);

Map<String, Integer> map1 = map;
if (map== null||map.isEmpty()){
if (list.size()==0){
preferenceCategory.setTitle("未扫描到书籍缓存");
p.addPreference(preferenceCategory);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(cha);
Expand All @@ -98,26 +106,138 @@ public void onClick(DialogInterface dialog, int which) {
}else {
preferenceCategory.setTitle("扫描到的书籍");
p.addPreference(preferenceCategory);
for (String key : map.keySet()) {
Log.e(TAG, "showBooks: "+key );
if (!key.contains("-")) continue;
String[] ba = key.split("-");

for (String name : list) {
SimpleMenuPreference simpleMenuPreference = new SimpleMenuPreference(cha);

simpleMenuPreference.setTitle(ba[0]);
simpleMenuPreference.setEntries(new CharSequence[]{"导出为TXT"});
simpleMenuPreference.setEntryValues(new CharSequence[]{"0"});
simpleMenuPreference.setSummary("来源:"+ba[1]+"\n"+"缓存章节:"+map.get(key));
simpleMenuPreference.setKey(key);
simpleMenuPreference.setTitle(name);
simpleMenuPreference.setEntries(new CharSequence[]{"导出为TXT","导出为Epub"});
simpleMenuPreference.setEntryValues(new CharSequence[]{"0","1"});
simpleMenuPreference.setSummary("总来源数目:"+bsnm.get(name)+"\n"+"总缓存章节数目:"+bcm.get(name));
simpleMenuPreference.setKey(name+"-"+bsm.get(name));
simpleMenuPreference.setOnPreferenceClickListener(this);
simpleMenuPreference.setOnPreferenceChangeListener(this);
p.addPreference(simpleMenuPreference);

}



// preferenceCategory.setTitle("扫描到的书籍");
// p.addPreference(preferenceCategory);
// for (String key : map.keySet()) {
// Log.e(TAG, "showBooks: "+key );
// if (!key.contains("-")) continue;
// String[] ba = key.split("-");
//
// SimpleMenuPreference simpleMenuPreference = new SimpleMenuPreference(cha);
//
// simpleMenuPreference.setTitle(ba[0]);
// simpleMenuPreference.setEntries(new CharSequence[]{"导出为TXT"});
// simpleMenuPreference.setEntryValues(new CharSequence[]{"0"});
// simpleMenuPreference.setSummary("来源:"+ba[1]+"\n"+"缓存章节:"+map.get(key));
// simpleMenuPreference.setKey(key);
// simpleMenuPreference.setOnPreferenceClickListener(this);
// simpleMenuPreference.setOnPreferenceChangeListener(this);
// p.addPreference(simpleMenuPreference);
//
// }
}
}


// @SuppressWarnings("ConstantConditions")
// @Override
// public void showBooks( Map<String, Integer> map) {
// PreferenceScreen p = getPreferenceScreen();
// p.removeAll();
// PreferenceCategory preferenceCategory = new PreferenceCategory(cha);
//
// if (map== null||map.isEmpty()){
// preferenceCategory.setTitle("未扫描到书籍缓存");
// p.addPreference(preferenceCategory);
// AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(cha);
// alertDialogBuilder.setTitle("提示")
// .setPositiveButton("去设置", new DialogInterface.OnClickListener() {
// @Override
// public void onClick(DialogInterface dialog, int which) {
// startActivity(new Intent(cha,SettingsActivity.class));
// dialog.dismiss();
// }
// })
// .setNegativeButton("取消", new DialogInterface.OnClickListener() {
// @Override
// public void onClick(DialogInterface dialog, int which) {
// dialog.dismiss();
// }
// })
// .setMessage("没有扫描到已缓存内容,是否需要自行去设置缓存路径?")
// .setCancelable(false)
// .create()
// .show();
// Log.e(TAG, "showBooks: "+"null !" );
// }else {
// books = new ArrayList<>();
// bookMaps = new HashMap<String, String>();
// bookChaptersMaps = new HashMap<String, Integer>();
// for (String key : map.keySet()) {
// if (!key.contains("-")) continue;
// String[] ba = key.split("-");
// if (!bookMaps.keySet().contains(ba[0])) {
// books.add(ba[0]);
// bookMaps.put(ba[0],ba[1]);
// bookChaptersMaps.put(ba[0],map.get(key));
// }else {
// bookMaps.put(ba[0],bookMaps.get(ba[0])+","+ba[1]);
// bookChaptersMaps.put(ba[0],bookChaptersMaps.get(ba[0])+map.get(key));
// }
// }
//
//
// preferenceCategory.setTitle("扫描到的书籍");
// p.addPreference(preferenceCategory);
// for (String key : bookMaps.keySet()) {
// Log.e(TAG, "showBooks: "+key );
//
// SimpleMenuPreference simpleMenuPreference = new SimpleMenuPreference(cha);
// key = key.split("-")[0];
// simpleMenuPreference.setTitle(key);
// simpleMenuPreference.setEntries(new CharSequence[]{"导出为TXT","导出为Epub"});
// simpleMenuPreference.setEntryValues(new CharSequence[]{"0","1"});
// simpleMenuPreference.setSummary("来源:"+bookMaps.get(key)+"\n"+"缓存章节:"+bookChaptersMaps.get(key));
// simpleMenuPreference.setKey(key);
// simpleMenuPreference.setOnPreferenceClickListener(this);
// simpleMenuPreference.setOnPreferenceChangeListener(this);
// p.addPreference(simpleMenuPreference);
//
// }
//
//
//
//// preferenceCategory.setTitle("扫描到的书籍");
//// p.addPreference(preferenceCategory);
//// for (String key : map.keySet()) {
//// Log.e(TAG, "showBooks: "+key );
//// if (!key.contains("-")) continue;
//// String[] ba = key.split("-");
////
//// SimpleMenuPreference simpleMenuPreference = new SimpleMenuPreference(cha);
////
//// simpleMenuPreference.setTitle(ba[0]);
//// simpleMenuPreference.setEntries(new CharSequence[]{"导出为TXT"});
//// simpleMenuPreference.setEntryValues(new CharSequence[]{"0"});
//// simpleMenuPreference.setSummary("来源:"+ba[1]+"\n"+"缓存章节:"+map.get(key));
//// simpleMenuPreference.setKey(key);
//// simpleMenuPreference.setOnPreferenceClickListener(this);
//// simpleMenuPreference.setOnPreferenceChangeListener(this);
//// p.addPreference(simpleMenuPreference);
////
//// }
// }
// }

private String cleanSource(String s){
s = s.replaceAll(".+dstiejuan.+","丹书铁券");
return s;
}

@Override
public void onStart(){
super.onStart();
Expand Down Expand Up @@ -149,27 +269,20 @@ public void writeFileResult(Boolean b) {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
switch (newValue.toString()){
// case "0":
// progressDialog = new ProgressDialog(cha);
// bookContent = new StringBuilder();
// bookName = preference.getKey().split("-")[0];
// String bookPath = myCachePath + "/" + preference.getKey() + "/";
// File bookFile = new File(bookPath);
// progressDialog.setProgress(0);
// progressDialog.setTitle("合并中,请稍后……");
// progressDialog.setCancelable(false);
// progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
// progressDialog.show();
// new ReadCache(this, progressDialog, 0).execute("file",bookFile);
// break;
case "0":
String bookPath = myCachePath + "/" + preference.getKey() + "/";
bookName = preference.getKey().split("-")[0];
bookPath = myCachePath + "/" + preference.getKey() + "/";
// String bookPath = myCachePath + "/" + preference.getKey() + "/";
// bookPath = myCachePath + "/" + preference.getKey() + "/";
String[] s = preference.getKey().split("-");
bookName = s[0];
Intent intent = new Intent(cha,TextExportActivity.class);
intent.putExtra("bp",preference.getKey());
intent.putExtra("bn",s[0]);
intent.putExtra("bs",s[1]);
intent.putExtra("cp",myCachePath);
startActivityForResult(intent,0);
break;
case "1":
cha.showSnackBar("暂未开放此功能");
break;
default:
break;
}
Expand Down
28 changes: 22 additions & 6 deletions app/src/main/java/cc/zsakvo/yueduhchelper/TextExportActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,14 @@
import com.jaeger.library.StatusBarUtil;

import java.util.ArrayList;
import java.util.List;

public class TextExportActivity extends AppCompatActivity implements View.OnClickListener {

Toolbar toolbar;
String bookInfo;
String bookName;
String cachePath;
String bookSource;
TextExportFragment fragment;
CoordinatorLayout coordinatorLayout;
MenuItem check_invert;
Expand Down Expand Up @@ -79,15 +82,30 @@ public void onClick(View v) {
}
});

this.bookInfo = getIntent().getStringExtra("bp");
Intent intent = getIntent();
bookName = intent.getStringExtra("bn");
cachePath = intent.getStringExtra("cp");
bookSource = intent.getStringExtra("bs");

fragment = new TextExportFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.export_fragment,fragment).commit();

}

public String getBookInfo(){
return bookInfo;
public String getBookName(){
return bookName;
}

public List<String> getBookInfo(){
List<String> cacheFilePath = new ArrayList<>();
if (bookSource.contains(",")) {
for (String s : bookSource.split(",")) {
cacheFilePath.add(cachePath + "/" + bookName + "-" + s + "/");
}
}else {
cacheFilePath.add(bookSource);
}
return cacheFilePath;
}

private void showChooseChaptersDialog(){
Expand All @@ -109,10 +127,8 @@ private void showChooseChaptersDialog(){
assert fragment != null;
int size = fragment.getSize();

//设置dialog布局
editDialog.setView(layout);

//设置按钮
editDialog.setPositiveButton(getString(R.string.choose_ok)
, new DialogInterface.OnClickListener() {
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
public class TextExportFragment extends PreferenceFragment implements SyncChaptersListener ,Preference.OnPreferenceChangeListener {

private TextExportActivity activity;
private String bookInfo = "";
private List<String> cacheFilePath;
private Boolean[] checkedChapters;
private List<String> list;
private String bookPath;
Expand All @@ -36,13 +36,11 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.books_cache, null);
activity = (TextExportActivity) getActivity();
assert activity != null;
this.bookInfo = activity.getBookInfo();
bookPath = activity.getSharedPreferences("settings",MODE_PRIVATE).getString("cachePath",Environment.getExternalStorageDirectory().getAbsolutePath()+ "/Android/data/com.gedoor.monkeybook/cache/book_cache")+"/"+bookInfo;

this.cacheFilePath = activity.getBookInfo();
}

public void init(){
new SyncChapters(this).execute(bookPath);
void init(){
new SyncChapters(this).execute(cacheFilePath);
}

@Override
Expand All @@ -51,7 +49,7 @@ public void showChapters(List<String> list) {
PreferenceScreen preferenceScreen = getPreferenceScreen();
preferenceScreen.removeAll();
PreferenceCategory preferenceCategory = new PreferenceCategory(activity);
preferenceCategory.setTitle(bookInfo.split("-")[0]+"\t\t共"+list.size()+"章");
preferenceCategory.setTitle(activity.getBookName()+"\t\t共"+list.size()+"章");
preferenceScreen.addPreference(preferenceCategory);
checkedChapters = new Boolean[list.size()];
for (int i=0;i<list.size();i++){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
import java.util.Map;

public interface SyncBooksListener {
void showBooks(Map<String, Integer> map);
void showBooks(List<String> list,Map<String, String> bsm,Map<String, Integer> bcm,Map<String, Integer> bsnm);
}
Loading

0 comments on commit b5f61aa

Please sign in to comment.