Added selection mode to osm edits in my places
This commit is contained in:
parent
9e5b0c4fd0
commit
827d053a24
2 changed files with 151 additions and 6 deletions
|
@ -398,8 +398,8 @@ public class DashboardOnMap {
|
||||||
showFragment(manager, fragmentTransaction, DashFavoritesFragment.TAG, DashFavoritesFragment.class, showCards);
|
showFragment(manager, fragmentTransaction, DashFavoritesFragment.TAG, DashFavoritesFragment.class, showCards);
|
||||||
showFragment(manager, fragmentTransaction, DashAudioVideoNotesFragment.TAG, DashAudioVideoNotesFragment.class, showCards);
|
showFragment(manager, fragmentTransaction, DashAudioVideoNotesFragment.TAG, DashAudioVideoNotesFragment.class, showCards);
|
||||||
showFragment(manager, fragmentTransaction, DashTrackFragment.TAG, DashTrackFragment.class, showCards);
|
showFragment(manager, fragmentTransaction, DashTrackFragment.TAG, DashTrackFragment.class, showCards);
|
||||||
showFragment(manager, fragmentTransaction, DashOsmoFragment.TAG, DashOsmoFragment.class, showCards);
|
//showFragment(manager, fragmentTransaction, DashOsmoFragment.TAG, DashOsmoFragment.class, showCards);
|
||||||
//showFragment(manager, fragmentTransaction, DashOsmEditsFragment.TAG, DashOsmEditsFragment.class, showCards);
|
showFragment(manager, fragmentTransaction, DashOsmEditsFragment.TAG, DashOsmEditsFragment.class, showCards);
|
||||||
// showFragment(manager, fragmentTransaction, DashUpdatesFragment.TAG, DashUpdatesFragment.class, showCards);
|
// showFragment(manager, fragmentTransaction, DashUpdatesFragment.TAG, DashUpdatesFragment.class, showCards);
|
||||||
showFragment(manager, fragmentTransaction, DashPluginsFragment.TAG, DashPluginsFragment.class, showCards);
|
showFragment(manager, fragmentTransaction, DashPluginsFragment.TAG, DashPluginsFragment.class, showCards);
|
||||||
showFragment(manager, fragmentTransaction, DashSimulateFragment.TAG, DashSimulateFragment.class,
|
showFragment(manager, fragmentTransaction, DashSimulateFragment.TAG, DashSimulateFragment.class,
|
||||||
|
|
|
@ -7,6 +7,8 @@ import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.app.ListFragment;
|
import android.support.v4.app.ListFragment;
|
||||||
import android.support.v4.view.MenuItemCompat;
|
import android.support.v4.view.MenuItemCompat;
|
||||||
|
import android.support.v7.app.ActionBarActivity;
|
||||||
|
import android.support.v7.view.ActionMode;
|
||||||
import android.support.v7.widget.PopupMenu;
|
import android.support.v7.widget.PopupMenu;
|
||||||
import android.util.Xml;
|
import android.util.Xml;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
@ -18,6 +20,7 @@ import android.view.ViewGroup;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.AdapterView.OnItemClickListener;
|
import android.widget.AdapterView.OnItemClickListener;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
|
import android.widget.CheckBox;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
@ -53,14 +56,19 @@ public class OsmEditsFragment extends ListFragment implements OsmEditsUploadList
|
||||||
private ArrayList<OsmPoint> dataPoints;
|
private ArrayList<OsmPoint> dataPoints;
|
||||||
private OsmEditsAdapter listAdapter;
|
private OsmEditsAdapter listAdapter;
|
||||||
|
|
||||||
|
private boolean selectionMode = false;
|
||||||
|
|
||||||
private OpenstreetmapsDbHelper dbpoi;
|
private OpenstreetmapsDbHelper dbpoi;
|
||||||
private OsmBugsDbHelper dbbug;
|
private OsmBugsDbHelper dbbug;
|
||||||
|
|
||||||
private OpenstreetmapRemoteUtil remotepoi;
|
private OpenstreetmapRemoteUtil remotepoi;
|
||||||
private OsmBugsRemoteUtil remotebug;
|
private OsmBugsRemoteUtil remotebug;
|
||||||
|
|
||||||
|
private ActionMode actionMode;
|
||||||
protected OsmPoint[] toUpload = new OsmPoint[0];
|
protected OsmPoint[] toUpload = new OsmPoint[0];
|
||||||
|
|
||||||
|
private ArrayList<OsmPoint> osmEditsSelected = new ArrayList<>();
|
||||||
|
|
||||||
ProgressDialog dialog;
|
ProgressDialog dialog;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -93,7 +101,7 @@ public class OsmEditsFragment extends ListFragment implements OsmEditsUploadList
|
||||||
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onMenuItemClick(MenuItem item) {
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
uploadItems(dataPoints.toArray(new OsmPoint[0]));
|
enterUploadMode();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -115,12 +123,115 @@ public class OsmEditsFragment extends ListFragment implements OsmEditsUploadList
|
||||||
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onMenuItemClick(MenuItem item) {
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
deleteItems(dataPoints);
|
enterDeleteMode();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void enterUploadMode() {
|
||||||
|
actionMode = getActionBarActivity().startSupportActionMode(new ActionMode.Callback() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCreateActionMode(final ActionMode mode, Menu menu) {
|
||||||
|
enableSelectionMode(true);
|
||||||
|
MenuItem item = menu.add(R.string.local_openstreetmap_uploadall).
|
||||||
|
setIcon(R.drawable.ic_action_export);
|
||||||
|
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
|
uploadItems(osmEditsSelected.toArray(new OsmPoint[0]));
|
||||||
|
mode.finish();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
|
||||||
|
osmEditsSelected.clear();
|
||||||
|
listAdapter.notifyDataSetInvalidated();
|
||||||
|
updateSelectionMode(mode);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroyActionMode(ActionMode mode) {
|
||||||
|
enableSelectionMode(false);
|
||||||
|
listAdapter.notifyDataSetInvalidated();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void enterDeleteMode() {
|
||||||
|
actionMode = getActionBarActivity().startSupportActionMode(new ActionMode.Callback() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCreateActionMode(final ActionMode mode, Menu menu) {
|
||||||
|
enableSelectionMode(true);
|
||||||
|
MenuItem item = menu.add(R.string.shared_string_delete_all).setIcon(R.drawable.ic_action_delete_dark);
|
||||||
|
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
|
deleteItems(osmEditsSelected);
|
||||||
|
mode.finish();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
|
||||||
|
osmEditsSelected.clear();
|
||||||
|
listAdapter.notifyDataSetInvalidated();
|
||||||
|
updateSelectionMode(mode);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroyActionMode(ActionMode mode) {
|
||||||
|
enableSelectionMode(false);
|
||||||
|
listAdapter.notifyDataSetInvalidated();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateSelectionMode(ActionMode m) {
|
||||||
|
if(osmEditsSelected.size() > 0) {
|
||||||
|
m.setTitle(osmEditsSelected.size() + " " + getMyApplication().getString(R.string.shared_string_selected_lowercase));
|
||||||
|
} else{
|
||||||
|
m.setTitle("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void enableSelectionMode(boolean selectionMode) {
|
||||||
|
this.selectionMode = selectionMode;
|
||||||
|
((FavoritesActivity)getActivity()).setToolbarVisibility(!selectionMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionBarActivity getActionBarActivity() {
|
||||||
|
if (getActivity() instanceof ActionBarActivity) {
|
||||||
|
return (ActionBarActivity) getActivity();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private void deleteItems(final ArrayList<OsmPoint> points) {
|
private void deleteItems(final ArrayList<OsmPoint> points) {
|
||||||
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
|
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
|
||||||
b.setMessage(getString(R.string.local_osm_changes_delete_all_confirm, points.size()));
|
b.setMessage(getString(R.string.local_osm_changes_delete_all_confirm, points.size()));
|
||||||
|
@ -215,6 +326,25 @@ public class OsmEditsFragment extends ListFragment implements OsmEditsUploadList
|
||||||
|
|
||||||
v.findViewById(R.id.play).setVisibility(View.GONE);
|
v.findViewById(R.id.play).setVisibility(View.GONE);
|
||||||
|
|
||||||
|
final CheckBox ch = (CheckBox) v.findViewById(R.id.check_local_index);
|
||||||
|
View options = v.findViewById(R.id.options);
|
||||||
|
if(selectionMode) {
|
||||||
|
options.setVisibility(View.GONE);
|
||||||
|
ch.setVisibility(View.VISIBLE);
|
||||||
|
ch.setChecked(osmEditsSelected.contains(child));
|
||||||
|
v.findViewById(R.id.icon).setVisibility(View.GONE);
|
||||||
|
ch.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
onItemSelect(ch, child);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
v.findViewById(R.id.icon).setVisibility(View.VISIBLE);
|
||||||
|
options.setVisibility(View.VISIBLE);
|
||||||
|
ch.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
v.findViewById(R.id.options).setOnClickListener(new View.OnClickListener() {
|
v.findViewById(R.id.options).setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
@ -224,12 +354,27 @@ public class OsmEditsFragment extends ListFragment implements OsmEditsUploadList
|
||||||
v.setOnClickListener(new View.OnClickListener() {
|
v.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
showOnMap(child);
|
if (selectionMode) {
|
||||||
|
ch.setChecked(!ch.isChecked());
|
||||||
|
onItemSelect(ch, child);
|
||||||
|
} else {
|
||||||
|
showOnMap(child);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onItemSelect(CheckBox ch, OsmPoint child) {
|
||||||
|
if (ch.isChecked()) {
|
||||||
|
osmEditsSelected.add(child);
|
||||||
|
} else {
|
||||||
|
osmEditsSelected.remove(child);
|
||||||
|
}
|
||||||
|
updateSelectionMode(actionMode);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openPopUpMenu(View v, final OsmPoint info) {
|
private void openPopUpMenu(View v, final OsmPoint info) {
|
||||||
|
@ -278,7 +423,7 @@ public class OsmEditsFragment extends ListFragment implements OsmEditsUploadList
|
||||||
private void uploadItems(final OsmPoint[] items){
|
private void uploadItems(final OsmPoint[] items){
|
||||||
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
|
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
|
||||||
b.setMessage(getString(R.string.local_osm_changes_upload_all_confirm, items.length));
|
b.setMessage(getString(R.string.local_osm_changes_upload_all_confirm, items.length));
|
||||||
b.setPositiveButton(R.string.shared_string_delete, new DialogInterface.OnClickListener() {
|
b.setPositiveButton(R.string.shared_string_yes, new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
toUpload = items;
|
toUpload = items;
|
||||||
|
|
Loading…
Reference in a new issue