From 1ce0ab529ad7553b39ea2460ec43acdd3c14e238 Mon Sep 17 00:00:00 2001 From: Adeel Zafar Date: Sun, 10 Mar 2019 00:16:45 +0500 Subject: [PATCH] Reusing methods onSaveInstanceState() and restoreState() through AppListFragment --- .../odk/share/fragments/AppListFragment.java | 28 ++++++++++++ .../share/fragments/BlankFormsFragment.java | 43 +++++-------------- .../share/fragments/FilledFormsFragment.java | 21 +-------- 3 files changed, 40 insertions(+), 52 deletions(-) diff --git a/skunkworks_crow/src/main/java/org/odk/share/fragments/AppListFragment.java b/skunkworks_crow/src/main/java/org/odk/share/fragments/AppListFragment.java index 2a44c28e..d04f277c 100644 --- a/skunkworks_crow/src/main/java/org/odk/share/fragments/AppListFragment.java +++ b/skunkworks_crow/src/main/java/org/odk/share/fragments/AppListFragment.java @@ -13,7 +13,9 @@ package org.odk.share.fragments; +import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.annotation.NonNull; import android.support.design.widget.BottomSheetDialog; import android.support.v4.content.ContextCompat; import android.support.v4.view.MenuItemCompat; @@ -26,8 +28,11 @@ import android.view.MenuItem; import android.view.View; +import android.widget.Button; +import butterknife.BindView; import org.odk.share.R; import org.odk.share.adapters.SortDialogAdapter; +import org.odk.share.utilities.ArrayUtils; import java.util.LinkedHashSet; @@ -41,6 +46,19 @@ abstract class AppListFragment extends InjectableFragment { private BottomSheetDialog bottomSheetDialog; private String filterText; + private static final String SELECTED_INSTANCES_KEY = "ROTATION_SELECTED_INSTANCES"; + + @BindView(R.id.send_button) + Button sendButton; + + @Override + public void onSaveInstanceState(@NonNull Bundle outState) { + super.onSaveInstanceState(outState); + outState.putLongArray(SELECTED_INSTANCES_KEY, ArrayUtils.toPrimitive( + selectedInstances.toArray(new Long[selectedInstances.size()]))); + + } + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); @@ -113,6 +131,16 @@ public void onResume() { } } + public void restoreState(Bundle savedInstanceState) { + if (savedInstanceState != null) { + long[] previousSelectedInstances = savedInstanceState.getLongArray(SELECTED_INSTANCES_KEY); + for (long previousSelectedInstance : previousSelectedInstances) { + selectedInstances.add(previousSelectedInstance); + } + sendButton.setEnabled(selectedInstances.size() > 0); + } + } + private void setupBottomSheet() { bottomSheetDialog = new BottomSheetDialog(getActivity()); View sheetView = getActivity().getLayoutInflater().inflate(R.layout.bottom_sheet, null); diff --git a/skunkworks_crow/src/main/java/org/odk/share/fragments/BlankFormsFragment.java b/skunkworks_crow/src/main/java/org/odk/share/fragments/BlankFormsFragment.java index e773eae1..17100322 100644 --- a/skunkworks_crow/src/main/java/org/odk/share/fragments/BlankFormsFragment.java +++ b/skunkworks_crow/src/main/java/org/odk/share/fragments/BlankFormsFragment.java @@ -30,8 +30,6 @@ import org.odk.share.utilities.ApplicationConstants; import org.odk.share.utilities.ArrayUtils; -import java.util.LinkedHashSet; - import javax.inject.Inject; import butterknife.BindView; @@ -48,7 +46,6 @@ public class BlankFormsFragment extends FormListFragment implements LoaderManage public static final String FORM_IDS = "form_ids"; private static final String FORM_CHOOSER_LIST_SORTING_ORDER = "formChooserListSortingOrder"; - private static final String SELECTED_INSTANCES_KEY = "ROTATION_SELECTED_INSTANCES"; private static final int FORM_LOADER = 2; @BindView(R.id.recyclerview) @@ -72,8 +69,6 @@ public class BlankFormsFragment extends FormListFragment implements LoaderManage TransferDao transferDao; private FormsAdapter formAdapter; - private LinkedHashSet selectedForms; - public BlankFormsFragment() { } @@ -84,19 +79,11 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, View view = inflater.inflate(R.layout.fragment_forms, container, false); ButterKnife.bind(this, view); - selectedForms = new LinkedHashSet<>(); - LinearLayoutManager llm = new LinearLayoutManager(getActivity()); llm.setOrientation(LinearLayoutManager.VERTICAL); recyclerView.setLayoutManager(llm); - if (savedInstanceState != null) { - long[] previousSelectedInstances = savedInstanceState.getLongArray(SELECTED_INSTANCES_KEY); - for (long previousSelectedInstance : previousSelectedInstances) { - selectedForms.add(previousSelectedInstance); - } - sendButton.setEnabled(selectedForms.size() > 0); - } + restoreState(savedInstanceState); return view; } @@ -113,19 +100,11 @@ public Loader onCreateLoader(int id, Bundle args) { return formsDao.getFormsCursorLoader(getFilterText(), getSortingOrder()); } - @Override - public void onSaveInstanceState(@NonNull Bundle outState) { - super.onSaveInstanceState(outState); - outState.putLongArray(SELECTED_INSTANCES_KEY, ArrayUtils.toPrimitive( - selectedForms.toArray(new Long[selectedForms.size()]))); - - } - @Override public void onLoadFinished(@NonNull Loader loader, Cursor cursor) { if (cursor != null) { cursor.moveToFirst(); - formAdapter = new FormsAdapter(getActivity(), cursor, this, selectedForms, instancesDao, transferDao); + formAdapter = new FormsAdapter(getActivity(), cursor, this, selectedInstances, instancesDao, transferDao); recyclerView.setAdapter(formAdapter); setEmptyViewVisibility(cursor.getCount()); if (formAdapter.getItemCount() > 0) { @@ -150,13 +129,13 @@ public void onItemClick(BaseCursorViewHolder holder, int position) { ((FormsAdapter.FormHolder) holder).toggleCheckbox(); long id = ((FormsAdapter.FormHolder) holder).getForm().getId(); - if (selectedForms.contains(id)) { - selectedForms.remove(id); + if (selectedInstances.contains(id)) { + selectedInstances.remove(id); } else { - selectedForms.add(id); + selectedInstances.add(id); } - sendButton.setEnabled(selectedForms.size() > 0); + sendButton.setEnabled(selectedInstances.size() > 0); toggleButtonLabel(); } @@ -175,7 +154,7 @@ private void setEmptyViewVisibility(int len) { @OnClick(R.id.send_button) public void send() { Intent intent = new Intent(getActivity(), SendActivity.class); - Long[] arr = selectedForms.toArray(new Long[selectedForms.size()]); + Long[] arr = selectedInstances.toArray(new Long[selectedInstances.size()]); long[] a = ArrayUtils.toPrimitive(arr); intent.putExtra(FORM_IDS, a); intent.putExtra(MODE, ApplicationConstants.SEND_BLANK_FORM_MODE); @@ -185,18 +164,18 @@ public void send() { @OnClick(R.id.toggle_button) public void toggle() { - boolean newState = formAdapter.getItemCount() > selectedForms.size(); + boolean newState = formAdapter.getItemCount() > selectedInstances.size(); sendButton.setEnabled(newState); if (newState) { Cursor cursor = formAdapter.getCursor(); if (cursor.moveToFirst()) { do { - selectedForms.add(cursor.getLong(cursor.getColumnIndex(FormsProviderAPI.FormsColumns._ID))); + selectedInstances.add(cursor.getLong(cursor.getColumnIndex(FormsProviderAPI.FormsColumns._ID))); } while (cursor.moveToNext()); } } else { - selectedForms.clear(); + selectedInstances.clear(); } formAdapter.notifyDataSetChanged(); @@ -204,7 +183,7 @@ public void toggle() { } private void toggleButtonLabel() { - if (selectedForms.size() == formAdapter.getItemCount()) { + if (selectedInstances.size() == formAdapter.getItemCount()) { toggleButton.setText(getString(R.string.clear_all)); } else { toggleButton.setText(getString(R.string.select_all)); diff --git a/skunkworks_crow/src/main/java/org/odk/share/fragments/FilledFormsFragment.java b/skunkworks_crow/src/main/java/org/odk/share/fragments/FilledFormsFragment.java index a611f07c..492aa8d7 100644 --- a/skunkworks_crow/src/main/java/org/odk/share/fragments/FilledFormsFragment.java +++ b/skunkworks_crow/src/main/java/org/odk/share/fragments/FilledFormsFragment.java @@ -25,8 +25,6 @@ import org.odk.share.utilities.ApplicationConstants; import org.odk.share.utilities.ArrayUtils; -import java.util.LinkedHashSet; - import javax.inject.Inject; import butterknife.BindView; @@ -60,8 +58,6 @@ public class FilledFormsFragment extends InstanceListFragment implements LoaderM InstancesDao instancesDao; private InstanceAdapter instanceAdapter; - private LinkedHashSet selectedInstances; - private static final String SELECTED_INSTANCES_KEY = "ROTATION_SELECTED_INSTANCES"; public FilledFormsFragment() { } @@ -72,18 +68,11 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, setHasOptionsMenu(true); View view = inflater.inflate(R.layout.fragment_forms, container, false); ButterKnife.bind(this, view); - selectedInstances = new LinkedHashSet<>(); LinearLayoutManager llm = new LinearLayoutManager(getActivity()); llm.setOrientation(LinearLayoutManager.VERTICAL); recyclerView.setLayoutManager(llm); - if (savedInstanceState != null) { - long[] previousSelectedInstances = savedInstanceState.getLongArray(SELECTED_INSTANCES_KEY); - for (long previousSelectedInstance : previousSelectedInstances) { - selectedInstances.add(previousSelectedInstance); - } - sendButton.setEnabled(selectedInstances.size() > 0); - } + restoreState(savedInstanceState); return view; } @@ -100,14 +89,6 @@ public Loader onCreateLoader(int id, Bundle args) { return instancesDao.getSavedInstancesCursorLoader(getFilterText(), getSortingOrder()); } - @Override - public void onSaveInstanceState(@NonNull Bundle outState) { - super.onSaveInstanceState(outState); - outState.putLongArray(SELECTED_INSTANCES_KEY, ArrayUtils.toPrimitive( - selectedInstances.toArray(new Long[selectedInstances.size()]))); - - } - @Override public void onLoadFinished(@NonNull Loader loader, Cursor cursor) { if (cursor != null) {