Cleanup code

This commit is contained in:
crimean 2019-02-15 10:42:12 +03:00
parent b1535477af
commit b8d0dad2c3
2 changed files with 0 additions and 516 deletions

View file

@ -3,26 +3,11 @@ package net.osmand.plus.helpers;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.Shape;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.ListPopupWindow;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CompoundButton;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
@ -33,14 +18,12 @@ import net.osmand.data.FavouritePoint;
import net.osmand.data.LatLon;
import net.osmand.data.LocationPoint;
import net.osmand.data.PointDescription;
import net.osmand.plus.GeocodingLookupService;
import net.osmand.plus.OsmAndFormatter;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.TargetPointsHelper;
import net.osmand.plus.TargetPointsHelper.TargetPoint;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.MapActivityLayers;
import net.osmand.plus.base.MenuBottomSheetDialogFragment;
import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem;
import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem;
@ -48,12 +31,7 @@ import net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerHalfItem;
import net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem;
import net.osmand.plus.helpers.WaypointHelper.LocationPointWrapper;
import net.osmand.plus.routepreparationmenu.AddPointBottomSheetDialog;
import net.osmand.plus.routepreparationmenu.MapRouteInfoMenu;
import net.osmand.plus.poi.PoiUIFilter;
import net.osmand.plus.views.controls.DynamicListView.DragIcon;
import net.osmand.plus.views.controls.ListDividerShape;
import net.osmand.plus.views.controls.StableArrayAdapter;
import net.osmand.plus.widgets.TextViewEx;
import net.osmand.util.Algorithms;
import net.osmand.util.MapUtils;
@ -75,16 +53,6 @@ public class WaypointDialogHelper {
void reloadAdapter();
void deleteWaypoint(int position);
void exchangeWaypoints(int pos1, int pos2);
}
private static class RadiusItem {
int type;
public RadiusItem(int type) {
this.type = type;
}
}
public void addHelperCallbacks(WaypointDialogHelperCallbacks callbacks) {
@ -211,16 +179,6 @@ public class WaypointDialogHelper {
}
}
private List<Object> getPoints() {
final List<Object> points;
if (flat) {
points = new ArrayList<Object>(waypointHelper.getAllPoints());
} else {
points = getStandardPoints();
}
return points;
}
public List<Object> getTargetPoints() {
final List<Object> points = new ArrayList<>();
for (int i = 0; i < WaypointHelper.MAX; i++) {
@ -273,123 +231,6 @@ public class WaypointDialogHelper {
return activePoints;
}
private List<Drawable> getCustomDividers(Context ctx, List<Object> points, boolean nightMode) {
int color = ContextCompat.getColor(ctx, nightMode
? R.color.dashboard_divider_dark : R.color.dashboard_divider_light);
Shape fullDividerShape = new ListDividerShape(color, 0);
Shape halfDividerShape = new ListDividerShape(color, AndroidUtils.dpToPx(ctx, 56f));
Shape headerDividerShape = new ListDividerShape(color, AndroidUtils.dpToPx(ctx, 16f));
final ShapeDrawable fullDivider = new ShapeDrawable(fullDividerShape);
final ShapeDrawable halfDivider = new ShapeDrawable(halfDividerShape);
final ShapeDrawable headerDivider = new ShapeDrawable(headerDividerShape);
int divHeight = AndroidUtils.dpToPx(ctx, 1f);
fullDivider.setIntrinsicHeight(divHeight);
halfDivider.setIntrinsicHeight(divHeight);
headerDivider.setIntrinsicHeight(divHeight);
List<Drawable> res = new ArrayList<>();
for (int i = 0; i < points.size(); i++) {
Object obj = points.get(i);
Object objNext = i + 1 < points.size() ? points.get(i + 1) : null;
if (objNext == null) {
break;
}
boolean labelView = (obj instanceof Integer);
boolean bottomDividerViewNext = (objNext instanceof Boolean) && !((Boolean) objNext);
boolean locationPoint = (obj instanceof LocationPointWrapper);
boolean locationPointNext = (objNext instanceof LocationPointWrapper);
Drawable d = null;
if (locationPointNext) {
d = locationPoint ? halfDivider : fullDivider;
} else if (objNext instanceof RadiusItem && labelView) {
d = headerDivider;
} else if (locationPoint && !bottomDividerViewNext) {
d = fullDivider;
}
res.add(d);
}
return res;
}
public static View updateWaypointItemView(final boolean edit, final List<LocationPointWrapper> deletedPoints,
final OsmandApplication app, final Activity ctx,
final WaypointDialogHelper helper, View v,
final LocationPointWrapper point,
final ArrayAdapter adapter, final boolean nightMode,
final boolean flat) {
if (v == null || v.findViewById(R.id.info_close) == null) {
v = ctx.getLayoutInflater().inflate(R.layout.waypoint_reached, null);
}
updatePointInfoView(app, ctx, v, point, true, nightMode, edit, false);
v.findViewById(R.id.all_points).setVisibility(View.GONE);
final ImageView move = (ImageView) v.findViewById(R.id.info_move);
final ImageButton remove = (ImageButton) v.findViewById(R.id.info_close);
if (!edit) {
remove.setVisibility(View.GONE);
move.setVisibility(View.GONE);
} else {
boolean targets = point.type == WaypointHelper.TARGETS;
boolean notFlatTargets = targets && !flat;
boolean startPoint = notFlatTargets && ((TargetPoint) point.point).start;
final TargetPointsHelper targetPointsHelper = app.getTargetPointsHelper();
boolean canRemove = !targets || !targetPointsHelper.getIntermediatePoints().isEmpty();
int iconResId = nightMode ? R.color.marker_circle_button_color_dark : R.color.ctx_menu_title_color_dark;
remove.setVisibility(View.VISIBLE);
remove.setImageDrawable(app.getUIUtilities().getIcon(R.drawable.ic_action_remove_dark, iconResId));
remove.setEnabled(canRemove);
remove.setAlpha(canRemove ? 1 : .5f);
if (canRemove) {
if (notFlatTargets && startPoint) {
remove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (targetPointsHelper.getPointToStart() == null) {
if (!targetPointsHelper.getIntermediatePoints().isEmpty()) {
replaceStartWithFirstIntermediate(targetPointsHelper, ctx, helper);
}
} else {
targetPointsHelper.setStartPoint(null, true, null);
updateControls(ctx, helper);
}
}
});
} else {
remove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
deletePoint(app, ctx, adapter, helper, point, deletedPoints, true);
}
});
}
}
move.setVisibility(notFlatTargets ? View.VISIBLE : View.GONE);
if (notFlatTargets) {
move.setImageDrawable(app.getUIUtilities().getIcon(R.drawable.ic_action_reorder, iconResId));
move.setTag(new DragIcon() {
@Override
public void onClick() {
// do nothing
}
});
}
}
return v;
}
private static void updateRouteInfoMenu(Activity ctx) {
if (ctx instanceof MapActivity) {
((MapActivity) ctx).getMapLayers().getMapControlsLayer().getMapRouteInfoMenu().updateMenu();
@ -440,21 +281,6 @@ public class WaypointDialogHelper {
updateControls(ctx, helper);
}
// switch start & first intermediate point
private static void switchStartAndFirstIntermediate(TargetPointsHelper targetPointsHelper, Activity ctx,
TargetPoint start, WaypointDialogHelper helper) {
List<TargetPoint> intermediatePoints = targetPointsHelper.getIntermediatePointsWithTarget();
TargetPoint firstIntermediate = intermediatePoints.remove(0);
targetPointsHelper.setStartPoint(new LatLon(firstIntermediate.getLatitude(),
firstIntermediate.getLongitude()), false, firstIntermediate.getPointDescription(ctx));
TargetPoint destination = new TargetPoint(new LatLon(start.getLatitude(),
start.getLongitude()), start.getPointDescription(ctx));
intermediatePoints.add(0, destination);
targetPointsHelper.reorderAllTargetPoints(intermediatePoints, true);
updateControls(ctx, helper);
}
public static void deletePoint(final OsmandApplication app, Activity ctx,
final ArrayAdapter adapter,
final WaypointDialogHelper helper,
@ -491,342 +317,6 @@ public class WaypointDialogHelper {
}
}
protected View createItemForRadiusProximity(final FragmentActivity ctx, final int type, final int[] running,
final int position, final ArrayAdapter<Object> thisAdapter, boolean nightMode) {
View v;
if (type == WaypointHelper.POI) {
v = ctx.getLayoutInflater().inflate(R.layout.drawer_list_radius_ex, null);
AndroidUtils.setTextPrimaryColor(mapActivity, (TextView) v.findViewById(R.id.titleEx), nightMode);
String descEx = app.getPoiFilters().isShowingAnyPoi() ? ctx.getString(R.string.poi) : app.getPoiFilters().getSelectedPoiFiltersName();
((TextView) v.findViewById(R.id.title)).setText(ctx.getString(R.string.search_radius_proximity) + ":");
((TextView) v.findViewById(R.id.titleEx)).setText(ctx.getString(R.string.shared_string_type) + ":");
final TextView radiusEx = (TextView) v.findViewById(R.id.descriptionEx);
radiusEx.setText(descEx);
v.findViewById(R.id.secondCellContainer).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
running[0] = position;
thisAdapter.notifyDataSetInvalidated();
MapActivity map = (MapActivity) ctx;
map.getMapLayers().showSingleChoicePoiFilterDialog(map.getMapView(),
new MapActivityLayers.DismissListener() {
@Override
public void dismiss() {
enableType(running, thisAdapter, type, true);
}
});
}
});
AndroidUtils.setTextPrimaryColor(mapActivity, (TextView) v.findViewById(R.id.title), nightMode);
final TextView radius = (TextView) v.findViewById(R.id.description);
radius.setText(OsmAndFormatter.getFormattedDistance(waypointHelper.getSearchDeviationRadius(type), app));
v.findViewById(R.id.firstCellContainer).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectDifferentRadius(type, running, position, thisAdapter, mapActivity);
}
});
} else {
v = ctx.getLayoutInflater().inflate(R.layout.drawer_list_radius, null);
((TextView) v.findViewById(R.id.title)).setText(ctx.getString(R.string.search_radius_proximity));
AndroidUtils.setTextPrimaryColor(mapActivity, (TextView) v.findViewById(R.id.title), nightMode);
final TextView radius = (TextView) v.findViewById(R.id.description);
radius.setText(OsmAndFormatter.getFormattedDistance(waypointHelper.getSearchDeviationRadius(type), app));
radius.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectDifferentRadius(type, running, position, thisAdapter, mapActivity);
}
});
}
return v;
}
protected View createItemForCategory(final FragmentActivity ctx, final int type, final int[] running,
final int position, final ArrayAdapter<Object> thisAdapter,
boolean nightMode, final WaypointDialogHelper helper) {
View v;
v = ctx.getLayoutInflater().inflate(R.layout.waypoint_header, null);
final CompoundButton btn = (CompoundButton) v.findViewById(R.id.toggle_item);
btn.setVisibility(waypointHelper.isTypeConfigurable(type) ? View.VISIBLE : View.GONE);
btn.setOnCheckedChangeListener(null);
final boolean checked = waypointHelper.isTypeEnabled(type);
btn.setChecked(checked);
btn.setEnabled(running[0] == -1);
v.findViewById(R.id.ProgressBar).setVisibility(position == running[0] ? View.VISIBLE : View.GONE);
btn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
running[0] = position;
thisAdapter.notifyDataSetInvalidated();
if (type == WaypointHelper.POI && isChecked) {
selectPoi(running, thisAdapter, type, isChecked, ctx);
} else {
enableType(running, thisAdapter, type, isChecked);
}
}
});
final TextViewEx optionsButton = (TextViewEx) v.findViewById(R.id.text_button);
if (type == WaypointHelper.TARGETS) {
optionsButton.setVisibility(View.VISIBLE);
optionsButton.setTextColor(ContextCompat.getColor(ctx,
nightMode ? R.color.color_dialog_buttons_dark : R.color.color_dialog_buttons_light));
optionsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean hasActivePoints = false;
if (thisAdapter instanceof StableArrayAdapter) {
List<Object> items = ((StableArrayAdapter) thisAdapter).getActiveObjects();
if (items.size() > 0) {
if (items.size() > 1) {
hasActivePoints = true;
} else {
Object item = items.get(0);
if (item instanceof LocationPointWrapper) {
LocationPointWrapper w = (LocationPointWrapper) item;
if (w.getPoint() instanceof TargetPoint) {
hasActivePoints = !((TargetPoint) w.point).start;
}
} else {
hasActivePoints = true;
}
}
}
}
if (hasActivePoints) {
TargetOptionsBottomSheetDialogFragment fragment = new TargetOptionsBottomSheetDialogFragment();
fragment.setUsedOnMap(true);
fragment.show(ctx.getSupportFragmentManager(), TargetOptionsBottomSheetDialogFragment.TAG);
}
}
});
} else {
optionsButton.setVisibility(View.GONE);
}
TextView tv = (TextView) v.findViewById(R.id.header_text);
AndroidUtils.setTextPrimaryColor(mapActivity, tv, nightMode);
tv.setText(getHeader(type, checked, ctx));
return v;
}
private void selectPoi(final int[] running, final ArrayAdapter<Object> listAdapter, final int type,
final boolean enable, Activity ctx) {
if (ctx instanceof MapActivity &&
!app.getPoiFilters().isPoiFilterSelected(PoiUIFilter.CUSTOM_FILTER_ID)) {
MapActivity map = (MapActivity) ctx;
map.getMapLayers().showSingleChoicePoiFilterDialog(map.getMapView(),
new MapActivityLayers.DismissListener() {
@Override
public void dismiss() {
if (app.getPoiFilters().isShowingAnyPoi()) {
enableType(running, listAdapter, type, enable);
} else {
running[0] = -1;
if (!helperCallbacks.isEmpty()) {
for (WaypointDialogHelperCallbacks callback : helperCallbacks) {
callback.reloadAdapter();
}
} else {
reloadListAdapter(listAdapter);
}
}
}
});
} else {
enableType(running, listAdapter, type, enable);
}
}
private void enableType(final int[] running, final ArrayAdapter<Object> listAdapter, final int type,
final boolean enable) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
app.getWaypointHelper().enableWaypointType(type, enable);
return null;
}
protected void onPostExecute(Void result) {
running[0] = -1;
if (!helperCallbacks.isEmpty()) {
for (WaypointDialogHelperCallbacks callback : helperCallbacks) {
callback.reloadAdapter();
}
} else {
reloadListAdapter(listAdapter);
}
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void) null);
}
public AdapterView.OnItemClickListener getDrawerItemClickListener(final FragmentActivity ctx, final int[] running,
final ArrayAdapter<Object> listAdapter) {
return new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int item, long l) {
if (listAdapter.getItem(item) instanceof LocationPointWrapper) {
LocationPointWrapper ps = (LocationPointWrapper) listAdapter.getItem(item);
showOnMap(app, ctx, ps.getPoint(), false);
// } else if (new Integer(WaypointHelper.TARGETS).equals(listAdapter.getItem(item))) {
// IntermediatePointsDialog.openIntermediatePointsDialog(ctx, app, true);
} else if (listAdapter.getItem(item) instanceof RadiusItem) {
selectDifferentRadius(((RadiusItem) listAdapter.getItem(item)).type, running, item, listAdapter,
ctx);
}
}
};
}
protected void selectDifferentRadius(final int type, final int[] running, final int position,
final ArrayAdapter<Object> thisAdapter, Activity ctx) {
int length = WaypointHelper.SEARCH_RADIUS_VALUES.length;
String[] names = new String[length];
int selected = 0;
for (int i = 0; i < length; i++) {
names[i] = OsmAndFormatter.getFormattedDistance(WaypointHelper.SEARCH_RADIUS_VALUES[i], app);
if (WaypointHelper.SEARCH_RADIUS_VALUES[i] == waypointHelper.getSearchDeviationRadius(type)) {
selected = i;
}
}
new AlertDialog.Builder(ctx)
.setSingleChoiceItems(names, selected, new OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
int value = WaypointHelper.SEARCH_RADIUS_VALUES[i];
if (waypointHelper.getSearchDeviationRadius(type) != value) {
running[0] = position;
waypointHelper.setSearchDeviationRadius(type, value);
recalculatePoints(running, thisAdapter, type);
dialogInterface.dismiss();
thisAdapter.notifyDataSetInvalidated();
}
}
}).setTitle(app.getString(R.string.search_radius_proximity))
.setNegativeButton(R.string.shared_string_cancel, null)
.show();
}
private void recalculatePoints(final int[] running, final ArrayAdapter<Object> listAdapter, final int type) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
app.getWaypointHelper().recalculatePoints(type);
return null;
}
protected void onPostExecute(Void result) {
running[0] = -1;
if (!helperCallbacks.isEmpty()) {
for (WaypointDialogHelperCallbacks callback : helperCallbacks) {
callback.reloadAdapter();
}
} else {
reloadListAdapter(listAdapter);
}
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void) null);
}
public void reloadListAdapter(ArrayAdapter<Object> listAdapter) {
mapActivity.getMyApplication().getWaypointHelper().removeVisibleLocationPoint(deletedPoints);
listAdapter.setNotifyOnChange(false);
listAdapter.clear();
List<Object> points = getPoints();
for (Object point : points) {
listAdapter.add(point);
}
if (listAdapter instanceof StableArrayAdapter) {
((StableArrayAdapter) listAdapter).updateObjects(points, getActivePoints(points));
}
listAdapter.notifyDataSetChanged();
}
public String getHeader(int type, boolean checked, Activity ctx) {
String str = ctx.getString(R.string.shared_string_waypoints);
switch (type) {
case WaypointHelper.TARGETS:
str = ctx.getString(R.string.shared_string_target_points);
break;
case WaypointHelper.ALARMS:
str = ctx.getString(R.string.way_alarms);
break;
case WaypointHelper.FAVORITES:
str = ctx.getString(R.string.shared_string_my_favorites);
break;
case WaypointHelper.WAYPOINTS:
str = ctx.getString(R.string.shared_string_waypoints);
break;
case WaypointHelper.POI:
str = ctx.getString(R.string.poi);
break;
}
return str;
}
protected List<Object> getStandardPoints() {
final List<Object> points = new ArrayList<>();
boolean rc = waypointHelper.isRouteCalculated();
for (int i = 0; i < WaypointHelper.MAX; i++) {
List<LocationPointWrapper> tp = waypointHelper.getWaypoints(i);
if ((rc || i == WaypointHelper.WAYPOINTS || i == WaypointHelper.TARGETS)
&& waypointHelper.isTypeVisible(i)) {
if (points.size() > 0) {
points.add(true);
}
points.add(i);
if (i == WaypointHelper.TARGETS) {
TargetPoint start = app.getTargetPointsHelper().getPointToStart();
if (start == null) {
LatLon latLon;
Location loc = app.getLocationProvider().getLastKnownLocation();
if (loc != null) {
latLon = new LatLon(loc.getLatitude(), loc.getLongitude());
} else {
latLon = new LatLon(mapActivity.getMapView().getLatitude(),
mapActivity.getMapView().getLongitude());
}
start = TargetPoint.createStartPoint(latLon,
new PointDescription(PointDescription.POINT_TYPE_MY_LOCATION,
mapActivity.getString(R.string.shared_string_my_location)));
} else {
String oname = start.getOnlyName().length() > 0 ? start.getOnlyName()
: (mapActivity.getString(R.string.route_descr_map_location)
+ " " + mapActivity.getString(R.string.route_descr_lat_lon, start.getLatitude(), start.getLongitude()));
start = TargetPoint.createStartPoint(new LatLon(start.getLatitude(), start.getLongitude()),
new PointDescription(PointDescription.POINT_TYPE_LOCATION,
oname));
}
points.add(new LocationPointWrapper(null, WaypointHelper.TARGETS, start, 0f, 0));
} else if ((i == WaypointHelper.POI || i == WaypointHelper.FAVORITES || i == WaypointHelper.WAYPOINTS)
&& rc) {
if (waypointHelper.isTypeEnabled(i)) {
points.add(new RadiusItem(i));
}
}
if (tp != null && tp.size() > 0) {
points.addAll(tp);
}
points.add(false);
}
}
return points;
}
public static void showOnMap(OsmandApplication app, Activity a, LocationPoint locationPoint, boolean center) {
if (!(a instanceof MapActivity)) {
return;

View file

@ -378,7 +378,6 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
@Override
public void onWindowVisibilityChanged(int visibility) {
}
@Override
@ -386,11 +385,6 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
deleteSwipeItem(position);
}
@Override
public void exchangeWaypoints(int pos1, int pos2) {
}
@SuppressWarnings("unchecked")
@Override
public void onItemsSwapped(final List<Object> items) {