package fi.bitrite.android.ws.activity; import android.content.Intent; import android.os.Bundle; 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.ListView; import android.widget.TextView; import com.google.android.gms.analytics.GoogleAnalytics; import fi.bitrite.android.ws.R; import fi.bitrite.android.ws.model.Host; import fi.bitrite.android.ws.model.HostBriefInfo; import fi.bitrite.android.ws.persistence.StarredHostDao; import fi.bitrite.android.ws.persistence.impl.StarredHostDaoImpl; import java.util.Collections; import java.util.Comparator; import java.util.List; public class StarredHostTabActivity extends WSBaseActivity implements android.widget.AdapterView.OnItemClickListener { private static final int CONTEXT_MENU_UPDATE = 0; private static final int CONTEXT_MENU_DELETE = 1; ListView starredHostList; TextView noStarredHostsLabel; private StarredHostDao starredHostDao = new StarredHostDaoImpl(); private List<HostBriefInfo> starredHosts; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.starred_hosts_tab); if (!initView()) { finish(); return; } starredHostList = (ListView)findViewById(R.id.lstStarredHosts); noStarredHostsLabel = (TextView)findViewById(R.id.lblNoStarredHosts); registerForContextMenu(starredHostList); } private void setupStarredHostsList() { starredHosts = starredHostDao.getAllBrief(); // Sort in order of recently saved Collections.sort(starredHosts, new Comparator<HostBriefInfo>() { public int compare(HostBriefInfo h1, HostBriefInfo h2) { return (int)(h2.getmUpdated() - h1.getmUpdated()); } }); if (starredHosts.size() == 0) { noStarredHostsLabel.setVisibility(View.VISIBLE); starredHostList.setVisibility(View.GONE); } else { noStarredHostsLabel.setVisibility(View.GONE); starredHostList.setVisibility(View.VISIBLE); starredHostList.setAdapter(new HostListAdapter(this, R.layout.host_list_item, null, starredHosts)); starredHostList.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent i = new Intent(StarredHostTabActivity.this, HostInformationActivity.class); HostBriefInfo selectedHost = starredHosts.get(position); i.putExtra("id", selectedHost.getId()); i.putExtra("host", Host.createFromBriefInfo(selectedHost)); startActivityForResult(i, 0); } }); } } @Override public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) { if (view.getId() == starredHostList.getId()) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; menu.setHeaderTitle(starredHosts.get(info.position).getFullname()); menu.add(Menu.NONE, CONTEXT_MENU_UPDATE, 0, R.string.update); menu.add(Menu.NONE, CONTEXT_MENU_DELETE, 1, R.string.delete); } } @Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); int index = item.getItemId(); switch (index) { case CONTEXT_MENU_UPDATE: Intent i = new Intent(StarredHostTabActivity.this, HostInformationActivity.class); HostBriefInfo selectedHost = starredHosts.get(info.position); i.putExtra("id", selectedHost.getId()); i.putExtra("host", Host.createFromBriefInfo(selectedHost)); i.putExtra("update", true); startActivityForResult(i, 0); break; case CONTEXT_MENU_DELETE: HostBriefInfo host = starredHosts.get(info.position); starredHostDao.delete(host.getId(), host.getName()); setupStarredHostsList(); break; default: break; } return true; } @Override protected void onResume() { super.onResume(); starredHostDao.open(); setupStarredHostsList(); } @Override protected void onPause() { super.onPause(); starredHostDao.close(); } @Override protected void onStop() { GoogleAnalytics.getInstance(this).reportActivityStop(this); super.onStop(); } @Override protected void onStart() { super.onStart(); GoogleAnalytics.getInstance(this).reportActivityStart(this); } }