2019-04-02 17:41:53 +08:00
package com.novelbook.android.Fragments ;
import android.app.AlertDialog ;
import android.content.Context ;
import android.content.DialogInterface ;
import android.content.Intent ;
import android.content.res.Resources ;
2019-04-06 23:04:42 +08:00
import android.graphics.pdf.PdfDocument ;
2019-04-02 17:41:53 +08:00
import android.net.Uri ;
import android.os.Bundle ;
import android.support.annotation.Nullable ;
import android.support.design.widget.TabLayout ;
import android.support.v4.app.Fragment ;
import android.support.v4.app.FragmentActivity ;
import android.support.v4.app.FragmentManager ;
import android.support.v4.app.FragmentTransaction ;
import android.support.v7.widget.RecyclerView ;
import android.text.TextUtils ;
import android.util.Log ;
import android.util.TypedValue ;
import android.view.LayoutInflater ;
import android.view.View ;
import android.view.ViewGroup ;
import android.widget.ImageView ;
import android.widget.LinearLayout ;
import android.widget.TextView ;
import android.widget.Toast ;
2019-04-06 23:04:42 +08:00
import com.google.gson.Gson ;
2019-04-02 17:41:53 +08:00
import com.novelbook.android.Activity_paihangbang ;
import com.novelbook.android.Activity_shudan ;
import com.novelbook.android.BookActivity ;
import com.novelbook.android.R ;
import com.novelbook.android.ReadActivity ;
import com.novelbook.android.adapter.BookListAdapter ;
2019-04-03 16:21:00 +08:00
import com.novelbook.android.db.Novel ;
2019-04-06 23:04:42 +08:00
import com.novelbook.android.netsubscribe.BookSubscribe ;
import com.novelbook.android.netutils.OnSuccessAndFaultListener ;
import com.novelbook.android.netutils.OnSuccessAndFaultSub ;
2019-04-02 17:41:53 +08:00
import com.novelbook.android.utils.OnItemClickListener ;
2019-04-06 23:04:42 +08:00
import com.novelbook.android.utils.PageFactory ;
2019-04-02 17:41:53 +08:00
import org.litepal.LitePal ;
2019-04-06 23:04:42 +08:00
import org.w3c.dom.Text ;
2019-04-02 17:41:53 +08:00
import java.io.File ;
import java.lang.reflect.Field ;
import java.util.ArrayList ;
import java.util.List ;
import butterknife.BindView ;
import butterknife.ButterKnife ;
/ * *
* A simple { @link Fragment } subclass .
* /
public abstract class BasicFragment extends Fragment {
public static String TAG = " need to be replaced " ;
private View rootView ;
protected abstract int getLayoutRes ( ) ;
protected abstract void initData ( ) ;
protected void initListener ( ) { }
protected abstract void initViews ( ) ;
2019-04-06 23:04:42 +08:00
protected Gson gson = new Gson ( ) ;
2019-04-02 17:41:53 +08:00
// Main2Activity activity;
FragmentActivity activity ;
public BasicFragment ( ) {
// Required empty public constructor
}
@Override
public void onCreate ( Bundle savedInstanceState ) {
super . onCreate ( savedInstanceState ) ;
setFTag ( ) ;
// Log.d(TAG,"fragment onCreate ");
// activity =(Main2Activity)getActivity();
activity = getActivity ( ) ;
initData ( ) ;
// QLog.getLogger().e(dTAG,TAG+" "+ "onCreate");
// mediumFontSize = activity.getMiddleSizeFont();
}
@Override
public View onCreateView ( LayoutInflater inflater , ViewGroup container ,
Bundle savedInstanceState ) {
Log . d ( TAG , " onCreateView " ) ;
View view = inflater . inflate ( getLayoutRes ( ) , container , false ) ;
rootView = view ;
// 初始化View注入
ButterKnife . bind ( this , view ) ;
initListener ( ) ;
initViews ( ) ;
return view ;
// Inflate the layout for this fragment
}
public String getCurrentTag ( ) {
setFTag ( ) ;
return TAG ;
}
public abstract void setFTag ( ) ;
//--------------------------------------------------------------book list adapter------------------------------------------------
/ * interface mOnItemClickListener
{
void onItemClick ( View view , int position ) ;
void onItemLongClick ( View view , int position ) ;
void onLinearOutClick ( View view , int bookId ) ;
}
* /
2019-04-03 16:21:00 +08:00
protected List < Novel > initData ( List < Novel > mDatas , char x )
2019-04-02 17:41:53 +08:00
{
2019-04-03 16:21:00 +08:00
mDatas = new ArrayList < Novel > ( ) ;
2019-04-02 17:41:53 +08:00
for ( int i = 'A' ; i < x ; i + + )
{
2019-04-03 16:21:00 +08:00
Novel bk = new Novel ( ) ;
2019-04-02 17:41:53 +08:00
bk . setAuthor ( " 金庸 " ) ;
2019-04-05 23:59:31 +08:00
bk . setName ( " 射雕英雄传 " + ( char ) i ) ;
2019-04-03 16:21:00 +08:00
bk . setNovelType ( " 武侠 " ) ;
2019-04-09 22:32:02 +08:00
bk . setDesc ( " 南宋时期的武林故事南宋时期的武林故事南宋时期的武林故事南宋时期的武林故事南宋时期的武林故事南宋时期的武林故事南宋时期的武林故事南宋时期的武林故事南宋时期的武林故事南宋时期的武林故事南宋时期的武林故事 " ) ;
2019-04-02 17:41:53 +08:00
mDatas . add ( bk ) ;
}
return mDatas ;
}
void showBookDetail ( int id ) {
Intent intent = new Intent ( activity , BookActivity . class ) ;
2019-04-06 23:04:42 +08:00
intent . putExtra ( " bookId " , id ) ;
2019-04-02 17:41:53 +08:00
startActivity ( intent ) ;
}
2019-04-06 23:04:42 +08:00
void getBookInfo ( Novel novel ) {
2019-04-09 22:32:02 +08:00
int novelId = novel . getNovelId ( ) ;
2019-04-06 23:04:42 +08:00
long id = novel . getId ( ) ;
2019-04-02 17:41:53 +08:00
2019-04-06 23:04:42 +08:00
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 ) ;
2019-04-07 23:49:08 +08:00
PageFactory . getInstance ( ) . prepareBook ( nv ) ; //打开本地小说内容
ReadActivity . openBook ( nv , activity ) ;
2019-04-06 23:04:42 +08:00
}
@Override
public void onFault ( String errorMsg ) {
//失败
Toast . makeText ( getActivity ( ) , " Novel 请求失败: " + errorMsg , Toast . LENGTH_SHORT ) . show ( ) ;
2019-04-07 23:49:08 +08:00
PageFactory . getInstance ( ) . prepareBook ( novel ) ; //打开本地小说内容
ReadActivity . openBook ( novel , activity ) ;
2019-04-06 23:04:42 +08:00
}
} , getActivity ( ) ) ) ;
}
2019-04-03 16:21:00 +08:00
void openBook ( Novel book , BookListAdapter mAdapter ) {
2019-04-02 17:41:53 +08:00
//从新从数据库抓取该书的最新阅读进度
2019-04-03 16:21:00 +08:00
Novel book1 = ( Novel ) LitePal . find ( Novel . class , book . getId ( ) ) ;
2019-04-02 17:41:53 +08:00
if ( book1 ! = null ) { //读取本地最新进度
2019-04-03 16:21:00 +08:00
book . setLastReadPos ( book1 . getLastReadPos ( ) ) ;
book . setLastReadChapt ( book1 . getLastReadChapt ( ) ) ;
2019-04-02 17:41:53 +08:00
}
2019-04-05 23:59:31 +08:00
Toast . makeText ( activity , book . getName ( ) + " 加载 " , Toast . LENGTH_SHORT ) . show ( ) ;
2019-04-02 17:41:53 +08:00
2019-04-06 23:04:42 +08:00
if ( ! book . isLocalBook ( ) ) {
getBookInfo ( book ) ;
2019-04-07 23:49:08 +08:00
2019-04-06 23:04:42 +08:00
return ;
2019-04-02 17:41:53 +08:00
}
2019-04-06 23:04:42 +08:00
final String path = book . getNovelPath ( ) ;
2019-04-02 17:41:53 +08:00
File file = new File ( path ) ;
if ( ! file . exists ( ) ) {
new AlertDialog . Builder ( activity )
. setTitle ( activity . getString ( R . string . app_name ) )
. setMessage ( path + " 文件不存在,是否删除该书本? " )
. setPositiveButton ( " 删除 " , new DialogInterface . OnClickListener ( ) {
@Override
public void onClick ( DialogInterface dialog , int which ) {
2019-04-06 23:04:42 +08:00
LitePal . deleteAll ( Novel . class , " id = ? " , book . getId ( ) + " " ) ;
if ( mAdapter ! = null ) { mAdapter . setBookList ( LitePal . where ( " isOnShelf=? " , " 1 " ) . find ( Novel . class ) ) ; }
2019-04-02 17:41:53 +08:00
}
} ) . setCancelable ( true ) . show ( ) ;
return ;
}
2019-04-06 23:04:42 +08:00
2019-04-05 23:59:31 +08:00
ReadActivity . openBook ( book , activity ) ;
2019-04-02 17:41:53 +08:00
}
void showShudanDetail ( int shuandanId ) {
Intent intent = new Intent ( activity , Activity_shudan . class ) ;
intent . putExtra ( " NAME " , shuandanId ) ;
startActivity ( intent ) ;
}
//-------------------------------------------------------------------------------------book list adapter end--------------------------------------------------
void showPaihangbang ( String type ) { //show paihangbang activity
Intent intent = new Intent ( activity , Activity_paihangbang . class ) ;
intent . putExtra ( " BANGNAME " , type ) ;
startActivity ( intent ) ;
}
}