package mobi.pharmaapp.view;
import android.app.ListActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import com.google.analytics.tracking.android.EasyTracker;
import mobi.pharmaapp.R;
import mobi.pharmaapp.models.DataModel;
import mobi.pharmaapp.util.Pharmacy;
import mobi.pharmaapp.util.PharmacyAlphComparator;
import java.util.ArrayList;
import java.util.Collections;
/**
*
* @author see /AUTHORS
*/
public class SearchActivity extends ListActivity {
private EditText filterText = null;
private ArrayList<Pharmacy> list = null;
private PharmacyAdapter adapter = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search_layout);
DataModel.getInstance().setPharmacistsContainer(this);
new LoadDataDialog(this) {
@Override
protected void onPostExecute(Integer result) {
this.dialog.dismiss();
if (result.intValue() == 1) {
this.showErrorDialogAndExit();
} else {
fillList();
}
}
}.execute();
filterText = (EditText) findViewById(R.id.search_box);
filterText.addTextChangedListener(filterTextWatcher);
final ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> av, View view, int i, long l) {
InfoPopup.showPopup(SearchActivity.this, (Pharmacy) (lv.getItemAtPosition(i)));
}
});
((Button) findViewById(R.id.clear_search)).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
((EditText) findViewById(R.id.search_box)).setText("");
}
});
}
public void fillList() {
list = new ArrayList<Pharmacy>();
list.addAll(DataModel.getInstance().getPharmacies().values());
Collections.sort(list, new PharmacyAlphComparator());
adapter = new PharmacyAdapter(this, R.layout.list_item, list);
setListAdapter(adapter);
}
private final TextWatcher filterTextWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
adapter.getFilter().filter(s);
}
};
@Override
public void onStart() {
super.onStart();
EasyTracker.getInstance().activityStart(this);
}
@Override
public void onStop() {
super.onStop();
EasyTracker.getInstance().activityStop(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.refresh_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.refresh:
new LoadDataDialog(this, true) {
@Override
protected void onPostExecute(Integer result) {
this.dialog.dismiss();
if (result.intValue() == 1) {
this.showErrorDialogAndExit();
} else {
fillList();
}
}
}.execute();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}