From 036790784c80c50d82b3a77e702686aecb6ef0d2 Mon Sep 17 00:00:00 2001 From: Alexey Kulish Date: Thu, 5 Nov 2015 19:46:53 +0300 Subject: [PATCH] Context menu: download from map in progress --- .../res/layout/map_context_menu_fragment.xml | 28 +-- OsmAnd/res/values/strings.xml | 1 + .../plus/download/DownloadActivity.java | 6 +- .../plus/download/DownloadIndexesThread.java | 6 + .../plus/download/DownloadResources.java | 16 ++ .../plus/mapcontextmenu/MapContextMenu.java | 6 + .../MapContextMenuFragment.java | 169 ++++++++++-------- .../plus/mapcontextmenu/MenuController.java | 5 +- .../controllers/MapDataMenuController.java | 166 +++++++++++++---- .../plus/views/DownloadedRegionsLayer.java | 11 ++ 10 files changed, 280 insertions(+), 134 deletions(-) diff --git a/OsmAnd/res/layout/map_context_menu_fragment.xml b/OsmAnd/res/layout/map_context_menu_fragment.xml index 9e309300ff..02e743d21d 100644 --- a/OsmAnd/res/layout/map_context_menu_fragment.xml +++ b/OsmAnd/res/layout/map_context_menu_fragment.xml @@ -162,6 +162,8 @@ android:layout_height="wrap_content" android:paddingLeft="54dp" android:paddingRight="2dp" + android:minHeight="52dp" + android:gravity="center_vertical" android:layout_marginTop="-16dp" android:paddingBottom="4dp" android:clickable="true" @@ -182,30 +184,14 @@ android:orientation="vertical" android:layout_marginRight="12dp"> - + android:layout_gravity="center_vertical" + android:visibility="visible" + tools:text="@string/shared_string_downloading"/> - - - - - + Update Photo %1$s Audio %1$s Video %1$s diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java b/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java index 1050ca559f..c2bed57359 100644 --- a/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java +++ b/OsmAnd/src/net/osmand/plus/download/DownloadActivity.java @@ -224,7 +224,7 @@ public class DownloadActivity extends ActionBarProgressActivity implements Downl public void onPause() { super.onPause(); getMyApplication().getAppCustomization().pauseActivity(DownloadActivity.class); - downloadThread.setUiActivity(null); + downloadThread.resetUiActivity(this); } @Override @@ -518,7 +518,7 @@ public class DownloadActivity extends ActionBarProgressActivity implements Downl }; task.execute(); } - + private void initSettingsFirstMap(WorldRegion reg) { getMyApplication().getSettings().FIRST_MAP_IS_DOWNLOADED.set(true); DrivingRegion drg = null; @@ -652,7 +652,7 @@ public class DownloadActivity extends ActionBarProgressActivity implements Downl srtmNeedsInstallation = srtmPlugin == null || srtmPlugin.needsInstallation(); } - + public static class AskMapDownloadFragment extends BottomSheetDownloadFragment { public static final String TAG = "AskMapDownloadFragment"; diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadIndexesThread.java b/OsmAnd/src/net/osmand/plus/download/DownloadIndexesThread.java index e061a69aaf..1615fc057e 100644 --- a/OsmAnd/src/net/osmand/plus/download/DownloadIndexesThread.java +++ b/OsmAnd/src/net/osmand/plus/download/DownloadIndexesThread.java @@ -88,6 +88,12 @@ public class DownloadIndexesThread { public void setUiActivity(DownloadEvents uiActivity) { this.uiActivity = uiActivity; } + + public void resetUiActivity(DownloadEvents uiActivity) { + if (this.uiActivity == uiActivity) { + this.uiActivity = null; + } + } @UiThread protected void downloadInProgress() { diff --git a/OsmAnd/src/net/osmand/plus/download/DownloadResources.java b/OsmAnd/src/net/osmand/plus/download/DownloadResources.java index 118cf52f75..dcb2de9ecc 100644 --- a/OsmAnd/src/net/osmand/plus/download/DownloadResources.java +++ b/OsmAnd/src/net/osmand/plus/download/DownloadResources.java @@ -55,6 +55,9 @@ public class DownloadResources extends DownloadResourceGroup { public IndexItem getIndexItem(String fileName) { IndexItem res = null; + if (rawResources == null) { + return null; + } for (IndexItem item : rawResources) { if (fileName.equals(item.getFileName())) { res = item; @@ -64,6 +67,19 @@ public class DownloadResources extends DownloadResourceGroup { return res; } + public List getIndexItems(String fileNamePrefix) { + List res = new LinkedList<>(); + if (rawResources == null) { + return res; + } + for (IndexItem item : rawResources) { + if (item.getFileName().toLowerCase().startsWith(fileNamePrefix)) { + res.add(item); + } + } + return res; + } + public void updateLoadedFiles() { initAlreadyLoadedFiles(); prepareFilesToUpdate(); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java index 3c92b991f4..88569a4852 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java @@ -398,4 +398,10 @@ public class MapContextMenu extends MenuTitleController { public boolean buttonsVisible() { return menuController == null || menuController.buttonsVisible(); } + + public void updateData() { + if (menuController != null) { + menuController.updateData(); + } + } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index 7c11eda562..6e2cd192c3 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -156,89 +156,41 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents { view = inflater.inflate(R.layout.map_context_menu_fragment, container, false); mainView = view.findViewById(R.id.context_menu_main); - // Title buttons - boolean showButtonsContainer = (leftTitleButtonController != null || rightTitleButtonController != null) - && (titleProgressController == null || !titleProgressController.visible); - final View titleButtonsContainer = view.findViewById(R.id.title_button_container); - titleButtonsContainer.setVisibility(showButtonsContainer ? View.VISIBLE : View.GONE); - // Left title button final Button leftTitleButton = (Button) view.findViewById(R.id.title_button); - final TextView titleButtonRightText = (TextView) view.findViewById(R.id.title_button_right_text); if (leftTitleButtonController != null) { - leftTitleButton.setText(leftTitleButtonController.caption); - leftTitleButton.setVisibility(leftTitleButtonController.visible ? View.VISIBLE : View.INVISIBLE); - - Drawable leftIcon = leftTitleButtonController.getLeftIcon(); - if (leftIcon != null) { - leftTitleButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, null, null); - leftTitleButton.setCompoundDrawablePadding(dpToPx(4f)); - } leftTitleButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { leftTitleButtonController.buttonPressed(); } }); - - if (leftTitleButtonController.needRightText) { - titleButtonRightText.setText(leftTitleButtonController.rightTextCaption); - } else { - titleButtonRightText.setVisibility(View.GONE); - } - } else { - leftTitleButton.setVisibility(View.GONE); - titleButtonRightText.setVisibility(View.GONE); } // Right title button final Button rightTitleButton = (Button) view.findViewById(R.id.title_button_right); if (rightTitleButtonController != null) { - rightTitleButton.setText(rightTitleButtonController.caption); - rightTitleButton.setVisibility(rightTitleButtonController.visible ? View.VISIBLE : View.INVISIBLE); - - Drawable leftIcon = rightTitleButtonController.getLeftIcon(); - if (leftIcon != null) { - rightTitleButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, null, null); - rightTitleButton.setCompoundDrawablePadding(dpToPx(4f)); - } rightTitleButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { rightTitleButtonController.buttonPressed(); } }); - } else { - rightTitleButton.setVisibility(View.GONE); } // Top Right title button final Button topRightTitleButton = (Button) view.findViewById(R.id.title_button_top_right); if (topRightTitleButtonController != null) { - topRightTitleButton.setText(topRightTitleButtonController.caption); - topRightTitleButton.setVisibility(topRightTitleButtonController.visible ? View.VISIBLE : View.INVISIBLE); - - Drawable leftIcon = topRightTitleButtonController.getLeftIcon(); - if (leftIcon != null) { - topRightTitleButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, null, null); - topRightTitleButton.setCompoundDrawablePadding(dpToPx(4f)); - } topRightTitleButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { topRightTitleButtonController.buttonPressed(); } }); - } else { - topRightTitleButton.setVisibility(View.GONE); } // Progress bar - final View titleProgressContainer = view.findViewById(R.id.title_progress_container); if (titleProgressController != null) { - - updateProgress(); - final ImageView progressButton = (ImageView) view.findViewById(R.id.progressButton); progressButton.setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_remove_dark, light ? R.color.icon_color : R.color.dashboard_subheader_text_dark)); @@ -248,10 +200,10 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents { titleProgressController.buttonPressed(); } }); - } else { - titleProgressContainer.setVisibility(View.GONE); } + updateButtonsAndProgress(); + if (menu.isLandscapeLayout()) { mainView.setLayoutParams(new FrameLayout.LayoutParams(dpToPx(menu.getLandscapeWidthDp()), ViewGroup.LayoutParams.MATCH_PARENT)); @@ -486,29 +438,82 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents { return view; } - private void recalculateFullHeightMax() { - menuFullHeightMax = menuTitleHeight + (menuBottomViewHeight > 0 ? menuBottomViewHeight : -dpToPx(SHADOW_HEIGHT_BOTTOM_DP)); - } + private void updateButtonsAndProgress() { + // Title buttons + boolean showButtonsContainer = (leftTitleButtonController != null || rightTitleButtonController != null) + && (titleProgressController == null || !titleProgressController.visible); + final View titleButtonsContainer = view.findViewById(R.id.title_button_container); + titleButtonsContainer.setVisibility(showButtonsContainer ? View.VISIBLE : View.GONE); - private void updateProgress() { - final View titleProgressContainer = view.findViewById(R.id.title_progress_container); - titleProgressContainer.setVisibility(titleProgressController.visible ? View.VISIBLE : View.GONE); + // Left title button + final Button leftTitleButton = (Button) view.findViewById(R.id.title_button); + final TextView titleButtonRightText = (TextView) view.findViewById(R.id.title_button_right_text); + if (leftTitleButtonController != null) { + leftTitleButton.setText(leftTitleButtonController.caption); + leftTitleButton.setVisibility(leftTitleButtonController.visible ? View.VISIBLE : View.INVISIBLE); - final ProgressBar progressBar = (ProgressBar) view.findViewById(R.id.progressBar); - final TextView progressTitle = (TextView) view.findViewById(R.id.progressTitle); - final TextView progressPercent = (TextView) view.findViewById(R.id.progressPercent); - progressTitle.setText(titleProgressController.caption); - if (titleProgressController.indeterminate) { - progressPercent.setVisibility(View.GONE); + Drawable leftIcon = leftTitleButtonController.getLeftIcon(); + if (leftIcon != null) { + leftTitleButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, null, null); + leftTitleButton.setCompoundDrawablePadding(dpToPx(4f)); + } + + if (leftTitleButtonController.needRightText) { + titleButtonRightText.setText(leftTitleButtonController.rightTextCaption); + } else { + titleButtonRightText.setVisibility(View.GONE); + } } else { - progressPercent.setVisibility(View.VISIBLE); - progressPercent.setText(titleProgressController.progress + "%"); + leftTitleButton.setVisibility(View.GONE); + titleButtonRightText.setVisibility(View.GONE); } - progressBar.setIndeterminate(titleProgressController.indeterminate); - progressBar.setProgress(titleProgressController.progress); - final ImageView progressButton = (ImageView) view.findViewById(R.id.progressButton); - progressButton.setVisibility(titleProgressController.buttonVisible ? View.VISIBLE : View.GONE); + // Right title button + final Button rightTitleButton = (Button) view.findViewById(R.id.title_button_right); + if (rightTitleButtonController != null) { + rightTitleButton.setText(rightTitleButtonController.caption); + rightTitleButton.setVisibility(rightTitleButtonController.visible ? View.VISIBLE : View.INVISIBLE); + + Drawable leftIcon = rightTitleButtonController.getLeftIcon(); + if (leftIcon != null) { + rightTitleButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, null, null); + rightTitleButton.setCompoundDrawablePadding(dpToPx(4f)); + } + } else { + rightTitleButton.setVisibility(View.GONE); + } + + // Top Right title button + final Button topRightTitleButton = (Button) view.findViewById(R.id.title_button_top_right); + if (topRightTitleButtonController != null) { + topRightTitleButton.setText(topRightTitleButtonController.caption); + topRightTitleButton.setVisibility(topRightTitleButtonController.visible ? View.VISIBLE : View.INVISIBLE); + + Drawable leftIcon = topRightTitleButtonController.getLeftIcon(); + if (leftIcon != null) { + topRightTitleButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, null, null); + topRightTitleButton.setCompoundDrawablePadding(dpToPx(4f)); + } + } else { + topRightTitleButton.setVisibility(View.GONE); + } + + // Progress bar + final View titleProgressContainer = view.findViewById(R.id.title_progress_container); + if (titleProgressController != null) { + titleProgressContainer.setVisibility(titleProgressController.visible ? View.VISIBLE : View.GONE); + + final ProgressBar progressBar = (ProgressBar) view.findViewById(R.id.progressBar); + final TextView progressTitle = (TextView) view.findViewById(R.id.progressTitle); + progressTitle.setText(titleProgressController.caption); + progressBar.setIndeterminate(titleProgressController.indeterminate); + progressBar.setProgress(titleProgressController.progress); + + final ImageView progressButton = (ImageView) view.findViewById(R.id.progressButton); + progressButton.setVisibility(titleProgressController.buttonVisible ? View.VISIBLE : View.GONE); + } else { + titleProgressContainer.setVisibility(View.GONE); + } } private void buildHeader() { @@ -545,6 +550,18 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents { } } + @Override + public void onResume() { + super.onResume(); + getMyApplication().getDownloadThread().setUiActivity(this); + } + + @Override + public void onPause() { + super.onPause(); + getMyApplication().getDownloadThread().resetUiActivity(this); + } + @Override public void onDestroyView() { super.onDestroyView(); @@ -583,7 +600,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents { menuTitleHeight = menuTopShadowHeight + menuTopShadowAllHeight + dy; menuBottomViewHeight = view.findViewById(R.id.context_menu_bottom_view).getHeight(); - recalculateFullHeightMax(); + menuFullHeightMax = menuTitleHeight + (menuBottomViewHeight > 0 ? menuBottomViewHeight : -dpToPx(SHADOW_HEIGHT_BOTTOM_DP)); ViewTreeObserver obs = view.getViewTreeObserver(); @@ -824,17 +841,27 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents { //DownloadEvents @Override public void newDownloadIndexes() { - + updateOnDownload(); } @Override public void downloadInProgress() { - + updateOnDownload(); } @Override public void downloadHasFinished() { + updateOnDownload(); + } + private void updateOnDownload() { + boolean wasProgressVisible = menu.getTitleProgressController() != null && menu.getTitleProgressController().visible; + menu.updateData(); + boolean progressVisible = menu.getTitleProgressController() != null && menu.getTitleProgressController().visible; + updateButtonsAndProgress(); + if (wasProgressVisible != progressVisible) { + runLayoutListener(); + } } private MapActivity getMapActivity() { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java index 8c959fefa4..79703b3efc 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java @@ -240,6 +240,8 @@ public abstract class MenuController extends BaseMenuController { ShareMenu.show(latLon, title, getMapActivity()); } + public void updateData() { + } public abstract class TitleButtonController { public String caption = ""; @@ -261,13 +263,12 @@ public abstract class MenuController extends BaseMenuController { public abstract class TitleProgressController { public String caption = ""; - public int progress; + public int progress = 0; public boolean indeterminate; public boolean visible; public boolean buttonVisible; public void setIndexesDownloadMode() { - progress = 0; caption = getMapActivity().getString(R.string.downloading_list_indexes); indeterminate = true; buttonVisible = false; diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/MapDataMenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/MapDataMenuController.java index 0f58594fbb..4598217e9e 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/MapDataMenuController.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/MapDataMenuController.java @@ -1,7 +1,9 @@ package net.osmand.plus.mapcontextmenu.controllers; -import android.content.Intent; +import android.app.AlertDialog; +import android.content.DialogInterface; import android.graphics.drawable.Drawable; +import android.os.AsyncTask; import net.osmand.binary.BinaryMapDataObject; import net.osmand.data.LatLon; @@ -11,41 +13,43 @@ import net.osmand.map.WorldRegion; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.download.DownloadActivity; +import net.osmand.plus.download.DownloadActivityType; import net.osmand.plus.download.DownloadIndexesThread; -import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents; +import net.osmand.plus.download.DownloadValidationManager; +import net.osmand.plus.download.IndexItem; +import net.osmand.plus.helpers.FileNameTranslationHelper; import net.osmand.plus.mapcontextmenu.MenuBuilder; import net.osmand.plus.mapcontextmenu.MenuController; +import net.osmand.util.Algorithms; + +import java.io.File; +import java.util.List; public class MapDataMenuController extends MenuController { private WorldRegion region; - private String regionName; + private IndexItem indexItem; + private List otherIndexItems; + private String name; - public MapDataMenuController(OsmandApplication app, MapActivity mapActivity, PointDescription pointDescription, final BinaryMapDataObject dataObject) { + private DownloadValidationManager downloadValidationManager; + private DownloadIndexesThread downloadThread; + + public MapDataMenuController(final OsmandApplication app, final MapActivity mapActivity, PointDescription pointDescription, final BinaryMapDataObject dataObject) { super(new MenuBuilder(app), pointDescription, mapActivity); OsmandRegions osmandRegions = app.getRegions(); String fullName = osmandRegions.getFullName(dataObject); - final WorldRegion region = osmandRegions.getRegionData(fullName); - this.region = region; - if (region != null) { - regionName = region.getLocaleName(); - } else { - regionName = dataObject.getName(); - } - - boolean hasIndexes = app.getDownloadThread().getIndexes().isDownloadedFromInternet; - boolean isDownloading = false; //todo + this.region = osmandRegions.getRegionData(fullName); + name = getPointDescription().getName(); + downloadValidationManager = new DownloadValidationManager(app); + downloadThread = app.getDownloadThread(); + mapActivity.getSupportFragmentManager(); leftTitleButtonController = new TitleButtonController() { @Override public void buttonPressed() { - getMapActivity().getContextMenu().close(); - - final Intent intent = new Intent(getMapActivity(), getMapActivity().getMyApplication() - .getAppCustomization().getDownloadIndexActivity()); - intent.putExtra(DownloadActivity.FILTER_KEY, regionName); - intent.putExtra(DownloadActivity.TAB_TO_OPEN, DownloadActivity.DOWNLOAD_TAB); - getMapActivity().startActivity(intent); + if (indexItem != null) { + downloadValidationManager.startDownload(mapActivity, indexItem); + } } }; leftTitleButtonController.caption = getMapActivity().getString(R.string.shared_string_download); @@ -54,8 +58,9 @@ public class MapDataMenuController extends MenuController { rightTitleButtonController = new TitleButtonController() { @Override public void buttonPressed() { - // todo delete - //getMapActivity().getContextMenu().close(); + if (indexItem != null) { + deleteItem(); + } } }; rightTitleButtonController.caption = getMapActivity().getString(R.string.shared_string_delete); @@ -68,25 +73,21 @@ public class MapDataMenuController extends MenuController { } }; topRightTitleButtonController.caption = getMapActivity().getString(R.string.download_select_map_types); - topRightTitleButtonController.visible = hasIndexes && !isDownloading; titleProgressController = new TitleProgressController() { @Override public void buttonPressed() { - // todo cancel download + if (indexItem != null) { + downloadThread.cancelDownload(indexItem); + } } }; - if (!hasIndexes) { - titleProgressController.setIndexesDownloadMode(); - titleProgressController.visible = true; - getMapActivity().getMyApplication().getDownloadThread().runReloadIndexFiles(); - } else if (isDownloading) { - titleProgressController.setMapDownloadMode(); - titleProgressController.caption = "Downloading..."; // todo - titleProgressController.visible = true; - } else { - titleProgressController.visible = false; + + if (!downloadThread.getIndexes().isDownloadedFromInternet) { + downloadThread.runReloadIndexFiles(); } + + updateData(); } @Override @@ -106,7 +107,7 @@ public class MapDataMenuController extends MenuController { @Override public String getNameStr() { - return regionName; + return name; } @Override @@ -141,4 +142,95 @@ public class MapDataMenuController extends MenuController { public boolean buttonsVisible() { return false; } + + @Override + public void updateData() { + if (indexItem == null) { + otherIndexItems = downloadThread.getIndexes().getIndexItems(region.getRegionDownloadNameLC()); + for (IndexItem i : otherIndexItems) { + if (i.getType() == DownloadActivityType.NORMAL_FILE) { + indexItem = i; + otherIndexItems.remove(i); + break; + } + } + } + + topRightTitleButtonController.visible = otherIndexItems.size() > 0; + if (indexItem != null) { + if (indexItem.isOutdated()) { + leftTitleButtonController.caption = getMapActivity().getString(R.string.shared_string_update) + + " (" + indexItem.getSizeDescription(getMapActivity()) + ")"; + } else { + leftTitleButtonController.caption = getMapActivity().getString(R.string.shared_string_download) + + " (" + indexItem.getSizeDescription(getMapActivity()) + ")"; + } + } + rightTitleButtonController.visible = indexItem != null && indexItem.isDownloaded(); + + boolean hasIndexes = downloadThread.getIndexes().isDownloadedFromInternet; + boolean isDownloading = indexItem != null && downloadThread.getCurrentDownloadingItem() == indexItem; + if (!hasIndexes) { + titleProgressController.setIndexesDownloadMode(); + titleProgressController.visible = true; + } else if (isDownloading) { + titleProgressController.setMapDownloadMode(); + titleProgressController.progress = downloadThread.getCurrentDownloadingItemProgress(); + double mb = indexItem.getArchiveSizeMB(); + String v ; + if (titleProgressController.progress != -1) { + v = getMapActivity().getString(R.string.value_downloaded_from_max, mb * titleProgressController.progress / 100, mb); + } else { + v = getMapActivity().getString(R.string.file_size_in_mb, mb); + } + if(indexItem.getType() == DownloadActivityType.ROADS_FILE) { + titleProgressController.caption = indexItem.getType().getString(getMapActivity()) + " • " + v; + } else { + titleProgressController.caption = v; + } + titleProgressController.visible = true; + } else { + titleProgressController.visible = false; + } + } + + public void deleteItem() { + final OsmandApplication app = getMapActivity().getMyApplication(); + final File fl = indexItem.getTargetFile(app); + if (fl.exists()) { + AlertDialog.Builder confirm = new AlertDialog.Builder(getMapActivity()); + confirm.setPositiveButton(R.string.shared_string_yes, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + new AsyncTask() { + + @Override + protected void onPreExecute() { + getMapActivity().getContextMenu().close(); + } + + @Override + protected Void doInBackground(Void... params) { + boolean successfull = Algorithms.removeAllFiles(fl.getAbsoluteFile()); + if (successfull) { + app.getResourceManager().closeFile(fl.getName()); + } + app.getDownloadThread().updateLoadedFiles(); + return null; + } + + protected void onPostExecute(Void result) { + getMapActivity().refreshMap(); + } + + }.execute((Void) null); + } + }); + confirm.setNegativeButton(R.string.shared_string_no, null); + String fn = FileNameTranslationHelper.getFileName(getMapActivity(), app.getRegions(), + indexItem.getVisibleName(getMapActivity(), app.getRegions())); + confirm.setMessage(getMapActivity().getString(R.string.delete_confirmation_msg, fn)); + confirm.show(); + } + } } diff --git a/OsmAnd/src/net/osmand/plus/views/DownloadedRegionsLayer.java b/OsmAnd/src/net/osmand/plus/views/DownloadedRegionsLayer.java index 019ab25465..6dba8d4bfd 100644 --- a/OsmAnd/src/net/osmand/plus/views/DownloadedRegionsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/DownloadedRegionsLayer.java @@ -356,6 +356,17 @@ public class DownloadedRegionsLayer extends OsmandMapLayer implements IContextMe @Override public PointDescription getObjectName(Object o) { + if (o instanceof BinaryMapDataObject) { + String fullName = osmandRegions.getFullName((BinaryMapDataObject) o); + final WorldRegion region = osmandRegions.getRegionData(fullName); + if (region != null) { + return new PointDescription(PointDescription.POINT_TYPE_WORLD_REGION, + view.getContext().getString(R.string.shared_string_map), region.getLocaleName()); + } else { + return new PointDescription(PointDescription.POINT_TYPE_WORLD_REGION, + view.getContext().getString(R.string.shared_string_map), ((BinaryMapDataObject) o).getName()); + } + } return new PointDescription(PointDescription.POINT_TYPE_WORLD_REGION, view.getContext().getString(R.string.shared_string_map), ""); }