package edu.mit.mitmobile2.libraries;
import java.util.ArrayList;
import java.util.Date;
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.FineListItem;
public class LibraryFines extends ModuleActivity {
public static final String TAG = "LibraryFines";
private ListView mListView;
private FullScreenLoader mLoadingView;
static FineData fineData;
private View mFineResults;
private TextView fineStatusTV;
private TextView fineDisplayAmountTV;
private TextView fineTitleTV;
private TextView fineAuthorTV;
private TextView fineFineDateTV;
public static FineData getFineData() {
return fineData;
}
public static void setFineData(FineData fineData) {
LibraryFines.fineData = fineData;
}
Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG,"onCreate()");
super.onCreate(savedInstanceState);
mContext = this;
setContentView(R.layout.library_fines);
fineStatusTV = (TextView) findViewById(R.id.fineStatusTV);
mFineResults = (View) findViewById(R.id.fineResults);
mListView = (ListView) findViewById(R.id.listLibraryFines);
mLoadingView = (FullScreenLoader) findViewById(R.id.librarySearchLoading);
doSearch();
}
private void doSearch() {
mFineResults.setVisibility(View.GONE);
mLoadingView.setVisibility(View.VISIBLE);
mLoadingView.showLoading();
LibraryModel.fetchFineDetail(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");
FineData fineData = (FineData)msg.obj;
LibraryFines.setFineData((FineData)msg.obj);
Date date = new Date();
fineStatusTV.setText("Balance as of " + date.toLocaleString() + ": " + fineData.getBalance()
+ " Payable at any MIT library service desk. TechCASH accepted only at Hayden Library. ");
final ArrayList<FineListItem> results = fineData.getFines();
if (results.size() == 0) {
Toast.makeText(LibraryFines.this, "No holds found", Toast.LENGTH_SHORT).show();
}
LibraryFineAdapter adapter = new LibraryFineAdapter(results);
mListView.setAdapter(adapter);
adapter.setLookupHandler(mListView, null);
mFineResults.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 LibraryFineAdapter extends SimpleArrayAdapter<FineListItem> {
@SuppressWarnings("unused")
private List<FineListItem> libraryFineItems;
public LibraryFineAdapter(ArrayList<FineListItem> results) {
super(LibraryFines.this, results, R.layout.library_fine_action_row);
libraryFineItems = results;
}
public void setLookupHandler(ListView listView, final String extras) {
setOnItemClickListener(listView, new SimpleArrayAdapter.OnItemClickListener<FineListItem>() {
@Override
public void onItemSelected(FineListItem item) {
Log.d(TAG,item.getTitle() + " clicked");
Intent intent = new Intent(mContext, LibraryFineDetail.class);
intent.putExtra("index", item.getIndex());
startActivity(intent);
}
});
}
@Override
public void updateView(FineListItem item, View view) {
// Display Amount
fineDisplayAmountTV = (TextView)view.findViewById(R.id.fineDisplayAmountTV);
fineDisplayAmountTV.setText(item.getDisplayAmount());
// Title
fineTitleTV = (TextView)view.findViewById(R.id.fineTitleTV);
fineTitleTV.setText(item.getTitle());
// Year + Author
fineAuthorTV = (TextView)view.findViewById(R.id.fineAuthorTV);
if (!item.getAuthor().equalsIgnoreCase("") || !item.getYear().equalsIgnoreCase("")) {
fineAuthorTV.setText(item.getYear() + "; " + item.getAuthor());
}
else {
fineAuthorTV.setVisibility(View.GONE);
}
// Fine Date
fineFineDateTV = (TextView)view.findViewById(R.id.fineFineDateTV);
fineFineDateTV.setText("Fined " + item.getFineDate());
}
}
}