From cc93f367881179d92506c3a574a4c0aa8d7befbb Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Tue, 8 Sep 2015 08:29:24 +0200 Subject: [PATCH 01/90] Add 20% and 25% to zoom magnifier --- OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java index 9021c339c1..6b37a93f4b 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java @@ -920,7 +920,7 @@ public class MapControlsLayer extends OsmandMapLayer { final OsmandSettings.OsmandPreference mapDensity = view.getSettings().MAP_DENSITY; final AlertDialog.Builder bld = new AlertDialog.Builder(view.getContext()); int p = (int) (mapDensity.get() * 100); - final TIntArrayList tlist = new TIntArrayList(new int[] { 33, 50, 75, 100, 150, 200, 300, 400 }); + final TIntArrayList tlist = new TIntArrayList(new int[] { 20, 25, 33, 50, 75, 100, 150, 200, 300, 400 }); final List values = new ArrayList(); int i = -1; for (int k = 0; k <= tlist.size(); k++) { From 748337ada667f32f98f793a8736aadc7ba8acc3d Mon Sep 17 00:00:00 2001 From: Alexey Kulish Date: Tue, 8 Sep 2015 17:53:57 +0300 Subject: [PATCH 02/90] Added POI info fields to the context menu --- .../res/layout/map_context_menu_fragment.xml | 2 +- .../mapcontextmenu/InfoSectionBuilder.java | 86 ++++++------------- .../MapContextMenuFragment.java | 10 ++- .../osmand/plus/views/ContextMenuLayer.java | 33 ++++--- 4 files changed, 51 insertions(+), 80 deletions(-) diff --git a/OsmAnd/res/layout/map_context_menu_fragment.xml b/OsmAnd/res/layout/map_context_menu_fragment.xml index 52c903bf34..cb2a9335a3 100644 --- a/OsmAnd/res/layout/map_context_menu_fragment.xml +++ b/OsmAnd/res/layout/map_context_menu_fragment.xml @@ -177,7 +177,7 @@ android:id="@+id/context_menu_bottom_view" android:layout_width="fill_parent" android:layout_height="wrap_content" - android:orientation="horizontal"> + android:orientation="vertical"> - - - - - - - - - - - - - - - - - */ - - LinearLayout ll = new LinearLayout(view.getContext()); ll.setOrientation(LinearLayout.HORIZONTAL); - ll.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) ; + llParams.setMargins(0, dpToPx(10f), 0, dpToPx(10f)); + ll.setLayoutParams(llParams); // Icon LinearLayout llIcon = new LinearLayout(view.getContext()); @@ -98,9 +44,9 @@ public class InfoSectionBuilder extends BottomSectionBuilder { ll.addView(llIcon); ImageView icon = new ImageView(view.getContext()); - ViewGroup.MarginLayoutParams llIconParams = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); + LinearLayout.LayoutParams llIconParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) ; llIconParams.setMargins(dpToPx(12f), 0, 0, 0); - //llIconParams.setGravity(Gravity.CENTER_VERTICAL); + llIconParams.gravity = Gravity.CENTER_VERTICAL; icon.setLayoutParams(llIconParams); icon.setScaleType(ImageView.ScaleType.CENTER); icon.setImageDrawable(getRowIcon(iconId)); @@ -109,15 +55,33 @@ public class InfoSectionBuilder extends BottomSectionBuilder { // Text LinearLayout llText = new LinearLayout(view.getContext()); llText.setOrientation(LinearLayout.VERTICAL); - ViewGroup.MarginLayoutParams llTextParams = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + LinearLayout.LayoutParams llTextParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); llTextParams.setMargins(0, dpToPx(4f), 0, dpToPx(4f)); llText.setLayoutParams(llTextParams); ll.addView(llText); TextView textView = new TextView(view.getContext()); - ViewGroup.MarginLayoutParams llTextViewParams = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + + LinearLayout.LayoutParams llTextViewParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); llTextViewParams.setMargins(dpToPx(10f), 0, dpToPx(10f), 0); llText.setLayoutParams(llTextViewParams); + textView.setText(text); + //textView.setText("sdf dsaf fsdasdfg adsf asdsfd asdf sdf adsfg asdf sdfa sdf dsf agsfdgd fgsfd sdf asdf adg adf sdf asdf dfgdfsg sdfg adsf asdf asdf sdf SDF ASDF ADSF ASDF ASDF DAF SDAF dfg dsfg dfg sdfg rg rth sfghs dfgs dfgsdfg adfg dfg sdfg dfs "); + 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); + TypedValue typedValue = new TypedValue(); + Resources.Theme theme = view.getContext().getTheme(); + theme.resolveAttribute(R.attr.dashboard_divider, typedValue, true); + int color = typedValue.data; + horizontalLine.setBackgroundColor(color); + + ((LinearLayout)view).addView(horizontalLine); } public int dpToPx(float dp) { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index f1b0a35ca0..716e9c9cfc 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -10,7 +10,6 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.animation.DecelerateInterpolator; -import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; @@ -21,12 +20,9 @@ import net.osmand.plus.IconsCache; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.activities.search.SearchActivity; import org.apache.commons.logging.Log; -import java.util.Map; - public class MapContextMenuFragment extends Fragment { @@ -206,6 +202,12 @@ public class MapContextMenuFragment extends Fragment { BottomSectionBuilder bottomSectionBuilder = MapContextMenu.getInstance().getBottomSectionBuilder(); if (bottomSectionBuilder != null) { View bottomView = view.findViewById(R.id.context_menu_bottom_view); + bottomView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); bottomSectionBuilder.buildSection(bottomView); } diff --git a/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java b/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java index 965f45c573..47998532d1 100644 --- a/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java @@ -30,7 +30,6 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; -import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; public class ContextMenuLayer extends OsmandMapLayer { @@ -65,7 +64,8 @@ public class ContextMenuLayer extends OsmandMapLayer { private String description; private Map selectedObjects = new ConcurrentHashMap(); private Object selectedObj; - + private IContextMenuProvider contextObject; + private TextView textView; private ImageView closeButton; private OsmandMapTileView view; @@ -274,7 +274,8 @@ public class ContextMenuLayer extends OsmandMapLayer { if (selectedObjects.size() == 1) { setLocation(null, ""); selectedObj = selectedObjects.keySet().iterator().next(); - showMapContextMenu(selectedObj, latLon); + contextObject = selectedObjects.get(selectedObj); + showMapContextMenu(latLon); } else if (selectedObjects.size() > 1) { showContextMenuForSelectedObjects(latLon); } @@ -282,7 +283,9 @@ public class ContextMenuLayer extends OsmandMapLayer { setLocation(null, ""); final double lat = tileBox.getLatFromPixel((int) point.x, (int) point.y); final double lon = tileBox.getLonFromPixel((int) point.x, (int) point.y); - showMapContextMenu(null, new LatLon(lat, lon)); + selectedObj = null; + contextObject = null; + showMapContextMenu(new LatLon(lat, lon)); //setLocation(new LatLon(lat, lon), null); } view.refreshMap(); @@ -424,7 +427,7 @@ public class ContextMenuLayer extends OsmandMapLayer { @Override public boolean onSingleTap(PointF point, RotatedTileBox tileBox) { if (pressedContextMarker(tileBox, point.x, point.y)) { - showMapContextMenu(selectedObj, latLon); + showMapContextMenu(latLon); return true; } @@ -455,7 +458,8 @@ public class ContextMenuLayer extends OsmandMapLayer { if (selectedObjects.size() == 1) { setLocation(null, ""); selectedObj = selectedObjects.keySet().iterator().next(); - showMapContextMenu(selectedObj, latLon); + contextObject = selectedObjects.get(selectedObj); + showMapContextMenu(latLon); } else if (selectedObjects.size() > 1) { showContextMenuForSelectedObjects(latLon); return true; @@ -482,22 +486,23 @@ public class ContextMenuLayer extends OsmandMapLayer { @Override public void onClick(DialogInterface dialog, int which) { selectedObj = s.get(which); - showMapContextMenu(selectedObj, l); + contextObject = selectedObjects.get(selectedObj); + showMapContextMenu(l); } }); builder.show(); } else { selectedObj = selectedObjects.keySet().iterator().next(); - showMapContextMenu(selectedObj, l); + contextObject = selectedObjects.get(selectedObj); + showMapContextMenu(l); } } - private void showMapContextMenu(Object obj, LatLon latLon) { + private void showMapContextMenu(LatLon latLon) { PointDescription pointDescription; - if (obj != null) { - IContextMenuProvider typedObj = selectedObjects.get(obj); - pointDescription = typedObj.getObjectName(obj); - LatLon objLocation = typedObj.getObjectLocation(obj); + if (selectedObj != null && contextObject != null) { + pointDescription = contextObject.getObjectName(selectedObj); + LatLon objLocation = contextObject.getObjectLocation(selectedObj); pointDescription.setLat(objLocation.getLatitude()); pointDescription.setLon(objLocation.getLongitude()); } else { @@ -506,7 +511,7 @@ public class ContextMenuLayer extends OsmandMapLayer { this.latLon = new LatLon(pointDescription.getLat(), pointDescription.getLon()); showMapContextMenuMarker(); - MapContextMenu.getInstance().show(pointDescription, obj); + MapContextMenu.getInstance().show(pointDescription, selectedObj); } From bb588f08164110e9411585883795010bfff532f2 Mon Sep 17 00:00:00 2001 From: Alexey Kulish Date: Tue, 8 Sep 2015 20:01:25 +0300 Subject: [PATCH 03/90] Context menu - few fixes --- OsmAnd/res/layout/map_context_menu_fragment.xml | 6 +++--- .../mapcontextmenu/MapContextMenuFragment.java | 14 +++++--------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/OsmAnd/res/layout/map_context_menu_fragment.xml b/OsmAnd/res/layout/map_context_menu_fragment.xml index cb2a9335a3..4e73daf26a 100644 --- a/OsmAnd/res/layout/map_context_menu_fragment.xml +++ b/OsmAnd/res/layout/map_context_menu_fragment.xml @@ -2,12 +2,12 @@ diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index 716e9c9cfc..60858352bc 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -12,7 +12,6 @@ import android.view.ViewGroup; import android.view.animation.DecelerateInterpolator; import android.widget.ImageButton; import android.widget.ImageView; -import android.widget.LinearLayout; import android.widget.TextView; import net.osmand.PlatformUtil; @@ -85,6 +84,8 @@ public class MapContextMenuFragment extends Fragment { View topView = view.findViewById(R.id.context_menu_top_view); mainView = view.findViewById(R.id.context_menu_main); + //LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dpToPx(400)); + //mainView.setLayoutParams(lp); topView.setOnTouchListener(new View.OnTouchListener() { @@ -100,21 +101,16 @@ public class MapContextMenuFragment extends Fragment { case MotionEvent.ACTION_MOVE: float y = event.getY(); - LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mainView.getLayoutParams(); - float top = lp.topMargin + (y - dy); - if (top < 0) { - lp.topMargin = (int) top; - mainView.setLayoutParams(lp); - } + mainView.setY(mainView.getY() + (y - dy)); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: float posY = view.getHeight() - mainViewHeight; - if (mainView.getY() != posY) { + if (mainView.getY() != posY) mainView.animate().y(posY).setDuration(200).setInterpolator(new DecelerateInterpolator()).start(); - } + break; } From 75cd281835c38a711b6df2cc8cff52e34c067d33 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Tue, 8 Sep 2015 23:14:55 +0200 Subject: [PATCH 04/90] Inspector --- OsmAnd-java/src/net/osmand/binary/BinaryInspector.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/OsmAnd-java/src/net/osmand/binary/BinaryInspector.java b/OsmAnd-java/src/net/osmand/binary/BinaryInspector.java index e6c718a67b..869b83fc04 100644 --- a/OsmAnd-java/src/net/osmand/binary/BinaryInspector.java +++ b/OsmAnd-java/src/net/osmand/binary/BinaryInspector.java @@ -67,16 +67,15 @@ public class BinaryInspector { if(args.length == 1 && "test".equals(args[0])) { in.inspector(new String[]{ // "-vpoi", - "-vmap", "-vmapobjects", // "-vmapcoordinates", +// "-vmap", "-vmapobjects", // "-vmapcoordinates", // "-vrouting", -// "-vaddress", "-vcities","-vstreetgroups", + "-vaddress", "-vcities",//"-vstreetgroups", // "-vstreets", "-vbuildings", "-vintersections", // "-zoom=15", // "-bbox=1.74,51.17,1.75,51.16", // "-vstats", - "/Users/victorshcherb/osmand/temp/Germany_bremen_europe_15_08_00.obf" // "/Users/victorshcherb/osmand/maps/Synthetic_test_rendering.obf" -// "/Users/victorshcherb/osmand/maps/Map.obf" + "/Users/victorshcherb/osmand/maps/Netherlands_gelderland_europe_2.obf" // "/Users/victorshcherb/osmand/temp/Czech-republic_jihovychod_europe_2.road.obf" }); } else { @@ -571,7 +570,7 @@ public class BinaryInspector { BinaryMapAddressReaderAdapter.VILLAGES_TYPE, BinaryMapAddressReaderAdapter.POSTCODES_TYPE }; - String lang = "ru"; + String lang = "en"; for (int j = 0; j < cityType.length; j++) { int type = cityType[j]; From 2cbbfc27fc0acc8fa82bb07ff635268b6fec37e8 Mon Sep 17 00:00:00 2001 From: Marek Tyburec Date: Tue, 8 Sep 2015 21:14:29 +0200 Subject: [PATCH 05/90] Translated using Weblate (Czech) Currently translated at 96.7% (1710 of 1768 strings) --- OsmAnd/res/values-cs/strings.xml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index ec430ea62d..2c40f8fa27 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -906,7 +906,7 @@ odpoledne dopoledne Místo parkování - Modul Parkovací místo umožňuje zapamatovat si kdy bylo auto zaparkované a kolik zůstává času, pokud je parkování časově omezené. Parkovací místo a čas parkování můžete najít na panelu aktuální mapy.\nTaké je možné přidat upomínku do kalendáře, pokud chcete být upozorněni. + Modul Parkovací místo umožňuje zapamatování si, kdy jste auto zaparkovali a v případě časově omezeného parkování také kolik času zbývá. Parkovací místo a čas parkování můžete najít na panelu aktuální mapy. Je také možné přidat upomínku do kalendáře, pokud chcete být upozorněni. Parkovací místo Označit jako místo parkování Smazat místo parkování @@ -1994,4 +1994,17 @@ s často kladenými otázkami. Nejsou dostupné žádné aktualizace Nebezpečí Tučný obrys - + Oblíbené +Nedávná místa + Pracovní dny + Vyberte prosím typ POI. + Přidat otevírací dobu + Popis + Kontaktní informace + Máte rádi OsmAnd? + Záleží nám na vašem názoru, ceníme si vaší zpětné vazby. + Ohodnoťte tuto aplikaci + Ohodnoťte prosím aplikaci OsmAnd na Google Play + Řekněte nám proč. + Sdělte nám prosím, co byste chtěli v této aplikaci změnit. + From bcab429fb14e04d7fc8e6e81714016f9035be083 Mon Sep 17 00:00:00 2001 From: xmd5a Date: Wed, 9 Sep 2015 11:47:16 +0300 Subject: [PATCH 06/90] Update phrases --- OsmAnd/res/values/phrases.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/OsmAnd/res/values/phrases.xml b/OsmAnd/res/values/phrases.xml index d511ea6d45..d2924be6a8 100644 --- a/OsmAnd/res/values/phrases.xml +++ b/OsmAnd/res/values/phrases.xml @@ -1107,6 +1107,7 @@ Unmarked Start date Wheelchair + Wholesale Private access No access @@ -1133,6 +1134,12 @@ Salt (content) Grain (content) + Building supplies + Plumbing supplies + Wood supplies + Agricultural supplies + Tile supplies + Enforcement:traffic signals Enforcement:maxspeed Enforcement:maxheight From c069a4b1aed3d03dc1197a2747770f5f985ce578 Mon Sep 17 00:00:00 2001 From: Franco Date: Wed, 9 Sep 2015 02:13:37 +0200 Subject: [PATCH 07/90] Translated using Weblate (Argentinean Spanish) Currently translated at 100.0% (1091 of 1091 strings) --- OsmAnd/res/values-es-rAR/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index bf169dac1d..7fd6a84e8c 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -68,7 +68,7 @@ Artículos para bebés Venta de bolsos Muebles de baño - Muebles de dormitorio + Colchonería Boutique de moda Alfombras Negocio benéfico From 99d7a9414a69778b5eefb3a23371511f377ce3d9 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Wed, 9 Sep 2015 12:22:35 +0200 Subject: [PATCH 08/90] Translated using Weblate (Danish) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-da/phrases.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index c87f40402e..08235a4c19 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -1175,4 +1175,12 @@ Plansilo Forladt industrigrund Byggemodning + Engros + + Byggematerialer + VVS materialer + Talmaterialer + Landbrugsmaterialer + Flisematerialer + From a6530a436d125677266a353b7a476f13cbe296ce Mon Sep 17 00:00:00 2001 From: vshcherb Date: Wed, 9 Sep 2015 12:55:58 +0200 Subject: [PATCH 09/90] Update LICENSE Update year --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 08660a90ff..acb12f2ee5 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ OsmAnd – OSM Automated Navigation Directions – navigation software based on OpenStreetMap. - Copyright © 2010–2014 OsmAnd BV (Amstelveen, Netherlands - KvK 62066714). + Copyright © 2010–2015 OsmAnd BV (Amstelveen, Netherlands - KvK 62066714). The code in that repository is mainly covered by *GPLv3*, except some 3rd party libs and resources. ATTENTION: please be aware that some artwork has proprietary license. From b19ec8ebf3dee0327d8feacdabc29306d99a373e Mon Sep 17 00:00:00 2001 From: jan madsen Date: Wed, 9 Sep 2015 12:23:35 +0200 Subject: [PATCH 10/90] Translated using Weblate (Danish) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-da/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index 08235a4c19..4c3a20a162 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -1179,7 +1179,7 @@ Byggematerialer VVS materialer - Talmaterialer + Træmaterialer Landbrugsmaterialer Flisematerialer From 46db91b19f22155f0ecf8929b091c2c88016a34c Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Wed, 9 Sep 2015 15:04:07 +0300 Subject: [PATCH 11/90] Bug report dash fix. --- .../src/net/osmand/plus/AppInitializer.java | 6 +++-- .../osmand/plus/dashboard/DashboardOnMap.java | 22 ++++++++++--------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/AppInitializer.java b/OsmAnd/src/net/osmand/plus/AppInitializer.java index 5e481242ac..bafc5f6686 100644 --- a/OsmAnd/src/net/osmand/plus/AppInitializer.java +++ b/OsmAnd/src/net/osmand/plus/AppInitializer.java @@ -146,13 +146,15 @@ public class AppInitializer implements IProgress { return false; } - public boolean checkPreviousRunsForExceptions(Activity activity) { + public boolean checkPreviousRunsForExceptions(Activity activity, boolean writeFileSize) { initUiVars(activity); long size = activity.getPreferences(Context.MODE_WORLD_READABLE).getLong(EXCEPTION_FILE_SIZE, 0); final File file = app.getAppPath(OsmandApplication.EXCEPTION_PATH); if (file.exists() && file.length() > 0) { if (size != file.length() && !firstTime) { - activity.getPreferences(Context.MODE_WORLD_WRITEABLE).edit().putLong(EXCEPTION_FILE_SIZE, file.length()).commit(); + if (writeFileSize) { + activity.getPreferences(Context.MODE_WORLD_WRITEABLE).edit().putLong(EXCEPTION_FILE_SIZE, file.length()).commit(); + } return true; } } else { diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java index ad13363af0..08953b260c 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java @@ -8,7 +8,6 @@ import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v7.widget.Toolbar; -import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.animation.Animation; @@ -32,6 +31,7 @@ import com.github.ksoichiro.android.observablescrollview.ObservableScrollView; import com.github.ksoichiro.android.observablescrollview.ObservableScrollViewCallbacks; import com.github.ksoichiro.android.observablescrollview.ScrollState; +import net.osmand.PlatformUtil; import net.osmand.data.LatLon; import net.osmand.plus.ContextMenuAdapter; import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick; @@ -64,7 +64,8 @@ import java.util.List; /** */ public class DashboardOnMap implements ObservableScrollViewCallbacks { - + private static final org.apache.commons.logging.Log LOG = + PlatformUtil.getLog(DashboardOnMap.class); private static final String TAG = "DashboardOnMap"; public static boolean staticVisible = false; public static DashboardType staticVisibleType = DashboardType.DASHBOARD; @@ -72,7 +73,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { private static final DashFragmentData.ShouldShowFunction rateUsShouldShow = new DashRateUsFragment.RateUsShouldShow(); private static final DefaultShouldShow defaultShouldShow = new DefaultShouldShow(); - private static final DefaultShouldShow errorShouldShow = new ErrorShouldShow(); + private static final DashFragmentData.ShouldShowFunction errorShouldShow = new ErrorShouldShow(); private static final DashFragmentData.ShouldShowFunction firstTimeShouldShow = new FirstTimeShouldShow(); private static final DashFragmentData.ShouldShowFunction chooseAppDirShouldShow = new ChooseAppDirShouldShow(); @@ -390,9 +391,11 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { public void hideDashboard() { setDashboardVisibility(false, visibleType); } + public void hideDashboard(boolean animation) { setDashboardVisibility(false, visibleType, animation); } + public void setDashboardVisibility(boolean visible, DashboardType type) { setDashboardVisibility(visible, type, this.visible ? visibleType : null, true); } @@ -656,11 +659,9 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { private void addOrUpdateDashboardFragments() { - Log.v(TAG, "addOrUpdateDashboardFragments(" + ")"); OsmandSettings settings = getMyApplication().getSettings(); TransactionBuilder builder = new TransactionBuilder(mapActivity.getSupportFragmentManager(), settings, mapActivity); - Log.v(TAG, "pluginsCards=" + OsmandPlugin.getPluginsCardsList()); builder.addFragmentsData(fragmentsData) .addFragmentsData(OsmandPlugin.getPluginsCardsList()) .getFragmentTransaction().commit(); @@ -911,10 +912,9 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { } public boolean hasCriticalMessages() { - final OsmandSettings settings = getMyApplication().getSettings(); return rateUsShouldShow.shouldShow(settings, mapActivity, DashRateUsFragment.TAG) - || errorShouldShow.shouldShow(settings, mapActivity, DashErrorFragment.TAG); + || errorShouldShow.shouldShow(null, mapActivity, null); } View getParentView() { @@ -928,6 +928,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { .makeGlobal().get(); } } + public static class DefaultShouldShow extends SettingsShouldShow { @Override public boolean shouldShow(OsmandSettings settings, MapActivity activity, String tag) { @@ -936,11 +937,12 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { } } - private static class ErrorShouldShow extends DefaultShouldShow { + private static class ErrorShouldShow implements DashFragmentData.ShouldShowFunction { + // If settings null. No changes in setting will be made. @Override public boolean shouldShow(OsmandSettings settings, MapActivity activity, String tag) { - return super.shouldShow(settings, activity, tag) && activity.getMyApplication() - .getAppInitializer().checkPreviousRunsForExceptions(activity); + return activity.getMyApplication().getAppInitializer() + .checkPreviousRunsForExceptions(activity, settings != null); } } From 092da3d2ea6692468415f8499c991001773b4137 Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Wed, 9 Sep 2015 15:23:44 +0300 Subject: [PATCH 12/90] Fix for editing existing poi crash. --- .../net/osmand/plus/osmedit/EditPoiFragment.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/EditPoiFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/EditPoiFragment.java index dde58888a8..cf4881f9ce 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/EditPoiFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/EditPoiFragment.java @@ -159,9 +159,7 @@ public class EditPoiFragment extends DialogFragment { toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); - fragmentManager.beginTransaction().remove(EditPoiFragment.this).commit(); - fragmentManager.popBackStack(); + dismiss(); } }); @@ -325,11 +323,7 @@ public class EditPoiFragment extends DialogFragment { if (getActivity() instanceof MapActivity) { ((MapActivity) getActivity()).getMapView().refreshMap(true); } - FragmentManager fragmentManager = - getActivity().getSupportFragmentManager(); - fragmentManager.beginTransaction().remove(EditPoiFragment.this) - .commit(); - fragmentManager.popBackStack(); + dismiss(); } }, getActivity(), mOpenstreetmapUtil); @@ -515,9 +509,7 @@ public class EditPoiFragment extends DialogFragment { if (n != null) { EditPoiFragment fragment = EditPoiFragment.createInstance(n, amenity); - activity.getSupportFragmentManager().beginTransaction() - .add(R.id.fragmentContainer, fragment, "EditPoiFragment") - .addToBackStack(null).commit(); + fragment.show(activity.getSupportFragmentManager(), TAG); } else { AccessibleToast.makeText(activity, activity.getString(R.string.poi_error_poi_not_found), From d2d5fe8ac1643b0dd3b75867b94c6b4ce377f5f4 Mon Sep 17 00:00:00 2001 From: Adriano Rosa Date: Wed, 9 Sep 2015 14:33:16 +0200 Subject: [PATCH 13/90] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-pt-rBR/phrases.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/OsmAnd/res/values-pt-rBR/phrases.xml b/OsmAnd/res/values-pt-rBR/phrases.xml index ced72d0d9d..e67e63be2d 100644 --- a/OsmAnd/res/values-pt-rBR/phrases.xml +++ b/OsmAnd/res/values-pt-rBR/phrases.xml @@ -1158,4 +1158,12 @@ Sal (conteúdo) Grão (conteúdo) + Atacado + + Materiais de construção + Material de canalização + Suprimentos agrícolas + Suprimentos de madeira + Suprimentos de telha + From bd872c7dff2b93af55a63810f41cd8c6e6d8d63f Mon Sep 17 00:00:00 2001 From: ezjerry liao Date: Wed, 9 Sep 2015 15:35:54 +0200 Subject: [PATCH 14/90] Translated using Weblate (Chinese (Taiwan)) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-zh-rTW/phrases.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/OsmAnd/res/values-zh-rTW/phrases.xml b/OsmAnd/res/values-zh-rTW/phrases.xml index 31e9192b87..6336b21fc4 100644 --- a/OsmAnd/res/values-zh-rTW/phrases.xml +++ b/OsmAnd/res/values-zh-rTW/phrases.xml @@ -1156,4 +1156,12 @@ 鹽 (內容) 榖物 (內容) + 批發商 + + 建材供應商 + 配管供應商 + 木材供應商 + 農藝供應商 + 磚瓦供應商 + From 45bc1f1321924d0b9910beb78984eba230240de3 Mon Sep 17 00:00:00 2001 From: Alexey Kulish Date: Wed, 9 Sep 2015 17:04:35 +0300 Subject: [PATCH 15/90] Ctx menu in progress --- .../res/layout/map_context_menu_fragment.xml | 28 +- .../plus/mapcontextmenu/MapContextMenu.java | 6 +- .../MapContextMenuFragment.java | 253 ++++++++++++++---- .../AmenityInfoMenuBuilder.java} | 57 ++-- .../sections/AmenityInfoMenuController.java | 17 ++ .../MenuBuilder.java} | 8 +- .../sections/MenuController.java | 72 +++++ 7 files changed, 349 insertions(+), 92 deletions(-) rename OsmAnd/src/net/osmand/plus/mapcontextmenu/{InfoSectionBuilder.java => sections/AmenityInfoMenuBuilder.java} (72%) create mode 100644 OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuController.java rename OsmAnd/src/net/osmand/plus/mapcontextmenu/{BottomSectionBuilder.java => sections/MenuBuilder.java} (72%) create mode 100644 OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/MenuController.java diff --git a/OsmAnd/res/layout/map_context_menu_fragment.xml b/OsmAnd/res/layout/map_context_menu_fragment.xml index 4e73daf26a..01473173a6 100644 --- a/OsmAnd/res/layout/map_context_menu_fragment.xml +++ b/OsmAnd/res/layout/map_context_menu_fragment.xml @@ -7,23 +7,17 @@ android:orientation="vertical"> - - - - + android:layout_weight="0" + android:orientation="vertical"/> @@ -113,8 +107,7 @@ android:id="@+id/context_menu_buttons" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" - android:layout_height="64dp" - android:layout_gravity="bottom"> + android:layout_height="54dp"> + android:src="@drawable/ic_overflow_menu_white"/> @@ -189,4 +182,13 @@ + + + + \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java index 4b0d13c2f1..7a383cb693 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java @@ -12,6 +12,8 @@ import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandSettings; import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.mapcontextmenu.sections.AmenityInfoMenuController; +import net.osmand.plus.mapcontextmenu.sections.MenuController; import net.osmand.plus.render.RenderingIcons; import net.osmand.plus.routing.RoutingHelper; import net.osmand.plus.views.OsmandMapLayer; @@ -144,11 +146,11 @@ public class MapContextMenu { return foundStreetName; } - public BottomSectionBuilder getBottomSectionBuilder() { + public MenuController getMenuController() { if (object != null) { if (object instanceof Amenity) { - return new InfoSectionBuilder(app, (Amenity)object); + return new AmenityInfoMenuController(app, (Amenity)object); } } diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index 60858352bc..a75aab3e84 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -2,13 +2,18 @@ package net.osmand.plus.mapcontextmenu; import android.annotation.TargetApi; import android.app.Activity; +import android.content.res.Resources; import android.os.Build; import android.os.Bundle; import android.support.v4.app.Fragment; +import android.util.DisplayMetrics; +import android.util.TypedValue; import android.view.LayoutInflater; import android.view.MotionEvent; +import android.view.VelocityTracker; import android.view.View; import android.view.ViewGroup; +import android.view.ViewTreeObserver; import android.view.animation.DecelerateInterpolator; import android.widget.ImageButton; import android.widget.ImageView; @@ -19,9 +24,12 @@ import net.osmand.plus.IconsCache; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.mapcontextmenu.sections.MenuController; import org.apache.commons.logging.Log; +import static android.util.TypedValue.COMPLEX_UNIT_DIP; + public class MapContextMenuFragment extends Fragment { @@ -30,8 +38,16 @@ public class MapContextMenuFragment extends Fragment { private View view; private View mainView; + private View bottomView; + private View shadowView; + private View bottomBorder; - private float mainViewHeight; + MenuController menuController; + + private int menuTopHeight; + private int menuButtonsHeight; + private int menuBottomViewHeight; + private int menuFullHeight; @Override public void onAttach(Activity activity) { @@ -74,7 +90,39 @@ public class MapContextMenuFragment extends Fragment { view = inflater.inflate(R.layout.map_context_menu_fragment, container, false); - View shadowView = view.findViewById(R.id.context_menu_shadow_view); + ViewTreeObserver vto = view.getViewTreeObserver(); + vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + + @Override + public void onGlobalLayout() { + + menuTopHeight = view.findViewById(R.id.context_menu_top_view).getHeight(); + menuButtonsHeight = view.findViewById(R.id.context_menu_buttons).getHeight(); + menuBottomViewHeight = view.findViewById(R.id.context_menu_bottom_view).getHeight(); + menuFullHeight = view.findViewById(R.id.context_menu_main).getHeight(); + + ViewTreeObserver obs = view.getViewTreeObserver(); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + obs.removeOnGlobalLayoutListener(this); + } else { + obs.removeGlobalOnLayoutListener(this); + } + + doLayoutMenu(); + } + + }); + + bottomBorder = view.findViewById(R.id.context_menu_bottom_border); + bottomBorder.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); + + shadowView = view.findViewById(R.id.context_menu_shadow_view); shadowView.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View view, MotionEvent event) { dismissMenu(); @@ -84,32 +132,103 @@ public class MapContextMenuFragment extends Fragment { View topView = view.findViewById(R.id.context_menu_top_view); mainView = view.findViewById(R.id.context_menu_main); - //LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dpToPx(400)); - //mainView.setLayoutParams(lp); topView.setOnTouchListener(new View.OnTouchListener() { private float dy; + private float dyMain; + private int destinationState; + private VelocityTracker velocity; + private boolean slidingUp; + private boolean slidingDown; + + private float velocityY; @Override public boolean onTouch(View v, MotionEvent event) { + switch (event.getAction()) { case MotionEvent.ACTION_DOWN: dy = event.getY(); - mainViewHeight = mainView.getHeight(); + dyMain = mainView.getY(); + velocity = VelocityTracker.obtain(); + velocityY = 0; + velocity.addMovement(event); break; case MotionEvent.ACTION_MOVE: float y = event.getY(); - mainView.setY(mainView.getY() + (y - dy)); + float newY = mainView.getY() + (y - dy); + mainView.setY(newY); + + ViewGroup.LayoutParams lp = bottomBorder.getLayoutParams(); + lp.height = (int)(view.getHeight() - newY - menuFullHeight) + 10; + bottomBorder.setLayoutParams(lp); + bottomBorder.setY(newY + menuFullHeight); + bottomBorder.requestLayout(); + + velocity.addMovement(event); + velocity.computeCurrentVelocity(1000); + float vel = Math.abs(velocity.getYVelocity()); + if (vel > velocityY) + velocityY = vel; + break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: - float posY = view.getHeight() - mainViewHeight; - if (mainView.getY() != posY) + slidingUp = Math.abs(velocityY) > 500 && (mainView.getY() - dyMain) < -50; + slidingDown = Math.abs(velocityY) > 500 && (mainView.getY() - dyMain) > 50; + + velocity.recycle(); + + if (menuController != null) { + if (slidingUp) { + menuController.slideUp(); + } else if (slidingDown) { + menuController.slideDown(); + } + destinationState = menuController.getCurrentMenuState(); + } else { + destinationState = MenuController.MenuState.HEADER_ONLY; + } + + float posY = 0; + switch (destinationState) { + case MenuController.MenuState.HEADER_ONLY: + posY = view.getHeight() - (menuFullHeight - menuBottomViewHeight); + break; + case MenuController.MenuState.HALF_SCREEN: + posY = view.getHeight() - menuFullHeight; + break; + case MenuController.MenuState.FULL_SCREEN: + posY = 0; + break; + default: + break; + } + + float minY = Math.min(posY, mainView.getY()); + lp = bottomBorder.getLayoutParams(); + lp.height = (int)(view.getHeight() - minY - menuFullHeight) + 10; + if (lp.height < 0) + lp.height = 0; + bottomBorder.setLayoutParams(lp); + bottomBorder.requestLayout(); + + if (mainView.getY() != posY) { mainView.animate().y(posY).setDuration(200).setInterpolator(new DecelerateInterpolator()).start(); + bottomBorder.animate().y(posY + menuFullHeight).setDuration(200).setInterpolator(new DecelerateInterpolator()).start(); + } + + + /* + lp = shadowView.getLayoutParams(); + lp.height = view.getHeight() - (int)posY; + shadowView.setLayoutParams(lp); + shadowView.requestLayout(); + */ break; @@ -148,7 +267,7 @@ public class MapContextMenuFragment extends Fragment { closeButtonView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - ((MapActivity)getActivity()).getMapLayers().getContextMenuLayer().hideMapContextMenuMarker(); + ((MapActivity) getActivity()).getMapLayers().getContextMenuLayer().hideMapContextMenuMarker(); dismissMenu(); } }); @@ -185,7 +304,7 @@ public class MapContextMenuFragment extends Fragment { }); final ImageButton buttonMore = (ImageButton) view.findViewById(R.id.context_menu_more_button); - buttonMore.setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_core_overflow_dark, + buttonMore.setImageDrawable(iconsCache.getIcon(R.drawable.ic_overflow_menu_white, light ? R.color.actionbar_dark_color : R.color.actionbar_light_color)); buttonMore.setOnClickListener(new View.OnClickListener() { @Override @@ -194,61 +313,71 @@ public class MapContextMenuFragment extends Fragment { } }); - // Bottom view - BottomSectionBuilder bottomSectionBuilder = MapContextMenu.getInstance().getBottomSectionBuilder(); - if (bottomSectionBuilder != null) { - View bottomView = view.findViewById(R.id.context_menu_bottom_view); + // Menu controller + menuController = MapContextMenu.getInstance().getMenuController(); + bottomView = view.findViewById(R.id.context_menu_bottom_view); + if (menuController != null) { bottomView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); - bottomSectionBuilder.buildSection(bottomView); + menuController.build(bottomView); } - - /* - Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); - toolbar.setTitle(R.string.poi_create_title); - toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha); - toolbar.setNavigationOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); - fragmentManager.beginTransaction().remove(MapContextMenuFragment.this).commit(); - fragmentManager.popBackStack(); - } - }); - - viewPager = (ViewPager) view.findViewById(R.id.viewpager); - String basicTitle = getResources().getString(R.string.tab_title_basic); - String extendedTitle = getResources().getString(R.string.tab_title_advanced); - MyAdapter pagerAdapter = new MyAdapter(getChildFragmentManager(), basicTitle, extendedTitle); - viewPager.setAdapter(pagerAdapter); - - final TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout); - tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); - - // Hack due to bug in design support library v22.2.1 - // https://code.google.com/p/android/issues/detail?id=180462 - // TODO remove in new version - if (ViewCompat.isLaidOut(tabLayout)) { - tabLayout.setupWithViewPager(viewPager); - } else { - tabLayout.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { - @Override - public void onLayoutChange(View v, int left, int top, int right, int bottom, - int oldLeft, int oldTop, int oldRight, int oldBottom) { - tabLayout.setupWithViewPager(viewPager); - tabLayout.removeOnLayoutChangeListener(this); - } - }); - } - */ return view; } + private void doLayoutMenu() { + int shadowViewHeight = 0; + int bottomBorderHeight = 0; + + int menuState; + if (menuController != null) + menuState = menuController.getCurrentMenuState(); + else + menuState = MenuController.MenuState.HEADER_ONLY; + + switch (menuState) { + case MenuController.MenuState.HEADER_ONLY: + shadowViewHeight = view.getHeight() - (menuFullHeight - menuBottomViewHeight); + bottomBorderHeight = 0; + break; + case MenuController.MenuState.HALF_SCREEN: + int maxHeight = (int)(menuController.getHalfScreenMaxHeightKoef() * view.getHeight()); + if (maxHeight > menuFullHeight) { + shadowViewHeight = view.getHeight() - menuFullHeight; + bottomBorderHeight = 0; + } else { + shadowViewHeight = view.getHeight() - maxHeight; + bottomBorderHeight = 0; + mainView.setY(shadowViewHeight); + } + break; + case MenuController.MenuState.FULL_SCREEN: + shadowViewHeight = 0; + bottomBorderHeight = view.getHeight() - menuFullHeight; + break; + default: + break; + } + + ViewGroup.LayoutParams lp = bottomBorder.getLayoutParams(); + lp.height = bottomBorderHeight + 10; + bottomBorder.setLayoutParams(lp); + bottomBorder.setY(view.getHeight() - bottomBorderHeight); + + lp = shadowView.getLayoutParams(); + lp.height = shadowViewHeight; + shadowView.setLayoutParams(lp); + + lp = mainView.getLayoutParams(); + lp.height = menuFullHeight; + mainView.setLayoutParams(lp); + + } + public void dismissMenu() { getActivity().getSupportFragmentManager().popBackStack(); } @@ -267,5 +396,21 @@ public class MapContextMenuFragment extends Fragment { .add(R.id.fragmentContainer, fragment, "MapContextMenuFragment") .addToBackStack(null).commit(); } + + // Utils + public int getScreenHeight() { + DisplayMetrics dm = new DisplayMetrics(); + getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); + return dm.heightPixels; + } + + public int dpToPx(float dp) { + Resources r = getActivity().getResources(); + return (int) TypedValue.applyDimension( + COMPLEX_UNIT_DIP, + dp, + r.getDisplayMetrics() + ); + } } diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/InfoSectionBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java similarity index 72% rename from OsmAnd/src/net/osmand/plus/mapcontextmenu/InfoSectionBuilder.java rename to OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java index fe00e00794..1d83dc33ff 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/InfoSectionBuilder.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java @@ -1,6 +1,7 @@ -package net.osmand.plus.mapcontextmenu; +package net.osmand.plus.mapcontextmenu.sections; import android.content.res.Resources; +import android.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.view.View; @@ -20,32 +21,34 @@ import java.util.Map; import static android.util.TypedValue.COMPLEX_UNIT_DIP; -public class InfoSectionBuilder extends BottomSectionBuilder { +public class AmenityInfoMenuBuilder extends MenuBuilder { private final Amenity amenity; - public InfoSectionBuilder(OsmandApplication app, final Amenity amenity) { + public AmenityInfoMenuBuilder(OsmandApplication app, final Amenity amenity) { super(app); this.amenity = amenity; } private void buildRow(View view, int iconId, String text) { + Resources.Theme theme = view.getContext().getTheme(); LinearLayout ll = new LinearLayout(view.getContext()); ll.setOrientation(LinearLayout.HORIZONTAL); LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) ; - llParams.setMargins(0, dpToPx(10f), 0, dpToPx(10f)); + //llParams.setMargins(0, dpToPx(14f), 0, dpToPx(14f)); ll.setLayoutParams(llParams); // Icon LinearLayout llIcon = new LinearLayout(view.getContext()); llIcon.setOrientation(LinearLayout.HORIZONTAL); - llIcon.setLayoutParams(new LinearLayout.LayoutParams(dpToPx(42f), ViewGroup.LayoutParams.MATCH_PARENT)); + llIcon.setLayoutParams(new LinearLayout.LayoutParams(dpToPx(72f), dpToPx(48f))); + llIcon.setGravity(Gravity.CENTER_VERTICAL); ll.addView(llIcon); ImageView icon = new ImageView(view.getContext()); LinearLayout.LayoutParams llIconParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) ; - llIconParams.setMargins(dpToPx(12f), 0, 0, 0); + llIconParams.setMargins(dpToPx(16f), dpToPx(12f), dpToPx(32f), dpToPx(12f)); llIconParams.gravity = Gravity.CENTER_VERTICAL; icon.setLayoutParams(llIconParams); icon.setScaleType(ImageView.ScaleType.CENTER); @@ -62,11 +65,23 @@ public class InfoSectionBuilder extends BottomSectionBuilder { TextView textView = new TextView(view.getContext()); - LinearLayout.LayoutParams llTextViewParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); - llTextViewParams.setMargins(dpToPx(10f), 0, dpToPx(10f), 0); - llText.setLayoutParams(llTextViewParams); +// TypedValue typedValueTextSize = new TypedValue(); +// theme.resolveAttribute(R.dimen.default_desc_text_size, typedValueTextSize, true); +// int textSize = typedValueTextSize.data; + textView.setTextSize(14); + +// TypedValue typedValueTextColor = new TypedValue(); +// theme.resolveAttribute(android.R.attr.textColorSecondary, typedValueTextColor, true); +// int textColor = typedValueTextColor.data; + //textView.setTextColor(textColor); + textView.setText(text); //textView.setText("sdf dsaf fsdasdfg adsf asdsfd asdf sdf adsfg asdf sdfa sdf dsf agsfdgd fgsfd sdf asdf adg adf sdf asdf dfgdfsg sdfg adsf asdf asdf sdf SDF ASDF ADSF ASDF ASDF DAF SDAF dfg dsfg dfg sdfg rg rth sfghs dfgs dfgsdfg adfg dfg sdfg dfs "); + + 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); @@ -75,10 +90,10 @@ public class InfoSectionBuilder extends BottomSectionBuilder { LinearLayout.LayoutParams llHorLineParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dpToPx(1f)); llHorLineParams.gravity = Gravity.BOTTOM; horizontalLine.setLayoutParams(llHorLineParams); - TypedValue typedValue = new TypedValue(); - Resources.Theme theme = view.getContext().getTheme(); - theme.resolveAttribute(R.attr.dashboard_divider, typedValue, true); - int color = typedValue.data; + + TypedValue typedValueColor = new TypedValue(); + theme.resolveAttribute(R.attr.dashboard_divider, typedValueColor, true); + int color = typedValueColor.data; horizontalLine.setBackgroundColor(color); ((LinearLayout)view).addView(horizontalLine); @@ -94,23 +109,27 @@ public class InfoSectionBuilder extends BottomSectionBuilder { } @Override - public void buildSection(View view) { + public void build(View view) { MapPoiTypes poiTypes = app.getPoiTypes(); for(Map.Entry e : amenity.getAdditionalInfo().entrySet()) { - int iconId = 0; + int iconId; String key = e.getKey(); String vl = e.getValue(); if(key.startsWith("name:")) { continue; } else if(Amenity.OPENING_HOURS.equals(key)) { - iconId = R.drawable.mm_clock; // todo: change icon + iconId = R.drawable.ic_action_time; } else if(Amenity.PHONE.equals(key)) { - iconId = R.drawable.mm_amenity_telephone; // todo: change icon + iconId = R.drawable.ic_action_call_dark; } else if(Amenity.WEBSITE.equals(key)) { - iconId = R.drawable.mm_internet_access; // todo: change icon + iconId = R.drawable.ic_world_globe_dark; } else { - iconId = R.drawable.ic_type_info; // todo: change icon + if (Amenity.DESCRIPTION.equals(key)) { + iconId = R.drawable.ic_action_note_dark; + } else { + iconId = R.drawable.ic_action_info_dark; + } AbstractPoiType pt = poiTypes.getAnyPoiAdditionalTypeByKey(e.getKey()); if (pt != null) { if(pt instanceof PoiType && !((PoiType) pt).isText()) { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuController.java new file mode 100644 index 0000000000..ce795e7c87 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuController.java @@ -0,0 +1,17 @@ +package net.osmand.plus.mapcontextmenu.sections; + +import net.osmand.data.Amenity; +import net.osmand.plus.OsmandApplication; + +public class AmenityInfoMenuController extends MenuController { + + public AmenityInfoMenuController(OsmandApplication app, final Amenity amenity) { + super(new AmenityInfoMenuBuilder(app, amenity)); + } + + @Override + public int getSupportedMenuStates() { + return MenuState.HEADER_ONLY | MenuState.HALF_SCREEN | MenuState.FULL_SCREEN; + } + +} diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/BottomSectionBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/MenuBuilder.java similarity index 72% rename from OsmAnd/src/net/osmand/plus/mapcontextmenu/BottomSectionBuilder.java rename to OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/MenuBuilder.java index bc393679d9..55211d041c 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/BottomSectionBuilder.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/MenuBuilder.java @@ -1,4 +1,4 @@ -package net.osmand.plus.mapcontextmenu; +package net.osmand.plus.mapcontextmenu.sections; import android.graphics.drawable.Drawable; import android.view.View; @@ -7,15 +7,15 @@ import net.osmand.plus.IconsCache; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; -public abstract class BottomSectionBuilder { +public abstract class MenuBuilder { protected OsmandApplication app; - public BottomSectionBuilder(OsmandApplication app) { + public MenuBuilder(OsmandApplication app) { this.app = app; } - public abstract void buildSection(View view); + public abstract void build(View view); public Drawable getRowIcon(int iconId) { IconsCache iconsCache = app.getIconsCache(); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/MenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/MenuController.java new file mode 100644 index 0000000000..8e1d138d79 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/MenuController.java @@ -0,0 +1,72 @@ +package net.osmand.plus.mapcontextmenu.sections; + +import android.view.View; + +public abstract class MenuController { + + public class MenuState { + public static final int HEADER_ONLY = 1; + public static final int HALF_SCREEN = 2; + public static final int FULL_SCREEN = 4; + } + + private MenuBuilder builder; + private int currentMenuState; + + public MenuController(MenuBuilder builder) { + this.builder = builder; + this.currentMenuState = getInitialMenuState(); + } + + public void build(View rootView) { + builder.build(rootView); + } + + public int getInitialMenuState() { + return MenuState.HEADER_ONLY; + } + + public int getSupportedMenuStates() { + return MenuState.HEADER_ONLY | MenuState.HALF_SCREEN | MenuState.FULL_SCREEN; + } + + public int getCurrentMenuState() { + return currentMenuState; + } + + public boolean slideUp() { + int v = currentMenuState; + for (int i = 0; i < 2; i++) { + v = v << 1; + if ((v & getSupportedMenuStates()) != 0) { + currentMenuState = v; + return true; + } + } + return false; + } + + public boolean slideDown() { + int v = currentMenuState; + for (int i = 0; i < 2; i++) { + v = v >> 1; + if ((v & getSupportedMenuStates()) != 0) { + currentMenuState = v; + return true; + } + } + return false; + } + + public void setCurrentMenuState(int currentMenuState) { + this.currentMenuState = currentMenuState; + } + + public float getHalfScreenMaxHeightKoef() { + return .6f; + } + + public boolean shouldShowButtons() { + return true; + } +} From 5e197db18ba678ea54704cead61528c290d387ec Mon Sep 17 00:00:00 2001 From: ezjerry liao Date: Wed, 9 Sep 2015 15:36:54 +0200 Subject: [PATCH 16/90] Translated using Weblate (Chinese (Taiwan)) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-zh-rTW/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-zh-rTW/phrases.xml b/OsmAnd/res/values-zh-rTW/phrases.xml index 6336b21fc4..503b0827ef 100644 --- a/OsmAnd/res/values-zh-rTW/phrases.xml +++ b/OsmAnd/res/values-zh-rTW/phrases.xml @@ -940,7 +940,7 @@ 容許通行 顧客通行 交貨通行 - 農用通路 + 農產通路 監測站 首都 From c7e2f9b78214a3145ca2bcea0e144ac581b76565 Mon Sep 17 00:00:00 2001 From: Dmitriy Prodchenko Date: Wed, 9 Sep 2015 18:18:54 +0300 Subject: [PATCH 17/90] Shadow and background for Context menu. --- .../drawable-hdpi/bg_contextmenu_dots_dark.png | Bin 0 -> 1760 bytes .../drawable-hdpi/bg_contextmenu_dots_light.png | Bin 0 -> 1819 bytes .../res/drawable-hdpi/bg_shadow_gorizontal.9.png | Bin 0 -> 1086 bytes .../drawable-mdpi/bg_contextmenu_dots_dark.png | Bin 0 -> 1503 bytes .../drawable-mdpi/bg_contextmenu_dots_light.png | Bin 0 -> 1540 bytes .../res/drawable-mdpi/bg_shadow_gorizontal.9.png | Bin 0 -> 1066 bytes .../drawable-xhdpi/bg_contextmenu_dots_dark.png | Bin 0 -> 2102 bytes .../drawable-xhdpi/bg_contextmenu_dots_light.png | Bin 0 -> 2205 bytes .../drawable-xhdpi/bg_shadow_gorizontal.9.png | Bin 0 -> 1083 bytes .../drawable-xxhdpi/bg_contextmenu_dots_dark.png | Bin 0 -> 2742 bytes .../bg_contextmenu_dots_light.png | Bin 0 -> 2875 bytes .../drawable-xxhdpi/bg_shadow_gorizontal.9.png | Bin 0 -> 1088 bytes 12 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 OsmAnd/res/drawable-hdpi/bg_contextmenu_dots_dark.png create mode 100644 OsmAnd/res/drawable-hdpi/bg_contextmenu_dots_light.png create mode 100644 OsmAnd/res/drawable-hdpi/bg_shadow_gorizontal.9.png create mode 100644 OsmAnd/res/drawable-mdpi/bg_contextmenu_dots_dark.png create mode 100644 OsmAnd/res/drawable-mdpi/bg_contextmenu_dots_light.png create mode 100644 OsmAnd/res/drawable-mdpi/bg_shadow_gorizontal.9.png create mode 100644 OsmAnd/res/drawable-xhdpi/bg_contextmenu_dots_dark.png create mode 100644 OsmAnd/res/drawable-xhdpi/bg_contextmenu_dots_light.png create mode 100644 OsmAnd/res/drawable-xhdpi/bg_shadow_gorizontal.9.png create mode 100644 OsmAnd/res/drawable-xxhdpi/bg_contextmenu_dots_dark.png create mode 100644 OsmAnd/res/drawable-xxhdpi/bg_contextmenu_dots_light.png create mode 100644 OsmAnd/res/drawable-xxhdpi/bg_shadow_gorizontal.9.png diff --git a/OsmAnd/res/drawable-hdpi/bg_contextmenu_dots_dark.png b/OsmAnd/res/drawable-hdpi/bg_contextmenu_dots_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..98a0620e88571cd2806b8a1f3fa84e47ba7cef62 GIT binary patch literal 1760 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 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-mdpi/bg_contextmenu_dots_dark.png b/OsmAnd/res/drawable-mdpi/bg_contextmenu_dots_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..d8e45c5113e18d00330cbe95c5e94ce250649514 GIT binary patch literal 1503 zcmeAS@N?(olHy`uVBq!ia0vp^CO|C6!3HEJN%rRfDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49sPjArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XQrEMU}&OXZmDNz zYG!U}uA^WCh1eo~=?wNlAf~zJ7Um zxn8-kUVc%!zM-Y1rM`iYzLAkGP=#)BWnM{Qg>GK4GRy>*)Z*l#%z~24{5%DaiHS-1 zr6smXK$k+ikXzvE3pY5g7#dK(Ak(i%EYLU9Gtke?1^ElCy0|1L72yo5s*6J^3sUui zQj7CTi;{uyk){mO3=BK`7J(E3U1Q~6lnIQK#2lCWZd!^_nx#>anWa&hAzllTteOBgA&ws6{W@Ea;qjLUlTVd-~X_j`TgbGJ31;#hxJd>S8 zIa-+#6x2g!9PMzOnPhWfyMeLi!T=5l7e#^X(;Qu8W!W6BEK15g%For>aFNB(;0C*f z;Zcc>vz{;6o{B5Vxg9sUWW3WSZ(Tu$Nv{%S(qtEU!oB-TmnJz6;D_w3iJ-+tfj#%yo4(ML*mTAQ526qh#H z8hxwJ-b#?e{*C?CpH$S+{XbWQdmZjKud<)ADm5~#_2R!jKlPBDe@gFH_Xb9WNlhErZseu}f{I*E LS3j3^P6Qn?bHrYf+#Mfw|3$a@?x{-kr7-l56`7&d&IHQbYbD0j!e1%<+x_vNy*d=$*^M9WI z@ArSd9V=HXOG|z;8G@iRr^8;ZtOn(s`C6j#-KB05ltnFjVPaqDeiiBjD)=QLIUv zmoB%LPTNu>3sNh~0UEDECi<$rKAiCGXV_O>M*}Q8rPI|P%a1my75x&U`0a! zVC5hvu9H}$9$rlhtmN+1hN6m!H*}fAD@9@I>>|6)4+Pn1w;;-mmg6~^F#^(SHj}8C zWQ{0kG*Bo7a3kvF2ror=j1=L;V>~azmzYh2$&441CLM|6C1kNpZ?Y@pup5gB8%dEd ztWyZejKG4JZChPjUUf{$~FfUrB z=TX~%#Mc9^R1*F0RGw-6B|cCr%a}N`0X1-x2i0>16G{Jw`9<>cllnn(7W)yDOx%a@HnXO6us9H6VG%&+5u(VIV z+_6XfVQCw_W+BeCJuNxRs7@SnH{VT7xtvwtsH^KbRDY+hFz)=u1FAu9-)LSoQrO?J zjhV|H+H~ww7Ays;WL~YHFIDpMPSJrRB_x-i^Hz zcW?Gby1TniZ%vuA#Flc#THBE9dw00`)1IO(CdreYlaq6B^!pC6x~8U5)%^A7*vS42 zM59UgD3|&xedt--tj&Yj1?uybZFlC~9?tkXH8a??IMiKSTDq_i&L4ietgC<|h&2$= zd$=L_>`7?xTx##Z@6u~*wk_T5?W?jh8qKAm#^#QW%FgZE$Dquff%2V`%gUsoNPpsZ zs$zWPl<%kP@q72wSzq40a-uR-yzwo_%+B^^W@R02$)z7Yymw2zdi51IJf3ejS`@jT zLhasj@wZuATjYzXuLe6*BTapsCQ&u<>`796?y1`s$yK(-qoL2B*dRht2}kCdH2R&ww@bko#R`uV1Yi7 zZGHS`d`y4;!Gq4o?DT8I<4OL~(L9I4F+c69Hh#ztn>@b9I#1rsYjdp|da~VP=Cofo rWSkVPqxtzciRc^E4}P#VK?%_Kxu4UI{NBGc`d@aItgv@4t={|(v(qXC literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-mdpi/bg_shadow_gorizontal.9.png b/OsmAnd/res/drawable-mdpi/bg_shadow_gorizontal.9.png new file mode 100644 index 0000000000000000000000000000000000000000..3fbbf61ebab8de79a08bc44a30093ef3e9b1bf6c GIT binary patch literal 1066 zcmbVLyKmD#7!~z3zCnQ)A>I@4D6B81D06QR+a~_4Est_LTzVH0~e&74)>dMWj?1e1DFjKW< zvqA4v&Soa*xhH>mPp|W&(jsfvB|R%bOv%A*1Zuvui5kdq`u9JeBEy{8@tQ5ts^8IV z?DJM?!zX@7(F{{uOhU`#RuJon!47zJDyPo^3kD{nYp}zhTJ=>>#t{MvuX4610$P0;w1CTOWZM;nkmPR^E!4K>8BjO+)6^fQjNUTthcv0~E zG_QemOd9A<7{^-2&3=f428!`^WYd1QxiOg5?qo-)A&o}A8+o)T)|QFwZ65`sW*RL0 z!#kd%TPjjqO;b2cu~kk{^N@o`QaRU=T`0FzD7(^_=Qw;tt;%_ENmJA+l%$FRO;OfN zMXSPmzNC~&V{9#mi51vr?AxQhN7%xNSiKw}i{Pk<@z!_>Ry&yBxPwDbE)Tj6=GVQz z!M*r$+NNRFCW^cr+o>#R4(`J!DNxyfBfvsN7n(&M)pN!|L0lxoWspd zJUZBzdpq4#X5VCC=E~{*#mw_3QE_4T%DP@_v6)#m+AJ_Dl6verHzNb E0r*`;!T5w#sA`An<2;;I? zL|Glmb=6^35Og_|MW;k$6b6w|W^_19phVf_Qjy!4Z4jLO!^t2hYD zUFvG>E4}v?Rr%4k=Zu$Iv*Ow@<2Gp-g~LAPzpL*71qsH*XUG zHN+?GV@fGfy$Ft1`yVmDVMl`H$|DI%E=2U%4S1*WFauf`RRF14jn2qRxB1Br21|=CZv28YYt|95RgpQn)-OokyVo z%MTIrW`I;Ynb>dH7bfwE@hGb2k;y43DWnuS2{9ZbQ@LC&nL;DeXdtEm8V~DGMJlK> zx~*6c!$ze+tw+^}4p_9Ph(nT4J`rR3J_M~^D*a$sXIxGcmNIgxLQkfWC}gd6F|H+T zBPxS`qw!H~qx`TQCd*(Wl4MX~^-#I3fU(^DzN1A&j14cupvH=#(1;Obk`~sX0b)K8 zyCFeph^Jt|OcjU21UXD43uLkwT#yS>S)dA{skpQ_7MG@?uGsk)Ug*c>`m$NROg4o{ zrTQ{CLZQ%?;^)VqirFF>m%D-u&>2yMP6@C0R%5=GvEtvw@!v=LS4EY%lEwGelp86vkxJsph4RIJC1LDSk zbcn$QximTiGO0|Mu8MT_9@?x|6PxGuCVI8@+{V)oc@L`x>9X3G* zY*ZWvaG&6C7U2P6fjqTqFJwL0N7F^cv-Df?S@Z&B+|eS1!0|6s0q3ioN%RA=%vn|m|m2QJ?t6-z=k+K!KX z()VzKhyU@eb=D@sR&z@V@RI3es(m-{Xz+#dRnuMzN5QT;6w)tqvx5(-JMT|7-wr=i zE{m*bpZep;`bc`1`SIPF*K_vvs-&FU`yo;8`qDK7+fiq?alFl*;AAM}RA2k;bkCW7 zWeX&X7?QS)^q;EnbUEl#xD}ruEgd8N8eIOLs!$K_KIbpnGiK}R&f{`Y(nURX#dc0D z@hoFA*@Ga3X*b;4d)BBfJwEeQu-DHsdU?e*&Q=M%xuPboYA1tYm^|v<#rQnA&dlZV z6KH<=yT%1$%gEX_N7YuJUwV*dirgSeE2X;zGD0pilnpgC=B+8>mp;=pw*t@LLXWhd zf?M9|1Vbs?rq91>`C4GKj zI6GFK-{XFLgyG=X&}{bOq4u$}QxAh3HS*kcUB$y)k&K>n z-syPtw?g@WYT=aroB7;ELV>LYK{Co%F>f9aA9)ayy46)bJ)h~1ujwD_aJF-uUuz%a zX<|G*Sr8<<`jv|#C%dz9%(^>%X7;K!$D_W(cs2UgmA0YpOU}3=emlJq{r_snHM=z1 zyZYJ7z2iZZ3HRVDxzP6D{WPsLH`b6$8bAShL zH~lHUxFkYyk1yHO)L2zCI@}F8SZ}NBZmf;y(&-8FU;~bt_?Latw9W^MfARp|U~#1| GHtWAII!z$} literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xhdpi/bg_contextmenu_dots_light.png b/OsmAnd/res/drawable-xhdpi/bg_contextmenu_dots_light.png new file mode 100644 index 0000000000000000000000000000000000000000..39172fcc3c4e381eb89c9e632d6eea917d782abe GIT binary patch literal 2205 zcmbVOX;f2Z8op&WKn)7YHhKv`0+^K~s)eb7s8}svRVWlx78$ff1S^{?f})6y?Q|{(&iwH7$J}%7{kG?M-{*UmbMF4I zkWH2-dlUcwmVp6W0Wu~dualVx@}&h&86$(8)<0Ssu1wVGglZVzNR%QN43rC#U;!+Y zq^GvREC4V}lSV{qqxqYeVx^oQoW~IKauvb`0G792B^1kGEhvJMqzX1>y6y)ID3!1= zQ8Ye@ukwSFr2!dgI6NaHLYyHJLlTVlMv$dvA_nBJRtW0lDGCi!&&Dj+Wg_$WZ6XF- zfM{iG%m-1?{4mf@sfIxsfsPlG$W+h^B9LixFUV^>NI}*_5`#z~;Ykpa=E)>cz{LlH zcvDLfnF20v(HF8}W0JL66_ZHR>2w60Cqb!BB9b8pB9bUX3I&fK@S1dmR;b4-G|o#F zxUfd7ma4Q;r2?F{C=@AoYS|b>>4z)GReb(O!wSt}ppcLe^+FYqOdt{E^7(r$pfy?n z{9hTLL~A0_RWMNiYm__HVk94l&P!w@c7N_@9*C%6hN`7VQiLg7rFf?tR%ipcYz%Tj zkVqv=AswbAG8i;GgC?fqX>=-thhQ=tpD3XuLKG1lq9l@+?0kyv%kzT#z33d87l}qD z`_mY{zP|n>9*;rhdihZxXo(xB&}fAUF}&nkiuhjSLVwC-`l(@|R;i9qDpQuKAS_v_ zRcexzD$vhwA?qM6N~(}3bsD$%G<~==7gkHtUP5}4vi$1L(C|8M+=h$!NGvHVZ*ENvkbIY0f_3drJPGr|BCd*m+OGkg05gN88%Z=m{1sGs{W(w#nvk>aAnE3W9s> zI>Aj_{Mkm9%6dO^#ApnYec$3idR~;v$f!Z9(27BM*J9CFS)NlSI$~l%%eF4ZdXmD;AMtGw!&~*CAmK zm0LNe@9*i^**GzKb$Dnf!qvs)G1mb7<5!!6mU&0Z zy5HruOnnXHaB-qxhZQ9&kzdw8i{2DtL z6B}Emy&n4=$Kpn! zSoL3a>xO2hKw?vC9^KTYx9r}%dk;4-nHyVBZlvPL$;mpIOy*5WHB&LIcqhzp?p&$J z=dgk6vcjt1;NZ10Gc(85msclfG%FG8o~rKdZjM4hAO%Ug`dytJ92{=s=jY#0m2AM? ze(bc5N?K+}Ih1LgAF^+^y{+xFsJOVta{pVE4u}sA2_r7`gq3}`K#)=!$`gc#7u2}o z@3y!9dzc!MZS~`-$X8(|r0*U*PnJr@YX0G%`VD*dQbU8hZddV{E48(=SS%Ji+|U}{ z#V2?5La*F~YV{==1icGkOp>)D!Nb|F9esj% zyu9acN)NTQwLPq@t*uPt)l}%~7acx7}Rr_LVh^s?DLHUO(P~ zRtqbT)TfI?=8{83fRU1kg!QotQmLt$Q=vh@!I={i6LB}OL0Z%7-$EZ%vaZzE_kDHr z=qyDs{;FVL`j4FKjEwB?q><<8E| zrfx>BY2iCwpPZiV7#bb*HcZ;_x#@$@`J#`Td^X*PYqvv*FN* z5Jgep+>}-z>p<`x=qKNcZ`R6W8N!(gE}|N4=pLk!CaOY^v-NpcfV#PI^(7pqsJ>;Z zRKb<}dDTERs|OgiX}g3?QR5R$S2q?Q230t3ISKmP<`xYsGeMW7JfC;dux?GQda$@U zT{2b|48^1;&VcczN(|T#>!4{bI=DW! zL_thp1xb!6u`wW$Gsnj{k!N^Cl_DxHg3dz|Z=P9G3tG10i<}a49b;GJxJIMFHXQ>WpWRqUehn zGL~%U;GCAA$sg9VOjVbmREx(YCN3E=Bgs*PQJ^3*HB+o9VpUeen$Weg7hj7fqfuTK zB{{1ILPkm{8D2?7l%x=gh!LU3%{e~S9RqfKTf}#VOUkzoS513R$H*%owAk%}**e0= zuOk3sNtUu%G8cpgPyev&8&xP(8{xF?V;h{;&1cK|IHsqL~%j0{M9_& zE7Fm{wl@mo&>JS`kO}h0sQmmoc8rYKTuw`tnjc=h+X-)jLw%E*8|%*|f7~BDK5}pS z`secHN7}*JfvHgT*3KnK|B@Pgyf%3I)6r|8)RXsHhsC?Q7tYyC|9bfK_mjU0GaH46 iyDyS&g(JmNAGvMn!N|}}`uSWj80TDOT6>zha^p9Jh*k#x literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xxhdpi/bg_contextmenu_dots_dark.png b/OsmAnd/res/drawable-xxhdpi/bg_contextmenu_dots_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..df1c2241c125843457960ebb56af0309b5612751 GIT binary patch literal 2742 zcmbVOX;f3!7LFnzj53HK0>&s(C>h8=NK6<5hy|n&kTOX~Zb%FnOo9Z|62hR&3R;T; zBJe<|D2P-MWJ(_h%3K4Y1r!C*B9j7+yr9zeesuN6yKCKh&OT>sFklY$P?ChGG{6PKG^m6d#S;-FWY}lBMCE*W83}`a zRuOZ^urH(ny?mf9d?5hEA#CAvlnoY&Cm?Kaws->G8j4oRNR%BCje?^HL>z{QLPNhk zFr_ykgGuzIxPA4dl*llaSS%nSkufnbh!_llFN{Rm5C{Y$3XMdg;Ytm-D3&LtN#H!u z))fmBKtva^1!6Xz2VJ&Ei{M9#$uK3;FGt`CyuAK0%oBYLlrm&U2~B{sL7H#TR6@ZOMnvq8(TP&fo2lW5w-+0(`Loa-{GC{Zdg}0 zyfY4u!r9ok;+%1I7(28R2Jeb?#oA$|9 zPQx?ouy8Dc5CO+9uy{BDjbXrXHaGyoj9>t0j4kXdp7H<252+-DTrQUXDV~)jWkoJe z|7r!L@K-YdJY@$7m94U99exu80xLWyPE^U@pJzKbTLF{S^W%ASSg&4NnmCQmR2X#YScc;}JoK}4egN2bHviJmO{%?tDdh49Xi_T5FWQ6Qi ztykYEud)64*VU`4x?bL6oc7G$tkv~2?`a!qc=wOUE|LM{T|d+)N*;vO&Q7_mmYibT zn7>-Wi-ZHCYss*vtW5K2wq>G&oUa6(3p3+JRP0#^D zHa&e^^X5<@_?+jnRP%7Tj2@bZ=v5t{u-iq5U#g=5T}t;Rs#%%;?@ zwg^t1b##%{&vU{#Ka6O{^)y<6J%e8+X%pYAlK0Ixm%Z$M;jW{$j$~Zum|~>c{`7$I zLaSIKz&<}#UM*L(?5=L2XpE@l$Y-1_zb(Et;%u_WXtp+T+%0eSjkUOeI#3bHJt#17ppxb3|yH}&6|8_sXurM36hk@kJe zTO&F)pBBO!KDF^3mKG;I4TWv0D^aQ6uDbKjfpIUB^fC@G!n)w8_+{huUs1u<_fB>l z&NxoQWalI~wfVb}a35jB9pD0V$8d^CMfH49r6lS~$Xnel z*isva;ttNDKcD5eA6)pvi|K22^Nqmj!U;pSOGD*x?9pA;X7NFHuHHZ(Q5Z!Y{e>+(KBgT1eY-c4mSe>gwhowm(k z+reDZR8qeGHz8GnH-Gx@JKUZe9CuF7n=LA;PYRGH#~An*P3C3~3$LRI9C>ihb4uH)<&@v9KtO zw3q6($Z9f-OiayW^2EcO9iYtGn6{`LC>U4}|Gs)}3-tyI`z!ODeEiKI&-70D_5e8a zV&hERX_j$Pa2{e$|5bO`@%!O{^6-ZGe!Z!inu*LR_0yRt(ff-SVC-4?E$kDB?^gPQ zbCV7Y;3pQ1k4SEiSc1vRRIBgp-EVjJhXq{V1??|g0&2)PyRz%`58Y2D znNE${d_)y)?CAubPMfc*(C~LIYsYAnFCeV1)J2&WwM6JrW5_;Bu%yie3t=HDuWllT3B2@Q>3 zYu7` zwifNFrane}cb7x)yANsAY`WG5^KI=yTn($t>9mCV+uiFG=CEF*s5+#9f2w};>=011 zE`4pN0-b#KXo==`-_9K(fupuKB=t%xwVAtq!r!3#q+6ljPs- zP*|;As>e-jah(0$u_2*0GTL#wL%#C*82D4;)( layP|qs919KV=ZZ-K#E^(VnsXDKQ8}CdboO1t~iIw{sW?nihKY7 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xxhdpi/bg_contextmenu_dots_light.png b/OsmAnd/res/drawable-xxhdpi/bg_contextmenu_dots_light.png new file mode 100644 index 0000000000000000000000000000000000000000..28d19d576c6cec3cad22753fdc2a02c6615068ab GIT binary patch literal 2875 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 literal 0 HcmV?d00001 From 2c0c93158323123d5d80d48dd8de03cd4b24ddbd Mon Sep 17 00:00:00 2001 From: Dmitriy Prodchenko Date: Wed, 9 Sep 2015 18:20:38 +0300 Subject: [PATCH 18/90] Fix bug in bg color. --- .../bg_contextmenu_dots_dark.png | Bin 1760 -> 1763 bytes .../bg_contextmenu_dots_light.png | Bin 1819 -> 1819 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/OsmAnd/res/drawable-hdpi/bg_contextmenu_dots_dark.png b/OsmAnd/res/drawable-hdpi/bg_contextmenu_dots_dark.png index 98a0620e88571cd2806b8a1f3fa84e47ba7cef62..375e5d36f2a9618ecd53b1d71df3299e806efc16 100644 GIT binary patch delta 851 zcmV-Z1FZbu4dV^4UIHLAFgGwUMl&)sH!wCaF-0{wMK>`;MnW+`H9{~oLpL*%egYgI zG%z9oIYl=yMMgp~K{Y}!HA6Qulez+ABsVuUTsI4v?_Hf1ek zIW#pbVlrViEn_(}I599ZI50P2Ws^b!f(Q@9=#c;b0|S%H15tlY#&#@g{!eGlWoQrt z79tj_P}K%=M1MOTgL0hyc+sh8Sqp6buVg3;~Ry+4Ovzzy-=P{G1L7P-K9n z0#j|A;02mlHKG6vMhT7@fU$)8)84W=5Azjhz6PL`=ZOKKF$EGf9Z1`F_%8y#&dYo> z`_Wo_<$tSfD>8pT!?3tAvjopOEw9r7>!F#V=gbzK?N-G=Ff1N@Lj{PvGVd*m#j4(f zfpw!b_0ZZdyv$pbYT_4HfMMf`=P^Up&C}Be@}@qpJ~XDl!?0;uyb~Fq^+7o>m))wn zzSX)lRj%A%jMZf^eSRz}-yrzr`~JtDo#U79-@bm)X&-;J6GBRAvY=1}YdQxt0bpoO zWTl!nH@nun{G1E1Q>1pO*X_Rg@b1mMub)4Ck+;93{f?}QywW#iU0}v6y^Sg0N?@yv z?Zcu$g8^$^ZEhd-b@X?SCdpA#s9`BFPK6e4(~Z{kJ>fXJg>BM>vkMv!G+}^e%$6o^ zQ!{DoZIyp&b>>`c_HofqI6wnvF?gM+F8vFft~21e__ns$+Lwu7vFPAHgVb^x#ciQz zHWu?NB`GkaRuc=0OP5@?dM9I0CPzQMhX&Vqy_Ynkmb;({Yt)ogi5_PIkS{H-Jd$bH z&9cbOaXZXNU~rw+d&#{Kbwf@1I@DN$vV@ZkwZ(tp^~Tm!r!=)kCTxJF`o`v!l-BXY zwoNNX;ty~xxHrG>WSB0XTyevikx~|3=k=bA-+31*Br8b zA~GLKn+dP;de16RNNu1o;bg};#>KPrv}w0G{g6!fkQyI=R-40EmH;j8(U#X6_vM!G zCLK$h)HnxPHT|ho=Wybf!h!zyOHU_$E|vPWu1=002ovPDHLkV1h@FjTry{ delta 831 zcmV-F1Hk;_4d4y1UIHLPHAXo#GDJl+H!w9ZF-0{(LO3}%HZ(IqMmRD?LN_>*egYgI zLp4S@H8Mm*H8(IdF)>9oLP9t>I5sphK}I+-MnX3@lez+ABspVaVK-zrG%Yk_Ibtm{ zWHdJ|IWjY3Ej2MUWiw`CWMwilHj_dFf(TC?7YzUa0|1lE15tmD#&Jg0{GZO8%g`VQ z$p10;pa70iI7iebHhypMeB{*sT#u9#?_L0?jn6E(dH2|$VPYei+DUh(~K-$K`e-Zd~Ugo3O zkM`m#|63hfkpX`ihQ*bcC3xOxd7Tbe56u+4XSVQck17U&Ve#l2DnRU&c^_FUR`n(f ztQ+mAhxUfyWj?A@6Ti3u3>#NGj~TLVo}NaKH}!$_p)my>hE3DroyY*K56XeL>{i|N zt=6rna^(hNtS*b`^J7{02EjMq_dovZ9KU@3_VtTS`>21N5K>Z;g{gB;699(hL{_SK zbF*vB%g?zGJ4I@jdfo1;5AWXG`}+CQ7y0v-wBM0+kyrYrtP9MTrMEE!TnTKov3*!H zXfR;UtIh4hzK;Is(Ih!)3NYmaJtTb>*CwmW@}$2g2keP0}WEkZ4|eKqS;u? zvy`O3lv+(JEG}Jg-Rhl;L75!=_#PTO=d~_rNG*3k6V|9Hs}eoV1|VNrUU?+bu$yI* zo#S?xk-*?NuXV}25p_dN`a0BDgR+F14zn42din^`7X=o%%NrRt_ynwaV)86}$OCR>_V7#f&Z7?>xePIh8$VtE;qa(MFz H=3r(3aq}X& delta 132 zcmbQuH=A!m9Fu~xshg##k&C0Lxq+#np{uErlZB;)nTfHZn}v~^lexv@Iwl#IB1@c# zb}^->SSBYYnx|Np=$fQhCg~cdn3(HY8X2ePni`s>8mA?tq#7BUO?F~#VyST7V7mDP Hb1*Xim>MFi From ee4ee5294329a8bd3ca6056264510ad6b5510837 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Wed, 9 Sep 2015 18:22:47 +0200 Subject: [PATCH 19/90] Update fonts --- OsmAnd-java/src/net/osmand/NativeLibrary.java | 8 +-- OsmAnd/.gitignore | 1 + OsmAnd/assets/bundled_assets.xml | 15 ++-- OsmAnd/assets/fonts/Roboto-Medium.ttf | Bin 127488 -> 0 bytes OsmAnd/assets/fonts/Roboto-Regular.ttf | Bin 158604 -> 0 bytes OsmAnd/build.gradle | 11 ++- OsmAnd/build.xml | 8 +++ .../src/net/osmand/plus/AppInitializer.java | 7 +- eclipse-compile/appcompat/build.gradle | 2 +- eclipse-compile/cardview/build.gradle | 2 +- eclipse-compile/design/build.gradle | 2 +- .../net/osmand/addressPlugin/BuildConfig.java | 8 --- .../net/osmand/addressPlugin/Manifest.java | 7 -- .../gen/net/osmand/addressPlugin/R.java | 7 -- plugins/Osmand-Nautical/build.gradle | 2 +- plugins/Osmand-ParkingPlugin/build.gradle | 2 +- plugins/Osmand-SRTMPlugin/build.gradle | 2 +- plugins/Osmand-Sherpafy/.classpath | 9 --- plugins/Osmand-Sherpafy/.gitignore | 4 -- plugins/Osmand-Sherpafy/.project | 33 --------- plugins/Osmand-Sherpafy/AndroidManifest.xml | 24 ------- plugins/Osmand-Sherpafy/build.gradle | 67 ------------------ plugins/Osmand-Sherpafy/proguard-project.txt | 20 ------ plugins/Osmand-Sherpafy/project.properties | 14 ---- .../res/drawable-hdpi/ic_launcher.png | Bin 9397 -> 0 bytes .../res/drawable-hdpi/icon.png | Bin 7287 -> 0 bytes .../res/drawable-ldpi/ic_launcher.png | Bin 2729 -> 0 bytes .../res/drawable-ldpi/icon.png | Bin 2683 -> 0 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 5237 -> 0 bytes .../res/drawable-mdpi/icon.png | Bin 4055 -> 0 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 14383 -> 0 bytes .../res/drawable-xhdpi/icon.png | Bin 10436 -> 0 bytes plugins/Osmand-Sherpafy/res/layout/main.xml | 13 ---- .../Osmand-Sherpafy/res/values/strings.xml | 8 --- .../sherpafy/SherpafyPluginActivity.java | 63 ---------------- plugins/Osmand-Skimaps/build.gradle | 2 +- 36 files changed, 42 insertions(+), 299 deletions(-) delete mode 100644 OsmAnd/assets/fonts/Roboto-Medium.ttf delete mode 100644 OsmAnd/assets/fonts/Roboto-Regular.ttf delete mode 100644 plugins/OsmAnd-AddressPlugin/gen/net/osmand/addressPlugin/BuildConfig.java delete mode 100644 plugins/OsmAnd-AddressPlugin/gen/net/osmand/addressPlugin/Manifest.java delete mode 100644 plugins/OsmAnd-AddressPlugin/gen/net/osmand/addressPlugin/R.java delete mode 100644 plugins/Osmand-Sherpafy/.classpath delete mode 100644 plugins/Osmand-Sherpafy/.gitignore delete mode 100644 plugins/Osmand-Sherpafy/.project delete mode 100644 plugins/Osmand-Sherpafy/AndroidManifest.xml delete mode 100644 plugins/Osmand-Sherpafy/build.gradle delete mode 100644 plugins/Osmand-Sherpafy/proguard-project.txt delete mode 100644 plugins/Osmand-Sherpafy/project.properties delete mode 100644 plugins/Osmand-Sherpafy/res/drawable-hdpi/ic_launcher.png delete mode 100644 plugins/Osmand-Sherpafy/res/drawable-hdpi/icon.png delete mode 100644 plugins/Osmand-Sherpafy/res/drawable-ldpi/ic_launcher.png delete mode 100644 plugins/Osmand-Sherpafy/res/drawable-ldpi/icon.png delete mode 100644 plugins/Osmand-Sherpafy/res/drawable-mdpi/ic_launcher.png delete mode 100644 plugins/Osmand-Sherpafy/res/drawable-mdpi/icon.png delete mode 100644 plugins/Osmand-Sherpafy/res/drawable-xhdpi/ic_launcher.png delete mode 100644 plugins/Osmand-Sherpafy/res/drawable-xhdpi/icon.png delete mode 100644 plugins/Osmand-Sherpafy/res/layout/main.xml delete mode 100644 plugins/Osmand-Sherpafy/res/values/strings.xml delete mode 100644 plugins/Osmand-Sherpafy/src/net/osmand/sherpafy/SherpafyPluginActivity.java diff --git a/OsmAnd-java/src/net/osmand/NativeLibrary.java b/OsmAnd-java/src/net/osmand/NativeLibrary.java index c0aec802dd..c2ed078c65 100644 --- a/OsmAnd-java/src/net/osmand/NativeLibrary.java +++ b/OsmAnd-java/src/net/osmand/NativeLibrary.java @@ -281,13 +281,13 @@ public class NativeLibrary { return lhs < rhs ? -1 : (lhs == rhs ? 0 : 1); } - public static void loadFontData(String dir) { - File dr = new File(dir); - if (dr.listFiles() == null) { + public void loadFontData(File dr) { + File[] lf = dr.listFiles(); + if (lf == null) { System.err.println("No fonts loaded from " + dr.getAbsolutePath()); return; } - ArrayList lst = new ArrayList(Arrays.asList(dr.listFiles())); + ArrayList lst = new ArrayList(Arrays.asList(lf)); Collections.sort(lst, new Comparator() { diff --git a/OsmAnd/.gitignore b/OsmAnd/.gitignore index 5a330f65ec..fcf6015200 100644 --- a/OsmAnd/.gitignore +++ b/OsmAnd/.gitignore @@ -3,6 +3,7 @@ dist/ res/values/no_translate.xml assets/specialphrases/* assets/voice/* +assets/fonts/* gen/ local.properties raw/ diff --git a/OsmAnd/assets/bundled_assets.xml b/OsmAnd/assets/bundled_assets.xml index f3240fa183..8f7238cdeb 100644 --- a/OsmAnd/assets/bundled_assets.xml +++ b/OsmAnd/assets/bundled_assets.xml @@ -43,14 +43,11 @@ - + + + + + + diff --git a/OsmAnd/assets/fonts/Roboto-Medium.ttf b/OsmAnd/assets/fonts/Roboto-Medium.ttf deleted file mode 100644 index a3c1a1f1702ebf8f5771ae96197539ddc507f04a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127488 zcmeFacVJXi`agWmxp!ug5CZAFOnT2GlQzkuO(wk;(#xdx-a~*8LdQ@?M2HBA zh=_=Yh%73LjYVVuS;ajOeN>Ikd&v2RHig5NB_%tygGb1N*$o3xy=jbD}=}1D(9EG!+-RlT{cM2gkG9$+? z;5B29lL+B@D6h&>rWLe))0=^i(K3Vt*Q;78+Sgy%;ERw2JU6&e*E~?We|_LMLVl2b z>#nb_~F?mJPV;1F6* z6zDm&1NjJMz~{MWy$HjzgOHX$d0ReLu^c?RjFQAP__#Vuwzh`zPA!(kV}w@Q3`n;>9C!skNGDu6Wl{$R*3AGTSy=BY;p*N z5`qpwZY{_{J;V+zVdtT0_9!Y7Y(b^aPfI+Bma)I0B4#lv6)I6avlczU+(7wk3tGV6 ze*yEZhZaB|%gKEthZI6KqjvUnw2t`>#lc*Sk=dw)T!#7G3;no(N(Gltq0kFu3iDAN z%(+6eSaY9MqBOx`SiAEuZ(pNj!naT&yBF25Yf&tWJA-{1jR3DW5G%Br-H686YUD^V zkfY#9w1!=V=8KM?8c`T3Ci-Y4xum%%Sb+-IZ75x^8_i?yp+4dY^Cd@x%x$!u8AqMW z5R7*QT1XC~ev*bfm`~9lV~>(ZGa5liZ2@T*p-JFebtL5axK?dLO3_)UqmGUVcyF`d zO=KyU3;Ys_9N0CeS@06t40(d!2b3(>kCcL9)CB97$DTzSSOX}t4CS&aq++d51?@At z19g%8=y|pgnX$$&?>_@SE2+AJ(a{?P6^feu zW1`Jyqv!$JD6~Qr!rx##BD6-3iJC;YXgm80^miUAW>=%tOc7el-bZf2US!9bp){EP zC2T9K!zN@eWFUVU?%^}wF(<*tFvgGJz7~}W$IuetT{K@{0p;4DTsS zZle+10Q8*bH>g((YxpC~$y`(p{E{xPLbK_dPu*vT;-F3?>gMatMD6grmQ6+_tOm8f z`qoaZ^;}r*-3UE!=Kk>@jkYf^0e)NxvebyyFgsz*UWGMwfH8T)7+yeQ!VM@;unR?s zK7=`b0nOJ*fOYsMnlJPO-qoNAQ2_E4bRbtj4`5Ii>J}_Ti-pdxE@w371!Ab9AB_Q~ zY^MAmSO%E22j+Ya$lkjskja5H6QOM3PpDq_H&iCfL2`jR@?+VPUYk^z*arL*b?|`0bEPqdM5zyhZKDQ z-92D#C1@eD1+n-Ps=_Cb6kkLEcppk(Oi(jpjiMPH6u_3EX!aRYLf%KqmWw*@ZDnP@zr`^zT0O+fB2LouNr(XMl|F0E`g8nr=n9z)!vGFks6d>SeA&dI#?J z0RLV?y?}d*nZF`uwirHt4fTRN^|F71bPCG1@Odg*0(l^cWW%A{D6IEfq$?C5ceV_f z0-p<@e=)2rDulEFk^)jBBnhNC)&_9E7RewLK+1rA^*~>TA!#ub<_@kiAf-W~*C~+V zp)YFyvos&pUlu`Am1W< z8SEZ?(5GPgP<_hVKVXBvIM#zMT``r<;qx766`y~NR?&5!^Yh1??b5tK*M-j4A9HFy z@ivS$&zQOoJgM0O7_}gngduZzd|BT8!l;LeODwALzQXZYcqc^F{PzcaJqADL6tk9SB%=AqNAxPp+f?7D`^DS6V5@5FFU?P|6V1@2 zdIRiGYCBHj8b8NipV9fDcB&9;OM3mNjVXMbmZ@o+<836cCFB4mK{eL+Lv3Sp3HvY-8Sj1)G@Kt^C}>T7#TrP&=C1y?^ZIWB0S!T+OD( z?*B8+{~7*IeLg+jKhHIPWm7a`fA*Z`JF1@)JT~|L5nms>cVovi&pmekuXsGYkNUsz zKjP}tzH55_^=J7s@BLf86ZjhvZ?^#dQu*cg86XS%K7+~wtO?!6(6yS*soYT+nC6XX zTbt@Qfk<AMwjn8$7?mzGix@r+M`eA5dJVL4?}L)Yc>} zXfg0`2{Hj{3iJW^W=w&aBQu~D$Q-C8ve5j7tdJ#8Yh(q~23Z5OMK+pW zksY!HYLD!IIv{(XV&tIt1vw%yP$%RF)EPMebwSRW`^Xi!0ChvIK;4lWP!FL0M4reU zs2B18>Ww^s`XDb2>{gLCP(S1YRDyhg`XfKh1PVYBpi<-yG!O*<4MI}QJrs-rfrg+U zprI%js0@W@enMd=6lge-0hOaLpbQXcUqIjYbhbV^E~#2c$qzKx0ufP$h~1 z8iy2`?@>I81)6}AKoe0M&?FSE`3@zc1fVG>5ojt(0-A=BHFr@uN&%XIQh{coG@w~P zzeU+79cT{90Gf+3fzCl$nr~1Z$_AQ`a)1_~T%d($j^-bz2;~7SM)^QXPyx_VRH(Uw z%1{x|a#Rddg-U={pi<4(s1lU{twQBMtC0$54ba=D7F7VPLzO`5Q5DbzRIRy%8c_{U zKvAI0s19fgs@L2^t*8NL8)^jFj+%gWpk~eAQ738v+J#zycB3|+J*ZuC1NEW~pna$l zXg}%#Iso)5G>E!^&P6>yhfpujd8kiw9nDAmKo_6^pu=bo=t4AC^CfslhJY?Y^MH<` z`9K$=1)6JU2^t2v6fFe042=L?juvVDhE||apexa0psUalpicn3ipJ1VpsUd`pli@_ zpli_z%@=4LS_$+?vrXtq1xn zdJ5r5x9J+=+2Kpts4D>qsE6}gd70tWo2Kof( z-_fT)Z=%nD-a?;i&Z67s3!q=4t3dCdzXAORx~6#teS^LP`YpN+^e*}e=y&Lb<_!8C z{T=8J=qAt~(Ji1q0eu_YL$`rWps#`cjP3yaC;ErxG`f$z0s0I27U-|&F3{i5cbd1* z1N1%6hv)~OljujFYV?!l6u7JJ0o9-hpa?PAq%#UgPycM-6SyL-NJu>@Q~^vqp*Pw; zjL6j0bUyv$kGZx^hV?@%c-e(W1R6vaG{+3k7&Adr%mNKz2%5ndG=eE;0&~y+mVo@$ z&<|TcdVAym=^#F z0?I}Mx+(xwm4K%4fTD?jp2>ikseqR0fRdSjj@f{UxqyawfPw{peno(KC4hEifO0CB z3tgf|^oap6C04|ah=~JnB+kT%xDYquLEMQa@ghFNoA?qxA|V09pGZj%2_zvTn1m7; zZU!`~1Z1qkt$-cpct> z$MKK&A=VH}VhuA>NKTM<$$R8)WP-sA!{{=z7$;^0vx-^A>|n;3*O>R1i_AyN71o9I zW8>HiwvugQ2iPU-MfMZ+EB2oPESN1Yw!?N&c8l$PvYW8`%|6XxhJ&etor9x;tAoTr z>Ja82cThTXJ1lV6<*?V`fLI_l7MqD3#javsahW4=6gtjwG;*|Zv~%=wOmtK^*0`Mi zp4@-?A+ zWS6mjVLxSWu=fQ-U}%TzBJGClw%gsa`x(ZH9E=^z9UL57V5|WSvPWZm4#xVzzl^nb zYOIEjjkOxaieao6#ySaO#jH12KnS!aqPU=W6U06aQZytvq%cUKkb)sm?`i;)!Q9W> z*SH7f=_qL4L9T*}M*G#5)w|Va)Q8m1sduWks5hz?L&;IiB08ID0bEy4{x*3ZJkv)Z zy$ES1q-PQ04nsNw*U;*%hFcytKf9%Wv*niFO}nr15c(?ZtJJTOzl!<0-&eA~yL~13 z3Sa*Pq3ht^z20-Z{(9~8;xAWU&%EyZ<-%)wzwG(4`^%Ou8^0|3Qt_qNm+oJjF&@*q z2yD9^Z+wJhH=#Q;!FU11DR(0b-egSUmeYxj89d5-92JVdm5R^)lwc)&gj4AocvxEu z+C=y|v<_iS;t2_AC1)UAhIB_;=66c2{(k-Y6}bRqA^mrMWY1JNz+KFN#0fy=MSvE7 zV`u@vfMaGdj z5ydUCjyy>=kf+H;@(f`Ji`J1Dpm&}}`x$-o0yC2_U}jN-VaynF#sVE=EEy|wh_PmD z&^Tj@USjOfVaA?uKrb_5ut<(Fj({M}j0@w+xH0aG2YQq7V!Y8Q#uF@z(_mSg0gK`+ zdYAD5JK{a2m64(km_T%q31Who5GE8*>=OEr31ixraP$!)M;|j0OeDI@M1iGn1%1Lq zGcxok6T>K&SVqajG4V_S*b1LBiA)mc`rCjCcbH_*?%$wqnH13J-+?awfk{O_GHFaY z`iaRv_n1tkoykIKCL3`~4wK8wVe&wbV3WnApwZP$6&YH32%zS16GmIl} zBw(;Bj>6Hbm~~`lvxck_>x^TVl{{WQ0VuYbS%VcgmNjCHncd7Dti*B5US=Qb!Fu9& z=6TkO+0VQ{^%U#FdgDG;0NM#O6VuGJ{7<|5PrLk2yHLdbpLY45cKM%n`TtqFJZ>^s zz>aSZcE%g<9{dqOVByF~9;pWVWCb}-t}-S}Ewh9<3%b;uUB!OR-e&I!gaRvpuV6^1 zCv+Fq3U>)F3hxLxky2D5suzuk4v0>Ou8Dru3Dl|7*`xERuDh;Ww^nyZ_gUSOx>t1X zf{WBZ&p|IxPobBsw@dH(47(XcGd9jRsc)bkpr5HfU;kPCefroj;7Bzw++=vlDAZ`!XqC~k##YAe z#+Ak+#)pmXn+Q$3P2x=|O_rE!G`V7O!{ldEp{a#wrRfUO1E!pruh|lFVqRjt!u+a* zjYYggwne+eDvMnfmn`)xGc8Y9UbC{Ysr2+RZ5(V8Z8~k1 z*&MSuYjfG=nk}+5v-P$Ov#qynw;i$FXnWoEzMYYsvz@|jh23#`WS?oj%l-uH!5SS7 zI9wLb76*u1#plF7I|exRJDza7>15_q>GZ7A_s$CE`OcSISeJO06)tC7?z!r@%3T{> zH@e<+BW|v4d2YMhPPpB4bkQA7dn$(}vpInlB zF!@G`FvTGyETuYSC}m^HN2vy>!Ks<4wW+&OPo$npy^|(PGfN9iOHW&pb~x=`x1Wb!WRMK23`s_HMsLQ!jLA%^%#zHVnXhE&Wo2h=%-WyzdA41)Ji9mhc=p8{ zha6Q-YtF8mGdUmSaJde->ABZ(Z_lxtQ#)sW9-Eh#SDQDQw>|Gf-tBzH{P_GO`DY9C z3&INK7o0D+T4+)jUszkXtMFKnUQuFENzullE5$~|mBrhOua;Pps}jJ8(o`PTTokF+g>|VyR3G7?e^LOwa04D)LyE+T6?GV=Q>oUUuRM0TqmiM*Cp2F z)~V{6>-y_P>(>QuD@9SdHwDB zd-Ys{UV~YKV}ox)SVMe6c0*Z1V?%GlNW)meriMKYhZ{~doNu_&aHHY-h6jzpMx#c% zM$g9JMnz+KV^L#mV`t<1#ubel8h17xY&_n0wh1-qH(4|}H%Xf0O^HppO{%7iO}m=L zn@%*HYr5QYz3Fb#ugz?;Z*y34d~N$XhahSsgEds+{+zS4TK^=#|K)+?eT5p>2&Dy?hNfzc4l^}I-5KDJ4ZX$bZ+e2-g%(&Sm&9}OPyCc z?{xm$g}QXQW_MY1Id@6ALc5e*nO!Aa^^CeuKUyOJKaC`pdOtblOBg2 z@1D>eWlv^LNl$%Gch7Los-BHKyL!fZPW4>sx!QB5=jUG3tKVzU>)b2pjqc6tE$OZA z?d~1!UDdm>cUSLt?}^@Xy_b8h_ulROwNIzdqR+Wc(kJgr?91&_^)>hP_l@?g>3gA%!} zwf|24&jV;cf52kEc|bBCA4nX?9Z(JI8F*#j^uWb|&j)S~+#BEq^#;ub9S3~}!v^CA zvj@ut8wYy_M+V0RHw<2wOXk|l4W3&xcX;lax!dO+n0svQnYowdUY&bqNN31(D08TP zXn1JV&<6N-983&?YM7r%v=ELTf`1!f#>r4BpadH`tvrZ*fC&1yc|?CXCA7R8if$B) zgQwdb$~!Sm#!f+EK1ms=F(gwbJ^?j$A}@TEx;OP}EC`#xhUt6Lucz-zzw~|B-yWv! z?fWY1E4+!T#hbQb**3hLQ_-}Idv_~WOJG9}l|!`6hjkTh22VJ`fxg7emkA1tBq2dk zQ#;1g2|jUh1n0Ji9WjS{69XbLbqazqQuss~5X?xeWF-pKv#s)=$`yIr=PWG?xMv%j z?jMvYwXl$t$5(7>4hyYaTevNAeP`T+S6se#XCEH&j1LPi7iToCEX`e67p?dCRsE#C z9W_za@ve43$=;qynbguLqhUp9!OEHl-M3HchPCYNNvoAxwnChsN^@7RT<{J=1iYZn z`QVL5#?WDDfE}^L&_5?fUozFZND@JZ#18=f7i9!)*u2Ukqbn(;E8W8*y)!wvE7N1Y zp;Mr!hSh?7&0qajD;k$2~@8zWn?C6erx z$h3%-EQutmCBiP$)5^*-)Go~~)XU1sE7WfCgNRo8s5K%zvN_w&FS|K%`ce9H;a?Nk z&P3oN24b#v1%`q%5Z?#~Yn2~&h<3f`@agKz!Z;Gc@P#6Cv6}&=lOYHQ4#6S=SUfwz zn3$P|M8XPdXC==)v0CmF>Sh*FJ(i!dq)ciPnB-lBEo~h>mMgAsx3e=(*0zq%Rp1*D zJ%QY5dk;TLk$psAYN%gLw6E~T&YnYn}ULM_0oa5!4ossF8zr0);SlFuwEKHAc zNaT*lmZUDcR-~?w%OYAgF7$NAeP;IZAYUU%cBB)tKcFs5ZtCXgZ*LjkW?}6Y0sNTF zOyU{5tY{?#&#>C|nqUz(06sv zuZ>?~cc>V9T-)fm%(8shOIIF@(H#ax)+CMT26;As8GN8Gx)Hz)omz3=XK6iL00X)IEmAAKQ zQ>%6^_dzE#f};?%LSiRFL6D1-Xzp>FNvJ)$cJKpwHXK9r53$kEM`wgQa1j1oZ~z#m z`bno1i`nQ&AN;vI!_U|@Br`CoG{Sx&X8y6>mi;{u-s#QJ-0Ni5ULsJ`%}I6%m=o#b zo=_F8dVYSAtp2HD<>JxBvD_}cy$qNWQ)mzHA4>yZ%z>^vc>POjS{Qx|=7Om>dttm} zO;kywT}!(pTkbd!H}{2_`U7*7Hlewpv87?w$%|gDFMn|~eZn!aAh=`1HNGlx4U-@a z%MPgTvJFb{%UjnZ531i>>s^$SWNDsISQ}isy+sySx2Z;wDYNhIj4TSb;nyt?=A;1D zRFCIo&_t9A-GHmah9c&U)aLXY#@$vzCpQH5^@%R=V|KXL<7nM>n=csFSR` z<&G)&iwk_b(wk!6*DwY3KqCW#{o zg3DSIz0Xxt?CMo~>==Yi5X1Q$j*IYku)(@7a3YDs38Lr;x=mdxH>mIWA4 zs(HW~0l)KW;Q|aFqE%VbeWwbY^#aMGkEWFt?K+Mfd8su}7_xRw)0PHlRR5ul{+IjY zHj3tLpFUxNS+~Rp$!yn{JV{7in7xfG|Lv%@jRj!|nM+?%HN3VWvwY_#{TU7Ck8Es> zd=GzN;Th&wp1-8XSCZ2fC2!4zulgZ~d5!?qZDF(ET*2&z2+k(V);wgg;B#NV)MfCw z8+>vbqBTNf0E~s3BS6P*bw^CBJy23xOdQGvS zv%175pf81c&qm^G0>Ez*lAKKWnV@1WT==nI4dAE>`eq=2R;P>-=p^l#IV02xSV%A^ zT98FdL_$#IROUdlGfs}qt}q~hG=McT!a_6tb7NXkC_K-Yd&idcr4$d^N|z=lw;X_cZt6 zg(@9kWYdNd*N5N29%suZg)@`0OeGQ@BOg$X)y7&FpepX!~Jl$sjV^<4GH$4_P& z+PRsjKZs28njO)&I%gbPz0=rth5Ky$HSVi->Sh>Q8!k5&o6VT_9nSw^*{_#h7>HT; z9e0@fXxS4+p2`6Hoz4uZTL_$MK>`KHx(JXI_<#{p2!)(^TYaII`;EB%ow#wos-MMs zKE^rRi-Pe7nZ%xyz`G2b5JT*9@U98$58M%w8j5)YeS`uSKG13p7qHQR8@%v(Jkfh% zB(Aw0l#^ZDqSt#NIBywQ9_`RM%w7Gpck$ej`+{*l)l;?A+r15A3L0e%+nR#OT2AH= zo*mFUbiApu8P*W^vKFxCTi`dUwdn%+QX^XnHRevf@PPp}$EH@5{Z=n??1LpsK6@rR z_u0QKA33)&W5%S8TViW^-oiXD*Ub3^*&WFqy7=>^qoc_cFLPUaw`h)3rYt_z64#pM z9y9kySAWal1@W%Q&GB^3=(s8-DXlvqDsGPm|@OJF{S2~lwd%%x})|m=*@-~$rwW|2Ue68M3UY|^4 zUQ(xmA9w{9eO@qrfuqI)oDGL}{NWwCo8zr8`WEwr`V}>^MXe&qq(S{OEu8^n8)3eF zg!%FV8;qYXOuK2MRXP7YV-yY8AI-BD9vxhMYgcjhrfW|uKD#V^=C8V*NlnRxi}Jk! zD^?c7ltz2ZqJydMXs|4!sE)}BKg*bVAAFJewTck-`O z@3OAY4>&pELRU?S*OI3uTh-@bt)`v}8{rb{Ze2o$YYbY|7;=0S@50aFgh@*-`zV)V z3B!80i!FJOiLaB9hg;bS^#ab}Q5^zvxP-M9J7L;E3^Qh~R`<~vd&ufO`~_Z~U}pk< zf@}!vV69Ez92#h4!fUg~)*Bl=vTLVg#3)E$m%sJe(k0h+6c%o~wq)s-+w#?ZMT>H> zMvDFYOBQAAJ4z1k;eLCyvhr0d+LOEo>l~}BJjVUHhYY?xKPG1W>w~F-ClKDctzEQ$05+8vuT>MD1@A0NNLcpH0`3x)BsD1Q?UfBl+$CbG{<~m2 zZfJjXV2?_ zJ0B6hSUbYS%dT(B=Z@{mT3GBKP&|_LJdE!z+=qp4um9)Fe;eX`?q3GT_k+sbH5lV; zI0J~Z(l-Tu*c9-S$2~es@&b2TP0+kEOXHuIj}y3`)Tc44tW`QXDC!b9HSt&fMKCUF z+ts}8ognp&nPk#Ax*#aDIK~Nh5>869D`2eDK?3&Dluv|LrN4Vb%%&V7k6Yr*6IO8p z<@MtW5>u9)?3#OKY2u_TS5Nvr6qhr#p6ZG4At@3k$Nf z&um;#Sg^iXo-nwhIH)kj*)BNQE34Vpxu9)je#w({A+oLm-Emb>woNbvRQ_NN#$gV4 z3xX~)V8%EX_K=HY7XiN6us7*>APlFK@3L<|IY3MNNK8TIr>$B;_Ki8~&vx{@yDodu zBegj;wk5>_1T|pZiTP1c^H0oUE=~rdcO*MGC3mDV7qx9uy=4n^@;0iNTB+nII811! z{`sHk`(UO-uw4%_;W=#|%v#|sxTdmgEX7XLsFfOHsX*`gLvH*Y_bqp8f*XH$1DjpO z^=#sUOxEq;XCO_-S%7SKlEP3_Sss z3FTKod60LCDM8dkGsPo}-orEGC$$M{fByU~Hu}PLTK6b-g4hVh_;mnapjv>~?B31Q zj1U<}kkKmux2 zZk%jlo_Z5b>%lXB_Culz6~Hro(R9yq_pmAZAqK@n<+}(l{UO+!UT{JdiNWikRqoUj z4~NafltDRdK^mHvoAL&G5SU`TXNl39DX<7n$nncsRuQ6@|7y=OWh$?Df9r{;?%lP; zo7y8i)N0S9aPOImmM$~%jxr9kv-B1l`{(z@f$i;=kXvK!7Hl8gR~qV9y0VmWSeI{j z$jsT#;zC)TIMf3a4ejF)@N)o+!4$0TDW8F>n}}+$sU4hFI)x%btqB>#281+jt*crm z)xSC+U0K?&wJCVQJhU`^PP46TOI~b=%z_y8pI?`qpy&}I^+)pPtaa}XBn+!$DN&pv zDm|op7%W)~--@`){F9#>#1C5f|1x}t%sWlyL~bz&eOrs>y*5`apL=Xx<&Lfx<`%IJ zN%v1yg_@d%mLIhCSGuRKs0+_qf40r3?d(%|^5zXiUg=?u5tZ|!ofPvb!3zLmral2? zddyl+rVE-Cq~V4OOiP;+g8mpk`%`Ad<^(Tt_V%FR-RLkRJ$KE z0|y_q{B1GyI()QycTnXM1x|4eLK8o$+@h;jnI%VRi&mBS>*<_i*@8K>Mx;m3%j+1xC@OEj#?;zq4&7LqF;WsRQBjuKBA%FF&cq~n zS8Q%oCz9jsrSbB~hwwHiI$+c_g1>@%&ziE78a<>Y| z0(f`Y{)AD$9foi0AmM;k9;f;ZPyJ?j~~yCZkB z*nh%Wn&6YuV2a@)(I>seW`Ygth>Fk1Pc8DP*x00wB`4)+zD9+Kf*As}A9-DtE-{S` znf#Fjc%*&c*A4nWZQy@zoiRhv5>|U09QE`oGhnpKZdK6`KAZ< zZ@4N6Y1&d#x+-wux*mW`-PWd%d$#g2MP|L7U0sf%RBl6zXp?f8S|j+pH7Yi9?fY|+ zhE*X78RsC2lU0mB!!TxOmrS?&m~1*3{)seZgtcz3EgO>>d^#arR#>yGHEhC0UaH8b zb8x6nRg^{85ZAdE)@CXqnjW~~$>6Y@Cjr|QR>)#Q@!jBPXqGZO&p+e{v}*`AJf!fF zHpNNgWeb0+f>!H^J3^0vY||ipri5jca-@3x|J9Nx>ct0H8|5N+$QN&DZ zAo7q&zAy|ZPRd_hD+_Dctg6}39zJ0qN$~Sk`k0wW^J2=Lstbj)hiW!ML|KO^ONkueXY%1{H?7$9c>Lvg3}w568rNdQMC(W1C*Y| z+A->A?vhSHj8>v4U~2t;A*NGPYY4b%h+lm3&DnMymX>}qZPS9~bt#^Q4+~|9to$C0^+y zN%eLNaW`X(@}6vz8#+oIz5J{L;ym-$)P)*328expY=aVEvrEttZasd6P1EXDV=1r! zuOfqZ&A9(V3r>SYi7`~U#w3yr4>>_dXi7?GNJ;^dCHf`2F+TEJNo<}XR7n5W7 z;n&%g4n`u;j?Fr;1AD6KceaK7Qyh}$<`FNo)5ReqZ#<^W`}}#KcSM~1YwzBxd#)`! ztZ{u&NUFrtPM$Bj_b#vs%wehKmLP-u3BIidb{LNwV7j~Ufr{V|w~#6D4KW8chNvQV z7p9$v(|&(8BIQ_J?W-vZpI9mh43n;TVl4SkW#voBYsc10L#2Kz$0qxu+cwOZ^Hf`O zblX#N=4@z-Zj#3; zN_O-qm3=#4yAlY0)Aa?ee2TX7{M zOZdo=2_!@6;EgMu=03(gPp{ZW&coQ3fef|qG6W!MY$&y)lC3d-43q-jte6bKs>GQDY^Ryb7FrUNB^JgDJ9_iykn)j`xcp>xQt zD#}vCC5|5NRE+f1rg+{9%&iZMs#G}HCl8gh9UP1<$cj-WjK1F0dtx+x!ZEfgMp+eY zZ=Eo=qGNm@O8tRXhEr&ub;6L!Gu)LJV0V?7hk!gq-3R6z_RK&D=LFRTejEx&xvxek;FKAMFeYPEW7nmz;o(YUcz7&62b5kZ1$hBV zWdJ1qsT`y>AN+DRU|!uIN>lthX7Ca?<<)uIZ50eC!8@>7m^YTfiik!81MFB>4Y>DZ z*)qTUp|q@pMgIOp3$xPZ<@-HbQXon4x3u(6k`xxHXO(QfGMKetq&d~oGqrhSL)PGx z?InZKl98=PD=Uv~87Yy%^%i=)6|PBcMsK=XXzl8}zPzzonH$`xa$I6dLi$5X6)sto zi$`zmQ+a20tlUvhuwzAgrdRpio1=|y?O9qL7+Ah^&s&Xfy-XDts9Lt?EuN2_ATKlY zoQN|;9XuU#0l1pl$qT^^sdd?#8p4SX7ud_eKAs-)F(axOLi@@@d1;h*-;1@f@R+0* zy|X(L6ium~`Uc!~_gw25?J1T&VvRB!YS@PM=dRW@2$K zW?z8QQq${Z4d3C-hVR?*Cq5ouhbf_Wv`zvlr_-?zst(P}O`Uv6Agr{jlN+xPKoY!g z{+}(y;D1^;eBx`xY>@joowCGHTD z4N>bDd7-^+dwi&?!hH5jcTd+D!3oMGvuwR=odfJ=!rUws7%^p2dY8^jnc9PVA~4!Y zWn%$zh^&P5HKz9Z^j={KDahkMK^Jv_XQC=NxGcfLBcUufSe59x(!|ln$_kt>#$s

9AxHZ~IbT3h=$85=u+hltSGXC~N5kVn{GK7RUy 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 }9naMW3e6&}Zp3`W)R(pQk(M3v{RU3Vo5jL|>-6 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 H=d=F@iuu`M diff --git a/OsmAnd/assets/fonts/Roboto-Regular.ttf b/OsmAnd/assets/fonts/Roboto-Regular.ttf deleted file mode 100644 index 7d9a6c4c32d7e920b549caf531e390733496b6e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158604 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

