package edu.mit.mitmobile2.maps;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import edu.mit.mitmobile2.FullScreenLoader;
import edu.mit.mitmobile2.Global;
import edu.mit.mitmobile2.JSONParser;
import edu.mit.mitmobile2.NewModule;
import edu.mit.mitmobile2.NewModuleActivity;
import edu.mit.mitmobile2.R;
import edu.mit.mitmobile2.SimpleArrayAdapter;
import edu.mit.mitmobile2.TwoLineActionRow;
import edu.mit.mitmobile2.objs.MapCatItem;
@SuppressLint("HandlerLeak")
public class MITMapBrowseCatsActivity extends NewModuleActivity {
public static final String TAG = "MITMapBrowseCatsActivity";
private static String MENU_BOOKMARKS = "bookmarks";
//public static final String KEY_TITLE = "title";
//static final int MENU_BOOKMARKS = MENU_SEARCH + 1;
protected FullScreenLoader mLoader;
Context mContext;
/*
String[] categories = {
"Building Number",
"Building Name",
"Selected Rooms",
"Food Service",
"Libraries",
"Residences",
"Parking Lots",
"Streets and Landmarks",
"Courts and Green Spaces",
"Athena Clusters",
"Museum and Galleries",
"Hotels"
};
*/
ArrayList<MapCatItem> cats;
String[] categories;
//private MITPlainSecondaryTitleBar mSecondaryTitleBar;
/****************************************************/
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d(TAG,"onCreate()");
super.onCreate(savedInstanceState);
mContext = this;
Bundle extras = getIntent().getExtras();
if (extras!=null){
//snippet = extras.getString(KEY_SNIPPET);
} else {
}
setContentView(R.layout.map_browse_cats);
addSecondaryTitle("Browse Map");
mLoader = (FullScreenLoader) findViewById(R.id.boringListLoader);
mLoader.showLoading();
fetchCats();
}
/****************************************************/
void createView() {
findViewById(R.id.boringListLoader).setVisibility(View.GONE);
ListView listView = (ListView) findViewById(R.id.boringListLV);
ArrayAdapter<String> categoriesAdapter = new CategoriesAdapter(this, Arrays.asList(categories));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View row, int position, long id) {
Intent i;
Global.curSubCats = cats.get(position).subcategories;
if (Global.curSubCats.size()<1) {
i = new Intent(MITMapBrowseCatsActivity.this, MITMapBrowseResultsActivity.class);
i.putExtra(MITMapBrowseResultsActivity.KEY_CAT, cats.get(position).categoryId);
i.putExtra(MITMapBrowseResultsActivity.CATEGORY_NAME_KEY, cats.get(position).categoryName);
} else {
i = new Intent(MITMapBrowseCatsActivity.this, MITMapBrowseSubCatsActivity.class);
i.putExtra(MITMapBrowseSubCatsActivity.CATEGORY_NAME_KEY, cats.get(position).categoryName);
}
startActivity(i);
}
});
listView.setAdapter(categoriesAdapter);
listView.setVisibility(View.VISIBLE);
}
/****************************************************/
void fetchCats() {
final Runnable updateResultsUI = new Runnable() {
@Override
public void run() {
if (categories==null) {
mLoader.showError();
} else {
mLoader.setVisibility(View.GONE);
createView();
}
}
};
final Handler myHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
post(updateResultsUI);
}
};
final JSONParser mp = new MapCategoriesParser() {
@SuppressWarnings({ "unchecked" })
@Override
public void saveData() {
if (items.size()>0) {
cats = (ArrayList<MapCatItem>) items;
categories = new String[items.size()];
for (int x=0; x<cats.size(); x++) {
categories[x] = cats.get(x).categoryName;
}
}
}
};
mp.getJSONThread("?command=categorytitles", myHandler);
}
private static class CategoriesAdapter extends SimpleArrayAdapter<String> {
public CategoriesAdapter(Context context, List<String> items) {
super(context, items, R.layout.boring_action_row);
}
@Override
public void updateView(String title, View view) {
TwoLineActionRow row = (TwoLineActionRow) view;
row.setTitle(title);
}
}
// @Override
// protected Module getModule() {
// return new MapsModule();
// }
@Override
public boolean isModuleHomeActivity() {
return false;
}
// @Override
// protected void prepareActivityOptionsMenu(Menu menu) {
// menu.add(0, MENU_BOOKMARKS, Menu.NONE, "Bookmarks")
// .setIcon(R.drawable.menu_bookmarks);
// }
@Override
protected NewModule getNewModule() {
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(mContext, MapBookmarksActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
mContext.startActivity(i);
}
}
}