package edu.mit.mitmobile2.libraries; import java.util.ArrayList; import java.util.List; 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.Menu; import android.view.View; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import edu.mit.mitmobile2.FullScreenLoader; import edu.mit.mitmobile2.MobileWebApi; import edu.mit.mitmobile2.Module; import edu.mit.mitmobile2.ModuleActivity; import edu.mit.mitmobile2.R; import edu.mit.mitmobile2.SimpleArrayAdapter; import edu.mit.mitmobile2.objs.HoldListItem; public class LibraryHolds extends ModuleActivity { public static final String TAG = "LibraryHolds"; private ListView mListView; private FullScreenLoader mLoadingView; private View mHoldResults; private TextView holdTitleTV; private TextView holdAuthorTV; private TextView holdStatusTV; private TextView holdPickupLocationTV; Context mContext; static HoldData holdData; public static HoldData getHoldData() { return holdData; } public static void setHoldData(HoldData holdData) { LibraryHolds.holdData = holdData; } @Override protected void onCreate(Bundle savedInstanceState) { Log.d(TAG,"onCreate()"); super.onCreate(savedInstanceState); mContext = this; setContentView(R.layout.library_holds); holdStatusTV = (TextView) findViewById(R.id.holdStatusTV); mHoldResults = (View) findViewById(R.id.holdResults); mListView = (ListView) findViewById(R.id.listLibraryHolds); mLoadingView = (FullScreenLoader) findViewById(R.id.librarySearchLoading); doSearch(); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); doSearch(); } private void doSearch() { mHoldResults.setVisibility(View.GONE); mLoadingView.setVisibility(View.VISIBLE); mLoadingView.showLoading(); LibraryModel.fetchHoldDetail(this, uiHandler); } private Handler uiHandler = new Handler() { @Override public void handleMessage(Message msg) { Log.d(TAG,"handleMessage"); mLoadingView.setVisibility(View.GONE); if (msg.arg1 == MobileWebApi.SUCCESS) { Log.d(TAG,"MobileWebApi success"); HoldData holdData = (HoldData)msg.obj; LibraryHolds.setHoldData((HoldData)msg.obj); holdStatusTV.setText("You have " + holdData.getNumRequest() + " hold requests." + holdData.getNumReady() + " for pickup."); final ArrayList<HoldListItem> results = holdData.getHolds(); if (results.size() == 0) { Toast.makeText(LibraryHolds.this, "No holds found", Toast.LENGTH_SHORT).show(); } LibraryHoldAdapter adapter = new LibraryHoldAdapter(results); mListView.setAdapter(adapter); adapter.setLookupHandler(mListView, null); mHoldResults.setVisibility(View.VISIBLE); } else if (msg.arg1 == MobileWebApi.ERROR) { mLoadingView.showError(); } else if (msg.arg1 == MobileWebApi.CANCELLED) { mLoadingView.showError(); } } }; @Override protected Module getModule() { return new LibrariesModule(); } @Override public boolean isModuleHomeActivity() { return false; } @Override protected void prepareActivityOptionsMenu(Menu menu) { } private class LibraryHoldAdapter extends SimpleArrayAdapter<HoldListItem> { @SuppressWarnings("unused") private List<HoldListItem> libraryHoldItems; public LibraryHoldAdapter(List<HoldListItem> items) { super(LibraryHolds.this, items, R.layout.library_hold_action_row); libraryHoldItems = items; } public void setLookupHandler(ListView listView, final String extras) { setOnItemClickListener(listView, new SimpleArrayAdapter.OnItemClickListener<HoldListItem>() { @Override public void onItemSelected(HoldListItem item) { Intent intent = new Intent(mContext, LibraryHoldDetail.class); intent.putExtra("index", item.getIndex()); startActivity(intent); } }); } @Override public void updateView(HoldListItem item, View view) { Log.d(TAG,"title = " + item.getTitle()); Log.d(TAG,"author = " + item.getAuthor()); Log.d(TAG,"status = " + item.getStatus()); Log.d(TAG,"pickup location = " + item.getPickupLocation()); // Title holdTitleTV = (TextView)view.findViewById(R.id.holdTitleTV); if (!item.getTitle().equalsIgnoreCase("")) { holdTitleTV.setText(item.getTitle()); } else { holdTitleTV.setVisibility(View.GONE); } // Year + Author holdAuthorTV = (TextView)view.findViewById(R.id.holdAuthorTV); if (!item.getAuthor().equalsIgnoreCase("")) { holdAuthorTV.setText(item.getYear() + "; " + item.getAuthor()); } else { holdAuthorTV.setVisibility(View.GONE); } // Status holdStatusTV = (TextView)view.findViewById(R.id.holdStatusTV); if (!item.getStatus().equalsIgnoreCase("")) { holdStatusTV.setText(item.getStatus()); } else { holdStatusTV.setVisibility(View.GONE); } // Pickup Location holdPickupLocationTV = (TextView)view.findViewById(R.id.holdPickupLocationTV); if (!item.getPickupLocation().equalsIgnoreCase("")) { holdPickupLocationTV.setText("Pick up at " + item.getPickupLocation()); } else { holdPickupLocationTV.setVisibility(View.GONE); } } } }