package net.sourceforge.servestream.activity;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import net.sourceforge.servestream.R;
import net.sourceforge.servestream.adapter.SearchAdapter;
import net.sourceforge.servestream.bean.UriBean;
import net.sourceforge.servestream.preference.UserPreferences;
import android.app.SearchManager;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
public class SearchableActivity extends ActionBarActivity {
private SearchAdapter mAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
setTheme(UserPreferences.getTheme());
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_searchable);
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
ListView list = (ListView) findViewById(android.R.id.list);
list.setEmptyView(findViewById(android.R.id.empty));
list.setFastScrollEnabled(true);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
UriBean uri = (UriBean) parent.getItemAtPosition(position);
Intent intent = new Intent(SearchableActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.setData(uri.getUri());
SearchableActivity.this.startActivity(intent);
}
});
mAdapter = new SearchAdapter(this, new ArrayList<UriBean>());
list.setAdapter(mAdapter);
// Get the intent, verify the action and get the query
Intent intent = getIntent();
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
ArrayList<UriBean> uris = intent.getParcelableArrayListExtra("uris");
performSearch(query, uris);
}
}
private void performSearch(String query, List<UriBean> uris) {
mAdapter.clear();
query = query.toLowerCase(Locale.getDefault());
for (int i = 0; i < uris.size(); i++) {
UriBean uri = uris.get(i);
if (uri.getNickname().toLowerCase(Locale.getDefault()).contains(query)
|| uri.getUri().toString().toLowerCase(Locale.getDefault()).contains(query)) {
mAdapter.add(uri);
}
}
mAdapter.notifyDataSetChanged();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}