package cn.com.karl.reader;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import cn.com.karl.pageturn.Turntest;
import cn.com.karl.sqlite.BookDAO;
import cn.com.karl.sqlite.CollectDAO;
import cn.com.karl.tabhost.TabHostActivity;
public class QueryList extends Activity {
List<String> list;
Button back;
ListView listView;
File file;
/* 设置长按菜单常量 */
private static final int look = Menu.FIRST;// 查看
private static final int add_local = Menu.FIRST + 1;// 添加到本地书架
private static final int add_collect = Menu.FIRST + 2;// 添加到我的收藏
private static final int delete = Menu.FIRST + 3;// 删除
static int temp;
static String filePath;
ArrayAdapter<String> adapter;
static String bookName;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.query_book_list);
back = (Button) findViewById(R.id.query_back_bt);
listView = (ListView) findViewById(R.id.query_listView);
back.setOnClickListener(onClickListener);
list = FileToStr(BookShelfActivity.txtList);
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, list);
listView.setAdapter(adapter);
super.registerForContextMenu(this.listView);
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
temp = position;
filePath = BookShelfActivity.txtList.get(position).getPath();
bookName = BookShelfActivity.txtList.get(position).getName();
Log.d("###########", "!!!!!!!!!!" + bookName);
return false;
}
});
}
OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(QueryList.this, TabHostActivity.class);
startActivity(intent);
}
};
/**
* 把文件列表转换成字符串
*
* @param
* @return
*/
public List<String> FileToStr(List<File> f) {
ArrayList<String> listStr = new ArrayList<String>();
for (int i = 0; i < f.size(); i++) {
String nameString = f.get(i).getName();
Log.d("#####", "$$$$$$$" + nameString);
listStr.add(nameString);
}
return listStr;
}
/* 长按列表上下文菜单 */
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.setHeaderTitle("操作");
menu.add(0, look, 0, "翻页阅读");
menu.add(1, add_local, 1, "添加到本地书架");
menu.add(2, add_collect, 2, "添加到收藏列表");
menu.add(3, delete, 3, "删除");
super.onCreateContextMenu(menu, v, menuInfo);
}
/**
* 点击上下文的选择事件
*/
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case look:
Intent intent = new Intent(QueryList.this, Turntest.class);
intent.putExtra("filePath", filePath);
startActivity(intent);
break;
case add_local:
addLocal();
break;
case add_collect:
addCollect();
break;
case delete:
deleteDialog(filePath);
break;
}
return true;
}
public boolean delete(String filePath) {
File file = new File(filePath);
if (file.exists()) {
Log.d("#########", "$$$$$$" + filePath + "^^^^^^^^^^^" + temp);
file.delete();
// adapter.notifyDataSetChanged();
handler.sendEmptyMessage(0);
return true;
} else {
return false;
}
}
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
list.remove(temp);
Log.d("#######", "##########刷新adapter");
adapter.notifyDataSetChanged();
};
};
// 删除图书的对话框
private void deleteDialog(final String filePath) {
new AlertDialog.Builder(QueryList.this).setIcon(R.drawable.ic_launcher)
.setTitle("系统提示:").setMessage("是否从本地删除该书籍?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
boolean boo = delete(filePath);
if (boo == true) {
Toast.makeText(getApplicationContext(), "删除成功!",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(),
"删除失败或文件不存在", Toast.LENGTH_SHORT).show();
}
}
}).setNeutralButton("取消", null).create().show();
}
// 添加到本地书架
public void addLocal() {
BookDAO bookdao = new BookDAO(QueryList.this);
Log.d("!!!!!!!!!!!!", "$$$$要保存的信息" + bookName + "@@" + filePath);
long l = bookdao.insert(bookName, filePath, 0);
Log.d("@@@@@@@", "-------添加的返回值-----" + l);
if (l == 0) {
Toast.makeText(this, "书架中已经添加了本书!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "图书添加成功!", Toast.LENGTH_SHORT).show();
}
}
// 添加到收藏列表
public void addCollect() {
CollectDAO collect = new CollectDAO(QueryList.this);
long l = collect.insert(bookName, filePath);
if (l == 0) {
Toast.makeText(this, "收藏列表中已经添加了本书!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "图书收藏成功!", Toast.LENGTH_SHORT).show();
}
}
}