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.util.Log; import android.view.View; import android.widget.ListView; import android.widget.TextView; import edu.mit.mitmobile2.FullScreenLoader; import edu.mit.mitmobile2.MobileWebApi; import edu.mit.mitmobile2.NewModule; import edu.mit.mitmobile2.NewModuleActivity; import edu.mit.mitmobile2.R; import edu.mit.mitmobile2.objs.MapItem; public class MITMapBrowseResultsActivity extends NewModuleActivity { static final String TAG = "MITMapBrowseResultsActivity"; private static String MENU_BOOKMARKS = "bookmarks"; // TODO may drop if we don't keep accelerator static final String BK_ADD = "Add Bookmark"; static final String BK_RM = "Remove Bookmark"; public static final String KEY_CAT = "cat"; public static final String CATEGORY_NAME_KEY = "category_name"; String cat; String mCategoryName; String bookmark_action; MapItemsAdapter adapter; protected boolean bookmarks_mode = false; MapItem curMapItem; ListView mListView; TextView mEmptyMessageTV; FullScreenLoader mLoaderView; int longClickPos; Context ctx; List<MapItem> results; MITMapsDataModel mdm = new MITMapsDataModel(); MapsDB mDB; /*******************************/ @Override public void onCreate(Bundle savedInstanceState) { Log.d(TAG,"onCreate"); super.onCreate(savedInstanceState); ctx = this; mDB = MapsDB.getInstance(this); Bundle extras = getIntent().getExtras(); if (extras!=null){ cat = extras.getString(KEY_CAT); mCategoryName = extras.getString(CATEGORY_NAME_KEY); bookmark_action = BK_ADD; } else { bookmark_action = BK_RM; } setContentView(R.layout.map_browse_cats); if(mCategoryName != null) { addSecondaryTitle(mCategoryName); bookmarks_mode = false; } else { addSecondaryTitle("Bookmarks"); bookmarks_mode = true; } mListView = (ListView) findViewById(R.id.boringListLV); mEmptyMessageTV = (TextView) findViewById(R.id.boringListEmptyTV); mEmptyMessageTV.setText(getResources().getString(R.string.map_no_bookmarks)); mLoaderView = (FullScreenLoader) findViewById(R.id.boringListLoader); if (cat==null) showBookmarks(); else { mLoaderView.showLoading(); searchCategory(cat); } } /****************************************************/ @Override protected void onResume() { super.onResume(); if (cat==null) { //adapter.notifyDataSetChanged(); showBookmarks(); // refresh } } /****************************************************/ void searchCategory(final String id) { final Runnable updateResultsUI = new Runnable() { @Override public void run() { createView(); } }; final Handler myHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(msg.arg1 == MobileWebApi.SUCCESS) { results = MITMapsDataModel.getCategory(id); post(updateResultsUI); } else { mLoaderView.showError(); } } }; MITMapsDataModel.fetchCategory(id, myHandler, this); } /****************************************************/ void showBookmarks() { Cursor bookmarkCursor = mDB.getMapsCursor(); results = new ArrayList<MapItem>(); if(bookmarkCursor.moveToFirst()) { while(!bookmarkCursor.isAfterLast()) { results.add(MapsDB.retrieveMapItem(bookmarkCursor)); bookmarkCursor.moveToNext(); } } bookmarkCursor.close(); createView(); } /****************************************************/ void createView() { adapter = new MapItemsAdapter(this, results,mCategoryName); mLoaderView.setVisibility(View.GONE); mListView.setAdapter(adapter); mListView.setOnItemClickListener(adapter.showOnMapOnItemClickListener()); if(results.size() > 0) { mListView.setVisibility(View.VISIBLE); mEmptyMessageTV.setVisibility(View.GONE); } else { mListView.setVisibility(View.GONE); mEmptyMessageTV.setVisibility(View.VISIBLE); } } @Override public boolean isModuleHomeActivity() { return false; } @Override protected NewModule getNewModule() { // TODO Auto-generated method stub return new MapBrowseCatsModule(); } @Override protected boolean isScrollable() { // TODO Auto-generated method stub return false; } @Override protected void onOptionSelected(String id) { if (id.equals(MENU_BOOKMARKS)) { Intent i = new Intent(ctx, MapBookmarksActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); ctx.startActivity(i); } } }