working on network
This commit is contained in:
parent
90af9bbce2
commit
bd17a920c0
|
@ -33,6 +33,7 @@ import com.novelbook.android.netutils.OnSuccessAndFaultListener;
|
||||||
import com.novelbook.android.netutils.OnSuccessAndFaultSub;
|
import com.novelbook.android.netutils.OnSuccessAndFaultSub;
|
||||||
import com.novelbook.android.utils.BookUtil;
|
import com.novelbook.android.utils.BookUtil;
|
||||||
import com.novelbook.android.utils.GsonUtil;
|
import com.novelbook.android.utils.GsonUtil;
|
||||||
|
import com.novelbook.android.utils.MyImageLoader;
|
||||||
import com.novelbook.android.utils.NovelParseUtil;
|
import com.novelbook.android.utils.NovelParseUtil;
|
||||||
import com.novelbook.android.utils.PageFactory;
|
import com.novelbook.android.utils.PageFactory;
|
||||||
import com.youth.banner.loader.ImageLoader;
|
import com.youth.banner.loader.ImageLoader;
|
||||||
|
@ -125,8 +126,12 @@ public class BookActivity extends Activity_base {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setTitle() {
|
protected void setTitle() {
|
||||||
String title = getIntent().getStringExtra("BOOKNAME");
|
// String title = getIntent().getStringExtra("BOOKNAME");
|
||||||
this.setTitle(title);
|
// this.setTitle(title);
|
||||||
|
|
||||||
|
int bookId = getIntent().getIntExtra("bookId",0);
|
||||||
|
// this.setTitle("bookName");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -146,9 +151,10 @@ public class BookActivity extends Activity_base {
|
||||||
|
|
||||||
private void setBookInfo() {
|
private void setBookInfo() {
|
||||||
}
|
}
|
||||||
private MyLoader loader = new MyLoader();
|
private MyImageLoader loader = new MyImageLoader();
|
||||||
public void setBookDetailInfo( ){
|
public void setBookDetailInfo( ){
|
||||||
setShelfButtonText();
|
setShelfButtonText();
|
||||||
|
this.setTitle(mNovel.getName());//why not apply
|
||||||
this.txtAuth.setText(mNovel.getAuthor());
|
this.txtAuth.setText(mNovel.getAuthor());
|
||||||
this.txtCategory.setText(mNovel.getNovelType());
|
this.txtCategory.setText(mNovel.getNovelType());
|
||||||
this.txtDesc.setText(mNovel.getDescription());
|
this.txtDesc.setText(mNovel.getDescription());
|
||||||
|
@ -156,7 +162,6 @@ public class BookActivity extends Activity_base {
|
||||||
this.txtDesc2.setText(mNovel.getDescription());
|
this.txtDesc2.setText(mNovel.getDescription());
|
||||||
this.txtLatestCate.setText(mNovel.getLastestChapterName());
|
this.txtLatestCate.setText(mNovel.getLastestChapterName());
|
||||||
if(mNovel.getLastUpateTime()>0){
|
if(mNovel.getLastUpateTime()>0){
|
||||||
;
|
|
||||||
this.txtLatestCate.setText( new Date(mNovel.getLastUpateTime()).toString() +"\n"+txtLatestCate.getText());
|
this.txtLatestCate.setText( new Date(mNovel.getLastUpateTime()).toString() +"\n"+txtLatestCate.getText());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,12 +175,7 @@ public class BookActivity extends Activity_base {
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
private class MyLoader extends ImageLoader {
|
|
||||||
@Override
|
|
||||||
public void displayImage(Context context, Object path, ImageView imageView) {
|
|
||||||
Glide.with(context).load((String) path).into(imageView);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void setShelfButtonText(){
|
void setShelfButtonText(){
|
||||||
String title = mNovel.isOnShelf()?"移除书架":"加入书架";
|
String title = mNovel.isOnShelf()?"移除书架":"加入书架";
|
||||||
btnShelf.setText(title);
|
btnShelf.setText(title);
|
||||||
|
@ -283,30 +283,7 @@ public class BookActivity extends Activity_base {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void getMuluInfo(){
|
|
||||||
BookSubscribe.getNovelSites(novelId,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
|
|
||||||
@Override
|
|
||||||
public void onSuccess(String result) {
|
|
||||||
//成功
|
|
||||||
try {
|
|
||||||
|
|
||||||
NovelSites nvs = (NovelSites) gson.fromJson(result,NovelSites.class);
|
|
||||||
pageFactory.prepareBook(mNovel,nvs,BookActivity.this);
|
|
||||||
|
|
||||||
} catch ( Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
Toast.makeText(BookActivity.this,"getMuluInfo 请求成功 " ,Toast.LENGTH_SHORT).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFault(String errorMsg) {
|
|
||||||
//失败
|
|
||||||
Toast.makeText(BookActivity.this,"getMuluInfo 请求失败"+errorMsg,Toast.LENGTH_SHORT).show();
|
|
||||||
}
|
|
||||||
},BookActivity.this));
|
|
||||||
}
|
|
||||||
|
|
||||||
void getBookInfo(){
|
void getBookInfo(){
|
||||||
|
|
||||||
|
@ -322,47 +299,36 @@ public class BookActivity extends Activity_base {
|
||||||
nv = gson.fromJson(result,Novel.class);
|
nv = gson.fromJson(result,Novel.class);
|
||||||
// nv = GsonUtil.getNovel(result);
|
// nv = GsonUtil.getNovel(result);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(!isLocalDbExist){
|
if(!isLocalDbExist){
|
||||||
// nv.saveAsync();
|
// nv.saveAsync();
|
||||||
nv.save ();
|
nv.save ();
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
|
|
||||||
List<Novel> nvs = LitePal.where("novelId=?",novelId).find(Novel.class);
|
|
||||||
for (Novel novel:nvs
|
|
||||||
) {
|
|
||||||
Log.d(TAG,String.format("novel id %s before update: lastUpdateTime: %s",novel.getId(),novel.getLastUpateTime()));
|
|
||||||
}
|
|
||||||
|
|
||||||
// nv.setLastUpateTime(new Date().getTime());
|
|
||||||
nv.updateAll("novelId=?",novelId);
|
nv.updateAll("novelId=?",novelId);
|
||||||
|
|
||||||
nvs = LitePal.where("novelId=?",novelId).find(Novel.class);
|
|
||||||
|
|
||||||
for (Novel novel:nvs
|
|
||||||
) {
|
|
||||||
Log.d(TAG,String.format("novel id %s after update: lastUpdateTime: %s",novel.getId(),novel.getLastUpateTime()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
mNovel = Novel.getNovelBySvrId(novelId);
|
||||||
List<Novel> nvs = LitePal.where("novelId=?",novelId).find(Novel.class);
|
if(null != mNovel) {
|
||||||
|
|
||||||
if(nvs.size()>0) {
|
|
||||||
mNovel = nvs.get(0);
|
|
||||||
handler.sendEmptyMessage(1);
|
handler.sendEmptyMessage(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
getMuluInfo();
|
pageFactory.prepareBook(mNovel, BookActivity.this);
|
||||||
Toast.makeText(BookActivity.this,"Novel 请求成功:"+result,Toast.LENGTH_SHORT).show();
|
|
||||||
|
// Toast.makeText(BookActivity.this,"Novel 请求成功:"+result,Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFault(String errorMsg) {
|
public void onFault(String errorMsg) {
|
||||||
//失败
|
//失败
|
||||||
Toast.makeText(BookActivity.this,"Novel 请求失败:"+errorMsg,Toast.LENGTH_SHORT).show();
|
Toast.makeText(BookActivity.this,"Novel 请求失败:"+errorMsg,Toast.LENGTH_SHORT).show();
|
||||||
|
mNovel = Novel.getNovelBySvrId(novelId);
|
||||||
|
if(null != mNovel) {
|
||||||
|
handler.sendEmptyMessage(1);
|
||||||
|
pageFactory.prepareBook(mNovel, BookActivity.this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
},BookActivity.this));
|
},BookActivity.this));
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
import android.graphics.pdf.PdfDocument;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
|
@ -26,6 +27,7 @@ import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
import com.novelbook.android.Activity_paihangbang;
|
import com.novelbook.android.Activity_paihangbang;
|
||||||
import com.novelbook.android.Activity_shudan;
|
import com.novelbook.android.Activity_shudan;
|
||||||
import com.novelbook.android.BookActivity;
|
import com.novelbook.android.BookActivity;
|
||||||
|
@ -33,9 +35,14 @@ import com.novelbook.android.R;
|
||||||
import com.novelbook.android.ReadActivity;
|
import com.novelbook.android.ReadActivity;
|
||||||
import com.novelbook.android.adapter.BookListAdapter;
|
import com.novelbook.android.adapter.BookListAdapter;
|
||||||
import com.novelbook.android.db.Novel;
|
import com.novelbook.android.db.Novel;
|
||||||
|
import com.novelbook.android.netsubscribe.BookSubscribe;
|
||||||
|
import com.novelbook.android.netutils.OnSuccessAndFaultListener;
|
||||||
|
import com.novelbook.android.netutils.OnSuccessAndFaultSub;
|
||||||
import com.novelbook.android.utils.OnItemClickListener;
|
import com.novelbook.android.utils.OnItemClickListener;
|
||||||
|
import com.novelbook.android.utils.PageFactory;
|
||||||
|
|
||||||
import org.litepal.LitePal;
|
import org.litepal.LitePal;
|
||||||
|
import org.w3c.dom.Text;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
@ -57,6 +64,7 @@ public abstract class BasicFragment extends Fragment {
|
||||||
protected abstract void initData();
|
protected abstract void initData();
|
||||||
protected void initListener(){}
|
protected void initListener(){}
|
||||||
protected abstract void initViews();
|
protected abstract void initViews();
|
||||||
|
protected Gson gson = new Gson();
|
||||||
// Main2Activity activity;
|
// Main2Activity activity;
|
||||||
FragmentActivity activity;
|
FragmentActivity activity;
|
||||||
|
|
||||||
|
@ -129,11 +137,39 @@ public abstract class BasicFragment extends Fragment {
|
||||||
|
|
||||||
void showBookDetail(int id) {
|
void showBookDetail(int id) {
|
||||||
Intent intent = new Intent(activity, BookActivity.class);
|
Intent intent = new Intent(activity, BookActivity.class);
|
||||||
intent.putExtra("BOOKNAME",id);
|
intent.putExtra("bookId",id);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void getBookInfo(Novel novel){
|
||||||
|
String novelId = novel.getNovelId();
|
||||||
|
long id = novel.getId();
|
||||||
|
|
||||||
|
|
||||||
|
BookSubscribe.getNovel(novel.getNovelId(),new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(String result) {
|
||||||
|
//成功
|
||||||
|
|
||||||
|
Novel nv ;
|
||||||
|
nv = gson.fromJson(result,Novel.class);
|
||||||
|
nv.update(id);
|
||||||
|
|
||||||
|
nv= LitePal.find(Novel.class,id);
|
||||||
|
|
||||||
|
PageFactory.getInstance().prepareBook(nv, getActivity());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFault(String errorMsg) {
|
||||||
|
//失败
|
||||||
|
Toast.makeText(getActivity(),"Novel 请求失败:"+errorMsg,Toast.LENGTH_SHORT).show();
|
||||||
|
PageFactory.getInstance().prepareBook(novel, getActivity()); //打开本地小说内容
|
||||||
|
}
|
||||||
|
},getActivity()));
|
||||||
|
|
||||||
|
}
|
||||||
void openBook(Novel book, BookListAdapter mAdapter) {
|
void openBook(Novel book, BookListAdapter mAdapter) {
|
||||||
|
|
||||||
//从新从数据库抓取该书的最新阅读进度
|
//从新从数据库抓取该书的最新阅读进度
|
||||||
|
@ -145,14 +181,15 @@ public abstract class BasicFragment extends Fragment {
|
||||||
}
|
}
|
||||||
Toast.makeText(activity, book.getName() + "加载", Toast.LENGTH_SHORT).show();
|
Toast.makeText(activity, book.getName() + "加载", Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
final String path = book.getNovelPath();
|
if(!book.isLocalBook()){
|
||||||
if(null ==path) {
|
getBookInfo(book);
|
||||||
List<Novel> bookLists = LitePal.findAll(Novel.class);
|
ReadActivity.openBook(book ,activity);
|
||||||
if(bookLists.size()>0) {
|
return;
|
||||||
openBook(bookLists.get(0),null);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
final String path = book.getNovelPath();
|
||||||
|
|
||||||
File file = new File(path);
|
File file = new File(path);
|
||||||
if (!file.exists()){
|
if (!file.exists()){
|
||||||
new AlertDialog.Builder(activity)
|
new AlertDialog.Builder(activity)
|
||||||
|
@ -161,12 +198,17 @@ public abstract class BasicFragment extends Fragment {
|
||||||
.setPositiveButton("删除", new DialogInterface.OnClickListener() {
|
.setPositiveButton("删除", new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
LitePal.deleteAll(Novel.class, "bookpath = ?", path);
|
LitePal.deleteAll(Novel.class, "id = ?", book.getId()+"");
|
||||||
if(mAdapter!=null) {mAdapter.setBookList( LitePal.findAll(Novel.class));}
|
if(mAdapter!=null) {mAdapter.setBookList( LitePal.where("isOnShelf=?","1").find(Novel.class));}
|
||||||
}
|
}
|
||||||
}).setCancelable(true).show();
|
}).setCancelable(true).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ReadActivity.openBook(book ,activity);
|
ReadActivity.openBook(book ,activity);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,8 +85,8 @@ public class Fragment_Shelf extends BasicFragment {
|
||||||
flag = new boolean[100];
|
flag = new boolean[100];
|
||||||
// mDatas = initData(mDatas,'X');
|
// mDatas = initData(mDatas,'X');
|
||||||
|
|
||||||
bookLists = LitePal.where("isOnShelf=? or novelId=? ","1","").find(Novel.class);
|
// bookLists = LitePal.where("isOnShelf=? or novelId=? ","1","").find(Novel.class);
|
||||||
|
bookLists = LitePal.where("isOnShelf=? ","1" ).find(Novel.class);
|
||||||
|
|
||||||
|
|
||||||
mAdapter = new BookListAdapter(activity,bookLists,R.layout.recycle_list_item,new OnItemClickListener()
|
mAdapter = new BookListAdapter(activity,bookLists,R.layout.recycle_list_item,new OnItemClickListener()
|
||||||
|
|
|
@ -2,12 +2,14 @@ package com.novelbook.android.adapter;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
import com.novelbook.android.db.Novel;
|
import com.novelbook.android.db.Novel;
|
||||||
|
|
||||||
|
import com.novelbook.android.utils.MyImageLoader;
|
||||||
import com.novelbook.android.utils.OnItemClickListener;
|
import com.novelbook.android.utils.OnItemClickListener;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -17,7 +19,7 @@ public class BookListAdapter extends RecyclerView.Adapter< MyViewHolder> {
|
||||||
private final int EMPTY_VIEW = 1;
|
private final int EMPTY_VIEW = 1;
|
||||||
private final int PROGRESS_VIEW = 2;
|
private final int PROGRESS_VIEW = 2;
|
||||||
private final int IMAGE_VIEW = 3;
|
private final int IMAGE_VIEW = 3;
|
||||||
|
private MyImageLoader loader = new MyImageLoader();
|
||||||
private Context context;
|
private Context context;
|
||||||
private List<Novel> mDatas ;
|
private List<Novel> mDatas ;
|
||||||
private OnItemClickListener mOnItemClickListener;
|
private OnItemClickListener mOnItemClickListener;
|
||||||
|
@ -84,6 +86,9 @@ public class BookListAdapter extends RecyclerView.Adapter< MyViewHolder> {
|
||||||
if (holder.tvAuthor != null) holder.tvAuthor.setText(mDatas.get(position).getAuthor());
|
if (holder.tvAuthor != null) holder.tvAuthor.setText(mDatas.get(position).getAuthor());
|
||||||
if (holder.tvCate != null) holder.tvCate.setText(mDatas.get(position).getNovelType());
|
if (holder.tvCate != null) holder.tvCate.setText(mDatas.get(position).getNovelType());
|
||||||
if (holder.tvDesc != null) holder.tvDesc.setText(mDatas.get(position).getDescription());
|
if (holder.tvDesc != null) holder.tvDesc.setText(mDatas.get(position).getDescription());
|
||||||
|
if (holder.imageView != null && !TextUtils.isEmpty(mDatas.get(position).getCover())) {
|
||||||
|
loader.displayImage(context,mDatas.get(position).getCover(),holder.imageView);
|
||||||
|
}
|
||||||
if(holder.tvNum!=null)holder.tvNum.setText("999");
|
if(holder.tvNum!=null)holder.tvNum.setText("999");
|
||||||
// 如果设置了回调,则设置点击事件
|
// 如果设置了回调,则设置点击事件
|
||||||
if (mOnItemClickListener != null) {
|
if (mOnItemClickListener != null) {
|
||||||
|
|
|
@ -1,10 +1,15 @@
|
||||||
package com.novelbook.android.db;
|
package com.novelbook.android.db;
|
||||||
|
|
||||||
|
|
||||||
|
import android.text.TextUtils;
|
||||||
|
|
||||||
|
import org.litepal.LitePal;
|
||||||
import org.litepal.annotation.Column;
|
import org.litepal.annotation.Column;
|
||||||
import org.litepal.crud.LitePalSupport;
|
import org.litepal.crud.LitePalSupport;
|
||||||
|
import org.w3c.dom.Text;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
public class Novel extends LitePalSupport implements Serializable{
|
public class Novel extends LitePalSupport implements Serializable{
|
||||||
|
@ -173,4 +178,26 @@ public class Novel extends LitePalSupport implements Serializable{
|
||||||
public void setFinished(boolean finished) {
|
public void setFinished(boolean finished) {
|
||||||
isFinished = finished;
|
isFinished = finished;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isLocalBook(){
|
||||||
|
return TextUtils.isEmpty(novelId);
|
||||||
|
}
|
||||||
|
public static Novel getNovelBySvrId(String novelId){
|
||||||
|
|
||||||
|
List<Novel> nvs = LitePal.where("novelId=?",novelId).limit(1).find(Novel.class);
|
||||||
|
if(nvs.size()>0){
|
||||||
|
return nvs.get(0);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public static List<Novel> getNovelsOnShelf(){
|
||||||
|
|
||||||
|
return LitePal.where("isOnShelf=?","1").find(Novel.class);
|
||||||
|
|
||||||
|
}
|
||||||
|
public static List<Novel> getLocalNovels(){
|
||||||
|
|
||||||
|
return LitePal.where("novelPath !=? ","").find(Novel.class);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -289,7 +289,7 @@ public class DirectoryFragment extends Fragment implements View.OnClickListener
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
bookLists = LitePal.where("isOnShelf=?","1").find( Novel.class);
|
bookLists = Novel.getLocalNovels(); // LitePal.where("isOnShelf=?","1").find( Novel.class);
|
||||||
listAdapter.notifyDataSetChanged();
|
listAdapter.notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -391,7 +391,7 @@ public class DirectoryFragment extends Fragment implements View.OnClickListener
|
||||||
case SUCCESS:
|
case SUCCESS:
|
||||||
msg = "导入书本成功";
|
msg = "导入书本成功";
|
||||||
checkItems.clear();
|
checkItems.clear();
|
||||||
bookLists = LitePal.where("isOnShelf=?","1").find( Novel.class);//LitePal.findAll(Novel.class);
|
bookLists = Novel.getLocalNovels();//LitePal.where("isOnShelf=?","1").find( Novel.class);//LitePal.findAll(Novel.class);
|
||||||
listAdapter.notifyDataSetChanged();
|
listAdapter.notifyDataSetChanged();
|
||||||
changgeCheckBookNum();
|
changgeCheckBookNum();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -13,6 +13,7 @@ import android.util.Log;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
import com.novelbook.android.BookActivity;
|
||||||
import com.novelbook.android.MyApp;
|
import com.novelbook.android.MyApp;
|
||||||
import com.novelbook.android.bean.Cache;
|
import com.novelbook.android.bean.Cache;
|
||||||
import com.novelbook.android.bean.NovelSites;
|
import com.novelbook.android.bean.NovelSites;
|
||||||
|
@ -121,15 +122,45 @@ public class BookUtil {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
getSiteRule();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setSiteInfo() {
|
||||||
|
|
||||||
File file = new File(getChapterPath() +mSite.getDomain());
|
File file = new File(getChapterPath() +mSite.getDomain());
|
||||||
if(!file.exists()){
|
if(!file.exists()){
|
||||||
file.mkdir();
|
file.mkdir();
|
||||||
}
|
}
|
||||||
|
mNovel.setDomain(mSite.getDomain());
|
||||||
getSiteRule();
|
mNovel.setMuluUrl(mSite.getMuluUrl());
|
||||||
|
mNovel.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void getTargetSites(){
|
||||||
|
BookSubscribe.getNovelSites(mNovel.getNovelId(),new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(String result) {
|
||||||
|
//成功
|
||||||
|
try {
|
||||||
|
|
||||||
|
NovelSites nvs = (NovelSites) gson.fromJson(result,NovelSites.class);
|
||||||
|
//pageFactory.prepareBook(mNovel,nvs, BookActivity.this);
|
||||||
|
setNovelSites(nvs);
|
||||||
|
|
||||||
|
} catch ( Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
Toast.makeText(mContext,"getMuluInfo 请求成功 " ,Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFault(String errorMsg) {
|
||||||
|
//失败
|
||||||
|
Toast.makeText(mContext,"getMuluInfo 请求失败"+errorMsg,Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
},mContext));
|
||||||
|
}
|
||||||
private void getSiteRule() {
|
private void getSiteRule() {
|
||||||
mSiteRule = null;
|
mSiteRule = null;
|
||||||
BookSubscribe.getSiteRule(mSite.getDomain(),new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
|
BookSubscribe.getSiteRule(mSite.getDomain(),new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
|
||||||
|
@ -148,7 +179,7 @@ public class BookUtil {
|
||||||
sr.save();
|
sr.save();
|
||||||
}
|
}
|
||||||
mSiteRule =sr;
|
mSiteRule =sr;
|
||||||
|
setSiteInfo();
|
||||||
readChaptersAsync();
|
readChaptersAsync();
|
||||||
|
|
||||||
|
|
||||||
|
@ -157,10 +188,17 @@ public class BookUtil {
|
||||||
@Override
|
@Override
|
||||||
public void onFault(String errorMsg) {
|
public void onFault(String errorMsg) {
|
||||||
//失败
|
//失败
|
||||||
|
Log.d(TAG,"error on get sitRule: "+errorMsg);
|
||||||
}
|
}
|
||||||
},mContext));
|
},mContext));
|
||||||
|
|
||||||
|
/*
|
||||||
|
if(mSiteRule==null && mSite!=null) {
|
||||||
|
List<SiteRule> srs = LitePal.where("domain=?", mSite.getDomain()).find(SiteRule.class);
|
||||||
|
if (srs.size() > 0) {
|
||||||
|
mSiteRule = srs.get(0);
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -222,7 +260,7 @@ public class BookUtil {
|
||||||
boolean isLocalImport = TextUtils.isEmpty( novel.getNovelId());
|
boolean isLocalImport = TextUtils.isEmpty( novel.getNovelId());
|
||||||
boolean isOnShelf = isLocalImport || novel.isOnShelf();
|
boolean isOnShelf = isLocalImport || novel.isOnShelf();
|
||||||
boolean isLoadChaptsFromRemote = !isLocalImport ;// && !novel.isFinished() ; //是否从目标网站下载目录
|
boolean isLoadChaptsFromRemote = !isLocalImport ;// && !novel.isFinished() ; //是否从目标网站下载目录
|
||||||
|
showProgressDialog();
|
||||||
if(isLocalImport) {
|
if(isLocalImport) {
|
||||||
|
|
||||||
mChapters = LitePal.where("novelId=?", mNovel.getId() + "").find(Chapter.class);
|
mChapters = LitePal.where("novelId=?", mNovel.getId() + "").find(Chapter.class);
|
||||||
|
@ -243,14 +281,18 @@ public class BookUtil {
|
||||||
}
|
}
|
||||||
}else{ //读取目录列表
|
}else{ //读取目录列表
|
||||||
MuluStatus m = mMuluStatus;
|
MuluStatus m = mMuluStatus;
|
||||||
Log.d(TAG,String.format("mulu on Site %s download status %s",mSite.getDomain(),mMuluStatus));
|
// Log.d(TAG,String.format("mulu on Site %s download status %s",mSite.getDomain(),mMuluStatus));
|
||||||
|
|
||||||
while(mMuluStatus == MuluStatus.isDownloading){
|
while(mMuluStatus == MuluStatus.isDownloading){
|
||||||
Thread.sleep(50);
|
Thread.sleep(50);
|
||||||
|
Log.d(TAG,String.format("waiting for mulu downloading ,mMuluStatus %s" ,mMuluStatus));
|
||||||
|
if(mMuluStatus == MuluStatus.failed){
|
||||||
|
throw new RuntimeException("读取资源失败,请检查网络");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
dismissProgressDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
// String getMuluUrl() {
|
// String getMuluUrl() {
|
||||||
|
@ -298,7 +340,7 @@ public class BookUtil {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Call call, IOException e) {
|
public void onFailure(Call call, IOException e) {
|
||||||
Log.d(TAG, "onFailure: " + e.getMessage());
|
Log.d(TAG, "onFailure: " + e.getMessage());
|
||||||
if( mNovelSites.getSites().length ==1){
|
if( mNovelSites.getSites().length ==1){ //仅有一个rule,且失败了
|
||||||
mMuluStatus = MuluStatus.failed;
|
mMuluStatus = MuluStatus.failed;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -317,6 +359,10 @@ public class BookUtil {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(Call call, Response response){
|
public void onResponse(Call call, Response response){
|
||||||
ResponseBody body = response.body();
|
ResponseBody body = response.body();
|
||||||
|
if(response.code()!=200){
|
||||||
|
mMuluStatus = MuluStatus.failed;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (body != null) {
|
if (body != null) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -704,9 +750,9 @@ public class BookUtil {
|
||||||
return cachedPath + mNovel.getName() + index ;
|
return cachedPath + mNovel.getName() + index ;
|
||||||
}
|
}
|
||||||
protected String fileChapterName(int chaptId ) {
|
protected String fileChapterName(int chaptId ) {
|
||||||
if(mSite!=null){
|
if(TextUtils.isEmpty(mNovel.getDomain())){
|
||||||
|
|
||||||
return getChapterPath() +mSite.getDomain()+"/"+ chaptId ;
|
return getChapterPath() +mNovel.getDomain()+"/"+ chaptId ;
|
||||||
}
|
}
|
||||||
return getChapterPath() + chaptId ;
|
return getChapterPath() + chaptId ;
|
||||||
}
|
}
|
||||||
|
@ -789,22 +835,29 @@ public class BookUtil {
|
||||||
|
|
||||||
if(!file.exists()) {
|
if(!file.exists()) {
|
||||||
|
|
||||||
|
if(mChapters ==null || mChapters.size() ==0){
|
||||||
|
String error = "网络错误";
|
||||||
|
return error.toCharArray();
|
||||||
|
}
|
||||||
|
|
||||||
Log.d(TAG,String.format("loadChaptContent----start %s" ,new Date().toString() ));
|
Log.d(TAG,String.format("loadChaptContent----start %s" ,new Date().toString() ));
|
||||||
|
|
||||||
loadChaptContent(index);
|
loadChaptContent(index);
|
||||||
|
|
||||||
showProgressDialog();//why not show
|
// showProgressDialog();//why not show
|
||||||
|
|
||||||
int slepttime =0;
|
int slepttime =0;
|
||||||
while(!isDownloadChapt){
|
while(!isDownloadChapt){
|
||||||
Thread.sleep(50);
|
Thread.sleep(50);
|
||||||
slepttime+=50;
|
slepttime+=50;
|
||||||
|
Log.d(TAG,String.format("loadChaptContent slept %s for downloading ",slepttime ) );
|
||||||
}
|
}
|
||||||
dismissProgressDialog();
|
// dismissProgressDialog();
|
||||||
Log.d(TAG,String.format("loadChaptContent slept %s for downloading %s ",slepttime, mChapters.get(index -1).getChapterName() ));
|
// Log.d(TAG,String.format("loadChaptContent slept %s for downloading %s ",slepttime, mChapters.get(index -1).getChapterName() ));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!file.exists()) {
|
if(!file.exists()) {
|
||||||
String error = "网络错误";
|
String error = "网络错误";
|
||||||
return error.toCharArray();
|
return error.toCharArray();
|
||||||
}
|
}
|
||||||
if(mChapters.size() > index ) {
|
if(mChapters.size() > index ) {
|
||||||
|
@ -856,9 +909,7 @@ private void loadChaptContent(int index) throws JSONException, InterruptedExcept
|
||||||
2. 查询主服务器,若有地址更新则更新本地信息,并重复1,若没有更新地址,则地址无效,返回章节内容正待手打
|
2. 查询主服务器,若有地址更新则更新本地信息,并重复1,若没有更新地址,则地址无效,返回章节内容正待手打
|
||||||
*/
|
*/
|
||||||
//
|
//
|
||||||
if(mChapters ==null || mChapters.size() ==0){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Chapter chapter = mChapters.get(index -1);
|
Chapter chapter = mChapters.get(index -1);
|
||||||
String url = chapter.getChapterUrl();
|
String url = chapter.getChapterUrl();
|
||||||
if( TextUtils.isEmpty( url)){
|
if( TextUtils.isEmpty( url)){
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
package com.novelbook.android.utils;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
|
||||||
|
import com.bumptech.glide.Glide;
|
||||||
|
|
||||||
|
public class MyImageLoader extends com.youth.banner.loader.ImageLoader {
|
||||||
|
@Override
|
||||||
|
public void displayImage(Context context, Object path, ImageView imageView) {
|
||||||
|
Glide.with(context).load((String) path).into(imageView);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -508,17 +508,14 @@ public class PageFactory {
|
||||||
currentPage = cancelPage;
|
currentPage = cancelPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void prepareBook(Novel book,NovelSites nvs,Context context){
|
public void prepareBook(Novel book, Context context){
|
||||||
if(mBook!=null &&mBook.getNovelId() !=book.getNovelId()){ //取消未上本书完成的web请求,待验证效果
|
if(mBook!=null &&mBook.getNovelId() !=book.getNovelId()){ //取消未上本书完成的web请求,待验证效果
|
||||||
NetUtil.cancelRequest(mBook.getNovelId());
|
NetUtil.cancelRequest(mBook.getNovelId());
|
||||||
}
|
}
|
||||||
mBookUtil = new BookUtil();
|
mBookUtil = new BookUtil();
|
||||||
this.mBookUtil.setContext(context);
|
this.mBookUtil.setContext(context);
|
||||||
this.mBookUtil.setNovel(book);
|
this.mBookUtil.setNovel(book);
|
||||||
this.mBookUtil.setNovelSites(nvs);
|
this.mBookUtil.getTargetSites();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -526,10 +523,11 @@ public class PageFactory {
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
public void openBook(Novel book ,Context context) throws IOException {
|
public void openBook(Novel book ,Context context) throws IOException {
|
||||||
if(null ==mBookUtil || !TextUtils.isEmpty(book.getNovelPath()) ){ //离线书籍重新初始化加载mBookUtil
|
if(book.isLocalBook() ){ //离线书籍重新初始化加载mBookUtil
|
||||||
mBookUtil = new BookUtil();
|
mBookUtil = new BookUtil();
|
||||||
mBookUtil.setContext(context);
|
mBookUtil.setContext(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
//清空数据
|
//清空数据
|
||||||
currentChapter = 0;
|
currentChapter = 0;
|
||||||
// m_mbBufLen = 0;
|
// m_mbBufLen = 0;
|
||||||
|
|
Loading…
Reference in New Issue