Context menu: POI edit in progress

This commit is contained in:
Alexey Kulish 2015-10-30 21:31:31 +03:00
parent e63818b178
commit 5842ea9a1e
11 changed files with 353 additions and 27 deletions

View file

@ -9,6 +9,8 @@
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated). 3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
--> -->
<string name="osm_edit_created_poi">Created OSM POI</string>
<string name="osm_edit_created_bug">Created OSM bug</string>
<string name="world_map_download_descr">World basemap (covering the whole world at small zooms) is missing or outdated. Please consider downloading World basemap for a complete environment.</string> <string name="world_map_download_descr">World basemap (covering the whole world at small zooms) is missing or outdated. Please consider downloading World basemap for a complete environment.</string>
<string name="shared_string_qr_code">QR-code</string> <string name="shared_string_qr_code">QR-code</string>
<string name="map_downloaded">Map downloaded</string> <string name="map_downloaded">Map downloaded</string>

View file

@ -14,6 +14,7 @@ import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.audionotes.AudioVideoNotesPlugin.Recording; import net.osmand.plus.audionotes.AudioVideoNotesPlugin.Recording;
import net.osmand.plus.helpers.SearchHistoryHelper; import net.osmand.plus.helpers.SearchHistoryHelper;
import net.osmand.plus.mapcontextmenu.controllers.AmenityMenuController; import net.osmand.plus.mapcontextmenu.controllers.AmenityMenuController;
import net.osmand.plus.mapcontextmenu.controllers.EditPOIMenuController;
import net.osmand.plus.mapcontextmenu.controllers.FavouritePointMenuController; import net.osmand.plus.mapcontextmenu.controllers.FavouritePointMenuController;
import net.osmand.plus.mapcontextmenu.controllers.HistoryMenuController; import net.osmand.plus.mapcontextmenu.controllers.HistoryMenuController;
import net.osmand.plus.mapcontextmenu.controllers.MyLocationMenuController; import net.osmand.plus.mapcontextmenu.controllers.MyLocationMenuController;
@ -22,6 +23,7 @@ import net.osmand.plus.mapcontextmenu.controllers.ParkingPositionMenuController;
import net.osmand.plus.mapcontextmenu.controllers.PointDescriptionMenuController; import net.osmand.plus.mapcontextmenu.controllers.PointDescriptionMenuController;
import net.osmand.plus.mapcontextmenu.controllers.AudioVideoNoteMenuController; import net.osmand.plus.mapcontextmenu.controllers.AudioVideoNoteMenuController;
import net.osmand.plus.mapcontextmenu.controllers.TargetPointMenuController; import net.osmand.plus.mapcontextmenu.controllers.TargetPointMenuController;
import net.osmand.plus.osmedit.OsmPoint;
import net.osmand.plus.osmo.OsMoGroupsStorage.OsMoDevice; import net.osmand.plus.osmo.OsMoGroupsStorage.OsMoDevice;
public abstract class MenuController extends BaseMenuController { public abstract class MenuController extends BaseMenuController {
@ -94,6 +96,8 @@ public abstract class MenuController extends BaseMenuController {
menuController = new OsMoMenuController(app, mapActivity, (OsMoDevice) object); menuController = new OsMoMenuController(app, mapActivity, (OsMoDevice) object);
} else if (object instanceof Recording) { } else if (object instanceof Recording) {
menuController = new AudioVideoNoteMenuController(app, mapActivity, (Recording) object); menuController = new AudioVideoNoteMenuController(app, mapActivity, (Recording) object);
} else if (object instanceof OsmPoint) {
menuController = new EditPOIMenuController(app, mapActivity, pointDescription, (OsmPoint) object);
} else if (object instanceof LatLon) { } else if (object instanceof LatLon) {
if (pointDescription.isParking()) { if (pointDescription.isParking()) {
menuController = new ParkingPositionMenuController(app, mapActivity, pointDescription); menuController = new ParkingPositionMenuController(app, mapActivity, pointDescription);

View file

@ -99,6 +99,11 @@ public abstract class MenuTitleController {
} }
protected void acquireNameAndType() { protected void acquireNameAndType() {
nameStr = "";
typeStr = "";
streetStr = "";
addressUnknown = false;
MenuController menuController = getMenuController(); MenuController menuController = getMenuController();
PointDescription pointDescription = getPointDescription(); PointDescription pointDescription = getPointDescription();
if (menuController != null) { if (menuController != null) {

View file

@ -0,0 +1,191 @@
package net.osmand.plus.mapcontextmenu.builders;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.text.util.Linkify;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import net.osmand.data.Amenity;
import net.osmand.osm.AbstractPoiType;
import net.osmand.osm.MapPoiTypes;
import net.osmand.osm.PoiType;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.mapcontextmenu.MenuBuilder;
import net.osmand.plus.osmedit.OpenstreetmapPoint;
import net.osmand.plus.osmedit.OsmEditingPlugin;
import net.osmand.plus.osmedit.OsmNotesPoint;
import net.osmand.plus.osmedit.OsmPoint;
import net.osmand.util.Algorithms;
import java.util.Map;
public class EditPOIMenuBuilder extends MenuBuilder {
private final OsmPoint osmPoint;
public EditPOIMenuBuilder(OsmandApplication app, final OsmPoint osmPoint) {
super(app);
this.osmPoint = osmPoint;
}
private void buildRow(View view, int iconId, String text, int textColor, boolean needLinks) {
buildRow(view, getRowIcon(iconId), text, textColor, needLinks);
}
protected void buildRow(final View view, Drawable icon, String text, int textColor, boolean needLinks) {
boolean light = app.getSettings().isLightContent();
LinearLayout ll = new LinearLayout(view.getContext());
ll.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
ll.setLayoutParams(llParams);
// Icon
LinearLayout llIcon = new LinearLayout(view.getContext());
llIcon.setOrientation(LinearLayout.HORIZONTAL);
llIcon.setLayoutParams(new LinearLayout.LayoutParams(dpToPx(72f), isFirstRow() ? dpToPx(48f) - dpToPx(SHADOW_HEIGHT_BOTTOM_DP) : dpToPx(48f)));
llIcon.setGravity(Gravity.CENTER_VERTICAL);
ll.addView(llIcon);
ImageView iconView = new ImageView(view.getContext());
LinearLayout.LayoutParams llIconParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
llIconParams.setMargins(dpToPx(16f), isFirstRow() ? dpToPx(12f) - dpToPx(SHADOW_HEIGHT_BOTTOM_DP / 2f) : dpToPx(12f), dpToPx(32f), dpToPx(12f));
llIconParams.gravity = Gravity.CENTER_VERTICAL;
iconView.setLayoutParams(llIconParams);
iconView.setScaleType(ImageView.ScaleType.CENTER);
iconView.setImageDrawable(icon);
llIcon.addView(iconView);
// Text
LinearLayout llText = new LinearLayout(view.getContext());
llText.setOrientation(LinearLayout.VERTICAL);
ll.addView(llText);
TextView textView = new TextView(view.getContext());
LinearLayout.LayoutParams llTextParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextParams.setMargins(0, isFirstRow() ? dpToPx(8f) - dpToPx(SHADOW_HEIGHT_BOTTOM_DP) : dpToPx(8f), 0, dpToPx(8f));
textView.setLayoutParams(llTextParams);
textView.setTextSize(16);
textView.setTextColor(app.getResources().getColor(light ? R.color.ctx_menu_info_text_light : R.color.ctx_menu_info_text_dark));
if (needLinks) {
textView.setAutoLinkMask(Linkify.ALL);
textView.setLinksClickable(true);
}
textView.setEllipsize(TextUtils.TruncateAt.END);
textView.setText(text);
if (textColor > 0) {
textView.setTextColor(view.getResources().getColor(textColor));
}
LinearLayout.LayoutParams llTextViewParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextViewParams.setMargins(0, 0, dpToPx(10f), 0);
llTextViewParams.gravity = Gravity.CENTER_VERTICAL;
llText.setLayoutParams(llTextViewParams);
llText.addView(textView);
((LinearLayout) view).addView(ll);
View horizontalLine = new View(view.getContext());
LinearLayout.LayoutParams llHorLineParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dpToPx(1f));
llHorLineParams.gravity = Gravity.BOTTOM;
horizontalLine.setLayoutParams(llHorLineParams);
horizontalLine.setBackgroundColor(app.getResources().getColor(light ? R.color.ctx_menu_info_divider_light : R.color.ctx_menu_info_divider_dark));
((LinearLayout) view).addView(horizontalLine);
rowBuilt();
}
@Override
public void build(View view) {
super.build(view);
if (osmPoint instanceof OsmNotesPoint) {
OsmNotesPoint notes = (OsmNotesPoint) osmPoint;
buildRow(view, R.drawable.ic_action_note_dark, notes.getText(), 0, false);
buildRow(view, R.drawable.ic_group, notes.getAuthor(), 0, false);
} else if (osmPoint instanceof OpenstreetmapPoint) {
OpenstreetmapPoint point = (OpenstreetmapPoint) osmPoint;
MapPoiTypes poiTypes = app.getPoiTypes();
for (Map.Entry<String, String> e : point.getEntity().getTags().entrySet()) {
int iconId;
Drawable icon = null;
int textColor = 0;
String key = e.getKey();
String vl = e.getValue();
boolean needLinks = !"population".equals(key);
if (key.startsWith("name:")) {
continue;
} else if (Amenity.OPENING_HOURS.equals(key)) {
iconId = R.drawable.ic_action_time;
} else if (Amenity.PHONE.equals(key)) {
iconId = R.drawable.ic_action_call_dark;
} else if (Amenity.WEBSITE.equals(key)) {
iconId = R.drawable.ic_world_globe_dark;
vl = vl.replace(' ', '_');
} else {
if (Amenity.DESCRIPTION.equals(key)) {
iconId = R.drawable.ic_action_note_dark;
} else {
iconId = R.drawable.ic_action_info_dark;
}
AbstractPoiType pt = poiTypes.getAnyPoiAdditionalTypeByKey(key);
if (pt != null) {
PoiType pType = (PoiType) pt;
if (pType.getParentType() != null && pType.getParentType() instanceof PoiType) {
icon = getRowIcon(view.getContext(), ((PoiType) pType.getParentType()).getOsmTag() + "_" + pType.getOsmTag().replace(':', '_') + "_" + pType.getOsmValue());
}
if (!((PoiType) pt).isText()) {
vl = pt.getTranslation();
} else {
vl = pt.getTranslation() + ": " + e.getValue();
}
} else {
vl = Algorithms.capitalizeFirstLetterAndLowercase(e.getKey()) + ": " + e.getValue();
}
}
if (icon != null) {
buildRow(view, icon, vl, textColor, needLinks);
} else {
buildRow(view, iconId, vl, textColor, needLinks);
}
}
}
buildButtonRow(view, null, view.getResources().getString(R.string.shared_string_delete), new OnClickListener() {
@Override
public void onClick(View v) {
OsmEditingPlugin plugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class);
if (plugin != null) {
boolean deleted = false;
if (osmPoint instanceof OsmNotesPoint) {
deleted = plugin.getDBBug().deleteAllBugModifications((OsmNotesPoint) osmPoint);
} else if (osmPoint instanceof OpenstreetmapPoint) {
deleted = plugin.getDBPOI().deletePOI((OpenstreetmapPoint) osmPoint);
}
if (deleted && v.getContext() instanceof MapActivity) {
((MapActivity)v.getContext()).getContextMenu().close();
}
}
}
});
}
}

View file

@ -0,0 +1,119 @@
package net.osmand.plus.mapcontextmenu.controllers;
import android.app.ProgressDialog;
import android.graphics.drawable.Drawable;
import net.osmand.data.PointDescription;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.ProgressImplementation;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.mapcontextmenu.MenuController;
import net.osmand.plus.mapcontextmenu.builders.EditPOIMenuBuilder;
import net.osmand.plus.osmedit.OpenstreetmapRemoteUtil;
import net.osmand.plus.osmedit.OsmBugsRemoteUtil;
import net.osmand.plus.osmedit.OsmEditingPlugin;
import net.osmand.plus.osmedit.OsmEditsUploadListener;
import net.osmand.plus.osmedit.OsmEditsUploadListenerHelper;
import net.osmand.plus.osmedit.OsmPoint;
import net.osmand.plus.osmedit.UploadOpenstreetmapPointAsyncTask;
import net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment;
import net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.ProgressDialogPoiUploader;
import net.osmand.util.Algorithms;
import java.util.Map;
public class EditPOIMenuController extends MenuController {
private PointDescription pointDescription;
private OsmEditingPlugin plugin;
private String pointTypeStr;
private ProgressDialogPoiUploader poiUploader;
public EditPOIMenuController(OsmandApplication app, final MapActivity mapActivity, final PointDescription pointDescription, final OsmPoint osmPoint) {
super(new EditPOIMenuBuilder(app, osmPoint), mapActivity);
this.pointDescription = pointDescription;
plugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class);
poiUploader = new ProgressDialogPoiUploader() {
@Override
public void showProgressDialog(OsmPoint[] points, boolean closeChangeSet) {
ProgressDialog dialog = ProgressImplementation.createProgressDialog(
getMapActivity(),
getMapActivity().getString(R.string.uploading),
getMapActivity().getString(R.string.local_openstreetmap_uploading),
ProgressDialog.STYLE_HORIZONTAL).getDialog();
OsmEditsUploadListener listener = new OsmEditsUploadListenerHelper(getMapActivity(),
getMapActivity().getString(R.string.local_openstreetmap_were_uploaded)) {
@Override
public void uploadEnded(Map<OsmPoint, String> loadErrorsMap) {
super.uploadEnded(loadErrorsMap);
for (OsmPoint osmPoint : loadErrorsMap.keySet()) {
if (loadErrorsMap.get(osmPoint) == null) {
getMapActivity().getContextMenu().close();
}
}
}
};
OpenstreetmapRemoteUtil remotepoi = new OpenstreetmapRemoteUtil(getMapActivity());
OsmBugsRemoteUtil remotebug = new OsmBugsRemoteUtil(getMapActivity().getMyApplication());
UploadOpenstreetmapPointAsyncTask uploadTask = new UploadOpenstreetmapPointAsyncTask(
dialog, listener, plugin, remotepoi, remotebug, points.length, closeChangeSet);
uploadTask.execute(points);
dialog.show();
}
};
titleButtonController = new TitleButtonController() {
@Override
public void buttonPressed() {
if (plugin != null) {
SendPoiDialogFragment sendPoiDialogFragment = SendPoiDialogFragment.createInstance(new OsmPoint[]{osmPoint});
sendPoiDialogFragment.setPoiUploader(poiUploader);
sendPoiDialogFragment.show(mapActivity.getSupportFragmentManager(), SendPoiDialogFragment.TAG);
}
}
};
titleButtonController.caption = getMapActivity().getString(R.string.local_openstreetmap_upload);
if (osmPoint.getGroup() == OsmPoint.Group.POI) {
pointTypeStr = getMapActivity().getString(R.string.osm_edit_created_poi);
} else if (osmPoint.getGroup() == OsmPoint.Group.BUG) {
pointTypeStr = getMapActivity().getString(R.string.osm_edit_created_bug);
} else {
pointTypeStr = "";
}
}
@Override
protected int getSupportedMenuStatesPortrait() {
return MenuState.HEADER_ONLY | MenuState.HALF_SCREEN | MenuState.FULL_SCREEN;
}
@Override
public boolean needTypeStr() {
return !Algorithms.isEmpty(pointTypeStr);
}
@Override
public Drawable getLeftIcon() {
return getIcon(R.drawable.ic_action_gabout_dark, R.color.osmand_orange_dark, R.color.osmand_orange);
}
@Override
public String getNameStr() {
return pointDescription.getSimpleName(getMapActivity(), false);
}
@Override
public String getTypeStr() {
return pointTypeStr;
}
@Override
public boolean needStreetName() {
return false;
}
}

View file

@ -15,8 +15,8 @@ import net.osmand.util.Algorithms;
public class ParkingPositionMenuController extends MenuController { public class ParkingPositionMenuController extends MenuController {
private PointDescription pointDescription; private PointDescription pointDescription;
ParkingPositionPlugin plugin; private ParkingPositionPlugin plugin;
String parkingDescription = ""; private String parkingDescription = "";
public ParkingPositionMenuController(OsmandApplication app, MapActivity mapActivity, final PointDescription pointDescription) { public ParkingPositionMenuController(OsmandApplication app, MapActivity mapActivity, final PointDescription pointDescription) {
super(new MenuBuilder(app), mapActivity); super(new MenuBuilder(app), mapActivity);

View file

@ -9,6 +9,7 @@ import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.search.SearchHistoryFragment; import net.osmand.plus.activities.search.SearchHistoryFragment;
import net.osmand.plus.mapcontextmenu.MenuBuilder; import net.osmand.plus.mapcontextmenu.MenuBuilder;
import net.osmand.plus.mapcontextmenu.MenuController; import net.osmand.plus.mapcontextmenu.MenuController;
import net.osmand.util.Algorithms;
public class PointDescriptionMenuController extends MenuController { public class PointDescriptionMenuController extends MenuController {
@ -27,7 +28,7 @@ public class PointDescriptionMenuController extends MenuController {
@Override @Override
public boolean needTypeStr() { public boolean needTypeStr() {
String typeName = pointDescription.getTypeName(); String typeName = pointDescription.getTypeName();
return (typeName != null && !typeName.isEmpty()); return (typeName != null && !Algorithms.isEmpty(typeName));
} }
@Override @Override

View file

@ -46,6 +46,7 @@ import android.widget.Toast;
import net.osmand.PlatformUtil; import net.osmand.PlatformUtil;
import net.osmand.access.AccessibleToast; import net.osmand.access.AccessibleToast;
import net.osmand.data.Amenity; import net.osmand.data.Amenity;
import net.osmand.data.LatLon;
import net.osmand.osm.PoiType; import net.osmand.osm.PoiType;
import net.osmand.osm.edit.EntityInfo; import net.osmand.osm.edit.EntityInfo;
import net.osmand.osm.edit.Node; import net.osmand.osm.edit.Node;
@ -66,6 +67,7 @@ import org.apache.commons.logging.Log;
import java.io.Serializable; import java.io.Serializable;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
public class EditPoiDialogFragment extends DialogFragment { public class EditPoiDialogFragment extends DialogFragment {
@ -327,6 +329,18 @@ public class EditPoiDialogFragment extends DialogFragment {
R.string.poi_action_succeded_template), message), R.string.poi_action_succeded_template), message),
Toast.LENGTH_LONG).show(); Toast.LENGTH_LONG).show();
} }
OsmEditingPlugin plugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class);
if (plugin != null) {
List<OpenstreetmapPoint> points = plugin.getDBPOI().getOpenstreetmapPoints();
OsmPoint point = points.get(points.size() - 1);
if (getActivity() instanceof MapActivity) {
MapActivity mapActivity = (MapActivity) getActivity();
mapActivity.getContextMenu().showOrUpdate(new LatLon(point.getLatitude(), point.getLongitude()),
plugin.getOsmEditsLayer(mapActivity).getObjectName(point), point);
}
}
if (getActivity() instanceof MapActivity) { if (getActivity() instanceof MapActivity) {
((MapActivity) getActivity()).getMapView().refreshMap(true); ((MapActivity) getActivity()).getMapView().refreshMap(true);
} }

View file

@ -357,6 +357,9 @@ public class OsmBugsLayer extends OsmandMapLayer implements IContextMenuProvider
} else { } else {
AccessibleToast.makeText(activity, R.string.osb_add_dialog_success, Toast.LENGTH_LONG).show(); AccessibleToast.makeText(activity, R.string.osb_add_dialog_success, Toast.LENGTH_LONG).show();
} }
List<OsmNotesPoint> points = plugin.getDBBug().getOsmbugsPoints();
OsmPoint point = points.get(points.size() - 1);
activity.getContextMenu().showOrUpdate(new LatLon(latitude, longitude), plugin.getOsmEditsLayer(activity).getObjectName(point), point);
refreshMap(); refreshMap();
} else { } else {
AccessibleToast.makeText(activity, activity.getResources().getString(R.string.osb_add_dialog_error) + "\n" + result, AccessibleToast.makeText(activity, activity.getResources().getString(R.string.osb_add_dialog_error) + "\n" + result,

View file

@ -162,28 +162,6 @@ public class OsmEditsLayer extends OsmandMapLayer implements ContextMenuLayer.IC
} }
return null; return null;
} }
@Override
public void populateObjectContextMenu(Object o, ContextMenuAdapter adapter) {
if (o instanceof OsmPoint) {
final OsmPoint r = (OsmPoint) o;
adapter.item(R.string.osm_edit_context_menu_delete).iconColor(R.drawable.ic_action_delete_dark
).listen(new ContextMenuAdapter.OnContextMenuClick() {
@Override
public boolean onContextMenuClick(ArrayAdapter<?> adapter, int itemId, int pos, boolean isChecked) {
if(r instanceof OsmNotesPoint) {
plugin.getDBBug().deleteAllBugModifications((OsmNotesPoint) r);
} else if(r instanceof OpenstreetmapPoint) {
plugin.getDBPOI().deletePOI((OpenstreetmapPoint) r);
}
view.refreshMap();
return true;
}
}).reg();
}
}
@Override @Override
public String getObjectDescription(Object o) { public String getObjectDescription(Object o) {

View file

@ -20,6 +20,11 @@ public class SendPoiDialogFragment extends DialogFragment {
public static final String TAG = "SendPoiDialogFragment"; public static final String TAG = "SendPoiDialogFragment";
public static final String OPENSTREETMAP_POINT = "openstreetmap_point"; public static final String OPENSTREETMAP_POINT = "openstreetmap_point";
private static String comment; private static String comment;
private ProgressDialogPoiUploader poiUploader;
public void setPoiUploader(ProgressDialogPoiUploader poiUploader) {
this.poiUploader = poiUploader;
}
@NonNull @NonNull
@Override @Override
@ -38,8 +43,12 @@ public class SendPoiDialogFragment extends DialogFragment {
userNameEditText.setText(settings.USER_NAME.get()); userNameEditText.setText(settings.USER_NAME.get());
passwordEditText.setText(settings.USER_PASSWORD.get()); passwordEditText.setText(settings.USER_PASSWORD.get());
final ProgressDialogPoiUploader progressDialogPoiUploader = final ProgressDialogPoiUploader progressDialogPoiUploader;
(ProgressDialogPoiUploader) getParentFragment(); if (poiUploader != null) {
progressDialogPoiUploader = poiUploader;
} else {
progressDialogPoiUploader = (ProgressDialogPoiUploader) getParentFragment();
}
builder.setTitle(R.string.commit_poi) builder.setTitle(R.string.commit_poi)
.setView(view) .setView(view)