package edu.mit.mitmobile2.libraries;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Html;
import android.util.Log;
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.NewModule;
import edu.mit.mitmobile2.NewModuleActivity;
import edu.mit.mitmobile2.R;
import edu.mit.mitmobile2.SimpleArrayAdapter;
import edu.mit.mitmobile2.objs.LoanListItem;
public class LibraryRenewBooks extends NewModuleActivity {
public static final String TAG = "LibraryLoans";
private View mLoanResults;
private ListView mListView;
private FullScreenLoader mLoadingView;
private TextView loanTitleTV;
private TextView loanAuthorTV;
private TextView loanStatusTV;
Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG,"onCreate()");
super.onCreate(savedInstanceState);
mContext = this;
setContentView(R.layout.library_loans);
addSecondaryTitle("Loans");
mLoanResults = (View) findViewById(R.id.loanResults);
loanStatusTV = (TextView) findViewById(R.id.loanStatusTV);
mListView = (ListView) findViewById(R.id.listLibraryLoans);
mLoadingView = (FullScreenLoader) findViewById(R.id.librarySearchLoading);
final ArrayList<LoanListItem> results = LibraryLoans.getLoanData().getLoans();
LibraryRenewBooksAdapter adapter = new LibraryRenewBooksAdapter(results);
mListView.setAdapter(adapter);
adapter.setLookupHandler(mListView, null);
mLoadingView.setVisibility(View.GONE);
//doSearch();
}
@SuppressWarnings("unused")
private void doSearch() {
mLoanResults.setVisibility(View.GONE);
mLoadingView.setVisibility(View.VISIBLE);
mLoadingView.showLoading();
LibraryModel.fetchLoanDetail(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");
LoanData loanData = (LoanData)msg.obj;
LibraryLoans.setLoanData((LoanData)msg.obj);
loanStatusTV.setText("You have " + loanData.getNumLoan() + " items on loan." + loanData.getNumOverdue() + " overdue.");
final ArrayList<LoanListItem> results = loanData.getLoans();
if (results.size() == 0) {
Toast.makeText(LibraryRenewBooks.this, "No loans found", Toast.LENGTH_SHORT).show();
}
LibraryRenewBooksAdapter adapter = new LibraryRenewBooksAdapter(results);
mListView.setAdapter(adapter);
adapter.setLookupHandler(mListView, null);
mLoanResults.setVisibility(View.VISIBLE);
} else if (msg.arg1 == MobileWebApi.ERROR) {
mLoadingView.showError();
} else if (msg.arg1 == MobileWebApi.CANCELLED) {
mLoadingView.showError();
}
}
};
@Override
protected NewModule getNewModule() {
return new LibrariesModule();
}
@Override
public boolean isModuleHomeActivity() {
return false;
}
@Override
protected boolean isScrollable() {
return false;
}
@Override
protected void onOptionSelected(String optionId) { }
private class LibraryRenewBooksAdapter extends SimpleArrayAdapter<LoanListItem> {
@SuppressWarnings("unused")
private List<LoanListItem> libraryLoanItems;
public LibraryRenewBooksAdapter(List<LoanListItem> items) {
super(LibraryRenewBooks.this, items, R.layout.library_renew_books_action_row);
libraryLoanItems = items;
}
public void setLookupHandler(ListView listView, final String extras) {
setOnItemClickListener(listView, new SimpleArrayAdapter.OnItemClickListener<LoanListItem>() {
@Override
public void onItemSelected(LoanListItem item) {
Log.d(TAG,item.getTitle() + " clicked");
//Intent intent = new Intent(mContext, LibraryLoanDetail.class);
//intent.putExtra("index", item.getIndex());
//startActivity(intent);
}
});
}
@Override
public void updateView(LoanListItem item, View view) {
// Title
loanTitleTV = (TextView)view.findViewById(R.id.loanTitleTV);
if (!item.getTitle().equalsIgnoreCase("")) {
loanTitleTV.setText(item.getTitle());
}
else {
loanTitleTV.setVisibility(View.GONE);
}
// Year + Author
loanAuthorTV = (TextView)view.findViewById(R.id.loanAuthorTV);
if (!item.getAuthor().equalsIgnoreCase("") || !item.getYear().equalsIgnoreCase("")) {
loanAuthorTV.setText(item.getYear() + "; " + item.getAuthor());
}
else {
loanAuthorTV.setVisibility(View.GONE);
}
// Status
loanStatusTV = (TextView)view.findViewById(R.id.loanStatusTV);
loanStatusTV.setText(Html.fromHtml(item.getDueText()));
if (item.isOverdue() || item.isLongOverdue()) {
loanStatusTV.setTextColor(Color.RED);
}
else {
loanStatusTV.setTextColor(getResources().getColor(R.color.contents_text));
}
}
}
}