package edu.mit.mitmobile2.libraries;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.text.Spannable;
import android.text.style.StyleSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ListView;
import edu.mit.mitmobile2.LockingScrollView;
import edu.mit.mitmobile2.MITMenuItem;
import edu.mit.mitmobile2.NewModule;
import edu.mit.mitmobile2.R;
import edu.mit.mitmobile2.SimpleArrayAdapter;
import edu.mit.mitmobile2.SliderInterface;
import edu.mit.mitmobile2.SliderListNewModuleActivity;
import edu.mit.mitmobile2.SmallActivityCache;
import edu.mit.mitmobile2.TwoLineActionRow;
import edu.mit.mitmobile2.libraries.BookItem.Holding.Availability;
import edu.mit.mitmobile2.libraries.BookItem.Holding.Availabilitys;
public class LibrariesHoldingsSliderActivity extends SliderListNewModuleActivity {
private static SmallActivityCache<Map<String, Availabilitys>> sListsOfHoldingsCache =
new SmallActivityCache<Map<String, Availabilitys>>();
private static SmallActivityCache<List<String>> sListOfLibrariesCache =
new SmallActivityCache<List<String>>();
private static final String LIST_HOLDINGS_CACHE_KEY = "list_holdings_cache_key";
private static final String LIST_LIBRARIES_CACHE_KEY = "list_libraries_cache_key";
public static void launch(Context context, Map<String, Availabilitys> availabilitys, List<String> libraries, int position) {
Intent intent = new Intent(context, LibrariesHoldingsSliderActivity.class);
long listHoldingsKey = sListsOfHoldingsCache.put(availabilitys);
long librariesKey = sListOfLibrariesCache.put(libraries);
intent.putExtra(LIST_HOLDINGS_CACHE_KEY, listHoldingsKey);
intent.putExtra(LIST_LIBRARIES_CACHE_KEY, librariesKey);
intent.putExtra(KEY_POSITION, position);
context.startActivity(intent);
}
Context mContext;
@Override
protected void onCreate(Bundle savedInstance) {
super.onCreate(savedInstance);
mContext = this;
Map<String, Availabilitys> listOfHoldings =
sListsOfHoldingsCache.getItem(getIntent().getLongExtra(LIST_HOLDINGS_CACHE_KEY, -1));
List<String> listOfLibraries =
sListOfLibrariesCache.getItem(getIntent().getLongExtra(LIST_LIBRARIES_CACHE_KEY, -1));
if (listOfHoldings == null || listOfLibraries == null) {
finish();
return;
}
for (String library : listOfLibraries) {
Availabilitys availabilitys = listOfHoldings.get(library);
addScreen(new MITLibraryBookHoldingsSliderInterface(availabilitys.getBooks()), library);
}
setPosition(getPositionValue());
}
@Override
protected NewModule getNewModule() {
return new LibrariesModule();
}
@Override
public boolean isModuleHomeActivity() {
return false;
}
@Override
public List<MITMenuItem> getPrimaryMenuItems() {
ArrayList<MITMenuItem> items = new ArrayList<MITMenuItem>();
items.add(new MITMenuItem("search", "Search", R.drawable.menu_search));
return items;
}
private class MITLibraryBookHoldingsSliderInterface implements SliderInterface {
private List<Availability> mAvailabilitys;
MITLibraryBookHoldingsSliderInterface(List<Availability> availabilitys) {
mAvailabilitys = availabilitys;
}
@Override
public void updateView() { } // TODO Auto-generated method stub
@Override
public View getView() {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
ListView listView = (ListView) inflater.inflate(R.layout.styled_list_view, null);
listView.setSelector(android.R.color.transparent);
listView.setAdapter(new BookAvailibilityArrayAdapter(mContext, mAvailabilitys));
return listView;
}
@Override
public void onSelected() { } // TODO Auto-generated method stub
@Override
public LockingScrollView getVerticalScrollView() { return null; } // TODO Auto-generated method stub
@Override
public void onDestroy() { } // TODO Auto-generated method stub
}
private class BookAvailibilityArrayAdapter extends SimpleArrayAdapter<Availability> {
public BookAvailibilityArrayAdapter(Context context, List<Availability> items) {
super(context, items, R.layout.boring_action_row);
}
@Override
public void updateView(Availability item, View view) {
TwoLineActionRow row = (TwoLineActionRow) view;
row.setTitle(item.callNumber);
Spannable status = Spannable.Factory.getInstance().newSpannable(item.collection + "\n" + item.status);
StyleSpan boldMarker = new StyleSpan(Typeface.BOLD);
if (item.available) {
status.setSpan(boldMarker, 0, status.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
}
row.setSubtitle(status);
}
}
@Override
protected void onOptionSelected(String optionId) { }
}