package com.yamin.reader.activity; import java.io.File; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import org.geometerplus.android.fbreader.libraryService.BookCollectionShadow; import org.geometerplus.fbreader.fbreader.FBReaderApp; import org.geometerplus.zlibrary.core.filesystem.ZLFile; import android.app.ActionBar; import android.app.Activity; import android.app.SearchManager; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.graphics.drawable.ColorDrawable; import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.SearchView; import android.widget.TextView; import android.widget.Toast; import com.yamin.reader.R; import com.yamin.reader.adapter.FileListAdapter; import com.yamin.reader.database.DbDataOperation; import com.yamin.reader.database.DbTags; import com.yamin.reader.model.Book; import com.yamin.reader.model.FileItem; import com.yamin.reader.utils.ToolUtils; public class FileSearchResultActivity extends Activity { private ListView resultLV; private TextView resultTV; private ArrayList<String> searchitems; private ArrayList<FileItem> items; private FileListAdapter adapter; private FileItem item; private PopupWindow mPopuwindow; private LinearLayout openFileBtn; private LinearLayout shelfFileBtn; private LinearLayout favoriteFileBtn; private FBReaderApp myFBReaderApp; private ContentResolver resolver; SearchManager searchManager; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); ActionBar bar = this.getActionBar(); bar.setDisplayShowTitleEnabled(true); bar.setDisplayHomeAsUpEnabled(true); bar.setDisplayShowHomeEnabled(true); bar.setTitle(R.string.book_file_manager); bar.setSubtitle("搜索结果"); setContentView(R.layout.book_search_result); resolver=getContentResolver(); myFBReaderApp = (FBReaderApp) FBReaderApp.Instance(); if (myFBReaderApp == null) { myFBReaderApp = new FBReaderApp(FileSearchResultActivity.this, new BookCollectionShadow()); } getCollection().bindToService(this, null); resultLV=(ListView)findViewById(R.id.bookSearchList); resultTV=(TextView)findViewById(R.id.bookResultNum); searchitems=new ArrayList<String>(); items=new ArrayList<FileItem>(); Intent i=this.getIntent(); if(i!=null){ searchitems=i.getStringArrayListExtra("SEARCH_LIST"); if(searchitems!=null&&searchitems.size()>0){ for(int j=0;j<searchitems.size();j++){ String path=searchitems.get(j); File f=new File(path); item=new FileItem(f.getName(),ToolUtils.getIcon(FileSearchResultActivity.this, f.getName()) ,f.getPath() ,ToolUtils.FormetFileSize(f.length())); items.add(item); } } adapter=new FileListAdapter(FileSearchResultActivity.this, items); resultLV.setAdapter(adapter); resultTV.setText("共为您搜索到"+items.size()+"个文件"); resultTV.setTextColor(this.getResources().getColor(R.color.holo_blue_light)); resultLV.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long arg3) { showPopupWindow(view,position); } }); } } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.bookfile_menu, menu); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView) menu.findItem( R.id.menu_file_search).getActionView(); searchView.setSearchableInfo(searchManager .getSearchableInfo(getComponentName())); searchView.setIconifiedByDefault(true); } return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_file_search: onSearchRequested(); return true; case android.R.id.home: Intent i = new Intent(this, FileBrowserActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); return true; default: return false; } } /* * @弹出POPU MENU */ public void showPopupWindow(View v,int position) { final int p=position; LinearLayout layout = (LinearLayout) LayoutInflater.from(this).inflate( R.layout.file_item_menu, null); mPopuwindow = new PopupWindow(layout, ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); openFileBtn = (LinearLayout) layout.findViewById(R.id.openFileBtn); shelfFileBtn = (LinearLayout) layout.findViewById(R.id.shelfFileBtn); favoriteFileBtn = (LinearLayout) layout.findViewById(R.id.favoriteFileBtn); openFileBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub ZLFile file = ZLFile.createFileByPath(items.get(p).getFilepath()); org.geometerplus.fbreader.book.Book book = getCollection().getBookByFile(file); if (book != null) { CoreReadActivity.openBookActivity(FileSearchResultActivity.this, book, null); FileSearchResultActivity.this.overridePendingTransition(R.anim.activity_enter, R.anim.activity_exit); FileSearchResultActivity.this.finish(); } } }); shelfFileBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String filename = items.get(p).getFileName(); String filepath = items.get(p).getFilepath(); // Local Book---Easy Book Book book = new Book(); book.setBookName(filename); book.setBookPath(filepath); book.setBookSize(items.get(p).getFilesize()); Book b = DbDataOperation.queryBook(resolver,DbTags.FIELD_BOOK_NAME,filename); if (b == null) { DbDataOperation.insertToBookInfo(resolver, book); Toast.makeText(FileSearchResultActivity.this, "成功添加到书架", Toast.LENGTH_LONG).show(); } } }); favoriteFileBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String filename = items.get(p).getFileName(); String filepath = items.get(p).getFilepath(); // Local Book---Easy Book Book book = new Book(); book.setBookName(filename); book.setBookPath(filepath); book.setBookSize(items.get(p).getFilesize()); Date date=new Date(); // SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm"); String bookAddTime=formatter.format(date); book.setBookAddTime(bookAddTime); Book b = DbDataOperation.queryBookFav(resolver,DbTags.FIELD_BOOK_NAME,filename); if (b == null) { DbDataOperation.insertToBookFav(resolver, book); Toast.makeText(FileSearchResultActivity.this, "成功收藏!", Toast.LENGTH_LONG).show(); } else{ Toast.makeText(FileSearchResultActivity.this, "已经存在收藏夹中!", Toast.LENGTH_LONG).show(); } } }); ColorDrawable cd = new ColorDrawable(-0000); mPopuwindow.setBackgroundDrawable(cd); mPopuwindow.setBackgroundDrawable(cd); mPopuwindow.setOutsideTouchable(true); mPopuwindow.setFocusable(true); // showAsDropDown // popupWindow.showAsDropDown(findViewById(R.id.tv_title), x, 10); mPopuwindow.showAsDropDown(v); } private BookCollectionShadow getCollection() { return (BookCollectionShadow) myFBReaderApp.Collection; } @Override protected void onDestroy() { getCollection().unbind(); if(mPopuwindow!=null&&mPopuwindow.isShowing()){ mPopuwindow.dismiss(); } Log.i("MAIN", "onDestroy()"); super.onDestroy(); } }