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