package edu.mit.mitmobile2.dining;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import edu.mit.mitmobile2.MITMenuItem;
import edu.mit.mitmobile2.NewModule;
import edu.mit.mitmobile2.NewModuleActivity;
import edu.mit.mitmobile2.R;
import edu.mit.mitmobile2.SimpleArrayAdapter;
import edu.mit.mitmobile2.dining.DiningModel.DiningDietaryFlag;
public class DiningFilterActivity extends NewModuleActivity {
public static final String SELECTED_FILTERS = "filter.extra";
ListView mListView;
ArrayList<DiningDietaryFlag> mSelectedFlags = new ArrayList<DiningDietaryFlag>();
List<DiningDietaryFlag> mAllFlags;
SimpleArrayAdapter<DiningDietaryFlag> mFilterAdapter;
@Override
protected void onCreate(Bundle savedInstance) {
super.onCreate(savedInstance);
mSelectedFlags = getIntent().getExtras().getParcelableArrayList(SELECTED_FILTERS);
setContentView(R.layout.boring_list_layout);
findViewById(R.id.boringListTitleBar).setVisibility(View.GONE);
findViewById(R.id.boringListLoader).setVisibility(View.GONE);
mAllFlags = new ArrayList<DiningDietaryFlag>(DiningDietaryFlag.allFlags());
Collections.sort(mAllFlags, DiningDietaryFlag.NameDescendingComparator); // sorted name descending
mFilterAdapter = new SimpleArrayAdapter<DiningDietaryFlag>(this, mAllFlags, R.layout.dining_filter_row) {
@Override
public void updateView(DiningDietaryFlag item, View view) {
ImageView iconView = (ImageView) view.findViewById(R.id.flagIconIV);
TextView textView = (TextView) view.findViewById(R.id.flagDisplayNameTV);
ImageView selectedView = (ImageView) view.findViewById(R.id.flagSelectedIV);
iconView.setBackgroundResource(item.getIconId());
textView.setText(item.getDisplayName());
if (mSelectedFlags.contains(item)) {
selectedView.setVisibility(View.VISIBLE);
} else {
selectedView.setVisibility(View.INVISIBLE);
}
}
};
mListView = (ListView)findViewById(R.id.boringListLV);
mListView.setVisibility(View.VISIBLE);
mListView.setAdapter(mFilterAdapter);
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
DiningDietaryFlag item = mAllFlags.get(position);
if (mSelectedFlags.contains(item)) {
mSelectedFlags.remove(item);
} else {
mSelectedFlags.add(item);
}
mFilterAdapter.notifyDataSetChanged();
}
});
}
@Override
protected List<MITMenuItem> getSecondaryMenuItems() {
ArrayList<MITMenuItem> items = new ArrayList<MITMenuItem>();
items.add(new MITMenuItem("done", "Done"));
return items;
}
@Override
public void onBackPressed() {
finishWithFiltersResult();
}
private void finishWithFiltersResult() {
Intent returnIntent = new Intent();
returnIntent.putParcelableArrayListExtra(SELECTED_FILTERS, mSelectedFlags);
setResult(RESULT_OK, returnIntent);
finish();
}
@Override
protected NewModule getNewModule() {
return new DiningModule();
}
@Override
protected boolean isScrollable() {
return false;
}
@Override
protected List<String> getMenuItemBlackList() {
ArrayList<String> list = new ArrayList<String>();
list.add(DiningModule.FILTER_ITEM_ID);
list.add(DiningModule.LISTVIEW_ITEM_ID);
list.add(DiningModule.MAPVIEW_ITEM_ID);
return list;
}
@Override
protected void onOptionSelected(String optionId) {
if(optionId.equals("done")) {
finishWithFiltersResult();
}
}
@Override
protected boolean isModuleHomeActivity() {
return false;
}
}