package
com.cookandroid.shopping;
import
java.util.ArrayList;
import
android.app.Activity;
import
android.app.SearchManager;
import
android.content.Context;
import
android.content.Intent;
import
android.net.Uri;
import
android.os.Bundle;
import
android.text.TextUtils;
import
android.view.ContextMenu;
import
android.view.ContextMenu.ContextMenuInfo;
import
android.view.Menu;
import
android.view.MenuItem;
import
android.view.View;
import
android.widget.AdapterView;
import
android.widget.AdapterView.OnItemClickListener;
import
android.widget.ArrayAdapter;
import
android.widget.ListView;
import
android.widget.SearchView;
import
android.widget.SearchView.OnQueryTextListener;
import
android.widget.Toast;
public
class
FavoriteActivity
extends
Activity
implements
OnQueryTextListener {
ListView listView;
Intent intent;
private
DBAdapter mDb;
private
ArrayList<Info> mInfo;
private
ArrayAdapter<Info> mAdapter;
private
static
final
int
MENU_DELETE=
0
;
private
static
final
int
MENU_SHARE=
1
;
private
static
final
int
MENU_ALLDELETE=
2
;
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.favorite_listview);
setTitle(
"즐겨찾기 리스트"
);
listView = (ListView) findViewById(R.id.favoview);
registerForContextMenu(listView);
mDb =
new
DBAdapter(
this
);
mInfo = mDb.getAllInfo();
mAdapter =
new
ArrayAdapter<Info>(
this
, android.R.layout.simple_list_item_1, mInfo);
listView.setAdapter(mAdapter);
listView.setTextFilterEnabled(
true
);
Toast.makeText(FavoriteActivity.
this
,
"길게 누르면 삭제.공유할 수 있습니다."
, Toast.LENGTH_SHORT).show();
listView.setOnItemClickListener(
new
OnItemClickListener() {
@Override
public
void
onItemClick(AdapterView<?> parent, View v,
int
position,
long
id){
Info i = mInfo.get(position);
Toast.makeText(FavoriteActivity.
this
, i.getName(), Toast.LENGTH_SHORT).show();
Intent in =
new
Intent(Intent.ACTION_VIEW, Uri.parse(i.getAddr()));
startActivity(in);
}
});
}
@Override
public
boolean
onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.search_view, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setSubmitButtonEnabled(
true
);
searchView.setOnQueryTextListener(
this
);
return
super
.onCreateOptionsMenu(menu);
}
@Override
public
boolean
onQueryTextChange(String newText)
{
if
(TextUtils.isEmpty(newText))
{
listView.clearTextFilter();
}
else
{
listView.setFilterText(newText.toString());
}
return
true
;
}
@Override
public
boolean
onQueryTextSubmit(String query)
{
return
false
;
}
int
nPosition;
@Override
public
void
onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo){
super
.onCreateContextMenu(menu, v, menuInfo);
nPosition = ((AdapterView.AdapterContextMenuInfo)menuInfo).position;
menu.add(
0
, MENU_DELETE,
0
,
"삭제"
);
menu.add(
0
, MENU_SHARE,
0
,
"공유"
);
menu.add(
0
, MENU_ALLDELETE,
0
,
"모두 삭제"
);
}
@Override
public
boolean
onContextItemSelected(MenuItem item) {
super
.onContextItemSelected(item);
Info i = mInfo.get(nPosition);
switch
(item.getItemId()) {
case
MENU_DELETE:
mDb.deleteInfo(i.getId());
Toast.makeText(FavoriteActivity.
this
,
"삭제되었습니다."
, Toast.LENGTH_SHORT).show();
refreshList();
return
true
;
case
MENU_SHARE:
Intent msg =
new
Intent(Intent.ACTION_SEND);
msg.addCategory(Intent.CATEGORY_DEFAULT);
msg.putExtra(Intent.EXTRA_SUBJECT,
"너에게 추천하는 쇼핑몰이야!"
);
msg.putExtra(Intent.EXTRA_TEXT, i.getAddr());
msg.setType(
"text/plain"
);
startActivity(Intent.createChooser(msg,
"공유"
));
return
true
;
case
MENU_ALLDELETE:
mDb.deleteAll();
Toast.makeText(FavoriteActivity.
this
,
"모두 삭제되었습니다."
, Toast.LENGTH_SHORT).show();
refreshList();
return
true
;
}
return
false
;
}
protected
void
onDestroy() {
mDb.close();
super
.onDestroy();
}
private
void
refreshList() {
mInfo.clear();
mInfo.addAll(mDb.getAllInfo());
mAdapter.notifyDataSetInvalidated();
}
}