This commit is contained in:
Alexey Kulish 2015-11-13 19:39:46 +03:00
commit e4489899e4
33 changed files with 787 additions and 638 deletions

View file

@ -397,7 +397,6 @@ public class GeoPointParserUtil {
actual = GeoPointParserUtil.parse(url);
assertGeoPoint(actual, new GeoParsedPoint(dlat, dlon, z));
// TODO this URL does not work, where is it used?
// whatsapp
// https://maps.google.com/maps?q=loc:34.99393,-106.61568 (You)
z = GeoParsedPoint.NO_ZOOM;
@ -406,6 +405,14 @@ public class GeoPointParserUtil {
actual = GeoPointParserUtil.parse(url);
assertGeoPoint(actual, new GeoParsedPoint(dlat, dlon, z));
// whatsapp
// https://maps.google.com/maps?q=loc:34.99393,-106.61568 (USERNAME)
z = GeoParsedPoint.NO_ZOOM;
url = "https://maps.google.com/maps?q=loc:" + dlat + "," + dlon + " (USER NAME)";
System.out.println("url: " + url);
actual = GeoPointParserUtil.parse(url);
assertGeoPoint(actual, new GeoParsedPoint(dlat, dlon, z));
// http://www.google.com/maps/search/food/34,-106,14z
url = "http://www.google.com/maps/search/food/" + ilat + "," + ilon + "," + z + "z";
System.out.println("url: " + url);
@ -947,10 +954,9 @@ public class GeoPointParserUtil {
if(opath.contains(pref)) {
opath = opath.substring(opath.lastIndexOf(pref) + pref.length());
}
final String postf = " (You)";
if (opath.contains(postf)) {
opath = opath.substring(0, opath.indexOf(postf));
}
final String postf = "\\s\\((\\p{IsAlphabetic}|\\s)*\\)$";
opath = opath.replaceAll(postf, "");
System.out.println("opath=" + opath);
return parseGoogleMapsPath(opath, params);
}
if (fragment != null) {

View file

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.osmand.plus"
android:installLocation="auto"
android:versionName="@string/app_version"
android:versionCode="231"
android:versionName="@string/app_version" >
package="net.osmand.plus">
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" />
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.STORAGE" />
@ -22,96 +22,42 @@
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-feature
android:name="android.hardware.microphone"
android:required="false" />
<uses-feature
android:name="android.hardware.wifi"
android:required="false" />
<uses-feature
android:name="android.hardware.location"
android:required="false" />
<uses-feature
android:name="android.hardware.location.network"
android:required="false" />
<uses-feature
android:name="android.hardware.location.gps"
android:required="false" />
<uses-feature
android:name="android.hardware.sensor.light"
android:required="false" />
<uses-feature
android:name="android.hardware.sensor.compass"
android:required="false" />
<uses-feature
android:name="android.hardware.sensor.accelerometer"
android:required="false" />
<uses-feature
android:name="android.hardware.sensor.gyroscope"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<android:uses-permission android:name="android.permission.READ_PHONE_STATE" />
<android:uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- android:theme="@style/OsmandLightDarkActionBarTheme" -->
<application
android:name=".OsmandApplication"
android:allowBackup="true"
android:backupAgent=".OsmandBackupAgent"
android:configChanges="locale"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:largeHeap="true"
android:restoreAnyVersion="true"
android:theme="@style/OsmandDarkTheme" >
<meta-data
android:name="com.google.android.backup.api_key"
android:value="AEdPqrEAAAAIqF3tNGT66etVBn_vgzpfAY1wmIzKV1Ss6Ku-2A" />
<meta-data
android:name="com.sec.android.support.multiwindow"
android:value="true" />
<meta-data
android:name="com.sec.android.multiwindow.DEFAULT_SIZE_W"
android:resource="@dimen/app_defaultsize_w"
android:value="" />
<meta-data
android:name="com.sec.android.multiwindow.DEFAULT_SIZE_H"
android:resource="@dimen/app_defaultsize_h"
android:value="" />
<meta-data
android:name="com.sec.android.multiwindow.MINIMUM_SIZE_W"
android:resource="@dimen/app_minimumsize_w"
android:value="" />
<meta-data
android:name="com.sec.android.multiwindow.MINIMUM_SIZE_H"
android:resource="@dimen/app_minimumsize_h"
android:value="" />
<meta-data
android:name="com.sec.minimode.icon.portrait.normal"
android:resource="@drawable/icon"
android:value="" />
<meta-data
android:name="com.sec.minimode.icon.landscape.normal"
android:resource="@drawable/icon"
android:value="" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.microphone" android:required="false" />
<uses-feature android:name="android.hardware.wifi" android:required="false" />
<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.network" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.sensor.light" android:required="false" />
<uses-feature android:name="android.hardware.sensor.compass" android:required="false" />
<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="false" />
<uses-feature android:name="android.hardware.sensor.gyroscope" android:required="false" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<activity android:name=".activities.HelpActivity" />
<activity android:name=".activities.ExitActivity" />
<supports-screens android:resizeable="true" android:smallScreens="true" android:normalScreens="true" android:largeScreens="true"
android:xlargeScreens="true" android:anyDensity="true" />
<!-- android:theme="@style/OsmandLightDarkActionBarTheme" -->
<application android:allowBackup="true" android:backupAgent="net.osmand.plus.OsmandBackupAgent"
android:icon="@drawable/icon" android:label="@string/app_name"
android:name="net.osmand.plus.OsmandApplication" android:configChanges="locale"
android:theme="@style/OsmandDarkTheme" android:restoreAnyVersion="true" android:largeHeap="true">
<meta-data android:name="com.google.android.backup.api_key" android:value="AEdPqrEAAAAIqF3tNGT66etVBn_vgzpfAY1wmIzKV1Ss6Ku-2A" />
<meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />
<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_W" android:resource="@dimen/app_defaultsize_w" android:value="" />
<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_H" android:resource="@dimen/app_defaultsize_h" android:value="" />
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_W" android:resource="@dimen/app_minimumsize_w" android:value="" />
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_H" android:resource="@dimen/app_minimumsize_h" android:value="" />
<meta-data android:name="com.sec.minimode.icon.portrait.normal" android:resource="@drawable/icon" android:value="" />
<meta-data android:name="com.sec.minimode.icon.landscape.normal" android:resource="@drawable/icon" android:value="" />
<activity android:name="net.osmand.plus.activities.HelpActivity" />
<activity android:name="net.osmand.plus.activities.ExitActivity" />
<provider
android:name="android.support.v4.content.FileProvider"
@ -123,39 +69,27 @@
android:resource="@xml/paths" />
</provider>
<activity
android:name=".activities.MapActivity"
android:label="@string/app_name"
android:launchMode="singleTop"
android:screenOrientation="unspecified" >
<activity android:name="net.osmand.plus.activities.MapActivity" android:label="@string/app_name"
android:screenOrientation="unspecified" android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="*"
android:mimeType="binary/octet-stream"
android:scheme="content" />
<data
android:host="*"
android:mimeType="application/octet-stream"
android:scheme="content" />
<data android:scheme="content" android:host="*" android:mimeType="binary/octet-stream" />
<data android:scheme="content" android:host="*" android:mimeType="application/octet-stream" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" />
</intent-filter>
<intent-filter>
<data android:scheme="http" />
<data android:host="osmand.net" />
<data android:pathPrefix="/go" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.APP_MAPS" />
@ -163,13 +97,12 @@
<category android:name="android.intent.category.CAR_DOCK" />
<category android:name="android.intent.category.DESK_DOCK" />
</intent-filter>
<intent-filter>
<data android:scheme="https" />
<data android:host="osmand.net" />
<data android:pathPrefix="/go" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.APP_MAPS" />
@ -178,180 +111,94 @@
<category android:name="android.intent.category.DESK_DOCK" />
</intent-filter>
<!-- android matches non-greedy : http://stackoverflow.com/questions/3400072/pathpattern-to-match-file-extension-does-not-work-if-a-period-exists-elsewhere-i -->
<!-- android matches non-greedy : http://stackoverflow.com/questions/3400072/pathpattern-to-match-file-extension-does-not-work-if-a-period-exists-elsewhere-i-->
<!-- mimeType&host are both needed or you will either have unwanted matching or no match when needed -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="*"
android:mimeType="*/*"
android:pathPattern=".*\\.gpx"
android:scheme="file" />
<data
android:host="*"
android:mimeType="*/*"
android:pathPattern=".*\\..*\\.gpx"
android:scheme="file" />
<data
android:host="*"
android:mimeType="*/*"
android:pathPattern=".*\\..*\\..*\\.gpx"
android:scheme="file" />
<data
android:host="*"
android:mimeType="*/*"
android:pathPattern=".*\\..*\\..*\\..*\\.gpx"
android:scheme="file" />
<data
android:host="*"
android:mimeType="*/*"
android:pathPattern=".*\\..*\\..*\\..*\\..*\\.gpx"
android:scheme="file" />
<data
android:host="*"
android:mimeType="*/*"
android:pathPattern=".*\\.kml"
android:scheme="file" />
<data
android:host="*"
android:mimeType="*/*"
android:pathPattern=".*\\..*\\.kml"
android:scheme="file" />
<data
android:host="*"
android:mimeType="*/*"
android:pathPattern=".*\\..*\\..*\\.kml"
android:scheme="file" />
<data
android:host="*"
android:mimeType="*/*"
android:pathPattern=".*\\..*\\..*\\..*\\.kml"
android:scheme="file" />
<data
android:host="*"
android:mimeType="*/*"
android:pathPattern=".*\\..*\\..*\\..*\\..*\\.kml"
android:scheme="file" />
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.gpx" />
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\..*\\.gpx" />
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\..*\\..*\\.gpx" />
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\..*\\..*\\..*\\.gpx" />
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\..*\\..*\\..*\\..*\\.gpx" />
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.kml" />
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\..*\\.kml" />
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\..*\\..*\\.kml" />
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\..*\\..*\\..*\\.kml" />
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\..*\\..*\\..*\\..*\\.kml" />
</intent-filter>
<!-- google navigation intent -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="google.navigation" />
<data android:scheme="osmand.navigation" />
</intent-filter>
</activity>
<receiver android:name=".audionotes.MediaRemoteControlReceiver" >
<receiver android:name="net.osmand.plus.audionotes.MediaRemoteControlReceiver">
<intent-filter>
<action android:name="android.intent.action.CAMERA_BUTTON" />
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
<activity
android:name=".activities.SettingsActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/shared_string_settings" />
<activity
android:name=".activities.SettingsGeneralActivity"
android:configChanges="keyboardHidden|orientation" />
<activity
android:name=".activities.SettingsNavigationActivity"
android:configChanges="keyboardHidden|orientation" />
<activity
android:name=".monitoring.SettingsMonitoringActivity"
android:configChanges="keyboardHidden|orientation" />
<activity
android:name=".rastermaps.SettingsRasterMapsActivity"
android:configChanges="keyboardHidden|orientation" />
<activity android:name=".routepointsnavigation.RoutePointsActivity" />
<activity
android:name=".osmedit.SettingsOsmEditingActivity"
android:configChanges="keyboardHidden|orientation" />
<activity
android:name=".development.SettingsDevelopmentActivity"
android:configChanges="keyboardHidden|orientation" />
<activity
android:name=".audionotes.SettingsAudioVideoActivity"
android:configChanges="keyboardHidden|orientation" />
<activity
android:name="net.osmand.access.SettingsAccessibilityActivity"
android:configChanges="keyboardHidden|orientation" />
<activity
android:name=".activities.search.SearchActivity"
android:label="@string/search_activity" />
<activity
android:name=".activities.ShowRouteInfoActivity"
android:label="@string/show_route" />
<activity
android:name=".activities.FavoritesListActivity"
android:label="@string/favourites_list_activity" />
<activity
android:name=".myplaces.FavoritesActivity"
android:windowSoftInputMode="adjustPan" />
<activity android:name=".activities.TrackActivity" />
<activity android:name=".activities.PluginsActivity" />
<activity android:name=".activities.PluginActivity" />
<activity
android:name=".activities.ContributionVersionActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/contribution_activity" />
<activity
android:name=".osmo.SettingsOsMoActivity"
android:configChanges="keyboardHidden|orientation" />
<activity android:name=".osmo.OsMoGroupsActivity" >
<activity android:name="net.osmand.plus.activities.SettingsActivity" android:label="@string/shared_string_settings" android:configChanges="keyboardHidden|orientation" />
<activity android:name="net.osmand.plus.activities.SettingsGeneralActivity" android:configChanges="keyboardHidden|orientation" />
<activity android:name="net.osmand.plus.activities.SettingsNavigationActivity" android:configChanges="keyboardHidden|orientation" />
<activity android:name="net.osmand.plus.monitoring.SettingsMonitoringActivity" android:configChanges="keyboardHidden|orientation" />
<activity android:name="net.osmand.plus.rastermaps.SettingsRasterMapsActivity" android:configChanges="keyboardHidden|orientation" />
<activity android:name="net.osmand.plus.routepointsnavigation.RoutePointsActivity" />
<activity android:name="net.osmand.plus.osmedit.SettingsOsmEditingActivity" android:configChanges="keyboardHidden|orientation" />
<activity android:name="net.osmand.plus.development.SettingsDevelopmentActivity" android:configChanges="keyboardHidden|orientation" />
<activity android:name="net.osmand.plus.audionotes.SettingsAudioVideoActivity" android:configChanges="keyboardHidden|orientation" />
<activity android:name="net.osmand.access.SettingsAccessibilityActivity" android:configChanges="keyboardHidden|orientation" />
<activity android:name="net.osmand.plus.activities.search.SearchActivity" android:label="@string/search_activity" />
<activity android:name="net.osmand.plus.activities.ShowRouteInfoActivity" android:label="@string/show_route" />
<activity android:name="net.osmand.plus.activities.FavoritesListActivity" android:label="@string/favourites_list_activity" />
<activity android:name=".myplaces.FavoritesActivity" android:windowSoftInputMode="adjustPan" />
<activity android:name="net.osmand.plus.activities.TrackActivity"/>
<activity android:name="net.osmand.plus.activities.PluginsActivity" />
<activity android:name="net.osmand.plus.activities.PluginActivity" />
<activity android:name="net.osmand.plus.activities.ContributionVersionActivity" android:configChanges="keyboardHidden|orientation" android:label="@string/contribution_activity" />
<activity android:name="net.osmand.plus.osmo.SettingsOsMoActivity" android:configChanges="keyboardHidden|orientation" />
<activity android:name="net.osmand.plus.osmo.OsMoGroupsActivity">
<intent-filter>
<data
android:host="z.osmo.mobi"
android:scheme="http" />
<data android:scheme="http" android:host="z.osmo.mobi" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
<activity
android:name=".activities.search.SearchPOIActivity"
android:label="@string/searchpoi_activity" />
<activity
android:name=".activities.search.SearchAddressActivity"
android:label="@string/select_address_activity" />
<activity android:name=".activities.search.SearchCityByNameActivity" />
<activity android:name=".activities.search.SearchRegionByNameActivity" />
<activity android:name=".activities.search.SearchStreetByNameActivity" />
<activity android:name=".activities.search.SearchStreet2ByNameActivity" />
<activity android:name=".activities.search.SearchBuildingByNameActivity" />
<activity
android:name=".sherpafy.TourViewActivity"
android:exported="true"
android:label="Sherpafy"
android:launchMode="singleInstance" />
<activity android:name=".activities.EditPOIFilterActivity" />
<activity
android:name=".activities.search.GeoIntentActivity"
android:label="@string/app_name" >
<activity android:name="net.osmand.plus.activities.search.SearchPOIActivity" android:label="@string/searchpoi_activity" />
<activity android:name="net.osmand.plus.activities.search.SearchAddressActivity" android:label="@string/select_address_activity" />
<activity android:name="net.osmand.plus.activities.search.SearchCityByNameActivity" />
<activity android:name="net.osmand.plus.activities.search.SearchRegionByNameActivity" />
<activity android:name="net.osmand.plus.activities.search.SearchStreetByNameActivity" />
<activity android:name="net.osmand.plus.activities.search.SearchStreet2ByNameActivity" />
<activity android:name="net.osmand.plus.activities.search.SearchBuildingByNameActivity" />
<activity android:name="net.osmand.plus.sherpafy.TourViewActivity" android:exported="true"
android:launchMode= "singleInstance" android:label="Sherpafy" />
<activity android:name="net.osmand.plus.activities.EditPOIFilterActivity" />
<activity android:name="net.osmand.plus.activities.search.GeoIntentActivity" android:label="@string/app_name">
<intent-filter>
<data android:scheme="osmand.geo" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<data android:scheme="geo" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
<intent-filter>
<data android:scheme="http" />
@ -372,54 +219,28 @@
<data android:host="map.wap.qq.com" />
<data android:host="map.qq.com" />
<data android:host="maps.apple.com" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<intent-filter>
<data
android:host="www.google.com"
android:pathPrefix="/maps"
android:scheme="http" />
<data
android:host="www.google.com"
android:pathPrefix="/maps"
android:scheme="https" />
<data android:scheme="http" android:host="www.google.com" android:pathPrefix="/maps" />
<data android:scheme="https" android:host="www.google.com" android:pathPrefix="/maps" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<intent-filter>
<data
android:host="openstreetmap.de"
android:pathPrefix="/karte"
android:scheme="http" />
<data
android:host="openstreetmap.de"
android:pathPrefix="/karte"
android:scheme="https" />
<data android:scheme="http" android:host="openstreetmap.de" android:pathPrefix="/karte" />
<data android:scheme="https" android:host="openstreetmap.de" android:pathPrefix="/karte" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<intent-filter>
<data
android:host="download.osmand.net"
android:pathPrefix="/go"
android:scheme="http" />
<data
android:host="download.osmand.net"
android:pathPrefix="go"
android:scheme="http" />
<data android:scheme="http" android:host="download.osmand.net" android:pathPrefix="/go" />
<data android:scheme="http" android:host="download.osmand.net" android:pathPrefix="go" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.APP_MAPS" />
@ -436,28 +257,26 @@
</intent-filter>
-->
</activity>
<activity android:name=".development.TestVoiceActivity" />
<activity
android:name=".download.DownloadActivity"
android:label="" />
<activity android:name="net.osmand.plus.development.TestVoiceActivity" />
<activity android:name="net.osmand.plus.download.DownloadActivity" android:label="" />
<!-- keep android:process on a separate line !! -->
<service
android:name=".NavigationService"
android:label="@string/process_navigation_service"
android:process="net.osmand.plus"
android:stopWithTask="false" >
android:label="@string/process_navigation_service"
android:name="net.osmand.plus.NavigationService"
android:stopWithTask="false">
<intent-filter>
<action android:name="net.osmand.plus.NavigationService" />
</intent-filter>
</service>
<receiver android:name=".OnNavigationServiceAlarmReceiver" />
<activity android:name=".activities.PrintDialogActivity" />
<receiver android:name="net.osmand.plus.OnNavigationServiceAlarmReceiver" />
<activity android:name="net.osmand.plus.activities.PrintDialogActivity" />
<receiver
android:name=".DeviceAdminRecv"
android:name="net.osmand.plus.DeviceAdminRecv"
android:label="@string/app_name"
android:permission="android.permission.BIND_DEVICE_ADMIN" >
<meta-data
@ -469,9 +288,5 @@
<action android:name="android.app.action.DEVICE_ADMIN_DISABLED" />
</intent-filter>
</receiver>
<activity android:name=".activities.AppCompatPreferenceActivity" >
</activity>
</application>
</application>
</manifest>

View file

@ -32,7 +32,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:maxLines="2"
android:textColor="?android:textColorSecondary"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_desc_text_size"
tools:text="@string/lorem_ipsum" />
</FrameLayout>
@ -54,7 +54,8 @@
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_marginTop="5dp"
android:textColor="?android:textColorSecondary"
android:textSize="@dimen/default_desc_text_size" />
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_desc_text_size"
tools:text="Hellow world"/>
</LinearLayout>

View file

@ -307,7 +307,7 @@
android:layout_weight="1"
android:background="?attr/dashboard_button"
android:scaleType="center"
android:src="@drawable/map_action_waypoints"/>
android:src="@drawable/ic_action_flag_dark"/>
<View
android:layout_width="1dp"

View file

@ -35,7 +35,7 @@
<string name="poi_gift">Падарункі, сувеніры</string>
<string name="poi_baby_goods">Тавары для дзяцей</string>
<string name="poi_bathroom_furnishing">Сантэхніка, ванныя</string>
<string name="poi_bed">Усё для спальні</string>
<string name="poi_bed">Крама пасьцельнай бялізны</string>
<string name="poi_boutique">Буцік</string>
<string name="poi_chemist">Аптэка</string>
<string name="poi_clothes">Крама адзеньня</string>
@ -750,7 +750,7 @@
<string name="poi_fuel_e10">E10</string>
<string name="poi_fuel_e20">E20</string>
<string name="poi_fuel_e85">E85</string>
<string name="poi_fuel_biogas">E85</string>
<string name="poi_fuel_biogas">Біягаз</string>
<string name="poi_fuel_lh2">Вадкі вадарод</string>
<string name="poi_fuel_electricity">Электрычнасьць</string>
<string name="poi_farmyard">Падворак</string>
@ -838,7 +838,7 @@
<string name="poi_wiki_lang_uk">Украінская Вікі</string>
<string name="poi_wiki_lang_vi">В\'етнамская Вікі</string>
<string name="poi_wiki_lang_sw">Суахільская Вікі</string>
<string name="poi_barrier_entrance">Уваход</string>
<string name="poi_barrier_entrance">Праход у сьцяне ці плоце</string>
<string name="poi_entrance_main">Асноўны ўваход</string>
<string name="poi_entrance">Уваход</string>
<string name="poi_entrance_exit">Выхад</string>
@ -1039,8 +1039,8 @@
<string name="poi_recycling_cars">Аўтамабілі</string>
<string name="poi_recycling_bicycles">Ровары</string>
<string name="poi_drinking_water_yes">Пітная вада</string>
<string name="poi_drinking_water_no">Непрыдатная для піцьця вада</string>
<string name="poi_drinking_water_yes">Пітная вада: так</string>
<string name="poi_drinking_water_no">Пітная вада: не</string>
<string name="poi_supervised_yes">Кантралюемы аб\'ект</string>
<string name="poi_supervised_no">Некантралюемы аб\'ект</string>
<string name="poi_seasonal_yes">Сэзонны аб\'ект</string>
@ -1369,4 +1369,67 @@
<string name="poi_wheelchair_limited">Інвалідныя крэслы: абмежавана</string>
<string name="poi_wholesale">Опт</string>
</resources>
<string name="poi_traffic_calming_island">Астравок (перашкода)</string>
<string name="poi_tourism_yes">Турыстычны аб\'ект</string>
<string name="poi_religion_unitarian_universalist">Унітарны ўніверсалізм</string>
<string name="poi_religion_multifaith">Шматканфесійнасьць</string>
<string name="poi_religion_jain">Джайнізм</string>
<string name="poi_religion_scientologist">Саенталёгія</string>
<string name="poi_denomination_jehovahs_witness">Сьведкі Іеговы</string>
<string name="poi_denomination_united_reformed">Аб\'яднаная рэфармаваная царква</string>
<string name="poi_denomination_mennonite">Мэнаніцтва</string>
<string name="poi_denomination_assemblies_of_god">Асамблеі Бога</string>
<string name="poi_denomination_nazarene">Назаране</string>
<string name="poi_denomination_united_methodist">Аб\'яднаная метадысцкая царква</string>
<string name="poi_denomination_congregational">Кангрэгацыйная царква</string>
<string name="poi_denomination_dutch_reformed">Нідэрляндзкая рэфармацкая царква</string>
<string name="poi_denomination_apostolic">Апостальская царква</string>
<string name="poi_denomination_latter_day_saints">Рух сьвятых апошніх дзён</string>
<string name="poi_denomination_scientist">Саентызм</string>
<string name="poi_denomination_ethiopian_orthodox_tewahedo">Эфіёпская (абісінская) праваслаўная царква</string>
<string name="poi_denomination_unitarian">Унітарыянства</string>
<string name="poi_denomination_wesleyan">Вэсліянская царква</string>
<string name="poi_denomination_shaktism">Шактызм</string>
<string name="poi_denomination_shingon_shu">Сінгон</string>
<string name="poi_denomination_maronite">Мараніцкая каталіцкая царква</string>
<string name="poi_denomination_mahayana">Махаяна</string>
<string name="poi_debris">Рэшткі</string>
<string name="poi_jersey_barrier">Бар\'ерная агароджа</string>
<string name="poi_artwork_type_installation">Тып: інсталяцыя</string>
<string name="poi_artwork_type_mosaic">Тып: мазайка</string>
<string name="poi_artwork_type_relief">Тып: барэльеф</string>
<string name="poi_artwork_type_graffiti">Тып: графіці</string>
<string name="poi_artwork_type_stele">Тып: стэла</string>
<string name="poi_artwork_type_fountain">Тып: фантан</string>
<string name="poi_width">Шырыня</string>
<string name="poi_architect_name">Архітэктар</string>
<string name="poi_architecture_modern">Архітэктурны стыль: мадэрнізм</string>
<string name="poi_architecture_stalinist_neoclassicism">Архітэктурны стыль: сталінскі нэаклясіцызм</string>
<string name="poi_architecture_eclectic">Архітэктурны стыль: эклектыка</string>
<string name="poi_architecture_new_objectivity">Архітэктурны стыль: новая рэчыўнасць</string>
<string name="poi_architecture_contemporary">Архітэктурны стыль: сучасны</string>
<string name="poi_architecture_constructivism">Архітэктурны стыль: канструктывізм</string>
<string name="poi_architecture_timber_frame">Архітэктурны стыль: фахвэрк</string>
<string name="poi_architecture_art_nouveau">Архітэктурны стыль: мадэрн</string>
<string name="poi_architecture_neoclassicism">Архітэктурны стыль: нэаклясіцызм</string>
<string name="poi_architecture_victorian">Архітэктурны стыль: віктарыянскі</string>
<string name="poi_architecture_brutalism">Архітэктурны стыль: бруталізм</string>
<string name="poi_architecture_classicism">Архітэктурны стыль: клясіцызм</string>
<string name="poi_architecture_gothic">Архітэктурны стыль: готыка</string>
<string name="poi_architecture_oldrussian">Архітэктурны стыль: рускі (сярэднія вякі)</string>
<string name="poi_architecture_baroque">Архітэктурны стыль: барока</string>
<string name="poi_architecture_renaissance">Архітэктурны стыль: рэнесанс</string>
<string name="poi_architecture_romanesque">Архітэктурны стыль: раманскі</string>
<string name="poi_tunnel_waterway">Водны тунэль</string>
<string name="poi_tunnel_car">Тунэль для аўтамабіляў</string>
<string name="poi_tunnel_pedestrian">Тунэль для пешаходаў</string>
<string name="poi_tunnel_railway">Чыгуначны тунэль</string>
<string name="poi_bridge_car">Аўтамабільны мост</string>
<string name="poi_craft_electronics">Рамонт электронікі</string>
</resources>

View file

@ -2006,4 +2006,9 @@
<string name="whats_new">Што новага ў</string>
<string name="rendering_attr_hideProposed_name">Схаваць плануемыя аб\'екты</string>
<string name="lang_mk">македонская</string>
<string name="lang_nds">ніжненямецкая</string>
<string name="lang_fy">заходнефрыская</string>
<string name="lang_als">альбанская (тоская)</string>
<string name="save_poi_without_poi_type_message">Вы сапраўды хочаце захаваць POI бяз тыпу?</string>
<string name="share_osm_edits_subject">Рэдагаваньні OSM апублікаваныя праз OsmAnd</string>
</resources>

View file

@ -1769,4 +1769,28 @@
<string name="poi_automated_yes">Automatitzat</string>
<string name="poi_automated_no">No automatitzat</string>
<string name="poi_full_service_yes">Servei integral</string>
<string name="poi_brushless_yes">Rentacotxes de raspall</string>
<string name="poi_brushless_no">Rentacotxes de raspall: no</string>
<string name="poi_car_wash_no">Rentacotxes: no</string>
<string name="poi_male_yes">Homes</string>
<string name="poi_male_no">Prohibit pels homes</string>
<string name="poi_female_yes">Dones</string>
<string name="poi_female_no">Prohibit per dones</string>
<string name="poi_public_bath">Bany públic</string>
<string name="poi_indoor_yes">Cobert</string>
<string name="poi_indoor_no">Exterior</string>
<string name="poi_toilets_yes">Amb lavabos</string>
<string name="poi_toilets_no">Sense lavabos</string>
<string name="poi_toilets_wheelchair_yes">Accés al bany per cadira de rodes: sí</string>
<string name="poi_toilets_wheelchair_no">Accés al bany per cadira de rodes: no</string>
<string name="poi_toilets_access_customers">Accés al lavabo: clients</string>
<string name="poi_toilets_access_permissive">Accés al lavabo: tolerant</string>
<string name="poi_toilets_access_community">Accés al lavabo: públic</string>
<string name="poi_resource_gravel">Grava</string>
<string name="poi_resource_gypsum">Guix</string>
<string name="poi_resource_mineral_oil">Oli mineral</string>
<string name="poi_resource_slate_iron_ore_copper">Pissarra, mineral de ferro i coure</string>
<string name="poi_wetland_wet_meadow">Prat humit</string>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?><resources>
<?xml version='1.0' encoding='utf-8'?>
<resources>
<string name="switch_to_raster_map_to_see">Vektorové mapy toto místo neobsahují. Mapová data můžete stáhnout v Nastaveních (Spravovat mapové soubory), nebo se přepněte na online mapy.</string>
<string name="send_files_to_osm">Nahrát GPX soubory do OSM?</string>
@ -1797,7 +1798,7 @@
<string name="first_usage_item_description">Jak stahovat mapy, provést základní nastavení</string>
<string name="navigation_item_description">Nastavení navigace</string>
<string name="faq_item">Často kladené dotazy</string>
<string name="faq_item_description">Jak použít moduly</string>
<string name="faq_item_description">Často kladené otázky</string>
<string name="map_viewing_item">Prohlížení mapy</string>
<string name="search_on_the_map_item">Hledání na mapě</string>
<string name="planning_trip_item">Plánování cesty</string>
@ -1814,4 +1815,11 @@
<string name="rendering_attr_hideProposed_name">Skrýt plánované objekty</string>
<string name="whats_new">Novinky ve</string>
<string name="share_osm_edits_subject">Úpravy OSM sdílené přes OsmAnd</string>
<string name="lang_nds">Dolní němčina</string>
<string name="lang_mk">Makedónsky</string>
<string name="lang_fy">Frínsky</string>
<string name="lang_als">Albánsky (Tosk)</string>
<string name="read_more">Číst více</string>
<string name="save_poi_without_poi_type_message">Opravdu chcete uložit bod POI bez uvedení typu?</string>
</resources>

View file

@ -2448,65 +2448,67 @@
<string name="poi_hackerspace">Hacklab</string>
<string name="poi_wiki_lang_af">Afrikaans wiki</string>
<string name="poi_wiki_lang_als">Alsace wiki</string>
<string name="poi_wiki_lang_az">Aserbajdsjanske wiki</string>
<string name="poi_wiki_lang_als">Elsassisk wiki</string>
<string name="poi_wiki_lang_az">Aserbajdsjansk wiki</string>
<string name="poi_wiki_lang_bn">Bengalsk wiki</string>
<string name="poi_wiki_lang_bpy">Bishnupriya wiki</string>
<string name="poi_wiki_lang_br">Bretagnes wiki</string>
<string name="poi_wiki_lang_bpy">Bishnupriya manipur wiki</string>
<string name="poi_wiki_lang_br">Bretonsk wiki</string>
<string name="poi_wiki_lang_cy">Walisisk wiki</string>
<string name="poi_wiki_lang_eo">Esperanto wiki</string>
<string name="poi_wiki_lang_eu">Baskiske wiki</string>
<string name="poi_wiki_lang_eu">Baskisk wiki</string>
<string name="poi_wiki_lang_fa">Farsi wiki</string>
<string name="poi_wiki_lang_fy">Vestfrisisk</string>
<string name="poi_wiki_lang_hy">Armenske wiki</string>
<string name="poi_wiki_lang_fy">Vestfrisisk wiki</string>
<string name="poi_wiki_lang_hy">Armensk wiki</string>
<string name="poi_wiki_lang_is">Islandsk wiki</string>
<string name="poi_wiki_lang_ka">Georgiske wiki</string>
<string name="poi_wiki_lang_ku">Kurdiske wiki</string>
<string name="poi_wiki_lang_la">Latin wiki</string>
<string name="poi_wiki_lang_ka">Georgisk wiki</string>
<string name="poi_wiki_lang_ku">Kurdisk wiki</string>
<string name="poi_wiki_lang_la">Latinsk wiki</string>
<string name="poi_wiki_lang_lb">Luxembourgsk wiki</string>
<string name="poi_wiki_lang_mk">Makedonsk-wiki</string>
<string name="poi_wiki_lang_mk">Makedonsk wiki</string>
<string name="poi_wiki_lang_ml">Malayalam wiki</string>
<string name="poi_wiki_lang_mr">Marathi wiki</string>
<string name="poi_wiki_lang_nds">Plattysk wiki</string>
<string name="poi_wiki_lang_nds">Niedersachsen wiki</string>
<string name="poi_wiki_lang_nv">Navajo wiki</string>
<string name="poi_wiki_lang_os">Ossetiske wiki</string>
<string name="poi_wiki_lang_pms">Piemontesiske wiki</string>
<string name="poi_wiki_lang_sc">Sardiske wiki</string>
<string name="poi_wiki_lang_os">Ossetisk wiki</string>
<string name="poi_wiki_lang_pms">Piemontesisk wiki</string>
<string name="poi_wiki_lang_sc">Sardisk wiki</string>
<string name="poi_wiki_lang_sh">Serbokroatisk wiki</string>
<string name="poi_wiki_lang_sq">Albansk-wiki</string>
<string name="poi_wiki_lang_ta">Tamil wiki</string>
<string name="poi_wiki_lang_tl">Filippinsk-wiki</string>
<string name="poi_wiki_lang_sq">Albansk wiki</string>
<string name="poi_wiki_lang_ta">Tamilsk wiki</string>
<string name="poi_wiki_lang_tl">Filippinsk wiki</string>
<string name="poi_wiki_lang_bs">Bosnisk wiki</string>
<string name="poi_wiki_lang_ga">Irske wiki</string>
<string name="poi_wiki_lang_war">Waray wiki</string>
<string name="poi_wiki_lang_ga">Irsk wiki</string>
<string name="poi_wiki_lang_war">Waray-waray wiki</string>
<string name="poi_wiki_lang_min">Minangkabau wiki</string>
<string name="poi_wiki_lang_kk">Kasakhisk wiki</string>
<string name="poi_wiki_lang_uz">Usbekisk</string>
<string name="poi_wiki_lang_ce">Tjetjenske wiki</string>
<string name="poi_wiki_lang_uz">Usbekisk wiki</string>
<string name="poi_wiki_lang_ce">Tjetjensk wiki</string>
<string name="poi_wiki_lang_ur">Urdu wiki</string>
<string name="poi_wiki_lang_oc">Occitansk wiki</string>
<string name="poi_wiki_lang_zhminnan">Sydlige Min wiki</string>
<string name="poi_wiki_lang_mg">Madagaskiske wiki</string>
<string name="poi_wiki_lang_zhminnan">Minnan wiki</string>
<string name="poi_wiki_lang_mg">Malagassisk wiki</string>
<string name="poi_wiki_lang_tt">Tatarisk wiki</string>
<string name="poi_wiki_lang_jv">Javanesisk wiki</string>
<string name="poi_wiki_lang_ky">Kirgisiske wiki</string>
<string name="poi_wiki_lang_ky">Kirgisisk wiki</string>
<string name="poi_wiki_lang_zhyue">Kantonesisk wiki</string>
<string name="poi_wiki_lang_ast">Astur-Leonese wiki</string>
<string name="poi_wiki_lang_tg">Tadsjikiske wiki</string>
<string name="poi_wiki_lang_ast">Asturleonesisk wiki</string>
<string name="poi_wiki_lang_tg">Tadjikisk wiki</string>
<string name="poi_wiki_lang_ba">Bashkir</string>
<string name="poi_wiki_lang_sco">Skotsk wiki</string>
<string name="poi_wiki_lang_pnb">Punjabi wiki</string>
<string name="poi_wiki_lang_cv">Chuvashisk wiki</string>
<string name="poi_wiki_lang_lmo">Lombard wiki</string>
<string name="poi_wiki_lang_my">Burmesiske wiki</string>
<string name="poi_wiki_lang_cv">Tsjuvasjisk wiki</string>
<string name="poi_wiki_lang_lmo">Lombardisk wiki</string>
<string name="poi_wiki_lang_my">Burmesisk wiki</string>
<string name="poi_wiki_lang_yo">Yoruba wiki</string>
<string name="poi_wiki_lang_an">Aragoniens wiki</string>
<string name="poi_wiki_lang_an">Aragonsk wiki</string>
<string name="poi_wiki_lang_ne">Nepalesisk wiki</string>
<string name="poi_wiki_lang_gu">Gujarati wiki</string>
<string name="poi_wiki_lang_scn">Sicilianske wiki</string>
<string name="poi_wiki_lang_bar">Bayerske wiki</string>
<string name="poi_wiki_lang_mn">Mongolske wiki</string>
<string name="poi_wiki_lang_nap">Napolitanske wiki</string>
<string name="poi_wiki_lang_scn">Siciliansk wiki</string>
<string name="poi_wiki_lang_bar">Bayersk wiki</string>
<string name="poi_wiki_lang_mn">Mongolsk wiki</string>
<string name="poi_wiki_lang_nap">Napolitansk wiki</string>
<string name="poi_craft_electronics">Reparation af elektronik</string>
</resources>

View file

@ -2017,5 +2017,6 @@
<string name="lang_fy">Vestfrisisk</string>
<string name="lang_als">Albansk (Tosk)</string>
<string name="share_osm_edits_subject">OSM redigeringer deles via OsmAnd</string>
<string name="save_poi_without_poi_type_message">Gem IP uden type?</string>
<string name="save_poi_without_poi_type_message">Gem IP uden at angive type?</string>
<string name="poi_context_menu_modify_osm_change">Rediger OSM ændring</string>
</resources>

View file

@ -2455,4 +2455,8 @@
<string name="poi_wiki_lang_pms">Wiki piamontesa</string>
<string name="poi_wiki_lang_nds">Wiki baja sajona</string>
<string name="poi_wiki_lang_mr">Wiki maratí</string>
<string name="poi_wiki_lang_ml">Wiki malabari</string>
<string name="poi_wiki_lang_ast">Wiki Astur-Leonesa</string>
<string name="poi_wiki_lang_an">Wiki aragonesa</string>
<string name="poi_wiki_lang_ne">Wiki nepalí</string>
</resources>

View file

@ -1020,4 +1020,92 @@
<string name="poi_access_delivery">Áruszállításra használható</string>
<string name="poi_access_agricultural">Mezőgazdasági bemenet</string>
<string name="poi_content_silage">Tartalom: silótakarmány</string>
<string name="poi_content_water">Tartalom: víz</string>
<string name="poi_content_slurry">Tartalom: cementlé</string>
<string name="poi_content_oil">Tartalom: olaj</string>
<string name="poi_content_fuel">Tartalom: üzemanyag</string>
<string name="poi_content_manure">Tartalom: trágya</string>
<string name="poi_content_wine">Tartalom: bor</string>
<string name="poi_content_sewage">Tartalom: ürülék</string>
<string name="poi_content_gas">Tartalom: gáz</string>
<string name="poi_content_biomass">Tartalom: biomassza</string>
<string name="poi_content_wastewater">Tartalom: szennyvíz</string>
<string name="poi_content_crop">Tartalom: termény</string>
<string name="poi_content_fodder">Tartalom: takarmány</string>
<string name="poi_content_beer">Tartalom: sör</string>
<string name="poi_content_salt">Tartalom: só</string>
<string name="poi_content_grain">Tartalom: gabona</string>
<string name="poi_nudism_yes">Nudizmus: nem engedélyezett</string>
<string name="poi_nudism_no">Nudizmus: tiltott</string>
<string name="poi_nudism_obligatory">Nudizmus: kötelező</string>
<string name="poi_nudism_customary">Nudizmus: megszokott</string>
<string name="poi_nudism_permissive">Nudizmus: engedélyköteles</string>
<string name="poi_trade_building_supplies">Építőanyag</string>
<string name="poi_trade_plumbing">Vízvezeték szerelési anyagok</string>
<string name="poi_trade_wood">Faanyag</string>
<string name="poi_trade_agricultural_supplies">Mezőgazdasági anyagok</string>
<string name="poi_trade_tile">Burkolóanyagok</string>
<string name="poi_population">Lakosság</string>
<string name="poi_parking_underground">Földalatti</string>
<string name="poi_parking_multi_storey">Többszintes</string>
<string name="poi_bicycle_parking_anchors">Horgony</string>
<string name="poi_bicycle_parking_stands">Korlát</string>
<string name="poi_bicycle_parking_wall_loops">Kerékbefogó hurok</string>
<string name="poi_bicycle_parking_rack">Keret</string>
<string name="poi_bicycle_parking_building">Speciális épület</string>
<string name="poi_bicycle_parking_shed">Fészer</string>
<string name="poi_bicycle_parking_bollard">Oszlop</string>
<string name="poi_bicycle_parking_informal">Nem hivatalos</string>
<string name="poi_leaf_type_broadleaved">Lombos</string>
<string name="poi_leaf_type_needleleaved">Tűlevelű</string>
<string name="poi_leaf_type_mixed">Vegyes</string>
<string name="poi_leaf_type_leafless">Levéltelen</string>
<string name="poi_species">Fajok</string>
<string name="poi_genus">Nemzetség</string>
<string name="poi_taxon">Taxon</string>
<string name="poi_trees_olive">Oliva</string>
<string name="poi_trees_apple">Alma</string>
<string name="poi_trees_oil">Olajpálma</string>
<string name="poi_trees_orange">Narancs</string>
<string name="poi_trees_almond">Mandula</string>
<string name="poi_trees_banana">Banán</string>
<string name="poi_trees_hazel">Mogyoró</string>
<string name="poi_trees_coconut">Kókusz</string>
<string name="poi_trees_persimmon">Datolyaszilva</string>
<string name="poi_trees_cherry">Cseresznye</string>
<string name="poi_trees_walnut">Dió</string>
<string name="poi_trees_plum">Szilva</string>
<string name="poi_trees_peach">Barack</string>
<string name="poi_trees_tea">Tea</string>
<string name="poi_trees_coca">Kokacserje</string>
<string name="poi_trees_kiwi">Kivi</string>
<string name="poi_trees_nectorine">Nektarin</string>
<string name="poi_trees_mango">Mangó</string>
<string name="poi_trees_rubber">Gumi</string>
<string name="poi_trees_meadow_orchard">Gyümölcsös</string>
<string name="poi_trees_date">Datolyapálma</string>
<string name="poi_trees_coffea">Kávé</string>
<string name="poi_trees_pomegranate">Gránátalma</string>
<string name="poi_urban">Városi</string>
<string name="poi_rural">Vidéki</string>
<string name="poi_int_name">Nemzetközi név</string>
<string name="poi_nat_name">Nemzeti név</string>
<string name="poi_reg_name">Regionális név</string>
<string name="poi_loc_name">Helyi név</string>
<string name="poi_old_name">Korábbi név</string>
<string name="poi_alt_name">Alternatív név</string>
<string name="poi_cuisine">Konyha</string>
<string name="poi_smoking_no">Nemdohányzó</string>
<string name="poi_capacity">Kapacitás</string>
</resources>

View file

@ -119,7 +119,7 @@
<string name="favorite_home_category">Casa</string>
<string name="favorite_friends_category">Amici</string>
<string name="favorite_places_category">Luoghi</string>
<string name="shared_string_others">Altro</string>
<string name="shared_string_others">Ancora</string>
<string name="shared_string_no_thanks">No, grazie</string>
<string name="basemap_missing">La mappa di base del mondo (ricopre l\'intero mondo per zoom bassi) è mancante. Puoi scaricare World_basemap_x.obf per un sistema completo.</string>
<string name="vector_data_missing">Mancano i dati (\'offline\') nella scheda SD. Ti consigliamo di scaricarli per poter usare le mappe offline.</string>
@ -2040,9 +2040,10 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz
<string name="rendering_attr_hideProposed_name">Nascondi gli oggetti proposti</string>
<string name="read_more">Leggi di più</string>
<string name="read_more">Ancora</string>
<string name="whats_new">Novità nella versione</string>
<string name="share_osm_edits_subject">Modifiche Osm condivise tramite OsmAnd</string>
<string name="lang_nds">Bassa Germania</string>
<string name="lang_mk">Macedone</string>
<string name="save_poi_without_poi_type_message">Vuoi davvero salvare il PDI senza specificarne il tipo?</string>
</resources>

View file

@ -2461,4 +2461,6 @@
<string name="poi_wiki_lang_mn">Википедия на монгольском</string>
<string name="poi_wiki_lang_nap">Википедия на неополитанском</string>
<string name="poi_craft_electronics">Ремонт электроники</string>
</resources>

View file

@ -2170,4 +2170,18 @@
<string name="poi_social_facility_workshop">社會設施:工場</string>
<string name="poi_social_facility_day_care">社會設施:日間護理</string>
<string name="poi_social_facility_for_senior">目標社群:老年人</string>
<string name="poi_social_facility_for_child">目標社群:兒童</string>
<string name="poi_social_facility_for_orphan">目標社群:孤兒</string>
<string name="poi_social_facility_for_disabled">目標社群:身心障礙者</string>
<string name="poi_social_facility_for_mental_health">目標社群:精神疾病患者</string>
<string name="poi_social_facility_for_juvenile">目標社群:青少年</string>
<string name="poi_social_facility_for_homeless">目標社群:無家可歸者</string>
<string name="poi_social_facility_for_migrant">目標社群:移民</string>
<string name="poi_social_facility_for_underprivileged">目標社群:貧困者</string>
<string name="poi_social_facility_for_drug_addicted">目標社群:吸毒成癮者</string>
<string name="poi_social_facility_for_unemployed">目標社群:失業者</string>
<string name="poi_social_facility_for_diseased">目標社群:病患者</string>
<string name="poi_social_facility_for_child_juvenile">目標社群:兒童;青少年</string>
</resources>

View file

@ -2455,4 +2455,6 @@
<string name="poi_wiki_lang_mn">Mongolian wiki</string>
<string name="poi_wiki_lang_nap">Neapolitan wiki</string>
<string name="poi_craft_electronics">Electronics repair</string>
</resources>

View file

@ -2062,5 +2062,6 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A
<string name="contact_us">Contact us</string>
<string name="map_legend">Map legend</string>
<string name="save_poi_without_poi_type_message">Do you really want to save poi without POI type?</string>
<string name="poi_context_menu_modify_osm_change">Modify OSM change</string>
<!-- string name="map_legend_item_description">Legend for OsmAnd default map style, Internet connectivity needed to display</string -->
</resources>

View file

@ -124,6 +124,10 @@
<item name="windowNoTitle">true</item>
</style>
<style name="OsmandLightTheme.NoActionbar.Preferences">
<item name="android:textColorSecondary">@color/color_black</item>
</style>
<style name="OsmandLightTheme.DarkActionbar">
<item name="android:textColorPrimary">@color/color_white</item>
<item name="android:textColorSecondary">@color/inactive_item_orange</item>
@ -166,6 +170,10 @@
<item name="windowNoTitle">true</item>
</style>
<style name="OsmandDarkTheme.NoActionbar.Preferences">
<item name="android:textColorSecondary">@color/color_white</item>
</style>
<style name="OsmandDarkTheme" parent="Theme.AppCompat">
<item name="list_divider">@color/list_divider_light</item>
<item name="expandable_category_color">?android:attr/colorBackground</item>

View file

@ -27,11 +27,11 @@ public abstract class ActionBarPreferenceActivity extends AppCompatPreferenceAct
protected void onCreate(final Bundle savedInstanceState) {
//settings needed it's own theme because of check boxes not styled properly
OsmandSettings settings = ((OsmandApplication) getApplication()).getSettings();
int t = R.style.OsmandLightTheme_NoActionbar;
int t = R.style.OsmandLightTheme_NoActionbar_Preferences;
if (settings.OSMAND_THEME.get() == OsmandSettings.OSMAND_DARK_THEME) {
t = R.style.OsmandDarkTheme_NoActionbar;
t = R.style.OsmandDarkTheme_NoActionbar_Preferences;
} else if (settings.OSMAND_THEME.get() == OsmandSettings.OSMAND_LIGHT_THEME) {
t = R.style.OsmandLightTheme_NoActionbar;
t = R.style.OsmandLightTheme_NoActionbar_Preferences;
}
setTheme(t);
super.onCreate(savedInstanceState);

View file

@ -62,6 +62,7 @@ import net.osmand.plus.activities.search.SearchActivity;
import net.osmand.plus.base.FailSafeFuntions;
import net.osmand.plus.base.MapViewTrackingUtilities;
import net.osmand.plus.dashboard.DashboardOnMap;
import net.osmand.plus.dialogs.ErrorBottomSheetDialog;
import net.osmand.plus.dialogs.WhatsNewDialogFragment;
import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
import net.osmand.plus.helpers.GpxImportHelper;
@ -394,8 +395,13 @@ public class MapActivity extends AccessibleActivity implements DownloadEvents {
if (!dashboardOnMap.isVisible()) {
final OsmandSettings.CommonPreference<Boolean> shouldShowDashboardOnStart =
settings.registerBooleanPreference(MapActivity.SHOULD_SHOW_DASHBOARD_ON_START, true);
if (shouldShowDashboardOnStart.get() || dashboardOnMap.hasCriticalMessages())
if (shouldShowDashboardOnStart.get() || dashboardOnMap.hasCriticalMessages()) {
dashboardOnMap.setDashboardVisibility(true, DashboardOnMap.staticVisibleType);
} else {
if (ErrorBottomSheetDialog.shouldShow(settings, this)) {
new ErrorBottomSheetDialog().show(getFragmentManager(), "dialog");
}
}
}
}
dashboardOnMap.updateLocation(true, true, false);

View file

@ -1,4 +1,4 @@
package net.osmand.plus.download.ui;
package net.osmand.plus.base;
import android.app.Dialog;
import android.app.DialogFragment;
@ -6,7 +6,6 @@ import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.ColorRes;
import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.Gravity;
import android.view.LayoutInflater;
@ -14,19 +13,12 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import net.osmand.map.WorldRegion;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.download.DownloadActivity;
import net.osmand.plus.download.IndexItem;
public abstract class BottomSheetDownloadFragment extends DialogFragment {
public abstract class BottomSheetDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

View file

@ -1,34 +1,5 @@
package net.osmand.plus.dashboard;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import net.osmand.PlatformUtil;
import net.osmand.data.LatLon;
import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick;
import net.osmand.plus.ContextMenuAdapter.OnRowItemClick;
import net.osmand.plus.IconsCache;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.activities.IntermediatePointsDialog;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.dashboard.tools.DashFragmentData;
import net.osmand.plus.dashboard.tools.DashboardSettingsDialogFragment;
import net.osmand.plus.dashboard.tools.TransactionBuilder;
import net.osmand.plus.dialogs.ConfigureMapMenu;
import net.osmand.plus.download.DownloadActivity;
import net.osmand.plus.helpers.AndroidUiHelper;
import net.osmand.plus.helpers.WaypointDialogHelper;
import net.osmand.plus.helpers.WaypointHelper.LocationPointWrapper;
import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.views.DownloadedRegionsLayer;
import net.osmand.plus.views.OsmandMapTileView;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.drawable.Drawable;
@ -60,6 +31,36 @@ 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;
import net.osmand.plus.ContextMenuAdapter.OnRowItemClick;
import net.osmand.plus.IconsCache;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.activities.IntermediatePointsDialog;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.dashboard.tools.DashFragmentData;
import net.osmand.plus.dashboard.tools.DashboardSettingsDialogFragment;
import net.osmand.plus.dashboard.tools.TransactionBuilder;
import net.osmand.plus.dialogs.ConfigureMapMenu;
import net.osmand.plus.download.DownloadActivity;
import net.osmand.plus.helpers.AndroidUiHelper;
import net.osmand.plus.helpers.WaypointDialogHelper;
import net.osmand.plus.helpers.WaypointHelper.LocationPointWrapper;
import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.views.DownloadedRegionsLayer;
import net.osmand.plus.views.OsmandMapTileView;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
/**
*/
public class DashboardOnMap implements ObservableScrollViewCallbacks {
@ -903,10 +904,10 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks {
transaction.show(frag).commit();
}
// TODO: 11/13/15 Remove
public boolean hasCriticalMessages() {
final OsmandSettings settings = getMyApplication().getSettings();
return rateUsShouldShow.shouldShow(settings, mapActivity, DashRateUsFragment.TAG)
|| errorShouldShow.shouldShow(null, mapActivity, null);
return rateUsShouldShow.shouldShow(settings, mapActivity, DashRateUsFragment.TAG);
}
View getParentView() {

View file

@ -0,0 +1,97 @@
package net.osmand.plus.dialogs;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Typeface;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import net.osmand.PlatformUtil;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.Version;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.OsmandActionBarActivity;
import net.osmand.plus.base.BottomSheetDialogFragment;
import net.osmand.plus.helpers.FontCache;
import java.io.File;
import java.text.MessageFormat;
/**
* Created by GaidamakUA on 11/13/15.
*/
public class ErrorBottomSheetDialog extends BottomSheetDialogFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = getActivity().getLayoutInflater().inflate(R.layout.dash_error_fragment, container, false);
String msg = MessageFormat.format(getString(R.string.previous_run_crashed), OsmandApplication.EXCEPTION_PATH);
Typeface typeface = FontCache.getRobotoMedium(getActivity());
ImageView iv = ((ImageView) view.findViewById(R.id.error_icon));
iv.setImageDrawable(getMyApplication().getIconsCache().getContentIcon(R.drawable.ic_crashlog));
TextView message = ((TextView) view.findViewById(R.id.error_header));
message.setTypeface(typeface);
message.setText(msg);
Button errorBtn = ((Button) view.findViewById(R.id.error_btn));
errorBtn.setTypeface(typeface);
errorBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"crash@osmand.net"}); //$NON-NLS-1$
File file = getMyApplication().getAppPath(OsmandApplication.EXCEPTION_PATH);
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
intent.setType("vnd.android.cursor.dir/email"); //$NON-NLS-1$
intent.putExtra(Intent.EXTRA_SUBJECT, "OsmAnd bug"); //$NON-NLS-1$
StringBuilder text = new StringBuilder();
text.append("\nDevice : ").append(Build.DEVICE); //$NON-NLS-1$
text.append("\nBrand : ").append(Build.BRAND); //$NON-NLS-1$
text.append("\nModel : ").append(Build.MODEL); //$NON-NLS-1$
text.append("\nProduct : ").append(Build.PRODUCT); //$NON-NLS-1$
text.append("\nBuild : ").append(Build.DISPLAY); //$NON-NLS-1$
text.append("\nVersion : ").append(Build.VERSION.RELEASE); //$NON-NLS-1$
text.append("\nApp Version : ").append(Version.getAppName(getMyApplication())); //$NON-NLS-1$
try {
PackageInfo info = getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(),
0);
if (info != null) {
text.append("\nApk Version : ").append(info.versionName).append(" ").append(info.versionCode); //$NON-NLS-1$ //$NON-NLS-2$
}
} catch (PackageManager.NameNotFoundException e) {
PlatformUtil.getLog(ErrorBottomSheetDialog.class).error("", e);
}
intent.putExtra(Intent.EXTRA_TEXT, text.toString());
startActivity(Intent.createChooser(intent, getString(R.string.send_report)));
}
});
Button cancelBtn = ((Button) view.findViewById(R.id.error_cancel));
cancelBtn.setTypeface(typeface);
cancelBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
OsmandActionBarActivity dashboardActivity = ((OsmandActionBarActivity) getActivity());
if (dashboardActivity != null) {
dismiss();
}
}
});
return view;
}
public static boolean shouldShow(OsmandSettings settings, MapActivity activity) {
return activity.getMyApplication().getAppInitializer()
.checkPreviousRunsForExceptions(activity, settings != null);
}
}

