Skip to content
This repository has been archived by the owner on Apr 9, 2021. It is now read-only.

Fixes On screen rotation selected forms get unselected bug #124

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@


package org.odk.share.fragments;

import android.content.Intent;
Expand All @@ -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;
Expand All @@ -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;

Expand All @@ -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)
Expand Down Expand Up @@ -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;
}

Expand All @@ -103,6 +117,16 @@ public Loader<Cursor> 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<Cursor> loader, Cursor cursor) {
if (cursor != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

Expand Down Expand Up @@ -61,6 +58,8 @@ public class FilledFormsFragment extends InstanceListFragment implements LoaderM

private InstanceAdapter instanceAdapter;
private LinkedHashSet<Long> selectedInstances;
private static final String SELECTED_INSTANCES_KEY = "ROTATION_SELECTED_INSTANCES";
private static final String TOTAL_FORMS_KEY = "TOTAL_FORMS";

public FilledFormsFragment() {
}
Expand All @@ -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;
}

Expand All @@ -92,6 +104,16 @@ public Loader<Cursor> 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<Cursor> loader, Cursor cursor) {
if (cursor != null) {
Expand Down