package com.android.smap.fragments; import android.os.Bundle; import android.view.ActionMode; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.AbsListView; import android.widget.LinearLayout; import android.widget.ListView; import com.android.smap.GatewayApp; import com.android.smap.R; import com.android.smap.activities.FragmentContainerActivity.Builder; import com.android.smap.adapters.SurveyAdapter; import com.android.smap.api.models.Survey; import com.android.smap.di.DataManager; import com.android.smap.ui.ViewQuery; import com.google.inject.Inject; import com.mjw.android.swipe.MultiChoiceSwipeListener; import com.mjw.android.swipe.SwipeListView; import java.util.ArrayList; import java.util.List; public class SurveysFragment extends BaseFragment { @Inject private DataManager mDataManager; private List<Survey> mModel; private SurveyAdapter mAdapter; private SwipeListView mSwipeListView; @Override public View onCreateContentView(LayoutInflater inflater, Bundle savedInstanceState) { LinearLayout view = (LinearLayout) inflater.inflate( R.layout.fragment_surveys, null); ViewQuery query = new ViewQuery(view); mSwipeListView = (SwipeListView) query.find(R.id.list_surveys).get(); mDataManager = GatewayApp.getDependencyContainer().getDataManager(); mModel = mDataManager.getSurveys(); setupSurveysList(); return view; } private void setupSurveysList() { mAdapter = new SurveyAdapter(getActivity(), mModel, mSwipeListView); mSwipeListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); mSwipeListView .setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() { @Override public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { mode.setTitle("Remove (" + mSwipeListView.getCountSelected() + ")"); } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { switch (item.getItemId()) { case R.id.menu_delete_survey: mSwipeListView.dismissSelected(); mode.finish(); return true; default: return false; } } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.menu_delete, menu); return true; } @Override public void onDestroyActionMode(ActionMode mode) { mSwipeListView.unselectedChoiceStates(); } @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } }); mSwipeListView.setSwipeListViewListener(new MultiChoiceSwipeListener(mAdapter) { @Override public void onClickFrontView(int position) { super.onClickFrontView(position); Survey survey = (Survey) mAdapter.getItem(position); Bundle b = new Bundle(); b.putLong(DistributionDetailFragment.EXTRA_DISTRIBUTION_ID, survey.getId()); startActivity(new Builder(getActivity(), SurveyDistributionsFragment.class) .arguments(b).title(R.string.ab_distributions).build()); } }); mSwipeListView.setAdapter(mAdapter); } @Override public void onResume() { mAdapter.setModel(mDataManager.getSurveys()); super.onResume(); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater = getActivity().getMenuInflater(); inflater.inflate(R.menu.menu_add, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { boolean handled = false; switch (item.getItemId()) { case android.R.id.home: // Actionbar home/up icon getActivity().onBackPressed(); break; case R.id.action_add: // Actionbar home/up icon startActivity(new Builder(getActivity(), FormListFragment.class) .title(R.string.ab_surveys).build()); break; } return handled; } @Override public boolean hasActionBarTitle() { return true; } @Override public String getActionBarTitle() { return getActivity().getResources().getString(R.string.ab_surveys); } }