View file

@ -1,45 +1,5 @@
package net.osmand.plus.download;
import java.io.File;
import java.lang.ref.WeakReference;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import net.osmand.IProgress;
import net.osmand.PlatformUtil;
import net.osmand.access.AccessibleToast;
import net.osmand.data.LatLon;
import net.osmand.map.WorldRegion;
import net.osmand.map.WorldRegion.RegionParams;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.OsmandSettings.DrivingRegion;
import net.osmand.plus.OsmandSettings.MetricsConstants;
import net.osmand.plus.R;
import net.osmand.plus.Version;
import net.osmand.plus.activities.ActionBarProgressActivity;
import net.osmand.plus.activities.LocalIndexInfo;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.TabActivity;
import net.osmand.plus.base.BasicProgressAsyncTask;
import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
import net.osmand.plus.download.ui.ActiveDownloadsDialogFragment;
import net.osmand.plus.download.ui.BottomSheetDownloadFragment;
import net.osmand.plus.download.ui.DataStoragePlaceDialogFragment;
import net.osmand.plus.download.ui.DownloadResourceGroupFragment;
import net.osmand.plus.download.ui.LocalIndexesFragment;
import net.osmand.plus.download.ui.UpdatesIndexFragment;
import net.osmand.plus.openseamapsplugin.NauticalMapsPlugin;
import net.osmand.plus.srtmplugin.SRTMPlugin;
import net.osmand.plus.views.controls.PagerSlidingTabStrip;
import org.apache.commons.logging.Log;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
@ -65,6 +25,46 @@ import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import net.osmand.IProgress;
import net.osmand.PlatformUtil;
import net.osmand.access.AccessibleToast;
import net.osmand.data.LatLon;
import net.osmand.map.WorldRegion;
import net.osmand.map.WorldRegion.RegionParams;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.OsmandSettings.DrivingRegion;
import net.osmand.plus.OsmandSettings.MetricsConstants;
import net.osmand.plus.R;
import net.osmand.plus.Version;
import net.osmand.plus.activities.ActionBarProgressActivity;
import net.osmand.plus.activities.LocalIndexInfo;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.TabActivity;
import net.osmand.plus.base.BasicProgressAsyncTask;
import net.osmand.plus.base.BottomSheetDialogFragment;
import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
import net.osmand.plus.download.ui.ActiveDownloadsDialogFragment;
import net.osmand.plus.download.ui.DataStoragePlaceDialogFragment;
import net.osmand.plus.download.ui.DownloadResourceGroupFragment;
import net.osmand.plus.download.ui.LocalIndexesFragment;
import net.osmand.plus.download.ui.UpdatesIndexFragment;
import net.osmand.plus.openseamapsplugin.NauticalMapsPlugin;
import net.osmand.plus.srtmplugin.SRTMPlugin;
import net.osmand.plus.views.controls.PagerSlidingTabStrip;
import org.apache.commons.logging.Log;
import java.io.File;
import java.lang.ref.WeakReference;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
public class DownloadActivity extends ActionBarProgressActivity implements DownloadEvents {
private static final Log LOG = PlatformUtil.getLog(DownloadActivity.class);
@ -662,7 +662,7 @@ public class DownloadActivity extends ActionBarProgressActivity implements Downl
}
public static class AskMapDownloadFragment extends BottomSheetDownloadFragment {
public static class AskMapDownloadFragment extends BottomSheetDialogFragment {
public static final String TAG = "AskMapDownloadFragment";
private static final String KEY_ASK_MAP_DOWNLOAD_ITEM_FILENAME = "key_ask_map_download_item_filename";
@ -745,7 +745,7 @@ public class DownloadActivity extends ActionBarProgressActivity implements Downl
}
public static class GoToMapFragment extends BottomSheetDownloadFragment {
public static class GoToMapFragment extends BottomSheetDialogFragment {
public static final String TAG = "GoToMapFragment";
private static final String KEY_GOTO_MAP_REGION_CENTER = "key_goto_map_region_center";

View file

@ -1,13 +1,8 @@
package net.osmand.plus.download.ui;
import android.app.Activity;
import android.app.Dialog;
import android.app.DialogFragment;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.StatFs;
import android.support.annotation.ColorRes;
import android.support.annotation.DrawableRes;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
@ -23,27 +18,17 @@ import net.osmand.access.AccessibleToast;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.base.BottomSheetDialogFragment;
import net.osmand.plus.download.DownloadActivity;
import java.io.File;
public class DataStoragePlaceDialogFragment extends DialogFragment {
public class DataStoragePlaceDialogFragment extends BottomSheetDialogFragment {
private File internalStorage;
private File externalStorage;
public static boolean isInterestedInFirstTime = true;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
boolean isLightTheme = ((OsmandApplication) getActivity().getApplication())
.getSettings().OSMAND_THEME.get() == OsmandSettings.OSMAND_LIGHT_THEME;
int themeId = isLightTheme ? R.style.OsmandLightTheme_BottomSheet
: R.style.OsmandDarkTheme_BottomSheet;
final Dialog dialog = new Dialog(getActivity(), themeId);
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
@Override
public void onStart() {
super.onStart();
@ -106,19 +91,6 @@ public class DataStoragePlaceDialogFragment extends DialogFragment {
.getDefaultInternalStorage();
}
private OsmandApplication getMyApplication() {
return (OsmandApplication) getActivity().getApplication();
}
private Drawable getContentIcon(@DrawableRes int drawableRes) {
return getMyApplication().getIconsCache().getContentIcon(drawableRes);
}
private Drawable getIcon(@DrawableRes int drawableRes, @ColorRes int color) {
return getMyApplication().getIconsCache().getIcon(drawableRes, color);
}
private String getFreeSpace(File dir) {
String sz = "";
if (dir.canRead()) {

View file

@ -1,16 +1,5 @@
package net.osmand.plus.download.ui;
import java.util.Comparator;
import java.util.List;
import net.osmand.map.OsmandRegions;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.activities.OsmAndListFragment;
import net.osmand.plus.download.DownloadActivity;
import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
import net.osmand.plus.download.DownloadResources;
import net.osmand.plus.download.IndexItem;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
@ -27,6 +16,18 @@ import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import net.osmand.map.OsmandRegions;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.activities.OsmAndListFragment;
import net.osmand.plus.download.DownloadActivity;
import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
import net.osmand.plus.download.DownloadResources;
import net.osmand.plus.download.IndexItem;
import java.util.Comparator;
import java.util.List;
public class UpdatesIndexFragment extends OsmAndListFragment implements DownloadEvents {
private static final int RELOAD_ID = 5;
private UpdateIndexAdapter listAdapter;
@ -210,5 +211,4 @@ public class UpdatesIndexFragment extends OsmAndListFragment implements Download
return v;
}
}
}

View file

@ -412,7 +412,8 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
});
final ImageButton buttonWaypoint = (ImageButton) view.findViewById(R.id.context_menu_route_button);
buttonWaypoint.setImageDrawable(iconsCache.getIcon(R.drawable.map_action_waypoints,
//buttonWaypoint.setImageDrawable(iconsCache.getIcon(R.drawable.map_action_waypoints,
buttonWaypoint.setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_flag_dark,
light ? R.color.icon_color : R.color.dashboard_subheader_text_dark));
buttonWaypoint.setOnClickListener(new View.OnClickListener() {
@Override

View file

@ -97,22 +97,16 @@ public class AdvancedEditPoiFragment extends Fragment
public void onResume() {
super.onResume();
mAdapter.updateViews();
updateName();
updatePoiType();
mTagsChangedListener = new EditPoiData.TagsChangedListener() {
@Override
public void onTagsChanged(String anyTag) {
String value = getData().getTagValues().get(anyTag);
if (Algorithms.objectEquals(anyTag, OSMSettings.OSMTagKey.NAME.getValue())) {
nameTextView.setText(value);
updateName();
}
if (Algorithms.objectEquals(anyTag, EditPoiData.POI_TYPE_TAG)) {
PoiType pt = getData().getPoiTypeDefined();
if (pt != null) {
amenityTagTextView.setText(pt.getOsmTag());
amenityTextView.setText(pt.getOsmValue());
} else {
amenityTagTextView.setText(getData().getPoiCategory().getDefaultTag());
amenityTextView.setText(getData().getPoiTypeString());
}
updatePoiType();
}
}
};
@ -145,6 +139,21 @@ public class AdvancedEditPoiFragment extends Fragment
}
}
private void updateName() {
nameTextView.setText(getData().getTag(OSMSettings.OSMTagKey.NAME.getValue()));
}
private void updatePoiType() {
PoiType pt = getData().getPoiTypeDefined();
if (pt != null) {
amenityTagTextView.setText(pt.getOsmTag());
amenityTextView.setText(pt.getOsmValue());
} else {
amenityTagTextView.setText(getData().getPoiCategory().getDefaultTag());
amenityTextView.setText(getData().getPoiTypeString());
}
}
public class TagAdapterLinearLayoutHack {
private final LinearLayout linearLayout;
private final EditPoiData editPoiData;

View file

@ -257,7 +257,7 @@ public class EditPoiDialogFragment extends DialogFragment {
});
poiNameEditText.setOnEditorActionListener(mOnEditorActionListener);
poiTypeEditText.setOnEditorActionListener(mOnEditorActionListener);
poiTypeEditText.setText(editPoiData.getPoiTypeString());
poiTypeEditText.setText(editPoiData.getPoiTypeDefined().getTranslation());
Button saveButton = (Button) view.findViewById(R.id.saveButton);
saveButton.setText(mOpenstreetmapUtil instanceof OpenstreetmapRemoteUtil

View file

@ -16,7 +16,7 @@ public class OpenstreetmapLocalUtil implements OpenstreetmapUtil {
private final Context ctx;
public final static Log log = PlatformUtil.getLog(OpenstreetmapLocalUtil.class);
public final static Log LOG = PlatformUtil.getLog(OpenstreetmapLocalUtil.class);
private OsmEditingPlugin plugin;
@ -61,7 +61,7 @@ public class OpenstreetmapLocalUtil implements OpenstreetmapUtil {
Node entity = new Node(n.getLocation().getLatitude(),
n.getLocation().getLongitude(),
nodeId);
entity.putTag(poiType.getOsmTag(), poiType.getOsmValue());
entity.putTag(EditPoiData.POI_TYPE_TAG, poiType.getOsmValue());
if(poiType.getOsmTag2() != null) {
entity.putTag(poiType.getOsmTag2(), poiType.getOsmValue2());
}

View file

@ -7,6 +7,7 @@ import android.widget.Toast;
import net.osmand.PlatformUtil;
import net.osmand.access.AccessibleToast;
import net.osmand.data.Amenity;
import net.osmand.osm.PoiType;
import net.osmand.osm.edit.Entity;
import net.osmand.osm.edit.Entity.EntityId;
import net.osmand.osm.edit.Entity.EntityType;
@ -361,6 +362,9 @@ public class OpenstreetmapRemoteUtil implements OpenstreetmapUtil {
entityInfo = st.getRegisteredEntityInfo().get(id);
// check whether this is node (because id of node could be the same as relation)
if (entity != null && MapUtils.getDistance(entity.getLatLon(), n.getLocation()) < 50) {
PoiType poiType = n.getType().getPoiTypeByKeyName(n.getSubType());
entity.removeTag(poiType.getOsmTag());
entity.putTag(EditPoiData.POI_TYPE_TAG, poiType.getOsmValue());
return entity;
}
return null;

View file

@ -18,6 +18,7 @@ import net.osmand.PlatformUtil;
import net.osmand.access.AccessibleToast;
import net.osmand.data.Amenity;
import net.osmand.osm.PoiType;
import net.osmand.osm.edit.Node;
import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick;
import net.osmand.plus.OsmandApplication;
@ -162,6 +163,10 @@ public class OsmEditingPlugin extends OsmandPlugin {
.execute((Amenity) selectedObj);
} else if (resId == R.string.poi_context_menu_modify) {
EditPoiDialogFragment.showEditInstance((Amenity) selectedObj, mapActivity);
} else if (resId == R.string.poi_context_menu_modify_osm_change) {
final Node entity = ((OpenstreetmapPoint) selectedObj).getEntity();
EditPoiDialogFragment.createInstance(entity, false)
.show(mapActivity.getSupportFragmentManager(), "edit_poi");
}
return true;
}
@ -175,6 +180,9 @@ public class OsmEditingPlugin extends OsmandPlugin {
if (isEditable) {
adapter.item(R.string.poi_context_menu_modify).iconColor(R.drawable.ic_action_edit_dark).listen(listener).position(1).reg();
adapter.item(R.string.poi_context_menu_delete).iconColor(R.drawable.ic_action_delete_dark).listen(listener).position(2).reg();
} else if (selectedObj instanceof OpenstreetmapPoint) {
adapter.item(R.string.poi_context_menu_modify_osm_change)
.iconColor(R.drawable.ic_action_edit_dark).listen(listener).position(1).reg();
} else {
adapter.item(R.string.context_menu_item_create_poi).iconColor(R.drawable.ic_action_plus_dark).listen(listener).position(-1).reg();
}

View file

@ -30,6 +30,7 @@ import android.widget.Toast;
import net.osmand.access.AccessibleToast;
import net.osmand.data.PointDescription;
import net.osmand.osm.edit.Node;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
@ -464,6 +465,19 @@ public class OsmEditsFragment extends OsmAndListFragment
return true;
}
});
if (info instanceof OpenstreetmapPoint) {
item = optionsMenu.getMenu().add(R.string.poi_context_menu_modify_osm_change)
.setIcon(app.getIconsCache().getContentIcon(R.drawable.ic_action_edit_dark));
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
final Node entity = ((OpenstreetmapPoint) info).getEntity();
EditPoiDialogFragment.createInstance(entity, false)
.show(getActivity().getSupportFragmentManager(), "edit_poi");
return true;
}
});
}
item = optionsMenu.getMenu().add(R.string.shared_string_delete).
setIcon(app.getIconsCache().getContentIcon(R.drawable.ic_action_delete_dark));
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {