package edu.mit.mitmobile2.maps; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Parcelable; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import edu.mit.mitmobile2.FullScreenLoader; import edu.mit.mitmobile2.MITMenuItem; import edu.mit.mitmobile2.MITPlainSecondaryTitleBar; import edu.mit.mitmobile2.NewModule; import edu.mit.mitmobile2.NewModuleActivity; import edu.mit.mitmobile2.R; import edu.mit.mitmobile2.TitleBarSwitch; import edu.mit.mitmobile2.TitleBarSwitch.OnToggledListener; import edu.mit.mitmobile2.objs.MapItem; public class MapBookmarksActivity extends NewModuleActivity { @Override protected List<MITMenuItem> getPrimaryMenuItems() { // TODO Auto-generated method stub return null; } public MITMapView map; private MapModel mMapModel; Cursor mMapsCursor; //TitleBar boringListTitleBar; ListView mListView; TextView mEmptyMessageTV; FullScreenLoader mLoaderView; ArrayList<MapItem> mapItems; MapsDB db; Context context; private MITPlainSecondaryTitleBar mSecondaryTitleBar; TitleBarSwitch mMapListSwitch; private static String LIST = "LIST"; private static String MAP = "MAP"; private final static String TAG = "MapBookmarksActivity"; private final static String MENU_CLEAR_BOOKMARKS = "menu_clear_bookmarks"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = this; mapItems = new ArrayList<MapItem>(); setContentView(R.layout.map_bookmarks_list); map = (MITMapView)findViewById(R.id.map); initSecondaryTitleBar(); mListView = (ListView)findViewById(R.id.mapBookmarksLV); mEmptyMessageTV = (TextView)findViewById(R.id.mapBookmarksListEmptyTV); mLoaderView = (FullScreenLoader)findViewById(R.id.mapBookmarksListLoader); //boringListTitleBar = (TitleBar)findViewById(R.id.boringListTitleBar); db = MapsDB.getInstance(this); mLoaderView.setVisibility(View.VISIBLE); mListView.setVisibility(View.GONE); mMapModel = new MapModel(context); mMapModel.getBookmarks(getBookmarksHandler); } @Override protected List<MITMenuItem> getSecondaryMenuItems() { ArrayList<MITMenuItem> items = new ArrayList<MITMenuItem>(); if (mapItems.size() > 0) { items.add(new MITMenuItem(MENU_CLEAR_BOOKMARKS, "Clear Bookmarks")); } return items; } private void initSecondaryTitleBar() { //final MITPlainSecondaryTitleBar titleBar = new MITPlainSecondaryTitleBar(this); mSecondaryTitleBar = new MITPlainSecondaryTitleBar(this); mSecondaryTitleBar.setTitle("Bookmarks"); mMapListSwitch = new TitleBarSwitch(this); mMapListSwitch.setLabels(MAP, LIST); mMapListSwitch.setSelected(LIST); mMapListSwitch.setOnToggledListener(new OnToggledListener() { @Override public void onToggled(String selected) { toggleMapList(selected); } }); mSecondaryTitleBar.addActionView(mMapListSwitch); getTitleBar().addSecondaryBar(mSecondaryTitleBar); } @Override protected void onResume() { super.onResume(); //updateUI(); } @Override protected void onDestroy() { super.onDestroy(); //mMapsCursor.close(); } private void updateUI() { MapItemArrayAdapter adapter = new MapItemArrayAdapter(context, mapItems, null); mListView.setAdapter(adapter); mListView.setOnItemClickListener( new AdapterView.OnItemClickListener() { @SuppressWarnings({ "unchecked" }) @Override public void onItemClick(AdapterView<?> listView, View view, int position, long id) { Intent i = new Intent(context, MITMapDetailsSliderActivity.class); i.putParcelableArrayListExtra(MITMapView.MAP_ITEMS_KEY, (ArrayList<? extends Parcelable>) mapItems); i.putExtra(MITMapView.MAP_ITEM_INDEX_KEY, position); context.startActivity(i); } } ); if (mapItems.size() > 0) { mListView.setVisibility(View.VISIBLE); mEmptyMessageTV.setVisibility(View.GONE); mSecondaryTitleBar.setVisibility(View.VISIBLE); } else { mEmptyMessageTV.setVisibility(View.VISIBLE); mListView.setVisibility(View.GONE); mSecondaryTitleBar.setVisibility(View.GONE); } mLoaderView.setVisibility(View.GONE); refreshTitleBarOptions(); } @Override public boolean isModuleHomeActivity() { return false; } @Override protected NewModule getNewModule() { // TODO Auto-generated method stub return new MapsModule(); } @Override protected boolean isScrollable() { // TODO Auto-generated method stub return false; } @Override protected void onOptionSelected(String optionId) { if (optionId.equals(MENU_CLEAR_BOOKMARKS)) { mMapModel.clearAllBookmarks(new Handler() { @Override public void handleMessage(Message msg) { mapItems.clear(); updateUI(); } }); } } public Handler getBookmarksHandler = new Handler() { @SuppressWarnings("unchecked") @Override public void handleMessage(Message msg) { try { mapItems = (ArrayList<MapItem>)msg.obj; Toast.makeText(context, mapItems.size() + " bookmarks", Toast.LENGTH_LONG).show(); if (mapItems != null && mapItems.size() > 0) { map.pause(); map.addMapItems(mapItems); map.fitMapItems(); map.unpause(); } updateUI(); } catch (Exception e) { Log.d(TAG,"getBookmarksHandler exception"); Log.d(TAG,""+e.getStackTrace().toString()); } } }; private void toggleMapList(String selected) { if(selected.equals(LIST)) { mListView.setVisibility(View.VISIBLE); map.setVisibility(View.GONE); } else if(selected.equals(MAP)) { mListView.setVisibility(View.GONE); map.setVisibility(View.VISIBLE); } } }