v%Q*Qgy;tdJj4ZONjTx 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

sDMz7$^SDZV4x`K*fov0l~+M89O^^Om^v{t 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 diff --git a/OsmAnd/build.gradle b/OsmAnd/build.gradle index 6724c10597..ca9018b2ae 100644 --- a/OsmAnd/build.gradle +++ b/OsmAnd/build.gradle @@ -19,7 +19,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 21 - buildToolsVersion "23.0.0" + buildToolsVersion "23.0.1" signingConfigs { development { @@ -190,6 +190,14 @@ task collectVoiceAssets(type: Sync) { include "**/*.p" } + +task collectFonts(type: Copy) { + from "../../resources/fonts" + from "../../resources/rendering_styles/fonts/OpenSans" + into "assets/fonts" + include "*.ttf" +} + task collectHelpContentsAssets(type: Sync) { from "../../help/help" into "assets/help" @@ -237,6 +245,7 @@ task copyStyleIcons(type: Copy) { task collectExternalResources << {} collectExternalResources.dependsOn collectVoiceAssets, + collectFonts, collectHelpContentsAssets, collectRoutingResources, collectRenderingStylesResources, diff --git a/OsmAnd/build.xml b/OsmAnd/build.xml index cf09ba7992..42688a7f7b 100644 --- a/OsmAnd/build.xml +++ b/OsmAnd/build.xml @@ -81,6 +81,14 @@ + + + + + + + + diff --git a/OsmAnd/src/net/osmand/plus/AppInitializer.java b/OsmAnd/src/net/osmand/plus/AppInitializer.java index bafc5f6686..f611803a88 100644 --- a/OsmAnd/src/net/osmand/plus/AppInitializer.java +++ b/OsmAnd/src/net/osmand/plus/AppInitializer.java @@ -442,11 +442,16 @@ public class AppInitializer implements IProgress { osmandSettings.NATIVE_RENDERING_FAILED.set(true); startTask(app.getString(R.string.init_native_library), -1); RenderingRulesStorage storage = app.getRendererRegistry().getCurrentSelectedRenderer(); - boolean initialized = NativeOsmandLibrary.getLibrary(storage, app) != null; + NativeOsmandLibrary lib = NativeOsmandLibrary.getLibrary(storage, app); + boolean initialized = lib != null; osmandSettings.NATIVE_RENDERING_FAILED.set(false); if (!initialized) { LOG.info("Native library could not be loaded!"); + } else { + File ls = app.getAppPath("fonts"); + lib.loadFontData(ls); } + } app.getResourceManager().initMapBoundariesCacheNative(); } diff --git a/eclipse-compile/appcompat/build.gradle b/eclipse-compile/appcompat/build.gradle index 77d0c8369f..34e8ec28cf 100644 --- a/eclipse-compile/appcompat/build.gradle +++ b/eclipse-compile/appcompat/build.gradle @@ -6,7 +6,7 @@ dependencies { android { compileSdkVersion 21 - buildToolsVersion "21.1.2" + buildToolsVersion "23.0.1" defaultConfig { minSdkVersion 9 diff --git a/eclipse-compile/cardview/build.gradle b/eclipse-compile/cardview/build.gradle index 391b3c602c..d78f964e28 100755 --- a/eclipse-compile/cardview/build.gradle +++ b/eclipse-compile/cardview/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' android { compileSdkVersion 21 - buildToolsVersion "21.1.2" + buildToolsVersion "23.0.1" defaultConfig { minSdkVersion 7 diff --git a/eclipse-compile/design/build.gradle b/eclipse-compile/design/build.gradle index b17876349c..4768adbd15 100644 --- a/eclipse-compile/design/build.gradle +++ b/eclipse-compile/design/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' android { compileSdkVersion 21 - buildToolsVersion "21.1.2" + buildToolsVersion "23.0.1" defaultConfig { minSdkVersion 9 diff --git a/plugins/OsmAnd-AddressPlugin/gen/net/osmand/addressPlugin/BuildConfig.java b/plugins/OsmAnd-AddressPlugin/gen/net/osmand/addressPlugin/BuildConfig.java deleted file mode 100644 index dad3d40209..0000000000 --- a/plugins/OsmAnd-AddressPlugin/gen/net/osmand/addressPlugin/BuildConfig.java +++ /dev/null @@ -1,8 +0,0 @@ -/*___Generated_by_IDEA___*/ - -package net.osmand.addressPlugin; - -/* This stub is only used by the IDE. It is NOT the BuildConfig class actually packed into the APK */ -public final class BuildConfig { - public final static boolean DEBUG = Boolean.parseBoolean(null); -} \ No newline at end of file diff --git a/plugins/OsmAnd-AddressPlugin/gen/net/osmand/addressPlugin/Manifest.java b/plugins/OsmAnd-AddressPlugin/gen/net/osmand/addressPlugin/Manifest.java deleted file mode 100644 index cd02208eb7..0000000000 --- a/plugins/OsmAnd-AddressPlugin/gen/net/osmand/addressPlugin/Manifest.java +++ /dev/null @@ -1,7 +0,0 @@ -/*___Generated_by_IDEA___*/ - -package net.osmand.addressPlugin; - -/* This stub is only used by the IDE. It is NOT the Manifest class actually packed into the APK */ -public final class Manifest { -} \ No newline at end of file diff --git a/plugins/OsmAnd-AddressPlugin/gen/net/osmand/addressPlugin/R.java b/plugins/OsmAnd-AddressPlugin/gen/net/osmand/addressPlugin/R.java deleted file mode 100644 index 8403ec7744..0000000000 --- a/plugins/OsmAnd-AddressPlugin/gen/net/osmand/addressPlugin/R.java +++ /dev/null @@ -1,7 +0,0 @@ -/*___Generated_by_IDEA___*/ - -package net.osmand.addressPlugin; - -/* This stub is only used by the IDE. It is NOT the R class actually packed into the APK */ -public final class R { -} \ No newline at end of file diff --git a/plugins/Osmand-Nautical/build.gradle b/plugins/Osmand-Nautical/build.gradle index 9d9cc05dd9..17aa1d99f2 100644 --- a/plugins/Osmand-Nautical/build.gradle +++ b/plugins/Osmand-Nautical/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 21 - buildToolsVersion "21.1.2" + buildToolsVersion "23.0.1" signingConfigs { development { diff --git a/plugins/Osmand-ParkingPlugin/build.gradle b/plugins/Osmand-ParkingPlugin/build.gradle index 9d9cc05dd9..17aa1d99f2 100644 --- a/plugins/Osmand-ParkingPlugin/build.gradle +++ b/plugins/Osmand-ParkingPlugin/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 21 - buildToolsVersion "21.1.2" + buildToolsVersion "23.0.1" signingConfigs { development { diff --git a/plugins/Osmand-SRTMPlugin/build.gradle b/plugins/Osmand-SRTMPlugin/build.gradle index 9d9cc05dd9..17aa1d99f2 100644 --- a/plugins/Osmand-SRTMPlugin/build.gradle +++ b/plugins/Osmand-SRTMPlugin/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 21 - buildToolsVersion "21.1.2" + buildToolsVersion "23.0.1" signingConfigs { development { diff --git a/plugins/Osmand-Sherpafy/.classpath b/plugins/Osmand-Sherpafy/.classpath deleted file mode 100644 index 7bc01d9a9c..0000000000 --- a/plugins/Osmand-Sherpafy/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/plugins/Osmand-Sherpafy/.gitignore b/plugins/Osmand-Sherpafy/.gitignore deleted file mode 100644 index 36986d81cf..0000000000 --- a/plugins/Osmand-Sherpafy/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -bin -gen -raw -obj diff --git a/plugins/Osmand-Sherpafy/.project b/plugins/Osmand-Sherpafy/.project deleted file mode 100644 index 728045eb8b..0000000000 --- a/plugins/Osmand-Sherpafy/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - Osmand-Sherpafy - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/plugins/Osmand-Sherpafy/AndroidManifest.xml b/plugins/Osmand-Sherpafy/AndroidManifest.xml deleted file mode 100644 index 144a69c82d..0000000000 --- a/plugins/Osmand-Sherpafy/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins/Osmand-Sherpafy/build.gradle b/plugins/Osmand-Sherpafy/build.gradle deleted file mode 100644 index 9d9cc05dd9..0000000000 --- a/plugins/Osmand-Sherpafy/build.gradle +++ /dev/null @@ -1,67 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 21 - buildToolsVersion "21.1.2" - - signingConfigs { - development { - storeFile file("../../keystores/debug.keystore") - storePassword "android" - keyAlias "androiddebugkey" - keyPassword "android" - } - - publishing { - storeFile file("../../osmand_key") - storePassword System.getenv("OSMAND_APK_PASSWORD") - keyAlias "androiddebugkey" - keyPassword System.getenv("OSMAND_APK_PASSWORD") - } - } - - defaultConfig { - minSdkVersion 9 - targetSdkVersion 21 - } - - lintOptions { - abortOnError false - } - - sourceSets { - main { - manifest.srcFile "AndroidManifest.xml" - jni.srcDirs = [] - jniLibs.srcDirs = [] - aidl.srcDirs = ["src"] - java.srcDirs = ["src"] - resources.srcDirs = ["src"] - renderscript.srcDirs = ["src"] - res.srcDirs = ["res"] - assets.srcDirs = ["assets"] - } - } - - buildTypes { - debug { - signingConfig signingConfigs.development - } - release { - signingConfig signingConfigs.publishing - } - } -} - -repositories { - ivy { - name = "OsmAndBinariesIvy" - url = "http://builder.osmand.net" - layout "pattern", { - artifact "ivy/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" - } - } -} - -dependencies { -} diff --git a/plugins/Osmand-Sherpafy/proguard-project.txt b/plugins/Osmand-Sherpafy/proguard-project.txt deleted file mode 100644 index f2fe1559a2..0000000000 --- a/plugins/Osmand-Sherpafy/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/plugins/Osmand-Sherpafy/project.properties b/plugins/Osmand-Sherpafy/project.properties deleted file mode 100644 index 4ab125693c..0000000000 --- a/plugins/Osmand-Sherpafy/project.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-19 diff --git a/plugins/Osmand-Sherpafy/res/drawable-hdpi/ic_launcher.png b/plugins/Osmand-Sherpafy/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index 96a442e5b8e9394ccf50bab9988cb2316026245d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9397 zcmV;mBud+fP)L`9r|n3#ts(U@pVoQ)(ZPc(6i z8k}N`MvWQ78F(rhG(?6FnFXYo>28{yZ}%O}TvdDT_5P?j=iW=V`8=UNc_}`JbG!ST zs@lK(TWkH+P**sB$A`cEY%Y53cQ}1&6`x-M$Cz&{o9bLU^M-%^mY?+vedlvt$RT-^ zu|w7}IaWaljBq#|I%Mpo!Wc2bbZF3KF9|D%wZe{YFM=hJAv$>j>nhx`=Wis#KG!cJA5x!4)f) zezMz1?Vn$GnZNjbFXH(pK83nn!^3=+^*kTTs5rV9Dq^XS(IKO!mKt5!dSmb3IVCxZ z8TTk5IE)F1V29$G7v#j9d-hy&_pdg8?kT4)zqr>?`}I%W>(?GO%*C&}?Fp|bI*~2&KZ$%^B6R&1~2kA{`CWy+>F-x=z-f{_&vyu_3yp{jtw(*syi% zu3t2|4{c~LJXRt2m>rMg2V_kLltCZ<`m>qcI?BPP?6hf``|e!rZEFszeYQ3f-*nAS zZ+h1$mFwy+7156lkB(k6)!1fUbJCxgIBK38$jj5cC$r&YXN)nr#PY=tJaLc?C_o?j+8H3Q>891JJ9&$l-r+-SG#q)*;r52% z@nlKflb65o%s*Jt)!pw1k{vIoQIvoJ0Y&Msiw0X!qJ)_47G*?aJ6bJFLh_4b$5&1k5wN>du*>6#i7R9T8; z7>EHOV=ue7mo77SJPwER4(A+s?n0JjYK)b}Om6n>ke?0JR=jTI+RFBg_iwb7k%n*2 zR_M0DJ9x+0zxba4(B1y^JQ_Nj6dlP5PGXvSq8fF#mxrFYj3d9(V#jJwt+IqU9+8+D z6C6Us1OI$d8OF!3+Hm1 zW5in zXV^%U35HooOpSmeqlG6e0kUMYNonKp1vr|My9}4-WO+uOxe_c-o&}%voNYHkqtle% z5yQ_^oozSUUNu30EQSAl!Q%(%3G1NXENSMjCL*Vx-Td2~rk(}d z8pT!HZe>1r5EGuz`pgsg@^yQEi=BIa#meLq0!?{TZ}q#}=7UC9_l=w|wv+pP!g4#! zRys6EN$Jv}#U47$k&)pDzvks}LGfPku6P9p!56Py)~1)W(11n7n}`Wx!=;_JTiu#d zpCqx=hEk@t4sp?!j{W}wP@V-=Pd=T^>6IKBy;#mLA7hCe{V7B3@I7Ipa}L`MbF|YQ z)$BNWsiEnoNHrtJli|n8cOnn4NyF=8MbVxgof0>Uv%wM_j94a;8(LMjlL~E(99gJ*2%JtNtAkD@j;^ za~Y~&j6uY{=Rv5S4joH*RW_m9N{ZSN0HhAwFyJNok zS9kx$>wMf%tUi&Eb`6u0lWJ|k?A-42(lp2UmS(PrAc(24wexRiHUieMwf$o%m6$xs zp#-SdBUu2D5`v;(9-sm&kN2M74c&AvKe_v@tQ|dzJ2qSgQHpnUP(iQ?J%Il;Jdyp# z7}cpq6Kdm+FS~zS4Eo;fuO=DFP*UlpO|_CNt5&NUqBvQWxmg7#ARvMf=%#H@p%RZ` zjK$hMbNb+vVP3UlkfIt&ptJ<00Ic{Ka+lF+&w;OEs1O2#V8~O|R*Gq9TIgM&UqM&bZOXBwnbC? zDr))NR&g>lwVgcmnx`K1$)PTTw3m}-T11^ZkY{}jQ@lGD$XzJIcVFkYBBW=o_}TUU zt@yd{Jz;@~72x#!RG(#ira6}v-*J#<{@@^OI-Q2T^}=IKLubsa&V-%WwlF1s7fz~u zMdQTV7SnRet#^`VO0V7H(?59X{uy+S`(sorO@2-+qioUdo9+6r4#|jb=?t50oh42R z{}I>Krut|YKkOc|O|M>y#(3YA;I(i+MiHSfwbJA$jIUr$Y2i|u)*>@2eUYk`j4C5r z>61dKu!AqM_E7#DoDzbd-bfT%AYXUUB{SS|{b{`5^?wz1{PVQgTlvyqOX8(#GTz(U zNPhnj>$lC`xaD56`TjW&uW8p~qikP*F8kHFM0frzdk%UNGjb1O$%uLK`0-)2UsZ3L z#+j+CI_8k4VslL%$aVR@joX>M-@odbX!os$xY$HDIOCokY?{Q0v2kQErf|ZlN>D9w zC+2}E&?rDdi#%))$p%P4C_xGXu=@U~_<|V4L|{>TP$XBp$5pCPXLzK3!;gP>7=QNi zkNOur`>xY=@VSpB#LsN9JKpOz({ANcdv>?K+D_*_HZ<;9>kplj^Ph5!e&&a#?(3vK z_Q@}D_M5kGcx^AuaI~qKYUnb1Mj-n;MURXa)+x7~e2gbMW|gw?5Rg zTOMlo>6zIJ$VNVgn(@kTSL0eP)nR35IHpoHM2W#h6cNmTm@-9`dFJ$;k(S`7Lg@RY zp!hNmb9un!O4Wt05ANDGirv(B14gW| zwjP}C9bK{J`qZ_S2o)b`RonR-b8~y8)$H0`+gg6>#^wu8eCp9xA9B>>8(KRizI?+^ zAJ#i>*({qM-c4gBB~5dzg(wj!HA`hkh!aDl5>u&J;>2K#Ax2)2wt|L!9X;(=*jy!`r4_FhCBoRxNjXNv(~jGQ|%<}%K6RimaBJcP0v}oCgRN3B;oiM)opj? zXm;;tv3q-yy}NqMOr^~3&1lW$w3}UK_IT2sCrkYx5$&6e2A%g;QZUX~A&L!2rFd0p z5%men@^zN_Xw2|v%*c2|wQfkN4r6u&k;LxYY+w3{KY#cie)!iz>(yAgt=&-+Sy2V& z9BJxI+VMKQ%dvY~x>gmEijj3ss_*NAT(8d1@DQ6e&#Ln&6Qk>wHrh>;V2nvomC`8& z(w?`?*_^3u-TJrMzv2~7dH(XLJvUOXk4U8oW6Ol)YsawhIB{GdvIzu1hzMTrE)cvB z%2GxMpaF89<9uF(?cfN(BNR?wwWvCZ6e62+G_{$+;`yjgLj{(^z*zzwd;K3RElb*%=??P zm+lLY0@Y}^kVdMYX5M)YJ~8h=i(S{q#NfU0xPTao4WPDQL=Y_;vg=p%iay1_`<0Ga zMG&<(pOU+bI2u9_g8IJBTqGX*3@G$Zc`pj0f@)vd2?Aj`ms>DHg>;w~p}HXV(*VJX zphd;fht9qL3E)D8h$$A;SGl22Ygv>`iU=A)z=1ZYN$|2`*$`R)?KD>$tw_e9h_x~eX_udS~Q%yz?48i*aIa+_wx|j{B zsG7mwZ)6M3dmvgMC3K-66;ML(9o2xU!F8+qF)>v{1;ip)6v_I)6law|rd_Dx2oV|n z(Qm_PUnTTuKFG)w%s|)lS!w~Lm$k|Al=0djocyHU;>1H=!N}0E0lSV^b2^6~^lUco zyoH+|_!li3#euHd4TJS8=CLaHG9H8g&h3Xm z#>BkpUBAmae(#)qO3)ZMG3irM=5IzA^s+)w86=tIMT{&?Awux<(k2>U#n`c&@Z?u= z%=#BoO-9Nc^?)hz*YW~~tU8rLR-MZBJsY_7fp2r~mY>q-O;L%5Fp?}V6CK=F(18U3 znxB8ZR0TT{)T64RDt!+yFgp!JXGP0|It0Hz2Em#YfRv>O>8A?J=Sz!nq<|{&mW=?~ zDQT{S6PH0|jwy37t+0Ob6izz)JdRlNEUbyk>-K?}FOT=Dj9SuS_0nTFd+A^D?Bo83 zTkicXcW=IuZoZd(Dl;&#`LI;_s?e;OH9quf?*XuV0O$Qh0j~HWKpA|PXV4&b2zs z@W5<)dtovIRZ@gvsi$^s;v05(XwF3$lJ;wzYfE`46fnT7>!qt|hWHRE>yQP)i8= zVbC|O{Ud6%kwGcch>>|pE-=?cW;TDR0lE5Nw7l66lr-zIYT3bj^ujCn$b0{ZO;gwK z#}}W(*T3~in$6ZCpbB98pftPTo;!K>U;H*7_}t4m;;4i9#^2t`pS<=jsnx198);d3 z-M6Mx{7-c0A-jhJQ`5mBy8TBnfbr2~sER5E5oz}=so34cg)GYarRWi8w#W$%G{?Z*4xDb#LX1B1 zg!4G{m~*)H_J8J^SNt`XU-fxjea`>p_$Qyn*Dn18*WdPCp8oWw^XU)%kfRQHMgfQh z1j_ua@O4G%QK;&YH3Y9(q!hkgOUCkcVH5N0Ug(EPX%H6qCfPqg))qrd#ec^47dBu- z=sRkmjGS>3K(tfRTo;zCXO-74hV;y1!vCN}v|w?AWR$YpYXs@Dr?iNLKD9s|2)0aHY!TKTYhwMI z7b#54h!H6rUU9+xnL$g6h?t?Li5guXPY1g)$bI$~rHWP%QkYJ6Y-U^0C(@*$ruN2*zn0QRBOeVpgMFbT%k!Dn1*u#%J^y)enX1K;0~ z%3Q zP(b%}P!Loj6M{v96(Qa~K!bq-V-P89U_K)0zHC_F#L==3IPh2hHG6&?rxvQ%|EljR zfGIDyu=rIrl1dyjuMfwuh?pXZmARwNZ?GbW;5BH5D#nN|WbGm+UGAh7_AcG>4&|{0 zrg?k@h8zm!0A|5Zo%X%g|2tBPKHHB6`~4h?I@bepDe6?^f8w zBnzfOf|j{kR5m6BLRr0$!RZ$PHSk*)tyjkws*DpyHIiiL*8o(Smx(OKT7@D&Y3OI^ zEUMtKa2*SLjt(eJsZsLsrgV`A+xL(~JN#JU6+L)gCe%VuSNbCzTr09w>eZ#779SKV z)m)@#TNVy|q3Tz_U`^7MY`l}`GU~OlQi|*cprX?tm@tIV+8kOGkaa=9Y<{N|RZ)ns zHlgnz2S%qwK9wXjest~Ux$YNNA{0?6Xpv{_mqYt8D`g&7Yb~>lX+HP&AK<=+Zl_kO z6a2g`^4=9W92GQ3e9Mk6?DlzlkIM`iOzwk*5L81TcuyYkI-<3^@49_+^XC7&N}SL1 zh$kIBxb`9+v}acfV?FQ zN#04eHe0*j{pz=zOj3#EHLrT3e)O;3xqpCWrl$e)PcD9jQ4P-8_zyZg^M7i|*kOuj znsvlwNUsy5+01^P_sqMOjXjxKwHn4)$87t-MWZZ*5Dbit4|D9vL+spsJ0JPd?{Ms) zFW^<@yqjZ=IvG%$ck_Cu9|b8CvoV%5P5IZWzs>i4`~`N+-p`7a6RbLHJ;nxtSB#Mb z`1I552=9DrYWFNZ{-=Mt;SVo5@3cmv`IZT@@>#~zCe-=qENxsn+uHfL`e?SbT3IQ_ zt~e)Lcirs_S5^X#?hDYmgV%8QQDe+?>*1&0e^BnaeZz(&D~3<)#QuUL8h*NlXgtr| z&a{_Z)o9FK_U5<0!E3N|yY1P2g%J9s*?!zF78+NSb%!ix)tbQ09oO&|U$~Bwk35^- zec9VN^xz{043e^xD}WEmzh8d^-~Pd8**bEfd+I?HuO~n4SksoN8LRPUy={E<@BjRMUh?X71Xaey>t^$&Eq2B7)u_r$ z|IQwpG52G!F$J5fRo1LqLB7iKz_!bI@27skX~+Eze|Y}IBuRp?hR7z|eA~7B<99#7 zrX4r2a_tCDUb_}Cg)g!OEVeJ5AEVRyb!9~f4OL68qhZZRP0l*>MdkxvxXeGWx$T>+ zI^X!wnYQDnwK9?i)j)eLXJU2Cw>~>R?72@MecvT7;h~2gATow_cbc)$Ws+xNSB{++ zo^tTp^y*(-Y-XF=$XyoBJnMN9+p!Qrep1)%ym_v7zZH{;u~L>T=4XP!f^?uC4ULUR zdl`>x+DVkHVd;|9#N*oubBFQEyRT#UK^0c7T}l)eEEFS)qvZl%f>#I;iCwAWb=kW0 z(e#lm51o?d>D|kgtTscVQCNDAXMAjxSX&{_Qf)T((wMHWWLbz6WpPXP0(3_SBWwI19Vx?$i6WUqP$4O|wjNbYzst$z{58`cBhm z&F(N-KeXFzo#aC|6BbC($As#B8X=}ggpDyQUp|Q>9cG$47#>TQn%T(eHA`5se7KnZ zF_dj_6NN0xS-oZ%Nj%PTpK=MC zw*4IMGls_v)mokI)Dph*pD<)7prEF|j6I$2=XF=Ua3z;BN^yt&H@G%7& zWnL7*e0S9svjSP>kuc;VCbZXUN3G7D8`G@!Qnjt=p=7yC?QH0tsa@RsuPMLj@wf-c z|LV)H$Auga+MTAU#>)eeuh_L`!qC=Ls|{m}Cy)|w6#aP}w6_-ya~9LF z{dQAPa-|&ME858gIK=}lVK7MLT~Oye&UM9y?0X=8Qmvb*)=X}iv%Me)Gqav+FWdGT zuk&#ak~?2Kzf}w)xZuKGx%+`1?Ecoq?*H@EjFm%C6OT577vWKoJB z$A^sIasm!5TGOFFGmHkKNTE7KW3nveUq1bt4Uj)!1_6BJ zU6=EoPrjVdk+pQX+j-GTpQS&&^43tT43kuRlvE8fGdYc!1|m)3WCuwlqB>NeQc0** zYE&wTj*QpuPLfJ)j2$(`sI@k@oR!^9d(3&Kd6r3*<)pooPNzq=)1%#NQ;nAsF*5VR zOYXQC;B^4*Sik--jy?J`uDj-! zSep}9YT4*SOrT2I6MF4H+EZFRPh+}^b4@i8OYk9Y&86o*Y4(`Ax1W4#tX^5m6LjZPb61LF2?qBy?B_?1YE!nej)R5c8qG`2s_uF`Cu+ z`X_$#2Ur#!Pw0WVd60fYG8A#y55LDyJ!Yt$5G6Efb<6Nr%-BTC_|llMB?%*A5%rOX z`fyBbD5g@4Ns^)P;F7zjv{t6u?k1J0kR*v#Dhair3iXjH^^qz=!xd`vm`W`oN-Wj_ zNML7~t!rRbc|9I0mUjpEgOJ9XGg2;vjDZ;b~V638P!uVuejytg~ci-I(n9#M6AR=mQG0YjoLKGPgFp(jS4Pn7UJR)Et z-8ZsqWsRLXri#f_BSeWIat3P+Q3Td1#ws={2CLGpDdvrgP#KD7 z&SnaR^#_Bsq;Xt;kyI^}iX~1WYzdHamc$tH1#Mz6f<2(WuH^s%^yXK78Gyg}{;LNA zoW%$)#R!a0wv&q%qj%+~i3^k&1jY!ljfi82Vr$~W5G6u&$Wp0VqR3*bDIWLE4Y64K ze08)CmeFrq2>QGFSDAk%Rhs}$r*rJVNuoO(~AJ!PG{T~d_i(dQ;OsQc+q&twwlJV|`Bv$N}R$K=uxCPyc!RBBXfRjRcZi5yAQk|YKj*>d`|Xw~ckP!!SW%^gsH z4oDR1AJt?S?}B;<&e0TPFsNAMQwxCt69o{uA>=K^qd1+MST3tptj8GHnN(upgb*ji zq`i%b+{{=o7ByB78@8!x_Gs&uqLOKv_6{gO2b4jbc8YT@EEzqBp!v_c?XXFx9Dq zb{!I|Nu<;4kZbyl3*LDg#$f7`nKwT9p9|2|t&fmAe64Of^c3TKI%Q?_^+uxaj|?xL zw5U4G#YlpQDngbfM)q85qt=DJt|y5nG){VqE;V8I&WBCAH+|pe@QT+};^BWB8(lGB zqe!DD7GqI`0pj%h;hm z;n?F&(5YS1X4{T?Hf24&;~ic?rDC*Zgk;*ga9b~Je`?R%gBQy3U5$!cEi-#s>T+d# zWH}Mbv|6p1R<`wiiPB32Gn*u}EQxC^LGJIR?H}~g*|#s5IQY`pJzcYP=0El5RWIen z8*k;5(^qldFJ}(enhxl1pnB_vPi5uu!@1|-9|Owd=%J>WPwQ>dkLW|!5WV<$<73Xb z{0CRJT1OpP567)vYea*J7*!3_M-nC`C)l*@dKzsw^5El5v)K$c-nf?sZ)?i>Gc=yt zg{xL=urnv{!j}h=hh{KFAjIS@=h9Cm+*Wg4^#P7G&H^uJ}ti7q&e;mhsVmBQ5C)gck>`^MPTct#kN`XeY zy*1mpB-~zJKsO&pXI#K<-9G%L><_WT>~2VG3-tYo**FmHCn}EFc|@} z2{7p8qE@j{qQY9FkjO}d=Yc>7@cDtD{27f1ZxgU%bBlPh>}&As_`9}d#QB4qTKxb- zG_JTghi)+zYlTvEI{}Sah7pYck*HkQK9dsCA8<=Uo@gS~ zLeiwB>$Dmw^r_KE-~W2zkMOJUJ@{I45gu>I$Fb{CDlr_NwgqI1@xqzzYqc7Jq)8W|f8j!+$1Yfh;RIi|fNsU@Is$Md#p>P7s zo!#JXl`o?s{v>|z`FcEf)Q!&Bv_6e>tRylQ99I=tH$vI4t)FVE9j4^ z{^8U!b>CdBZrK2-X+L^<*7zl0@OwaMfoxA07$!ALfb0H_*``4^4xbuE>kO%?tw@%ndOZ%`YsQmr_TvYSR-?(GUa}J$ry&-x z<$x@-@4e;LUq1qL{Si=7ARFBUpX{0i;bXJ--@s4NQh5(7b_Wi;z0zcee_Xn*dJdnw zjz2j`UeIWlz8`(eiNyss+I$+kvO6ywkd;_0rUJ#pruKL|x72X;%sVi4eif*o5e$-z zaTDJ#38C=ur7r`@P3ZJD;Fawzl>hS>(TLx6U5Da3}TK%>6ig1|8JJ*2utd9neX_sWps2_yV5m0#c~e7W9%V*>$_)OD;rR_`+#op^U5w$!)fsYY^($1_J~p#9xdN26i! ze?!3}l}XFIPloh6$a_BsY{&m8G2n2wZ~fAfIL{l7NV)af7ddiSjaSu@b!9Z5A+IA?leuTpUyfx$%TZIg@S(k?W)t6TH zWbJcV>nby=R`mbo5=7s50;E)Hq1GAU%*%oG>Pf(4AUFXT(mLTxMe^{*%u~?kRHMGI z042pmFzR&}>^X<#-CuywmW$kiV)S45`i|_`k?wiCd}=cD zU_6$Pq!9K0R&9_3D2Bp{dJJ`+hAD3jHYJHpYF>9s8iSx3?fFtw{GY>VIIdveK>q! z2Cbw1m6BtSN0{B`mL-T8X+9>b?U#?dZAi5$d+>!-q$^u=@)lip4P;AEETZrN^uN>&v~k@10vW zKvwVZkwp{nT(p ztC!Wk)y!v&gA~gpD7^^mla~#(cD`Mnn+ZfA#^SPi-2~21pco5=yHQhBDP{3df-~5C zL4u<*+cV%?I(-~@uFBN?SQXCV22{?E;qZxJ>~AVXnbNjuQfdC3N`qFd;YXZAw8l=n*QTCIrk=SPe8qn>OIJ2?^wNh-8qyDT}$(dr{$oo5)F z3dw7x7Z&*6U0nozybnh%P2uokIS+5Axy2PL1}9l` zIxQa3j^U+uui(MjVm#kKk#ID4XMpH>Ru8L>)%&z72BXn zNA5qcaC<67*RktaJ*+;%;3@2_%g?yqy4}32V!TW;8X()FBV(O5q0VJ_vX+=!U(htb zp;BPz$|aO+YQfOh4QwRoVcWINa~K`Cg3mnpJnsAKQ)qqrb+R|*P_ha7ESo{E#S^wk z{Pnp`9MURq{7)Xkp`V??s~5)sixb>SAKctsv3O^34$p6O;qaI4#i9S`MH|)kU&Jn0 zt)I>6;%_QJl8P}%R3w!m^-4-kN@ABw5hFxW;SDMQ`Cjy0AH&elkW?qLIX&mw z5To$nVB(b{u~CejGh`AIkVyN|p&! zz(Zasvdl|G?g3~T}tDM3T%Ij?KEX?ENdq0Q8kt<2k)YuTITU3g_(o4|q zL%@3#U;Bm*FV+77?!kAkQDdO-ZiQ#}!jK>kbqXk+e*22}ri=A~mhe01?H89rr`4)xzNmp}f2t{p7*A z&z_+8rX2A^>|(GGB=LMZ-aa`~%o`Kmm=8!;YPlzgaKg z&68vJpFi!xOK(@<(C%6sY-z%g7am&CuH${vQaSX-F&Jhp;#uLB_`I$Q7s~!j?xW<4 z;%h&8UMtmLBbdq+nf-~c{*<3fJ{hGQEm&@&LP<#p`bl!S&z*p?s4P`q%Dym3a?jyk zfAHT3fF1>9)v0q>+!P58V9x=il!nCY883C zt5~!&lacO};N%vTN)5_tgiSV-*4R?@vGZ8m6bTMu?|v01MN7dMxTr=!MGPjJ0tGG$ zHf-Rr>*5L6xITD-oHV;2Jy}ZFMyooGTmz3%QxsMe{iaeu3;}zec%IZbjCX$ePq!~Y zUbj2t#X`Iq2KK}v8=$0`v4&9tIjssN&jqxPL6#h{IlREHJ3nHQ6AcYx4}+r?rKDAY z(;>q#ScKFwfyHSxDgs{YXpBj7Q(|Pvks#qngoK@xj?+JuA2R1~`d7yYzUmGni1cP* z=7wZMZ}1LO#%41OP(pH2Qp6-EN~2^_K|TByI{W+t$F-{DWQ9X~YdMn9cL&?>aI_U-sT1N{knYK^Y)g7Rn+Q|d0~A*H0%>iy z0}1NuIE$jf0@T*lqPwRDL%NO9C}d5N(?(5*keba>qZKMx3KV$G@D@P|r&J_aA|Z0+ z;W6CzIgJ$OB#-xZ0C^-ip;!nWS8K;+j(m7jA^k<3QxM(3RTAYtg;tLvobQ zC)9sgo0g0;hben5ns&r6KQ$@ci`k^xmLR23f&TL!A~(l@>gs9?+V4h4(5`F%zf#R4 zk-y=Gm}fB35`8H7pEAu7b{6a*KgQ^411Oz#ljRzBi$N z|G$DO(E&~q#L)$^xQmiwKw>3daw0Ed!jXMa!#eZ!p#1Cq3p$+z8jX^gsleIap2WS6 zJd*)Mr_(u!%lryAuTrU&#X(W{#Tl4XIq=O-k-8P5qv2^p=31eN24s(>OeU#mCGlM( z9p@%|@|PkzI77#3w7<|nVCZtGpR(EkMP8T~g>Ga(fqt_BHy693UfaAYG;KuPG9Qs^d6 zBK|jTL$GgvqG1ohx!a+ws3ACVk}57tB06;g(aRk$jUFd@l$}@RK&+^M=#K)!9twmg z_6hMR7#V<;!%{17I_D8=+DACX$i`F3)kMZiirK}q&VxwH&el1}#QjXg`Br0eDg%6t$A#-u?> zNlg|osZY9bSZly<3LnO%#!|TXF{)l9RkmSfbcVu+h_pO$-GG*FypRb<3h}vq%AzYU zK3;@2&(qj5`YMekpCQ^@5{w{EV{^&rSzeT9`TW$$DY9V}0%Xxi5(6E1B~`-8v&Ty8 z*;|0rX_1{z-j7KTzqIy9T>dF6eV6vB9**jK&wfAbbycuB^ip4@;seOjl*4RsVrq!g zIJ|Zey|x4iu@!*WHi0YHxTOZI^KP_8pThl9KbIZ{iL3(&$;kkd0463U*4UIpBnr+K zl|eButSA#vha^35d0~VgE=}tq6UquuNy$+#IBL9Q*#%GKW;9plW%OerbQOi#4Y1hq z(0fq{@$TD|AW|_t3n0dP8rRUgvjL}1gm8ksGe|6&m28rbsa`3SiNr+_6aDVKd3 zMa+^Er=S2CMp`sPCVFcTEHR4>GK#;yjklv6yix?9!prlKan0Tuo_1m)b^;xHymP-$^OAjdSQs`AU zX4;PN(ni!b7QtXvuiA$Zz8gW_cV{Zb3u^$PXqPt+6QoTz-xkNOmCq8SH=$;ah{(>Q zR4PqsGE^;%%&I~zrnheuHKRHdW(~p`Esh$tV%AlMy2b*S9hx=U&$jX4;O%>{I0F=4 z`vwvu(*W*n*^0JS994D6MkBWLqDcWFPN9#rT_w zXuhrzE@eI3Gd?JfI&#Bh!ZgaXGbqzj zG)n;kKNZS)4`sd{bB=uU1~Fz7Gb~S8q}ywa0<(@n{44i)sI5vV`rf&%5yh?&ICFDRSXhX@ z^B+QuB5;(ojQe|U5zf;DMoatR?Z-iauo6(IWix6`EtnoVLvZGn!7&jW%KpV5dU|HC zYZry{BS3F^4yqd}2YaMV3;0u3+Zl#rU`Hld^#drpwa$7SR ztb3@_C(zI`l?kWQN^tz-L3ng`d(hJ2#O#;~UFXQN)Gq0{N~wfRV}s2uKS{k5jiE2v zjdFdjG&3lv78&?{V+90PGwSPWb=RK?m76i?V89%c4sH0C^lsnL^UkS7REERl5Z80xYhzig4< zgr)C|jaJz0JIUq#Ic3gfL_%RQ%&M%Vs=6AdO%F;Elbp&`m7DO9{sHMXcFv-E4hEx9 zS^?soox;yv`M*%Bl<@g{=<4c1_4Yl8P;OVH-6gd%+2-^T<#XW;zCcD?R;y$YZt_~F zV!4q{F9Nkz5M!ux?!?yo$8lr$IKdgg#m))1-2usKT<>xqzjP5s36A{u;94h-_kZq} zMtkppKY)K>nmQ06ucTQ~ER+j5tGA#{-wb804$3?o+O*BmG4`96;OO;wY4rz#bK<=> zP*72alkfgJKC^GH)K2!)rF#2rgo7c}5?Iz=*6w795gbqO4_ClRmgW6kzXTDW4S6lt zR`e9c2S0$VybEW}j!L8DaHuidlZ(8v1%eYy!5QpT;974jR0a#$J~#%AR)@X&pT$^T zr?gN!TdCYog~8nW5HGSJUTni)&b`vHpnnlcE{>Lm_RDa7`6i00n_#r(!jfN#UmyE7 z?AX4I)UaM^Z`HO35DYA$-n>t0cT#$Sv1Wp#Mkwe>74O`zRBrZa+nP40Dt`y=D*XzE zFCRnQ&TBY*W)34GK0Nzu4IL{$ZiyR4>ynEe?A4;TyB4n6CV7?n%sAS9^%geNZ%(YF z&;BZbma^~4jmTB{T9{Pf3Y z+4ngFJU8UJEH+&3I01WJ1@yjt^o_OC(Z5G1b_Gi1CKNhl+oz`_R@$#x)FVdUiKNOFo-z!_k0y6WMo*^+UC#rY|ONfIp10_cpE zRU6_b80XH)E99G+Hm0KL$?I3Z$0Bg#yTJ2oiQdu#m&NLUz*9CzQnO{}J!BVkGCZ}G z`lOU#MuiZp=7L*_ktoi}{#0Yd#Mn?9zHkr{9Eo6#2G@IvkXJI73FopFm%HjvQoAKF zO+t+h2V@;qtD)5E5D0kSBmT+b(vq4$=G%Z}C5iV&Dd=-J$aS#=nr%xB zGnk~pHr6?d&9Ss^btFbw18d^=r*&HskWv*#*Vz$yG1XiXEDjN&kcr}>O;9Keh{ZVQ zO@(;$is{fyzjm2UCkH<5ZngSge>0}*bWnf^SpGI1m5AEpan0)QE*Cx|C z#b?o$b4r21#7EirwlqJ3HHzwm(3lEs6Ea%*>6^(b37oao_j9|NXu- zI+$!^Y}rUJUy;4MgR6n~cx=#%FTQBK1HBc~#8p^Dl(UU``lyL(jCA_(PjpM#AZCOZ zAhyuhavORZ&oXN9RYo(tmN5^PsI~bCEkhN{%6=S0R4Vjefxg`3;??Gw%-0* R1%Utn002ovPDHLkV1fm{4kiEq diff --git a/plugins/Osmand-Sherpafy/res/drawable-ldpi/ic_launcher.png b/plugins/Osmand-Sherpafy/res/drawable-ldpi/ic_launcher.png deleted file mode 100644 index 99238729d8753585237a65b91c7cde426c90baef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2729 zcmV;a3Rd-rP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L02dMf02dMgXP?qi00007bV*G`2ipt~ z7YY(F`_Sb8017EdL_t(o!?l=uuwPYm$3JVI^ZWho?|E--5|R`W6G$K=z*GYY6wr=V zEHLAs& zdz|M!d-acV?}e00xbt)P@m$z^s#fV*k#SgXB4;4pFT(w@xz)o_l~EwJ+$tL zNA}&l{N}CqzO8^B)M@;g^aHT<;0E84yNhu{N${eJ-?VeV-AUA6q$<9trt}a{U45TFsn9Sc6zfp($j8t2s@dE zQIjAUBn)CY?J)11fS?@`1`%Nx6NL#$Z0Usk7(Wr4STgIdiMw7!!ptNtBYrmL$nY(+rzsSZg&+Q(Pts z$DVsczi`HH^ri&>wJ9FAf9p&De1OdZH!;t<6V-n!4>5RGht>sq2l{?Fa6~?LaQm$9 z9qH`6yjb)4PhAIa?cbkttcHHF=ZgDOlWSCc`VaTB=hp)doVH}{g9J0z z{OG}rx?{_LG>2kT!Sf8oqKD@j#DD_oG}lq0#F53O8AgO^qo8w6oGP^*|D}1SXUk7K zb?V*KdY9iC3G_f;Tb_CB@TqH89N00=&{%tU%c0Z4WB~ApI*tQ-I@60@=bck#y}*T6 z_R1w!Pet&si6M<0X$&@1Z04|OhSLnh!5CX8&N-6E$;g1?;NIcJ!9M@ET6asjDj{j& zq&1Y$9Lh>#7>)s?>Lr;~P$jdD%&Hf*{8+t^cGKb)1Y-;$qr{4!>WIP!krE;qzA0ie zH@2QMam0}lG!0Rtu2d9Jhk!tC3eGyD1bu2t1_*& znD@VXDUHfZeztiTyAJ-0ENzq8EH4L{qM4F8hdRitic@fz!#TyN5{GdxF+&jQ7@$l6 zDL9*@Sw_A%6O4hL>RjG2?L1CC{!f_IyJ&pj%>v_aJj(1 zDV}G@zl}MeEcR)=MBzMj!s=}<^ zGdSzCOStu`m-76U#|fg&xSoPB<%f3P={hr%`p}{nf+USozR$hK7$G3*$9{2!b{no?XWStM8y#?82#n6GW?7)Zsa` zwL!I2XXA1vS#2G_6uFg)uUPcjE9|${UC9d@_w0xRuPYew-0*;GI=nx){rvMUu(54@ z+`1-W3}TdRyVvvF=0|BZ+svA_fYc`R9sDKlJoSV8^oiAcd+nE5_tZVqd%^b&f>BQz zGBTL-|M&8(H=O;xQ=e^A=e^iz^4+6@yKlSf%8Tv#hqkcmS4VRN-hS^#_`+wt2f#&F zoaoiN8`U^;=?_+H4ewj^5AQhK+SC`?KJ^PeVnke)?{!I}B<(sU&3He<>2?MWWu%2Z z{8ENr@N(U$qFI3=v-$PTS07#Z@0&k3QOG}i+j)HBi%%Z=`tcW^UCejx+4hFXpTF~> z6_NH`)m1V01y2Phns1H@BEv%=rBZ<`6)ly05y^ASTBkN~;?g=vr9P;=m7CX$|G)Zgm+aiXZ~uaNy+(I$oqD4|rBaJZ zrIPx7!4u>8HcdFJC#TdexmzBje$|6hQ{z`W;j zcxEL`omomE>(d+x8Qd8VhX=5+`P#GV58evMdoP*&lTI}9fl8%JsjEQ2FXPkIUzaTk zaNk#c^;wYqAW|>-DX%0C?1}#Zoic`Di%g1kcS7qn!=Ut&(rcy6c zEP5*Vl6GWL2O9olCKpP^6ib5fJT(SUCo~-tix$s^a?N*TuSl&?#P^M4X@Pb!L1}-x z&WA*#CC1=+BE_;txmKWDDTfD-_Gz_Ib&Z~KTI()QX%w`p;#2A}c%F3r-vD)*@$xL` zN{seU@}^QO)(>T_xfWpdaeovRE7^CZPMr}#|!d*|R6{H=+M{MV$Mp3LNPKT_t5 z(-+S5yz=?J*A+!U{KSTh8xFttSbqQdFU>bSjT8Q$)Ky#JnbOd}k;7ZR_W37=|NQzh jFn-Lp|K;W1YU6(Zg`N}+zmb=x00000NkvXXu0mjf_|!_9 diff --git a/plugins/Osmand-Sherpafy/res/drawable-ldpi/icon.png b/plugins/Osmand-Sherpafy/res/drawable-ldpi/icon.png deleted file mode 100644 index c99e8a25f70d64ed2ba830c9deb80f940932e220..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2683 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 diff --git a/plugins/Osmand-Sherpafy/res/drawable-mdpi/icon.png b/plugins/Osmand-Sherpafy/res/drawable-mdpi/icon.png deleted file mode 100644 index 15eeaf60c26c5f3fb4f9c8d515aa671f28636c09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4055 zcmV;|4=C`7P)ygKeW4gp$9^5Axi~>gdjY{BiP1}*n`1|JMq*}XOd2vx-pY6oi@|ybefK* z^-O16xBbU|Bywwqx{Wa;#0KJG4EO;8A&`(k0=>{%yQ_Wg-q+rK=ic4buC$Vs*zHX3 z%%^+z-t+i<&+~ofh*J~=|DP`d`@?bEmmPeC(|99>c0pXpyhT&YmO z?>*_kEw`wBczAnpV|yNuyBcqNE~9%^z{MjC_~Ge0>mRIX_z8V|A>Evk8Ze5YD14#E zUw#x2Zjgt||FWZ_^m8cl> zQly{w70eG`2W&QAoJ^1jemRme>AgTJo^L8d2Lm6MGAVKG`>!#T+TWkh7^y4FXvg}p zG0qN0R7?zWY8_ygB+U;taQ(du>9qQf14S;f1+NBhnadrq;{0GW?oINTNCby#o9obA z=EA9WNpp&vz2nS%_2zTYJXoEuuX#+T2K?waP>inWX~JsGT*wwOK>mP&f>KP64xrxJ z4U3IJqmL$*mR_}^k_o>YYeQeS39T&~vAsnCCwHQ0cNp)S)Ij^AOS{>J-)l`szDT`y z&yY#Q=b80KwdWv>k&ZPh0}?SXH#LE#{l5>_`F|j%)oJm4iEBJkfS->&g^gREz#la> zAQJM!?{TA~?l`80-=>u{F}6&hmeXe)BMDq};vNrYC+pLF6(2H1p2VoQQZoEm-o#Id49lPusp zF*|hC&k}ee0$w+~Za1pZz(2Ux3!Tw~dSwd$+Hv;Ppnc>Q8N^33Plq zjOL0}lpZ($KBCz-5%-fzDkXm}B5KR}u)ZCi4CARX`HLBlBoP8>Kovkp(3p@DNo|sd z2|0fY0&{Noe7+R;bRjTbQvE5{i0au}X#YhIUOl=68!f@bnpi^etS#%q`fd|`8`hTfxpbuyf3n^TgTatJ3Z*+n(hpS0Gl3_P zRRvmlkHl{wu0!=E4gAo(9t`*2f!Uga%V$qw`=d`G8VO@^Y?$&EGgjx>@NM5!ymc-@ zQ7Md$@3f(Pdp()OU7YHE0DnYVBV0BU4ma1LeaBWZn_{&8yc1Wh_u`=MENW{0JOk&l zVKiw%N#N{{S_B!?z@%QK)r|;IzhMGDMBq&pD`nRtL7g5~hzX;~gjj^^-L50y$|%qE z;qOXM;q8HORQ=TiF;IhJk8VQ8A3mA^s{5fA9ao2O`1Q}QZSE|-C6meNA{iK$XMkxy z5H$vpz|-!awTR2Lz&U#X-D5hEey<9inag}&*FhjtG?>g35MtzugV_CzI80_2bf4V9 z=9xR_yw-@5|DBJAN@)hD%J>)>r2+g6e-Yd4lNjFpPnew^UO5BqsY$G=>c=V_Kk~v0Vlkg(eBLc|6AAB`6`E`s}0k(b)R+l`&9U-GIr_Arx6FNDJP1;EB?f zWdk~Q6ghSSw%U5o$+u(&PxXQj8$sJ4)v8qR7JD3)oH%KV!z11)>}ZTqqzgdFmsAFr zA1jHd$DSiOHTd}4yQ<=|X&`G9GTU-czJ41n&bZWp*nn{{Eh4d?5tI=p2G}pogY+4Bg)I-19LEy+VGtDUCNnQnk%a$@B*UYVeEKJNq|?< zz{fF8;E(Dr!&K&g(oZHTAVuofiTOOT5&0Wz@Y6!cw3&`^Sq(h6eS;>7U{y&OE*f@H zHpyj7q7s{gB&T=;nCc7g{hX87ZRk`TnU9WQ`(w=16iUgJ49VwS@5dilFTvbU2*t}I z9*|O?Gqg;x`T~m3^feo58a)VyLRmGCtceR^u~@3wpLGwyZgjz(TZo>X9+dp-aX1C9 zx&|=&XJIsTXH-OGW?eqG2|s~S5Z`zd`kJkf3{JI=UJM{UbQQW=?*REEjMY@M-*-cy z*w?Ikl=yNB$ISS zv@|#4Wcl-WeCVImtu=Ku)@zd~Nd_ju;C!@h)D{5El;C;ZgYw`P&`WW3ngaI}!c zTPWwBrQE!897;seK<~V#KV+2ZaZ5WL+~Y%6_<3vG5zsz_=(1rSFkOV^q7Ec&eDG z{v7AA>6t%8*S}oFCZ!Wfj8$6m(q~4fGQ#$UZcc-<8K9Ij7gV%*oq^p8=dq_yN_eJ3PYpBCL%><}MPBNh~ zl(?&m02vG<(~*TMyJ|ADz;SjXdbnbIT6X|#JL)2$tp=pAVk^s%k-<1UnXhK?`1@_%$RL$mMd<|~Y?nc|bCUw5_ zi>I147M(;5+E%84m=K0V%G@uVr9t!TF>GI7jb6u(@aDyz;z|9da9N`o6A6thl0LF% zfk~Xqg-P9`nDC~w7KWycXxqgijsQVgyn7Ldg;wqZF`m?x+Vh&fro}-5yb6_+RjzxX z4ey+>qi|>tdrU*f&1LmNTw^3m6w6F|Ig1{ggMl`Hqp0MTj5x!WqQ_p2?FSlBOrcc} zm)`kcm{!aHPXh_^V(Y52Z9&{WjdeT2l*`%h{Ih#7FjS3quJuDV?MB7yEGiuWYOOO6 zhe8>Bjg>Zxn#@SFl!n$J*%4HjEA4(~bcsRjFFnhH9ym zmVms}oJnGld@lSQ0$)TGqO?2%Og%{wC7uQl&|3C1%)u~fH}$LFy_3cS_y~b#8fu5D zU<0+4!5K{{a^~e@s{Sa%Vkg8B7be#pQQz^TuFBeatf_ef7k+s{t<+Q|8h4^zw+l{7 zkvcCUQPL6k?~*?j({HLPD9cU9xU2~=2DVl|2g{rfRn5I*^D?|sPO1}VLRX9?=5Xme z+snL)y$6rt>W7s3zy-Zw-fz}#X+!7m2WmK7zqw6Kvx|y~v6`x@3uoSj#aV#goO%n} z_B{bvV(I%TtQu~_RB!^m$TT9te#$@}&`1xKKORkHqrqS>m5qMz;cM7XUW>|g*An1e zFk1xzAJxF0D@Sgrc9QCw93*W7kyE$^MyiX27~8+s)ZNu}lhSJ*O&iw1=boZ8JWRC) zWt9b`R43@wLOY8gN{NG4{+!(bl?#Eg8`PFT%alqxB3(eu2391e$?jiwj~ z1Oh1rE}ecEyAIBg&B~YR{UGbY`a0>DTJ&K8)Ot!|%2uC$|iCl9u1=!t~Ty zG_47(;yoH#L&c6i0Wvu{&`J!JT*0L{+M-cEbIPtsDC;+dJ5$7}m3gmPli^a`>N~1;9cuV%p?V z8i;t>IgXqK3>Ev%R|V#GW#E4V7yv7Lk>^2`>2Cl4002ov JPDHLkV1ij1!pZ;u diff --git a/plugins/Osmand-Sherpafy/res/drawable-xhdpi/ic_launcher.png b/plugins/Osmand-Sherpafy/res/drawable-xhdpi/ic_launcher.png deleted file mode 100644 index 71c6d760f05183ef8a47c614d8d13380c8528499..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14383 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 diff --git a/plugins/Osmand-Sherpafy/res/drawable-xhdpi/icon.png b/plugins/Osmand-Sherpafy/res/drawable-xhdpi/icon.png deleted file mode 100644 index 8c9caab40cce7fcd6a0ffce41ca86b75c2b89def..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10436 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 uZTwhy^G{X)pKc%hCjAtGk9Yh30t^84=xnuG?ik - - - - - \ No newline at end of file diff --git a/plugins/Osmand-Sherpafy/res/values/strings.xml b/plugins/Osmand-Sherpafy/res/values/strings.xml deleted file mode 100644 index 5cac6def46..0000000000 --- a/plugins/Osmand-Sherpafy/res/values/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - No - Yes - OsmAnd is not installed - Sherpafy - OsmAnd Sherpafy is installed and enabled in OsmAnd settings. - \ No newline at end of file diff --git a/plugins/Osmand-Sherpafy/src/net/osmand/sherpafy/SherpafyPluginActivity.java b/plugins/Osmand-Sherpafy/src/net/osmand/sherpafy/SherpafyPluginActivity.java deleted file mode 100644 index c2773ea6dd..0000000000 --- a/plugins/Osmand-Sherpafy/src/net/osmand/sherpafy/SherpafyPluginActivity.java +++ /dev/null @@ -1,63 +0,0 @@ -package net.osmand.sherpafy; - -import android.app.Activity; -import android.app.AlertDialog; -import android.content.ActivityNotFoundException; -import android.content.ComponentName; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.net.Uri; -import android.os.Bundle; - -public class SherpafyPluginActivity extends Activity { - private static final String OSMAND_COMPONENT = "net.osmand"; //$NON-NLS-1$ - private static final String OSMAND_COMPONENT_PLUS = "net.osmand.plus"; //$NON-NLS-1$ - private static final String OSMAND_ACTIVITY = "net.osmand.plus.sherpafy.TourViewActivity"; //$NON-NLS-1$ - - /** Called when the activity is first created. */ - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.main); - - Intent intentPlus = new Intent(); - intentPlus.setComponent(new ComponentName(OSMAND_COMPONENT_PLUS, OSMAND_ACTIVITY)); - intentPlus.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); - ResolveInfo resolved = getPackageManager().resolveActivity(intentPlus, PackageManager.MATCH_DEFAULT_ONLY); - if(resolved != null) { - stopService(intentPlus); - startActivity(intentPlus); - finish(); - } else { - Intent intentNormal = new Intent(); - intentNormal.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); - intentNormal.setComponent(new ComponentName(OSMAND_COMPONENT, OSMAND_ACTIVITY)); - resolved = getPackageManager().resolveActivity(intentNormal, PackageManager.MATCH_DEFAULT_ONLY); - if (resolved != null) { - stopService(intentNormal); - intentNormal.putExtra("SHERPAFY", true); - startActivity(intentNormal); - finish(); - } else { - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setMessage(getString(R.string.osmand_app_not_found)); - builder.setPositiveButton(getString(R.string.shared_string_yes), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:" + OSMAND_COMPONENT_PLUS)); - try { - stopService(intent); - startActivity(intent); - } catch (ActivityNotFoundException e) { - } - } - }); - builder.setNegativeButton(getString(R.string.shared_string_no), null); - builder.show(); - } - } - } - -} \ No newline at end of file diff --git a/plugins/Osmand-Skimaps/build.gradle b/plugins/Osmand-Skimaps/build.gradle index 9d9cc05dd9..17aa1d99f2 100644 --- a/plugins/Osmand-Skimaps/build.gradle +++ b/plugins/Osmand-Skimaps/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 21 - buildToolsVersion "21.1.2" + buildToolsVersion "23.0.1" signingConfigs { development { From 0ba3f9072b7dba2fdf3f01e5910b87df7b0d225a Mon Sep 17 00:00:00 2001 From: Alexey Kulish Date: Wed, 9 Sep 2015 19:35:38 +0300 Subject: [PATCH 20/90] Ctx menu in progress, IconCache fix --- .../res/layout/map_context_menu_fragment.xml | 13 ++++----- OsmAnd/res/values/attrs.xml | 1 + OsmAnd/res/values/colors.xml | 7 +++++ OsmAnd/res/values/styles.xml | 2 ++ OsmAnd/src/net/osmand/plus/IconsCache.java | 4 +-- .../MapContextMenuFragment.java | 12 ++++----- .../sections/AmenityInfoMenuBuilder.java | 27 ++++++------------- 7 files changed, 33 insertions(+), 33 deletions(-) diff --git a/OsmAnd/res/layout/map_context_menu_fragment.xml b/OsmAnd/res/layout/map_context_menu_fragment.xml index 01473173a6..8586c1d72a 100644 --- a/OsmAnd/res/layout/map_context_menu_fragment.xml +++ b/OsmAnd/res/layout/map_context_menu_fragment.xml @@ -37,11 +37,11 @@ @@ -50,7 +50,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:layout_marginTop="16dp" + android:layout_marginTop="15dp" android:layout_marginBottom="16dp" android:orientation="vertical"> @@ -71,7 +71,7 @@ android:layout_height="wrap_content" android:layout_marginLeft="12dp" android:layout_marginRight="12dp" - android:layout_marginTop="3dp" + android:layout_marginTop="4dp" android:text="@string/other_location" android:textColor="?android:textColorSecondary" android:textSize="@dimen/default_desc_text_size"/> @@ -170,7 +170,8 @@ android:id="@+id/context_menu_bottom_view" android:layout_width="fill_parent" android:layout_height="wrap_content" - android:orientation="vertical"> + android:orientation="vertical" + android:background="?attr/ctx_menu_info_view_bg"> diff --git a/OsmAnd/res/values/attrs.xml b/OsmAnd/res/values/attrs.xml index 43097f5c88..b744ac77db 100644 --- a/OsmAnd/res/values/attrs.xml +++ b/OsmAnd/res/values/attrs.xml @@ -12,6 +12,7 @@ + diff --git a/OsmAnd/res/values/colors.xml b/OsmAnd/res/values/colors.xml index 22a4b13827..11b1c39563 100644 --- a/OsmAnd/res/values/colors.xml +++ b/OsmAnd/res/values/colors.xml @@ -58,6 +58,13 @@ #727272 #ccc + #eaeaea + #292f33 + #212121 + #b4c3cc + #d9d9d9 + #333b40 + #448AFF #eaeaea #F0F0F0 diff --git a/OsmAnd/res/values/styles.xml b/OsmAnd/res/values/styles.xml index bb32c32229..7045ca986d 100644 --- a/OsmAnd/res/values/styles.xml +++ b/OsmAnd/res/values/styles.xml @@ -69,6 +69,7 @@ @drawable/bg_map_context_menu_light @color/dashboard_divider_light @drawable/dashboard_button_light + @color/ctx_menu_info_view_bg_light @color/search_background_dark @drawable/ic_action_mode_back @style/WhiteActionMode @@ -164,6 +165,7 @@ @drawable/bg_map_context_menu_dark @color/dashboard_divider_dark @drawable/dashboard_button_dark + @color/ctx_menu_info_view_bg_dark @color/color_white @drawable/switch_ex_background_dark @color/switch_ex_button_text_dark diff --git a/OsmAnd/src/net/osmand/plus/IconsCache.java b/OsmAnd/src/net/osmand/plus/IconsCache.java index 842ceaa3e0..3aede0382d 100644 --- a/OsmAnd/src/net/osmand/plus/IconsCache.java +++ b/OsmAnd/src/net/osmand/plus/IconsCache.java @@ -22,7 +22,7 @@ public class IconsCache { d = app.getResources().getDrawable(resId).mutate(); d.clearColorFilter(); if (clrId != 0) { - d.setColorFilter(app.getResources().getColor(clrId), PorterDuff.Mode.MULTIPLY); + d.setColorFilter(app.getResources().getColor(clrId), PorterDuff.Mode.SRC_IN); } drawable.put(hash, d); } @@ -35,7 +35,7 @@ public class IconsCache { if(d == null) { d = app.getResources().getDrawable(resId).mutate(); d.clearColorFilter(); - d.setColorFilter(color, PorterDuff.Mode.MULTIPLY); + d.setColorFilter(color, PorterDuff.Mode.SRC_IN); drawable.put(hash, d); } return d; diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index a75aab3e84..27b6123ea9 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -249,7 +249,7 @@ public class MapContextMenuFragment extends Fragment { iconLayout.setVisibility(View.GONE); } else { iconView.setImageDrawable(iconsCache.getIcon(iconId, - light ? R.color.icon_color : R.color.icon_color_light)); + light ? R.color.osmand_orange : R.color.osmand_orange_dark)); } // Text line 1 @@ -263,7 +263,7 @@ public class MapContextMenuFragment extends Fragment { // Close button final ImageView closeButtonView = (ImageView)view.findViewById(R.id.context_menu_close_btn_view); closeButtonView.setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_remove_dark, - light ? R.color.actionbar_dark_color : R.color.actionbar_light_color)); + light ? R.color.icon_color_light : R.color.dash_search_icon_dark)); closeButtonView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -275,7 +275,7 @@ public class MapContextMenuFragment extends Fragment { // Action buttons final ImageButton buttonNavigate = (ImageButton) view.findViewById(R.id.context_menu_route_button); buttonNavigate.setImageDrawable(iconsCache.getIcon(R.drawable.map_directions, - light ? R.color.actionbar_dark_color : R.color.actionbar_light_color)); + light ? R.color.icon_color : R.color.dash_search_icon_dark)); buttonNavigate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -285,7 +285,7 @@ public class MapContextMenuFragment extends Fragment { final ImageButton buttonFavorite = (ImageButton) view.findViewById(R.id.context_menu_fav_button); buttonFavorite.setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_fav_dark, - light ? R.color.actionbar_dark_color : R.color.actionbar_light_color)); + light ? R.color.icon_color : R.color.dash_search_icon_dark)); buttonFavorite.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -295,7 +295,7 @@ public class MapContextMenuFragment extends Fragment { final ImageButton buttonShare = (ImageButton) view.findViewById(R.id.context_menu_share_button); buttonShare.setImageDrawable(iconsCache.getIcon(R.drawable.abc_ic_menu_share_mtrl_alpha, - light ? R.color.actionbar_dark_color : R.color.actionbar_light_color)); + light ? R.color.icon_color : R.color.dash_search_icon_dark)); buttonShare.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -305,7 +305,7 @@ public class MapContextMenuFragment extends Fragment { final ImageButton buttonMore = (ImageButton) view.findViewById(R.id.context_menu_more_button); buttonMore.setImageDrawable(iconsCache.getIcon(R.drawable.ic_overflow_menu_white, - light ? R.color.actionbar_dark_color : R.color.actionbar_light_color)); + light ? R.color.icon_color : R.color.dash_search_icon_dark)); buttonMore.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java index 1d83dc33ff..c01f31cc34 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java @@ -1,7 +1,6 @@ package net.osmand.plus.mapcontextmenu.sections; import android.content.res.Resources; -import android.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.view.View; @@ -16,6 +15,7 @@ import net.osmand.osm.MapPoiTypes; import net.osmand.osm.PoiType; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; +import net.osmand.util.Algorithms; import java.util.Map; @@ -31,7 +31,7 @@ public class AmenityInfoMenuBuilder extends MenuBuilder { } private void buildRow(View view, int iconId, String text) { - Resources.Theme theme = view.getContext().getTheme(); + boolean light = app.getSettings().isLightContent(); LinearLayout ll = new LinearLayout(view.getContext()); ll.setOrientation(LinearLayout.HORIZONTAL); @@ -64,16 +64,8 @@ public class AmenityInfoMenuBuilder extends MenuBuilder { ll.addView(llText); TextView textView = new TextView(view.getContext()); - -// TypedValue typedValueTextSize = new TypedValue(); -// theme.resolveAttribute(R.dimen.default_desc_text_size, typedValueTextSize, true); -// int textSize = typedValueTextSize.data; - textView.setTextSize(14); - -// TypedValue typedValueTextColor = new TypedValue(); -// theme.resolveAttribute(android.R.attr.textColorSecondary, typedValueTextColor, true); -// int textColor = typedValueTextColor.data; - //textView.setTextColor(textColor); + textView.setTextSize(18); // todo: create constant + textView.setTextColor(app.getResources().getColor(light ? R.color.ctx_menu_info_text_light : R.color.ctx_menu_info_text_dark)); textView.setText(text); //textView.setText("sdf dsaf fsdasdfg adsf asdsfd asdf sdf adsfg asdf sdfa sdf dsf agsfdgd fgsfd sdf asdf adg adf sdf asdf dfgdfsg sdfg adsf asdf asdf sdf SDF ASDF ADSF ASDF ASDF DAF SDAF dfg dsfg dfg sdfg rg rth sfghs dfgs dfgsdfg adfg dfg sdfg dfs "); @@ -91,10 +83,7 @@ public class AmenityInfoMenuBuilder extends MenuBuilder { llHorLineParams.gravity = Gravity.BOTTOM; horizontalLine.setLayoutParams(llHorLineParams); - TypedValue typedValueColor = new TypedValue(); - theme.resolveAttribute(R.attr.dashboard_divider, typedValueColor, true); - int color = typedValueColor.data; - horizontalLine.setBackgroundColor(color); + horizontalLine.setBackgroundColor(app.getResources().getColor(light ? R.color.ctx_menu_info_divider_light : R.color.ctx_menu_info_divider_dark)); ((LinearLayout)view).addView(horizontalLine); } @@ -135,11 +124,11 @@ public class AmenityInfoMenuBuilder extends MenuBuilder { if(pt instanceof PoiType && !((PoiType) pt).isText()) { vl = pt.getTranslation(); } else { - vl = /*pt.getTranslation() + ": " + */amenity.unzipContent(e.getValue()); + vl = pt.getTranslation() + ": " + amenity.unzipContent(e.getValue()); } } else { - vl = /*Algorithms.capitalizeFirstLetterAndLowercase(e.getKey()) + - ": " + */amenity.unzipContent(e.getValue()); + vl = Algorithms.capitalizeFirstLetterAndLowercase(e.getKey()) + + ": " + amenity.unzipContent(e.getValue()); } } From 4039e1b66f15af103cfe51cea6a77da9a0d8e866 Mon Sep 17 00:00:00 2001 From: Franco Date: Wed, 9 Sep 2015 19:25:36 +0200 Subject: [PATCH 21/90] Translated using Weblate (Spanish) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-es/phrases.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/OsmAnd/res/values-es/phrases.xml b/OsmAnd/res/values-es/phrases.xml index 7e6ad93b5b..f4b263816a 100644 --- a/OsmAnd/res/values-es/phrases.xml +++ b/OsmAnd/res/values-es/phrases.xml @@ -1160,4 +1160,12 @@ Terreno abandonado Suelo urbanizable + Venta mayorista + + Materiales de construcción + Materiales de fontanería/plomería + Suministros de madera + Insumos agrícolas + Azulejos + From f2df447d86edeac1a9481553ce7cbdbbf3ec628f Mon Sep 17 00:00:00 2001 From: Franco Date: Wed, 9 Sep 2015 19:26:16 +0200 Subject: [PATCH 22/90] Translated using Weblate (Spanish) Currently translated at 100.0% (1768 of 1768 strings) --- OsmAnd/res/values-es/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-es/strings.xml b/OsmAnd/res/values-es/strings.xml index c780da783f..af3698cdcf 100644 --- a/OsmAnd/res/values-es/strings.xml +++ b/OsmAnd/res/values-es/strings.xml @@ -2185,4 +2185,5 @@ Días laborales Lugares recientes Favoritos - +borrar + From b268baf3e158659bf57de174fd25a8aafcb73d95 Mon Sep 17 00:00:00 2001 From: Franco Date: Wed, 9 Sep 2015 19:33:38 +0200 Subject: [PATCH 23/90] Translated using Weblate (Argentinean Spanish) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-es-rAR/phrases.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index 7fd6a84e8c..f2ec41b082 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -1157,4 +1157,12 @@ Mezcla (contenido) Terreno abandonado Suelo urbanizable + Venta mayorista + + Corralón + Suministros de plomería + Venta de madera + Suministros agrícolas + Venta de azulejos + From a5ba0bd7936360c162501fa888875ea842ea99c9 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Wed, 9 Sep 2015 22:41:28 +0200 Subject: [PATCH 24/90] Fix prolog player --- .../voice/AbstractPrologCommandPlayer.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/voice/AbstractPrologCommandPlayer.java b/OsmAnd/src/net/osmand/plus/voice/AbstractPrologCommandPlayer.java index 56119afd23..5205d05fc6 100644 --- a/OsmAnd/src/net/osmand/plus/voice/AbstractPrologCommandPlayer.java +++ b/OsmAnd/src/net/osmand/plus/voice/AbstractPrologCommandPlayer.java @@ -4,6 +4,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; @@ -11,6 +12,7 @@ import java.util.List; import net.osmand.IndexConstants; import net.osmand.PlatformUtil; +import net.osmand.StateChangedListener; import net.osmand.plus.ApplicationMode; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandSettings; @@ -31,7 +33,7 @@ import alice.tuprolog.Term; import alice.tuprolog.Theory; import alice.tuprolog.Var; -public abstract class AbstractPrologCommandPlayer implements CommandPlayer { +public abstract class AbstractPrologCommandPlayer implements CommandPlayer, StateChangedListener { private static final Log log = PlatformUtil.getLog(AbstractPrologCommandPlayer.class); @@ -56,6 +58,7 @@ public abstract class AbstractPrologCommandPlayer implements CommandPlayer { protected int streamType; private int currentVersion; + protected AbstractPrologCommandPlayer(OsmandApplication ctx, String voiceProvider, String configFile, int[] sortedVoiceVersions) throws CommandPlayerException { @@ -91,6 +94,15 @@ public abstract class AbstractPrologCommandPlayer implements CommandPlayer { "alice.tuprolog.lib.ISOLibrary"/*, "alice.tuprolog.lib.IOLibrary"*/}; } + @Override + public void stateChanged(ApplicationMode change) { + prologSystem.getTheoryManager().retract(new Struct("appMode", new Var())); + prologSystem.getTheoryManager() + .assertA( + new Struct("appMode", new Struct(ctx.getSettings().APPLICATION_MODE.get().getStringKey() + .toLowerCase())), true, "", true); + } + private void init(String voiceProvider, OsmandSettings settings, String configFile) throws CommandPlayerException { prologSystem.clearTheory(); voiceDir = null; @@ -123,7 +135,11 @@ public abstract class AbstractPrologCommandPlayer implements CommandPlayer { if(m.getParent() != null) { m = m.getParent(); } - prologSystem.addTheory(new Theory("appMode('"+m.getStringKey().toLowerCase()+"').")); + settings.APPLICATION_MODE.addListener(this); + prologSystem.getTheoryManager() + .assertA( + new Struct("appMode", new Struct(ctx.getSettings().APPLICATION_MODE.get().getStringKey() + .toLowerCase())), true, "", true); prologSystem.addTheory(new Theory("measure('"+mc.toTTSString()+"').")); prologSystem.addTheory(new Theory(config)); config.close(); @@ -149,6 +165,7 @@ public abstract class AbstractPrologCommandPlayer implements CommandPlayer { } } + protected Term solveSimplePredicate(String predicate) { Term val = null; From 8d0f21f8142fd2a6f4f908471db9e86ebe7262cb Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Wed, 9 Sep 2015 22:53:07 +0200 Subject: [PATCH 25/90] Fix issue with ellipsizing OH in POI UI --- OsmAnd/res/layout/searchpoi_list.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/layout/searchpoi_list.xml b/OsmAnd/res/layout/searchpoi_list.xml index 7ed73dae47..9e2d75b1d2 100644 --- a/OsmAnd/res/layout/searchpoi_list.xml +++ b/OsmAnd/res/layout/searchpoi_list.xml @@ -76,6 +76,7 @@ android:layout_height="wrap_content" android:layout_marginRight="@dimen/gpx_small_text_margin" android:textColor="?android:textColorSecondary" + android:ellipsize="end" android:textSize="@dimen/default_sub_text_size" /> From 073df67f50fd8b18267f5ba575b23792764237e1 Mon Sep 17 00:00:00 2001 From: stephan 75 Date: Wed, 9 Sep 2015 20:25:49 +0200 Subject: [PATCH 26/90] Translated using Weblate (German) Currently translated at 98.9% (1750 of 1768 strings) --- OsmAnd/res/values-de/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index d12ace0ad4..03b799f762 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -1938,7 +1938,7 @@ Afghanistan, Ägypten, Albanien, Algerien, Andorra, Angola, Anguilla, Antigua an Fehlende Karten herunterladen: %1$s (%2$d MB)? Mehr… Bitte ID eingeben - Ausgangsposition + Übersicht Bus-, Oberleitungsbus-, Sammeltaxi-Linien Streckenaufzeichnung h From 44d358497f90d7d2e7e4a750cdce6a1345cdc569 Mon Sep 17 00:00:00 2001 From: Franco Date: Wed, 9 Sep 2015 19:35:24 +0200 Subject: [PATCH 27/90] Translated using Weblate (Argentinean Spanish) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-es-rAR/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index f2ec41b082..f0cd548138 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -1159,7 +1159,7 @@ Suelo urbanizable Venta mayorista - Corralón + Materiales de construcción Suministros de plomería Venta de madera Suministros agrícolas From 6c542cca3a09e4d9f1e1ed9053dac5cfb6ff7a49 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Thu, 10 Sep 2015 00:30:31 +0200 Subject: [PATCH 28/90] Prioritize opening hours better for current rule --- .../net/osmand/util/OpeningHoursParser.java | 35 ++++++++++--------- OsmAnd/res/layout/searchpoi_list.xml | 7 +++- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/OsmAnd-java/src/net/osmand/util/OpeningHoursParser.java b/OsmAnd-java/src/net/osmand/util/OpeningHoursParser.java index bde16fbdc0..29b3b94741 100644 --- a/OsmAnd-java/src/net/osmand/util/OpeningHoursParser.java +++ b/OsmAnd-java/src/net/osmand/util/OpeningHoursParser.java @@ -1,11 +1,6 @@ package net.osmand.util; /* Can be commented out in order to run the main function separately */ - -import net.osmand.PlatformUtil; - -import org.apache.commons.logging.Log; - import java.io.Serializable; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -21,7 +16,6 @@ import java.util.Calendar; * if the OSM feature is open at a certain time. */ public class OpeningHoursParser { - private static final Log LOG = PlatformUtil.getLog(OpeningHoursParser.class); private static final String[] daysStr = new String[] {"Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ private static final String[] monthsStr = new String[] {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; @@ -113,15 +107,6 @@ public class OpeningHoursParser { public String getCurrentRuleTime(Calendar cal) { String ruleOpen = null; String ruleClosed = null; - for (OpeningHoursRule r : rules){ - if(r.containsDay(cal) && r.containsMonth(cal)){ - if(r.isOpenedForTime(cal, false)) { - ruleOpen = r.toRuleString(true); - } else { - ruleClosed = r.toRuleString(true); - } - } - } for (OpeningHoursRule r : rules){ if(r.containsPreviousDay(cal) && r.containsMonth(cal)){ if(r.isOpenedForTime(cal, true)) { @@ -131,6 +116,16 @@ public class OpeningHoursParser { } } } + for (OpeningHoursRule r : rules){ + if(r.containsDay(cal) && r.containsMonth(cal)){ + if(r.isOpenedForTime(cal, false)) { + ruleOpen = r.toRuleString(true); + } else { + ruleClosed = r.toRuleString(true); + } + } + } + if(ruleOpen != null) { return ruleOpen; } @@ -726,8 +721,8 @@ public class OpeningHoursParser { Calendar cal = Calendar.getInstance(); cal.setTime(new SimpleDateFormat("dd.MM.yyyy HH:mm").parse(time)); boolean calculated = hours.isOpenedForTime(cal); - System.out.printf(" %sok: Expected %s: %b = %b\n", - ((calculated != expected) ? "NOT " : ""), time, expected, calculated); + System.out.printf(" %sok: Expected %s: %b = %b (rule %s)\n", + ((calculated != expected) ? "NOT " : ""), time, expected, calculated, hours.getCurrentRuleTime(cal)); if(calculated != expected) { throw new IllegalArgumentException("BUG!!!"); } @@ -740,6 +735,12 @@ public class OpeningHoursParser { System.out.println(hours); testOpened("09.08.2012 11:00", hours, true); testOpened("09.08.2012 16:00", hours, false); + + hours = parseOpenedHours("Mo-Fr 11:30-15:00,17:30-23:00; Sa-Su,PH 11:30-23:00"); + System.out.println(hours); + testOpened("7.09.2015 14:54", hours, true); + testOpened("7.09.2015 15:05", hours, false); + // two time and date ranges hours = parseOpenedHours("Mo-We, Fr 08:30-14:40,15:00-19:00"); //$NON-NLS-1$ diff --git a/OsmAnd/res/layout/searchpoi_list.xml b/OsmAnd/res/layout/searchpoi_list.xml index 9e2d75b1d2..883240e1a8 100644 --- a/OsmAnd/res/layout/searchpoi_list.xml +++ b/OsmAnd/res/layout/searchpoi_list.xml @@ -74,9 +74,14 @@ android:id="@+id/time" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:ellipsize="end" + android:maxLines="1" + android:lines="1" + android:singleLine="true" + android:scrollHorizontally="true" + android:layout_marginRight="@dimen/gpx_small_text_margin" android:textColor="?android:textColorSecondary" - android:ellipsize="end" android:textSize="@dimen/default_sub_text_size" /> From bef91395d4a71e42ecf529155c4c88a9ba80c1d0 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Thu, 10 Sep 2015 00:44:52 +0200 Subject: [PATCH 29/90] Make cone bigger --- OsmAnd/src/net/osmand/plus/base/MapViewTrackingUtilities.java | 1 - OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/base/MapViewTrackingUtilities.java b/OsmAnd/src/net/osmand/plus/base/MapViewTrackingUtilities.java index c169dd8e43..375f08bc34 100644 --- a/OsmAnd/src/net/osmand/plus/base/MapViewTrackingUtilities.java +++ b/OsmAnd/src/net/osmand/plus/base/MapViewTrackingUtilities.java @@ -143,7 +143,6 @@ public class MapViewTrackingUtilities implements OsmAndLocationListener, IMapLoc public boolean isShowViewAngle() { - return showViewAngle; } diff --git a/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java b/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java index 1e7ff28f2e..5373fd0cc9 100644 --- a/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java @@ -70,7 +70,7 @@ public class PointLocationLayer extends OsmandMapLayer { private RectF getHeadingRect(int locationX, int locationY){ - int rad = (int) (view.getDensity() * 35); + int rad = (int) (view.getDensity() * 55); return new RectF(locationX - rad, locationY - rad, locationX + rad, locationY + rad); } From 4e50e6ab55ad6692cd09cbe9c1d5f1ccfaa16331 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Thu, 10 Sep 2015 00:46:38 +0200 Subject: [PATCH 30/90] Make cone bigger --- OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java b/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java index 5373fd0cc9..eb0786a0ee 100644 --- a/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java @@ -70,7 +70,7 @@ public class PointLocationLayer extends OsmandMapLayer { private RectF getHeadingRect(int locationX, int locationY){ - int rad = (int) (view.getDensity() * 55); + int rad = (int) (view.getDensity() * 60); return new RectF(locationX - rad, locationY - rad, locationX + rad, locationY + rad); } From 63a94b874ddf6b9664b32052276d8e6a46680818 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Thu, 10 Sep 2015 01:47:54 +0200 Subject: [PATCH 31/90] Fix memory leak --- OsmAnd/src/net/osmand/plus/OsmAndLocationSimulation.java | 9 ++++----- .../osmand/plus/audionotes/AudioVideoNotesPlugin.java | 1 + 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/OsmAndLocationSimulation.java b/OsmAnd/src/net/osmand/plus/OsmAndLocationSimulation.java index e202bfb68d..cc8c2ab419 100644 --- a/OsmAnd/src/net/osmand/plus/OsmAndLocationSimulation.java +++ b/OsmAnd/src/net/osmand/plus/OsmAndLocationSimulation.java @@ -84,7 +84,7 @@ public class OsmAndLocationSimulation { @Override public boolean processResult(GPXUtilities.GPXFile[] result) { GPXRouteParamsBuilder builder = new GPXRouteParamsBuilder(result[0], app.getSettings()); - startAnimationThread(app.getRoutingHelper(), ma, builder.getPoints(), true, + startAnimationThread(app, builder.getPoints(), true, speedup.getProgress() + 1); return true; } @@ -94,7 +94,7 @@ public class OsmAndLocationSimulation { if(currentRoute.isEmpty()) { AccessibleToast.makeText(app, R.string.animate_routing_route_not_calculated, Toast.LENGTH_LONG).show(); } else { - startAnimationThread(app.getRoutingHelper(), ma, new ArrayList(currentRoute), false, 1); + startAnimationThread(app, new ArrayList(currentRoute), false, 1); } } @@ -107,8 +107,7 @@ public class OsmAndLocationSimulation { } } - private void startAnimationThread(final RoutingHelper routingHelper, - final MapActivity ma, final List directions, final boolean useLocationTime, final float coeff) { + private void startAnimationThread(final OsmandApplication app, final List directions, final boolean useLocationTime, final float coeff) { final float time = 1.5f; routeAnimation = new Thread() { @Override @@ -148,7 +147,7 @@ public class OsmAndLocationSimulation { current.setBearing(prev.bearingTo(current)); } final Location toset = current; - ma.runOnUiThread(new Runnable() { + app.runInUIThread(new Runnable() { @Override public void run() { provider.setLocationFromSimulation(toset); diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index d22e27395e..e56297ddaf 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -548,6 +548,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { recordControl = null; mapInfoLayer.recreateControls(); } + recordControl = null; } } From 25abde3308e1b81349c409024acdb46c8594b933 Mon Sep 17 00:00:00 2001 From: xmd5a Date: Thu, 10 Sep 2015 10:32:04 +0300 Subject: [PATCH 32/90] Update phrases --- OsmAnd/res/values-ru/phrases.xml | 16 ++++++++-------- OsmAnd/res/values/phrases.xml | 30 +++++++++++++++--------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/OsmAnd/res/values-ru/phrases.xml b/OsmAnd/res/values-ru/phrases.xml index 98f8562560..5eeb0f0737 100644 --- a/OsmAnd/res/values-ru/phrases.xml +++ b/OsmAnd/res/values-ru/phrases.xml @@ -437,14 +437,14 @@ Шале Место поклонения - Храм, церковь (часовня) - Синагога - Мечеть - Место поклонения: сикхизм - Место поклонения: буддизм - Место поклонения: индуизм - Место поклонения: синтоизм - Место поклонения: даосизм + Христианство + Иудаизм + Мусульманство + Сикхизм + Буддизм + Индуизм + Синтоизм + Даосизм Монастырь Исторический монастырь Придорожный крест diff --git a/OsmAnd/res/values/phrases.xml b/OsmAnd/res/values/phrases.xml index d2924be6a8..94cdd9bbb6 100644 --- a/OsmAnd/res/values/phrases.xml +++ b/OsmAnd/res/values/phrases.xml @@ -627,24 +627,24 @@ Hunting lodge Place of worship - Place of worship: christian - Place of worship: jewish - Place of worship: muslim - Place of worship: sikh - Place of worship: buddhist - Place of worship: hindu - Place of worship: shinto - Place of worship: taoist + Сhristianity + Judaism + Islam + Sikhism + Buddhism + Hinduism + Shinto + Taoism Voodoo - Unitarian universalist + Unitarian universalism Multifaith - Jain - Spiritualist - Bahai - Scientologist - Pagan + Jainism + Spiritualism + Bahaism + Scientologism + Paganism Tenrikyo - Zoroastrian + Zoroastrism Catholic Baptist From 2aef26dfc9511fb166cf3f2c70a4e58d1be0e05c Mon Sep 17 00:00:00 2001 From: Alexey Kulish Date: Thu, 10 Sep 2015 11:21:58 +0300 Subject: [PATCH 33/90] Context menu code refactor, remove bold tag --- .../res/layout/map_context_menu_fragment.xml | 3 +- .../osmand/plus/activities/MapActivity.java | 9 +++-- .../plus/mapcontextmenu/MapContextMenu.java | 37 ++++++------------- .../MapContextMenuFragment.java | 28 +++++++++----- .../osmand/plus/views/ContextMenuLayer.java | 3 +- 5 files changed, 37 insertions(+), 43 deletions(-) diff --git a/OsmAnd/res/layout/map_context_menu_fragment.xml b/OsmAnd/res/layout/map_context_menu_fragment.xml index 8586c1d72a..de57a3aefc 100644 --- a/OsmAnd/res/layout/map_context_menu_fragment.xml +++ b/OsmAnd/res/layout/map_context_menu_fragment.xml @@ -62,8 +62,7 @@ android:layout_marginRight="12dp" android:text="@string/search_address_building" android:textSize="@dimen/default_list_text_size_large" - android:textColor="?android:textColorPrimary" - android:textStyle="bold"/> + android:textColor="?android:textColorPrimary"/> Date: Thu, 10 Sep 2015 02:42:31 +0200 Subject: [PATCH 34/90] Translated using Weblate (Argentinean Spanish) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-es-rAR/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index f0cd548138..9b019cecda 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -862,7 +862,7 @@ Almacén de jardinería Marroquinería Neumáticos - Relojería (watches) + Relojería Juegos Modelos a escala Trofeos, premios From 2752d25b472643a7a7257b13134658b5dff3fd22 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Thu, 10 Sep 2015 10:45:49 +0200 Subject: [PATCH 35/90] Translated using Weblate (Danish) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-da/phrases.xml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index 4c3a20a162..ae8ab18253 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -355,14 +355,14 @@ Udlejningshytte Sted for tilbedelse - Sted for tilbedelse: Kristen - Sted for tilbedelse: Jødisk - Sted for tilbedelse: Muslim - Sted for tilbedelse: Sikh - Sted for tilbedelse: Buddhist - Sted for tilbedelse: Hindu - Sted for tilbedelse: Shinto - Sted for tilbedelse: Taoistisk + Kristendom + Jødedom + Islam + Sikhisme + Buddhisme + Hinduisme + Shinto + Taoisme Kloster Historisk kloster Vejside kors @@ -1080,7 +1080,7 @@ Finansiel kontor Fondskontor Voodoo - Scientolog + Scientology Katolsk Baptist Romersk-katolsk @@ -1117,11 +1117,11 @@ Koptisk-ortodoks Mahayana - Unitarisk universalistisk + Unitarisk universalisme Multireligiøs Jainisme - Spiritist - Bahai + Spiritisme + Bahaism Hedenskab Tenrikyo Zarathustrisme From 6fc80bf5c2cc2193ad9ae0fe4518cfef79062960 Mon Sep 17 00:00:00 2001 From: Alexey Kulish Date: Thu, 10 Sep 2015 12:16:21 +0300 Subject: [PATCH 36/90] Make Context Menu links clickable --- .../sections/AmenityInfoMenuBuilder.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java index c01f31cc34..0d2e04e57b 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java @@ -1,6 +1,9 @@ package net.osmand.plus.mapcontextmenu.sections; import android.content.res.Resources; +import android.text.SpannableString; +import android.text.method.LinkMovementMethod; +import android.text.util.Linkify; import android.util.TypedValue; import android.view.Gravity; import android.view.View; @@ -58,16 +61,22 @@ public class AmenityInfoMenuBuilder extends MenuBuilder { // Text LinearLayout llText = new LinearLayout(view.getContext()); llText.setOrientation(LinearLayout.VERTICAL); - LinearLayout.LayoutParams llTextParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); - llTextParams.setMargins(0, dpToPx(4f), 0, dpToPx(4f)); - llText.setLayoutParams(llTextParams); 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, dpToPx(8f), 0, dpToPx(8f)); + textView.setLayoutParams(llTextParams); textView.setTextSize(18); // todo: create constant textView.setTextColor(app.getResources().getColor(light ? R.color.ctx_menu_info_text_light : R.color.ctx_menu_info_text_dark)); - textView.setText(text); + SpannableString spannable = new SpannableString(text); + Linkify.addLinks(spannable, Linkify.ALL); + textView.setClickable(true); + textView.setMovementMethod(LinkMovementMethod.getInstance()); + textView.setLinksClickable(true); + + textView.setText(spannable); //textView.setText("sdf dsaf fsdasdfg adsf asdsfd asdf sdf adsfg asdf sdfa sdf dsf agsfdgd fgsfd sdf asdf adg adf sdf asdf dfgdfsg sdfg adsf asdf asdf sdf SDF ASDF ADSF ASDF ASDF DAF SDAF dfg dsfg dfg sdfg rg rth sfghs dfgs dfgsdfg adfg dfg sdfg dfs "); LinearLayout.LayoutParams llTextViewParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); From 50ce1f7ccad65a6ce11ccd37eb7a512ae54a44c8 Mon Sep 17 00:00:00 2001 From: Adriano Rosa Date: Thu, 10 Sep 2015 13:45:35 +0200 Subject: [PATCH 37/90] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-pt-rBR/phrases.xml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/OsmAnd/res/values-pt-rBR/phrases.xml b/OsmAnd/res/values-pt-rBR/phrases.xml index e67e63be2d..d81d2ed788 100644 --- a/OsmAnd/res/values-pt-rBR/phrases.xml +++ b/OsmAnd/res/values-pt-rBR/phrases.xml @@ -517,14 +517,14 @@ Pavilhão de caça Lugar de prática religiosa - Lugar de culto: cristão - Lugar de culto: judaico - Lugar de culto: muçulmano - Lugar de culto: siquista - Lugar de culto: budista - Lugar de culto: hindu - Lugar de culto: xintoísta - Lugar de culto: taoísta + Cristianismo + Judaísmo + Islamismo + Sikhismo + Budismo + Hinduísmo + Xintoísmo + Taoísmo Acesso à Internet: wlan Acesso à Internet: terminal @@ -1064,18 +1064,18 @@ Voodoo Multirreligiosa - Espiritualista - Bahai - Cientologista - Pagão + Espiritualismo + Bahaísmo + Cientologismo + Paganismo Zoroastrismo Católica Batista Católica romana Ortodoxo - Unitário-Universalista - Jainista + Unitário-Universalismo + Jainismo Tenrikyo Luterana Sunita From d66283e4b65414c06399ac32c620b3d4a24e80ed Mon Sep 17 00:00:00 2001 From: Dmitriy Prodchenko Date: Thu, 10 Sep 2015 14:50:31 +0300 Subject: [PATCH 38/90] Fix 9 Patch shadow. --- .../drawable-hdpi/bg_shadow_gorizontal.9.png | Bin 1086 -> 1129 bytes .../drawable-mdpi/bg_shadow_gorizontal.9.png | Bin 1066 -> 1107 bytes .../drawable-xhdpi/bg_shadow_gorizontal.9.png | Bin 1083 -> 1126 bytes .../bg_shadow_gorizontal.9.png | Bin 1088 -> 1129 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/OsmAnd/res/drawable-hdpi/bg_shadow_gorizontal.9.png b/OsmAnd/res/drawable-hdpi/bg_shadow_gorizontal.9.png index d2782c1642f06c7f2d2b44c7de2ef30b39806503..565d269a80622770f8f5a05bea9123674eaaa360 100644 GIT binary patch delta 303 zcmdnT@seYLIF~X98v_Hwk}7Ml=hK7c&rWS_Ij&6>|=5D4I zZieQD7L)6kWMGP1aVpxyl%ir{Y?5eVVU(n6Y+`1tn`UBSp_^oulBAnzYG{^ZXl{~} zY@RgPiMgr%O>p~qpc6VhT^vIyZoRo;&DWqH;2P-makKRI{l{=^ku#F_IU>mvHR%E*?qXRRhz5WaA)wz zvu4WK(s@@l7XJSbePQ|=v(p_>{nj=cb)GQf?R*|7`=)w{+QXBFZpg;z_~=~G6V{d3 c$tuCXCa*Z{wd+M^psN@>UHx3vIVCg!00iu5&j0`b delta 226 zcmaFKv5#YdI2RuW8v_G_yoc_^jf%ER3NEg0&X%U;PNrsVmWGC|rjC{_ZkFcG&X#88 zjz*@ImXqt4WMGOMaVpxylrmY4No}$Vb3@h9SAHBo8{#}&978H@EtzB~)L_8Ftg9xI z|KNZB5~m|RKKmVA)y|$%+m>RjV(DPD*rw^(RNlo3FU;O8y2K>TaWC_fzns9HQ#W2T z)HQ3f70H}y#JsYa_*S07|Hp1DWt!JM2mjCvWzL|M1?5$jefYs{29-#dUp00i_>zopr E0L$iKssI20 delta 206 zcmcc2v5I4YI2RWO8v_GFuhIFv8x?Jt6kN^Rj7$uiEKJSZEDa4^O)Xsvj4WJCE!-?k zOdL%e9Vgc@$-oqu<5aYZDP^)8liFk#=7uy4?<>7P8@xPS978H@CH?vT-=0}n`Efm) z4a17IiL9s6QWO{xxMp&!_|0y_nW8Jr*t$PKZIe*8sq{uJOAalTN?DF69lUaRPHIL% e(hnFI*%-9N#Up>sbC?A*mBG{1&t;ucLK6UVKRKcR diff --git a/OsmAnd/res/drawable-xhdpi/bg_shadow_gorizontal.9.png b/OsmAnd/res/drawable-xhdpi/bg_shadow_gorizontal.9.png index d27ed3530aed31685f8b92fc7208e76660256e2a..b528b2f6d43f0a89ecb8c45f8ac3cef78413d1d8 100644 GIT binary patch delta 300 zcmdnZ@r+}FIF}v=8v_G_YME!_MnzjD1p`M{OBZu9XH#=0LqkJXQ%eJ9M@u6^6Jt{& zLsw@vgUNMFGB8C>I2G+;N>MQ}Hc2$GFiO%jHZe2SO*1jE&`mN+NzzRt&GS9Wgx!#LZhw5n0< zkHRXiGiyY&r~Qj)60j9umu)Rcxqtb=;)4rJWmO(KMO$U~GymLF)w1FE$@C*h8hfN# zZf)fB&2X}BU6LNO(Wg-*h4;Su-wUfcF7D}j5ZT;#Pj>EOWv6hf6}{YKgALl Y+FF&4zkW2e8|WkkPgg&ebxsLQ03SVT)&Kwi delta 223 zcmaFHv72LpIF}Fy8v_GF*tx#&jf%ER3N99oCME`EMy6(NmWGC|rcRcw29}P-mX3zz z#zw}5hLh`=S9fBUsJlwD#(LKBL~df!?{g xY*Ts9ewO0OH_gPvLO01QB}q5c)X*%+(A*>` z**s~o6LVAjp_e!6fllc3ba4!+xb^17McxJj4%fgHI#2$sUKz0{)`8jV*{7@fg=ewF zt$L@o>eZx(y8*k;`%cPsnDwSYRK;QaLN=BVK3#{)&Tj4wRjnfaciks$y5!y;a@Ilt z0v2d0cKckgTe~DWM4fGxcai delta 228 zcmaFKae!ljIF}R$8v_HwN-v*t8x?Jt6kLpr3{6~JoK4N#EDa4^O)U&uE!|8UjSS5# zT+NM54JX$z$-opj;Z(GXDP^)8liFk#=7yTa2h;6=HY9kuIEGZ*dUMT??|=aZv%~Jr zEBasl??3Z|ZDp|a Date: Thu, 10 Sep 2015 14:57:28 +0300 Subject: [PATCH 39/90] Fix 9 Patch on shadow 2. --- .../drawable-hdpi/bg_shadow_gorizontal.9.png | Bin 1129 -> 1129 bytes .../drawable-mdpi/bg_shadow_gorizontal.9.png | Bin 1107 -> 1119 bytes .../drawable-xhdpi/bg_shadow_gorizontal.9.png | Bin 1126 -> 1131 bytes .../bg_shadow_gorizontal.9.png | Bin 1129 -> 1129 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/OsmAnd/res/drawable-hdpi/bg_shadow_gorizontal.9.png b/OsmAnd/res/drawable-hdpi/bg_shadow_gorizontal.9.png index 565d269a80622770f8f5a05bea9123674eaaa360..88b4deb8b4d35977fbf771200f0f908a0817b7c1 100644 GIT binary patch delta 129 zcmaFK@seXh9Fx3(k-4F{o1wX>xs$P>p{uEdvzeo-n~9ORnWdY7iP7X*CRvyoGhAwR zGNq~*rWmFqrzTqJniv?F=^7`SB!z8QSm-91r6lR5ni`rV8Je3UC7UNrc4BT~c@x~ee)0+C Fg#c-@BS`=N diff --git a/OsmAnd/res/drawable-mdpi/bg_shadow_gorizontal.9.png b/OsmAnd/res/drawable-mdpi/bg_shadow_gorizontal.9.png index 01cd5de5f8eb2107ca40765635eb4379bd90002d..dd1cc207dfc5433773dbc14429f12ba8dc9b3eff 100644 GIT binary patch delta 279 zcmcc2ai3#D9Fu~9g_E1JtEH)_xs$P>p{uErk)fNjo0+SztDB>%ftl&#Iwl#IA`_g7 zb}^->7^WDeB&Q}?>Y5lBndurQn-3Lm^SSACwVArO~z5y1F;Xe9xS`SJVS(yLHVS1?WC6HYC``7oH`k{scU^< zP`mCv;~>Y`=ccn6&#d=*xbGoQySYqpPyW;wA_)u&o>hL{tCblDbPI#0tDnm{r-UW| DZtrAC delta 267 zcmcc5ahYR79Fu~nsez-pv8$7*xs#!xp{uEri@CFlrMZQTi;MH*Iwl#IB1fEx zb}^->m>8QRnphYm=^C4u8SAE*m{{m0nWZG@rkWa>B^jEVBqf_CO?F~#syFgBKEuGk zQ0(dA7*cWT$z(^a1_K@z;k8P?#Qy&`>W(l_n^3X&=I)(a+7)#!>vnS(ZVss5@gvp8 z!Res&ftBu=d&C~h$yvjwmvKy#bvsYW>8#~H|Fm5B?C{`^u+F=p@bCcn{*uM!d(=#; r@Beb~E?k)4eY^Re(~ZZ<2N=rU%4G;xtq$w~+RxzW>gTe~DWM4fYO7y= diff --git a/OsmAnd/res/drawable-xhdpi/bg_shadow_gorizontal.9.png b/OsmAnd/res/drawable-xhdpi/bg_shadow_gorizontal.9.png index b528b2f6d43f0a89ecb8c45f8ac3cef78413d1d8..24cd01922deb7638e40d1c8ea04d1d79ff0a7596 100644 GIT binary patch delta 291 zcmaFH@tR{p9Fu~Zv$3nOxr>3Rxs#Ehp{uErn~{;5v$>&-Poz6Jvh)_{GBo`3x3zB;O9iBx*xfn{^8_BsgHHFgLvDBfq>e)>tv zi?#-RG7` zuuc8{&DTW2t+E8~h^-a6IBV|Ro!5?NIK1!bt6OL+8}hqV#nshn^$r#Zh9qCrBeR#h RDhIlY!PC{xWt~$(695Iwl#IA}5@R zb}^->m>8QRnphYm=^C4u8SAE*m{{m0nWZG@rkWa>B^jEVBqf_CO?F~#s&BpYVi5xa zLz}0IV@SoVH`fgL8VopC0|LI-?EQanm6+nn&dq-qXB(APHLCqlSmkwQjfnQNe-TXr zwgT+3ttBbgTe~DWM4foI`1| diff --git a/OsmAnd/res/drawable-xxhdpi/bg_shadow_gorizontal.9.png b/OsmAnd/res/drawable-xxhdpi/bg_shadow_gorizontal.9.png index eeb3dbfad657dc6e34bc16312401308cf1d07155..f55e3035deeca16b5667328cbe96f7c072851e4e 100644 GIT binary patch delta 129 zcmaFK@seXhJd?bstE;o4vy-X0laZmJtEr=tvzwE%shOFhsgZ%3lgZ>dCRwN&N1SSQ zF{P*&rWmFqrzTqJniv?F=^7`SB!z8QSm-91r6lR5ni`rV8Je3UC7UNrc4BT~IrQ>I{p1tO F3jsI1BQgL0 From 8cbbf1f0d460012b2ea5ffdc6013105a9f0c712d Mon Sep 17 00:00:00 2001 From: ezjerry liao Date: Thu, 10 Sep 2015 14:51:57 +0200 Subject: [PATCH 40/90] Translated using Weblate (Chinese (Taiwan)) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-zh-rTW/phrases.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OsmAnd/res/values-zh-rTW/phrases.xml b/OsmAnd/res/values-zh-rTW/phrases.xml index 503b0827ef..e14e86fde8 100644 --- a/OsmAnd/res/values-zh-rTW/phrases.xml +++ b/OsmAnd/res/values-zh-rTW/phrases.xml @@ -508,14 +508,14 @@ 狩獵小屋 宗教場所 - 宗教場所:基督教 - 宗教場所:猶太教 - 宗教場所:回教 - 宗教場所:錫克教 - 宗教場所:佛教 - 宗教場所:印度教 - 宗教場所:日本神道教 - 宗教場所:道教 + 基督教 + 猶太教 + 回教 + 錫克教 + 佛教 + 印度教 + 神道教 + 道教 網際網路存取:無線網路 網際網路存取:終端 From 326de731b3d9b862e8c249e47d98ee2193b36aec Mon Sep 17 00:00:00 2001 From: Dmitriy Prodchenko Date: Thu, 10 Sep 2015 16:34:43 +0300 Subject: [PATCH 41/90] Context menu dots with shadow. --- .../bg_contextmenu_dots_light.9.png | Bin 0 -> 2105 bytes .../bg_contextmenu_dots_light.9.png | Bin 0 -> 1728 bytes .../bg_contextmenu_dots_light.9.png | Bin 0 -> 2504 bytes .../bg_contextmenu_dots_light.9.png | Bin 0 -> 3264 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 OsmAnd/res/drawable-hdpi/bg_contextmenu_dots_light.9.png create mode 100644 OsmAnd/res/drawable-mdpi/bg_contextmenu_dots_light.9.png create mode 100644 OsmAnd/res/drawable-xhdpi/bg_contextmenu_dots_light.9.png create mode 100644 OsmAnd/res/drawable-xxhdpi/bg_contextmenu_dots_light.9.png diff --git a/OsmAnd/res/drawable-hdpi/bg_contextmenu_dots_light.9.png b/OsmAnd/res/drawable-hdpi/bg_contextmenu_dots_light.9.png new file mode 100644 index 0000000000000000000000000000000000000000..250f187cd7137f767fba8108a22e237c21ee8c82 GIT binary patch literal 2105 zcmbVNYg7|w8V;a9xoBZkM5xAqpp{%nCNoJ8kPwIvU<0m+P!A!QK-6TyWQ2fOizr(t zZ7HQ(Jj&8`$;xhv5F`rJR<2S?6a?yp1r>@YE68@CvK4W6g5vHEPk-#3GxL4l%=1 zmI{kunIbE_2j&q7b{VP!2__LmbL5DcBD301^lB}RCJ=bRdaX=;2*!vhaH>iZM4J8j zGKr{C1d;Z!L^P2$3{F!;W}|R?c1(gi`;Z(`kb-v+d3p{`poTFSQLjF%(Q))aq-9e4a2k?Dm61Rlad)oLC{nx9fBY#jX`BF$hZYrm!-jE zda_36v%7Pee<;`V(ijRMKk?XZ^VMbvy4Rb{{m0g9-J%X#LgUZa7oq=7I^29lM5 zN;;XzU;<=_hR4r>X)GDQfMK};B)!Bd{@?sjaZyxjv;0r3-^JSVPm34~QrAwM)hKRkV=FUl))U3aSA`O}hsT(X;Qes1z`l=0s6Cvo+0h$yP= z!sbisR3DM`JM!*iKNNm56ij?_V|Vr0?6vbm{+j{rRMYxZZOp6JGW?VsSViTi2=FSg zoQP1q+c~{xIX!#nR89W{HDPPx@#J~ls?CDC4)(VfjYA|HWTgmS&ecp7!CS=RZ&d*&&bhq2HHUb83Mw+RX^VrXjh+6E*-g!@!)4jE= z?08=Lks5uhKez1(h&cEEa^WkVWNv?Ye!Yw^TV}aMX_kX=Tm#*!MDfR4T)txMCMHATp1i3ESQ;@>F!aW^bLi^sb;Tz zSmMM*SlWd)KigK)W7q|PHI6=RO(AQOsycE|+jo3d6@FV^Pirune|D1_>dJxYgXZA{ zqtW<7Wo2bx#`g3B+4;2nJoeWH8;|6$f|KB9uH8|_0f#}R$I*0;`u(-XL`Jc6_*rkW z-I?;uq~h({v_tLu0^UUDcMs+kj;;p+pH3G^Tt1v=Yd4(qEiIpg9HF?;Xw%2V?SDLV zsu|#N7wzYpOdBNuoBQ`VbEllVvI2UG`wmv`@NZ6f>^XC`=YYetl+R4O`wI7?2?xG& zc;=_A{zpaB?>}69OP`emK>+Zip_I_q*Vp#^`LR(c_pgfy0=X2X|3q)eiE!!}TS5n_ zzwunSMRhx$bjDXS84(e2sDM8%+}TE_HSTWuYA@X$10&F?^1W}Dj&yc*{_RSqv^4q) zzStDm%m4oA+VQ`q2TX-dmt7tIX>xK>?ZmZvYLP@gdi3aGf@v{%QXkk6VL12pFR}?k z1;k{23i5a(A&#SJ77ds#Dk^$(_ctFE6`dFx8;g8ACqMad`_RzP_g!7##^U>CLD`pk z_)@8Ul5ly-CTVE?-@b5W=EByu8fHVcc$L=NoSU1=DsLGP{f>X{vbT^PG@^w7T*A5d zThjgq0=c0p<-XiQzi}4`Y=ax}T98Qa^eQQi?EPG&T-ajTLSNX44|BfHs zV;$=*oxk&b>iOI2@|J8}@=X${g?EBr88`gl?i+C%0RL;^zcdQU+t#)cq~`rgWqXWw zgnrS%@L190g6>$RtJ!SMHWy!cvsQI)Q*iZ97`2N%OV z)mBEb?>)z<)o1PR^tC!HZMn*C8NwEeLWVgVi&X?Wg4ozM>*{@Juk~jx43FWT+nt>I EALi>(xc~qF literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-mdpi/bg_contextmenu_dots_light.9.png b/OsmAnd/res/drawable-mdpi/bg_contextmenu_dots_light.9.png new file mode 100644 index 0000000000000000000000000000000000000000..52c58950a3b559a409ac2ff1b2a9bec682115811 GIT binary patch literal 1728 zcmbVNX;2eq7)~ffAx#kltxl`k#c@PUb`x@KB*9#0l!VA3;jp?S8t%v=6c^@p@9Pi544hD;xD<*e%ii2weg1B3?Edd1Y-2;#yl7!mWs#V{8be?ZEb z!)Ox6Dx=12QIZ5SlcZe?K~ATW?F?t*j&z8FAP59=Aug9iAy`C?jYM568xcC8L5UFt zhs91>a2w#&h^FCLqy(fqeG`J!uF~MFh9Rrf8`l_`AY-wA-FPRO zh|jTOP%K8^Sq=kL4^!v_nabV!4S9i-H{uwFg(?b~sl*LgR?J4Kl@gG;VH+(*F)G0L zCXtBG67dZJ7GJlIHfD@+;8tKP&tl6veBhX15eB0omMPrCVez;;0Sket`1u&j zM+ICAGZ;nSIN$hx^9NB*LEdKhPxDM1Q61^sz8wWhcsop(jhY|_H7bEmNmC~iO zt^SPzA<+P5k-pSCs_%?y41O5BuMu&YS3tbNT|2%b#jJZTo<|b*X$^}QXfeyTxEsBD z_JQY;w509#(00B6thM@Y+|WIA!Nc=}cOT!|Ii23m>;MK>WkgZrtv_60wNVY5vWU8} zpBcOeF>*2>qR&T9FAcB@N8RqP>hjMbNiSP>u9}Er)wQ zioWAcZcNp#`ss@2WbLiWVNd&-Yh^86o~K8XYepJ+%*9JGJ!}0lQ?FjDKCfHtS2Lri zEu+iybXxP!$n5fO>JG#X%BnB_C5!QVntNtLSV-gX&FzfjBbtz^`tFxiw}xA`w57$2 zTq)@?9S!Wu9ASR;>UKX-IaOB6lJsy{c1a&T)j7ck7nMqW63p{`R>}91XR9lDEn`zJ{$f* zc(ABOMfe0iN_17|PJDmSv*x+FMF|!JtLj4-56gGdyY#8BHY{(?5ZD~YP6?(D);Ley zT*^C?{-Cwk)Nv}6{bx|TV_Mbdfd$%}7RCW)|H`k|9gF?(Mpf(f9{Q}JqP9tQvIaQr zUS~vkP|DDNeRSLO`Z&@ZwRhLWJ<<31x}3rN&t~*AuZ?^ye-YUJO1)Ayd1&&6O;Y)s ziq|=z`_IkU-Z4;cu=T{%M@cB%)YQXiR;YaE`227I(S^mSPeRp~PDQcBgSu0;#_z(TAnW+E( literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xhdpi/bg_contextmenu_dots_light.9.png b/OsmAnd/res/drawable-xhdpi/bg_contextmenu_dots_light.9.png new file mode 100644 index 0000000000000000000000000000000000000000..dc951cfa6f815b1ce39cf0df180b9d2d8195d813 GIT binary patch literal 2504 zcmbVOX;f2L5)O-?U|2*zHi=R>;frN_kr1|Gk;N7z%P4R#(vL?Fh=YPY8x~4GB??R#DwQQhVUTE) zK(KPI586^01NcuEU(}X{rHKI)1CWZ6B^hP+e42aCc=q=`7m z0zfG9r%~YG7bKU@C9?SLqNoHvGF7}25M+=9q)L@_G{~|w)BZHCu++z|%47XpnATl=Wo0o*ha2{=q05Fvlba-=@pI!Q9&B2{WcMX#* z0jG3h`ueO&hrC~oz)od)-r16QRK4z5z19ujBC-uhM#^El@Ukf0o{N9Zq3@tE=->H1FAL;10 z4iSH7Zg|J+&oPMBiE2G&-`l(`vG!gO9nGXqF2S_69uGrkI&a5k&4yWE^?Np0x2=!U zRrEP-7{lHrbz>T*2b?vPmi5t-;Q=9S>usL;6^1L!^)v0L36BOJ4nrP_p}*Hb5(?kY|$Sg;SA&yF#Z)#ep3=~Ht)Nv_|VRa=LmwNxUba6BuclAb@Y>t5TV zE}$stF9hj>p&PCCcE7l*5Y`H+MlwO+IG+(g|ttBWaYo}KM#?zY5 z2L}hIoSyfE_`TS(`1tW-{cm?`bIeC9Y5WU;HVAP`b=Liwy|1&U=|14!^Mp1#y<%HQpd z4y{f~hmukRQGtBBl-4I$_%^6V_8C+%trcW+%<(*fq;K>-wd>zAi*Y%dj^78UEa~{;F;^N}dK6SK< z#WyCca@OGxyy)M4-hQ_&QzQ^{08vBv{m%J->Ro_Jr4p@$xL4vqe`@_1I#qTe1H8=EZm=1ov2bU&6rcy|I)XO|_s_cJQ@=CDo9+r(l8?#J{~ z9UUEE(b1|yrWHAap17lGgHl~x-H4MKWxT=0vm|^+Ugx*{a=dfgnG&?av_he{J~K08 z`^}ptXX{$eo12-{OioQ1LcMOy{IeK@iPuz-o6?J!v^x5J&Yis7$(a8BphL;m6zZ0Pkh*&&1>?R#7gK}5`SF084{zt? zU|uj(EpQCYKd z^dWB}+*qf7Y`Q2j#rpT5^_e<&L!PR2%Z4$Y5z$h+(n~`dx*X_gUy0D46F_)IXN4g- nSt-l+4C>NeJk48*$kc%RE~-)V9jtl2a<}rQ2h+}b$7TN;a)bso literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xxhdpi/bg_contextmenu_dots_light.9.png b/OsmAnd/res/drawable-xxhdpi/bg_contextmenu_dots_light.9.png new file mode 100644 index 0000000000000000000000000000000000000000..71aed527a365b8840af0103e9a1c2ea81d1b21ca GIT binary patch literal 3264 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 literal 0 HcmV?d00001 From 7300cb4d38ddf46fbcc2c2f098e74225cdf3f19e Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Thu, 10 Sep 2015 16:39:03 +0300 Subject: [PATCH 42/90] Poi editing screen dark theme design fix. --- OsmAnd/res/layout/fragment_edit_poi.xml | 8 +-- .../res/layout/fragment_edit_poi_advanced.xml | 6 +- .../res/layout/fragment_edit_poi_normal.xml | 4 +- OsmAnd/res/layout/open_time_list_item.xml | 8 +-- OsmAnd/res/values-ru/strings.xml | 2 +- OsmAnd/res/values/strings.xml | 1 + OsmAnd/res/values/styles.xml | 12 ++-- .../monitoring/OsmandMonitoringPlugin.java | 64 ++++++++++++------- .../plus/osmedit/AdvancedDataFragment.java | 2 +- .../plus/osmedit/BasicDataFragment.java | 32 +++++++--- .../osmand/plus/osmedit/EditPoiFragment.java | 2 +- 11 files changed, 82 insertions(+), 59 deletions(-) diff --git a/OsmAnd/res/layout/fragment_edit_poi.xml b/OsmAnd/res/layout/fragment_edit_poi.xml index c37d1c7e40..8b1ddc8626 100644 --- a/OsmAnd/res/layout/fragment_edit_poi.xml +++ b/OsmAnd/res/layout/fragment_edit_poi.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="?attr/bg_color" + android:background="?attr/spinnerListBackground" android:clickable="true" android:orientation="vertical" tools:context="net.osmand.plus.osmedit.EditPoiFragment"> @@ -97,7 +97,7 @@ android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="?attr/pstsTabBackground" + android:background="?attr/bg_color" app:layout_scrollFlags="scroll" app:tabIndicatorColor="?attr/pstsIndicatorColor" app:tabSelectedTextColor="?attr/pstsIndicatorColor" @@ -117,7 +117,7 @@ android:id="@+id/buttonDivider" android:layout_width="match_parent" android:layout_height="1dp" - android:background="@color/divider_color"/> + android:background="?attr/dashboard_divider"/> diff --git a/OsmAnd/res/layout/fragment_edit_poi_advanced.xml b/OsmAnd/res/layout/fragment_edit_poi_advanced.xml index 70cb7efce5..f58e76031b 100644 --- a/OsmAnd/res/layout/fragment_edit_poi_advanced.xml +++ b/OsmAnd/res/layout/fragment_edit_poi_advanced.xml @@ -40,7 +40,7 @@ + android:background="?attr/dashboard_divider"/> + android:background="?attr/dashboard_divider"/> + android:background="?attr/dashboard_divider"/> + osmand:theme="?attr/new_app_theme"> - + + android:background="?android:textColorSecondary"/> + android:background="?android:textColorSecondary"/> + android:background="?android:textColorSecondary"/> + android:background="?android:textColorSecondary"/> diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index a4483eff7e..a630669509 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -843,7 +843,7 @@ Произошла неожиданная ошибка при выполнении действия {0}. Произошла ошибка ввода/вывода при выполнении действия {0}. Произошла ошибка при загрузке информации о POI - Имя + Название Время работы Комментарий Изменение POI diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 045e750dda..a54367adb0 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -2260,4 +2260,5 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A Working days Recent places Favourites + Successfully saved at: %1$s diff --git a/OsmAnd/res/values/styles.xml b/OsmAnd/res/values/styles.xml index bb32c32229..4454e757d9 100644 --- a/OsmAnd/res/values/styles.xml +++ b/OsmAnd/res/values/styles.xml @@ -130,21 +130,17 @@ diff --git a/OsmAnd/src/net/osmand/plus/osmedit/EditPoiFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/EditPoiFragment.java index 611d33e2f7..86b5788320 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/EditPoiFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/EditPoiFragment.java @@ -117,6 +117,10 @@ public class EditPoiFragment extends DialogFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fragment_edit_poi, container, false); + final OsmandSettings settings = getMyApplication().getSettings(); + boolean isLightTheme = settings.OSMAND_THEME.get() == settings.OSMAND_LIGHT_THEME; + if (savedInstanceState != null) { editPoiData.tags = (LinkedHashSet) savedInstanceState.getSerializable(TAGS_LIST); } else { @@ -151,8 +155,6 @@ public class EditPoiFragment extends DialogFragment { editPoiData.tags.add(tag); } - View view = inflater.inflate(R.layout.fragment_edit_poi, container, false); - Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); toolbar.setTitle(R.string.poi_create_title); toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha); @@ -200,7 +202,9 @@ public class EditPoiFragment extends DialogFragment { onlineDocumentationButton.setImageDrawable( getMyApplication().getIconsCache() .getPaintedContentIcon(R.drawable.ic_action_help, - getResources().getColor(R.color.dash_search_icon_dark))); + getResources().getColor( + isLightTheme ? R.color.dash_search_icon_dark + : R.color.inactive_item_orange))); final ImageButton poiTypeButton = (ImageButton) view.findViewById(R.id.poiTypeButton); poiTypeButton.setOnClickListener(new View.OnClickListener() { @Override From e12fa76d3b6c42ca607010f416e1d3c2cd7cdc4d Mon Sep 17 00:00:00 2001 From: Catalin Pop Date: Thu, 10 Sep 2015 16:06:00 +0200 Subject: [PATCH 48/90] Translated using Weblate (Romanian) Currently translated at 77.6% (1374 of 1769 strings) --- OsmAnd/res/values-ro/strings.xml | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-ro/strings.xml b/OsmAnd/res/values-ro/strings.xml index 93f37b4b82..06020f0c07 100644 --- a/OsmAnd/res/values-ro/strings.xml +++ b/OsmAnd/res/values-ro/strings.xml @@ -1678,10 +1678,33 @@ Implicit(cyan transparent) Culoare GPX Pluginuri - Evita transfer tren + Evită transfer tren Pericol - Evita transfer tren + Evită transfer tren Nu sunt disponibile update-uri. Lățime GPX - Update-uri în timp real - + Update-uri in timp real + Bold contur + Locații + Fișier GPX cu notări locații + Roșu + Roșu transparent + Portocaliu transparent + Galben + Galben transparent + Verde deschis + Verde deschis transparent + Verde + Verde transparent + Albastru deschis + Albastru deschis transparent + Albastru + Albastru transparent + Violet + Violet transparent + Pentru a aplica modificările, este nevoie să restartați aplicația. + Deschisă + Închisă + Piemontez + Bengali + From c8e52add17558f8e3eb90df91a6bc1144553275a Mon Sep 17 00:00:00 2001 From: Catalin Pop Date: Thu, 10 Sep 2015 16:06:17 +0200 Subject: [PATCH 49/90] Translated using Weblate (Romanian) Currently translated at 77.6% (1374 of 1769 strings) --- OsmAnd/res/values-ro/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-ro/strings.xml b/OsmAnd/res/values-ro/strings.xml index 06020f0c07..eae9b1a111 100644 --- a/OsmAnd/res/values-ro/strings.xml +++ b/OsmAnd/res/values-ro/strings.xml @@ -1707,4 +1707,5 @@ Închisă Piemontez Bengali + Sărbă-Croată From b57ab84234ed3a437569735eede5a4f5df4349ff Mon Sep 17 00:00:00 2001 From: Adriano Rosa Date: Thu, 10 Sep 2015 16:23:30 +0200 Subject: [PATCH 50/90] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (1769 of 1769 strings) --- OsmAnd/res/values-pt-rBR/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index 606052bd46..47ae648ac8 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -1817,4 +1817,5 @@ Locais recentes Favoritos apagar - + Salvo com sucesso em: %1$s + From b344049992194e25fa23694a5e282406331606e7 Mon Sep 17 00:00:00 2001 From: Dmitriy Prodchenko Date: Thu, 10 Sep 2015 17:54:38 +0300 Subject: [PATCH 51/90] Adding new 9patch shadow for dark context menu theme. --- .../drawable-hdpi/bg_contextmenu_dots_dark.9.png | Bin 0 -> 2037 bytes .../drawable-mdpi/bg_contextmenu_dots_dark.9.png | Bin 0 -> 1676 bytes .../bg_contextmenu_dots_dark.9.png | Bin 0 -> 2472 bytes .../bg_contextmenu_dots_dark.9.png | Bin 0 -> 3241 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 OsmAnd/res/drawable-hdpi/bg_contextmenu_dots_dark.9.png create mode 100644 OsmAnd/res/drawable-mdpi/bg_contextmenu_dots_dark.9.png create mode 100644 OsmAnd/res/drawable-xhdpi/bg_contextmenu_dots_dark.9.png create mode 100644 OsmAnd/res/drawable-xxhdpi/bg_contextmenu_dots_dark.9.png diff --git a/OsmAnd/res/drawable-hdpi/bg_contextmenu_dots_dark.9.png b/OsmAnd/res/drawable-hdpi/bg_contextmenu_dots_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..7d383cb35f26979d21ccb45ec4b734988867bbab GIT binary patch literal 2037 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 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xhdpi/bg_contextmenu_dots_dark.9.png b/OsmAnd/res/drawable-xhdpi/bg_contextmenu_dots_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..275af4ae9294309d963c96587391c24380685ac8 GIT binary patch literal 2472 zcmbVOdpMN&9v^pIrsR-a8BL=HEpuhAk;}{&b2Md#by<`#^D>i}dB@BfgK{~F)rwjr zvqacUlnpVPrBIw)Hq;Sit?sR2lHzos+E=A>p7ZqVALo6Z_xJmKfA8n>y?>wQ&Gz5I zK`ymkia;QcTwfL+-jm?h+te6d3l$gE!`tT&I|K>BWK?(*QpOBD%OK`z~${0M6PN(AuBs__Pg%Ma)q8t*av2vB& zq6QYA5-KGMNCL{y3mOGc;7-UL1AF>D1et=z`>0s1`j99%Wq7qffhXb!c$sV=u6Jk^ z#0UQ4#wXFLz(fUr=L0Hmr&0*lBie3}4Cn5z4J`m+Zx~yZ61XS=DGLf->~GJToMp@PQB|BvB}28a675 zLcvm^TuE3uRY1Z2t+pHHPKp zoD~-9)}NrE^~_Dye{E=P?w>o4Dn4-biIqk6SXWu4ZCbTQntt`!FCDaJE=~?jY<74S zt7|+L+j`pddrjldv*-I;s4k$k^ALXz@wl&9b8ctsWU}et#=WOD^Xod01Lx*nXONP_ zcoWlZ(?B=GfjIo_eA_mj{+j3M!;jE+67rfnu&>HF(~cQ z`szH3lF~1vR|Q?9!e7dtzHv6F+~t>}Y zUH4dpn$#Z4$9WG~<|q8oSy5#lZW7*ZGpY8Z9o>UU*K!M{D(2NG;YOOQapiEhfs|8+ z={Hwsr~&Qyz=4bPPKh|8weMTp!NWQ_+s}6Y^Ec3ql;HdAxZvj1wk5MoBd%1Fedf$D z%aUvp8(-sqdzZ^}l4T{Dpz)#0otRtp<2PP*R%x1E1}~ZJtGk(698ttNF=2u|%0GJ8 zB&Qoco1}a7x;Y``#ofM|)-~E&0y|#(^2$cqMXpKKt;^L4Y?6G`J}&w0=(kp{FAN+x z6~W3V`}@wAxkp2@Yg<9Ym~46GS(K^Hvkq0U-)xJFnE+WFHEdWfD)Mf0^33%FOHv=o z`tiHcjr|)R^$mNxg>+#nTvvt}GyG+j#4|qWC~@WG0c;qy*OR)gG(2KEaKM9OQ2peF z206rP_8r1i+pzqU{3p>rq_y;)yuo~B;;?eNY{uj(+?n>^GOTD~wUJb!HFHptyXy3u z(ptYNhuCGsgKn^;x>cnWR(Lr^i+@ZX8d!d(bzcXL+OJY-~ePxXOQf6mf`n26% zt*NZM_DII$cbkW@*d4Xh&P?4QVcq_HK9l(lJ!|We+>mxUX|VsfpyURRnU(>urltQ_ zTy*~PwevgQu3=wg|L8dy<~K4oB-|wrrS8~V(R)o+S%q{v*MmitE};H>aN`* z)5^L>cLzN?K5>3_@Lx`TcZLE40Y!s#kCM9#N4VxCopk!-nXKuRD9tP9nw+3>L5HQG z)tcu1g4uh6zg9{!XGGe7wjk_ialGfrpgoMPJiYC|@49WNH4VuM4Q;yaelF?Nq|uVd z@{#f#A)k2_wG0~LR;3PH?Op#6zM|9tqV1#z)&F$;Mr-<6yI#@vmmNZmKlD~@&+#)Nc_eYi*#b;YZ z<6VApKb`*Y^Fl|jOSXT6X37G5at^J?SF7RZSL7)T`Fx&ZwuY*YGv2GE9Zf1&Nq_`x>h}(q2TDB7`e%&NV&A+T0zh)uUAva0C5%!Pj^E_(~>C-2CA{0THP B0x19h literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xxhdpi/bg_contextmenu_dots_dark.9.png b/OsmAnd/res/drawable-xxhdpi/bg_contextmenu_dots_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..4f1f76c092c7f722c07ea1204fe54d1dd396dcdf GIT binary patch literal 3241 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 O=fTd}nNVuw7yEDSihvCO literal 0 HcmV?d00001 From 097f4bcaa8b56838fe83120f4f4e8cb0ea8eb3a5 Mon Sep 17 00:00:00 2001 From: Catalin Pop Date: Thu, 10 Sep 2015 16:08:28 +0200 Subject: [PATCH 52/90] Translated using Weblate (Romanian) Currently translated at 77.8% (1378 of 1769 strings) --- OsmAnd/res/values-ro/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values-ro/strings.xml b/OsmAnd/res/values-ro/strings.xml index eae9b1a111..30b3645fcb 100644 --- a/OsmAnd/res/values-ro/strings.xml +++ b/OsmAnd/res/values-ro/strings.xml @@ -1708,4 +1708,7 @@ Piemontez Bengali Sărbă-Croată + Aveți descărcate informații vechi din Wikipedia, incompatibile. Doriți să le arhivați? + Doriți să descărcați informații adiționale din Wikipedia (%1$s MB) ? + Serviciul de localizare este oprit. Doriți să îl activați? From 0b3ee39484852a0582bdecdd6972c15be92a2029 Mon Sep 17 00:00:00 2001 From: Franco Date: Thu, 10 Sep 2015 16:54:03 +0200 Subject: [PATCH 53/90] Translated using Weblate (Argentinean Spanish) Currently translated at 99.9% (1096 of 1097 strings) --- OsmAnd/res/values-es-rAR/phrases.xml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index 9b019cecda..6e6a6f80ce 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -507,14 +507,14 @@ Pabellón de caza Lugar de culto - Lugar de culto: cristiano - Lugar de culto: judio - Lugar de culto: musulmán - Lugar de culto: sijista - Lugar de culto: budista - Lugar de culto: hindú - Lugar de culto: sintoísta - Lugar de culto: taoísta + Cristiandad + Judaísmo + Islámismo + Sijismo + Budismo + Hinduismo + Sintoísmo + Taoísmo Internet inalámbrico PC con Internet @@ -1062,15 +1062,15 @@ Oficina militar Vudú - Unitariano universalista + Unitarianismo universal Multireligioso - Jainista - Espiritualista - Bahaísta + Jainismo + Espiritualismo + Bahaísmo Cienciologísta - Pagano + Paganismo Tenrikyō - Zoroástrica + Zoroástrismo Católica Bautista From 8e13b6679ce1c30442aee5adbe74c6e313c0de3e Mon Sep 17 00:00:00 2001 From: Franco Date: Thu, 10 Sep 2015 16:55:45 +0200 Subject: [PATCH 54/90] Translated using Weblate (Argentinean Spanish) Currently translated at 100.0% (1769 of 1769 strings) --- OsmAnd/res/values-es-rAR/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index 7707a7e99d..3ebb2e5abe 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -2048,4 +2048,5 @@ Lugares recientes Favoritos borrar - + Guardado exitosamente como: %1$s + From e686f6ac551581fe04c89da4b2e53352735a0125 Mon Sep 17 00:00:00 2001 From: Franco Date: Thu, 10 Sep 2015 16:56:37 +0200 Subject: [PATCH 55/90] Translated using Weblate (Spanish) Currently translated at 100.0% (1769 of 1769 strings) --- OsmAnd/res/values-es/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-es/strings.xml b/OsmAnd/res/values-es/strings.xml index af3698cdcf..f29dcd08f8 100644 --- a/OsmAnd/res/values-es/strings.xml +++ b/OsmAnd/res/values-es/strings.xml @@ -2186,4 +2186,5 @@ Lugares recientes Favoritos borrar - + Guardado exitosamente en: %1$s + From 8872cc774e4f51ed4224b0b95c8fd976d014a890 Mon Sep 17 00:00:00 2001 From: Franco Date: Thu, 10 Sep 2015 17:01:16 +0200 Subject: [PATCH 56/90] Translated using Weblate (Argentinean Spanish) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-es-rAR/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index 6e6a6f80ce..bf47979e6c 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -1067,7 +1067,7 @@ Jainismo Espiritualismo Bahaísmo - Cienciologísta + Cienciologísmo Paganismo Tenrikyō Zoroástrismo From 72ef391753ad3ccee5433a23e20f6f5f40687364 Mon Sep 17 00:00:00 2001 From: Franco Date: Thu, 10 Sep 2015 16:59:39 +0200 Subject: [PATCH 57/90] Translated using Weblate (Spanish) Currently translated at 99.9% (1096 of 1097 strings) --- OsmAnd/res/values-es/phrases.xml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/OsmAnd/res/values-es/phrases.xml b/OsmAnd/res/values-es/phrases.xml index f4b263816a..bd82c9a248 100644 --- a/OsmAnd/res/values-es/phrases.xml +++ b/OsmAnd/res/values-es/phrases.xml @@ -290,7 +290,7 @@ Chalé Apartamento Lugar de culto - Lugar de culto: cristiano + Cristianismo Acceso a Internet: inalámbrico Acceso a Internet: cableado Acceso a Internet: público @@ -559,12 +559,12 @@ Alojamiento Cabaña - Lugar de culto: musulmán - Lugar de culto: sijista - Lugar de culto: budista - Lugar de culto: hindú - Lugar de culto: sintoísta - Lugar de culto: taoísta + Islamismo + Sijismo + Budismo + Hinduismo + Sintoísmo + Taoísmo Crucero Ermita en el camino @@ -692,7 +692,7 @@ Atracción de feria Noria Carrusel de oscilación - Lugar de culto: judio + Judaísmo Acceso a Internet: servicio Manantial @@ -1065,15 +1065,15 @@ Oficina militar Vudú - Unitariano universalista + Unitarismo universal Multireligioso - Jainista - Espiritualista - Bahaísta + Jainismo + Espiritismo + Bahaísmo Cienciologísta - Pagano + Paganismo Tenrikyō - Zoroástrica + Zoroastrismo Católica Bautista From 8b1830d3849f1a6b057acc40a980e74d0a2443a4 Mon Sep 17 00:00:00 2001 From: Franco Date: Thu, 10 Sep 2015 17:14:31 +0200 Subject: [PATCH 58/90] Translated using Weblate (Spanish) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-es/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-es/phrases.xml b/OsmAnd/res/values-es/phrases.xml index bd82c9a248..6f727e602c 100644 --- a/OsmAnd/res/values-es/phrases.xml +++ b/OsmAnd/res/values-es/phrases.xml @@ -1070,7 +1070,7 @@ Jainismo Espiritismo Bahaísmo - Cienciologísta + Cienciologísmo Paganismo Tenrikyō Zoroastrismo From 7dd1196cd974cee04275f375250c0fd515c28124 Mon Sep 17 00:00:00 2001 From: Franco Date: Thu, 10 Sep 2015 17:12:32 +0200 Subject: [PATCH 59/90] Translated using Weblate (Spanish) Currently translated at 100.0% (1769 of 1769 strings) --- OsmAnd/res/values-es/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-es/strings.xml b/OsmAnd/res/values-es/strings.xml index f29dcd08f8..81d1e5014b 100644 --- a/OsmAnd/res/values-es/strings.xml +++ b/OsmAnd/res/values-es/strings.xml @@ -2161,7 +2161,7 @@ Deshacer Omitir OsmAnd - Mapas y navegación fuera de línea + Mapas y navegación\nfuera de línea Enviar PDI Evitar tren de enlace Evite tomar trenes de enlace From dacfec888031cc3162a7fcb3b53794a9dee5270f Mon Sep 17 00:00:00 2001 From: Franco Date: Thu, 10 Sep 2015 17:08:26 +0200 Subject: [PATCH 60/90] Translated using Weblate (Argentinean Spanish) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-es-rAR/phrases.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index bf47979e6c..c86d8bff2f 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -1040,7 +1040,7 @@ Cartón Escombros - Conglomerado + Cartón prensado Laguna de molino Twitter Skype @@ -1128,7 +1128,7 @@ Reformada unida Reformado Unido - cuáquero + Cuáquero Shaktismo Uniendo Wesleyan From 332658157612b05e89f9962fb7a41264c5eaeb11 Mon Sep 17 00:00:00 2001 From: Alexey Kulish Date: Thu, 10 Sep 2015 19:14:21 +0300 Subject: [PATCH 61/90] Fix context menu crash while changing device orientation --- .../res/drawable/bg_map_context_menu_dark.xml | 2 +- .../src/net/osmand/data/PointDescription.java | 5 ++++- .../plus/mapcontextmenu/MapContextMenu.java | 19 +++++++++++++++++++ .../MapContextMenuFragment.java | 11 ++++++++++- .../sections/AmenityInfoMenuBuilder.java | 6 ++---- 5 files changed, 36 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/drawable/bg_map_context_menu_dark.xml b/OsmAnd/res/drawable/bg_map_context_menu_dark.xml index f67482f175..c584b75e83 100644 --- a/OsmAnd/res/drawable/bg_map_context_menu_dark.xml +++ b/OsmAnd/res/drawable/bg_map_context_menu_dark.xml @@ -1,7 +1,7 @@ - + diff --git a/OsmAnd/src/net/osmand/data/PointDescription.java b/OsmAnd/src/net/osmand/data/PointDescription.java index 77d5e1b4fd..8b77835709 100644 --- a/OsmAnd/src/net/osmand/data/PointDescription.java +++ b/OsmAnd/src/net/osmand/data/PointDescription.java @@ -1,5 +1,6 @@ package net.osmand.data; +import java.io.Serializable; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.Locale; @@ -15,7 +16,7 @@ import net.osmand.util.Algorithms; import android.content.Context; import android.support.annotation.NonNull; -public class PointDescription { +public class PointDescription implements Serializable { private String type = ""; private String name = ""; private String typeName; @@ -23,6 +24,8 @@ public class PointDescription { private double lat = 0; private double lon = 0; + private static final long serialVersionUID = 4078409090417168638L; + public static final String POINT_TYPE_FAVORITE = "favorite"; public static final String POINT_TYPE_WPT = "wpt"; public static final String POINT_TYPE_POI = "poi"; diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java index 8e6281dad3..78a3937a09 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java @@ -1,5 +1,6 @@ package net.osmand.plus.mapcontextmenu; +import android.os.Bundle; import android.support.v4.app.Fragment; import net.osmand.binary.RouteDataObject; @@ -29,6 +30,9 @@ public class MapContextMenu { private String foundStreetName; + private static final String KEY_CTX_MENU_OBJECT = "key_ctx_menu_object"; + private static final String KEY_CTX_MENU_POINT_DESC = "key_ctx_menu_point_desc"; + public boolean isMenuVisible(MapActivity mapActivity) { return mapActivity.getSupportFragmentManager().findFragmentByTag("MapContextMenuFragment") != null; } @@ -168,4 +172,19 @@ public class MapContextMenu { mapActivity.getMapActions().contextMenuPoint(pointDescription.getLat(), pointDescription.getLon(), menuAdapter, object); } + + public void saveMenuState(Bundle bundle) { + if (object != null) { + if (object instanceof Amenity) + bundle.putSerializable(KEY_CTX_MENU_OBJECT, (Amenity)object); + } + bundle.putSerializable(KEY_CTX_MENU_POINT_DESC, pointDescription); + } + + public void restoreMenuState(Bundle bundle) { + object = bundle.getSerializable(KEY_CTX_MENU_OBJECT); + Object pDescObj = bundle.getSerializable(KEY_CTX_MENU_POINT_DESC); + if (pDescObj != null) + pointDescription = (PointDescription)pDescObj; + } } diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index 3e1682094a..2a2c213754 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -85,11 +85,20 @@ public class MapContextMenuFragment extends Fragment { */ } + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + getCtxMenu().saveMenuState(outState); + } + @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + if (savedInstanceState != null) + getCtxMenu().restoreMenuState(savedInstanceState); + view = inflater.inflate(R.layout.map_context_menu_fragment, container, false); ViewTreeObserver vto = view.getViewTreeObserver(); @@ -425,7 +434,7 @@ public class MapContextMenuFragment extends Fragment { } private MapContextMenu getCtxMenu() { - return ((MapActivity)getActivity()).getContextMenu(); + return getMapActivity().getContextMenu(); } private MapActivity getMapActivity() { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java index 1ee0b9044e..cf5d90571f 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java @@ -1,8 +1,6 @@ package net.osmand.plus.mapcontextmenu.sections; import android.content.res.Resources; -import android.text.SpannableString; -import android.text.method.LinkMovementMethod; import android.text.util.Linkify; import android.util.TypedValue; import android.view.Gravity; @@ -26,7 +24,7 @@ import static android.util.TypedValue.COMPLEX_UNIT_DIP; public class AmenityInfoMenuBuilder extends MenuBuilder { - private static float SHADOW_HEIGHT = 6f; // in dp + private static final float SHADOW_HEIGHT = 6f; // in dp private final Amenity amenity; @@ -53,7 +51,7 @@ public class AmenityInfoMenuBuilder extends MenuBuilder { ImageView icon = new ImageView(view.getContext()); LinearLayout.LayoutParams llIconParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) ; - llIconParams.setMargins(dpToPx(16f), firstRow ? dpToPx(12f) - dpToPx(SHADOW_HEIGHT) : dpToPx(12f), dpToPx(32f), dpToPx(12f)); + llIconParams.setMargins(dpToPx(16f), firstRow ? dpToPx(12f) - dpToPx(SHADOW_HEIGHT / 2f) : dpToPx(12f), dpToPx(32f), dpToPx(12f)); llIconParams.gravity = Gravity.CENTER_VERTICAL; icon.setLayoutParams(llIconParams); icon.setScaleType(ImageView.ScaleType.CENTER); From 85748f651f364e3003d536019008de5738f5e4f9 Mon Sep 17 00:00:00 2001 From: Franco Date: Thu, 10 Sep 2015 17:18:00 +0200 Subject: [PATCH 62/90] Translated using Weblate (Spanish) Currently translated at 100.0% (1097 of 1097 strings) --- OsmAnd/res/values-es/phrases.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-es/phrases.xml b/OsmAnd/res/values-es/phrases.xml index 6f727e602c..9eed1e7cab 100644 --- a/OsmAnd/res/values-es/phrases.xml +++ b/OsmAnd/res/values-es/phrases.xml @@ -912,7 +912,7 @@ Control Control de peaje -Portilla giratoria +Portilla en V Portón de muralla Red de nodos ciclista nacional Red de nodos ciclista regional @@ -1111,7 +1111,7 @@ Congregacional Antiguos creyentes Ortodoxa Serbia - Espírita + Espiritista Apostólico armenio Holandés reformado Apostólica @@ -1151,7 +1151,7 @@ Aguas residuales (contenido) Gas (contenido) Biomasa (contenido) - Aguas residuales (contenido) + Agua residual (contenido) Cultivo (contenido) Forraje (contenido) Cerveza (contenido) From 9c5ebe45daa8fdd633a30a182ba645d9f0ca9871 Mon Sep 17 00:00:00 2001 From: ezjerry liao Date: Fri, 11 Sep 2015 01:19:04 +0200 Subject: [PATCH 63/90] Translated using Weblate (Chinese (Taiwan)) Currently translated at 100.0% (1769 of 1769 strings) --- OsmAnd/res/values-zh-rTW/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index 25cda44d96..e6f1703586 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -2105,4 +2105,5 @@ 工作日 最近的地點 我的最愛 +已順利的儲存於:%1$s From 10ad01882b60ecf7ebe94cf183f21eecc1bae066 Mon Sep 17 00:00:00 2001 From: josep constanti Date: Fri, 11 Sep 2015 05:36:27 +0200 Subject: [PATCH 64/90] Translated using Weblate (Catalan) Currently translated at 100.0% (1769 of 1769 strings) --- OsmAnd/res/values-ca/strings.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index 120386d8f6..d9ca2f6a86 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -2113,4 +2113,9 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu Especifiqueu el tipus de PDI instal·lació comunitària Nombre de files al tauler %1$s - + Suprimeix + Dies laborables + Llocs recents + Favorits + S\'ha desat correctament a: %1$s + From 34c284cab490537d4bcb1be13e72ad0eb95e57d4 Mon Sep 17 00:00:00 2001 From: Alexey Kulish Date: Fri, 11 Sep 2015 11:06:04 +0300 Subject: [PATCH 65/90] Small UI fixes --- .../res/layout/map_context_menu_fragment.xml | 1 + .../MapContextMenuFragment.java | 28 +++++++++++++------ .../sections/AmenityInfoMenuBuilder.java | 8 ++---- .../mapcontextmenu/sections/MenuBuilder.java | 3 ++ 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/OsmAnd/res/layout/map_context_menu_fragment.xml b/OsmAnd/res/layout/map_context_menu_fragment.xml index e3d7f07cea..2f83828f9f 100644 --- a/OsmAnd/res/layout/map_context_menu_fragment.xml +++ b/OsmAnd/res/layout/map_context_menu_fragment.xml @@ -30,6 +30,7 @@ 3 || differenceY > 3 || System.currentTimeMillis() - lastTouchDown > CLICK_ACTION_THRESHHOLD) { + if (differenceX > 1 || differenceY > 1 || System.currentTimeMillis() - lastTouchDown > CLICK_ACTION_THRESHHOLD) { return false; } return true; @@ -227,13 +231,13 @@ public class MapContextMenuFragment extends Fragment { float posY = 0; switch (destinationState) { case MenuController.MenuState.HEADER_ONLY: - posY = view.getHeight() - (menuFullHeight - menuBottomViewHeight); + posY = view.getHeight() - (menuFullHeight - menuBottomViewHeight - dpToPx(SHADOW_HEIGHT_BOTTOM_DP)); break; case MenuController.MenuState.HALF_SCREEN: posY = view.getHeight() - menuFullHeight; break; case MenuController.MenuState.FULL_SCREEN: - posY = -menuTopShadowHeight; + posY = -menuTopShadowHeight - dpToPx(SHADOW_HEIGHT_TOP_DP); break; default: break; @@ -270,6 +274,16 @@ public class MapContextMenuFragment extends Fragment { topView.setOnTouchListener(slideTouchListener); View topShadowView = view.findViewById(R.id.context_menu_top_shadow); topShadowView.setOnTouchListener(slideTouchListener); + View topShadowAllView = view.findViewById(R.id.context_menu_top_shadow_all); + topShadowAllView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + if (event.getY() <= dpToPx(SHADOW_HEIGHT_TOP_DP) || event.getAction() != MotionEvent.ACTION_DOWN) + return slideTouchListener.onTouch(v, event); + else + return false; + } + }); // Left icon IconsCache iconsCache = getMyApplication().getIconsCache(); @@ -375,7 +389,7 @@ public class MapContextMenuFragment extends Fragment { switch (menuState) { case MenuController.MenuState.HEADER_ONLY: - shadowViewHeight = view.getHeight() - (menuFullHeight - menuBottomViewHeight); + shadowViewHeight = view.getHeight() - (menuFullHeight - menuBottomViewHeight) + dpToPx(SHADOW_HEIGHT_BOTTOM_DP); bottomBorderHeight = 0; break; case MenuController.MenuState.HALF_SCREEN: @@ -391,7 +405,7 @@ public class MapContextMenuFragment extends Fragment { break; case MenuController.MenuState.FULL_SCREEN: shadowViewHeight = 0; - bottomBorderHeight = view.getHeight() - menuFullHeight + menuTopShadowHeight; + bottomBorderHeight = view.getHeight() - menuFullHeight + menuTopShadowHeight + dpToPx(SHADOW_HEIGHT_TOP_DP); break; default: break; @@ -410,8 +424,6 @@ public class MapContextMenuFragment extends Fragment { lp.height = menuFullHeight; mainView.setLayoutParams(lp); - mainView.bringToFront(); - } public void dismissMenu() { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java index cf5d90571f..01a776972d 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/AmenityInfoMenuBuilder.java @@ -24,8 +24,6 @@ import static android.util.TypedValue.COMPLEX_UNIT_DIP; public class AmenityInfoMenuBuilder extends MenuBuilder { - private static final float SHADOW_HEIGHT = 6f; // in dp - private final Amenity amenity; public AmenityInfoMenuBuilder(OsmandApplication app, final Amenity amenity) { @@ -45,13 +43,13 @@ public class AmenityInfoMenuBuilder extends MenuBuilder { // Icon LinearLayout llIcon = new LinearLayout(view.getContext()); llIcon.setOrientation(LinearLayout.HORIZONTAL); - llIcon.setLayoutParams(new LinearLayout.LayoutParams(dpToPx(72f), firstRow ? dpToPx(48f) - dpToPx(SHADOW_HEIGHT) : dpToPx(48f))); + llIcon.setLayoutParams(new LinearLayout.LayoutParams(dpToPx(72f), firstRow ? dpToPx(48f) - dpToPx(SHADOW_HEIGHT_BOTTOM_DP) : dpToPx(48f))); llIcon.setGravity(Gravity.CENTER_VERTICAL); ll.addView(llIcon); ImageView icon = new ImageView(view.getContext()); LinearLayout.LayoutParams llIconParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) ; - llIconParams.setMargins(dpToPx(16f), firstRow ? dpToPx(12f) - dpToPx(SHADOW_HEIGHT / 2f) : dpToPx(12f), dpToPx(32f), dpToPx(12f)); + llIconParams.setMargins(dpToPx(16f), firstRow ? dpToPx(12f) - dpToPx(SHADOW_HEIGHT_BOTTOM_DP / 2f) : dpToPx(12f), dpToPx(32f), dpToPx(12f)); llIconParams.gravity = Gravity.CENTER_VERTICAL; icon.setLayoutParams(llIconParams); icon.setScaleType(ImageView.ScaleType.CENTER); @@ -65,7 +63,7 @@ public class AmenityInfoMenuBuilder extends MenuBuilder { TextView textView = new TextView(view.getContext()); LinearLayout.LayoutParams llTextParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); - llTextParams.setMargins(0, firstRow ? dpToPx(8f) - dpToPx(SHADOW_HEIGHT) : dpToPx(8f), 0, dpToPx(8f)); + llTextParams.setMargins(0, firstRow ? dpToPx(8f) - dpToPx(SHADOW_HEIGHT_BOTTOM_DP) : dpToPx(8f), 0, dpToPx(8f)); textView.setLayoutParams(llTextParams); textView.setTextSize(16); // todo: create constant textView.setTextColor(app.getResources().getColor(light ? R.color.ctx_menu_info_text_light : R.color.ctx_menu_info_text_dark)); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/MenuBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/MenuBuilder.java index 55211d041c..a219c0db22 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/MenuBuilder.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/sections/MenuBuilder.java @@ -9,6 +9,9 @@ import net.osmand.plus.R; public abstract class MenuBuilder { + public static final float SHADOW_HEIGHT_TOP_DP = 16f; + public static final float SHADOW_HEIGHT_BOTTOM_DP = 6f; + protected OsmandApplication app; public MenuBuilder(OsmandApplication app) { From 01fd991c56096942bea82a0a89f898369d0ec074 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Fri, 11 Sep 2015 07:11:38 +0200 Subject: [PATCH 66/90] Translated using Weblate (Danish) Currently translated at 100.0% (1769 of 1769 strings) --- OsmAnd/res/values-da/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index 93ca549556..386d3351f5 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -2128,5 +2128,5 @@ Seneste steder Favoritter slet - Gemt på: %1$s + Gemt korrekt: %1$s From 80f844a4cf862f1f5b0e5192af637895bd8c5123 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20B=C3=A1thory?= Date: Thu, 10 Sep 2015 22:10:20 +0200 Subject: [PATCH 67/90] Translated using Weblate (Hungarian) Currently translated at 99.7% (1764 of 1769 strings) --- OsmAnd/res/values-hu/strings.xml | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-hu/strings.xml b/OsmAnd/res/values-hu/strings.xml index e443b27754..a067308893 100644 --- a/OsmAnd/res/values-hu/strings.xml +++ b/OsmAnd/res/values-hu/strings.xml @@ -434,8 +434,8 @@ Telepíted az OsmAnd alkalmazást - {0} innen: {1} {2} MB? Az OsmAnd verziók listájának letöltése nem sikerült OsmAnd összeállítások töltése… - A telepítéshez válassz egy OsmAnd buildet - Telepítési verzió + Válassz egy OsmAnd buildet + Verzió telepítése A GPS-állapot alkalmazás nincs telepítve. Megkeresi a piactéren? A beszéd alapú navigáció nem érhető el. A Beállítások → \'Általános\' → \'Hangutasítás\' menüben kiválaszthatsz, vagy letölthetsz hangcsomagokat. Nincs kiválasztva hang adat @@ -1186,7 +1186,7 @@ \n\t* Pebble óra támogatás " - Utca + Utcanév Házszám Útvonalrögzítés Az útvonalaid felvételének beállításai @@ -2044,4 +2044,24 @@ Tovább Kezdőlap beállításai Veszély - + törlés + VISSZAVON + POI beküldése + Alap + Haladó + Házszám + Nyitás + Zárás + név + szolgáltatás + Elérhetőségek + Leírás + Nyitva tartás hozzáadása + POI típus + Sorok száma a kezdőlapon %1$s + Kérlek add meg a POI típusát. + Munkanapok + Gyakori helyek + Kedvencek + Sikeresen mentve ekkor: %1$s + From 8488261052f0c8ae2eaa1a9cfed78c35b73efac9 Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Fri, 11 Sep 2015 11:06:28 +0300 Subject: [PATCH 68/90] Poi editing screen height and poi type dropdown. --- OsmAnd/res/layout/fragment_edit_poi.xml | 4 +-- .../osmand/plus/osmedit/EditPoiFragment.java | 26 ++++++++++++++----- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/OsmAnd/res/layout/fragment_edit_poi.xml b/OsmAnd/res/layout/fragment_edit_poi.xml index 8b1ddc8626..cebdb8705c 100644 --- a/OsmAnd/res/layout/fragment_edit_poi.xml +++ b/OsmAnd/res/layout/fragment_edit_poi.xml @@ -128,7 +128,7 @@ @@ -136,7 +136,7 @@ diff --git a/OsmAnd/src/net/osmand/plus/osmedit/EditPoiFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/EditPoiFragment.java index 86b5788320..120feae70c 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/EditPoiFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/EditPoiFragment.java @@ -27,6 +27,7 @@ import android.text.TextUtils; import android.text.TextWatcher; import android.view.KeyEvent; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; @@ -117,7 +118,7 @@ public class EditPoiFragment extends DialogFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_edit_poi, container, false); + final View view = inflater.inflate(R.layout.fragment_edit_poi, container, false); final OsmandSettings settings = getMyApplication().getSettings(); boolean isLightTheme = settings.OSMAND_THEME.get() == settings.OSMAND_LIGHT_THEME; @@ -256,14 +257,25 @@ public class EditPoiFragment extends DialogFragment { } } }); - poiTypeEditText.setOnClickListener(new View.OnClickListener() { + poiTypeEditText.setOnTouchListener(new View.OnTouchListener() { @Override - public void onClick(View v) { - if (poiTypeEditText.getText().length() == 0 && editPoiData.amenity.getType() != null) { - DialogFragment dialogFragment = - PoiSubTypeDialogFragment.createInstance(editPoiData.amenity); - dialogFragment.show(getChildFragmentManager(), "PoiSubTypeDialogFragment"); + public boolean onTouch(final View v, MotionEvent event) { + final EditText editText = (EditText) v; + final int DRAWABLE_RIGHT = 2; + if (event.getAction() == MotionEvent.ACTION_UP) { + if (event.getX() >= (editText.getRight() + - editText.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width() + - editText.getPaddingRight())) { + if (editPoiData.amenity.getType() != null) { + DialogFragment dialogFragment = + PoiSubTypeDialogFragment.createInstance(editPoiData.amenity); + dialogFragment.show(getChildFragmentManager(), "PoiSubTypeDialogFragment"); + } + + return true; + } } + return false; } }); From 923c03a1e1302e2d4e774d47a1137271d874dc5b Mon Sep 17 00:00:00 2001 From: Evgenii Martynenko Date: Thu, 10 Sep 2015 22:12:36 +0200 Subject: [PATCH 69/90] Translated using Weblate (Russian) Currently translated at 99.3% (1758 of 1769 strings) --- OsmAnd/res/values-ru/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index a630669509..9b19cbe93c 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -2090,4 +2090,5 @@ Жирный контур Рабочие дни Избранное +Успешно сохранён в: %1$s From 50e32f1d50087dbcd5780c5ef6e26758852cb9ff Mon Sep 17 00:00:00 2001 From: Leif Larsson Date: Thu, 10 Sep 2015 22:55:47 +0200 Subject: [PATCH 70/90] Translated using Weblate (Swedish) Currently translated at 99.2% (1756 of 1769 strings) --- OsmAnd/res/values-sv/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-sv/strings.xml b/OsmAnd/res/values-sv/strings.xml index 4949a5a203..22a5686786 100644 --- a/OsmAnd/res/values-sv/strings.xml +++ b/OsmAnd/res/values-sv/strings.xml @@ -1994,4 +1994,5 @@ Arbetsdagar Nyliga platser ta bort - + Sparades utan problem kl. %1$s + From 334825b3b7fae66ba476e96c468fc60a3ddcbb42 Mon Sep 17 00:00:00 2001 From: xmd5a Date: Fri, 11 Sep 2015 12:42:33 +0300 Subject: [PATCH 71/90] Update phrases --- OsmAnd/res/values-ru/phrases.xml | 6 ++++++ OsmAnd/res/values/phrases.xml | 2 ++ 2 files changed, 8 insertions(+) diff --git a/OsmAnd/res/values-ru/phrases.xml b/OsmAnd/res/values-ru/phrases.xml index 5eeb0f0737..4e91a95819 100644 --- a/OsmAnd/res/values-ru/phrases.xml +++ b/OsmAnd/res/values-ru/phrases.xml @@ -662,6 +662,7 @@ Город (небольшой) Деревня Деревня (небольшая) + Район Хутор Урочище @@ -851,6 +852,11 @@ Нерегулируемый Неразмеченный + Население + Дата начала постройки + Доступно для инвалидных кресел + Опт + Частный доступ Нет доступа Доступ: пункт назначения diff --git a/OsmAnd/res/values/phrases.xml b/OsmAnd/res/values/phrases.xml index 94cdd9bbb6..d5753c0924 100644 --- a/OsmAnd/res/values/phrases.xml +++ b/OsmAnd/res/values/phrases.xml @@ -1140,6 +1140,8 @@ Agricultural supplies Tile supplies + Population + Enforcement:traffic signals Enforcement:maxspeed Enforcement:maxheight From 3671f38959a6673fd089ecf048a462e259b1da60 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Fri, 11 Sep 2015 12:06:52 +0200 Subject: [PATCH 72/90] Translated using Weblate (Danish) Currently translated at 100.0% (1098 of 1098 strings) --- OsmAnd/res/values-da/phrases.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index ae8ab18253..cf6c67b738 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -1183,4 +1183,6 @@ Landbrugsmaterialer Flisematerialer + Befolkning + From b98e83f1a8e2ec8aa51830ff7d3769af9d917833 Mon Sep 17 00:00:00 2001 From: ezjerry liao Date: Fri, 11 Sep 2015 12:14:31 +0200 Subject: [PATCH 73/90] Translated using Weblate (Chinese (Taiwan)) Currently translated at 100.0% (1098 of 1098 strings) --- OsmAnd/res/values-zh-rTW/phrases.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-zh-rTW/phrases.xml b/OsmAnd/res/values-zh-rTW/phrases.xml index e14e86fde8..7d0098ab40 100644 --- a/OsmAnd/res/values-zh-rTW/phrases.xml +++ b/OsmAnd/res/values-zh-rTW/phrases.xml @@ -1164,4 +1164,6 @@ 農藝供應商 磚瓦供應商 + 人口數 + From e4f7a3ab39c60d0501b4c45515fca9d1b7eb2c84 Mon Sep 17 00:00:00 2001 From: Adriano Rosa Date: Fri, 11 Sep 2015 13:36:47 +0200 Subject: [PATCH 74/90] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (1098 of 1098 strings) --- OsmAnd/res/values-pt-rBR/phrases.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-pt-rBR/phrases.xml b/OsmAnd/res/values-pt-rBR/phrases.xml index d81d2ed788..4caadd1c59 100644 --- a/OsmAnd/res/values-pt-rBR/phrases.xml +++ b/OsmAnd/res/values-pt-rBR/phrases.xml @@ -1166,4 +1166,6 @@ Suprimentos de madeira Suprimentos de telha + População + From 05908877dcf0e9b356e27bbfeaf0f1a33f149efd Mon Sep 17 00:00:00 2001 From: Viktar Palstsiuk Date: Fri, 11 Sep 2015 14:04:10 +0200 Subject: [PATCH 75/90] Translated using Weblate (Belarusian) Currently translated at 100.0% (1769 of 1769 strings) --- OsmAnd/res/values-be/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml index 62dced4e42..64e642d423 100644 --- a/OsmAnd/res/values-be/strings.xml +++ b/OsmAnd/res/values-be/strings.xml @@ -2088,4 +2088,5 @@ Працоўныя дні Нядаўнія месцы Упадабанае +Пасьпяхова захаваны ў: %1$s From 502bbf046c5b6ce1c0357926c4208e6903f41943 Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Fri, 11 Sep 2015 15:12:16 +0300 Subject: [PATCH 76/90] Poi editing screen edit text scroll. --- .../res/layout/fragment_edit_poi_advanced.xml | 177 +++++++++--------- .../res/layout/fragment_edit_poi_normal.xml | 7 +- .../plus/osmedit/AdvancedDataFragment.java | 12 +- .../plus/osmedit/BasicDataFragment.java | 8 + 4 files changed, 113 insertions(+), 91 deletions(-) diff --git a/OsmAnd/res/layout/fragment_edit_poi_advanced.xml b/OsmAnd/res/layout/fragment_edit_poi_advanced.xml index f58e76031b..4276b9e95d 100644 --- a/OsmAnd/res/layout/fragment_edit_poi_advanced.xml +++ b/OsmAnd/res/layout/fragment_edit_poi_advanced.xml @@ -2,117 +2,122 @@ - + android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:layout_marginLeft="14dp" + android:layout_marginRight="14dp" + android:layout_marginTop="14dp" + android:background="?attr/bg_card" + android:orientation="vertical"> - + + + + + + + + - - + android:layout_height="37dp" + android:gravity="center"> - + + + + + + + + android:layout_height="wrap_content" + android:orientation="vertical" + android:saveEnabled="false"/> - - - - - - + - - - - - - + android:layout_height="match_parent"/> + diff --git a/OsmAnd/res/layout/fragment_edit_poi_normal.xml b/OsmAnd/res/layout/fragment_edit_poi_normal.xml index 267fd0aabe..229002a227 100644 --- a/OsmAnd/res/layout/fragment_edit_poi_normal.xml +++ b/OsmAnd/res/layout/fragment_edit_poi_normal.xml @@ -4,7 +4,7 @@ xmlns:osmand="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="wrap_content"> + android:layout_height="match_parent" + tools:visibility="visible"/> \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/osmedit/AdvancedDataFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/AdvancedDataFragment.java index ebd221ed7f..93852a08cf 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/AdvancedDataFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/AdvancedDataFragment.java @@ -2,6 +2,7 @@ package net.osmand.plus.osmedit; import android.app.Dialog; import android.content.DialogInterface; +import android.graphics.Point; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.annotation.Nullable; @@ -9,6 +10,7 @@ import android.support.v4.app.Fragment; import android.support.v7.app.AlertDialog; import android.text.Editable; import android.text.TextWatcher; +import android.view.Display; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -54,6 +56,12 @@ public class AdvancedDataFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View view = inflater.inflate(R.layout.fragment_edit_poi_advanced, container, false); + Display display = getActivity().getWindowManager().getDefaultDisplay(); + Point size = new Point(); + display.getSize(size); + int height = size.y; + view.findViewById(R.id.screenFiller).setMinimumHeight(height); + deleteDrawable = ((OsmandApplication) getActivity().getApplication()).getIconsCache() .getPaintedContentIcon(R.drawable.ic_action_remove_dark, getActivity().getResources().getColor(R.color.dash_search_icon_dark)); @@ -205,7 +213,7 @@ public class AdvancedDataFragment extends Fragment { editPoiData.notifyDatasetChanged(mTagsChangedListener); } }); - final Set tagKeys = new TreeSet(); + final Set tagKeys = new TreeSet<>(); for (OSMSettings.OSMTagKey t : OSMSettings.OSMTagKey.values()) { if ((t != OSMSettings.OSMTagKey.NAME) && (t != OSMSettings.OSMTagKey.OPENING_HOURS) && (t != OSMSettings.OSMTagKey.PHONE) && (t != OSMSettings.OSMTagKey.WEBSITE)) { @@ -213,7 +221,7 @@ public class AdvancedDataFragment extends Fragment { } } - ArrayAdapter adapter = new ArrayAdapter(linearLayout.getContext(), + ArrayAdapter adapter = new ArrayAdapter<>(linearLayout.getContext(), R.layout.list_textview, tagKeys.toArray()); tagEditText.setAdapter(adapter); tagEditText.setThreshold(1); diff --git a/OsmAnd/src/net/osmand/plus/osmedit/BasicDataFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/BasicDataFragment.java index 520e6cce97..f9a9212d56 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/BasicDataFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/BasicDataFragment.java @@ -1,5 +1,6 @@ package net.osmand.plus.osmedit; +import android.graphics.Point; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.annotation.Nullable; @@ -7,6 +8,7 @@ import android.support.v4.app.Fragment; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; +import android.view.Display; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -54,6 +56,12 @@ public class BasicDataFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_edit_poi_normal, container, false); + Display display = getActivity().getWindowManager().getDefaultDisplay(); + Point size = new Point(); + display.getSize(size); + int height = size.y; + view.findViewById(R.id.screenFiller).setMinimumHeight(height); + IconsCache iconsCache = getMyApplication().getIconsCache(); int iconColor = getResources().getColor(R.color.dash_search_icon_dark); From 23d378bcae8badc64291c8a9b43ce1f614aa3482 Mon Sep 17 00:00:00 2001 From: Viktar Palstsiuk Date: Fri, 11 Sep 2015 14:05:08 +0200 Subject: [PATCH 77/90] Translated using Weblate (Belarusian) Currently translated at 89.8% (987 of 1098 strings) --- OsmAnd/res/values-be/phrases.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values-be/phrases.xml b/OsmAnd/res/values-be/phrases.xml index db61121a1e..8dde3f83cc 100644 --- a/OsmAnd/res/values-be/phrases.xml +++ b/OsmAnd/res/values-be/phrases.xml @@ -1065,4 +1065,7 @@ Ваенкамат Натарыўс + Ядравыя адыходы + Насельніцтва + From 80208c1f425dc143838c52ccc1d70239392a5692 Mon Sep 17 00:00:00 2001 From: xmd5a Date: Fri, 11 Sep 2015 15:29:52 +0300 Subject: [PATCH 78/90] Update phrases --- OsmAnd/res/values-ru/phrases.xml | 77 ++++++++++++++++++++++++++++++++ OsmAnd/res/values/phrases.xml | 49 +++++++++++++++++--- 2 files changed, 121 insertions(+), 5 deletions(-) diff --git a/OsmAnd/res/values-ru/phrases.xml b/OsmAnd/res/values-ru/phrases.xml index 4e91a95819..3ef2f339e1 100644 --- a/OsmAnd/res/values-ru/phrases.xml +++ b/OsmAnd/res/values-ru/phrases.xml @@ -856,6 +856,16 @@ Дата начала постройки Доступно для инвалидных кресел Опт + Подземная + Многоэтажная + + Стойка + Крепление только для переднего колеса + Рама + Специальное здание + Навес + Столбик с креплением + Неофициальная Частный доступ Нет доступа @@ -865,4 +875,71 @@ Доступ только для доставки Доступ только для с/х техники + Католицизм + Баптизм + Римский католицизм + Православие + Лютеранство + Суннизм + Протестантизм + Методизм + Англиканство + Пресвитерианство + Евангелизм + Русское православие + Пятидесятничество + Мормонизм + Свидетели Иеговы + Греческое православие + Кальвинизм + Адвентисты седьмого дня + Новоапостольская церковь + Церковь Англии + Епископальная церковь + Шиизм + Объединённая церковь + Греческий католицизм + Тибетский буддизм + Церковь Шотландии + Армия спасения + Церковь Христа + Меннонитство + Квакерство + Болгарское православие + Ассамблеи Бога + Без деноминации + Адвентисты + Старообрядчество + Сербское православие + Спиритизм + Армянская апостольская церковь + + Широколиственная растительность + Хвойная растительность + Смешанного типа + Безлистная растительность + + Оливка + Яблоко + Пальмовое масло + Апельсин + Миндаль + Банан + Лесной орех + Кокос + Хурма + Вишня + Грецкий орех + Слива + Персик + Чай + Кока + Киви + Плодовый сад + Нектарин + Манго + Каучук + Финики + Кофe + Гранат diff --git a/OsmAnd/res/values/phrases.xml b/OsmAnd/res/values/phrases.xml index d5753c0924..4cb747fa7d 100644 --- a/OsmAnd/res/values/phrases.xml +++ b/OsmAnd/res/values/phrases.xml @@ -661,18 +661,18 @@ Pentecostal Mormon Jehovahs witness - Greek_orthodox + Greek orthodox Reformed - Seventh_day_adventist - New_apostolic - Church_of_england + Seventh day adventist + New apostolic + Church of england Episcopal Shia United Greek catholic Tibetan United reformed - Church of scotland + Church of Scotland Salvation army Iglesia ni cristo Uniting @@ -1141,6 +1141,45 @@ Tile supplies Population + Underground + Multi-storey + + Stands + Wall loops + Rack + Building + Shed + Bollard + Informal + + Broadleaved + Needleleaved + Mixed + Leafless + + Olive + Apple + Palm oil + Orange + Almond + Banana + Hazel + Coconut + Persimmon + Cherry + Walnut + Plum + Peach + Tea + Coca + Kiwi + Meadow orchard + Nectorine + Mango + Rubber + Date + Coffee + Pomegranate Enforcement:traffic signals Enforcement:maxspeed From 7e7d118cbe01915a1320e5957400119c7f6d0fd7 Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Fri, 11 Sep 2015 15:50:15 +0300 Subject: [PATCH 79/90] Poi deletion message. --- .../plus/osmedit/dialogs/DeletePoiDialogFragment.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/DeletePoiDialogFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/DeletePoiDialogFragment.java index 938dfac41f..db441a8bff 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/DeletePoiDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/DeletePoiDialogFragment.java @@ -20,9 +20,8 @@ import net.osmand.plus.osmedit.OpenstreetmapUtil; import net.osmand.plus.osmedit.OsmEditingPlugin; import net.osmand.plus.osmedit.OsmPoint; -/** - * Created by GaidamakUA on 8/28/15. - */ +import java.text.MessageFormat; + public class DeletePoiDialogFragment extends DialogFragment { private static final String KEY_AMENITY_NODE = "amenity_node"; @@ -37,7 +36,7 @@ public class DeletePoiDialogFragment extends DialogFragment { final Bundle args = getArguments(); AlertDialog.Builder builder = new AlertDialog.Builder(activity); - builder.setTitle(R.string.poi_remove_title);; + builder.setTitle(R.string.poi_remove_title); builder.setNegativeButton(R.string.shared_string_cancel, null); builder.setPositiveButton(R.string.shared_string_delete, new DialogInterface.OnClickListener() { @Override @@ -48,7 +47,9 @@ public class DeletePoiDialogFragment extends DialogFragment { new Runnable() { @Override public void run() { - AccessibleToast.makeText(activity, R.string.poi_remove_success, + AccessibleToast.makeText(activity, MessageFormat.format( + getString(R.string.poi_action_succeded_template), + getString(R.string.poi_action_delete)), Toast.LENGTH_LONG).show(); if (activity instanceof MapActivity) { ((MapActivity) activity).getMapView().refreshMap(true); From 7765383d8531e9360290fffd923e12dd18e7b8c0 Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Fri, 11 Sep 2015 16:35:11 +0300 Subject: [PATCH 80/90] Show GPX on map dialog fix --- OsmAnd/res/layout/list_menu_item_native.xml | 29 ++- OsmAnd/res/values/strings.xml | 2 + .../net/osmand/plus/helpers/GpxUiHelper.java | 177 +++++++++--------- .../dialogs/DeletePoiDialogFragment.java | 7 +- 4 files changed, 104 insertions(+), 111 deletions(-) diff --git a/OsmAnd/res/layout/list_menu_item_native.xml b/OsmAnd/res/layout/list_menu_item_native.xml index bf6182eda2..c4ab4f4296 100644 --- a/OsmAnd/res/layout/list_menu_item_native.xml +++ b/OsmAnd/res/layout/list_menu_item_native.xml @@ -1,32 +1,31 @@ - + android:orientation="horizontal"> + android:visibility="gone"/> + android:textSize="@dimen/default_list_text_size"/> + android:visibility="gone"/> + android:layout_marginRight="24dp" + android:focusable="false"/> \ No newline at end of file diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index a54367adb0..6790d5bd4f 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -2261,4 +2261,6 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A Recent places Favourites Successfully saved at: %1$s + POI will be deleted once you upload your changes + Show GPX diff --git a/OsmAnd/src/net/osmand/plus/helpers/GpxUiHelper.java b/OsmAnd/src/net/osmand/plus/helpers/GpxUiHelper.java index f00aab8541..9476551072 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/GpxUiHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/GpxUiHelper.java @@ -5,7 +5,6 @@ import android.app.Application; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; -import android.os.Build; import android.support.v7.app.AlertDialog; import android.util.TypedValue; import android.view.View; @@ -47,27 +46,26 @@ public class GpxUiHelper { GPXTrackAnalysis analysis = result.getAnalysis(f == null ? 0 : f.lastModified()); return getDescription(app, analysis, html); } - + public static String getDescription(OsmandApplication app, TrkSegment t, boolean html) { return getDescription(app, GPXTrackAnalysis.segment(0, t), html); } - - + public static String getColorValue(String clr, String value, boolean html) { - if(!html) { + if (!html) { return value; } return "" + value + ""; } - + public static String getColorValue(String clr, String value) { return getColorValue(clr, value, true); } - + public static String getDescription(OsmandApplication app, GPXTrackAnalysis analysis, boolean html) { StringBuilder description = new StringBuilder(); - String nl = html?"
":"\n"; + String nl = html ? "
" : "\n"; String timeSpanClr = Algorithms.colorToString(app.getResources().getColor(R.color.gpx_time_span_color)); String distanceClr = Algorithms.colorToString(app.getResources().getColor(R.color.gpx_distance_color)); String speedClr = Algorithms.colorToString(app.getResources().getColor(R.color.gpx_speed)); @@ -75,32 +73,32 @@ public class GpxUiHelper { String descClr = Algorithms.colorToString(app.getResources().getColor(R.color.gpx_altitude_desc)); // OUTPUT: // 1. Total distance, Start time, End time - description.append(app.getString(R.string.gpx_info_distance, getColorValue(distanceClr, - OsmAndFormatter.getFormattedDistance(analysis.totalDistance, app), html), - getColorValue(distanceClr, analysis.points+"", html) )); - if(analysis.totalTracks > 1) { - description.append(nl).append(app.getString(R.string.gpx_info_subtracks, getColorValue(speedClr, analysis.totalTracks+"", html))); + description.append(app.getString(R.string.gpx_info_distance, getColorValue(distanceClr, + OsmAndFormatter.getFormattedDistance(analysis.totalDistance, app), html), + getColorValue(distanceClr, analysis.points + "", html))); + if (analysis.totalTracks > 1) { + description.append(nl).append(app.getString(R.string.gpx_info_subtracks, getColorValue(speedClr, analysis.totalTracks + "", html))); } - if(analysis.wptPoints > 0) { - description.append(nl).append(app.getString(R.string.gpx_info_waypoints, getColorValue(speedClr, analysis.wptPoints+"", html))); + if (analysis.wptPoints > 0) { + description.append(nl).append(app.getString(R.string.gpx_info_waypoints, getColorValue(speedClr, analysis.wptPoints + "", html))); } - if(analysis.isTimeSpecified()) { - description.append(nl).append(app.getString(R.string.gpx_info_start_time, analysis.startTime)); - description.append(nl).append(app.getString(R.string.gpx_info_end_time, analysis.endTime)); + if (analysis.isTimeSpecified()) { + description.append(nl).append(app.getString(R.string.gpx_info_start_time, analysis.startTime)); + description.append(nl).append(app.getString(R.string.gpx_info_end_time, analysis.endTime)); } // 2. Time span - if(analysis.timeSpan > 0 && analysis.timeSpan / 1000 != analysis.timeMoving / 1000) { - final String formatDuration = Algorithms.formatDuration((int) (analysis.timeSpan/1000) - ); + if (analysis.timeSpan > 0 && analysis.timeSpan / 1000 != analysis.timeMoving / 1000) { + final String formatDuration = Algorithms.formatDuration((int) (analysis.timeSpan / 1000) + ); description.append(nl).append(app.getString(R.string.gpx_timespan, getColorValue(timeSpanClr, formatDuration, html))); } // 3. Time moving, if any - if(analysis.isTimeMoving()){ - final String formatDuration = Algorithms.formatDuration((int) (analysis.timeMoving/1000) - ); + if (analysis.isTimeMoving()) { + final String formatDuration = Algorithms.formatDuration((int) (analysis.timeMoving / 1000) + ); description.append(nl).append(app.getString(R.string.gpx_timemoving, getColorValue(timeSpanClr, formatDuration, html))); } @@ -115,32 +113,32 @@ public class GpxUiHelper { String max = getColorValue(ascClr, OsmAndFormatter.getFormattedAlt(analysis.maxElevation, app), html); String asc = getColorValue(ascClr, OsmAndFormatter.getFormattedAlt(analysis.diffElevationUp, app), html); String desc = getColorValue(descClr, OsmAndFormatter.getFormattedAlt(analysis.diffElevationDown, app), html); - description.append(app.getString(R.string.gpx_info_diff_altitude,min +" - " + max )); + description.append(app.getString(R.string.gpx_info_diff_altitude, min + " - " + max)); description.append(nl); - description.append(app.getString(R.string.gpx_info_asc_altitude,"\u2193 " + desc + " \u2191 " + asc + "")); + description.append(app.getString(R.string.gpx_info_asc_altitude, "\u2193 " + desc + " \u2191 " + asc + "")); } - if(analysis.isSpeedSpecified()){ + if (analysis.isSpeedSpecified()) { String avg = getColorValue(speedClr, OsmAndFormatter.getFormattedSpeed(analysis.avgSpeed, app), html); String max = getColorValue(ascClr, OsmAndFormatter.getFormattedSpeed(analysis.maxSpeed, app), html); - description.append(nl).append(app.getString(R.string.gpx_info_average_speed,avg)); - description.append(nl).append(app.getString(R.string.gpx_info_maximum_speed,max)); + description.append(nl).append(app.getString(R.string.gpx_info_average_speed, avg)); + description.append(nl).append(app.getString(R.string.gpx_info_maximum_speed, max)); } return description.toString(); } public static AlertDialog selectGPXFile(List selectedGpxList, final Activity activity, - final boolean showCurrentGpx, final boolean multipleChoice, final CallbackWithObject callbackWithObject){ + final boolean showCurrentGpx, final boolean multipleChoice, final CallbackWithObject callbackWithObject) { OsmandApplication app = (OsmandApplication) activity.getApplication(); final File dir = app.getAppPath(IndexConstants.GPX_INDEX_DIR); final List allGpxList = getSortedGPXFilenames(dir, false); - if(allGpxList.isEmpty()){ + if (allGpxList.isEmpty()) { AccessibleToast.makeText(activity, R.string.gpx_files_not_found, Toast.LENGTH_LONG).show(); } - if(!allGpxList.isEmpty() || showCurrentGpx){ - if(showCurrentGpx){ + if (!allGpxList.isEmpty() || showCurrentGpx) { + if (showCurrentGpx) { allGpxList.add(0, activity.getString(R.string.show_current_gpx_title)); } final ContextMenuAdapter adapter = createGpxContextMenuAdapter(activity, allGpxList, selectedGpxList, multipleChoice, @@ -150,17 +148,17 @@ public class GpxUiHelper { } return null; } - + public static AlertDialog selectGPXFile(final Activity activity, - final boolean showCurrentGpx, final boolean multipleChoice, final CallbackWithObject callbackWithObject) { + final boolean showCurrentGpx, final boolean multipleChoice, final CallbackWithObject callbackWithObject) { OsmandApplication app = (OsmandApplication) activity.getApplication(); final File dir = app.getAppPath(IndexConstants.GPX_INDEX_DIR); final List list = getSortedGPXFilenames(dir, false); - if(list.isEmpty()){ + if (list.isEmpty()) { AccessibleToast.makeText(activity, R.string.gpx_files_not_found, Toast.LENGTH_LONG).show(); } - if(!list.isEmpty() || showCurrentGpx){ - if(showCurrentGpx){ + if (!list.isEmpty() || showCurrentGpx) { + if (showCurrentGpx) { list.add(0, activity.getString(R.string.show_current_gpx_title)); } @@ -172,7 +170,7 @@ public class GpxUiHelper { } private static ContextMenuAdapter createGpxContextMenuAdapter(Activity activity, List allGpxList, - List selectedGpxList, boolean multipleChoice, + List selectedGpxList, boolean multipleChoice, boolean showCurrentTrack) { final ContextMenuAdapter adapter = new ContextMenuAdapter(activity); //element position in adapter @@ -197,9 +195,9 @@ public class GpxUiHelper { } protected static void updateSelection(List selectedGpxList, boolean showCurrentTrack, - final ContextMenuAdapter adapter, int i, String fileName) { - if(i == 0 && showCurrentTrack) { - if(selectedGpxList.contains("")) { + final ContextMenuAdapter adapter, int i, String fileName) { + if (i == 0 && showCurrentTrack) { + if (selectedGpxList.contains("")) { adapter.setSelection(i, 1); } } else { @@ -211,13 +209,13 @@ public class GpxUiHelper { } } } - + private static void setDescripionInDialog(final ArrayAdapter adapter, final ContextMenuAdapter cmAdapter, Activity activity, - final File dir, String filename, final int position) { + final File dir, String filename, final int position) { final Application app = activity.getApplication(); final File f = new File(dir, filename); loadGPXFileInDifferentThread(activity, new CallbackWithObject() { - + @Override public boolean processResult(GPXFile[] result) { cmAdapter.setItemName(position, cmAdapter.getItemName(position) + "\n" + getDescription((OsmandApplication) app, result[0], f, false)); @@ -228,19 +226,14 @@ public class GpxUiHelper { } private static AlertDialog createDialog(final Activity activity, final boolean showCurrentGpx, - final boolean multipleChoice, final CallbackWithObject callbackWithObject, - final List list, final ContextMenuAdapter adapter) { + final boolean multipleChoice, final CallbackWithObject callbackWithObject, + final List list, final ContextMenuAdapter adapter) { final OsmandApplication app = (OsmandApplication) activity.getApplication(); final File dir = app.getAppPath(IndexConstants.GPX_INDEX_DIR); - AlertDialog.Builder b = new AlertDialog.Builder(activity); + AlertDialog.Builder builder = new AlertDialog.Builder(activity); // final int padding = (int) (12 * activity.getResources().getDisplayMetrics().density + 0.5f); final boolean light = app.getSettings().isLightContent(); - final int layout; - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { - layout = R.layout.list_menu_item; - } else { - layout = R.layout.list_menu_item_native; - } + final int layout = R.layout.list_menu_item_native; final ArrayAdapter listAdapter = new ArrayAdapter(activity, layout, R.id.title, adapter.getItemNames()) { @@ -258,7 +251,7 @@ public class GpxUiHelper { return; } int nline = adapter.getItemName(position).indexOf('\n'); - if(nline == -1) { + if (nline == -1) { setDescripionInDialog(arrayAdapter, adapter, activity, dir, list.get(position), position); } else { adapter.setItemName(position, adapter.getItemName(position).substring(0, nline)); @@ -267,7 +260,7 @@ public class GpxUiHelper { } }); - if(showCurrentGpx && position == 0) { + if (showCurrentGpx && position == 0) { icon.setVisibility(View.INVISIBLE); } else { icon.setVisibility(View.VISIBLE); @@ -303,35 +296,37 @@ public class GpxUiHelper { public void onClick(DialogInterface dialog, int position) { } }; - b.setAdapter(listAdapter, onClickListener); + builder.setAdapter(listAdapter, onClickListener); if (multipleChoice) { - b.setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() { + builder.setTitle(R.string.show_gpx) + .setPositiveButton(R.string.shared_string_ok, new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - GPXFile currentGPX = null; - //clear all previously selected files before adding new one - OsmandApplication app = (OsmandApplication) activity.getApplication(); - if(app != null && app.getSelectedGpxHelper() != null){ - app.getSelectedGpxHelper().clearAllGpxFileToShow(); - } - if (showCurrentGpx && adapter.getSelection(0) > 0) { - currentGPX = app.getSavingTrackHelper().getCurrentGpx(); - } - List s = new ArrayList(); - for (int i = (showCurrentGpx ? 1 : 0); i < adapter.length(); i++) { - if (adapter.getSelection(i) > 0) { - s.add(list.get(i)); + @Override + public void onClick(DialogInterface dialog, int which) { + GPXFile currentGPX = null; + //clear all previously selected files before adding new one + OsmandApplication app = (OsmandApplication) activity.getApplication(); + if (app != null && app.getSelectedGpxHelper() != null) { + app.getSelectedGpxHelper().clearAllGpxFileToShow(); + } + if (showCurrentGpx && adapter.getSelection(0) > 0) { + currentGPX = app.getSavingTrackHelper().getCurrentGpx(); + } + List s = new ArrayList<>(); + for (int i = (showCurrentGpx ? 1 : 0); i < adapter.length(); i++) { + if (adapter.getSelection(i) > 0) { + s.add(list.get(i)); + } + } + dialog.dismiss(); + loadGPXFileInDifferentThread(activity, callbackWithObject, dir, currentGPX, + s.toArray(new String[s.size()])); } - } - dialog.dismiss(); - loadGPXFileInDifferentThread(activity, callbackWithObject, dir, currentGPX, - s.toArray(new String[s.size()])); - } - }); + }) + .setNegativeButton(R.string.shared_string_cancel, null); } - final AlertDialog dlg = b.create(); + final AlertDialog dlg = builder.create(); dlg.setCanceledOnTouchOutside(true); dlg.getListView().setOnItemClickListener(new OnItemClickListener() { @Override @@ -360,27 +355,27 @@ public class GpxUiHelper { } public static List getSortedGPXFilenamesByDate(File dir, boolean absolutePath) { - final Map mp = new HashMap(); + final Map mp = new HashMap<>(); readGpxDirectory(dir, mp, "", absolutePath); - ArrayList list = new ArrayList(mp.keySet()); + ArrayList list = new ArrayList<>(mp.keySet()); Collections.sort(list, new Comparator() { @Override public int compare(String object1, String object2) { Long l1 = mp.get(object1); Long l2 = mp.get(object2); - long lhs = l1 == null ? 0 : l1.longValue(); - long rhs = l2 == null ? 0 : l2.longValue(); + long lhs = l1 == null ? 0 : l1; + long rhs = l2 == null ? 0 : l2; return lhs < rhs ? 1 : (lhs == rhs ? 0 : -1); } }); return list; } - + public static List getSortedGPXFilenames(File dir, boolean absolutePath) { - final Map mp = new HashMap(); + final Map mp = new HashMap<>(); readGpxDirectory(dir, mp, "", absolutePath); - ArrayList list = new ArrayList(mp.keySet()); + ArrayList list = new ArrayList<>(mp.keySet()); Collections.sort(list, new Comparator() { @Override public int compare(String object1, String object2) { @@ -391,8 +386,8 @@ public class GpxUiHelper { return list; } - private static void readGpxDirectory(File dir, final Map map, String parent, - boolean absolutePath) { + private static void readGpxDirectory(File dir, final Map map, String parent, + boolean absolutePath) { if (dir != null && dir.canRead()) { File[] files = dir.listFiles(); if (files != null) { @@ -407,9 +402,9 @@ public class GpxUiHelper { } } } - + private static void loadGPXFileInDifferentThread(final Activity activity, final CallbackWithObject callbackWithObject, - final File dir, final GPXFile currentFile, final String... filename) { + final File dir, final GPXFile currentFile, final String... filename) { final ProgressDialog dlg = ProgressDialog.show(activity, activity.getString(R.string.loading_smth, ""), activity.getString(R.string.loading_data)); new Thread(new Runnable() { diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/DeletePoiDialogFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/DeletePoiDialogFragment.java index db441a8bff..a2b15ec7a5 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/DeletePoiDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/DeletePoiDialogFragment.java @@ -20,8 +20,6 @@ import net.osmand.plus.osmedit.OpenstreetmapUtil; import net.osmand.plus.osmedit.OsmEditingPlugin; import net.osmand.plus.osmedit.OsmPoint; -import java.text.MessageFormat; - public class DeletePoiDialogFragment extends DialogFragment { private static final String KEY_AMENITY_NODE = "amenity_node"; @@ -47,9 +45,8 @@ public class DeletePoiDialogFragment extends DialogFragment { new Runnable() { @Override public void run() { - AccessibleToast.makeText(activity, MessageFormat.format( - getString(R.string.poi_action_succeded_template), - getString(R.string.poi_action_delete)), + AccessibleToast.makeText(activity, + getString(R.string.poi_deleted_localy), Toast.LENGTH_LONG).show(); if (activity instanceof MapActivity) { ((MapActivity) activity).getMapView().refreshMap(true); From 14f7c85090666da2225d643732106e69683c03c6 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Fri, 11 Sep 2015 15:35:27 +0200 Subject: [PATCH 81/90] Translated using Weblate (Danish) Currently translated at 100.0% (1134 of 1134 strings) --- OsmAnd/res/values-da/phrases.xml | 44 ++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index cf6c67b738..c1effcb214 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -1129,10 +1129,10 @@ Græsk-ortodoks Syvende Dags Adventist Nyapostolsk - Den engelske kirke + Den Engelske kirke Shiisme Forenede reformerte kirke - Den skotske kirke + Den Skotske kirke Iglesia ni cristo Mennonit Assemblies of god @@ -1185,4 +1185,44 @@ Befolkning + Fleretages + + Står + Væg sløjfer + Bygning + Skur + Pullert + Uformel + + Bredbladet + Nålebladet + Blandet + Bladløs + + Oliven + Æble + Palmeolie + Appelsin + Mandel + Banan + Hassel + Kokosnød + Ibenholt + Kirsebær + Valnød + Blomme + Fersken + Te + Coca + Kiwi + Frugtplantage + Nektarin + Mango + Gummitræ + Dadel + Kaffe + Granatæble + + Kældet + Reol From 3b88dae3c5b74387f17d8044d4ff3dd6a215630a Mon Sep 17 00:00:00 2001 From: Franco Date: Fri, 11 Sep 2015 15:34:25 +0200 Subject: [PATCH 82/90] Translated using Weblate (Argentinean Spanish) Currently translated at 97.0% (1100 of 1134 strings) --- OsmAnd/res/values-es-rAR/phrases.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index c86d8bff2f..9898747358 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -1165,4 +1165,8 @@ Suministros agrícolas Venta de azulejos + Población + Subterráneo + Varios pisos + From 938c66c41aedb5809a7376431da6c10aa0fd9749 Mon Sep 17 00:00:00 2001 From: ezjerry liao Date: Fri, 11 Sep 2015 15:23:39 +0200 Subject: [PATCH 83/90] Translated using Weblate (Chinese (Taiwan)) Currently translated at 98.2% (1114 of 1134 strings) --- OsmAnd/res/values-zh-rTW/phrases.xml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/OsmAnd/res/values-zh-rTW/phrases.xml b/OsmAnd/res/values-zh-rTW/phrases.xml index 7d0098ab40..74a122ee12 100644 --- a/OsmAnd/res/values-zh-rTW/phrases.xml +++ b/OsmAnd/res/values-zh-rTW/phrases.xml @@ -1166,4 +1166,23 @@ 人口數 + 地下 + 多層 + + 立台 + 壁掛架 + 擱物架 + 建築物 + 車棚 + 系船柱 + 非正式的 + + 闊葉樹 + 針葉樹 + 混合林 + 無葉植物 + + 橄欖樹 + 蘋果樹 + 棕櫚油 From 54ad5ae23bb0743cca9a6eea6d13a739a285d5aa Mon Sep 17 00:00:00 2001 From: jan madsen Date: Fri, 11 Sep 2015 15:45:02 +0200 Subject: [PATCH 84/90] Translated using Weblate (Danish) Currently translated at 100.0% (1771 of 1771 strings) --- OsmAnd/res/values-da/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index 386d3351f5..dd16205ae4 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -2129,4 +2129,6 @@ Favoritter slet Gemt korrekt: %1$s +IP vil blive slettet, når ændringer overføres + Vis GPX From 0d779d622845c6db18a98f3b12342f605f63b9ac Mon Sep 17 00:00:00 2001 From: Franco Date: Fri, 11 Sep 2015 16:08:15 +0200 Subject: [PATCH 85/90] Translated using Weblate (Spanish) Currently translated at 100.0% (1771 of 1771 strings) --- OsmAnd/res/values-es/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-es/strings.xml b/OsmAnd/res/values-es/strings.xml index 81d1e5014b..d3f2a6fe27 100644 --- a/OsmAnd/res/values-es/strings.xml +++ b/OsmAnd/res/values-es/strings.xml @@ -2187,4 +2187,6 @@ Favoritos borrar Guardado exitosamente en: %1$s +El PDI se eliminará una vez subido los cambios + Mostrar GPX From 6addb27d4bf63d4d02f2c5dcf53b1976983cf631 Mon Sep 17 00:00:00 2001 From: Franco Date: Fri, 11 Sep 2015 16:09:01 +0200 Subject: [PATCH 86/90] Translated using Weblate (Argentinean Spanish) Currently translated at 100.0% (1771 of 1771 strings) --- OsmAnd/res/values-es-rAR/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index 3ebb2e5abe..fc9b17c36a 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -2049,4 +2049,6 @@ Favoritos borrar Guardado exitosamente como: %1$s +El PDI se eliminará una vez subido los cambios + Mostrar GPX From beca2f9522d5fced0819f4d93de427beb55afc5f Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Fri, 11 Sep 2015 17:15:52 +0300 Subject: [PATCH 87/90] Show GPX on map dialog fix --- OsmAnd/res/layout/fav_group_edit.xml | 15 +++++++ .../net/osmand/plus/FavouritesDbHelper.java | 9 +++- .../activities/FavoritesTreeFragment.java | 41 +++++++++++-------- .../plus/activities/MapActivityLayers.java | 3 +- 4 files changed, 49 insertions(+), 19 deletions(-) diff --git a/OsmAnd/res/layout/fav_group_edit.xml b/OsmAnd/res/layout/fav_group_edit.xml index ba84dcc8f6..66252280a9 100644 --- a/OsmAnd/res/layout/fav_group_edit.xml +++ b/OsmAnd/res/layout/fav_group_edit.xml @@ -6,6 +6,21 @@ android:paddingRight="7dp" android:stretchColumns="1"> + + + + + + + Date: Fri, 11 Sep 2015 15:53:51 +0200 Subject: [PATCH 88/90] Translated using Weblate (Argentinean Spanish) Currently translated at 98.3% (1115 of 1134 strings) --- OsmAnd/res/values-es-rAR/phrases.xml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index 9898747358..470aedc014 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -1169,4 +1169,21 @@ Subterráneo Varios pisos + Soporte + Soporte de pared + Informal + + Hoja ancha + Hoja acicular + Mixto + Sin hojas + + Olivo + Manzano + Aceite de palma + Naranjo + Almendro + Banano + Avellanos + Cocotero From 551bb7ca6532cf9d5884129bcd476ecf69bd9729 Mon Sep 17 00:00:00 2001 From: Franco Date: Fri, 11 Sep 2015 16:06:50 +0200 Subject: [PATCH 89/90] Translated using Weblate (Spanish) Currently translated at 99.2% (1126 of 1134 strings) --- OsmAnd/res/values-es/phrases.xml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/OsmAnd/res/values-es/phrases.xml b/OsmAnd/res/values-es/phrases.xml index 9eed1e7cab..3d8bb760fc 100644 --- a/OsmAnd/res/values-es/phrases.xml +++ b/OsmAnd/res/values-es/phrases.xml @@ -1168,4 +1168,36 @@ Insumos agrícolas Azulejos + Población + Subterráneo + Varios pisos + + Soportes + Hoja ancha + Hoja acicular + Mixto + Sin hojas + + Olivo + Manzano + Aceite de palma + Naranjo + Almendro + Banano / Plátano + Avellano + Cocotéro + Caqui + Cerezo + Nogal + Ciruelo + Melocotón + + Coca + Kiwi + Prado con huertos + Mango + Fecha + Café + Granada + From c59cc870a181d33cc945b470e7f4de2fc6f8e6f7 Mon Sep 17 00:00:00 2001 From: Adriano Rosa Date: Fri, 11 Sep 2015 16:52:15 +0200 Subject: [PATCH 90/90] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (1771 of 1771 strings) --- OsmAnd/res/values-pt-rBR/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index 47ae648ac8..c76b0e12ae 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -1818,4 +1818,6 @@ Favoritos apagar Salvo com sucesso em: %1$s +POI será apagado quando você enviar suas alterações + Mostrar GPX