/*
- * Copyright (C) 2012 Tobias Brunner
+ * Copyright (C) 2012-2018 Tobias Brunner
* Copyright (C) 2012 Giuliano Grassi
* Copyright (C) 2012 Ralf Sager
* HSR Hochschule fuer Technik Rapperswil
public class VpnProfileListFragment extends Fragment
{
+ private static final String SELECTED_KEY = "SELECTED";
private static final int ADD_REQUEST = 1;
private static final int EDIT_REQUEST = 2;
private VpnProfileAdapter mListAdapter;
private ListView mListView;
private OnVpnProfileSelectedListener mListener;
+ private HashSet<Integer> mSelected;
private boolean mReadOnly;
private BroadcastReceiver mProfilesChanged = new BroadcastReceiver()
{
View view = inflater.inflate(R.layout.profile_list_fragment, null);
- mListView = (ListView)view.findViewById(R.id.profile_list);
+ mListView = view.findViewById(R.id.profile_list);
mListView.setAdapter(mListAdapter);
mListView.setEmptyView(view.findViewById(R.id.profile_list_empty));
mListView.setOnItemClickListener(mVpnProfileClicked);
if (!mReadOnly)
{
setHasOptionsMenu(true);
+
+ ArrayList<Integer> selected = null;
+ if (savedInstanceState != null)
+ {
+ selected = savedInstanceState.getIntegerArrayList(SELECTED_KEY);
+ }
+ mSelected = selected != null ? new HashSet<>(selected) : new HashSet<>();
}
mDataSource = new VpnProfileDataSource(this.getActivity());
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mProfilesChanged, profileChangesFilter);
}
+ @Override
+ public void onSaveInstanceState(Bundle outState)
+ {
+ super.onSaveInstanceState(outState);
+ outState.putIntegerArrayList(SELECTED_KEY, new ArrayList<>(mSelected));
+ }
+
@Override
public void onDestroy()
{
};
private final MultiChoiceModeListener mVpnProfileSelected = new MultiChoiceModeListener() {
- private HashSet<Integer> mSelected;
private MenuItem mEditProfile;
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu)
{
- return false;
+ mEditProfile.setEnabled(mSelected.size() == 1);
+ return true;
}
@Override
public void onDestroyActionMode(ActionMode mode)
{
+ mSelected.clear();
}
@Override
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.profile_list_context, menu);
mEditProfile = menu.findItem(R.id.edit_profile);
- mSelected = new HashSet<>();
mode.setTitle(R.string.select_profiles);
return true;
}
mSelected.remove(position);
}
final int checkedCount = mSelected.size();
- mEditProfile.setEnabled(checkedCount == 1);
switch (checkedCount)
{
case 0:
mode.setSubtitle(String.format(getString(R.string.x_profiles_selected), checkedCount));
break;
}
+ mode.invalidate();
}
};
}