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 5e28df42..c6efeb61 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 @@ -1,5 +1,3 @@ - - package org.odk.share.fragments; import android.content.Intent; @@ -11,13 +9,16 @@ import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; - +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; import org.odk.collect.android.dao.FormsDao; import org.odk.collect.android.dao.InstancesDao; import org.odk.collect.android.provider.FormsProviderAPI; @@ -30,13 +31,8 @@ import org.odk.share.utilities.ApplicationConstants; import org.odk.share.utilities.ArrayUtils; -import java.util.LinkedHashSet; - import javax.inject.Inject; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; +import java.util.LinkedHashSet; import static org.odk.share.fragments.ReviewedInstancesFragment.MODE; @@ -48,6 +44,8 @@ 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 String TOTAL_FORMS_KEY = "TOTAL_FORMS"; private static final int FORM_LOADER = 2; @BindView(R.id.recyclerview) @@ -88,6 +86,22 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, 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); + + if (selectedForms.size() == savedInstanceState.getInt(TOTAL_FORMS_KEY)) { + toggleButton.setText(getString(R.string.clear_all)); + Log.v("DANG ", toggleButton.getText().toString()); + } else { + toggleButton.setText(getString(R.string.select_all)); + } + } + return view; } @@ -103,6 +117,16 @@ 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()]))); + + outState.putInt(TOTAL_FORMS_KEY, formAdapter.getItemCount()); + + } + @Override public void onLoadFinished(@NonNull Loader loader, Cursor cursor) { if (cursor != null) { 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 22cc46ba..2b548fcc 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 @@ -16,7 +16,9 @@ import android.widget.CheckBox; import android.widget.LinearLayout; import android.widget.TextView; - +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; import org.odk.collect.android.dao.InstancesDao; import org.odk.collect.android.provider.InstanceProviderAPI; import org.odk.share.R; @@ -25,13 +27,8 @@ import org.odk.share.utilities.ApplicationConstants; import org.odk.share.utilities.ArrayUtils; -import java.util.LinkedHashSet; - import javax.inject.Inject; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; +import java.util.LinkedHashSet; import static org.odk.share.fragments.ReviewedInstancesFragment.MODE; @@ -61,6 +58,8 @@ public class FilledFormsFragment extends InstanceListFragment implements LoaderM private InstanceAdapter instanceAdapter; private LinkedHashSet selectedInstances; + private static final String SELECTED_INSTANCES_KEY = "ROTATION_SELECTED_INSTANCES"; + private static final String TOTAL_FORMS_KEY = "TOTAL_FORMS"; public FilledFormsFragment() { } @@ -71,12 +70,25 @@ 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); + + if (selectedInstances.size() == savedInstanceState.getInt(TOTAL_FORMS_KEY)) { + toggleButton.setText(getString(R.string.clear_all)); + } else { + toggleButton.setText(getString(R.string.select_all)); + } + } + return view; } @@ -92,6 +104,16 @@ 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()]))); + + outState.putInt(TOTAL_FORMS_KEY, instanceAdapter.getItemCount()); + + } + @Override public void onLoadFinished(@NonNull Loader loader, Cursor cursor) { if (cursor != null) {