package edu.mit.mitmobile2.shuttles; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import edu.mit.mitmobile2.Global; import edu.mit.mitmobile2.MITMenuItem; import edu.mit.mitmobile2.NewModule; import edu.mit.mitmobile2.R; import edu.mit.mitmobile2.SliderListAdapter.OnPositionChangedListener; import edu.mit.mitmobile2.SliderListNewModuleActivity; import edu.mit.mitmobile2.objs.RouteItem; import edu.mit.mitmobile2.objs.RouteItem.Stops; public class MITStopsSliderActivity extends SliderListNewModuleActivity implements OnPositionChangedListener { final static String TAG = "MITStopsSliderActivity"; // Alarm related static public HashMap<String,HashMap <String,Long>> alertIdx; // <Stop,<Routes,Times>> private List<Stops> mStops; static public ArrayList<String> stop_ids = new ArrayList<String>(); private int last_pos; private static StopsAsyncView curView; protected String routeId,stopId; protected Stops stops; SharedPreferences pref; /****************************************************/ @SuppressLint({ "WorldReadableFiles", "WorldWriteableFiles" }) @Override public void onCreate(Bundle savedInstanceState) { Log.d(TAG,"onCreate()"); super.onCreate(savedInstanceState); Bundle extras = getIntent().getExtras(); if (extras!=null){ routeId = extras.getString(ShuttleModel.KEY_ROUTE_ID); stopId = extras.getString(ShuttleModel.KEY_STOP_ID); Log.d(TAG,"routeId = " + routeId); Log.d(TAG,"stopID = " + stopId); } RouteItem route = ShuttleModel.getRoute(routeId); if (route == null) { finish(); return; } mStops = ShuttleModel.getRoute(routeId).stops; last_pos = ShuttleModel.getStopPosition(mStops, stopId); pref = getSharedPreferences(Global.PREFS_SHUTTLES,Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE); alertIdx = ShuttleModel.getAlerts(pref); setTitle("MIT Stops"); createViews(); setOnPositionChangedListener(this); } @Override public void onNewIntent(Intent intent) { stopId = intent.getStringExtra(ShuttleModel.KEY_STOP_ID); setPosition(ShuttleModel.getStopPosition(mStops, stopId)); } /****************************************************/ @Override protected void onPause() { if (curView!=null) curView.terminate(); super.onPause(); } @Override protected void onStop() { if (curView!=null) curView.terminate(); //saveAlerts(); // TODO super.onStop(); } @Override protected void onResume() { super.onResume(); alertIdx = ShuttleModel.getAlerts(pref); if (curView!=null) curView.getData(); } /****************************************************/ void createViews() { StopsAsyncView cv; // TODO get ALL data ONCE from above layer? for (int i = 0; i < mStops.size(); i++) { Stops s = mStops.get(i); cv = new StopsAsyncView(this, s); addScreen(cv, "" + (i+1) + " of " + mStops.size()); } setPosition(last_pos); curView = (StopsAsyncView) getScreen(last_pos); // need to set here first time to avoid memory leak (otherwise onStop() will find curView==null) } @Override public void onPositionChanged(int newPosition, int oldPosition) { if (curView != null) { curView.terminate(); } curView = (StopsAsyncView) getScreen(newPosition); } @Override protected List<MITMenuItem> getPrimaryMenuItems() { ArrayList<MITMenuItem> items = new ArrayList<MITMenuItem>(); items.add(new MITMenuItem("viewmap", "View on Map", R.drawable.menu_view_on_map)); return items; } @Override public boolean isModuleHomeActivity() { return false; } @Override protected NewModule getNewModule() { return new ShuttlesModule(); } @Override protected void onOptionSelected(String optionId) { if (optionId.equals("viewmap")) { MITRoutesSliderActivity.launchShuttleRouteMap(this, ShuttleModel.getRoute(routeId), mStops, getPosition()); } } }