package edu.mit.mitmobile2.facilities; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.os.AsyncTask; 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.AdapterView.OnItemClickListener; import android.widget.AutoCompleteTextView; import android.widget.ListView; import edu.mit.mitmobile2.FullScreenLoader; import edu.mit.mitmobile2.Global; import edu.mit.mitmobile2.NewModule; import edu.mit.mitmobile2.NewModuleActivity; import edu.mit.mitmobile2.R; import edu.mit.mitmobile2.TwoLineActionRow; import edu.mit.mitmobile2.facilities.RoomSearchCursorAdapter.RoomSearchFilteredCursor; public class FacilitiesRoomLocationsActivity extends NewModuleActivity { public static final String TAG = "FacilitiesRoomLocationsActivity"; Context mContext; ListView mListView; final FacilitiesDB db = FacilitiesDB.getInstance(this); FullScreenLoader mLoader; Handler mFacilitiesLoadedHandler = new Handler() { @Override public void handleMessage(Message msg) { if(msg.arg1 == FacilitiesDB.STATUS_ROOMS_SUCCESSFUL) { Log.d(TAG,"received success message for locations, launching next activity"); RoomAdapter adapter = new RoomAdapter(FacilitiesRoomLocationsActivity.this, db.getRoomCursor()); ListView listView = (ListView) findViewById(R.id.facilitiesRoomsForLocationListView); listView.setAdapter(adapter); listView.setVisibility(View.VISIBLE); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Cursor cursor = (Cursor)parent.getItemAtPosition(position); String room = cursor.getString(3); Global.sharedData.getFacilitiesData().setBuildingRoomName(room); Intent intent = new Intent(mContext, FacilitiesProblemTypeActivity.class); startActivity(intent); } }); mLoader.setVisibility(View.GONE); } else { mLoader.showError(); } } }; @Override public void onCreate(Bundle savedInstanceState) { Log.d(TAG,"onCreate()"); super.onCreate(savedInstanceState); mContext = this; createViews(); } public void createViews() { setContentView(R.layout.facilities_rooms_for_location); addSecondaryTitle("Where is it?"); mLoader = (FullScreenLoader) findViewById(R.id.facilitiesLoader); mLoader.showLoading(); new DatabaseUpdater().execute(""); // Autocomplete AutoCompleteTextView facilitiesTextLocation = (AutoCompleteTextView) findViewById(R.id.facilitiesTextLocation); facilitiesTextLocation.setAdapter(new RoomSearchCursorAdapter(this, db)); facilitiesTextLocation.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { RoomSearchFilteredCursor cursor = (RoomSearchFilteredCursor) parent.getItemAtPosition(position); if(id == -1) { Global.sharedData.getFacilitiesData().setUserAssignedRoomName(cursor.getConstraint()); } else { Global.sharedData.getFacilitiesData().setUserAssignedRoomName(null); int roomNameIndex = cursor.getColumnIndex(FacilitiesDB.RoomTable.ROOM); String roomName = cursor.getString(roomNameIndex); Global.sharedData.getFacilitiesData().setBuildingRoomName(roomName); } Intent intent = new Intent(mContext, FacilitiesProblemTypeActivity.class); startActivity(intent); } }); // Outside TwoLineActionRow outsideLocationActionRow = (TwoLineActionRow) findViewById(R.id.facilitiesOutsideLocationActionRow); outsideLocationActionRow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Global.sharedData.getFacilitiesData().setBuildingRoomName("outside"); Intent intent; intent = new Intent(mContext, FacilitiesProblemTypeActivity.class); startActivity(intent); } }); } private class DatabaseUpdater extends AsyncTask<String, Void, String> { @Override protected void onPreExecute() { } @Override protected String doInBackground(String... msg) { // Executed in worker thread String result = ""; try { String lastUpdated = FacilitiesDB.getLocationLastUpdated(Global.sharedData.getFacilitiesData().getLocationId()); if (lastUpdated == null || lastUpdated.equals("")) { FacilitiesDB.updateRooms(mContext, mFacilitiesLoadedHandler,Global.sharedData.getFacilitiesData().getBuildingNumber() ); } else { Message roomMsg = Message.obtain(); roomMsg.arg1 = FacilitiesDB.STATUS_ROOMS_SUCCESSFUL; mFacilitiesLoadedHandler.sendMessage(roomMsg); } result = "success"; } catch (Exception e) { } return result; } @Override protected void onPostExecute(String result) { // Executed in UI thread } } @Override public boolean isModuleHomeActivity() { return false; } @Override protected NewModule getNewModule() { // TODO Auto-generated method stub return new FacilitiesModule(); } @Override protected boolean isScrollable() { // TODO Auto-generated method stub return false; } @Override protected void onOptionSelected(String optionId) { // TODO Auto-generated method stub } }