package com.truckmuncher.app.vendor.menuadmin; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.support.v4.app.LoaderManager; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.view.Menu; import android.view.MenuInflater; import android.view.View; import com.truckmuncher.app.R; import com.truckmuncher.app.data.Contract; import com.truckmuncher.app.data.PublicContract; import com.truckmuncher.app.data.sql.WhereClause; import java.util.Map; import static com.truckmuncher.app.data.sql.WhereClause.Operator.EQUALS; public class MenuAdminFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> { public static final String TAG = MenuAdminFragment.class.getSimpleName(); private static final String ARG_TRUCK_ID = "truck_id"; private MenuAdminAdapter adapter; private android.view.MenuItem actionMenu; private MenuAdminServiceHelper serviceHelper; public static MenuAdminFragment newInstance(String truckId) { Bundle args = new Bundle(); args.putString(ARG_TRUCK_ID, truckId); MenuAdminFragment fragment = new MenuAdminFragment(); fragment.setArguments(args); return fragment; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); setHasOptionsMenu(true); view.setBackgroundColor(getResources().getColor(android.R.color.background_light)); setEmptyText(getString(R.string.error_empty_vendor_menu)); serviceHelper = new MenuAdminServiceHelper(); adapter = new MenuAdminAdapter(getActivity(), null); getListView().setFastScrollEnabled(true); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getLoaderManager().initLoader(0, getArguments(), this); } @Override public void onPause() { super.onPause(); Map<String, Boolean> diff = adapter.getMenuItemAvailabilityDiff(); adapter.clearMenuItemAvailabilityDiff(); serviceHelper.persistMenuDiff(getActivity(), diff); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { actionMenu = menu.findItem(R.id.action_menu); actionMenu.setVisible(false); } @Override public void onDestroyOptionsMenu() { actionMenu.setVisible(true); } @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { String truckId = args.getString(ARG_TRUCK_ID); WhereClause whereClause = new WhereClause.Builder() .where(PublicContract.Menu.TRUCK_ID, EQUALS, truckId) .build(); String[] projection = MenuAdminAdapter.Query.PROJECTION; Uri uri = Contract.syncFromNetwork(PublicContract.MENU_URI); return new CursorLoader(getActivity(), uri, projection, whereClause.selection, whereClause.selectionArgs, null); } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { adapter.swapCursor(data); setListAdapter(adapter); } @Override public void onLoaderReset(Loader<Cursor> loader) { adapter.swapCursor(null); } }