ListFavCamsActivity.java :  » App » kltrafficcam » my » codeandroid » itisvid » activity » Android Open Source

Android Open Source » App » kltrafficcam 
kltrafficcam » my » codeandroid » itisvid » activity » ListFavCamsActivity.java
package my.codeandroid.itisvid.activity;

import my.codeandroid.itisvid.ItisVidConstants;
import my.codeandroid.itisvid.R;
import my.codeandroid.itisvid.db.DatabaseHelper;
import my.codeandroid.itisvid.db.FavCam;
import android.app.ListActivity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
import android.widget.AdapterView.AdapterContextMenuInfo;

public class ListFavCamsActivity extends ListActivity {

  private static final int MENU_RM_FAV = Menu.FIRST;
  private static final int MENU_ITEM_HOME = Menu.FIRST + 1;
  private static final int MENU_ITEM_ALL = Menu.FIRST + 2;
  private static final int MENU_WAP = Menu.FIRST + 3;

  private DatabaseHelper db = null;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (db == null) {
      db = new DatabaseHelper(getApplicationContext(),
          ItisVidConstants.DATABASE_NAME, null,
          ItisVidConstants.DATABASE_VERSION);
    }
    Cursor favs = db.getFavourites();

    startManagingCursor(favs);

    ListAdapter adapter = new SimpleCursorAdapter(this,
    // Use a template that displays a text view
        android.R.layout.simple_list_item_1,
        // Give the cursor to the list adatper
        favs,
        // Map the NAME column in the people database to...
        new String[] { FavCam.CAM_NAME },
        // The "text1" view defined in the XML template
        new int[] { android.R.id.text1 });
    setListAdapter(adapter);

    ListView listView = getListView();
    listView.setTextFilterEnabled(false);
    listView.setLongClickable(true);
    listView.setCacheColorHint(0);
    registerForContextMenu(listView);

    if (adapter.isEmpty()) {
      final Toast t = Toast.makeText(getApplicationContext(),
          "No favorites", Toast.LENGTH_LONG);
      t.show();
    }
  }

  @Override
  public void onCreateContextMenu(ContextMenu menu, View v,
      ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    menu.add(0, MENU_RM_FAV, 0, "Remove from favorites");
  }

  @Override
  public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
        .getMenuInfo();
    switch (item.getItemId()) {
    case MENU_RM_FAV:
      Log.i(ItisVidConstants.LOGTAG, "onLongListItemClick id=" + info.id);
      db.delete(info.id);
      Toast t = Toast.makeText(info.targetView.getContext(),
          "Removed entry from favourites", Toast.LENGTH_SHORT);
      t.show();
      Cursor favs = db.getFavourites();
      
      startManagingCursor(favs);
      
      ListView listView = getListView();
      listView.setTextFilterEnabled(false);
      listView.setLongClickable(true);
      listView.setCacheColorHint(0);
      registerForContextMenu(listView);

      ListAdapter adapter = new SimpleCursorAdapter(this,
      // Use a template that displays a text view
          android.R.layout.simple_list_item_1,
          // Give the cursor to the list adatper
          favs,
          // Map the NAME column in the people database to...
          new String[] { FavCam.CAM_NAME },
          // The "text1" view defined in the XML template
          new int[] { android.R.id.text1 });
      setListAdapter(adapter);

      if (adapter.isEmpty()) {
        final Toast t2 = Toast.makeText(getApplicationContext(),
            "No favorites", Toast.LENGTH_LONG);
        t2.show();
      }
      return true;
    default:
      return super.onContextItemSelected(item);
    }
  }
  
  @Override
  protected void onDestroy() {
    super.onDestroy();
    if (db != null) {
      db.close();
    }
  }

  @Override
  protected void onListItemClick(ListView l, View v, int position, long id) {
    try {
      Log.i(ItisVidConstants.LOGTAG,
          "Attempting to display item with id: " + id);
      Log.d(ItisVidConstants.LOGTAG, "Uri of row: " + id);
      String url = db.getSelectedCamUrl(id);
      Intent tostart = new Intent(Intent.ACTION_VIEW);
      tostart.setData(Uri.parse(url));
      startActivity(tostart);
    } catch (ActivityNotFoundException e) {
      Toast t = Toast.makeText(v.getContext(),
          "Unable to play video. No content handler found ...",
          Toast.LENGTH_SHORT);
      t.show();
    }
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    menu.add(0, MENU_WAP, 0, R.string.menu_wap)
    .setIcon(R.drawable.world_go);
    menu.add(0, MENU_ITEM_HOME, 0, R.string.menu_home).setIcon(
        R.drawable.house);
    menu.add(0, MENU_ITEM_ALL, 0, R.string.menu_all).setIcon(
        R.drawable.webcam_s);
    return true;
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case MENU_WAP:
      ListFavCamsActivity.this.finish();
      startActivity(new Intent().setClass(getApplicationContext(),
          ShowItisWapActivity.class));
      return true;
    case MENU_ITEM_HOME:
      ListFavCamsActivity.this.finish();
      return true;
    case MENU_ITEM_ALL:
      ListFavCamsActivity.this.finish();
      startActivity(new Intent().setClass(getApplicationContext(),
          ListAllCamsActivity.class));
      return true;
    }
    return super.onOptionsItemSelected(item);
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.