package com.yamin.reader.activity;
import java.util.ArrayList;
import java.util.List;
import org.geometerplus.android.fbreader.libraryService.BookCollectionShadow;
import org.geometerplus.fbreader.book.Author;
import org.geometerplus.fbreader.fbreader.FBReaderApp;
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
import org.geometerplus.zlibrary.core.language.Language;
import org.geometerplus.zlibrary.core.language.ZLLanguageUtil;
import android.app.ActionBar;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.yamin.reader.R;
import com.yamin.reader.adapter.BookHisFavAdaper;
import com.yamin.reader.database.DbDataOperation;
import com.yamin.reader.model.Book;
import com.yamin.reader.utils.ToolUtils;
public class BookFavoriteActivity extends Activity {
private ListView lfFavoriteList;
BookHisFavAdaper favoriteAdapter;
private ContentResolver resolver;
private TextView titleTxt;
private TextView authorTxt;
private TextView proessTxt;
private TextView storageTxt;
private ImageView coverImg;
private TextView languageTxt;
private Button openBtn;
private Button shareBtn;
private Button delFavBtn;
private Button FavBtn;
private RelativeLayout detailDialoglayout;
private RelativeLayout somethingRl;
private RelativeLayout nothingRl;
PopupWindow mPopuwindow;
private FBReaderApp myFBReaderApp;
private ArrayList<Book> favsData = new ArrayList<Book>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.book_favorite);
resolver = this.getContentResolver();
favsData = DbDataOperation.queryBooksFav(resolver);
favoriteAdapter=new BookHisFavAdaper(this,favsData);
myFBReaderApp = (FBReaderApp) FBReaderApp.Instance();
if (myFBReaderApp == null) {
myFBReaderApp = new FBReaderApp(BookFavoriteActivity.this,
new BookCollectionShadow());
}
getCollection().bindToService(this, null);
ActionBar bar = this.getActionBar();
bar.setDisplayHomeAsUpEnabled(true);
bar.setDisplayShowTitleEnabled(true);
bar.setTitle(R.string.book_favorite);
somethingRl=(RelativeLayout )findViewById(R.id.favorite_something);
nothingRl=(RelativeLayout )findViewById(R.id.favorite_nothing);;
detailDialoglayout = (RelativeLayout) LayoutInflater.from(
BookFavoriteActivity.this).inflate(R.layout.book_details_info,
null);
titleTxt = (TextView) detailDialoglayout
.findViewById(R.id.detail_title);
authorTxt = (TextView) detailDialoglayout
.findViewById(R.id.detail_author);
proessTxt = (TextView) detailDialoglayout
.findViewById(R.id.detail_progress);
proessTxt.setVisibility(View.GONE);
storageTxt = (TextView) detailDialoglayout
.findViewById(R.id.detail_storage);
coverImg = (ImageView) detailDialoglayout
.findViewById(R.id.details_cover);
languageTxt = (TextView) detailDialoglayout
.findViewById(R.id.detail_language);
lfFavoriteList = (ListView) findViewById(R.id.lvBookFavorite);
lfFavoriteList.setAdapter(favoriteAdapter);
setListener();
updateLayout();
}
private void setListener() {
//
lfFavoriteList
.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
// TODO Auto-generated method stub
Book b = favsData.get(position);
// File Exist
if (ToolUtils.fileIsExists(b.getBookPath())) {
// openBook(b.getBookPath());
ZLFile file = ZLFile.createFileByPath(b
.getBookPath());
org.geometerplus.fbreader.book.Book book = getCollection().getBookByFile(file);
if (book != null) {
titleTxt.setText("书名:" + book.getTitle());
/*
if ("00%".equals(b.getBookProgress())) {
proessTxt.setText("进度:未读");
} else {
proessTxt.setText("进度:"
+ b.getBookProgress());
}
*/
storageTxt.setText(book.File.getPath() + "");
String language = book.getLanguage();
if (!ZLLanguageUtil.languageCodes().contains(
language)) {
language = Language.OTHER_CODE;
}
final StringBuilder buffer = new StringBuilder();
final List<Author> authors = book.authors();
for (Author a : authors) {
if (buffer.length() > 0) {
buffer.append(", ");
}
buffer.append(a.DisplayName);
}
Bitmap cover = ToolUtils.getCover(
BookFavoriteActivity.this, book);
Bitmap bmp = BitmapFactory.decodeResource(
getResources(), R.drawable.empty_icon);
if (cover != null) {
coverImg.setImageBitmap(cover);
} else {
coverImg.setImageBitmap(bmp);
}
// coverImg;
authorTxt.setText("作者:" + buffer);
languageTxt.setText("语言:"
+ new Language(language).Name);
}
showDetailsPopupWindow(0, 0, book);
} else {
Toast.makeText(BookFavoriteActivity.this,
"文件已被从SD卡中移除!", Toast.LENGTH_LONG).show();
DbDataOperation.deleteFavBook(resolver,
b.getBookName());
//
favsData = DbDataOperation.queryBooksFav(resolver);
favoriteAdapter.notifyDataSetChanged();
}
//
}
});
}
private void updateLayout(){
if(favoriteAdapter!=null&&favoriteAdapter.getCount()>0){
somethingRl.setVisibility(View.VISIBLE);
nothingRl.setVisibility(View.GONE);
}else{
somethingRl.setVisibility(View.GONE);
nothingRl.setVisibility(View.VISIBLE);
}
}
//
public void showDetailsPopupWindow(int x, int y,
final org.geometerplus.fbreader.book.Book book) {
//
openBtn = (Button) detailDialoglayout.findViewById(R.id.openBookBtn);
shareBtn = (Button) detailDialoglayout.findViewById(R.id.shareBtn);
delFavBtn = (Button) detailDialoglayout.findViewById(R.id.delFavBtn);
FavBtn = (Button) detailDialoglayout.findViewById(R.id.favoriteBtn);
delFavBtn.setVisibility(View.VISIBLE);
FavBtn.setVisibility(View.GONE);
mPopuwindow = new PopupWindow(detailDialoglayout,
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
//
ColorDrawable cd = new ColorDrawable(-0000);
mPopuwindow.setBackgroundDrawable(cd);
mPopuwindow.setOutsideTouchable(true);
mPopuwindow.setFocusable(true);
mPopuwindow.showAtLocation(detailDialoglayout, Gravity.CENTER, x, y);
openBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (mPopuwindow != null && mPopuwindow.isShowing()) {
mPopuwindow.dismiss();
}
if (book != null) {
CoreReadActivity.openBookActivity(
BookFavoriteActivity.this, book, null);
BookFavoriteActivity.this.overridePendingTransition(
R.anim.activity_enter, R.anim.activity_exit);
BookFavoriteActivity.this.finish();
}
}
});
shareBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//
ToolUtils.shareWithOther(BookFavoriteActivity.this, "我觉得"
+ book.getTitle() + "这本书不错,现在推荐给你们!");
}
});
delFavBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
DbDataOperation.deleteFavBook(resolver,
book.File.getShortName());
favsData = DbDataOperation.queryBooksFav(resolver);
favoriteAdapter.setmData(favsData);
favoriteAdapter.notifyDataSetChanged();
Toast.makeText(BookFavoriteActivity.this, "成功删除收藏!",
Toast.LENGTH_LONG).show();
updateLayout();
if (mPopuwindow != null && mPopuwindow.isShowing()) {
mPopuwindow.dismiss();
}
}
});
}
private BookCollectionShadow getCollection() {
return (BookCollectionShadow) myFBReaderApp.Collection;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent i = new Intent(this, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
this.finish();
return true;
default:
return false;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
getCollection().unbind();
if (mPopuwindow != null && mPopuwindow.isShowing()) {
mPopuwindow.dismiss();
}
super.onDestroy();
}
}