aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Kolomiets <madwasp79@gmail.com>2019-10-21 17:42:26 +0300
committerGitHub <noreply@github.com>2019-10-21 17:42:26 +0300
commit5df7d8d7df4a9f678903fdd6edb2a97f655aa40b (patch)
treed0e500f82db5f4209bcf43fed6b6dc278ba4eeb2
parente82966d014f478b98032be620651561a7134fcf5 (diff)
parent6cb163ff40e9161ec6785095c6553478925c58ab (diff)
downloadOsmand-5df7d8d7df4a9f678903fdd6edb2a97f655aa40b.tar.gz
Merge branch 'master' into folder_per_day
-rw-r--r--OsmAnd-api/.gitignore10
-rw-r--r--OsmAnd-api/AndroidManifest.xml1
-rw-r--r--OsmAnd-api/build.gradle41
-rw-r--r--OsmAnd-api/res/values/strings.xml3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/AidlParams.java35
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/IOsmAndAidlCallback.aidl (renamed from OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlCallback.aidl)12
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/IOsmAndAidlInterface.aidl (renamed from OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlInterface.aidl)195
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/OsmAndCustomizationConstants.java (renamed from OsmAnd/src/net/osmand/plus/OsmAndCustomizationConstants.java)8
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/OsmandAidlConstants.java36
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/calculateroute/CalculateRouteParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/calculateroute/CalculateRouteParams.java101
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/contextmenu/AContextMenuButton.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/contextmenu/AContextMenuButton.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/contextmenu/AContextMenuButton.java)50
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/contextmenu/ContextMenuButtonsParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/contextmenu/ContextMenuButtonsParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/contextmenu/ContextMenuButtonsParams.java)51
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/contextmenu/RemoveContextMenuButtonsParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/contextmenu/RemoveContextMenuButtonsParams.java53
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/contextmenu/UpdateContextMenuButtonsParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/contextmenu/UpdateContextMenuButtonsParams.java46
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/copyfile/CopyFileParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/copyfile/CopyFileParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/copyfile/CopyFileParams.java)66
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/customization/CustomizationInfoParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/customization/CustomizationInfoParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/customization/CustomizationInfoParams.java)89
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/customization/OsmandSettingsInfoParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/customization/OsmandSettingsInfoParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/customization/OsmandSettingsInfoParams.java)22
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/customization/OsmandSettingsParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/customization/OsmandSettingsParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/customization/OsmandSettingsParams.java)33
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/customization/SetWidgetsParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/customization/SetWidgetsParams.java59
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/AFavorite.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/AFavorite.java94
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/AddFavoriteParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/AddFavoriteParams.java46
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/RemoveFavoriteParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/RemoveFavoriteParams.java46
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/UpdateFavoriteParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/UpdateFavoriteParams.java54
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AFavoriteGroup.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AFavoriteGroup.java61
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AddFavoriteGroupParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AddFavoriteGroupParams.java46
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/group/RemoveFavoriteGroupParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/group/RemoveFavoriteGroupParams.java46
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/group/UpdateFavoriteGroupParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/favorite/group/UpdateFavoriteGroupParams.java54
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxBitmap.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxBitmap.java48
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFile.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFile.java88
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFileDetails.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFileDetails.java197
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/ASelectedGpxFile.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/ASelectedGpxFile.java76
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/CreateGpxBitmapParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/CreateGpxBitmapParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/gpx/CreateGpxBitmapParams.java)67
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/HideGpxParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/HideGpxParams.java45
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/ImportGpxParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/ImportGpxParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/gpx/ImportGpxParams.java)65
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/RemoveGpxParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/RemoveGpxParams.java45
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/ShowGpxParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/ShowGpxParams.java45
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/StartGpxRecordingParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/StartGpxRecordingParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/gpx/StartGpxRecordingParams.java)22
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/StopGpxRecordingParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/gpx/StopGpxRecordingParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/gpx/StopGpxRecordingParams.java)22
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/map/ALatLon.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/map/ALatLon.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/map/ALatLon.java)53
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/map/SetMapLocationParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/map/SetMapLocationParams.java69
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/AMapLayer.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/AMapLayer.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/maplayer/AMapLayer.java)98
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/AddMapLayerParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/AddMapLayerParams.java46
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/RemoveMapLayerParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/RemoveMapLayerParams.java45
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/UpdateMapLayerParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/UpdateMapLayerParams.java46
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/AMapPoint.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/AMapPoint.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/AMapPoint.java)85
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/AddMapPointParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/AddMapPointParams.java55
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/RemoveMapPointParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/RemoveMapPointParams.java55
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/ShowMapPointParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/ShowMapPointParams.java54
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/UpdateMapPointParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/UpdateMapPointParams.java62
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AMapMarker.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AMapMarker.java61
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AddMapMarkerParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AddMapMarkerParams.java46
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkerParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkerParams.java59
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkersParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkersParams.java28
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapmarker/UpdateMapMarkerParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapmarker/UpdateMapMarkerParams.java68
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AMapWidget.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AMapWidget.java112
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AddMapWidgetParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AddMapWidgetParams.java46
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapwidget/RemoveMapWidgetParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapwidget/RemoveMapWidgetParams.java45
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapwidget/UpdateMapWidgetParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/mapwidget/UpdateMapWidgetParams.java46
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerFooterParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerFooterParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerFooterParams.java)42
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerHeaderParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerHeaderParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerHeaderParams.java)42
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerItem.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerItem.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerItem.java)56
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navdrawer/SetNavDrawerItemsParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navdrawer/SetNavDrawerItemsParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/navdrawer/SetNavDrawerItemsParams.java)30
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/ADirectionInfo.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/ADirectionInfo.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/navigation/ADirectionInfo.java)30
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/ANavigationUpdateParams.aidl4
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/ANavigationUpdateParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/navigation/ANavigationUpdateParams.java)55
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/ANavigationVoiceRouterMessageParams.aidl (renamed from OsmAnd-telegram/src/net/osmand/aidl/navigation/ANavigationVoiceRouterMessageParams.aidl)2
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/ANavigationVoiceRouterMessageParams.java60
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/MuteNavigationParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/MuteNavigationParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/navigation/MuteNavigationParams.java)21
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateGpxParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateGpxParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateGpxParams.java)31
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateParams.java)57
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateSearchParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateSearchParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateSearchParams.java)61
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/OnVoiceNavigationParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/OnVoiceNavigationParams.java70
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/PauseNavigationParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/PauseNavigationParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/navigation/PauseNavigationParams.java)22
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/ResumeNavigationParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/ResumeNavigationParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/navigation/ResumeNavigationParams.java)22
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/StopNavigationParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/StopNavigationParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/navigation/StopNavigationParams.java)22
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/UnmuteNavigationParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/navigation/UnmuteNavigationParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/navigation/UnmuteNavigationParams.java)22
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/note/StartAudioRecordingParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/note/StartAudioRecordingParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/note/StartAudioRecordingParams.java)27
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/note/StartVideoRecordingParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/note/StartVideoRecordingParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/note/StartVideoRecordingParams.java)27
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/note/StopRecordingParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/note/StopRecordingParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/note/StopRecordingParams.java)22
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/note/TakePhotoNoteParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/note/TakePhotoNoteParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/note/TakePhotoNoteParams.java)27
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/plugins/PluginParams.aidl (renamed from OsmAnd-telegram/src/net/osmand/aidl/plugins/PluginParams.aidl)2
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/plugins/PluginParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/plugins/PluginParams.java)24
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/search/SearchParams.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/search/SearchParams.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/search/SearchParams.java)42
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/search/SearchResult.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/search/SearchResult.java (renamed from OsmAnd-telegram/src/net/osmand/aidl/search/SearchResult.java)48
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/tiles/ASqliteDbFile.aidl3
-rw-r--r--OsmAnd-api/src/net/osmand/aidlapi/tiles/ASqliteDbFile.java70
-rw-r--r--OsmAnd-java/src/main/java/net/osmand/render/RenderingRuleStorageProperties.java1
-rw-r--r--OsmAnd-java/src/main/java/net/osmand/router/RouteResultPreparation.java2
-rw-r--r--OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java10
-rw-r--r--OsmAnd-java/src/main/java/net/osmand/util/OpeningHoursParser.java60
-rw-r--r--OsmAnd-java/src/test/java/net/osmand/util/OpeningHoursParserTest.java6
-rw-r--r--OsmAnd-telegram/build.gradle1
-rw-r--r--OsmAnd-telegram/res/values-ast/strings.xml62
-rw-r--r--OsmAnd-telegram/res/values-eu/strings.xml22
-rw-r--r--OsmAnd-telegram/res/values-fa/strings.xml4
-rw-r--r--OsmAnd-telegram/res/values-pt-rPT/strings.xml252
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/calculateroute/CalculateRouteParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/calculateroute/CalculateRouteParams.java100
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/contextmenu/AContextMenuButton.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/contextmenu/ContextMenuButtonsParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/contextmenu/RemoveContextMenuButtonsParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/contextmenu/RemoveContextMenuButtonsParams.java53
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/contextmenu/UpdateContextMenuButtonsParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/contextmenu/UpdateContextMenuButtonsParams.java43
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/copyfile/CopyFileParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/customization/CustomizationInfoParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/customization/OsmandSettingsInfoParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/customization/OsmandSettingsParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/customization/SetWidgetsParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/customization/SetWidgetsParams.java93
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/AFavorite.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/AFavorite.java96
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/AddFavoriteParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/AddFavoriteParams.java47
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/RemoveFavoriteParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/RemoveFavoriteParams.java47
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/UpdateFavoriteParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/UpdateFavoriteParams.java55
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AFavoriteGroup.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AFavoriteGroup.java63
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AddFavoriteGroupParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AddFavoriteGroupParams.java47
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/group/RemoveFavoriteGroupParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/group/RemoveFavoriteGroupParams.java47
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/group/UpdateFavoriteGroupParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/favorite/group/UpdateFavoriteGroupParams.java55
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxBitmap.aidl4
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxBitmap.java46
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFile.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFile.java88
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFileDetails.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFileDetails.java196
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/ASelectedGpxFile.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/ASelectedGpxFile.java85
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/CreateGpxBitmapParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/GpxColorParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/GpxColorParams.java66
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/HideGpxParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/HideGpxParams.java45
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/ImportGpxParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/RemoveGpxParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/RemoveGpxParams.java48
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/ShowGpxParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/ShowGpxParams.java44
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/StartGpxRecordingParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/gpx/StopGpxRecordingParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/map/ALatLon.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/map/SetMapLocationParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/map/SetMapLocationParams.java68
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/AMapLayer.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/AddMapLayerParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/AddMapLayerParams.java44
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/RemoveMapLayerParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/RemoveMapLayerParams.java44
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/UpdateMapLayerParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/UpdateMapLayerParams.java44
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/AMapPoint.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/AddMapPointParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/AddMapPointParams.java51
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/RemoveMapPointParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/RemoveMapPointParams.java51
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/ShowMapPointParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/ShowMapPointParams.java56
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/UpdateMapPointParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/UpdateMapPointParams.java59
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AMapMarker.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AMapMarker.java63
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AddMapMarkerParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AddMapMarkerParams.java44
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkerParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkerParams.java44
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkersParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkersParams.java37
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapmarker/UpdateMapMarkerParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapmarker/UpdateMapMarkerParams.java52
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AMapWidget.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AMapWidget.java110
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AddMapWidgetParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AddMapWidgetParams.java43
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapwidget/RemoveMapWidgetParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapwidget/RemoveMapWidgetParams.java43
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapwidget/UpdateMapWidgetParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/mapwidget/UpdateMapWidgetParams.java43
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerFooterParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerHeaderParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerItem.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navdrawer/SetNavDrawerItemsParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navigation/ADirectionInfo.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navigation/ANavigationUpdateParams.aidl4
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navigation/ANavigationVoiceRouterMessageParams.java56
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navigation/MuteNavigationParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateGpxParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateSearchParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navigation/OnVoiceNavigationParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navigation/OnVoiceNavigationParams.java57
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navigation/PauseNavigationParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navigation/ResumeNavigationParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navigation/StopNavigationParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/navigation/UnmuteNavigationParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/note/StartAudioRecordingParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/note/StartVideoRecordingParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/note/StopRecordingParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/note/TakePhotoNoteParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/search/SearchParams.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/search/SearchResult.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/tiles/ASqliteDbFile.aidl3
-rw-r--r--OsmAnd-telegram/src/net/osmand/aidl/tiles/ASqliteDbFile.java69
-rw-r--r--OsmAnd-telegram/src/net/osmand/telegram/helpers/OsmandAidlHelper.kt94
-rw-r--r--OsmAnd-telegram/src/net/osmand/telegram/helpers/ShowLocationHelper.kt10
-rw-r--r--OsmAnd-telegram/src/net/osmand/telegram/ui/UserGpxInfoFragment.kt2
-rw-r--r--OsmAnd/AndroidManifest.xml7
-rw-r--r--OsmAnd/build.gradle1
-rw-r--r--OsmAnd/res/drawable-hdpi/ic_action_openstreetmap_logo.pngbin2110 -> 694 bytes
-rw-r--r--OsmAnd/res/drawable-hdpi/ic_action_utv.pngbin0 -> 452 bytes
-rw-r--r--[-rwxr-xr-x]OsmAnd/res/drawable-hdpi/ic_action_width_limit.pngbin554 -> 438 bytes
-rw-r--r--OsmAnd/res/drawable-hdpi/ic_sdcard.pngbin382 -> 344 bytes
-rw-r--r--OsmAnd/res/drawable-hdpi/map_action_utv.pngbin0 -> 452 bytes
-rwxr-xr-xOsmAnd/res/drawable-large-hdpi/map_action_utv.pngbin0 -> 685 bytes
-rwxr-xr-xOsmAnd/res/drawable-large-xhdpi/map_action_utv.pngbin0 -> 1038 bytes
-rwxr-xr-xOsmAnd/res/drawable-large/map_action_utv.pngbin0 -> 452 bytes
-rwxr-xr-x[-rw-r--r--]OsmAnd/res/drawable-mdpi/ic_action_openstreetmap_logo.pngbin1608 -> 530 bytes
-rwxr-xr-xOsmAnd/res/drawable-mdpi/ic_action_utv.pngbin0 -> 392 bytes
-rwxr-xr-xOsmAnd/res/drawable-mdpi/ic_action_width_limit.pngbin411 -> 360 bytes
-rwxr-xr-xOsmAnd/res/drawable-mdpi/map_action_utv.pngbin0 -> 392 bytes
-rwxr-xr-x[-rw-r--r--]OsmAnd/res/drawable-xhdpi/ic_action_openstreetmap_logo.pngbin2449 -> 942 bytes
-rwxr-xr-xOsmAnd/res/drawable-xhdpi/ic_action_utv.pngbin0 -> 685 bytes
-rwxr-xr-xOsmAnd/res/drawable-xhdpi/ic_action_width_limit.pngbin711 -> 658 bytes
-rwxr-xr-xOsmAnd/res/drawable-xhdpi/map_action_utv.pngbin0 -> 685 bytes
-rwxr-xr-x[-rw-r--r--]OsmAnd/res/drawable-xxhdpi/ic_action_openstreetmap_logo.pngbin3253 -> 1435 bytes
-rwxr-xr-xOsmAnd/res/drawable-xxhdpi/ic_action_utv.pngbin0 -> 1038 bytes
-rwxr-xr-xOsmAnd/res/drawable-xxhdpi/ic_action_width_limit.pngbin988 -> 966 bytes
-rwxr-xr-xOsmAnd/res/drawable-xxhdpi/map_action_utv.pngbin0 -> 1038 bytes
-rwxr-xr-xOsmAnd/res/drawable-xxxhdpi/ic_action_openstreetmap_logo.pngbin0 -> 1926 bytes
-rwxr-xr-xOsmAnd/res/drawable-xxxhdpi/ic_action_utv.pngbin0 -> 1377 bytes
-rwxr-xr-xOsmAnd/res/drawable-xxxhdpi/ic_action_width_limit.pngbin1380 -> 1330 bytes
-rwxr-xr-xOsmAnd/res/drawable-xxxhdpi/map_action_utv.pngbin0 -> 1377 bytes
-rw-r--r--OsmAnd/res/layout/data_storage_memory_used_item.xml47
-rw-r--r--OsmAnd/res/layout/divider_padding_half.xml25
-rw-r--r--OsmAnd/res/layout/preference_category_with_right_text.xml37
-rw-r--r--OsmAnd/res/values-ast/phrases.xml142
-rw-r--r--OsmAnd/res/values-b+ast/strings.xml25
-rw-r--r--OsmAnd/res/values-ca/strings.xml15
-rw-r--r--OsmAnd/res/values-da/phrases.xml2
-rw-r--r--OsmAnd/res/values-da/strings.xml14
-rw-r--r--OsmAnd/res/values-de/phrases.xml2
-rw-r--r--OsmAnd/res/values-de/strings.xml45
-rw-r--r--OsmAnd/res/values-eo/phrases.xml2
-rw-r--r--OsmAnd/res/values-eo/strings.xml46
-rw-r--r--OsmAnd/res/values-es-rAR/phrases.xml2
-rw-r--r--OsmAnd/res/values-es-rAR/strings.xml22
-rw-r--r--OsmAnd/res/values-es-rUS/strings.xml1
-rw-r--r--OsmAnd/res/values-es/strings.xml29
-rw-r--r--OsmAnd/res/values-eu/strings.xml158
-rw-r--r--OsmAnd/res/values-fa/strings.xml124
-rw-r--r--OsmAnd/res/values-fr/phrases.xml10
-rw-r--r--OsmAnd/res/values-fr/strings.xml14
-rw-r--r--OsmAnd/res/values-gl/phrases.xml2
-rw-r--r--OsmAnd/res/values-gl/strings.xml46
-rw-r--r--OsmAnd/res/values-he/strings.xml14
-rw-r--r--OsmAnd/res/values-is/strings.xml1
-rw-r--r--OsmAnd/res/values-it/strings.xml2
-rw-r--r--OsmAnd/res/values-my/strings.xml238
-rw-r--r--OsmAnd/res/values-nb/strings.xml54
-rw-r--r--OsmAnd/res/values-nl/strings.xml11
-rw-r--r--OsmAnd/res/values-oc/phrases.xml131
-rw-r--r--OsmAnd/res/values-pl/strings.xml43
-rw-r--r--OsmAnd/res/values-pt-rBR/phrases.xml2
-rw-r--r--OsmAnd/res/values-pt-rBR/strings.xml28
-rw-r--r--OsmAnd/res/values-pt/strings.xml19
-rw-r--r--OsmAnd/res/values-ru/phrases.xml5
-rw-r--r--OsmAnd/res/values-ru/strings.xml25
-rw-r--r--OsmAnd/res/values-sc/phrases.xml1
-rw-r--r--OsmAnd/res/values-sc/strings.xml1
-rw-r--r--OsmAnd/res/values-sk/strings.xml34
-rw-r--r--OsmAnd/res/values-sv/strings.xml1
-rw-r--r--OsmAnd/res/values-tr/phrases.xml445
-rw-r--r--OsmAnd/res/values-tr/strings.xml18
-rw-r--r--OsmAnd/res/values-zh-rTW/phrases.xml125
-rw-r--r--OsmAnd/res/values-zh-rTW/strings.xml45
-rw-r--r--OsmAnd/res/values/phrases.xml6
-rw-r--r--OsmAnd/res/values/strings.xml14
-rw-r--r--OsmAnd/res/xml/data_storage.xml38
-rw-r--r--OsmAnd/res/xml/general_profile_settings.xml5
-rw-r--r--OsmAnd/src/net/osmand/aidl/AidlCallbackListenerV2.java36
-rw-r--r--OsmAnd/src/net/osmand/aidl/AidlContextMenuButtonWrapper.java64
-rw-r--r--OsmAnd/src/net/osmand/aidl/AidlContextMenuButtonsWrapper.java86
-rw-r--r--OsmAnd/src/net/osmand/aidl/AidlMapLayerWrapper.java153
-rw-r--r--OsmAnd/src/net/osmand/aidl/AidlMapPointWrapper.java85
-rw-r--r--OsmAnd/src/net/osmand/aidl/AidlMapWidgetWrapper.java78
-rw-r--r--OsmAnd/src/net/osmand/aidl/AidlSearchResultWrapper.java52
-rw-r--r--OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java703
-rw-r--r--OsmAnd/src/net/osmand/aidl/OsmandAidlConstants.java36
-rw-r--r--OsmAnd/src/net/osmand/aidl/OsmandAidlService.java266
-rw-r--r--OsmAnd/src/net/osmand/aidl/OsmandAidlServiceV2.java1313
-rw-r--r--OsmAnd/src/net/osmand/aidl/navigation/OnVoiceNavigationParams.java8
-rw-r--r--OsmAnd/src/net/osmand/plus/AppInitializer.java1
-rw-r--r--OsmAnd/src/net/osmand/plus/ApplicationMode.java32
-rw-r--r--OsmAnd/src/net/osmand/plus/GPXDatabase.java5
-rw-r--r--OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java19
-rw-r--r--OsmAnd/src/net/osmand/plus/OsmAndAppCustomization.java137
-rw-r--r--OsmAnd/src/net/osmand/plus/OsmAndLocationSimulation.java4
-rw-r--r--OsmAnd/src/net/osmand/plus/OsmandApplication.java5
-rw-r--r--OsmAnd/src/net/osmand/plus/OsmandSettings.java81
-rw-r--r--OsmAnd/src/net/osmand/plus/SettingsHelper.java669
-rw-r--r--OsmAnd/src/net/osmand/plus/TargetPointsHelper.java6
-rw-r--r--OsmAnd/src/net/osmand/plus/activities/MapActivity.java18
-rw-r--r--OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java40
-rw-r--r--OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java17
-rw-r--r--OsmAnd/src/net/osmand/plus/activities/SettingsNavigationActivity.java7
-rw-r--r--OsmAnd/src/net/osmand/plus/activities/actions/OsmandRestoreOrExitDialog.java2
-rw-r--r--OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java2
-rw-r--r--OsmAnd/src/net/osmand/plus/base/MapViewTrackingUtilities.java6
-rw-r--r--OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java2
-rw-r--r--OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java10
-rw-r--r--OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java124
-rw-r--r--OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java10
-rw-r--r--OsmAnd/src/net/osmand/plus/helpers/GpxUiHelper.java27
-rw-r--r--OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java10
-rw-r--r--OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/AMapPointMenuController.java22
-rw-r--r--OsmAnd/src/net/osmand/plus/mapcontextmenu/other/RoutePreferencesMenu.java2
-rw-r--r--OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java2
-rw-r--r--OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java2
-rw-r--r--OsmAnd/src/net/osmand/plus/myplaces/TrackBitmapDrawer.java1
-rw-r--r--OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java14
-rw-r--r--OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java2
-rw-r--r--OsmAnd/src/net/osmand/plus/poi/PoiFiltersHelper.java1
-rw-r--r--OsmAnd/src/net/osmand/plus/profiles/EditProfileFragment.java2
-rw-r--r--OsmAnd/src/net/osmand/plus/profiles/SelectProfileBottomSheetDialogFragment.java1
-rw-r--r--OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java8
-rw-r--r--OsmAnd/src/net/osmand/plus/render/MapRenderRepositories.java9
-rw-r--r--OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java16
-rw-r--r--OsmAnd/src/net/osmand/plus/routepreparationmenu/RouteOptionsBottomSheet.java2
-rw-r--r--OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/BaseCard.java4
-rw-r--r--OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/HistoryCard.java9
-rw-r--r--OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/MapMarkersCard.java8
-rw-r--r--OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/TracksCard.java9
-rw-r--r--OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java19
-rw-r--r--OsmAnd/src/net/osmand/plus/routing/RouteProvider.java98
-rw-r--r--OsmAnd/src/net/osmand/plus/settings/BaseSettingsFragment.java2
-rw-r--r--OsmAnd/src/net/osmand/plus/settings/DataStorageFragment.java129
-rw-r--r--OsmAnd/src/net/osmand/plus/settings/DataStorageItemsHolder.java325
-rw-r--r--OsmAnd/src/net/osmand/plus/settings/DataStorageMemoryItem.java122
-rw-r--r--OsmAnd/src/net/osmand/plus/settings/DataStorageMenuItem.java28
-rw-r--r--OsmAnd/src/net/osmand/plus/settings/GeneralProfileSettingsFragment.java20
-rw-r--r--OsmAnd/src/net/osmand/plus/settings/RouteParametersFragment.java81
-rw-r--r--OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java4
-rw-r--r--OsmAnd/src/net/osmand/plus/views/AidlMapLayer.java59
-rw-r--r--OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java6
-rw-r--r--OsmAnd/src/net/osmand/plus/views/GPXLayer.java16
-rw-r--r--OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java18
-rw-r--r--OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java4
-rw-r--r--OsmAnd/src/net/osmand/plus/views/RulerControlLayer.java13
-rw-r--r--OsmAnd/src/net/osmand/plus/voice/JSTTSCommandPlayerImpl.java16
-rw-r--r--OsmAnd/src/net/osmand/plus/wikivoyage/article/WikivoyageArticleDialogFragment.java3
-rw-r--r--build.gradle1
-rw-r--r--settings.gradle2
426 files changed, 10058 insertions, 4851 deletions
diff --git a/OsmAnd-api/.gitignore b/OsmAnd-api/.gitignore
new file mode 100644
index 0000000000..5497b8f2a1
--- /dev/null
+++ b/OsmAnd-api/.gitignore
@@ -0,0 +1,10 @@
+# Android Studio
+*/.idea
+*/*.iml
+
+# Gradle
+*/.gradle
+*/local.properties
+
+# Output files
+*/build \ No newline at end of file
diff --git a/OsmAnd-api/AndroidManifest.xml b/OsmAnd-api/AndroidManifest.xml
new file mode 100644
index 0000000000..cfede22a2a
--- /dev/null
+++ b/OsmAnd-api/AndroidManifest.xml
@@ -0,0 +1 @@
+<manifest package="net.osmand.aidlapi" /> \ No newline at end of file
diff --git a/OsmAnd-api/build.gradle b/OsmAnd-api/build.gradle
new file mode 100644
index 0000000000..cc5a9f9af4
--- /dev/null
+++ b/OsmAnd-api/build.gradle
@@ -0,0 +1,41 @@
+apply plugin: 'com.android.library'
+apply plugin: 'com.github.dcendents.android-maven'
+
+group = 'com.github.osmandapp.osmand'
+version = '2.0.0'
+
+android {
+ compileSdkVersion 27
+ buildToolsVersion "27.0.3"
+
+ defaultConfig {
+ minSdkVersion 14
+ targetSdkVersion 26
+ versionCode 2
+ versionName "2.0"
+ }
+ lintOptions {
+ abortOnError false
+ }
+ sourceSets {
+ main {
+ manifest.srcFile "AndroidManifest.xml"
+ aidl.srcDirs = ["src"]
+ java.srcDirs = ["src"]
+ }
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation 'com.android.support:support-annotations:27.1.1'
+}
+
+task sourcesJar(type: Jar) {
+ classifier = 'sources'
+ from android.sourceSets.main.java.srcDirs
+}
+
+artifacts {
+ archives sourcesJar
+} \ No newline at end of file
diff --git a/OsmAnd-api/res/values/strings.xml b/OsmAnd-api/res/values/strings.xml
new file mode 100644
index 0000000000..e4dbe2e964
--- /dev/null
+++ b/OsmAnd-api/res/values/strings.xml
@@ -0,0 +1,3 @@
+<resources>
+ <string name="app_name">OsmAnd-api</string>
+</resources>
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/AidlParams.java b/OsmAnd-api/src/net/osmand/aidlapi/AidlParams.java
new file mode 100644
index 0000000000..6024c5fcae
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/AidlParams.java
@@ -0,0 +1,35 @@
+package net.osmand.aidlapi;
+
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public abstract class AidlParams implements Parcelable {
+
+ @Override
+ public final void writeToParcel(Parcel dest, int flags) {
+ Bundle bundle = new Bundle();
+ writeToBundle(bundle);
+ dest.writeBundle(bundle);
+ }
+
+ public final void readFromParcel(Parcel in) {
+ Bundle bundle = in.readBundle(getClass().getClassLoader());
+ if (bundle != null) {
+ readFromBundle(bundle);
+ }
+ }
+
+ protected void writeToBundle(Bundle bundle) {
+
+ }
+
+ protected void readFromBundle(Bundle bundle) {
+
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlCallback.aidl b/OsmAnd-api/src/net/osmand/aidlapi/IOsmAndAidlCallback.aidl
index f15fe8f44b..1d7f954815 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlCallback.aidl
+++ b/OsmAnd-api/src/net/osmand/aidlapi/IOsmAndAidlCallback.aidl
@@ -1,9 +1,9 @@
-package net.osmand.aidl;
+package net.osmand.aidlapi;
-import net.osmand.aidl.search.SearchResult;
-import net.osmand.aidl.gpx.AGpxBitmap;
-import net.osmand.aidl.navigation.ADirectionInfo;
-import net.osmand.aidl.navigation.OnVoiceNavigationParams;
+import net.osmand.aidlapi.search.SearchResult;
+import net.osmand.aidlapi.gpx.AGpxBitmap;
+import net.osmand.aidlapi.navigation.ADirectionInfo;
+import net.osmand.aidlapi.navigation.OnVoiceNavigationParams;
interface IOsmAndAidlCallback {
@@ -46,7 +46,7 @@ interface IOsmAndAidlCallback {
* @param layerId - id of layer point and button associated with
*/
void onContextMenuButtonClicked(in int buttonId, String pointId, String layerId);
-
+
/**
* Callback for {@link IOsmAndAidlInterface} registerForVoiceRouterMessages() method.
*/
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlInterface.aidl b/OsmAnd-api/src/net/osmand/aidlapi/IOsmAndAidlInterface.aidl
index 541194e18d..702904584d 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlInterface.aidl
+++ b/OsmAnd-api/src/net/osmand/aidlapi/IOsmAndAidlInterface.aidl
@@ -1,97 +1,96 @@
-package net.osmand.aidl;
+package net.osmand.aidlapi;
-import net.osmand.aidl.map.ALatLon;
-import net.osmand.aidl.map.SetMapLocationParams;
+import net.osmand.aidlapi.map.ALatLon;
+import net.osmand.aidlapi.map.SetMapLocationParams;
-import net.osmand.aidl.favorite.group.AFavoriteGroup;
-import net.osmand.aidl.favorite.group.AddFavoriteGroupParams;
-import net.osmand.aidl.favorite.group.RemoveFavoriteGroupParams;
-import net.osmand.aidl.favorite.group.UpdateFavoriteGroupParams;
+import net.osmand.aidlapi.favorite.group.AFavoriteGroup;
+import net.osmand.aidlapi.favorite.group.AddFavoriteGroupParams;
+import net.osmand.aidlapi.favorite.group.RemoveFavoriteGroupParams;
+import net.osmand.aidlapi.favorite.group.UpdateFavoriteGroupParams;
-import net.osmand.aidl.favorite.AFavorite;
-import net.osmand.aidl.favorite.AddFavoriteParams;
-import net.osmand.aidl.favorite.RemoveFavoriteParams;
-import net.osmand.aidl.favorite.UpdateFavoriteParams;
+import net.osmand.aidlapi.favorite.AFavorite;
+import net.osmand.aidlapi.favorite.AddFavoriteParams;
+import net.osmand.aidlapi.favorite.RemoveFavoriteParams;
+import net.osmand.aidlapi.favorite.UpdateFavoriteParams;
-import net.osmand.aidl.mapmarker.AMapMarker;
-import net.osmand.aidl.mapmarker.AddMapMarkerParams;
-import net.osmand.aidl.mapmarker.RemoveMapMarkerParams;
-import net.osmand.aidl.mapmarker.UpdateMapMarkerParams;
+import net.osmand.aidlapi.mapmarker.AMapMarker;
+import net.osmand.aidlapi.mapmarker.AddMapMarkerParams;
+import net.osmand.aidlapi.mapmarker.RemoveMapMarkerParams;
+import net.osmand.aidlapi.mapmarker.UpdateMapMarkerParams;
-import net.osmand.aidl.calculateroute.CalculateRouteParams;
+import net.osmand.aidlapi.calculateroute.CalculateRouteParams;
-import net.osmand.aidl.gpx.ImportGpxParams;
-import net.osmand.aidl.gpx.ShowGpxParams;
-import net.osmand.aidl.gpx.StartGpxRecordingParams;
-import net.osmand.aidl.gpx.StopGpxRecordingParams;
-import net.osmand.aidl.gpx.HideGpxParams;
-import net.osmand.aidl.gpx.ASelectedGpxFile;
+import net.osmand.aidlapi.gpx.ImportGpxParams;
+import net.osmand.aidlapi.gpx.ShowGpxParams;
+import net.osmand.aidlapi.gpx.StartGpxRecordingParams;
+import net.osmand.aidlapi.gpx.StopGpxRecordingParams;
+import net.osmand.aidlapi.gpx.HideGpxParams;
+import net.osmand.aidlapi.gpx.ASelectedGpxFile;
-import net.osmand.aidl.mapwidget.AMapWidget;
-import net.osmand.aidl.mapwidget.AddMapWidgetParams;
-import net.osmand.aidl.mapwidget.RemoveMapWidgetParams;
-import net.osmand.aidl.mapwidget.UpdateMapWidgetParams;
+import net.osmand.aidlapi.mapwidget.AMapWidget;
+import net.osmand.aidlapi.mapwidget.AddMapWidgetParams;
+import net.osmand.aidlapi.mapwidget.RemoveMapWidgetParams;
+import net.osmand.aidlapi.mapwidget.UpdateMapWidgetParams;
-import net.osmand.aidl.maplayer.point.AMapPoint;
-import net.osmand.aidl.maplayer.point.AddMapPointParams;
-import net.osmand.aidl.maplayer.point.RemoveMapPointParams;
-import net.osmand.aidl.maplayer.point.UpdateMapPointParams;
-import net.osmand.aidl.maplayer.AMapLayer;
-import net.osmand.aidl.maplayer.AddMapLayerParams;
-import net.osmand.aidl.maplayer.RemoveMapLayerParams;
-import net.osmand.aidl.maplayer.UpdateMapLayerParams;
+import net.osmand.aidlapi.maplayer.point.AMapPoint;
+import net.osmand.aidlapi.maplayer.point.AddMapPointParams;
+import net.osmand.aidlapi.maplayer.point.RemoveMapPointParams;
+import net.osmand.aidlapi.maplayer.point.UpdateMapPointParams;
+import net.osmand.aidlapi.maplayer.AMapLayer;
+import net.osmand.aidlapi.maplayer.AddMapLayerParams;
+import net.osmand.aidlapi.maplayer.RemoveMapLayerParams;
+import net.osmand.aidlapi.maplayer.UpdateMapLayerParams;
-import net.osmand.aidl.navigation.NavigateParams;
-import net.osmand.aidl.navigation.NavigateGpxParams;
+import net.osmand.aidlapi.navigation.NavigateParams;
+import net.osmand.aidlapi.navigation.NavigateGpxParams;
-import net.osmand.aidl.note.TakePhotoNoteParams;
-import net.osmand.aidl.note.StartVideoRecordingParams;
-import net.osmand.aidl.note.StartAudioRecordingParams;
-import net.osmand.aidl.note.StopRecordingParams;
+import net.osmand.aidlapi.note.TakePhotoNoteParams;
+import net.osmand.aidlapi.note.StartVideoRecordingParams;
+import net.osmand.aidlapi.note.StartAudioRecordingParams;
+import net.osmand.aidlapi.note.StopRecordingParams;
-import net.osmand.aidl.gpx.RemoveGpxParams;
+import net.osmand.aidlapi.gpx.RemoveGpxParams;
-import net.osmand.aidl.maplayer.point.ShowMapPointParams;
+import net.osmand.aidlapi.maplayer.point.ShowMapPointParams;
-import net.osmand.aidl.navdrawer.SetNavDrawerItemsParams;
-import net.osmand.aidl.navdrawer.NavDrawerFooterParams;
-import net.osmand.aidl.navdrawer.NavDrawerHeaderParams;
+import net.osmand.aidlapi.navdrawer.SetNavDrawerItemsParams;
+import net.osmand.aidlapi.navdrawer.NavDrawerFooterParams;
+import net.osmand.aidlapi.navdrawer.NavDrawerHeaderParams;
-import net.osmand.aidl.navigation.PauseNavigationParams;
-import net.osmand.aidl.navigation.ResumeNavigationParams;
-import net.osmand.aidl.navigation.StopNavigationParams;
-import net.osmand.aidl.navigation.MuteNavigationParams;
-import net.osmand.aidl.navigation.UnmuteNavigationParams;
+import net.osmand.aidlapi.navigation.PauseNavigationParams;
+import net.osmand.aidlapi.navigation.ResumeNavigationParams;
+import net.osmand.aidlapi.navigation.StopNavigationParams;
+import net.osmand.aidlapi.navigation.MuteNavigationParams;
+import net.osmand.aidlapi.navigation.UnmuteNavigationParams;
-import net.osmand.aidl.IOsmAndAidlCallback;
+import net.osmand.aidlapi.IOsmAndAidlCallback;
-import net.osmand.aidl.search.SearchResult;
-import net.osmand.aidl.search.SearchParams;
-import net.osmand.aidl.navigation.NavigateSearchParams;
+import net.osmand.aidlapi.search.SearchResult;
+import net.osmand.aidlapi.search.SearchParams;
+import net.osmand.aidlapi.navigation.NavigateSearchParams;
-import net.osmand.aidl.customization.SetWidgetsParams;
-import net.osmand.aidl.customization.OsmandSettingsParams;
-import net.osmand.aidl.customization.OsmandSettingsInfoParams;
-import net.osmand.aidl.customization.CustomizationInfoParams;
+import net.osmand.aidlapi.customization.SetWidgetsParams;
+import net.osmand.aidlapi.customization.OsmandSettingsParams;
+import net.osmand.aidlapi.customization.OsmandSettingsInfoParams;
+import net.osmand.aidlapi.customization.CustomizationInfoParams;
-import net.osmand.aidl.gpx.AGpxFile;
-import net.osmand.aidl.gpx.AGpxFileDetails;
-import net.osmand.aidl.gpx.CreateGpxBitmapParams;
-import net.osmand.aidl.gpx.GpxColorParams;
+import net.osmand.aidlapi.gpx.AGpxFile;
+import net.osmand.aidlapi.gpx.AGpxFileDetails;
+import net.osmand.aidlapi.gpx.CreateGpxBitmapParams;
-import net.osmand.aidl.tiles.ASqliteDbFile;
+import net.osmand.aidlapi.tiles.ASqliteDbFile;
-import net.osmand.aidl.plugins.PluginParams;
-import net.osmand.aidl.copyfile.CopyFileParams;
+import net.osmand.aidlapi.plugins.PluginParams;
+import net.osmand.aidlapi.copyfile.CopyFileParams;
-import net.osmand.aidl.navigation.ANavigationUpdateParams;
-import net.osmand.aidl.navigation.ANavigationVoiceRouterMessageParams;
+import net.osmand.aidlapi.navigation.ANavigationUpdateParams;
+import net.osmand.aidlapi.navigation.ANavigationVoiceRouterMessageParams;
-import net.osmand.aidl.contextmenu.ContextMenuButtonsParams;
-import net.osmand.aidl.contextmenu.UpdateContextMenuButtonsParams;
-import net.osmand.aidl.contextmenu.RemoveContextMenuButtonsParams;
+import net.osmand.aidlapi.contextmenu.ContextMenuButtonsParams;
+import net.osmand.aidlapi.contextmenu.UpdateContextMenuButtonsParams;
+import net.osmand.aidlapi.contextmenu.RemoveContextMenuButtonsParams;
-import net.osmand.aidl.mapmarker.RemoveMapMarkersParams;
+import net.osmand.aidlapi.mapmarker.RemoveMapMarkersParams;
// NOTE: Add new methods at the end of file!!!
@@ -306,6 +305,13 @@ interface IOsmAndAidlInterface {
boolean addFavoriteGroup(in AddFavoriteGroupParams params);
/**
+ * Remove favorite group with given name.
+ *
+ * @param name (String) - name of favorite group.
+ */
+ boolean removeFavoriteGroup(in RemoveFavoriteGroupParams params);
+
+ /**
* Update favorite group with given params.
*
* @param namePrev (String) - group name (current).
@@ -315,13 +321,6 @@ interface IOsmAndAidlInterface {
* @param colorNew (String) - group color (new).
* @param visibleNew (boolean) - group visibility (new).
*/
- boolean removeFavoriteGroup(in RemoveFavoriteGroupParams params);
-
- /**
- * Remove favorite group with given name.
- *
- * @param name (String) - name of favorite group.
- */
boolean updateFavoriteGroup(in UpdateFavoriteGroupParams params);
/**
@@ -338,6 +337,16 @@ interface IOsmAndAidlInterface {
*/
boolean addFavorite(in AddFavoriteParams params);
+ /**
+ * Remove favorite at given location with given params.
+ *
+ * @param lat (double) - latitude.
+ * @param lon (double) - longitude.
+ * @param name (String) - name of favorite item.
+ * @param category (String) - category of favorite item.
+ */
+ boolean removeFavorite(in RemoveFavoriteParams params);
+
/**
* Update favorite at given location with given params.
*
@@ -356,16 +365,6 @@ interface IOsmAndAidlInterface {
* "lightgreen", "green", "lightblue", "blue", "purple", "pink", "brown".
* @param visibleNew (boolean) - should new category be visible after creation.
*/
- boolean removeFavorite(in RemoveFavoriteParams params);
-
- /**
- * Remove favorite at given location with given params.
- *
- * @param lat (double) - latitude.
- * @param lon (double) - longitude.
- * @param name (String) - name of favorite item.
- * @param category (String) - category of favorite item.
- */
boolean updateFavorite(in UpdateFavoriteParams params);
/**
@@ -817,10 +816,10 @@ interface IOsmAndAidlInterface {
*
*/
boolean setCustomization(in CustomizationInfoParams params);
-
+
/**
* Method to register for Voice Router voice messages during navigation. Notifies user about voice messages.
- *
+ *
* @params subscribeToUpdates (boolean) - boolean flag to subscribe or unsubscribe from messages
* @params callbackId (long) - id of callback, needed to unsubscribe from messages
* @params callback (IOsmAndAidlCallback) - callback to notify user on voice message
@@ -832,18 +831,4 @@ interface IOsmAndAidlInterface {
* Empty class of params
*/
boolean removeAllActiveMapMarkers(in RemoveMapMarkersParams params);
-
- /**
- * Method to get color name for gpx.
- *
- * @param fileName (String) - name of gpx file.
- *
- * @param gpxColor (String) - color name of gpx. Can be one of: "red", "orange", "lightblue",
- * "blue", "purple", "translucent_red", "translucent_orange",
- * "translucent_lightblue", "translucent_blue", "translucent_purple"
- * Which used in {@link #importGpx(in ImportGpxParams params) importGpx}
- * Or color hex if gpx has custom color.
- *
- */
- boolean getGpxColor(inout GpxColorParams params);
-}
+} \ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/plus/OsmAndCustomizationConstants.java b/OsmAnd-api/src/net/osmand/aidlapi/OsmAndCustomizationConstants.java
index 2fba261800..6b8ca44bfe 100644
--- a/OsmAnd/src/net/osmand/plus/OsmAndCustomizationConstants.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/OsmAndCustomizationConstants.java
@@ -1,9 +1,8 @@
-package net.osmand.plus;
+package net.osmand.aidlapi;
public interface OsmAndCustomizationConstants {
// Navigation Drawer:
-
String DRAWER_ITEM_ID_SCHEME = "drawer.action.";
String DRAWER_DASHBOARD_ID = DRAWER_ITEM_ID_SCHEME + "dashboard";
String DRAWER_MAP_MARKERS_ID = DRAWER_ITEM_ID_SCHEME + "map_markers";
@@ -23,7 +22,6 @@ public interface OsmAndCustomizationConstants {
String DRAWER_DIVIDER_ID = DRAWER_ITEM_ID_SCHEME + "divider";
// Configure Map:
-
String CONFIGURE_MAP_ITEM_ID_SCHEME = "map.configure.";
String SHOW_ITEMS_ID_SCHEME = CONFIGURE_MAP_ITEM_ID_SCHEME + "show.";
String RENDERING_ITEMS_ID_SCHEME = CONFIGURE_MAP_ITEM_ID_SCHEME + "rendering.";
@@ -60,7 +58,6 @@ public interface OsmAndCustomizationConstants {
String ROUTES_ID = RENDERING_ITEMS_ID_SCHEME + "routes";
// Map Controls:
-
String HUD_BTN_ID_SCHEME = "map.view.";
String LAYERS_HUD_ID = HUD_BTN_ID_SCHEME + "layers";
String COMPASS_HUD_ID = HUD_BTN_ID_SCHEME + "compass";
@@ -99,5 +96,4 @@ public interface OsmAndCustomizationConstants {
String PLUGIN_RASTER_MAPS = "osmand.rastermaps";
String PLUGIN_SKI_MAPS = "skimaps.plugin";
String PLUGIN_SRTM = "osmand.srtm";
-
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/OsmandAidlConstants.java b/OsmAnd-api/src/net/osmand/aidlapi/OsmandAidlConstants.java
new file mode 100644
index 0000000000..13eedb53c9
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/OsmandAidlConstants.java
@@ -0,0 +1,36 @@
+package net.osmand.aidlapi;
+
+public interface OsmandAidlConstants {
+
+ int OK_RESPONSE = 0;
+
+ int MIN_UPDATE_TIME_MS = 1000;
+ long COPY_FILE_PART_SIZE_LIMIT = 256 * 1024;
+ long COPY_FILE_MAX_LOCK_TIME_MS = 10000;
+
+ int CANNOT_ACCESS_API_ERROR = -5;
+ int UNKNOWN_API_ERROR = -2;
+
+ int MIN_UPDATE_TIME_MS_ERROR = -1;
+
+ int COPY_FILE_PARAMS_ERROR = -1001;
+ int COPY_FILE_PART_SIZE_LIMIT_ERROR = -1002;
+ int COPY_FILE_WRITE_LOCK_ERROR = -1003;
+ int COPY_FILE_IO_ERROR = -1004;
+ int COPY_FILE_UNSUPPORTED_FILE_TYPE_ERROR = -1005;
+
+ int TURN_TYPE_C = 1; //"C"; // continue (go straight)
+ int TURN_TYPE_TL = 2; // turn left
+ int TURN_TYPE_TSLL = 3; // turn slightly left
+ int TURN_TYPE_TSHL = 4; // turn sharply left
+ int TURN_TYPE_TR = 5; // turn right
+ int TURN_TYPE_TSLR = 6; // turn slightly right
+ int TURN_TYPE_TSHR = 7; // turn sharply right
+ int TURN_TYPE_KL = 8; // keep left
+ int TURN_TYPE_KR = 9; // keep right
+ int TURN_TYPE_TU = 10; // U-turn
+ int TURN_TYPE_TRU = 11; // Right U-turn
+ int TURN_TYPE_OFFR = 12; // Off route
+ int TURN_TYPE_RNDB = 13; // Roundabout
+ int TURN_TYPE_RNLB = 14; // Roundabout left
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/calculateroute/CalculateRouteParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/calculateroute/CalculateRouteParams.aidl
new file mode 100644
index 0000000000..4c695b9e9d
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/calculateroute/CalculateRouteParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.calculateroute;
+
+parcelable CalculateRouteParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/calculateroute/CalculateRouteParams.java b/OsmAnd-api/src/net/osmand/aidlapi/calculateroute/CalculateRouteParams.java
new file mode 100644
index 0000000000..8a6d9ed4f3
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/calculateroute/CalculateRouteParams.java
@@ -0,0 +1,101 @@
+package net.osmand.aidlapi.calculateroute;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+import net.osmand.aidlapi.map.ALatLon;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CalculateRouteParams extends AidlParams {
+
+ private ALatLon startPoint;
+ private String startPointName;
+ private ALatLon endPoint;
+ private String endPointName;
+ private ArrayList<ALatLon> intermediatePoints = new ArrayList<>();
+ private ArrayList<String> intermediateNames = new ArrayList<>();
+
+ public CalculateRouteParams(ALatLon startPoint, String startPointName,
+ ALatLon endPoint, String endPointName,
+ List<ALatLon> intermediatePoints, List<String> intermediateNames) {
+
+ if (endPoint == null) {
+ throw new IllegalArgumentException("endPoint cannot be null");
+ }
+
+ this.startPoint = startPoint;
+ this.startPointName = startPointName;
+ this.endPoint = endPoint;
+ this.endPointName = endPointName;
+ if (intermediatePoints != null) {
+ this.intermediatePoints.addAll(intermediatePoints);
+ }
+ if (intermediateNames != null) {
+ this.intermediateNames.addAll(intermediateNames);
+ }
+ }
+
+ public CalculateRouteParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<CalculateRouteParams> CREATOR = new Creator<CalculateRouteParams>() {
+ @Override
+ public CalculateRouteParams createFromParcel(Parcel in) {
+ return new CalculateRouteParams(in);
+ }
+
+ @Override
+ public CalculateRouteParams[] newArray(int size) {
+ return new CalculateRouteParams[size];
+ }
+ };
+
+ public ALatLon getStartPoint() {
+ return startPoint;
+ }
+
+ public String getStartPointName() {
+ return startPointName;
+ }
+
+ public ALatLon getEndPoint() {
+ return endPoint;
+ }
+
+ public String getEndPointName() {
+ return endPointName;
+ }
+
+ public List<ALatLon> getIntermediatePoints() {
+ return intermediatePoints;
+ }
+
+ public List<String> getIntermediateNames() {
+ return intermediateNames;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("startPoint", startPoint);
+ bundle.putString("startPointName", startPointName);
+ bundle.putParcelable("endPoint", endPoint);
+ bundle.putString("endPointName", endPointName);
+ bundle.putParcelableArrayList("intermediatePoints", intermediatePoints);
+ bundle.putStringArrayList("intermediateNames", intermediateNames);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(ALatLon.class.getClassLoader());
+ startPoint = bundle.getParcelable("startPoint");
+ startPointName = bundle.getString("startPointName");
+ endPoint = bundle.getParcelable("endPoint");
+ endPointName = bundle.getString("endPointName");
+ intermediatePoints = bundle.getParcelableArrayList("intermediatePoints");
+ intermediateNames = bundle.getStringArrayList("intermediateNames");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/AContextMenuButton.aidl b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/AContextMenuButton.aidl
new file mode 100644
index 0000000000..0492a45d8d
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/AContextMenuButton.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.contextmenu;
+
+parcelable AContextMenuButton; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/AContextMenuButton.java b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/AContextMenuButton.java
index b235116999..38643e174f 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/AContextMenuButton.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/AContextMenuButton.java
@@ -1,9 +1,11 @@
-package net.osmand.aidl.contextmenu;
+package net.osmand.aidlapi.contextmenu;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
-public class AContextMenuButton implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class AContextMenuButton extends AidlParams {
private int buttonId;
@@ -61,7 +63,7 @@ public class AContextMenuButton implements Parcelable {
return rightIconName;
}
- public boolean isNeedColorizeIcon() {
+ public boolean isTintIcon() {
return needColorizeIcon;
}
@@ -69,33 +71,25 @@ public class AContextMenuButton implements Parcelable {
return enabled;
}
- public static Creator<AContextMenuButton> getCREATOR() {
- return CREATOR;
- }
-
@Override
- public void writeToParcel(Parcel dest, int f) {
- dest.writeInt(buttonId);
- dest.writeString(leftTextCaption);
- dest.writeString(rightTextCaption);
- dest.writeString(leftIconName);
- dest.writeString(rightIconName);
- dest.writeInt(needColorizeIcon ? 1 : 0);
- dest.writeInt(enabled ? 1 : 0);
- }
-
- private void readFromParcel(Parcel in) {
- buttonId = in.readInt();
- leftTextCaption = in.readString();
- rightTextCaption = in.readString();
- leftIconName = in.readString();
- rightIconName = in.readString();
- needColorizeIcon = in.readInt() != 0;
- enabled = in.readInt() != 0;
+ public void writeToBundle(Bundle bundle) {
+ bundle.putInt("buttonId", buttonId);
+ bundle.putString("leftTextCaption", leftTextCaption);
+ bundle.putString("rightTextCaption", rightTextCaption);
+ bundle.putString("leftIconName", leftIconName);
+ bundle.putString("rightIconName", rightIconName);
+ bundle.putBoolean("needColorizeIcon", needColorizeIcon);
+ bundle.putBoolean("enabled", enabled);
}
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ buttonId = bundle.getInt("buttonId");
+ leftTextCaption = bundle.getString("leftTextCaption");
+ rightTextCaption = bundle.getString("rightTextCaption");
+ leftIconName = bundle.getString("leftIconName");
+ rightIconName = bundle.getString("rightIconName");
+ needColorizeIcon = bundle.getBoolean("needColorizeIcon");
+ enabled = bundle.getBoolean("enabled");
}
} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/ContextMenuButtonsParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/ContextMenuButtonsParams.aidl
new file mode 100644
index 0000000000..bfde3cfda7
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/ContextMenuButtonsParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.contextmenu;
+
+parcelable ContextMenuButtonsParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/ContextMenuButtonsParams.java b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/ContextMenuButtonsParams.java
index 0bdfb25feb..0d26f40f38 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/ContextMenuButtonsParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/ContextMenuButtonsParams.java
@@ -1,12 +1,14 @@
-package net.osmand.aidl.contextmenu;
+package net.osmand.aidlapi.contextmenu;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
+
+import net.osmand.aidlapi.AidlParams;
import java.util.ArrayList;
import java.util.List;
-public class ContextMenuButtonsParams implements Parcelable {
+public class ContextMenuButtonsParams extends AidlParams {
private AContextMenuButton leftButton;
private AContextMenuButton rightButton;
@@ -17,7 +19,7 @@ public class ContextMenuButtonsParams implements Parcelable {
private long callbackId = -1L;
- private List<String> pointsIds = new ArrayList<>();
+ private ArrayList<String> pointsIds = new ArrayList<>();
public ContextMenuButtonsParams(AContextMenuButton leftButton, AContextMenuButton rightButton, String id, String appPackage, String layerId, long callbackId, List<String> pointsIds) {
this.leftButton = leftButton;
@@ -26,7 +28,9 @@ public class ContextMenuButtonsParams implements Parcelable {
this.appPackage = appPackage;
this.layerId = layerId;
this.callbackId = callbackId;
- this.pointsIds = pointsIds;
+ if (pointsIds != null) {
+ this.pointsIds.addAll(pointsIds);
+ }
}
public ContextMenuButtonsParams(Parcel in) {
@@ -78,28 +82,25 @@ public class ContextMenuButtonsParams implements Parcelable {
}
@Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeParcelable(leftButton, flags);
- dest.writeParcelable(rightButton, flags);
- dest.writeString(id);
- dest.writeString(appPackage);
- dest.writeString(layerId);
- dest.writeLong(callbackId);
- dest.writeStringList(pointsIds);
- }
-
- private void readFromParcel(Parcel in) {
- leftButton = in.readParcelable(AContextMenuButton.class.getClassLoader());
- rightButton = in.readParcelable(AContextMenuButton.class.getClassLoader());
- id = in.readString();
- appPackage = in.readString();
- layerId = in.readString();
- callbackId = in.readLong();
- in.readStringList(pointsIds);
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("leftButton", leftButton);
+ bundle.putParcelable("rightButton", rightButton);
+ bundle.putString("id", id);
+ bundle.putString("appPackage", appPackage);
+ bundle.putString("layerId", layerId);
+ bundle.putLong("callbackId", callbackId);
+ bundle.putStringArrayList("pointsIds", pointsIds);
}
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AContextMenuButton.class.getClassLoader());
+ leftButton = bundle.getParcelable("leftButton");
+ rightButton = bundle.getParcelable("rightButton");
+ id = bundle.getString("id");
+ appPackage = bundle.getString("appPackage");
+ layerId = bundle.getString("layerId");
+ callbackId = bundle.getLong("callbackId");
+ pointsIds = bundle.getStringArrayList("pointsIds");
}
} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/RemoveContextMenuButtonsParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/RemoveContextMenuButtonsParams.aidl
new file mode 100644
index 0000000000..0f13a9d455
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/RemoveContextMenuButtonsParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.contextmenu;
+
+parcelable RemoveContextMenuButtonsParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/RemoveContextMenuButtonsParams.java b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/RemoveContextMenuButtonsParams.java
new file mode 100644
index 0000000000..c0182211a5
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/RemoveContextMenuButtonsParams.java
@@ -0,0 +1,53 @@
+package net.osmand.aidlapi.contextmenu;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class RemoveContextMenuButtonsParams extends AidlParams {
+
+ private String paramsId;
+ private long callbackId = -1L;
+
+ public RemoveContextMenuButtonsParams(String paramsId, long callbackId) {
+ this.paramsId = paramsId;
+ this.callbackId = callbackId;
+ }
+
+ public RemoveContextMenuButtonsParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<RemoveContextMenuButtonsParams> CREATOR = new Creator<RemoveContextMenuButtonsParams>() {
+ @Override
+ public RemoveContextMenuButtonsParams createFromParcel(Parcel in) {
+ return new RemoveContextMenuButtonsParams(in);
+ }
+
+ @Override
+ public RemoveContextMenuButtonsParams[] newArray(int size) {
+ return new RemoveContextMenuButtonsParams[size];
+ }
+ };
+
+ public String getParamsId() {
+ return paramsId;
+ }
+
+ public long getCallbackId() {
+ return callbackId;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("paramsId", paramsId);
+ bundle.putLong("callbackId", callbackId);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ paramsId = bundle.getString("paramsId");
+ callbackId = bundle.getLong("callbackId");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/UpdateContextMenuButtonsParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/UpdateContextMenuButtonsParams.aidl
new file mode 100644
index 0000000000..100d909c13
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/UpdateContextMenuButtonsParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.contextmenu;
+
+parcelable UpdateContextMenuButtonsParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/UpdateContextMenuButtonsParams.java b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/UpdateContextMenuButtonsParams.java
new file mode 100644
index 0000000000..8bbef5eff0
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/contextmenu/UpdateContextMenuButtonsParams.java
@@ -0,0 +1,46 @@
+package net.osmand.aidlapi.contextmenu;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class UpdateContextMenuButtonsParams extends AidlParams {
+
+ private ContextMenuButtonsParams buttonsParams;
+
+ public UpdateContextMenuButtonsParams(ContextMenuButtonsParams widget) {
+ this.buttonsParams = widget;
+ }
+
+ public UpdateContextMenuButtonsParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<UpdateContextMenuButtonsParams> CREATOR = new Creator<UpdateContextMenuButtonsParams>() {
+ @Override
+ public UpdateContextMenuButtonsParams createFromParcel(Parcel in) {
+ return new UpdateContextMenuButtonsParams(in);
+ }
+
+ @Override
+ public UpdateContextMenuButtonsParams[] newArray(int size) {
+ return new UpdateContextMenuButtonsParams[size];
+ }
+ };
+
+ public ContextMenuButtonsParams getContextMenuButtonsParams() {
+ return buttonsParams;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("buttonsParams", buttonsParams);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(ContextMenuButtonsParams.class.getClassLoader());
+ buttonsParams = bundle.getParcelable("buttonsParams");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/copyfile/CopyFileParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/copyfile/CopyFileParams.aidl
new file mode 100644
index 0000000000..72f2e95d61
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/copyfile/CopyFileParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.copyfile;
+
+parcelable CopyFileParams;
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/copyfile/CopyFileParams.java b/OsmAnd-api/src/net/osmand/aidlapi/copyfile/CopyFileParams.java
index e795d5b7b7..2b18172717 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/copyfile/CopyFileParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/copyfile/CopyFileParams.java
@@ -1,10 +1,13 @@
-package net.osmand.aidl.copyfile;
+package net.osmand.aidlapi.copyfile;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
import android.support.annotation.NonNull;
-public class CopyFileParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class CopyFileParams extends AidlParams {
+
private String fileName;
private byte[] filePartData;
private long startTime;
@@ -17,6 +20,22 @@ public class CopyFileParams implements Parcelable {
this.done = done;
}
+ protected CopyFileParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<CopyFileParams> CREATOR = new Creator<CopyFileParams>() {
+ @Override
+ public CopyFileParams createFromParcel(Parcel in) {
+ return new CopyFileParams(in);
+ }
+
+ @Override
+ public CopyFileParams[] newArray(int size) {
+ return new CopyFileParams[size];
+ }
+ };
+
public String getFileName() {
return fileName;
}
@@ -33,29 +52,20 @@ public class CopyFileParams implements Parcelable {
return startTime;
}
- protected CopyFileParams(Parcel in) {
- fileName = in.readString();
- filePartData = in.createByteArray();
- startTime = in.readLong();
- done = in.readByte() == 0;
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("fileName", fileName);
+ bundle.putByteArray("filePartData", filePartData);
+ bundle.putLong("startTime", startTime);
+ bundle.putBoolean("done", done);
}
- public static final Creator<CopyFileParams> CREATOR = new Creator<CopyFileParams>() {
- @Override
- public CopyFileParams createFromParcel(Parcel in) {
- return new CopyFileParams(in);
- }
-
- @Override
- public CopyFileParams[] newArray(int size) {
- return new CopyFileParams[size];
- }
- };
-
-
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ fileName = bundle.getString("fileName");
+ filePartData = bundle.getByteArray("filePartData");
+ startTime = bundle.getLong("startTime");
+ done = bundle.getBoolean("done");
}
@Override
@@ -67,12 +77,4 @@ public class CopyFileParams implements Parcelable {
", done=" + done +
" }";
}
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(fileName);
- dest.writeByteArray(filePartData);
- dest.writeLong(startTime);
- dest.writeByte((byte) (done ? 0 : 1));
- }
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/customization/CustomizationInfoParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/customization/CustomizationInfoParams.aidl
new file mode 100644
index 0000000000..b055e6d135
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/customization/CustomizationInfoParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.customization;
+
+parcelable CustomizationInfoParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/customization/CustomizationInfoParams.java b/OsmAnd-api/src/net/osmand/aidlapi/customization/CustomizationInfoParams.java
index 0e83f7f41c..ea5ef81771 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/customization/CustomizationInfoParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/customization/CustomizationInfoParams.java
@@ -1,18 +1,18 @@
-package net.osmand.aidl.customization;
+package net.osmand.aidlapi.customization;
-import android.annotation.SuppressLint;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
-import net.osmand.aidl.navdrawer.NavDrawerFooterParams;
-import net.osmand.aidl.navdrawer.NavDrawerHeaderParams;
-import net.osmand.aidl.navdrawer.SetNavDrawerItemsParams;
-import net.osmand.aidl.plugins.PluginParams;
+import net.osmand.aidlapi.AidlParams;
+import net.osmand.aidlapi.navdrawer.NavDrawerFooterParams;
+import net.osmand.aidlapi.navdrawer.NavDrawerHeaderParams;
+import net.osmand.aidlapi.navdrawer.SetNavDrawerItemsParams;
+import net.osmand.aidlapi.plugins.PluginParams;
import java.util.ArrayList;
import java.util.List;
-public class CustomizationInfoParams implements Parcelable {
+public class CustomizationInfoParams extends AidlParams {
private OsmandSettingsParams settingsParams;
@@ -25,10 +25,10 @@ public class CustomizationInfoParams implements Parcelable {
private ArrayList<PluginParams> pluginsParams = new ArrayList<>();
- private List<String> featuresEnabledIds = new ArrayList<>();
- private List<String> featuresDisabledIds = new ArrayList<>();
- private List<String> featuresEnabledPatterns = new ArrayList<>();
- private List<String> featuresDisabledPatterns = new ArrayList<>();
+ private ArrayList<String> featuresEnabledIds = new ArrayList<>();
+ private ArrayList<String> featuresDisabledIds = new ArrayList<>();
+ private ArrayList<String> featuresEnabledPatterns = new ArrayList<>();
+ private ArrayList<String> featuresDisabledPatterns = new ArrayList<>();
public CustomizationInfoParams(OsmandSettingsParams settingsParams,
NavDrawerHeaderParams navDrawerHeaderParams,
@@ -130,43 +130,44 @@ public class CustomizationInfoParams implements Parcelable {
}
@Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(settingsParams, flags);
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("settingsParams", settingsParams);
- out.writeParcelable(navDrawerHeaderParams, flags);
- out.writeParcelable(navDrawerFooterParams, flags);
- out.writeParcelable(navDrawerItemsParams, flags);
+ bundle.putParcelable("navDrawerHeaderParams", navDrawerHeaderParams);
+ bundle.putParcelable("navDrawerFooterParams", navDrawerFooterParams);
+ bundle.putParcelable("navDrawerItemsParams", navDrawerItemsParams);
- out.writeTypedList(visibilityWidgetsParams);
- out.writeTypedList(availabilityWidgetsParams);
- out.writeTypedList(pluginsParams);
+ bundle.putParcelableArrayList("visibilityWidgetsParams", visibilityWidgetsParams);
+ bundle.putParcelableArrayList("availabilityWidgetsParams", availabilityWidgetsParams);
+ bundle.putParcelableArrayList("pluginsParams", pluginsParams);
- out.writeStringList(featuresEnabledIds);
- out.writeStringList(featuresDisabledIds);
- out.writeStringList(featuresEnabledPatterns);
- out.writeStringList(featuresDisabledPatterns);
- }
-
- @SuppressLint("ParcelClassLoader")
- private void readFromParcel(Parcel in) {
- settingsParams = in.readParcelable(OsmandSettingsParams.class.getClassLoader());
-
- navDrawerHeaderParams = in.readParcelable(NavDrawerHeaderParams.class.getClassLoader());
- navDrawerFooterParams = in.readParcelable(NavDrawerFooterParams.class.getClassLoader());
- navDrawerItemsParams = in.readParcelable(SetNavDrawerItemsParams.class.getClassLoader());
-
- in.readTypedList(visibilityWidgetsParams, SetWidgetsParams.CREATOR);
- in.readTypedList(availabilityWidgetsParams, SetWidgetsParams.CREATOR);
- in.readTypedList(pluginsParams, PluginParams.CREATOR);
-
- in.readStringList(featuresEnabledIds);
- in.readStringList(featuresDisabledIds);
- in.readStringList(featuresEnabledPatterns);
- in.readStringList(featuresDisabledPatterns);
+ bundle.putStringArrayList("featuresEnabledIds", featuresEnabledIds);
+ bundle.putStringArrayList("featuresDisabledIds", featuresDisabledIds);
+ bundle.putStringArrayList("featuresEnabledPatterns", featuresEnabledPatterns);
+ bundle.putStringArrayList("featuresDisabledPatterns", featuresDisabledPatterns);
}
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(OsmandSettingsParams.class.getClassLoader());
+ settingsParams = bundle.getParcelable("settingsParams");
+
+ bundle.setClassLoader(NavDrawerHeaderParams.class.getClassLoader());
+ navDrawerHeaderParams = bundle.getParcelable("navDrawerHeaderParams");
+ bundle.setClassLoader(NavDrawerFooterParams.class.getClassLoader());
+ navDrawerFooterParams = bundle.getParcelable("navDrawerFooterParams");
+ bundle.setClassLoader(SetNavDrawerItemsParams.class.getClassLoader());
+ navDrawerItemsParams = bundle.getParcelable("navDrawerItemsParams");
+
+ bundle.setClassLoader(SetWidgetsParams.class.getClassLoader());
+ visibilityWidgetsParams = bundle.getParcelableArrayList("visibilityWidgetsParams");
+ availabilityWidgetsParams = bundle.getParcelableArrayList("availabilityWidgetsParams");
+ bundle.setClassLoader(PluginParams.class.getClassLoader());
+ pluginsParams = bundle.getParcelableArrayList("pluginsParams");
+
+ featuresEnabledIds = bundle.getStringArrayList("featuresEnabledIds");
+ featuresDisabledIds = bundle.getStringArrayList("featuresDisabledIds");
+ featuresEnabledPatterns = bundle.getStringArrayList("featuresEnabledPatterns");
+ featuresDisabledPatterns = bundle.getStringArrayList("featuresDisabledPatterns");
}
} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/customization/OsmandSettingsInfoParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/customization/OsmandSettingsInfoParams.aidl
new file mode 100644
index 0000000000..261a2c96ea
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/customization/OsmandSettingsInfoParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.customization;
+
+parcelable OsmandSettingsInfoParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/customization/OsmandSettingsInfoParams.java b/OsmAnd-api/src/net/osmand/aidlapi/customization/OsmandSettingsInfoParams.java
index ba4285af1d..c7cf7e16c5 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/customization/OsmandSettingsInfoParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/customization/OsmandSettingsInfoParams.java
@@ -1,11 +1,12 @@
-package net.osmand.aidl.customization;
+package net.osmand.aidlapi.customization;
-import android.annotation.SuppressLint;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
import android.support.annotation.NonNull;
-public class OsmandSettingsInfoParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class OsmandSettingsInfoParams extends AidlParams {
private String sharedPreferencesName;
@@ -34,17 +35,12 @@ public class OsmandSettingsInfoParams implements Parcelable {
}
@Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(sharedPreferencesName);
- }
-
- @SuppressLint("ParcelClassLoader")
- private void readFromParcel(Parcel in) {
- sharedPreferencesName = in.readString();
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("sharedPreferencesName", sharedPreferencesName);
}
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ sharedPreferencesName = bundle.getString("sharedPreferencesName");
}
} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/customization/OsmandSettingsParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/customization/OsmandSettingsParams.aidl
new file mode 100644
index 0000000000..859fc34ada
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/customization/OsmandSettingsParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.customization;
+
+parcelable OsmandSettingsParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/customization/OsmandSettingsParams.java b/OsmAnd-api/src/net/osmand/aidlapi/customization/OsmandSettingsParams.java
index bff8c68018..dead6bbd2f 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/customization/OsmandSettingsParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/customization/OsmandSettingsParams.java
@@ -1,20 +1,20 @@
-package net.osmand.aidl.customization;
+package net.osmand.aidlapi.customization;
-import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
-public class OsmandSettingsParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class OsmandSettingsParams extends AidlParams {
private String sharedPreferencesName;
- private Bundle bundle;
+ private Bundle bundleSettings;
public OsmandSettingsParams(@NonNull String sharedPreferencesName, @Nullable Bundle bundle) {
this.sharedPreferencesName = sharedPreferencesName;
- this.bundle = bundle;
+ this.bundleSettings = bundle;
}
public OsmandSettingsParams(Parcel in) {
@@ -38,23 +38,18 @@ public class OsmandSettingsParams implements Parcelable {
}
public Bundle getBundle() {
- return bundle;
+ return bundleSettings;
}
@Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(sharedPreferencesName);
- out.writeBundle(bundle);
- }
-
- @SuppressLint("ParcelClassLoader")
- private void readFromParcel(Parcel in) {
- sharedPreferencesName = in.readString();
- bundle = in.readBundle();
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("sharedPreferencesName", sharedPreferencesName);
+ bundle.putBundle("bundleSettings", bundleSettings);
}
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ sharedPreferencesName = bundle.getString("sharedPreferencesName");
+ bundleSettings = bundle.getBundle("bundleSettings");
}
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/customization/SetWidgetsParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/customization/SetWidgetsParams.aidl
new file mode 100644
index 0000000000..6b6c47cfe2
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/customization/SetWidgetsParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.customization;
+
+parcelable SetWidgetsParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/customization/SetWidgetsParams.java b/OsmAnd-api/src/net/osmand/aidlapi/customization/SetWidgetsParams.java
new file mode 100644
index 0000000000..ed9755710a
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/customization/SetWidgetsParams.java
@@ -0,0 +1,59 @@
+package net.osmand.aidlapi.customization;
+
+import android.os.Bundle;
+import android.os.Parcel;
+import android.support.annotation.Nullable;
+
+import net.osmand.aidlapi.AidlParams;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SetWidgetsParams extends AidlParams {
+
+ private String widgetKey;
+ private ArrayList<String> appModesKeys = new ArrayList<>();
+
+ public SetWidgetsParams(String widgetKey, @Nullable List<String> appModesKeys) {
+ this.widgetKey = widgetKey;
+ if (appModesKeys != null) {
+ this.appModesKeys.addAll(appModesKeys);
+ }
+ }
+
+ public SetWidgetsParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<SetWidgetsParams> CREATOR = new Creator<SetWidgetsParams>() {
+ @Override
+ public SetWidgetsParams createFromParcel(Parcel in) {
+ return new SetWidgetsParams(in);
+ }
+
+ @Override
+ public SetWidgetsParams[] newArray(int size) {
+ return new SetWidgetsParams[size];
+ }
+ };
+
+ public String getWidgetKey() {
+ return widgetKey;
+ }
+
+ public List<String> getAppModesKeys() {
+ return appModesKeys;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("widgetKey", widgetKey);
+ bundle.putStringArrayList("appModesKeys", appModesKeys);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ widgetKey = bundle.getString("widgetKey");
+ appModesKeys = bundle.getStringArrayList("appModesKeys");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/AFavorite.aidl b/OsmAnd-api/src/net/osmand/aidlapi/favorite/AFavorite.aidl
new file mode 100644
index 0000000000..9a3605a28e
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/AFavorite.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.favorite;
+
+parcelable AFavorite; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/AFavorite.java b/OsmAnd-api/src/net/osmand/aidlapi/favorite/AFavorite.java
new file mode 100644
index 0000000000..1e645d2fae
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/AFavorite.java
@@ -0,0 +1,94 @@
+package net.osmand.aidlapi.favorite;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class AFavorite extends AidlParams {
+
+ private double lat;
+ private double lon;
+ private String name;
+ private String description;
+ private String category;
+ private String color;
+ private boolean visible;
+
+ public AFavorite(double lat, double lon, String name, String description,
+ String category, String color, boolean visible) {
+ this.lat = lat;
+ this.lon = lon;
+ this.name = name;
+ this.description = description;
+ this.category = category;
+ this.color = color;
+ this.visible = visible;
+ }
+
+ public AFavorite(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<AFavorite> CREATOR = new Creator<AFavorite>() {
+ @Override
+ public AFavorite createFromParcel(Parcel in) {
+ return new AFavorite(in);
+ }
+
+ @Override
+ public AFavorite[] newArray(int size) {
+ return new AFavorite[size];
+ }
+ };
+
+ public double getLat() {
+ return lat;
+ }
+
+ public double getLon() {
+ return lon;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public boolean isVisible() {
+ return visible;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putDouble("lat", lat);
+ bundle.putDouble("lon", lon);
+ bundle.putString("name", name);
+ bundle.putString("description", description);
+ bundle.putString("category", category);
+ bundle.putString("color", color);
+ bundle.putBoolean("visible", visible);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ lat = bundle.getDouble("lat");
+ lon = bundle.getDouble("lon");
+ name = bundle.getString("name");
+ description = bundle.getString("description");
+ category = bundle.getString("category");
+ color = bundle.getString("color");
+ visible = bundle.getBoolean("visible");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/AddFavoriteParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/favorite/AddFavoriteParams.aidl
new file mode 100644
index 0000000000..07c0b0da86
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/AddFavoriteParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.favorite;
+
+parcelable AddFavoriteParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/AddFavoriteParams.java b/OsmAnd-api/src/net/osmand/aidlapi/favorite/AddFavoriteParams.java
new file mode 100644
index 0000000000..40545fe43d
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/AddFavoriteParams.java
@@ -0,0 +1,46 @@
+package net.osmand.aidlapi.favorite;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class AddFavoriteParams extends AidlParams {
+
+ private AFavorite favorite;
+
+ public AddFavoriteParams(AFavorite favorite) {
+ this.favorite = favorite;
+ }
+
+ public AddFavoriteParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<AddFavoriteParams> CREATOR = new Creator<AddFavoriteParams>() {
+ @Override
+ public AddFavoriteParams createFromParcel(Parcel in) {
+ return new AddFavoriteParams(in);
+ }
+
+ @Override
+ public AddFavoriteParams[] newArray(int size) {
+ return new AddFavoriteParams[size];
+ }
+ };
+
+ public AFavorite getFavorite() {
+ return favorite;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("favorite", favorite);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AFavorite.class.getClassLoader());
+ favorite = bundle.getParcelable("favorite");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/RemoveFavoriteParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/favorite/RemoveFavoriteParams.aidl
new file mode 100644
index 0000000000..a6896b1645
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/RemoveFavoriteParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.favorite;
+
+parcelable RemoveFavoriteParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/RemoveFavoriteParams.java b/OsmAnd-api/src/net/osmand/aidlapi/favorite/RemoveFavoriteParams.java
new file mode 100644
index 0000000000..9144d2ba38
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/RemoveFavoriteParams.java
@@ -0,0 +1,46 @@
+package net.osmand.aidlapi.favorite;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class RemoveFavoriteParams extends AidlParams {
+
+ private AFavorite favorite;
+
+ public RemoveFavoriteParams(AFavorite favorite) {
+ this.favorite = favorite;
+ }
+
+ public RemoveFavoriteParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<RemoveFavoriteParams> CREATOR = new Creator<RemoveFavoriteParams>() {
+ @Override
+ public RemoveFavoriteParams createFromParcel(Parcel in) {
+ return new RemoveFavoriteParams(in);
+ }
+
+ @Override
+ public RemoveFavoriteParams[] newArray(int size) {
+ return new RemoveFavoriteParams[size];
+ }
+ };
+
+ public AFavorite getFavorite() {
+ return favorite;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("favorite", favorite);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AFavorite.class.getClassLoader());
+ favorite = bundle.getParcelable("favorite");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/UpdateFavoriteParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/favorite/UpdateFavoriteParams.aidl
new file mode 100644
index 0000000000..8b2438dc65
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/UpdateFavoriteParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.favorite;
+
+parcelable UpdateFavoriteParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/UpdateFavoriteParams.java b/OsmAnd-api/src/net/osmand/aidlapi/favorite/UpdateFavoriteParams.java
new file mode 100644
index 0000000000..0d2d226a4b
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/UpdateFavoriteParams.java
@@ -0,0 +1,54 @@
+package net.osmand.aidlapi.favorite;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class UpdateFavoriteParams extends AidlParams {
+
+ private AFavorite favoritePrev;
+ private AFavorite favoriteNew;
+
+ public UpdateFavoriteParams(AFavorite favoritePrev, AFavorite favoriteNew) {
+ this.favoritePrev = favoritePrev;
+ this.favoriteNew = favoriteNew;
+ }
+
+ public UpdateFavoriteParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<UpdateFavoriteParams> CREATOR = new Creator<UpdateFavoriteParams>() {
+ @Override
+ public UpdateFavoriteParams createFromParcel(Parcel in) {
+ return new UpdateFavoriteParams(in);
+ }
+
+ @Override
+ public UpdateFavoriteParams[] newArray(int size) {
+ return new UpdateFavoriteParams[size];
+ }
+ };
+
+ public AFavorite getFavoritePrev() {
+ return favoritePrev;
+ }
+
+ public AFavorite getFavoriteNew() {
+ return favoriteNew;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("favoritePrev", favoritePrev);
+ bundle.putParcelable("favoriteNew", favoriteNew);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AFavorite.class.getClassLoader());
+ favoritePrev = bundle.getParcelable("favoritePrev");
+ favoriteNew = bundle.getParcelable("favoriteNew");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AFavoriteGroup.aidl b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AFavoriteGroup.aidl
new file mode 100644
index 0000000000..6c687297f1
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AFavoriteGroup.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.favorite.group;
+
+parcelable AFavoriteGroup; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AFavoriteGroup.java b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AFavoriteGroup.java
new file mode 100644
index 0000000000..3f04ab5ebc
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AFavoriteGroup.java
@@ -0,0 +1,61 @@
+package net.osmand.aidlapi.favorite.group;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class AFavoriteGroup extends AidlParams {
+
+ private String name;
+ private String color;
+ private boolean visible;
+
+ public AFavoriteGroup(String name, String color, boolean visible) {
+ this.name = name;
+ this.color = color;
+ this.visible = visible;
+ }
+
+ public AFavoriteGroup(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<AFavoriteGroup> CREATOR = new Creator<AFavoriteGroup>() {
+ @Override
+ public AFavoriteGroup createFromParcel(Parcel in) {
+ return new AFavoriteGroup(in);
+ }
+
+ @Override
+ public AFavoriteGroup[] newArray(int size) {
+ return new AFavoriteGroup[size];
+ }
+ };
+
+ public String getName() {
+ return name;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public boolean isVisible() {
+ return visible;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("name", name);
+ bundle.putString("color", color);
+ bundle.putBoolean("visible", visible);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ name = bundle.getString("name");
+ color = bundle.getString("color");
+ visible = bundle.getBoolean("visible");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AddFavoriteGroupParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AddFavoriteGroupParams.aidl
new file mode 100644
index 0000000000..4d10ed6cb0
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AddFavoriteGroupParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.favorite.group;
+
+parcelable AddFavoriteGroupParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AddFavoriteGroupParams.java b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AddFavoriteGroupParams.java
new file mode 100644
index 0000000000..232c0862a1
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/AddFavoriteGroupParams.java
@@ -0,0 +1,46 @@
+package net.osmand.aidlapi.favorite.group;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class AddFavoriteGroupParams extends AidlParams {
+
+ private AFavoriteGroup favoriteGroup;
+
+ public AddFavoriteGroupParams(AFavoriteGroup favoriteGroup) {
+ this.favoriteGroup = favoriteGroup;
+ }
+
+ public AddFavoriteGroupParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<AddFavoriteGroupParams> CREATOR = new Creator<AddFavoriteGroupParams>() {
+ @Override
+ public AddFavoriteGroupParams createFromParcel(Parcel in) {
+ return new AddFavoriteGroupParams(in);
+ }
+
+ @Override
+ public AddFavoriteGroupParams[] newArray(int size) {
+ return new AddFavoriteGroupParams[size];
+ }
+ };
+
+ public AFavoriteGroup getFavoriteGroup() {
+ return favoriteGroup;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("favoriteGroup", favoriteGroup);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AFavoriteGroup.class.getClassLoader());
+ favoriteGroup = bundle.getParcelable("favoriteGroup");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/RemoveFavoriteGroupParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/RemoveFavoriteGroupParams.aidl
new file mode 100644
index 0000000000..855f344776
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/RemoveFavoriteGroupParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.favorite.group;
+
+parcelable RemoveFavoriteGroupParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/RemoveFavoriteGroupParams.java b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/RemoveFavoriteGroupParams.java
new file mode 100644
index 0000000000..3f2716823c
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/RemoveFavoriteGroupParams.java
@@ -0,0 +1,46 @@
+package net.osmand.aidlapi.favorite.group;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class RemoveFavoriteGroupParams extends AidlParams {
+
+ private AFavoriteGroup favoriteGroup;
+
+ public RemoveFavoriteGroupParams(AFavoriteGroup favoriteGroup) {
+ this.favoriteGroup = favoriteGroup;
+ }
+
+ public RemoveFavoriteGroupParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<RemoveFavoriteGroupParams> CREATOR = new Creator<RemoveFavoriteGroupParams>() {
+ @Override
+ public RemoveFavoriteGroupParams createFromParcel(Parcel in) {
+ return new RemoveFavoriteGroupParams(in);
+ }
+
+ @Override
+ public RemoveFavoriteGroupParams[] newArray(int size) {
+ return new RemoveFavoriteGroupParams[size];
+ }
+ };
+
+ public AFavoriteGroup getFavoriteGroup() {
+ return favoriteGroup;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("favoriteGroup", favoriteGroup);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AFavoriteGroup.class.getClassLoader());
+ favoriteGroup = bundle.getParcelable("favoriteGroup");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/UpdateFavoriteGroupParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/UpdateFavoriteGroupParams.aidl
new file mode 100644
index 0000000000..b7b46bf6ca
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/UpdateFavoriteGroupParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.favorite.group;
+
+parcelable UpdateFavoriteGroupParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/UpdateFavoriteGroupParams.java b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/UpdateFavoriteGroupParams.java
new file mode 100644
index 0000000000..cab176560b
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/favorite/group/UpdateFavoriteGroupParams.java
@@ -0,0 +1,54 @@
+package net.osmand.aidlapi.favorite.group;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class UpdateFavoriteGroupParams extends AidlParams {
+
+ private AFavoriteGroup favoriteGroupPrev;
+ private AFavoriteGroup favoriteGroupNew;
+
+ public UpdateFavoriteGroupParams(AFavoriteGroup favoriteGroup, AFavoriteGroup favoriteGroupNew) {
+ this.favoriteGroupPrev = favoriteGroup;
+ this.favoriteGroupNew = favoriteGroupNew;
+ }
+
+ public UpdateFavoriteGroupParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<UpdateFavoriteGroupParams> CREATOR = new Creator<UpdateFavoriteGroupParams>() {
+ @Override
+ public UpdateFavoriteGroupParams createFromParcel(Parcel in) {
+ return new UpdateFavoriteGroupParams(in);
+ }
+
+ @Override
+ public UpdateFavoriteGroupParams[] newArray(int size) {
+ return new UpdateFavoriteGroupParams[size];
+ }
+ };
+
+ public AFavoriteGroup getFavoriteGroupPrev() {
+ return favoriteGroupPrev;
+ }
+
+ public AFavoriteGroup getFavoriteGroupNew() {
+ return favoriteGroupNew;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("favoriteGroupPrev", favoriteGroupPrev);
+ bundle.putParcelable("favoriteGroupNew", favoriteGroupNew);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AFavoriteGroup.class.getClassLoader());
+ favoriteGroupPrev = bundle.getParcelable("favoriteGroupPrev");
+ favoriteGroupNew = bundle.getParcelable("favoriteGroupNew");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxBitmap.aidl b/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxBitmap.aidl
new file mode 100644
index 0000000000..abbc03669c
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxBitmap.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.gpx;
+
+parcelable AGpxBitmap; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxBitmap.java b/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxBitmap.java
new file mode 100644
index 0000000000..6ba3f8ea4b
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxBitmap.java
@@ -0,0 +1,48 @@
+package net.osmand.aidlapi.gpx;
+
+import android.graphics.Bitmap;
+import android.os.Bundle;
+import android.os.Parcel;
+import android.support.annotation.NonNull;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class AGpxBitmap extends AidlParams {
+
+ private Bitmap bitmap;
+
+ public AGpxBitmap(@NonNull Bitmap bitmap) {
+ this.bitmap = bitmap;
+ }
+
+ public AGpxBitmap(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public Bitmap getBitmap() {
+ return bitmap;
+ }
+
+ public static final Creator<AGpxBitmap> CREATOR = new Creator<AGpxBitmap>() {
+ @Override
+ public AGpxBitmap createFromParcel(Parcel in) {
+ return new AGpxBitmap(in);
+ }
+
+ @Override
+ public AGpxBitmap[] newArray(int size) {
+ return new AGpxBitmap[size];
+ }
+ };
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("bitmap", bitmap);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(Bitmap.class.getClassLoader());
+ bitmap = bundle.getParcelable("bitmap");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFile.aidl b/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFile.aidl
new file mode 100644
index 0000000000..4027c70c66
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFile.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.gpx;
+
+parcelable AGpxFile; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFile.java b/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFile.java
new file mode 100644
index 0000000000..e293875f10
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFile.java
@@ -0,0 +1,88 @@
+package net.osmand.aidlapi.gpx;
+
+import android.os.Bundle;
+import android.os.Parcel;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class AGpxFile extends AidlParams {
+
+ private String fileName;
+ private long modifiedTime;
+ private long fileSize;
+ private boolean active;
+ private String color;
+ private AGpxFileDetails details;
+
+ public AGpxFile(@NonNull String fileName, long modifiedTime, long fileSize, boolean active, String color, @Nullable AGpxFileDetails details) {
+ this.fileName = fileName;
+ this.modifiedTime = modifiedTime;
+ this.fileSize = fileSize;
+ this.active = active;
+ this.color = color;
+ this.details = details;
+ }
+
+ public AGpxFile(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<AGpxFile> CREATOR = new Creator<AGpxFile>() {
+ @Override
+ public AGpxFile createFromParcel(Parcel in) {
+ return new AGpxFile(in);
+ }
+
+ @Override
+ public AGpxFile[] newArray(int size) {
+ return new AGpxFile[size];
+ }
+ };
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public long getModifiedTime() {
+ return modifiedTime;
+ }
+
+ public long getFileSize() {
+ return fileSize;
+ }
+
+ public boolean isActive() {
+ return active;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public AGpxFileDetails getDetails() {
+ return details;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("fileName", fileName);
+ bundle.putLong("modifiedTime", modifiedTime);
+ bundle.putLong("fileSize", fileSize);
+ bundle.putBoolean("active", active);
+ bundle.putParcelable("details", details);
+ bundle.putString("color", color);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AGpxFileDetails.class.getClassLoader());
+ fileName = bundle.getString("fileName");
+ modifiedTime = bundle.getLong("modifiedTime");
+ fileSize = bundle.getLong("fileSize");
+ active = bundle.getBoolean("active");
+ details = bundle.getParcelable("details");
+ color = bundle.getString("color");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFileDetails.aidl b/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFileDetails.aidl
new file mode 100644
index 0000000000..278dae038d
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFileDetails.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.gpx;
+
+parcelable AGpxFileDetails; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFileDetails.java b/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFileDetails.java
new file mode 100644
index 0000000000..1c2cbe2130
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/AGpxFileDetails.java
@@ -0,0 +1,197 @@
+package net.osmand.aidlapi.gpx;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+public class AGpxFileDetails extends AidlParams {
+
+ private float totalDistance = 0;
+ private int totalTracks = 0;
+ private long startTime = Long.MAX_VALUE;
+ private long endTime = Long.MIN_VALUE;
+ private long timeSpan = 0;
+ private long timeMoving = 0;
+ private float totalDistanceMoving = 0;
+
+ private double diffElevationUp = 0;
+ private double diffElevationDown = 0;
+ private double avgElevation = 0;
+ private double minElevation = 99999;
+ private double maxElevation = -100;
+
+ private float minSpeed = Float.MAX_VALUE;
+ private float maxSpeed = 0;
+ private float avgSpeed;
+
+ private int points;
+ private int wptPoints = 0;
+
+ private ArrayList<String> wptCategoryNames = new ArrayList<>();
+
+ public AGpxFileDetails(float totalDistance, int totalTracks,
+ long startTime, long endTime,
+ long timeSpan, long timeMoving, float totalDistanceMoving,
+ double diffElevationUp, double diffElevationDown,
+ double avgElevation, double minElevation, double maxElevation,
+ float minSpeed, float maxSpeed, float avgSpeed,
+ int points, int wptPoints, Set<String> wptCategoryNames) {
+ this.totalDistance = totalDistance;
+ this.totalTracks = totalTracks;
+ this.startTime = startTime;
+ this.endTime = endTime;
+ this.timeSpan = timeSpan;
+ this.timeMoving = timeMoving;
+ this.totalDistanceMoving = totalDistanceMoving;
+ this.diffElevationUp = diffElevationUp;
+ this.diffElevationDown = diffElevationDown;
+ this.avgElevation = avgElevation;
+ this.minElevation = minElevation;
+ this.maxElevation = maxElevation;
+ this.minSpeed = minSpeed;
+ this.maxSpeed = maxSpeed;
+ this.avgSpeed = avgSpeed;
+ this.points = points;
+ this.wptPoints = wptPoints;
+ if (wptCategoryNames != null) {
+ this.wptCategoryNames.addAll(wptCategoryNames);
+ }
+ }
+
+ public AGpxFileDetails(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<AGpxFileDetails> CREATOR = new Creator<AGpxFileDetails>() {
+ @Override
+ public AGpxFileDetails createFromParcel(Parcel in) {
+ return new AGpxFileDetails(in);
+ }
+
+ @Override
+ public AGpxFileDetails[] newArray(int size) {
+ return new AGpxFileDetails[size];
+ }
+ };
+
+ public float getTotalDistance() {
+ return totalDistance;
+ }
+
+ public int getTotalTracks() {
+ return totalTracks;
+ }
+
+ public long getStartTime() {
+ return startTime;
+ }
+
+ public long getEndTime() {
+ return endTime;
+ }
+
+ public long getTimeSpan() {
+ return timeSpan;
+ }
+
+ public long getTimeMoving() {
+ return timeMoving;
+ }
+
+ public float getTotalDistanceMoving() {
+ return totalDistanceMoving;
+ }
+
+ public double getDiffElevationUp() {
+ return diffElevationUp;
+ }
+
+ public double getDiffElevationDown() {
+ return diffElevationDown;
+ }
+
+ public double getAvgElevation() {
+ return avgElevation;
+ }
+
+ public double getMinElevation() {
+ return minElevation;
+ }
+
+ public double getMaxElevation() {
+ return maxElevation;
+ }
+
+ public float getMinSpeed() {
+ return minSpeed;
+ }
+
+ public float getMaxSpeed() {
+ return maxSpeed;
+ }
+
+ public float getAvgSpeed() {
+ return avgSpeed;
+ }
+
+ public int getPoints() {
+ return points;
+ }
+
+ public int getWptPoints() {
+ return wptPoints;
+ }
+
+ public List<String> getWptCategoryNames() {
+ return wptCategoryNames;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putFloat("totalDistance", totalDistance);
+ bundle.putInt("totalTracks", totalTracks);
+ bundle.putLong("startTime", startTime);
+ bundle.putLong("endTime", endTime);
+ bundle.putLong("timeSpan", timeSpan);
+ bundle.putLong("timeMoving", timeMoving);
+ bundle.putFloat("totalDistanceMoving", totalDistanceMoving);
+ bundle.putDouble("diffElevationUp", diffElevationUp);
+ bundle.putDouble("diffElevationDown", diffElevationDown);
+ bundle.putDouble("avgElevation", avgElevation);
+ bundle.putDouble("minElevation", minElevation);
+ bundle.putDouble("maxElevation", maxElevation);
+ bundle.putFloat("minSpeed", minSpeed);
+ bundle.putFloat("maxSpeed", maxSpeed);
+ bundle.putFloat("avgSpeed", avgSpeed);
+ bundle.putInt("points", points);
+ bundle.putInt("wptPoints", wptPoints);
+ bundle.putStringArrayList("wptCategoryNames", wptCategoryNames);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ totalDistance = bundle.getFloat("totalDistance");
+ totalTracks = bundle.getInt("totalTracks");
+ startTime = bundle.getLong("startTime");
+ endTime = bundle.getLong("endTime");
+ timeSpan = bundle.getLong("timeSpan");
+ timeMoving = bundle.getLong("timeMoving");
+ totalDistanceMoving = bundle.getFloat("totalDistanceMoving");
+ diffElevationUp = bundle.getDouble("diffElevationUp");
+ diffElevationDown = bundle.getDouble("diffElevationDown");
+ avgElevation = bundle.getDouble("avgElevation");
+ minElevation = bundle.getDouble("minElevation");
+ maxElevation = bundle.getDouble("maxElevation");
+ minSpeed = bundle.getFloat("minSpeed");
+ maxSpeed = bundle.getFloat("maxSpeed");
+ avgSpeed = bundle.getFloat("avgSpeed");
+ points = bundle.getInt("points");
+ wptPoints = bundle.getInt("wptPoints");
+ wptCategoryNames = bundle.getStringArrayList("wptCategoryNames");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/ASelectedGpxFile.aidl b/OsmAnd-api/src/net/osmand/aidlapi/gpx/ASelectedGpxFile.aidl
new file mode 100644
index 0000000000..57568e7249
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/ASelectedGpxFile.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.gpx;
+
+parcelable ASelectedGpxFile; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/ASelectedGpxFile.java b/OsmAnd-api/src/net/osmand/aidlapi/gpx/ASelectedGpxFile.java
new file mode 100644
index 0000000000..fc7e60cedb
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/ASelectedGpxFile.java
@@ -0,0 +1,76 @@
+package net.osmand.aidlapi.gpx;
+
+import android.os.Bundle;
+import android.os.Parcel;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class ASelectedGpxFile extends AidlParams {
+
+ private String fileName;
+ private long modifiedTime;
+ private long fileSize;
+ private AGpxFileDetails details;
+
+ public ASelectedGpxFile(@NonNull String fileName) {
+ this.fileName = fileName;
+ }
+
+ public ASelectedGpxFile(@NonNull String fileName, long modifiedTime, long fileSize, @Nullable AGpxFileDetails details) {
+ this.fileName = fileName;
+ this.modifiedTime = modifiedTime;
+ this.fileSize = fileSize;
+ this.details = details;
+ }
+
+ public ASelectedGpxFile(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<ASelectedGpxFile> CREATOR = new Creator<ASelectedGpxFile>() {
+ @Override
+ public ASelectedGpxFile createFromParcel(Parcel in) {
+ return new ASelectedGpxFile(in);
+ }
+
+ @Override
+ public ASelectedGpxFile[] newArray(int size) {
+ return new ASelectedGpxFile[size];
+ }
+ };
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public long getModifiedTime() {
+ return modifiedTime;
+ }
+
+ public long getFileSize() {
+ return fileSize;
+ }
+
+ public AGpxFileDetails getDetails() {
+ return details;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("fileName", fileName);
+ bundle.putLong("modifiedTime", modifiedTime);
+ bundle.putLong("fileSize", fileSize);
+ bundle.putParcelable("details", details);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AGpxFileDetails.class.getClassLoader());
+ fileName = bundle.getString("fileName");
+ modifiedTime = bundle.getLong("modifiedTime");
+ fileSize = bundle.getLong("fileSize");
+ details = bundle.getParcelable("details");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/CreateGpxBitmapParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/gpx/CreateGpxBitmapParams.aidl
new file mode 100644
index 0000000000..afbc7a812f
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/CreateGpxBitmapParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.gpx;
+
+parcelable CreateGpxBitmapParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/CreateGpxBitmapParams.java b/OsmAnd-api/src/net/osmand/aidlapi/gpx/CreateGpxBitmapParams.java
index b6af1d354c..8287e8915f 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/CreateGpxBitmapParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/CreateGpxBitmapParams.java
@@ -1,12 +1,14 @@
-package net.osmand.aidl.gpx;
+package net.osmand.aidlapi.gpx;
import android.net.Uri;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
+
+import net.osmand.aidlapi.AidlParams;
import java.io.File;
-public class CreateGpxBitmapParams implements Parcelable {
+public class CreateGpxBitmapParams extends AidlParams {
private File gpxFile;
private Uri gpxUri;
@@ -35,16 +37,17 @@ public class CreateGpxBitmapParams implements Parcelable {
readFromParcel(in);
}
- public static final Creator<CreateGpxBitmapParams> CREATOR = new
- Creator<CreateGpxBitmapParams>() {
- public CreateGpxBitmapParams createFromParcel(Parcel in) {
- return new CreateGpxBitmapParams(in);
- }
+ public static final Creator<CreateGpxBitmapParams> CREATOR = new Creator<CreateGpxBitmapParams>() {
+ @Override
+ public CreateGpxBitmapParams createFromParcel(Parcel in) {
+ return new CreateGpxBitmapParams(in);
+ }
- public CreateGpxBitmapParams[] newArray(int size) {
- return new CreateGpxBitmapParams[size];
- }
- };
+ @Override
+ public CreateGpxBitmapParams[] newArray(int size) {
+ return new CreateGpxBitmapParams[size];
+ }
+ };
public File getGpxFile() {
return gpxFile;
@@ -70,32 +73,28 @@ public class CreateGpxBitmapParams implements Parcelable {
return color;
}
- public void writeToParcel(Parcel out, int flags) {
- if (gpxFile != null) {
- out.writeString(gpxFile.getAbsolutePath());
- } else {
- out.writeString(null);
- }
- out.writeParcelable(gpxUri, flags);
- out.writeFloat(density);
- out.writeInt(widthPixels);
- out.writeInt(heightPixels);
- out.writeInt(color);
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("gpxAbsolutePath", gpxFile != null ? gpxFile.getAbsolutePath() : null);
+ bundle.putParcelable("gpxUri", gpxUri);
+ bundle.putFloat("density", density);
+ bundle.putInt("widthPixels", widthPixels);
+ bundle.putInt("heightPixels", heightPixels);
+ bundle.putInt("color", color);
}
- private void readFromParcel(Parcel in) {
- String gpxAbsolutePath = in.readString();
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(Uri.class.getClassLoader());
+
+ String gpxAbsolutePath = bundle.getString("gpxAbsolutePath");
if (gpxAbsolutePath != null) {
gpxFile = new File(gpxAbsolutePath);
}
- gpxUri = in.readParcelable(Uri.class.getClassLoader());
- density = in.readFloat();
- widthPixels = in.readInt();
- heightPixels = in.readInt();
- color = in.readInt();
- }
-
- public int describeContents() {
- return 0;
+ gpxUri = bundle.getParcelable("gpxUri");
+ density = bundle.getFloat("density");
+ widthPixels = bundle.getInt("widthPixels");
+ heightPixels = bundle.getInt("heightPixels");
+ color = bundle.getInt("color");
}
} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/HideGpxParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/gpx/HideGpxParams.aidl
new file mode 100644
index 0000000000..ea355895bb
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/HideGpxParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.gpx;
+
+parcelable HideGpxParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/HideGpxParams.java b/OsmAnd-api/src/net/osmand/aidlapi/gpx/HideGpxParams.java
new file mode 100644
index 0000000000..9f1f3d1897
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/HideGpxParams.java
@@ -0,0 +1,45 @@
+package net.osmand.aidlapi.gpx;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class HideGpxParams extends AidlParams {
+
+ private String fileName;
+
+ public HideGpxParams(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public HideGpxParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<HideGpxParams> CREATOR = new Creator<HideGpxParams>() {
+ @Override
+ public HideGpxParams createFromParcel(Parcel in) {
+ return new HideGpxParams(in);
+ }
+
+ @Override
+ public HideGpxParams[] newArray(int size) {
+ return new HideGpxParams[size];
+ }
+ };
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("fileName", fileName);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ fileName = bundle.getString("fileName");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/ImportGpxParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/gpx/ImportGpxParams.aidl
new file mode 100644
index 0000000000..3b0f455708
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/ImportGpxParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.gpx;
+
+parcelable ImportGpxParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/ImportGpxParams.java b/OsmAnd-api/src/net/osmand/aidlapi/gpx/ImportGpxParams.java
index 6d2ed2cb88..603b95e468 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/ImportGpxParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/ImportGpxParams.java
@@ -1,12 +1,14 @@
-package net.osmand.aidl.gpx;
+package net.osmand.aidlapi.gpx;
import android.net.Uri;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
+
+import net.osmand.aidlapi.AidlParams;
import java.io.File;
-public class ImportGpxParams implements Parcelable {
+public class ImportGpxParams extends AidlParams {
private File gpxFile;
private Uri gpxUri;
@@ -40,16 +42,17 @@ public class ImportGpxParams implements Parcelable {
readFromParcel(in);
}
- public static final Creator<ImportGpxParams> CREATOR = new
- Creator<ImportGpxParams>() {
- public ImportGpxParams createFromParcel(Parcel in) {
- return new ImportGpxParams(in);
- }
+ public static final Creator<ImportGpxParams> CREATOR = new Creator<ImportGpxParams>() {
+ @Override
+ public ImportGpxParams createFromParcel(Parcel in) {
+ return new ImportGpxParams(in);
+ }
- public ImportGpxParams[] newArray(int size) {
- return new ImportGpxParams[size];
- }
- };
+ @Override
+ public ImportGpxParams[] newArray(int size) {
+ return new ImportGpxParams[size];
+ }
+ };
public File getGpxFile() {
return gpxFile;
@@ -75,32 +78,28 @@ public class ImportGpxParams implements Parcelable {
return show;
}
- public void writeToParcel(Parcel out, int flags) {
- if (gpxFile != null) {
- out.writeString(gpxFile.getAbsolutePath());
- } else {
- out.writeString(null);
- }
- out.writeParcelable(gpxUri, flags);
- out.writeString(sourceRawData);
- out.writeString(destinationPath);
- out.writeString(color);
- out.writeByte((byte) (show ? 1 : 0));
- }
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(Uri.class.getClassLoader());
- private void readFromParcel(Parcel in) {
- String gpxAbsolutePath = in.readString();
+ String gpxAbsolutePath = bundle.getString("gpxAbsolutePath");
if (gpxAbsolutePath != null) {
gpxFile = new File(gpxAbsolutePath);
}
- gpxUri = in.readParcelable(Uri.class.getClassLoader());
- sourceRawData = in.readString();
- destinationPath = in.readString();
- color = in.readString();
- show = in.readByte() == 1;
+ gpxUri = bundle.getParcelable("gpxUri");
+ sourceRawData = bundle.getString("sourceRawData");
+ destinationPath = bundle.getString("destinationPath");
+ color = bundle.getString("color");
+ show = bundle.getBoolean("show");
}
- public int describeContents() {
- return 0;
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("gpxAbsolutePath", gpxFile != null ? gpxFile.getAbsolutePath() : null);
+ bundle.putParcelable("gpxUri", gpxUri);
+ bundle.putString("sourceRawData", sourceRawData);
+ bundle.putString("destinationPath", destinationPath);
+ bundle.putString("color", color);
+ bundle.putBoolean("show", show);
}
} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/RemoveGpxParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/gpx/RemoveGpxParams.aidl
new file mode 100644
index 0000000000..d061759842
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/RemoveGpxParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.gpx;
+
+parcelable RemoveGpxParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/RemoveGpxParams.java b/OsmAnd-api/src/net/osmand/aidlapi/gpx/RemoveGpxParams.java
new file mode 100644
index 0000000000..bb45e67cfe
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/RemoveGpxParams.java
@@ -0,0 +1,45 @@
+package net.osmand.aidlapi.gpx;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class RemoveGpxParams extends AidlParams {
+
+ private String fileName;
+
+ public RemoveGpxParams(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public RemoveGpxParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<RemoveGpxParams> CREATOR = new Creator<RemoveGpxParams>() {
+ @Override
+ public RemoveGpxParams createFromParcel(Parcel in) {
+ return new RemoveGpxParams(in);
+ }
+
+ @Override
+ public RemoveGpxParams[] newArray(int size) {
+ return new RemoveGpxParams[size];
+ }
+ };
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("fileName", fileName);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ fileName = bundle.getString("fileName");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/ShowGpxParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/gpx/ShowGpxParams.aidl
new file mode 100644
index 0000000000..946c43a744
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/ShowGpxParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.gpx;
+
+parcelable ShowGpxParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/ShowGpxParams.java b/OsmAnd-api/src/net/osmand/aidlapi/gpx/ShowGpxParams.java
new file mode 100644
index 0000000000..3162895999
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/ShowGpxParams.java
@@ -0,0 +1,45 @@
+package net.osmand.aidlapi.gpx;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class ShowGpxParams extends AidlParams {
+
+ private String fileName;
+
+ public ShowGpxParams(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public ShowGpxParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<ShowGpxParams> CREATOR = new Creator<ShowGpxParams>() {
+ @Override
+ public ShowGpxParams createFromParcel(Parcel in) {
+ return new ShowGpxParams(in);
+ }
+
+ @Override
+ public ShowGpxParams[] newArray(int size) {
+ return new ShowGpxParams[size];
+ }
+ };
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("fileName", fileName);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ fileName = bundle.getString("fileName");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/StartGpxRecordingParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/gpx/StartGpxRecordingParams.aidl
new file mode 100644
index 0000000000..2d5462de95
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/StartGpxRecordingParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.gpx;
+
+parcelable StartGpxRecordingParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/StartGpxRecordingParams.java b/OsmAnd-api/src/net/osmand/aidlapi/gpx/StartGpxRecordingParams.java
index 139eac8ea3..e66e9e368d 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/StartGpxRecordingParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/StartGpxRecordingParams.java
@@ -1,9 +1,10 @@
-package net.osmand.aidl.gpx;
+package net.osmand.aidlapi.gpx;
import android.os.Parcel;
-import android.os.Parcelable;
-public class StartGpxRecordingParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class StartGpxRecordingParams extends AidlParams {
public StartGpxRecordingParams() {
@@ -24,17 +25,4 @@ public class StartGpxRecordingParams implements Parcelable {
return new StartGpxRecordingParams[size];
}
};
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- }
-
- private void readFromParcel(Parcel in) {
-
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/gpx/StopGpxRecordingParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/gpx/StopGpxRecordingParams.aidl
new file mode 100644
index 0000000000..8f92254f02
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/StopGpxRecordingParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.gpx;
+
+parcelable StopGpxRecordingParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/StopGpxRecordingParams.java b/OsmAnd-api/src/net/osmand/aidlapi/gpx/StopGpxRecordingParams.java
index ada47db418..7248d3ffdc 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/StopGpxRecordingParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/gpx/StopGpxRecordingParams.java
@@ -1,9 +1,10 @@
-package net.osmand.aidl.gpx;
+package net.osmand.aidlapi.gpx;
import android.os.Parcel;
-import android.os.Parcelable;
-public class StopGpxRecordingParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class StopGpxRecordingParams extends AidlParams {
public StopGpxRecordingParams() {
@@ -24,17 +25,4 @@ public class StopGpxRecordingParams implements Parcelable {
return new StopGpxRecordingParams[size];
}
};
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- }
-
- private void readFromParcel(Parcel in) {
-
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/map/ALatLon.aidl b/OsmAnd-api/src/net/osmand/aidlapi/map/ALatLon.aidl
new file mode 100644
index 0000000000..c41d173bb5
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/map/ALatLon.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.map;
+
+parcelable ALatLon; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/map/ALatLon.java b/OsmAnd-api/src/net/osmand/aidlapi/map/ALatLon.java
index 377344fd6a..0ba9ee8cbd 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/map/ALatLon.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/map/ALatLon.java
@@ -1,9 +1,11 @@
-package net.osmand.aidl.map;
+package net.osmand.aidlapi.map;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
-public class ALatLon implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class ALatLon extends AidlParams {
private double longitude;
private double latitude;
@@ -17,25 +19,26 @@ public class ALatLon implements Parcelable {
readFromParcel(in);
}
- public static final Parcelable.Creator<ALatLon> CREATOR = new
- Parcelable.Creator<ALatLon>() {
- public ALatLon createFromParcel(Parcel in) {
- return new ALatLon(in);
- }
+ public static final Creator<ALatLon> CREATOR = new Creator<ALatLon>() {
+ @Override
+ public ALatLon createFromParcel(Parcel in) {
+ return new ALatLon(in);
+ }
- public ALatLon[] newArray(int size) {
- return new ALatLon[size];
- }
- };
+ @Override
+ public ALatLon[] newArray(int size) {
+ return new ALatLon[size];
+ }
+ };
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
int temp;
- temp = (int)Math.floor(latitude * 10000);
+ temp = (int) Math.floor(latitude * 10000);
result = prime * result + temp;
- temp = (int)Math.floor(longitude * 10000);
+ temp = (int) Math.floor(longitude * 10000);
result = prime * result + temp;
return result;
}
@@ -56,7 +59,7 @@ public class ALatLon implements Parcelable {
@Override
public String toString() {
- return "Lat " + ((float)latitude) + " Lon " + ((float)longitude);
+ return "Lat " + ((float) latitude) + " Lon " + ((float) longitude);
}
public double getLatitude() {
@@ -67,17 +70,15 @@ public class ALatLon implements Parcelable {
return longitude;
}
- public void writeToParcel(Parcel out, int flags) {
- out.writeDouble(latitude);
- out.writeDouble(longitude);
- }
-
- public void readFromParcel(Parcel in) {
- latitude = in.readDouble();
- longitude = in.readDouble();
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putDouble("latitude", latitude);
+ bundle.putDouble("longitude", longitude);
}
- public int describeContents() {
- return 0;
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ latitude = bundle.getDouble("latitude");
+ longitude = bundle.getDouble("longitude");
}
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/map/SetMapLocationParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/map/SetMapLocationParams.aidl
new file mode 100644
index 0000000000..715d68eb5c
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/map/SetMapLocationParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.map;
+
+parcelable SetMapLocationParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/map/SetMapLocationParams.java b/OsmAnd-api/src/net/osmand/aidlapi/map/SetMapLocationParams.java
new file mode 100644
index 0000000000..9da5ee83f0
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/map/SetMapLocationParams.java
@@ -0,0 +1,69 @@
+package net.osmand.aidlapi.map;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class SetMapLocationParams extends AidlParams {
+
+ private double latitude;
+ private double longitude;
+ private int zoom;
+ private boolean animated;
+
+ public SetMapLocationParams(double latitude, double longitude, int zoom, boolean animated) {
+ this.latitude = latitude;
+ this.longitude = longitude;
+ this.zoom = zoom;
+ this.animated = animated;
+ }
+
+ public SetMapLocationParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<SetMapLocationParams> CREATOR = new Creator<SetMapLocationParams>() {
+ @Override
+ public SetMapLocationParams createFromParcel(Parcel in) {
+ return new SetMapLocationParams(in);
+ }
+
+ @Override
+ public SetMapLocationParams[] newArray(int size) {
+ return new SetMapLocationParams[size];
+ }
+ };
+
+ public double getLatitude() {
+ return latitude;
+ }
+
+ public double getLongitude() {
+ return longitude;
+ }
+
+ public int getZoom() {
+ return zoom;
+ }
+
+ public boolean isAnimated() {
+ return animated;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putDouble("latitude", latitude);
+ bundle.putDouble("longitude", longitude);
+ bundle.putInt("zoom", zoom);
+ bundle.putBoolean("animated", animated);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ latitude = bundle.getDouble("latitude");
+ longitude = bundle.getDouble("longitude");
+ zoom = bundle.getInt("zoom");
+ animated = bundle.getBoolean("animated");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/AMapLayer.aidl b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/AMapLayer.aidl
new file mode 100644
index 0000000000..01e745862a
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/AMapLayer.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.maplayer;
+
+parcelable AMapLayer; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/AMapLayer.java b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/AMapLayer.java
index f1c982fa3c..72d6a925c6 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/AMapLayer.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/AMapLayer.java
@@ -1,16 +1,18 @@
-package net.osmand.aidl.maplayer;
+package net.osmand.aidlapi.maplayer;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
-import net.osmand.aidl.maplayer.point.AMapPoint;
+import net.osmand.aidlapi.AidlParams;
+import net.osmand.aidlapi.maplayer.point.AMapPoint;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-public class AMapLayer implements Parcelable {
+public class AMapLayer extends AidlParams {
+
private String id;
private String name;
private float zOrder = 5.5f;
@@ -39,16 +41,17 @@ public class AMapLayer implements Parcelable {
readFromParcel(in);
}
- public static final Parcelable.Creator<AMapLayer> CREATOR = new
- Parcelable.Creator<AMapLayer>() {
- public AMapLayer createFromParcel(Parcel in) {
- return new AMapLayer(in);
- }
+ public static final Creator<AMapLayer> CREATOR = new Creator<AMapLayer>() {
+ @Override
+ public AMapLayer createFromParcel(Parcel in) {
+ return new AMapLayer(in);
+ }
- public AMapLayer[] newArray(int size) {
- return new AMapLayer[size];
- }
- };
+ @Override
+ public AMapLayer[] newArray(int size) {
+ return new AMapLayer[size];
+ }
+ };
public String getId() {
return id;
@@ -138,39 +141,40 @@ public class AMapLayer implements Parcelable {
return bigPointMaxZoom;
}
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(id);
- out.writeString(name);
- out.writeFloat(zOrder);
- out.writeTypedList(new ArrayList<>(points.values()));
- out.writeByte((byte) (imagePoints ? 1 : 0));
- out.writeInt(circlePointMinZoom);
- out.writeInt(circlePointMaxZoom);
- out.writeInt(smallPointMinZoom);
- out.writeInt(smallPointMaxZoom);
- out.writeInt(bigPointMinZoom);
- out.writeInt(bigPointMaxZoom);
- }
-
- private void readFromParcel(Parcel in) {
- id = in.readString();
- name = in.readString();
- zOrder = in.readFloat();
- List<AMapPoint> pointList = new ArrayList<>();
- in.readTypedList(pointList, AMapPoint.CREATOR);
- for (AMapPoint p : pointList) {
- this.points.put(p.getId(), p);
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("id", id);
+ bundle.putString("name", name);
+ bundle.putFloat("zOrder", zOrder);
+ bundle.putParcelableArrayList("points", new ArrayList<>(points.values()));
+ bundle.putBoolean("imagePoints", imagePoints);
+ bundle.putInt("circlePointMinZoom", circlePointMinZoom);
+ bundle.putInt("circlePointMaxZoom", circlePointMaxZoom);
+ bundle.putInt("smallPointMinZoom", smallPointMinZoom);
+ bundle.putInt("smallPointMaxZoom", smallPointMaxZoom);
+ bundle.putInt("bigPointMinZoom", bigPointMinZoom);
+ bundle.putInt("bigPointMaxZoom", bigPointMaxZoom);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ id = bundle.getString("id");
+ name = bundle.getString("name");
+ zOrder = bundle.getFloat("zOrder");
+ imagePoints = bundle.getBoolean("imagePoints");
+ circlePointMinZoom = bundle.getInt("circlePointMinZoom");
+ circlePointMaxZoom = bundle.getInt("circlePointMaxZoom");
+ smallPointMinZoom = bundle.getInt("smallPointMinZoom");
+ smallPointMaxZoom = bundle.getInt("smallPointMaxZoom");
+ bigPointMinZoom = bundle.getInt("bigPointMinZoom");
+ bigPointMaxZoom = bundle.getInt("bigPointMaxZoom");
+
+ bundle.setClassLoader(AMapPoint.class.getClassLoader());
+ List<AMapPoint> pointList = bundle.getParcelableArrayList("points");
+ if (pointList != null) {
+ for (AMapPoint p : pointList) {
+ this.points.put(p.getId(), p);
+ }
}
- imagePoints = in.readByte() == 1;
- circlePointMinZoom = in.readInt();
- circlePointMaxZoom = in.readInt();
- smallPointMinZoom = in.readInt();
- smallPointMaxZoom = in.readInt();
- bigPointMinZoom = in.readInt();
- bigPointMaxZoom = in.readInt();
- }
-
- public int describeContents() {
- return 0;
}
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/AddMapLayerParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/AddMapLayerParams.aidl
new file mode 100644
index 0000000000..fe3a15d72a
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/AddMapLayerParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.maplayer;
+
+parcelable AddMapLayerParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/AddMapLayerParams.java b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/AddMapLayerParams.java
new file mode 100644
index 0000000000..7cd52748e1
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/AddMapLayerParams.java
@@ -0,0 +1,46 @@
+package net.osmand.aidlapi.maplayer;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class AddMapLayerParams extends AidlParams {
+
+ private AMapLayer layer;
+
+ public AddMapLayerParams(AMapLayer layer) {
+ this.layer = layer;
+ }
+
+ public AddMapLayerParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<AddMapLayerParams> CREATOR = new Creator<AddMapLayerParams>() {
+ @Override
+ public AddMapLayerParams createFromParcel(Parcel in) {
+ return new AddMapLayerParams(in);
+ }
+
+ @Override
+ public AddMapLayerParams[] newArray(int size) {
+ return new AddMapLayerParams[size];
+ }
+ };
+
+ public AMapLayer getLayer() {
+ return layer;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("layer", layer);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AMapLayer.class.getClassLoader());
+ layer = bundle.getParcelable("layer");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/RemoveMapLayerParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/RemoveMapLayerParams.aidl
new file mode 100644
index 0000000000..0c88fdf48b
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/RemoveMapLayerParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.maplayer;
+
+parcelable RemoveMapLayerParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/RemoveMapLayerParams.java b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/RemoveMapLayerParams.java
new file mode 100644
index 0000000000..b778a49fcc
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/RemoveMapLayerParams.java
@@ -0,0 +1,45 @@
+package net.osmand.aidlapi.maplayer;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class RemoveMapLayerParams extends AidlParams {
+
+ private String id;
+
+ public RemoveMapLayerParams(String id) {
+ this.id = id;
+ }
+
+ public RemoveMapLayerParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<RemoveMapLayerParams> CREATOR = new Creator<RemoveMapLayerParams>() {
+ @Override
+ public RemoveMapLayerParams createFromParcel(Parcel in) {
+ return new RemoveMapLayerParams(in);
+ }
+
+ @Override
+ public RemoveMapLayerParams[] newArray(int size) {
+ return new RemoveMapLayerParams[size];
+ }
+ };
+
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("id", id);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ id = bundle.getString("id");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/UpdateMapLayerParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/UpdateMapLayerParams.aidl
new file mode 100644
index 0000000000..632739ec29
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/UpdateMapLayerParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.maplayer;
+
+parcelable UpdateMapLayerParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/UpdateMapLayerParams.java b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/UpdateMapLayerParams.java
new file mode 100644
index 0000000000..d32c2aed83
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/UpdateMapLayerParams.java
@@ -0,0 +1,46 @@
+package net.osmand.aidlapi.maplayer;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class UpdateMapLayerParams extends AidlParams {
+
+ private AMapLayer layer;
+
+ public UpdateMapLayerParams(AMapLayer layer) {
+ this.layer = layer;
+ }
+
+ public UpdateMapLayerParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<UpdateMapLayerParams> CREATOR = new Creator<UpdateMapLayerParams>() {
+ @Override
+ public UpdateMapLayerParams createFromParcel(Parcel in) {
+ return new UpdateMapLayerParams(in);
+ }
+
+ @Override
+ public UpdateMapLayerParams[] newArray(int size) {
+ return new UpdateMapLayerParams[size];
+ }
+ };
+
+ public AMapLayer getLayer() {
+ return layer;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("layer", layer);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AMapLayer.class.getClassLoader());
+ layer = bundle.getParcelable("layer");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/AMapPoint.aidl b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/AMapPoint.aidl
new file mode 100644
index 0000000000..a00221d142
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/AMapPoint.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.maplayer.point;
+
+parcelable AMapPoint; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/AMapPoint.java b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/AMapPoint.java
index a47e8ccfe9..8b63c6ec55 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/AMapPoint.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/AMapPoint.java
@@ -1,16 +1,18 @@
-package net.osmand.aidl.maplayer.point;
+package net.osmand.aidlapi.maplayer.point;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
-import net.osmand.aidl.map.ALatLon;
+import net.osmand.aidlapi.AidlParams;
+import net.osmand.aidlapi.map.ALatLon;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-public class AMapPoint implements Parcelable {
+public class AMapPoint extends AidlParams {
+
public static final String POINT_IMAGE_URI_PARAM = "point_image_uri_param";
public static final String POINT_SPEED_PARAM = "point_speed_param";
public static final String POINT_TYPE_ICON_NAME_PARAM = "point_type_icon_name_param";
@@ -24,10 +26,10 @@ public class AMapPoint implements Parcelable {
private String layerId;
private int color;
private ALatLon location;
- private List<String> details = new ArrayList<>();
- private Map<String, String> params = new HashMap<>();
+ private ArrayList<String> details = new ArrayList<>();
+ private HashMap<String, String> params = new HashMap<>();
- public AMapPoint(String id, String shortName, String fullName, String typeName, String layerId,
+ public AMapPoint(String id, String shortName, String fullName, String typeName, String layerId,
int color, ALatLon location, List<String> details, Map<String, String> params) {
this.id = id;
this.shortName = shortName;
@@ -48,16 +50,17 @@ public class AMapPoint implements Parcelable {
readFromParcel(in);
}
- public static final Creator<AMapPoint> CREATOR = new
- Creator<AMapPoint>() {
- public AMapPoint createFromParcel(Parcel in) {
- return new AMapPoint(in);
- }
+ public static final Creator<AMapPoint> CREATOR = new Creator<AMapPoint>() {
+ @Override
+ public AMapPoint createFromParcel(Parcel in) {
+ return new AMapPoint(in);
+ }
- public AMapPoint[] newArray(int size) {
- return new AMapPoint[size];
- }
- };
+ @Override
+ public AMapPoint[] newArray(int size) {
+ return new AMapPoint[size];
+ }
+ };
public String getId() {
return id;
@@ -95,31 +98,31 @@ public class AMapPoint implements Parcelable {
return params;
}
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(id);
- out.writeString(shortName);
- out.writeString(fullName);
- out.writeString(typeName);
- out.writeInt(color);
- out.writeParcelable(location, flags);
- out.writeStringList(details);
- out.writeMap(params);
- out.writeString(layerId);
- }
-
- private void readFromParcel(Parcel in) {
- id = in.readString();
- shortName = in.readString();
- fullName = in.readString();
- typeName = in.readString();
- color = in.readInt();
- location = in.readParcelable(ALatLon.class.getClassLoader());
- in.readStringList(details);
- in.readMap(params, HashMap.class.getClassLoader());
- layerId = in.readString();
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("id", id);
+ bundle.putString("shortName", shortName);
+ bundle.putString("fullName", fullName);
+ bundle.putString("typeName", typeName);
+ bundle.putInt("color", color);
+ bundle.putParcelable("location", location);
+ bundle.putStringArrayList("details", details);
+ bundle.putSerializable("params", params);
+ bundle.putString("layerId", layerId);
}
- public int describeContents() {
- return 0;
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(ALatLon.class.getClassLoader());
+
+ id = bundle.getString("id");
+ shortName = bundle.getString("shortName");
+ fullName = bundle.getString("fullName");
+ typeName = bundle.getString("typeName");
+ color = bundle.getInt("color");
+ location = bundle.getParcelable("location");
+ details = bundle.getStringArrayList("details");
+ params = (HashMap<String, String>) bundle.getSerializable("params");
+ layerId = bundle.getString("layerId");
}
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/AddMapPointParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/AddMapPointParams.aidl
new file mode 100644
index 0000000000..9d4d5d1ae0
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/AddMapPointParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.maplayer.point;
+
+parcelable AddMapPointParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/AddMapPointParams.java b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/AddMapPointParams.java
new file mode 100644
index 0000000000..5e4c8177df
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/AddMapPointParams.java
@@ -0,0 +1,55 @@
+package net.osmand.aidlapi.maplayer.point;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class AddMapPointParams extends AidlParams {
+
+ private String layerId;
+ private AMapPoint point;
+
+ public AddMapPointParams(String layerId, AMapPoint point) {
+ this.layerId = layerId;
+ this.point = point;
+ }
+
+ public AddMapPointParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<AddMapPointParams> CREATOR = new Creator<AddMapPointParams>() {
+ @Override
+ public AddMapPointParams createFromParcel(Parcel in) {
+ return new AddMapPointParams(in);
+ }
+
+ @Override
+ public AddMapPointParams[] newArray(int size) {
+ return new AddMapPointParams[size];
+ }
+ };
+
+ public String getLayerId() {
+ return layerId;
+ }
+
+ public AMapPoint getPoint() {
+ return point;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("layerId", layerId);
+ bundle.putParcelable("point", point);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AMapPoint.class.getClassLoader());
+
+ layerId = bundle.getString("layerId");
+ point = bundle.getParcelable("point");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/RemoveMapPointParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/RemoveMapPointParams.aidl
new file mode 100644
index 0000000000..7e346391ec
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/RemoveMapPointParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.maplayer.point;
+
+parcelable RemoveMapPointParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/RemoveMapPointParams.java b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/RemoveMapPointParams.java
new file mode 100644
index 0000000000..620c13bc10
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/RemoveMapPointParams.java
@@ -0,0 +1,55 @@
+package net.osmand.aidlapi.maplayer.point;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class RemoveMapPointParams extends AidlParams {
+
+ private String layerId;
+ private String pointId;
+
+ public RemoveMapPointParams(String layerId, String pointId) {
+ this.layerId = layerId;
+ this.pointId = pointId;
+ }
+
+ public RemoveMapPointParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<RemoveMapPointParams> CREATOR = new Creator<RemoveMapPointParams>() {
+ @Override
+ public RemoveMapPointParams createFromParcel(Parcel in) {
+ return new RemoveMapPointParams(in);
+ }
+
+ @Override
+ public RemoveMapPointParams[] newArray(int size) {
+ return new RemoveMapPointParams[size];
+ }
+ };
+
+ public String getLayerId() {
+ return layerId;
+ }
+
+ public String getPointId() {
+ return pointId;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("layerId", layerId);
+ bundle.putString("pointId", pointId);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ super.readFromBundle(bundle);
+
+ layerId = bundle.getString("layerId");
+ pointId = bundle.getString("pointId");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/ShowMapPointParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/ShowMapPointParams.aidl
new file mode 100644
index 0000000000..a4f1591dc9
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/ShowMapPointParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.maplayer.point;
+
+parcelable ShowMapPointParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/ShowMapPointParams.java b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/ShowMapPointParams.java
new file mode 100644
index 0000000000..08be287088
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/ShowMapPointParams.java
@@ -0,0 +1,54 @@
+package net.osmand.aidlapi.maplayer.point;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class ShowMapPointParams extends AidlParams {
+
+ private String layerId;
+ private AMapPoint point;
+
+ public ShowMapPointParams(String layerId, AMapPoint point) {
+ this.layerId = layerId;
+ this.point = point;
+ }
+
+ public ShowMapPointParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<ShowMapPointParams> CREATOR = new Creator<ShowMapPointParams>() {
+ @Override
+ public ShowMapPointParams createFromParcel(Parcel in) {
+ return new ShowMapPointParams(in);
+ }
+
+ @Override
+ public ShowMapPointParams[] newArray(int size) {
+ return new ShowMapPointParams[size];
+ }
+ };
+
+ public String getLayerId() {
+ return layerId;
+ }
+
+ public AMapPoint getPoint() {
+ return point;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("layerId", layerId);
+ bundle.putParcelable("point", point);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AMapPoint.class.getClassLoader());
+ layerId = bundle.getString("layerId");
+ point = bundle.getParcelable("point");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/UpdateMapPointParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/UpdateMapPointParams.aidl
new file mode 100644
index 0000000000..e4f80785da
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/UpdateMapPointParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.maplayer.point;
+
+parcelable UpdateMapPointParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/UpdateMapPointParams.java b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/UpdateMapPointParams.java
new file mode 100644
index 0000000000..77f85e180f
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/maplayer/point/UpdateMapPointParams.java
@@ -0,0 +1,62 @@
+package net.osmand.aidlapi.maplayer.point;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class UpdateMapPointParams extends AidlParams {
+
+ private String layerId;
+ private AMapPoint point;
+ private boolean updateOpenedMenuAndMap;
+
+ public UpdateMapPointParams(String layerId, AMapPoint point, boolean updateOpenedMenuAndMap) {
+ this.layerId = layerId;
+ this.point = point;
+ this.updateOpenedMenuAndMap = updateOpenedMenuAndMap;
+ }
+
+ public UpdateMapPointParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<UpdateMapPointParams> CREATOR = new Creator<UpdateMapPointParams>() {
+ @Override
+ public UpdateMapPointParams createFromParcel(Parcel in) {
+ return new UpdateMapPointParams(in);
+ }
+
+ @Override
+ public UpdateMapPointParams[] newArray(int size) {
+ return new UpdateMapPointParams[size];
+ }
+ };
+
+ public String getLayerId() {
+ return layerId;
+ }
+
+ public AMapPoint getPoint() {
+ return point;
+ }
+
+ public boolean isUpdateOpenedMenuAndMap() {
+ return updateOpenedMenuAndMap;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("layerId", layerId);
+ bundle.putParcelable("point", point);
+ bundle.putBoolean("updateOpenedMenuAndMap", updateOpenedMenuAndMap);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AMapPoint.class.getClassLoader());
+ layerId = bundle.getString("layerId");
+ point = bundle.getParcelable("point");
+ updateOpenedMenuAndMap = bundle.getBoolean("updateOpenedMenuAndMap");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AMapMarker.aidl b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AMapMarker.aidl
new file mode 100644
index 0000000000..26de4179b1
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AMapMarker.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.mapmarker;
+
+parcelable AMapMarker; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AMapMarker.java b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AMapMarker.java
new file mode 100644
index 0000000000..5424d95145
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AMapMarker.java
@@ -0,0 +1,61 @@
+package net.osmand.aidlapi.mapmarker;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+import net.osmand.aidlapi.map.ALatLon;
+
+public class AMapMarker extends AidlParams {
+
+ private ALatLon latLon;
+ private String name;
+
+ public AMapMarker(ALatLon latLon, String name) {
+ if (latLon == null) {
+ throw new IllegalArgumentException("latLon cannot be null");
+ }
+ if (name == null) {
+ name = "";
+ }
+ this.latLon = latLon;
+ this.name = name;
+ }
+
+ public AMapMarker(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<AMapMarker> CREATOR = new Creator<AMapMarker>() {
+ @Override
+ public AMapMarker createFromParcel(Parcel in) {
+ return new AMapMarker(in);
+ }
+
+ @Override
+ public AMapMarker[] newArray(int size) {
+ return new AMapMarker[size];
+ }
+ };
+
+ public ALatLon getLatLon() {
+ return latLon;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("latLon", latLon);
+ bundle.putString("name", name);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(ALatLon.class.getClassLoader());
+ latLon = bundle.getParcelable("latLon");
+ name = bundle.getString("name");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AddMapMarkerParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AddMapMarkerParams.aidl
new file mode 100644
index 0000000000..7dd95ebf94
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AddMapMarkerParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.mapmarker;
+
+parcelable AddMapMarkerParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AddMapMarkerParams.java b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AddMapMarkerParams.java
new file mode 100644
index 0000000000..25bd529929
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/AddMapMarkerParams.java
@@ -0,0 +1,46 @@
+package net.osmand.aidlapi.mapmarker;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class AddMapMarkerParams extends AidlParams {
+
+ private AMapMarker marker;
+
+ public AddMapMarkerParams(AMapMarker marker) {
+ this.marker = marker;
+ }
+
+ public AddMapMarkerParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<AddMapMarkerParams> CREATOR = new Creator<AddMapMarkerParams>() {
+ @Override
+ public AddMapMarkerParams createFromParcel(Parcel in) {
+ return new AddMapMarkerParams(in);
+ }
+
+ @Override
+ public AddMapMarkerParams[] newArray(int size) {
+ return new AddMapMarkerParams[size];
+ }
+ };
+
+ public AMapMarker getMarker() {
+ return marker;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("marker", marker);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AMapMarker.class.getClassLoader());
+ marker = bundle.getParcelable("marker");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkerParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkerParams.aidl
new file mode 100644
index 0000000000..174bffb9b4
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkerParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.mapmarker;
+
+parcelable RemoveMapMarkerParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkerParams.java b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkerParams.java
new file mode 100644
index 0000000000..6c8db4fdb2
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkerParams.java
@@ -0,0 +1,59 @@
+package net.osmand.aidlapi.mapmarker;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class RemoveMapMarkerParams extends AidlParams {
+
+ private AMapMarker marker;
+ private boolean ignoreCoordinates;
+
+ public RemoveMapMarkerParams(AMapMarker marker) {
+ this.marker = marker;
+ this.ignoreCoordinates = false;
+ }
+
+ public RemoveMapMarkerParams(AMapMarker marker, boolean ignoreCoordinates) {
+ this.marker = marker;
+ this.ignoreCoordinates = ignoreCoordinates;
+ }
+
+ public RemoveMapMarkerParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<RemoveMapMarkerParams> CREATOR = new Creator<RemoveMapMarkerParams>() {
+ @Override
+ public RemoveMapMarkerParams createFromParcel(Parcel in) {
+ return new RemoveMapMarkerParams(in);
+ }
+
+ @Override
+ public RemoveMapMarkerParams[] newArray(int size) {
+ return new RemoveMapMarkerParams[size];
+ }
+ };
+
+ public AMapMarker getMarker() {
+ return marker;
+ }
+
+ public boolean getIgnoreCoordinates() {
+ return ignoreCoordinates;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("marker", marker);
+ bundle.putBoolean("ignoreCoordinates", ignoreCoordinates);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AMapMarker.class.getClassLoader());
+ marker = bundle.getParcelable("marker");
+ ignoreCoordinates = bundle.getBoolean("ignoreCoordinates");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkersParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkersParams.aidl
new file mode 100644
index 0000000000..abcaadd543
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkersParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.mapmarker;
+
+parcelable RemoveMapMarkersParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkersParams.java b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkersParams.java
new file mode 100644
index 0000000000..d47d9f202c
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/RemoveMapMarkersParams.java
@@ -0,0 +1,28 @@
+package net.osmand.aidlapi.mapmarker;
+
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class RemoveMapMarkersParams extends AidlParams {
+
+ public RemoveMapMarkersParams() {
+
+ }
+
+ public RemoveMapMarkersParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<RemoveMapMarkersParams> CREATOR = new Creator<RemoveMapMarkersParams>() {
+ @Override
+ public RemoveMapMarkersParams createFromParcel(Parcel in) {
+ return new RemoveMapMarkersParams(in);
+ }
+
+ @Override
+ public RemoveMapMarkersParams[] newArray(int size) {
+ return new RemoveMapMarkersParams[size];
+ }
+ };
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/UpdateMapMarkerParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/UpdateMapMarkerParams.aidl
new file mode 100644
index 0000000000..99f3f97674
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/UpdateMapMarkerParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.mapmarker;
+
+parcelable UpdateMapMarkerParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/UpdateMapMarkerParams.java b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/UpdateMapMarkerParams.java
new file mode 100644
index 0000000000..6324b33365
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapmarker/UpdateMapMarkerParams.java
@@ -0,0 +1,68 @@
+package net.osmand.aidlapi.mapmarker;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class UpdateMapMarkerParams extends AidlParams {
+
+ private AMapMarker markerPrev;
+ private AMapMarker markerNew;
+ private boolean ignoreCoordinates;
+
+ public UpdateMapMarkerParams(AMapMarker markerPrev, AMapMarker markerNew) {
+ this.markerPrev = markerPrev;
+ this.markerNew = markerNew;
+ this.ignoreCoordinates = false;
+ }
+
+ public UpdateMapMarkerParams(AMapMarker markerPrev, AMapMarker markerNew, boolean ignoreCoordinates) {
+ this.markerPrev = markerPrev;
+ this.markerNew = markerNew;
+ this.ignoreCoordinates = ignoreCoordinates;
+ }
+
+ public UpdateMapMarkerParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<UpdateMapMarkerParams> CREATOR = new Creator<UpdateMapMarkerParams>() {
+ @Override
+ public UpdateMapMarkerParams createFromParcel(Parcel in) {
+ return new UpdateMapMarkerParams(in);
+ }
+
+ @Override
+ public UpdateMapMarkerParams[] newArray(int size) {
+ return new UpdateMapMarkerParams[size];
+ }
+ };
+
+ public AMapMarker getMarkerPrev() {
+ return markerPrev;
+ }
+
+ public AMapMarker getMarkerNew() {
+ return markerNew;
+ }
+
+ public boolean getIgnoreCoordinates() {
+ return ignoreCoordinates;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("markerPrev", markerPrev);
+ bundle.putParcelable("markerNew", markerNew);
+ bundle.putBoolean("ignoreCoordinates", ignoreCoordinates);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AMapMarker.class.getClassLoader());
+ markerPrev = bundle.getParcelable("markerPrev");
+ markerNew = bundle.getParcelable("markerNew");
+ ignoreCoordinates = bundle.getBoolean("ignoreCoordinates");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AMapWidget.aidl b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AMapWidget.aidl
new file mode 100644
index 0000000000..30d13e158a
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AMapWidget.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.mapwidget;
+
+parcelable AMapWidget; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AMapWidget.java b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AMapWidget.java
new file mode 100644
index 0000000000..8ff1debe9b
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AMapWidget.java
@@ -0,0 +1,112 @@
+package net.osmand.aidlapi.mapwidget;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class AMapWidget extends AidlParams {
+ private String id;
+ private String menuIconName;
+ private String menuTitle;
+ private String lightIconName;
+ private String darkIconName;
+ private String text;
+ private String description;
+ private int order;
+ private Intent intentOnClick;
+
+ public AMapWidget(String id, String menuIconName, String menuTitle,
+ String lightIconName, String darkIconName, String text, String description,
+ int order, Intent intentOnClick) {
+ this.id = id;
+ this.menuIconName = menuIconName;
+ this.menuTitle = menuTitle;
+ this.lightIconName = lightIconName;
+ this.darkIconName = darkIconName;
+ this.text = text;
+ this.description = description;
+ this.order = order;
+ this.intentOnClick = intentOnClick;
+ }
+
+ public AMapWidget(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<AMapWidget> CREATOR = new Creator<AMapWidget>() {
+ @Override
+ public AMapWidget createFromParcel(Parcel in) {
+ return new AMapWidget(in);
+ }
+
+ @Override
+ public AMapWidget[] newArray(int size) {
+ return new AMapWidget[size];
+ }
+ };
+
+ public String getId() {
+ return id;
+ }
+
+ public String getMenuIconName() {
+ return menuIconName;
+ }
+
+ public String getMenuTitle() {
+ return menuTitle;
+ }
+
+ public String getLightIconName() {
+ return lightIconName;
+ }
+
+ public String getDarkIconName() {
+ return darkIconName;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public int getOrder() {
+ return order;
+ }
+
+ public Intent getIntentOnClick() {
+ return intentOnClick;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("id", id);
+ bundle.putString("menuIconName", menuIconName);
+ bundle.putString("menuTitle", menuTitle);
+ bundle.putString("lightIconName", lightIconName);
+ bundle.putString("darkIconName", darkIconName);
+ bundle.putString("text", text);
+ bundle.putString("description", description);
+ bundle.putInt("order", order);
+ bundle.putParcelable("intentOnClick", intentOnClick);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(Intent.class.getClassLoader());
+ id = bundle.getString("id");
+ menuIconName = bundle.getString("menuIconName");
+ menuTitle = bundle.getString("menuTitle");
+ lightIconName = bundle.getString("lightIconName");
+ darkIconName = bundle.getString("darkIconName");
+ text = bundle.getString("text");
+ description = bundle.getString("description");
+ order = bundle.getInt("order");
+ intentOnClick = bundle.getParcelable("intentOnClick");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AddMapWidgetParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AddMapWidgetParams.aidl
new file mode 100644
index 0000000000..6759bef32e
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AddMapWidgetParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.mapwidget;
+
+parcelable AddMapWidgetParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AddMapWidgetParams.java b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AddMapWidgetParams.java
new file mode 100644
index 0000000000..fc039c05e4
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/AddMapWidgetParams.java
@@ -0,0 +1,46 @@
+package net.osmand.aidlapi.mapwidget;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class AddMapWidgetParams extends AidlParams {
+
+ private AMapWidget widget;
+
+ public AddMapWidgetParams(AMapWidget widget) {
+ this.widget = widget;
+ }
+
+ public AddMapWidgetParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<AddMapWidgetParams> CREATOR = new Creator<AddMapWidgetParams>() {
+ @Override
+ public AddMapWidgetParams createFromParcel(Parcel in) {
+ return new AddMapWidgetParams(in);
+ }
+
+ @Override
+ public AddMapWidgetParams[] newArray(int size) {
+ return new AddMapWidgetParams[size];
+ }
+ };
+
+ public AMapWidget getWidget() {
+ return widget;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("widget", widget);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AMapWidget.class.getClassLoader());
+ widget = bundle.getParcelable("widget");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/RemoveMapWidgetParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/RemoveMapWidgetParams.aidl
new file mode 100644
index 0000000000..8801dad3f5
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/RemoveMapWidgetParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.mapwidget;
+
+parcelable RemoveMapWidgetParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/RemoveMapWidgetParams.java b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/RemoveMapWidgetParams.java
new file mode 100644
index 0000000000..adbc6fc48d
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/RemoveMapWidgetParams.java
@@ -0,0 +1,45 @@
+package net.osmand.aidlapi.mapwidget;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class RemoveMapWidgetParams extends AidlParams {
+
+ private String id;
+
+ public RemoveMapWidgetParams(String id) {
+ this.id = id;
+ }
+
+ public RemoveMapWidgetParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<RemoveMapWidgetParams> CREATOR = new Creator<RemoveMapWidgetParams>() {
+ @Override
+ public RemoveMapWidgetParams createFromParcel(Parcel in) {
+ return new RemoveMapWidgetParams(in);
+ }
+
+ @Override
+ public RemoveMapWidgetParams[] newArray(int size) {
+ return new RemoveMapWidgetParams[size];
+ }
+ };
+
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("id", id);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ id = bundle.getString("id");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/UpdateMapWidgetParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/UpdateMapWidgetParams.aidl
new file mode 100644
index 0000000000..bce32c0668
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/UpdateMapWidgetParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.mapwidget;
+
+parcelable UpdateMapWidgetParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/UpdateMapWidgetParams.java b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/UpdateMapWidgetParams.java
new file mode 100644
index 0000000000..7e6166b54a
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/mapwidget/UpdateMapWidgetParams.java
@@ -0,0 +1,46 @@
+package net.osmand.aidlapi.mapwidget;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class UpdateMapWidgetParams extends AidlParams {
+
+ private AMapWidget widget;
+
+ public UpdateMapWidgetParams(AMapWidget widget) {
+ this.widget = widget;
+ }
+
+ public UpdateMapWidgetParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<UpdateMapWidgetParams> CREATOR = new Creator<UpdateMapWidgetParams>() {
+ @Override
+ public UpdateMapWidgetParams createFromParcel(Parcel in) {
+ return new UpdateMapWidgetParams(in);
+ }
+
+ @Override
+ public UpdateMapWidgetParams[] newArray(int size) {
+ return new UpdateMapWidgetParams[size];
+ }
+ };
+
+ public AMapWidget getWidget() {
+ return widget;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putParcelable("widget", widget);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ bundle.setClassLoader(AMapWidget.class.getClassLoader());
+ widget = bundle.getParcelable("widget");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerFooterParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerFooterParams.aidl
new file mode 100644
index 0000000000..47948ad135
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerFooterParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.navdrawer;
+
+parcelable NavDrawerFooterParams;
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerFooterParams.java b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerFooterParams.java
index 9bfd70193f..667016c5e0 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerFooterParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerFooterParams.java
@@ -1,11 +1,13 @@
-package net.osmand.aidl.navdrawer;
+package net.osmand.aidlapi.navdrawer;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
-public class NavDrawerFooterParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class NavDrawerFooterParams extends AidlParams {
@NonNull
private String packageName;
@@ -30,28 +32,14 @@ public class NavDrawerFooterParams implements Parcelable {
}
public NavDrawerFooterParams(@NonNull String packageName, @Nullable String intent,
- @Nullable String appName) {
+ @Nullable String appName) {
this.packageName = packageName;
this.intent = intent;
this.appName = appName;
}
protected NavDrawerFooterParams(Parcel in) {
- packageName = in.readString();
- intent = in.readString();
- appName = in.readString();
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(packageName);
- dest.writeString(intent);
- dest.writeString(appName);
- }
-
- @Override
- public int describeContents() {
- return 0;
+ readFromParcel(in);
}
public static final Creator<NavDrawerFooterParams> CREATOR = new Creator<NavDrawerFooterParams>() {
@@ -65,4 +53,18 @@ public class NavDrawerFooterParams implements Parcelable {
return new NavDrawerFooterParams[size];
}
};
-}
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ packageName = bundle.getString("packageName", "");
+ intent = bundle.getString("intent");
+ appName = bundle.getString("appName");
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("packageName", packageName);
+ bundle.putString("intent", intent);
+ bundle.putString("appName", appName);
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerHeaderParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerHeaderParams.aidl
new file mode 100644
index 0000000000..2a39fdd31f
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerHeaderParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.navdrawer;
+
+parcelable NavDrawerHeaderParams;
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerHeaderParams.java b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerHeaderParams.java
index c88950fd10..3ea2d45eaf 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerHeaderParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerHeaderParams.java
@@ -1,11 +1,13 @@
-package net.osmand.aidl.navdrawer;
+package net.osmand.aidlapi.navdrawer;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
-public class NavDrawerHeaderParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class NavDrawerHeaderParams extends AidlParams {
@NonNull
private String imageUri;
@@ -30,28 +32,14 @@ public class NavDrawerHeaderParams implements Parcelable {
}
public NavDrawerHeaderParams(@NonNull String imageUri, @NonNull String packageName,
- @Nullable String intent) {
+ @Nullable String intent) {
this.imageUri = imageUri;
this.packageName = packageName;
this.intent = intent;
}
public NavDrawerHeaderParams(Parcel in) {
- imageUri = in.readString();
- packageName = in.readString();
- intent = in.readString();
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(imageUri);
- dest.writeString(packageName);
- dest.writeString(intent);
- }
-
- @Override
- public int describeContents() {
- return 0;
+ readFromParcel(in);
}
public static final Creator<NavDrawerHeaderParams> CREATOR = new Creator<NavDrawerHeaderParams>() {
@@ -65,4 +53,18 @@ public class NavDrawerHeaderParams implements Parcelable {
return new NavDrawerHeaderParams[size];
}
};
-}
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ imageUri = bundle.getString("imageUri", "");
+ packageName = bundle.getString("packageName", "");
+ intent = bundle.getString("intent");
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("imageUri", imageUri);
+ bundle.putString("packageName", packageName);
+ bundle.putString("intent", intent);
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerItem.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerItem.aidl
new file mode 100644
index 0000000000..a4c9a72089
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerItem.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.navdrawer;
+
+parcelable NavDrawerItem; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerItem.java b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerItem.java
index aedc585b65..e865a540f8 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerItem.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/NavDrawerItem.java
@@ -1,11 +1,13 @@
-package net.osmand.aidl.navdrawer;
+package net.osmand.aidlapi.navdrawer;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
-public class NavDrawerItem implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class NavDrawerItem extends AidlParams {
private String name;
private String uri;
@@ -24,12 +26,21 @@ public class NavDrawerItem implements Parcelable {
}
protected NavDrawerItem(Parcel in) {
- name = in.readString();
- uri = in.readString();
- iconName = in.readString();
- flags = in.readInt();
+ readFromParcel(in);
}
+ public static final Creator<NavDrawerItem> CREATOR = new Creator<NavDrawerItem>() {
+ @Override
+ public NavDrawerItem createFromParcel(Parcel in) {
+ return new NavDrawerItem(in);
+ }
+
+ @Override
+ public NavDrawerItem[] newArray(int size) {
+ return new NavDrawerItem[size];
+ }
+ };
+
public String getName() {
return name;
}
@@ -47,27 +58,18 @@ public class NavDrawerItem implements Parcelable {
}
@Override
- public void writeToParcel(Parcel dest, int f) {
- dest.writeString(name);
- dest.writeString(uri);
- dest.writeString(iconName);
- dest.writeInt(flags);
+ protected void readFromBundle(Bundle bundle) {
+ name = bundle.getString("name");
+ uri = bundle.getString("uri");
+ iconName = bundle.getString("iconName");
+ flags = bundle.getInt("flags");
}
@Override
- public int describeContents() {
- return 0;
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("name", name);
+ bundle.putString("uri", uri);
+ bundle.putString("iconName", iconName);
+ bundle.putInt("flags", flags);
}
-
- public static final Creator<NavDrawerItem> CREATOR = new Creator<NavDrawerItem>() {
- @Override
- public NavDrawerItem createFromParcel(Parcel in) {
- return new NavDrawerItem(in);
- }
-
- @Override
- public NavDrawerItem[] newArray(int size) {
- return new NavDrawerItem[size];
- }
- };
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/SetNavDrawerItemsParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/SetNavDrawerItemsParams.aidl
new file mode 100644
index 0000000000..f92a0fb10b
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/SetNavDrawerItemsParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.navdrawer;
+
+parcelable SetNavDrawerItemsParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/SetNavDrawerItemsParams.java b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/SetNavDrawerItemsParams.java
index 783a76eb7b..9609b558ae 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/SetNavDrawerItemsParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navdrawer/SetNavDrawerItemsParams.java
@@ -1,26 +1,26 @@
-package net.osmand.aidl.navdrawer;
+package net.osmand.aidlapi.navdrawer;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
import android.support.annotation.NonNull;
+import net.osmand.aidlapi.AidlParams;
+
import java.util.ArrayList;
import java.util.List;
-public class SetNavDrawerItemsParams implements Parcelable {
+public class SetNavDrawerItemsParams extends AidlParams {
private String appPackage;
- private List<NavDrawerItem> items;
+ private ArrayList<NavDrawerItem> items = new ArrayList<>();
public SetNavDrawerItemsParams(@NonNull String appPackage, @NonNull List<NavDrawerItem> items) {
this.appPackage = appPackage;
- this.items = items;
+ this.items.addAll(items);
}
protected SetNavDrawerItemsParams(Parcel in) {
- appPackage = in.readString();
- items = new ArrayList<>();
- in.readTypedList(items, NavDrawerItem.CREATOR);
+ readFromParcel(in);
}
public String getAppPackage() {
@@ -32,14 +32,16 @@ public class SetNavDrawerItemsParams implements Parcelable {
}
@Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(appPackage);
- dest.writeTypedList(new ArrayList<>(items));
+ protected void readFromBundle(Bundle bundle) {
+ appPackage = bundle.getString("appPackage");
+ bundle.setClassLoader(NavDrawerItem.class.getClassLoader());
+ items = bundle.getParcelableArrayList("items");
}
@Override
- public int describeContents() {
- return 0;
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("appPackage", appPackage);
+ bundle.putParcelableArrayList("items", items);
}
public static final Creator<SetNavDrawerItemsParams> CREATOR = new Creator<SetNavDrawerItemsParams>() {
@@ -53,4 +55,4 @@ public class SetNavDrawerItemsParams implements Parcelable {
return new SetNavDrawerItemsParams[size];
}
};
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navigation/ADirectionInfo.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ADirectionInfo.aidl
new file mode 100644
index 0000000000..19d7a7e5f1
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ADirectionInfo.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.navigation;
+
+parcelable ADirectionInfo;
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ADirectionInfo.java b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ADirectionInfo.java
index a5e7074f0e..91c59dfb29 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ADirectionInfo.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ADirectionInfo.java
@@ -1,9 +1,11 @@
-package net.osmand.aidl.navigation;
+package net.osmand.aidlapi.navigation;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
-public class ADirectionInfo implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class ADirectionInfo extends AidlParams {
private int distanceTo; //distance to next turn
private int turnType; //turn type
@@ -16,9 +18,7 @@ public class ADirectionInfo implements Parcelable {
}
protected ADirectionInfo(Parcel in) {
- distanceTo = in.readInt();
- turnType = in.readInt();
- isLeftSide = in.readByte() != 0;
+ readFromParcel(in);
}
public static final Creator<ADirectionInfo> CREATOR = new Creator<ADirectionInfo>() {
@@ -58,16 +58,16 @@ public class ADirectionInfo implements Parcelable {
}
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ distanceTo = bundle.getInt("distanceTo");
+ turnType = bundle.getInt("turnType");
+ isLeftSide = bundle.getBoolean("isLeftSide");
}
@Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeInt(distanceTo);
- dest.writeInt(turnType);
- dest.writeByte((byte) (isLeftSide ? 1 : 0));
+ public void writeToBundle(Bundle bundle) {
+ bundle.putInt("distanceTo", distanceTo);
+ bundle.putInt("turnType", turnType);
+ bundle.putBoolean("isLeftSide", isLeftSide);
}
-
-
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navigation/ANavigationUpdateParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ANavigationUpdateParams.aidl
new file mode 100644
index 0000000000..ccdbc4b4ab
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ANavigationUpdateParams.aidl
@@ -0,0 +1,4 @@
+
+package net.osmand.aidlapi.navigation;
+
+parcelable ANavigationUpdateParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ANavigationUpdateParams.java b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ANavigationUpdateParams.java
index 38c8f5ffe4..aad9958e9d 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ANavigationUpdateParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ANavigationUpdateParams.java
@@ -1,16 +1,35 @@
-package net.osmand.aidl.navigation;
+package net.osmand.aidlapi.navigation;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
-public class ANavigationUpdateParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class ANavigationUpdateParams extends AidlParams {
private boolean subscribeToUpdates = true;
private long callbackId = -1L;
public ANavigationUpdateParams() {
+
+ }
+
+ protected ANavigationUpdateParams(Parcel in) {
+ readFromParcel(in);
}
+ public static final Creator<ANavigationUpdateParams> CREATOR = new Creator<ANavigationUpdateParams>() {
+ @Override
+ public ANavigationUpdateParams createFromParcel(Parcel in) {
+ return new ANavigationUpdateParams(in);
+ }
+
+ @Override
+ public ANavigationUpdateParams[] newArray(int size) {
+ return new ANavigationUpdateParams[size];
+ }
+ };
+
public long getCallbackId() {
return callbackId;
}
@@ -27,31 +46,15 @@ public class ANavigationUpdateParams implements Parcelable {
return subscribeToUpdates;
}
- protected ANavigationUpdateParams(Parcel in) {
- callbackId = in.readLong();
- subscribeToUpdates = in.readByte() != 0;
- }
-
@Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeLong(callbackId);
- dest.writeByte((byte) (subscribeToUpdates ? 1 : 0));
+ protected void readFromBundle(Bundle bundle) {
+ callbackId = bundle.getLong("callbackId");
+ subscribeToUpdates = bundle.getBoolean("subscribeToUpdates");
}
@Override
- public int describeContents() {
- return 0;
+ public void writeToBundle(Bundle bundle) {
+ bundle.putLong("callbackId", callbackId);
+ bundle.putBoolean("subscribeToUpdates", subscribeToUpdates);
}
-
- public static final Creator<ANavigationUpdateParams> CREATOR = new Creator<ANavigationUpdateParams>() {
- @Override
- public ANavigationUpdateParams createFromParcel(Parcel in) {
- return new ANavigationUpdateParams(in);
- }
-
- @Override
- public ANavigationUpdateParams[] newArray(int size) {
- return new ANavigationUpdateParams[size];
- }
- };
-}
+} \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ANavigationVoiceRouterMessageParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ANavigationVoiceRouterMessageParams.aidl
index 6dfbe239ae..84fd5c2c3a 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ANavigationVoiceRouterMessageParams.aidl
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ANavigationVoiceRouterMessageParams.aidl
@@ -1,3 +1,3 @@
-package net.osmand.aidl.navigation;
+package net.osmand.aidlapi.navigation;
parcelable ANavigationVoiceRouterMessageParams;
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navigation/ANavigationVoiceRouterMessageParams.java b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ANavigationVoiceRouterMessageParams.java
new file mode 100644
index 0000000000..4c4ce890d5
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ANavigationVoiceRouterMessageParams.java
@@ -0,0 +1,60 @@
+package net.osmand.aidlapi.navigation;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class ANavigationVoiceRouterMessageParams extends AidlParams {
+
+ private long callbackId = -1L;
+ private boolean subscribeToUpdates = true;
+
+ public ANavigationVoiceRouterMessageParams() {
+
+ }
+
+ protected ANavigationVoiceRouterMessageParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<ANavigationVoiceRouterMessageParams> CREATOR = new Creator<ANavigationVoiceRouterMessageParams>() {
+ @Override
+ public ANavigationVoiceRouterMessageParams createFromParcel(Parcel in) {
+ return new ANavigationVoiceRouterMessageParams(in);
+ }
+
+ @Override
+ public ANavigationVoiceRouterMessageParams[] newArray(int size) {
+ return new ANavigationVoiceRouterMessageParams[size];
+ }
+ };
+
+ public long getCallbackId() {
+ return callbackId;
+ }
+
+ public void setCallbackId(long callbackId) {
+ this.callbackId = callbackId;
+ }
+
+ public void setSubscribeToUpdates(boolean subscribeToUpdates) {
+ this.subscribeToUpdates = subscribeToUpdates;
+ }
+
+ public boolean isSubscribeToUpdates() {
+ return subscribeToUpdates;
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ callbackId = bundle.getLong("callbackId");
+ subscribeToUpdates = bundle.getBoolean("subscribeToUpdates");
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putLong("callbackId", callbackId);
+ bundle.putBoolean("subscribeToUpdates", subscribeToUpdates);
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navigation/MuteNavigationParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navigation/MuteNavigationParams.aidl
new file mode 100644
index 0000000000..99834c101e
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/MuteNavigationParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.navigation;
+
+parcelable MuteNavigationParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/MuteNavigationParams.java b/OsmAnd-api/src/net/osmand/aidlapi/navigation/MuteNavigationParams.java
index 8965c415fa..e23d243eec 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/MuteNavigationParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/MuteNavigationParams.java
@@ -1,9 +1,10 @@
-package net.osmand.aidl.navigation;
+package net.osmand.aidlapi.navigation;
import android.os.Parcel;
-import android.os.Parcelable;
-public class MuteNavigationParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class MuteNavigationParams extends AidlParams {
public MuteNavigationParams() {
}
@@ -23,16 +24,4 @@ public class MuteNavigationParams implements Parcelable {
return new MuteNavigationParams[size];
}
};
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- }
-
- private void readFromParcel(Parcel in) {
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateGpxParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateGpxParams.aidl
new file mode 100644
index 0000000000..8bfcac4266
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateGpxParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.navigation;
+
+parcelable NavigateGpxParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateGpxParams.java b/OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateGpxParams.java
index 6e8fb8efe7..8b4901b35e 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateGpxParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateGpxParams.java
@@ -1,10 +1,12 @@
-package net.osmand.aidl.navigation;
+package net.osmand.aidlapi.navigation;
import android.net.Uri;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
-public class NavigateGpxParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class NavigateGpxParams extends AidlParams {
private String data;
private Uri uri;
@@ -49,21 +51,16 @@ public class NavigateGpxParams implements Parcelable {
}
@Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(data);
- out.writeParcelable(uri, flags);
- out.writeByte((byte) (force ? 1 : 0));
- }
-
- private void readFromParcel(Parcel in) {
- data = in.readString();
- uri = in.readParcelable(Uri.class.getClassLoader());
- force = in.readByte() != 0;
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("data", data);
+ bundle.putParcelable("uri", uri);
+ bundle.putBoolean("force", force);
}
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ data = bundle.getString("data");
+ uri = bundle.getParcelable("uri");
+ force = bundle.getBoolean("force");
}
-
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateParams.aidl
new file mode 100644
index 0000000000..3780bda111
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.navigation;
+
+parcelable NavigateParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateParams.java b/OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateParams.java
index 8b0bdeb1eb..6dff82b7e4 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateParams.java
@@ -1,17 +1,21 @@
-package net.osmand.aidl.navigation;
+package net.osmand.aidlapi.navigation;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
-public class NavigateParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+public class NavigateParams extends AidlParams {
+
+ private String profile;
+ private String destName;
private String startName;
+
private double startLat;
private double startLon;
- private String destName;
private double destLat;
private double destLon;
- private String profile;
+
private boolean force;
public NavigateParams(String startName, double startLat, double startLon, String destName, double destLat, double destLon, String profile, boolean force) {
@@ -74,31 +78,26 @@ public class NavigateParams implements Parcelable {
}
@Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(startName);
- out.writeDouble(startLat);
- out.writeDouble(startLon);
- out.writeString(destName);
- out.writeDouble(destLat);
- out.writeDouble(destLon);
- out.writeString(profile);
- out.writeByte((byte) (force ? 1 : 0));
- }
-
- private void readFromParcel(Parcel in) {
- startName = in.readString();
- startLat = in.readDouble();
- startLon = in.readDouble();
- destName = in.readString();
- destLat = in.readDouble();
- destLon = in.readDouble();
- profile = in.readString();
- force = in.readByte() != 0;
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("startName", startName);
+ bundle.putDouble("startLat", startLat);
+ bundle.putDouble("startLon", startLon);
+ bundle.putString("destName", destName);
+ bundle.putDouble("destLat", destLat);
+ bundle.putDouble("destLon", destLon);
+ bundle.putString("profile", profile);
+ bundle.putBoolean("force", force);
}
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ startName = bundle.getString("startName");
+ startLat = bundle.getDouble("startLat");
+ startLon = bundle.getDouble("startLon");
+ destName = bundle.getString("destName");
+ destLat = bundle.getDouble("destLat");
+ destLon = bundle.getDouble("destLon");
+ profile = bundle.getString("profile");
+ force = bundle.getBoolean("force");
}
-
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateSearchParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateSearchParams.aidl
new file mode 100644
index 0000000000..8c4acb192f
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateSearchParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.navigation;
+
+parcelable NavigateSearchParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateSearchParams.java b/OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateSearchParams.java
index b092bcd4eb..d548dab2f3 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateSearchParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/NavigateSearchParams.java
@@ -1,22 +1,26 @@
-package net.osmand.aidl.navigation;
+package net.osmand.aidlapi.navigation;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
-public class NavigateSearchParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+public class NavigateSearchParams extends AidlParams {
+
+ private String profile;
private String startName;
+ private String searchQuery;
+
private double startLat;
private double startLon;
- private String searchQuery;
private double searchLat;
private double searchLon;
- private String profile;
+
private boolean force;
public NavigateSearchParams(String startName, double startLat, double startLon,
- String searchQuery, double searchLat, double searchLon,
- String profile, boolean force) {
+ String searchQuery, double searchLat, double searchLon,
+ String profile, boolean force) {
this.startName = startName;
this.startLat = startLat;
this.startLon = startLon;
@@ -76,31 +80,26 @@ public class NavigateSearchParams implements Parcelable {
}
@Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(startName);
- out.writeDouble(startLat);
- out.writeDouble(startLon);
- out.writeString(searchQuery);
- out.writeString(profile);
- out.writeByte((byte) (force ? 1 : 0));
- out.writeDouble(searchLat);
- out.writeDouble(searchLon);
- }
-
- private void readFromParcel(Parcel in) {
- startName = in.readString();
- startLat = in.readDouble();
- startLon = in.readDouble();
- searchQuery = in.readString();
- profile = in.readString();
- force = in.readByte() != 0;
- searchLat = in.readDouble();
- searchLon = in.readDouble();
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("startName", startName);
+ bundle.putDouble("startLat", startLat);
+ bundle.putDouble("startLon", startLon);
+ bundle.putString("searchQuery", searchQuery);
+ bundle.putString("profile", profile);
+ bundle.putBoolean("force", force);
+ bundle.putDouble("searchLat", searchLat);
+ bundle.putDouble("searchLon", searchLon);
}
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ startName = bundle.getString("startName");
+ startLat = bundle.getDouble("startLat");
+ startLon = bundle.getDouble("startLon");
+ searchQuery = bundle.getString("searchQuery");
+ profile = bundle.getString("profile");
+ force = bundle.getBoolean("force");
+ searchLat = bundle.getDouble("searchLat");
+ searchLon = bundle.getDouble("searchLon");
}
-
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navigation/OnVoiceNavigationParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navigation/OnVoiceNavigationParams.aidl
new file mode 100644
index 0000000000..107f69c53b
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/OnVoiceNavigationParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.navigation;
+
+parcelable OnVoiceNavigationParams; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navigation/OnVoiceNavigationParams.java b/OsmAnd-api/src/net/osmand/aidlapi/navigation/OnVoiceNavigationParams.java
new file mode 100644
index 0000000000..3c745684dd
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/OnVoiceNavigationParams.java
@@ -0,0 +1,70 @@
+package net.osmand.aidlapi.navigation;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import net.osmand.aidlapi.AidlParams;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class OnVoiceNavigationParams extends AidlParams {
+
+ private ArrayList<String> cmds = new ArrayList<>();
+ private ArrayList<String> played = new ArrayList<>();
+
+ public OnVoiceNavigationParams() {
+
+ }
+
+ public OnVoiceNavigationParams(List<String> cmds, List<String> played) {
+ if (cmds != null) {
+ this.cmds.addAll(cmds);
+ }
+ if (played != null) {
+ this.played.addAll(played);
+ }
+ }
+
+ public OnVoiceNavigationParams(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<OnVoiceNavigationParams> CREATOR = new Creator<OnVoiceNavigationParams>() {
+ @Override
+ public OnVoiceNavigationParams createFromParcel(Parcel in) {
+ return new OnVoiceNavigationParams(in);
+ }
+
+ @Override
+ public OnVoiceNavigationParams[] newArray(int size) {
+ return new OnVoiceNavigationParams[size];
+ }
+ };
+
+ public List<String> getCommands() {
+ return cmds;
+ }
+
+ public List<String> getPlayed() {
+ return played;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putStringArrayList("cmds", cmds);
+ bundle.putStringArrayList("played", played);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ cmds = bundle.getStringArrayList("cmds");
+ if (cmds == null) {
+ cmds = new ArrayList<>();
+ }
+ played = bundle.getStringArrayList("played");
+ if (played == null) {
+ played = new ArrayList<>();
+ }
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navigation/PauseNavigationParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navigation/PauseNavigationParams.aidl
new file mode 100644
index 0000000000..6fa3386080
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/PauseNavigationParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.navigation;
+
+parcelable PauseNavigationParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/PauseNavigationParams.java b/OsmAnd-api/src/net/osmand/aidlapi/navigation/PauseNavigationParams.java
index 5a28538039..f5a6cea1f8 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/PauseNavigationParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/PauseNavigationParams.java
@@ -1,11 +1,13 @@
-package net.osmand.aidl.navigation;
+package net.osmand.aidlapi.navigation;
import android.os.Parcel;
-import android.os.Parcelable;
-public class PauseNavigationParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class PauseNavigationParams extends AidlParams {
public PauseNavigationParams() {
+
}
public PauseNavigationParams(Parcel in) {
@@ -23,16 +25,4 @@ public class PauseNavigationParams implements Parcelable {
return new PauseNavigationParams[size];
}
};
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- }
-
- private void readFromParcel(Parcel in) {
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navigation/ResumeNavigationParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ResumeNavigationParams.aidl
new file mode 100644
index 0000000000..3029d59d6a
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ResumeNavigationParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.navigation;
+
+parcelable ResumeNavigationParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ResumeNavigationParams.java b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ResumeNavigationParams.java
index d1032dc914..65d121ce20 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ResumeNavigationParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/ResumeNavigationParams.java
@@ -1,11 +1,13 @@
-package net.osmand.aidl.navigation;
+package net.osmand.aidlapi.navigation;
import android.os.Parcel;
-import android.os.Parcelable;
-public class ResumeNavigationParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class ResumeNavigationParams extends AidlParams {
public ResumeNavigationParams() {
+
}
public ResumeNavigationParams(Parcel in) {
@@ -23,16 +25,4 @@ public class ResumeNavigationParams implements Parcelable {
return new ResumeNavigationParams[size];
}
};
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- }
-
- private void readFromParcel(Parcel in) {
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navigation/StopNavigationParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navigation/StopNavigationParams.aidl
new file mode 100644
index 0000000000..a7f05536c5
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/StopNavigationParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.navigation;
+
+parcelable StopNavigationParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/StopNavigationParams.java b/OsmAnd-api/src/net/osmand/aidlapi/navigation/StopNavigationParams.java
index e87d6ed2da..7be6fe5a4b 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/StopNavigationParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/StopNavigationParams.java
@@ -1,11 +1,13 @@
-package net.osmand.aidl.navigation;
+package net.osmand.aidlapi.navigation;
import android.os.Parcel;
-import android.os.Parcelable;
-public class StopNavigationParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class StopNavigationParams extends AidlParams {
public StopNavigationParams() {
+
}
public StopNavigationParams(Parcel in) {
@@ -23,16 +25,4 @@ public class StopNavigationParams implements Parcelable {
return new StopNavigationParams[size];
}
};
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- }
-
- private void readFromParcel(Parcel in) {
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/navigation/UnmuteNavigationParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/navigation/UnmuteNavigationParams.aidl
new file mode 100644
index 0000000000..e58995ca47
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/UnmuteNavigationParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.navigation;
+
+parcelable UnmuteNavigationParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/UnmuteNavigationParams.java b/OsmAnd-api/src/net/osmand/aidlapi/navigation/UnmuteNavigationParams.java
index 36819db065..c6ff661e58 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/UnmuteNavigationParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/navigation/UnmuteNavigationParams.java
@@ -1,11 +1,13 @@
-package net.osmand.aidl.navigation;
+package net.osmand.aidlapi.navigation;
import android.os.Parcel;
-import android.os.Parcelable;
-public class UnmuteNavigationParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class UnmuteNavigationParams extends AidlParams {
public UnmuteNavigationParams() {
+
}
public UnmuteNavigationParams(Parcel in) {
@@ -23,16 +25,4 @@ public class UnmuteNavigationParams implements Parcelable {
return new UnmuteNavigationParams[size];
}
};
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- }
-
- private void readFromParcel(Parcel in) {
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/note/StartAudioRecordingParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/note/StartAudioRecordingParams.aidl
new file mode 100644
index 0000000000..5b3bf05b16
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/note/StartAudioRecordingParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.note;
+
+parcelable StartAudioRecordingParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/note/StartAudioRecordingParams.java b/OsmAnd-api/src/net/osmand/aidlapi/note/StartAudioRecordingParams.java
index c2800feb9c..21350d42ac 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/note/StartAudioRecordingParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/note/StartAudioRecordingParams.java
@@ -1,9 +1,11 @@
-package net.osmand.aidl.note;
+package net.osmand.aidlapi.note;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
-public class StartAudioRecordingParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class StartAudioRecordingParams extends AidlParams {
private double latitude;
private double longitude;
@@ -38,19 +40,14 @@ public class StartAudioRecordingParams implements Parcelable {
}
@Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeDouble(latitude);
- out.writeDouble(longitude);
- }
-
- private void readFromParcel(Parcel in) {
- latitude = in.readDouble();
- longitude = in.readDouble();
+ public void writeToBundle(Bundle bundle) {
+ bundle.putDouble("latitude", latitude);
+ bundle.putDouble("longitude", longitude);
}
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ latitude = bundle.getDouble("latitude");
+ longitude = bundle.getDouble("longitude");
}
-
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/note/StartVideoRecordingParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/note/StartVideoRecordingParams.aidl
new file mode 100644
index 0000000000..aa5902909d
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/note/StartVideoRecordingParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.note;
+
+parcelable StartVideoRecordingParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/note/StartVideoRecordingParams.java b/OsmAnd-api/src/net/osmand/aidlapi/note/StartVideoRecordingParams.java
index aee86ea9de..f66528f9c0 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/note/StartVideoRecordingParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/note/StartVideoRecordingParams.java
@@ -1,9 +1,11 @@
-package net.osmand.aidl.note;
+package net.osmand.aidlapi.note;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
-public class StartVideoRecordingParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class StartVideoRecordingParams extends AidlParams {
private double latitude;
private double longitude;
@@ -38,19 +40,14 @@ public class StartVideoRecordingParams implements Parcelable {
}
@Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeDouble(latitude);
- out.writeDouble(longitude);
- }
-
- private void readFromParcel(Parcel in) {
- latitude = in.readDouble();
- longitude = in.readDouble();
+ public void writeToBundle(Bundle bundle) {
+ bundle.putDouble("latitude", latitude);
+ bundle.putDouble("longitude", longitude);
}
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ latitude = bundle.getDouble("latitude");
+ longitude = bundle.getDouble("longitude");
}
-
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/note/StopRecordingParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/note/StopRecordingParams.aidl
new file mode 100644
index 0000000000..08d6328da2
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/note/StopRecordingParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.note;
+
+parcelable StopRecordingParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/note/StopRecordingParams.java b/OsmAnd-api/src/net/osmand/aidlapi/note/StopRecordingParams.java
index b56a42504b..d5ab25940f 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/note/StopRecordingParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/note/StopRecordingParams.java
@@ -1,9 +1,10 @@
-package net.osmand.aidl.note;
+package net.osmand.aidlapi.note;
import android.os.Parcel;
-import android.os.Parcelable;
-public class StopRecordingParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class StopRecordingParams extends AidlParams {
public StopRecordingParams() {
@@ -24,19 +25,4 @@ public class StopRecordingParams implements Parcelable {
return new StopRecordingParams[size];
}
};
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
-
- }
-
- private void readFromParcel(Parcel in) {
-
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/note/TakePhotoNoteParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/note/TakePhotoNoteParams.aidl
new file mode 100644
index 0000000000..a961f2754a
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/note/TakePhotoNoteParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.note;
+
+parcelable TakePhotoNoteParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/note/TakePhotoNoteParams.java b/OsmAnd-api/src/net/osmand/aidlapi/note/TakePhotoNoteParams.java
index 254516e080..ea255dddb1 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/note/TakePhotoNoteParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/note/TakePhotoNoteParams.java
@@ -1,9 +1,11 @@
-package net.osmand.aidl.note;
+package net.osmand.aidlapi.note;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
-public class TakePhotoNoteParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class TakePhotoNoteParams extends AidlParams {
private double latitude;
private double longitude;
@@ -38,19 +40,14 @@ public class TakePhotoNoteParams implements Parcelable {
}
@Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeDouble(latitude);
- out.writeDouble(longitude);
- }
-
- private void readFromParcel(Parcel in) {
- latitude = in.readDouble();
- longitude = in.readDouble();
+ public void writeToBundle(Bundle bundle) {
+ bundle.putDouble("latitude", latitude);
+ bundle.putDouble("longitude", longitude);
}
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ latitude = bundle.getDouble("latitude");
+ longitude = bundle.getDouble("longitude");
}
-
-}
+} \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/plugins/PluginParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/plugins/PluginParams.aidl
index beff693f5a..3005c31269 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/plugins/PluginParams.aidl
+++ b/OsmAnd-api/src/net/osmand/aidlapi/plugins/PluginParams.aidl
@@ -1,5 +1,5 @@
// PluginParams.aidl
-package net.osmand.aidl.plugins;
+package net.osmand.aidlapi.plugins;
parcelable PluginParams;
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/plugins/PluginParams.java b/OsmAnd-api/src/net/osmand/aidlapi/plugins/PluginParams.java
index 028bd8676a..7c61e6a0d8 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/plugins/PluginParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/plugins/PluginParams.java
@@ -1,9 +1,11 @@
-package net.osmand.aidl.plugins;
+package net.osmand.aidlapi.plugins;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
-public class PluginParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class PluginParams extends AidlParams {
private String pluginId;
private int newState; //0- off, 1 - on
@@ -22,19 +24,19 @@ public class PluginParams implements Parcelable {
}
protected PluginParams(Parcel in) {
- pluginId = in.readString();
- newState = in.readInt();
+ readFromParcel(in);
}
@Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(pluginId);
- dest.writeInt(newState);
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("pluginId", pluginId);
+ bundle.putInt("newState", newState);
}
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ pluginId = bundle.getString("pluginId");
+ newState = bundle.getInt("newState");
}
public static final Creator<PluginParams> CREATOR = new Creator<PluginParams>() {
@@ -48,4 +50,4 @@ public class PluginParams implements Parcelable {
return new PluginParams[size];
}
};
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/search/SearchParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/search/SearchParams.aidl
new file mode 100644
index 0000000000..3fd420433b
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/search/SearchParams.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.search;
+
+parcelable SearchParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/search/SearchParams.java b/OsmAnd-api/src/net/osmand/aidlapi/search/SearchParams.java
index 303cecb25c..5bbecfb488 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/search/SearchParams.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/search/SearchParams.java
@@ -1,9 +1,11 @@
-package net.osmand.aidl.search;
+package net.osmand.aidlapi.search;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
-public class SearchParams implements Parcelable {
+import net.osmand.aidlapi.AidlParams;
+
+public class SearchParams extends AidlParams {
public static final int SEARCH_TYPE_POI = 1;
public static final int SEARCH_TYPE_ADDRESS = 2;
@@ -66,26 +68,22 @@ public class SearchParams implements Parcelable {
}
@Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(searchQuery);
- out.writeInt(searchType);
- out.writeDouble(latitude);
- out.writeDouble(longitude);
- out.writeInt(radiusLevel);
- out.writeInt(totalLimit);
- }
-
- private void readFromParcel(Parcel in) {
- searchQuery = in.readString();
- searchType = in.readInt();
- latitude = in.readDouble();
- longitude = in.readDouble();
- radiusLevel = in.readInt();
- totalLimit = in.readInt();
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("searchQuery", searchQuery);
+ bundle.putInt("searchType", searchType);
+ bundle.putDouble("latitude", latitude);
+ bundle.putDouble("longitude", longitude);
+ bundle.putInt("radiusLevel", radiusLevel);
+ bundle.putInt("totalLimit", totalLimit);
}
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ searchQuery = bundle.getString("searchQuery");
+ searchType = bundle.getInt("searchType");
+ latitude = bundle.getDouble("latitude");
+ longitude = bundle.getDouble("longitude");
+ radiusLevel = bundle.getInt("radiusLevel");
+ totalLimit = bundle.getInt("totalLimit");
}
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/search/SearchResult.aidl b/OsmAnd-api/src/net/osmand/aidlapi/search/SearchResult.aidl
new file mode 100644
index 0000000000..54b7487a72
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/search/SearchResult.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.search;
+
+parcelable SearchResult; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/search/SearchResult.java b/OsmAnd-api/src/net/osmand/aidlapi/search/SearchResult.java
index ef28063355..863b90b073 100644
--- a/OsmAnd-telegram/src/net/osmand/aidl/search/SearchResult.java
+++ b/OsmAnd-api/src/net/osmand/aidlapi/search/SearchResult.java
@@ -1,12 +1,14 @@
-package net.osmand.aidl.search;
+package net.osmand.aidlapi.search;
+import android.os.Bundle;
import android.os.Parcel;
-import android.os.Parcelable;
+
+import net.osmand.aidlapi.AidlParams;
import java.util.ArrayList;
import java.util.List;
-public class SearchResult implements Parcelable {
+public class SearchResult extends AidlParams {
private double latitude;
private double longitude;
@@ -15,18 +17,18 @@ public class SearchResult implements Parcelable {
private String localTypeName;
private String alternateName;
- private List<String> otherNames = new ArrayList<>();
+ private ArrayList<String> otherNames = new ArrayList<>();
public SearchResult(double latitude, double longitude, String localName, String localTypeName,
- String alternateName, List<String> otherNames) {
+ String alternateName, List<String> otherNames) {
this.latitude = latitude;
this.longitude = longitude;
this.localName = localName;
this.localTypeName = localTypeName;
this.alternateName = alternateName;
if (otherNames != null) {
- this.otherNames = otherNames;
+ this.otherNames.addAll(otherNames);
}
}
@@ -71,26 +73,22 @@ public class SearchResult implements Parcelable {
}
@Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeDouble(latitude);
- out.writeDouble(longitude);
- out.writeString(localName);
- out.writeString(localTypeName);
- out.writeString(alternateName);
- out.writeStringList(otherNames);
- }
-
- private void readFromParcel(Parcel in) {
- latitude = in.readDouble();
- longitude = in.readDouble();
- localName = in.readString();
- localTypeName = in.readString();
- alternateName = in.readString();
- in.readStringList(otherNames);
+ public void writeToBundle(Bundle bundle) {
+ bundle.putDouble("latitude", latitude);
+ bundle.putDouble("longitude", longitude);
+ bundle.putString("localName", localName);
+ bundle.putString("localTypeName", localTypeName);
+ bundle.putString("alternateName", alternateName);
+ bundle.putStringArrayList("otherNames", otherNames);
}
@Override
- public int describeContents() {
- return 0;
+ protected void readFromBundle(Bundle bundle) {
+ latitude = bundle.getDouble("latitude");
+ longitude = bundle.getDouble("longitude");
+ localName = bundle.getString("localName");
+ localTypeName = bundle.getString("localTypeName");
+ alternateName = bundle.getString("alternateName");
+ otherNames = bundle.getStringArrayList("otherName");
}
-}
+} \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/tiles/ASqliteDbFile.aidl b/OsmAnd-api/src/net/osmand/aidlapi/tiles/ASqliteDbFile.aidl
new file mode 100644
index 0000000000..59135d4167
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/tiles/ASqliteDbFile.aidl
@@ -0,0 +1,3 @@
+package net.osmand.aidlapi.tiles;
+
+parcelable ASqliteDbFile; \ No newline at end of file
diff --git a/OsmAnd-api/src/net/osmand/aidlapi/tiles/ASqliteDbFile.java b/OsmAnd-api/src/net/osmand/aidlapi/tiles/ASqliteDbFile.java
new file mode 100644
index 0000000000..1ea8c70e60
--- /dev/null
+++ b/OsmAnd-api/src/net/osmand/aidlapi/tiles/ASqliteDbFile.java
@@ -0,0 +1,70 @@
+package net.osmand.aidlapi.tiles;
+
+import android.os.Bundle;
+import android.os.Parcel;
+import android.support.annotation.NonNull;
+
+import net.osmand.aidlapi.AidlParams;
+
+public class ASqliteDbFile extends AidlParams {
+
+ private String fileName;
+ private long modifiedTime;
+ private long fileSize;
+ private boolean active;
+
+ public ASqliteDbFile(@NonNull String fileName, long modifiedTime, long fileSize, boolean active) {
+ this.fileName = fileName;
+ this.modifiedTime = modifiedTime;
+ this.fileSize = fileSize;
+ this.active = active;
+ }
+
+ public ASqliteDbFile(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public static final Creator<ASqliteDbFile> CREATOR = new Creator<ASqliteDbFile>() {
+ @Override
+ public ASqliteDbFile createFromParcel(Parcel in) {
+ return new ASqliteDbFile(in);
+ }
+
+ @Override
+ public ASqliteDbFile[] newArray(int size) {
+ return new ASqliteDbFile[size];
+ }
+ };
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public long getModifiedTime() {
+ return modifiedTime;
+ }
+
+ public long getFileSize() {
+ return fileSize;
+ }
+
+ public boolean isActive() {
+ return active;
+ }
+
+ @Override
+ public void writeToBundle(Bundle bundle) {
+ bundle.putString("fileName", fileName);
+ bundle.putLong("modifiedTime", modifiedTime);
+ bundle.putLong("fileSize", fileSize);
+ bundle.putBoolean("active", active);
+ }
+
+ @Override
+ protected void readFromBundle(Bundle bundle) {
+ fileName = bundle.getString("fileName");
+ modifiedTime = bundle.getLong("modifiedTime");
+ fileSize = bundle.getLong("fileSize");
+ active = bundle.getBoolean("active");
+ }
+} \ No newline at end of file
diff --git a/OsmAnd-java/src/main/java/net/osmand/render/RenderingRuleStorageProperties.java b/OsmAnd-java/src/main/java/net/osmand/render/RenderingRuleStorageProperties.java
index e4d65a7386..7b785c4e5e 100644
--- a/OsmAnd-java/src/main/java/net/osmand/render/RenderingRuleStorageProperties.java
+++ b/OsmAnd-java/src/main/java/net/osmand/render/RenderingRuleStorageProperties.java
@@ -10,6 +10,7 @@ public class RenderingRuleStorageProperties {
public static final String UI_CATEGORY_HIDDEN = "ui_hidden";
public static final String A_ENGINE_V1 = "engine_v1";
public static final String A_APP_MODE= "appMode";
+ public static final String A_BASE_APP_MODE = "baseAppMode";
public static final String A_DEFAULT_COLOR = "defaultColor";
public static final String A_SHADOW_RENDERING = "shadowRendering";
diff --git a/OsmAnd-java/src/main/java/net/osmand/router/RouteResultPreparation.java b/OsmAnd-java/src/main/java/net/osmand/router/RouteResultPreparation.java
index a729fc3345..a26220193c 100644
--- a/OsmAnd-java/src/main/java/net/osmand/router/RouteResultPreparation.java
+++ b/OsmAnd-java/src/main/java/net/osmand/router/RouteResultPreparation.java
@@ -1026,7 +1026,7 @@ public class RouteResultPreparation {
return MAX_SPEAK_PRIORITY;
}
if (highway.endsWith("_link") || highway.endsWith("unclassified") || highway.endsWith("road")
- || highway.endsWith("living_street") || highway.endsWith("residential") ) {
+ || highway.endsWith("living_street") || highway.endsWith("residential") || highway.endsWith("tertiary") ) {
return 1;
}
return 0;
diff --git a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java
index 2d10ecd2e7..8857ec035e 100644
--- a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java
+++ b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java
@@ -872,9 +872,11 @@ public class SearchUICore {
if (st1 != st2) {
return Algorithms.compare(st1, st2);
}
+ String localeName1 = o1.localeName == null ? "" : o1.localeName;
+ String localeName2 = o2.localeName == null ? "" : o2.localeName;
if (o1.parentSearchResult != null && o2.parentSearchResult != null) {
if (o1.parentSearchResult == o2.parentSearchResult) {
- int cmp = collator.compare(o1.localeName, o2.localeName);
+ int cmp = collator.compare(localeName1, localeName2);
if (cmp != 0) {
return cmp;
}
@@ -883,7 +885,7 @@ public class SearchUICore {
double s2 = o2.getSearchDistance(loc, 1);
return Double.compare(s1, s2);
}
- int cmp = collator.compare(o1.localeName, o2.localeName);
+ int cmp = collator.compare(localeName1, localeName2);
if (cmp != 0) {
return cmp;
}
@@ -893,12 +895,12 @@ public class SearchUICore {
Amenity a2 = (Amenity) o2.object;
String type1 = a1.getType().getKeyName();
String type2 = a2.getType().getKeyName();
- String subType1 = a1.getSubType();
- String subType2 = a2.getSubType();
cmp = collator.compare(type1, type2);
if (cmp != 0) {
return cmp;
}
+ String subType1 = a1.getSubType() == null ? "" : a1.getSubType();
+ String subType2 = a2.getSubType() == null ? "" : a2.getSubType();
cmp = collator.compare(subType1, subType2);
if (cmp != 0) {
return cmp;
diff --git a/OsmAnd-java/src/main/java/net/osmand/util/OpeningHoursParser.java b/OsmAnd-java/src/main/java/net/osmand/util/OpeningHoursParser.java
index f4475cb464..d680e89407 100644
--- a/OsmAnd-java/src/main/java/net/osmand/util/OpeningHoursParser.java
+++ b/OsmAnd-java/src/main/java/net/osmand/util/OpeningHoursParser.java
@@ -374,9 +374,16 @@ public class OpeningHoursParser {
String openingTime = "";
ArrayList<OpeningHoursRule> rules = getRules(sequenceIndex);
cal.add(Calendar.DAY_OF_MONTH, 1);
+ Calendar openingTimeCal = null;
for (OpeningHoursRule r : rules) {
if (r.containsDay(cal) && r.containsMonth(cal)) {
- openingTime = r.getTime(cal, false, WITHOUT_TIME_LIMIT, true);
+ if (r.containsDay(cal) && r.containsMonth(cal)) {
+ String time = r.getTime(cal, false, WITHOUT_TIME_LIMIT, true);
+ if (Algorithms.isEmpty(time) || openingTimeCal == null || cal.before(openingTimeCal)) {
+ openingTime = time;
+ }
+ openingTimeCal = (Calendar) cal.clone();
+ }
}
}
return openingTime;
@@ -1622,7 +1629,8 @@ public class OpeningHoursParser {
TOKEN_HOLIDAY(7),
TOKEN_DAY_WEEK(7),
TOKEN_HOUR_MINUTES (8),
- TOKEN_OFF_ON(9);
+ TOKEN_OFF_ON(9),
+ TOKEN_COMMENT(10);
public final int ord;
@@ -1666,22 +1674,8 @@ public class OpeningHoursParser {
}
public static void parseRuleV2(String r, int sequenceIndex, List<OpeningHoursRule> rules) {
- String comment = null;
- int q1Index = r.indexOf('"');
- if (q1Index >= 0) {
- int q2Index = r.indexOf('"', q1Index + 1);
- if (q2Index >= 0) {
- comment = r.substring(q1Index + 1, q2Index);
- String a = r.substring(0, q1Index);
- String b = "";
- if (r.length() > q2Index + 1) {
- b = r.substring(q2Index + 1);
- }
- r = a + b;
- }
- }
- r = r.toLowerCase().trim();
-
+ r = r.trim();
+
final String[] daysStr = new String[]{"mo", "tu", "we", "th", "fr", "sa", "su"};
final String[] monthsStr = new String[]{"jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"};
final String[] holidayStr = new String[]{"ph", "sh", "easter"};
@@ -1690,10 +1684,9 @@ public class OpeningHoursParser {
String endOfDay = "24:00";
r = r.replace('(', ' '); // avoid "(mo-su 17:00-20:00"
r = r.replace(')', ' ');
- String localRuleString = r.replaceAll("sunset", sunset).replaceAll("sunrise", sunrise)
+ String localRuleString = r.replaceAll("(?i)sunset", sunset).replaceAll("(?i)sunrise", sunrise)
.replaceAll("\\+", "-" + endOfDay);
BasicOpeningHourRule basic = new BasicOpeningHourRule(sequenceIndex);
- basic.setComment(comment);
boolean[] days = basic.getDays();
boolean[] months = basic.getMonths();
//boolean[][] dayMonths = basic.getDayMonths();
@@ -1707,6 +1700,8 @@ public class OpeningHoursParser {
}
List<Token> tokens = new ArrayList<>();
int startWord = 0;
+ StringBuilder commentStr = new StringBuilder();
+ boolean comment = false;
for (int i = 0; i <= localRuleString.length(); i++) {
char ch = i == localRuleString.length() ? ' ' : localRuleString.charAt(i);
boolean delimiter = false;
@@ -1719,11 +1714,25 @@ public class OpeningHoursParser {
del = new Token(TokenType.TOKEN_DASH, "-");
} else if (ch == ',') {
del = new Token(TokenType.TOKEN_COMMA, ",");
+ } else if (ch == '"') {
+ if (comment) {
+ if (commentStr.length() > 0) {
+ tokens.add(new Token(TokenType.TOKEN_COMMENT, commentStr.toString()));
+ }
+ startWord = i + 1;
+ commentStr.setLength(0);
+ comment = false;
+ } else {
+ comment = true;
+ continue;
+ }
}
- if (delimiter || del != null) {
+ if (comment) {
+ commentStr.append(ch);
+ } else if (delimiter || del != null) {
String wrd = localRuleString.substring(startWord, i).trim();
- if(wrd.length() > 0) {
- tokens.add(new Token(TokenType.TOKEN_UNKNOWN, wrd));
+ if (wrd.length() > 0) {
+ tokens.add(new Token(TokenType.TOKEN_UNKNOWN, wrd.toLowerCase()));
}
startWord = i + 1;
if (del != null) {
@@ -1921,6 +1930,11 @@ public class OpeningHoursParser {
if (l[0] != null && l[0].mainNumber == 0) {
basic.off = true;
}
+ } else if (currentParse == TokenType.TOKEN_COMMENT) {
+ Token[] l = listOfPairs.get(0);
+ if (l[0] != null && !Algorithms.isEmpty(l[0].text)) {
+ basic.comment = l[0].text;
+ }
} else if (currentParse == TokenType.TOKEN_YEAR) {
Token[] l = listOfPairs.get(0);
if (l[0] != null && l[0].mainNumber > 1000) {
diff --git a/OsmAnd-java/src/test/java/net/osmand/util/OpeningHoursParserTest.java b/OsmAnd-java/src/test/java/net/osmand/util/OpeningHoursParserTest.java
index 2791874152..a0c223f489 100644
--- a/OsmAnd-java/src/test/java/net/osmand/util/OpeningHoursParserTest.java
+++ b/OsmAnd-java/src/test/java/net/osmand/util/OpeningHoursParserTest.java
@@ -117,7 +117,11 @@ public class OpeningHoursParserTest {
try {
Locale.setDefault(Locale.forLanguageTag("en-US"));
- OpeningHours hours = parseOpenedHours("2019 Apr 1 - 2020 Apr 1");
+ OpeningHours hours = parseOpenedHours("Mo-Fr 08:00-12:30, Mo-We 12:30-16:30 \"Sur rendez-vous\", Fr 12:30-15:30 \"Sur rendez-vous\"");
+ System.out.println(hours);
+ testInfo("13.10.2019 18:00", hours, "Will open tomorrow at 08:00");
+
+ hours = parseOpenedHours("2019 Apr 1 - 2020 Apr 1");
System.out.println(hours);
testOpened("01.04.2018 15:00", hours, false);
testOpened("01.04.2019 15:00", hours, true);
diff --git a/OsmAnd-telegram/build.gradle b/OsmAnd-telegram/build.gradle
index 4b215af1ad..f2152adba9 100644
--- a/OsmAnd-telegram/build.gradle
+++ b/OsmAnd-telegram/build.gradle
@@ -138,6 +138,7 @@ afterEvaluate {
dependencies {
implementation project(path: ':OsmAnd-java', configuration: 'android')
implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation project(':OsmAnd-api')
implementation( "org.jetbrains.kotlin:kotlin-stdlib:1.2.71") {
exclude group: 'org.jetbrains', module: 'annotations'
diff --git a/OsmAnd-telegram/res/values-ast/strings.xml b/OsmAnd-telegram/res/values-ast/strings.xml
index 044db09a7f..a776c3fd4f 100644
--- a/OsmAnd-telegram/res/values-ast/strings.xml
+++ b/OsmAnd-telegram/res/values-ast/strings.xml
@@ -158,4 +158,66 @@
<string name="shared_string_date">Data</string>
<string name="altitude">Altitú</string>
<string name="shared_string_apply">Aplicar</string>
+ <string name="time_on_the_move">Tiempu de movimientu</string>
+ <string name="open_in_osmand">Amosar n\'OsmAnd</string>
+ <string name="last_updated_location">Últimu allugamientu anováu:</string>
+ <string name="successfully_sent_and_updated">Unviada y anovada correutamente</string>
+ <string name="not_possible_to_send_to_telegram_chats">Nun se puede unviar a les charres de Telegram:</string>
+ <string name="sending_location_messages">Unviando l\'alluganientu</string>
+ <string name="gps_points_in_buffer">unviaos (%1$d nel búfer)</string>
+ <string name="points_size">%1$d puntos</string>
+ <string name="shared_string_collected">Collechaos</string>
+ <string name="gps_points">Puntos GPS</string>
+ <string name="shared_string_sent">Unviao</string>
+ <string name="please_update_osmand">Actualiza OsmAnd pa ver los datos nel mapa</string>
+ <string name="shared_string_update">Anovar</string>
+ <string name="shared_string_telegram">Telegram</string>
+ <string name="privacy_policy_use_telegram">Telegram (l\'aplicación de mensaxería) emplégase pa coneutar y comunicase cola xente.</string>
+ <string name="privacy_policy_telegram_client">El rastrexador d\'OsmAnd ye unu de los clientes qu\'emplega la plataforma abierta Telegram. Los tos contautos pueden emplegar cualquier otru cliente de Telegram.</string>
+ <string name="privacy_policy_agree">Al primir siguir, aceutes les condiciones de la Política d\'intimidá de Telegram y la Política d\'intimidá d\'OsmAnd.</string>
+ <string name="shared_string_accept">Aceutar</string>
+ <string name="telegram_privacy_policy">Política d\'intimidá de Telegram</string>
+ <string name="osmand_privacy_policy">Política d\'intimidá d\'OsmAnd</string>
+ <string name="received_gps_points">Puntos GPX recibíos: %1$s</string>
+ <string name="shared_string_appearance">Apariencia</string>
+ <string name="show_gps_points_descr">Amosar la cantidá de puntos GPS recibíos y unviaos.</string>
+ <string name="shared_string_ok">Aceutar</string>
+ <string name="disable_monitoring">Desactivar el siguimientu</string>
+ <string name="location_recording_enabled">Grabación del allugamientu activada</string>
+ <string name="app_name_short">Rastrexador d\'OsmAnd</string>
+ <string name="search_contacts">Guetar contautos</string>
+ <string name="search_contacts_descr">Guetar ente los tos grupos y contautos.</string>
+ <string name="type_contact_or_group_name">Escribe\'l nome del contautu o grupu</string>
+ <string name="shared_string_search">Guetar</string>
+ <string name="direction">Direición</string>
+ <string name="precision">Precisión</string>
+ <string name="bearing">Rumbu</string>
+ <string name="proxy_key">Clave</string>
+ <string name="proxy_password">Contraseña</string>
+ <string name="proxy_username">Nome d\'usuariu</string>
+ <string name="proxy_credentials">Credenciales</string>
+ <string name="proxy_port">Puertu</string>
+ <string name="proxy_server">Sirvidor</string>
+ <string name="shared_string_connection">Conexón</string>
+ <string name="shared_string_enable">Activar</string>
+ <string name="proxy_type">Tipu de proxy</string>
+ <string name="proxy_connected">Coneutáu</string>
+ <string name="proxy_disconnected">Desconeutáu</string>
+ <string name="proxy_settings">Configuración de proxy</string>
+ <string name="proxy">Proxy</string>
+ <string name="privacy">Intimidá</string>
+ <string name="shared_string_select">Esbillar</string>
+ <string name="min_logging_distance">Distancia mínima de grabación</string>
+ <string name="min_logging_distance_descr">Filtru: distancia mínima pa grabar un puntu nuevu</string>
+ <string name="min_logging_accuracy">Precisión mínima de grabación</string>
+ <string name="min_logging_accuracy_descr">Filtru: nun grabar mentanto nun se llogre esta precisión</string>
+ <string name="min_logging_speed">Velocidá mínima de grabación</string>
+ <string name="min_logging_speed_descr">Filtru: nun grabar per baxo de la velocidá seleicionada</string>
+ <string name="gpx_settings">Configuración GPX</string>
+ <string name="timeline_no_data_descr">Nun recoyimos datos pal día seleicionáu</string>
+ <string name="timeline_no_data">Nun hai datos</string>
+ <string name="shared_string_end">Final</string>
+ <string name="shared_string_start">Principiu</string>
+ <string name="set_time_timeline_descr">Seleiciona la hora de visualización</string>
+ <string name="start_end_date">Data d\'Aniciu — Fin</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd-telegram/res/values-eu/strings.xml b/OsmAnd-telegram/res/values-eu/strings.xml
index 82f7f206bb..260e4522bf 100644
--- a/OsmAnd-telegram/res/values-eu/strings.xml
+++ b/OsmAnd-telegram/res/values-eu/strings.xml
@@ -164,4 +164,26 @@
<string name="gpx_settings">GPX ezarpenak</string>
<string name="timeline_no_data_descr">Ez dugu bildutako daturik hautatutako egunarentzat</string>
<string name="timeline_no_data">Daturik ez</string>
+ <string name="received_gps_points">Jasotako GPX puntuak: %1$s</string>
+ <string name="show_gps_points_descr">Erakutsi bildutako eta bidalitako GPS puntu kopurua.</string>
+ <string name="please_update_osmand">Eguneratu OsmAnd mapan datuak ikusteko</string>
+ <string name="gps_points_in_buffer">bidalita (%1$d tarteko memorian)</string>
+ <string name="points_size">%1$d puntu</string>
+ <string name="shared_string_collected">Bilduta</string>
+ <string name="monitoring_is_enabled">Monitorizazioa gaituta dago</string>
+ <string name="monitoring_is_disabled">Monitorizazioa desgaituta dago</string>
+ <string name="time_on_the_move">Denbora mugimenduan</string>
+ <string name="average_altitude">Batezbesteko garaiera</string>
+ <string name="average_speed">Batezbesteko abiadura</string>
+ <string name="send_location_as">Bidali kokapena honela</string>
+ <string name="send_location_as_descr">Hautatu nola ikusiko diren zure kokapena daramaten mezuak.</string>
+ <string name="enter_another_device_name">Hautatu dagoeneko erabili ez duzun izen bat</string>
+ <string name="device_added_successfully">%1$s gehituta.</string>
+ <string name="enter_device_name_description">Eman izena zure gailuari gehienez 200 karaktere erabilita.</string>
+ <string name="shared_string_off">Desgaituta</string>
+ <string name="shared_string_end">Amaiera</string>
+ <string name="shared_string_start">Hasiera</string>
+ <string name="shared_string_apply">Aplikatu</string>
+ <string name="set_time_timeline_descr">Hautatu bistaratzeko denbora</string>
+ <string name="start_end_date">Hasiera — Amaiera data</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd-telegram/res/values-fa/strings.xml b/OsmAnd-telegram/res/values-fa/strings.xml
index 9cf5642cf6..2528e3b201 100644
--- a/OsmAnd-telegram/res/values-fa/strings.xml
+++ b/OsmAnd-telegram/res/values-fa/strings.xml
@@ -22,7 +22,7 @@
<string name="shared_string_status">وضعیت</string>
<string name="shared_string_close">بستن</string>
<string name="shared_string_hide">نشان نده</string>
- <string name="shared_string_disable">غیرفعال‌کردن</string>
+ <string name="shared_string_disable">غیرفعال</string>
<string name="shared_string_save">ذخیره</string>
<string name="shared_string_name">نام</string>
<string name="shared_string_sort">مرتب‌سازی</string>
@@ -64,7 +64,7 @@
<string name="shared_string_ok">خُب</string>
<string name="shared_string_search">جست‌وجو</string>
<string name="altitude">ارتفاع</string>
- <string name="shared_string_enable">فعال‌کردن</string>
+ <string name="shared_string_enable">فعال</string>
<string name="shared_string_select">انتخاب</string>
<string name="shared_string_apply">به‌کارگیری</string>
<string name="nm_h">nmi/h</string>
diff --git a/OsmAnd-telegram/res/values-pt-rPT/strings.xml b/OsmAnd-telegram/res/values-pt-rPT/strings.xml
index a6b3daec93..7e854f67e4 100644
--- a/OsmAnd-telegram/res/values-pt-rPT/strings.xml
+++ b/OsmAnd-telegram/res/values-pt-rPT/strings.xml
@@ -1,2 +1,252 @@
<?xml version="1.0" encoding="utf-8"?>
-<resources></resources> \ No newline at end of file
+<resources>
+ <string name="searching_for_gps">Posicionando…</string>
+ <string name="si_nm_h">Milhas náuticas por hora (nó)</string>
+ <string name="install_osmand_dialog_message">Você precisa instalar a versão gratuita ou paga do OsmAnd primeiro</string>
+ <string name="shared_string_telegram">Telegram</string>
+ <string name="shared_string_login">Entrar</string>
+ <string name="start_end_date">Data de início - fim</string>
+ <string name="get_telegram_title">Registro no Telegram</string>
+ <string name="gps_not_available">Por favor, ligue \"Localização\" nas configurações do sistema</string>
+ <string name="timeline_no_data">Sem dados</string>
+ <string name="sending_location_messages">enviando localização</string>
+ <string name="location_sharing_description">Selecione os contatos e grupos com os quais você deseja compartilhar sua localização.</string>
+ <string name="waiting_for_response_from_telegram">Aguardando resposta do Telegram</string>
+ <string name="connected_account">Conta conectada</string>
+ <string name="osmand_privacy_policy">Política de privacidade do OsmAnd</string>
+ <string name="minutes_format">%1$d m</string>
+ <string name="last_available_location">Última localização disponível</string>
+ <string name="app_name_short">OsmAnd Tracker</string>
+ <string name="privacy_policy_telegram_client">OsmAnd tracker é um dos clientes que usam a Plataforma aberta do Telegram . Seus contatos podem usar qualquer outro cliente Telegram.</string>
+ <string name="si_km_m">Quilômetros/metros</string>
+ <string name="in_time">no %1$s</string>
+ <string name="shared_string_text">Texto</string>
+ <string name="shared_string_welcome">Boas vindas</string>
+ <string name="active_chats">Bate-papos ativos</string>
+ <string name="si_min_km">Minutos por quilômetro</string>
+ <string name="background_work">Funcionamento em segundo plano</string>
+ <string name="location_history_desc">Ocultar contatos que não foram movidos em um determinado momento.</string>
+ <string name="gpx_settings">Configurações de GPX</string>
+ <string name="type_contact_or_group_name">Digite o nome do contato ou do grupo</string>
+ <string name="min_mile">min/m</string>
+ <string name="password_descr">Senha do telegrama</string>
+ <string name="last_updated_location">Última localização atualizada:</string>
+ <string name="stale_location">Parado</string>
+ <string name="show_gps_points_descr">Mostrar quantidade de pontos de GPS coletados e enviados.</string>
+ <string name="already_registered_in_telegram">Você precisa de uma conta e número de telefone registrados no Telegram</string>
+ <string name="min_logging_speed_descr">Filtro: sem registro abaixo da velocidade selecionada</string>
+ <string name="shared_string_sort_by">Ordenar por</string>
+ <string name="shared_string_sent">Enviado</string>
+ <string name="min_km">min/km</string>
+ <string name="show_gps_points">Mostrar pontos de GPS</string>
+ <string name="successfully_sent_and_updated">Enviado e atualizado com sucesso</string>
+ <string name="send_location_as_descr">Escolha como as mensagens com sua localização serão exibidas.</string>
+ <string name="shared_string_connection">Conexão</string>
+ <string name="share_location_as_description">Se você deseja conectar vários aparelhos a uma conta de telegrama, é necessário usar um aparelho diferente para compartilhar sua localização.</string>
+ <string name="proxy_password">Palavra-passe</string>
+ <string name="shared_string_authorization">Autorização</string>
+ <string name="shared_string_select">Selecionar</string>
+ <string name="set_time">Definir tempo</string>
+ <string name="shared_string_enable">Ativar</string>
+ <string name="shared_string_bot">Robô</string>
+ <string name="average_altitude">Altitude média</string>
+ <string name="start_date">Data de início</string>
+ <string name="live_now_description">Contatos e grupos compartilhando o local para você.</string>
+ <string name="shared_string_all">Todos</string>
+ <string name="received_gps_points">Pontos GPX recebidos: %1$s</string>
+ <string name="shared_string_appearance">Aparência</string>
+ <string name="shared_string_name">Nome</string>
+ <string name="by_distance">Pela distância</string>
+ <string name="turn_off_location_sharing">Desativar o compartilhamento de local</string>
+ <string name="shared_string_collected">Coletado</string>
+ <string name="enter_another_device_name">Escolha um nome que você ainda não usou</string>
+ <string name="shared_string_add">Adicionar</string>
+ <string name="show_users_on_map">Mostrar utilitadoes no mapa</string>
+ <string name="enter_authentication_code">Digite o código de autenticação</string>
+ <string name="min_logging_accuracy">Precisão mínima de registro</string>
+ <string name="live_now">Ao vivo agora</string>
+ <string name="search_contacts">Pesquisar contatos</string>
+ <string name="start_location_sharing">Compartilhar localização</string>
+ <string name="telegram_privacy_policy">Política de privacidade do Telegram</string>
+ <string name="osmand_connect">Conectar OsmAnd</string>
+ <string name="get_telegram_description_continue">Por favor, instale o Telegram e configure uma conta.</string>
+ <string name="si_kmh">Quilômetros por hora</string>
+ <string name="shared_string_password">Senha</string>
+ <string name="min_logging_distance">Distância mínima de registro</string>
+ <string name="shared_string_save">Salvar</string>
+ <string name="shared_string_start">Iniciar</string>
+ <string name="add_device">Adicionar aparelho</string>
+ <string name="error_adding_new_device">Não foi possível adicionar novo aparelho</string>
+ <string name="timeline">Cronologia</string>
+ <string name="proxy_connected">Conectado</string>
+ <string name="m">m</string>
+ <string name="stop_sharing_all">O compartilhamento está ativado (desativado)</string>
+ <string name="do_not_have_telegram">Eu não tenho conta Telegram</string>
+ <string name="get_telegram_account_first">Você precisa de uma conta do Telegram para usar o compartilhamento de local.</string>
+ <string name="disable_all_sharing">Desativar todo o compartilhamento</string>
+ <string name="sharing_status">Status de compartilhamento</string>
+ <string name="shared_string_end">Fim</string>
+ <string name="send_my_location_desc">Defina o intervalo mínimo para o compartilhamento de local.</string>
+ <string name="logout_help_desc">Como desativar o OsmAnd Tracker para Telegram</string>
+ <string name="monitoring_is_disabled">Monitoramento está desativado</string>
+ <string name="shared_string_later">Mais tarde</string>
+ <string name="my_location">Minha localização</string>
+ <string name="install_osmand">Instalar OsmAnd</string>
+ <string name="privacy_policy_use_telegram">Telegrama (o aplicativo de mensagens) é usado para conectar e se comunicar com as pessoas.</string>
+ <string name="not_possible_to_send_to_telegram_chats">Não é possível enviar para bate-papo do Telegram:</string>
+ <string name="not_sent_yet">Ainda não enviado</string>
+ <string name="points_size">%1$d pontos</string>
+ <string name="welcome_descr">
+ <b>OsmAnd Tracker</b> permite que partilhe a sua localização e veja a dos outros no OsmAnd.<br/>
+ <br/>O app usa a API Telegram e você precisa de uma conta Telegram.</string>
+ <string name="min_logging_distance_descr">Filtro: distância mínima para registrar um novo ponto</string>
+ <string name="device_name_cannot_be_empty">O nome do aparelho não pode estar vazio</string>
+ <string name="yard">yd</string>
+ <string name="my_location_search_hint">Pesquisa: Grupo ou contato</string>
+ <string name="device_name">Nome do aparelho</string>
+ <string name="device_added_successfully">%1$s adicionado.</string>
+ <string name="proxy_port">Port</string>
+ <string name="precision">Precisão</string>
+ <string name="expire_at">Expira</string>
+ <string name="send_location_as">Enviar localização como</string>
+ <string name="shared_string_exit">Sair</string>
+ <string name="no_location_permission">O aplicativo não tem permissão para acessar os dados de localização.</string>
+ <string name="si_mph">Milhas por hora</string>
+ <string name="share_location_as_description_second_line">Pode criar e visualizar o ID do aparelho no cliente de telegrama usando o bot de bate-papo %1$s. %2$s</string>
+ <string name="shared_string_back">Voltar</string>
+ <string name="enter_code">Digite o código</string>
+ <string name="open_osmand">Abrir OsmAnd</string>
+ <string name="shared_string_apply">Aplicar</string>
+ <string name="phone_number_descr">Número de telefone no formato internacional</string>
+ <string name="shared_string_update">Atualizar</string>
+ <string name="m_s">m/s</string>
+ <string name="osmand_service_descr">OsmAnd Tracker é executado em segundo plano com o ecrã desligado.</string>
+ <string name="gps_points_in_buffer">enviado (%1$d em buffer)</string>
+ <string name="location_recording_enabled">Gravação de localização ativada</string>
+ <string name="hours_format">%1$d h</string>
+ <string name="shared_string_hide">Ocultar</string>
+ <string name="nm">mn</string>
+ <string name="shared_string_accept">Aceitar</string>
+ <string name="closing">Fechando</string>
+ <string name="location_history">Histórico de localização</string>
+ <string name="osmand_service">Modo em segundo plano</string>
+ <string name="shared_string_ok">Ok</string>
+ <string name="shared_string_map">Mapa</string>
+ <string name="location_service_no_gps_available">Selecione um dos provedores de localização para compartilhar sua localização.</string>
+ <string name="proxy_settings">Configurações de proxy</string>
+ <string name="search_contacts_descr">Pesquise em todos os seus grupos e contatos.</string>
+ <string name="mile">mi</string>
+ <string name="battery_optimization_description">Desative a otimização da bateria do OsmAnd Tracker para que ele não seja desligado repentinamente quando estiver em segundo plano.</string>
+ <string name="not_found_yet">Ainda não encontrado</string>
+ <string name="map_and_text">Mapa e texto</string>
+ <string name="nm_h">mn/h</string>
+ <string name="please_update_osmand">Por favor, atualize o OsmAnd para ver os dados no mapa</string>
+ <string name="visible_time_for_all">Hora visível para todos</string>
+ <string name="min_logging_accuracy_descr">Filtro: sem registro, a menos que a precisão seja atingida</string>
+ <string name="stale_location_desc">A última vez que um contato foi movido.</string>
+ <string name="proxy_credentials">Credenciais</string>
+ <string name="shared_string_search">Pesquisar</string>
+ <string name="turn_off_all">Desligue todos</string>
+ <string name="no_internet_connection">Sem conexão com a internet</string>
+ <string name="shared_string_account">Conta</string>
+ <string name="shared_string_second_short">seg</string>
+ <string name="shared_string_minute_short">min</string>
+ <string name="hours_and_minutes_format">%1$d h %2$d m</string>
+ <string name="device_name_is_too_long">Nome do aparelho muito longo</string>
+ <string name="gps_points">Pontos de GPS</string>
+ <string name="timeline_description">Ative o monitoramento para salvar todos os locais no histórico.</string>
+ <string name="show_on_map">Mostrar no mapa</string>
+ <string name="send_my_location">Enviar minha localização</string>
+ <string name="share_location_as">Compartilhar localização como</string>
+ <string name="end_date">Data final</string>
+ <string name="mile_per_hour">mph</string>
+ <string name="si_min_m">Minutos por milha</string>
+ <string name="last_update_from_telegram">Última atualização do Telegram</string>
+ <string name="logout_from_osmand_telegram_descr">Tem certeza de que deseja sair do OsmAnd Tracker para que você não possa compartilhar o local ou ver a localização de outras pessoas\?</string>
+ <string name="proxy_server">Servidor</string>
+ <string name="si_m_s">Metros por segundo</string>
+ <string name="sharing_enabled">Compartilhamento: Ativado</string>
+ <string name="by_name">Por nome</string>
+ <string name="gps_and_location">Posição</string>
+ <string name="last_response">Última resposta</string>
+ <string name="si_mi_meters">Milhas/metros</string>
+ <string name="proxy_username">Nome de utilizador</string>
+ <string name="proxy_key">Chave</string>
+ <string name="shared_string_cancel">Cancelar</string>
+ <string name="logout_no_internet_msg">Conecte-se à Internet para efetuar a saída do Telegram corretamente.</string>
+ <string name="authentication_code">Código de Autenticação</string>
+ <string name="disable_all_sharing_desc">Desativa o compartilhamento de local para todos os bate-papos selecionados (%1$d).</string>
+ <string name="altitude">Altitude</string>
+ <string name="shared_string_close">Fechar</string>
+ <string name="shared_string_off">Desativado</string>
+ <string name="direction">Direção</string>
+ <string name="time_on_the_move">Tempo em movimento</string>
+ <string name="si_nm">Milhas náuticas</string>
+ <string name="shared_string_install">Instalar</string>
+ <string name="background_work_description">Altere as configurações de otimização da bateria para estabilizar o compartilhamento de local.</string>
+ <string name="sharing_in_background">Compartilhando em segundo plano</string>
+ <string name="logout_from_osmand_telegram">Sair do OsmAnd Tracker\?</string>
+ <string name="share_location">Compartilhar localização</string>
+ <string name="shared_string_hour_short">h</string>
+ <string name="disconnect_from_telegram">Como desativar o OsmAnd Tracker para Telegram</string>
+ <string name="timeline_no_data_descr">Nós não coletamos dados para o dia selecionado</string>
+ <string name="sharing_time">Tempo de compartilhamento</string>
+ <string name="not_logged_in">você não está logado no</string>
+ <string name="gps_network_not_enabled">Ativar \"Localização\"\?</string>
+ <string name="proxy_type">Tipo de proxy</string>
+ <string name="initialization">Iniciando</string>
+ <string name="disconnect_from_telegram_desc">Para revogar o acesso ao compartilhamento de local. Abra o Telegram, vá para Configurações → Privacidade e Segurança → Sessões e termine a sessão do OsmAnd Tracker.</string>
+ <string name="by_group">Por grupo</string>
+ <string name="shared_string_authorization_descr">Por favor, insira o número de telefone do seu Telegram em formato internacional</string>
+ <string name="set_visible_time_for_all">Definir tempo visível para todos</string>
+ <string name="phone_number_title">Número de telefone</string>
+ <string name="privacy_policy_agree">Ao clicar em continuar, você concorda com as condições da política de privacidade do Telegram e da política de privacidade da OsmAnd.</string>
+ <string name="si_mi_feet">Milhas/pés</string>
+ <string name="monitoring_is_enabled">Monitoramento está ativado</string>
+ <string name="osmand_connect_desc">Escolha a versão OsmAnd que OsmAnd Tracker usa para exibir posições.</string>
+ <string name="set_time_timeline_descr">Selecionar a hora para exibir</string>
+ <string name="osmand_logo">Logotipo do OsmAnd</string>
+ <string name="average_speed">Velocidade média</string>
+ <string name="shared_string_status">Situação</string>
+ <string name="km_h">km/h</string>
+ <string name="get_telegram_after_creating_account">Então você pode usar este aplicativo.</string>
+ <string name="shared_string_settings">Configurações</string>
+ <string name="go_to_settings">Vá para as configurações</string>
+ <string name="authentication_code_descr">Uma faixa GPX é salva automaticamente durante a navegação.</string>
+ <string name="timeline_available_for_free_now">Linha do tempo é um recurso disponível agora gratuitamente.</string>
+ <string name="shared_string_live">Vivo</string>
+ <string name="set_time_description">Defina a hora em que seus contatos e grupos selecionados verão sua localização em tempo real.</string>
+ <string name="sharing_location">Compartilhando localização</string>
+ <string name="time_ago">atrás</string>
+ <string name="bearing">Rolamento</string>
+ <string name="shared_string_continue">Continuar</string>
+ <string name="km">km</string>
+ <string name="shared_string_sort">Ordenar</string>
+ <string name="shared_string_distance">Distância</string>
+ <string name="no_gps_connection">Sem conexão GPS</string>
+ <string name="shared_string_date">Data</string>
+ <string name="app_name">OsmAnd Online GPS Tracker</string>
+ <string name="enter_device_name_description">Nomeie seu novo aparelho no máximo 200 símbolos.</string>
+ <string name="process_service">Serviço OsmAnd Tracker</string>
+ <string name="re_send_location">Reenvie o local</string>
+ <string name="shared_string_share">Compartilhar</string>
+ <string name="enter_password">Digite a palavra-passe</string>
+ <string name="privacy">Privacidade</string>
+ <string name="open_in_osmand">Mostrar no OsmAnd</string>
+ <string name="logging_out">Saindo</string>
+ <string name="shared_string_logout">Sair</string>
+ <string name="shared_string_disable">Desabilitar</string>
+ <string name="enter_phone_number">Digite o número de telefone</string>
+ <string name="min_logging_speed">Velocidade mínima de registro</string>
+ <string name="proxy_disconnected">Desconectado</string>
+ <string name="connecting_to_the_internet">Conectando-se à Internet</string>
+ <string name="foot">ft</string>
+ <string name="how_it_works">Como funciona</string>
+ <string name="shared_string_group">Grupo</string>
+ <string name="proxy">Proxy</string>
+ <string name="disable_monitoring">Desativar monitoramento</string>
+ <string name="choose_osmand">Selecione a versão do OsmAnd para usar</string>
+ <string name="choose_osmand_desc">Selecione a versão OsmAnd, onde os contatos serão exibidos no mapa.</string>
+ <string name="si_mi_yard">Milhas/jardas</string>
+ <string name="initializing">Iniciando</string>
+</resources> \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/calculateroute/CalculateRouteParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/calculateroute/CalculateRouteParams.aidl
deleted file mode 100644
index 017dd5e944..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/calculateroute/CalculateRouteParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.calculateroute;
-
-parcelable CalculateRouteParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/calculateroute/CalculateRouteParams.java b/OsmAnd-telegram/src/net/osmand/aidl/calculateroute/CalculateRouteParams.java
deleted file mode 100644
index 3cc660ec8a..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/calculateroute/CalculateRouteParams.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package net.osmand.aidl.calculateroute;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import net.osmand.aidl.map.ALatLon;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class CalculateRouteParams implements Parcelable {
-
- private ALatLon startPoint;
- private String startPointName;
- private ALatLon endPoint;
- private String endPointName;
- private List<ALatLon> intermediatePoints = new ArrayList<>();
- private List<String> intermediateNames = new ArrayList<>();
-
- public CalculateRouteParams(ALatLon startPoint, String startPointName,
- ALatLon endPoint, String endPointName,
- List<ALatLon> intermediatePoints, List<String> intermediateNames) {
-
- if (endPoint == null) {
- throw new IllegalArgumentException("endPoint cannot be null");
- }
-
- this.startPoint = startPoint;
- this.startPointName = startPointName;
- this.endPoint = endPoint;
- this.endPointName = endPointName;
- if (intermediatePoints != null) {
- this.intermediatePoints.addAll(intermediatePoints);
- }
- if (intermediateNames != null) {
- this.intermediateNames.addAll(intermediateNames);
- }
- }
-
- public CalculateRouteParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Parcelable.Creator<CalculateRouteParams> CREATOR = new
- Parcelable.Creator<CalculateRouteParams>() {
- public CalculateRouteParams createFromParcel(Parcel in) {
- return new CalculateRouteParams(in);
- }
-
- public CalculateRouteParams[] newArray(int size) {
- return new CalculateRouteParams[size];
- }
- };
-
- public ALatLon getStartPoint() {
- return startPoint;
- }
-
- public String getStartPointName() {
- return startPointName;
- }
-
- public ALatLon getEndPoint() {
- return endPoint;
- }
-
- public String getEndPointName() {
- return endPointName;
- }
-
- public List<ALatLon> getIntermediatePoints() {
- return intermediatePoints;
- }
-
- public List<String> getIntermediateNames() {
- return intermediateNames;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(startPoint, flags);
- out.writeString(startPointName);
- out.writeParcelable(endPoint, flags);
- out.writeString(endPointName);
- out.writeTypedList(intermediatePoints);
- out.writeStringList(intermediateNames);
- }
-
- private void readFromParcel(Parcel in) {
- startPoint = in.readParcelable(ALatLon.class.getClassLoader());
- startPointName = in.readString();
- endPoint = in.readParcelable(ALatLon.class.getClassLoader());
- endPointName = in.readString();
- in.readTypedList(intermediatePoints, ALatLon.CREATOR);
- in.readStringList(intermediateNames);
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/AContextMenuButton.aidl b/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/AContextMenuButton.aidl
deleted file mode 100644
index 4a8cbee665..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/AContextMenuButton.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.contextmenu;
-
-parcelable AContextMenuButton; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/ContextMenuButtonsParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/ContextMenuButtonsParams.aidl
deleted file mode 100644
index cf05b9db9c..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/ContextMenuButtonsParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.contextmenu;
-
-parcelable ContextMenuButtonsParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/RemoveContextMenuButtonsParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/RemoveContextMenuButtonsParams.aidl
deleted file mode 100644
index 557a8e5113..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/RemoveContextMenuButtonsParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.contextmenu;
-
-parcelable RemoveContextMenuButtonsParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/RemoveContextMenuButtonsParams.java b/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/RemoveContextMenuButtonsParams.java
deleted file mode 100644
index 33f3ab400c..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/RemoveContextMenuButtonsParams.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package net.osmand.aidl.contextmenu;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class RemoveContextMenuButtonsParams implements Parcelable {
-
- private String paramsId;
-
- private long callbackId = -1L;
-
- public RemoveContextMenuButtonsParams(String paramsId, long callbackId) {
- this.paramsId = paramsId;
- this.callbackId = callbackId;
- }
-
- public RemoveContextMenuButtonsParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<RemoveContextMenuButtonsParams> CREATOR = new
- Creator<RemoveContextMenuButtonsParams>() {
- public RemoveContextMenuButtonsParams createFromParcel(Parcel in) {
- return new RemoveContextMenuButtonsParams(in);
- }
-
- public RemoveContextMenuButtonsParams[] newArray(int size) {
- return new RemoveContextMenuButtonsParams[size];
- }
- };
-
- public String getParamsId() {
- return paramsId;
- }
-
- public long getCallbackId() {
- return callbackId;
- }
-
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(paramsId);
- dest.writeLong(callbackId);
- }
-
- private void readFromParcel(Parcel in) {
- paramsId = in.readString();
- callbackId = in.readLong();
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/UpdateContextMenuButtonsParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/UpdateContextMenuButtonsParams.aidl
deleted file mode 100644
index f5482b3452..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/UpdateContextMenuButtonsParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.contextmenu;
-
-parcelable UpdateContextMenuButtonsParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/UpdateContextMenuButtonsParams.java b/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/UpdateContextMenuButtonsParams.java
deleted file mode 100644
index ce4d4a637c..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/contextmenu/UpdateContextMenuButtonsParams.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package net.osmand.aidl.contextmenu;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class UpdateContextMenuButtonsParams implements Parcelable {
- private ContextMenuButtonsParams buttonsParams;
-
- public UpdateContextMenuButtonsParams(ContextMenuButtonsParams widget) {
- this.buttonsParams = widget;
- }
-
- public UpdateContextMenuButtonsParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<UpdateContextMenuButtonsParams> CREATOR = new
- Creator<UpdateContextMenuButtonsParams>() {
- public UpdateContextMenuButtonsParams createFromParcel(Parcel in) {
- return new UpdateContextMenuButtonsParams(in);
- }
-
- public UpdateContextMenuButtonsParams[] newArray(int size) {
- return new UpdateContextMenuButtonsParams[size];
- }
- };
-
- public ContextMenuButtonsParams getContextMenuButtonsParams() {
- return buttonsParams;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(buttonsParams, flags);
- }
-
- private void readFromParcel(Parcel in) {
- buttonsParams = in.readParcelable(ContextMenuButtonsParams.class.getClassLoader());
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/copyfile/CopyFileParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/copyfile/CopyFileParams.aidl
deleted file mode 100644
index a786325e98..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/copyfile/CopyFileParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.copyfile;
-
-parcelable CopyFileParams;
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/customization/CustomizationInfoParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/customization/CustomizationInfoParams.aidl
deleted file mode 100644
index e72d2d47dc..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/customization/CustomizationInfoParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.customization;
-
-parcelable CustomizationInfoParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/customization/OsmandSettingsInfoParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/customization/OsmandSettingsInfoParams.aidl
deleted file mode 100644
index 80d0fa56ed..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/customization/OsmandSettingsInfoParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.customization;
-
-parcelable OsmandSettingsInfoParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/customization/OsmandSettingsParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/customization/OsmandSettingsParams.aidl
deleted file mode 100644
index 770070bb46..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/customization/OsmandSettingsParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.customization;
-
-parcelable OsmandSettingsParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/customization/SetWidgetsParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/customization/SetWidgetsParams.aidl
deleted file mode 100644
index 235a4abe51..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/customization/SetWidgetsParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.customization;
-
-parcelable SetWidgetsParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/customization/SetWidgetsParams.java b/OsmAnd-telegram/src/net/osmand/aidl/customization/SetWidgetsParams.java
deleted file mode 100644
index d9343b920e..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/customization/SetWidgetsParams.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package net.osmand.aidl.customization;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.support.annotation.Nullable;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class SetWidgetsParams implements Parcelable {
-
- private String widgetKey;
- private List<String> appModesKeys;
-
- public SetWidgetsParams(String widgetKey, @Nullable List<String> appModesKeys) {
- this.widgetKey = widgetKey;
- this.appModesKeys = appModesKeys;
- }
-
- public SetWidgetsParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<SetWidgetsParams> CREATOR = new Creator<SetWidgetsParams>() {
- @Override
- public SetWidgetsParams createFromParcel(Parcel in) {
- return new SetWidgetsParams(in);
- }
-
- @Override
- public SetWidgetsParams[] newArray(int size) {
- return new SetWidgetsParams[size];
- }
- };
-
- public String getWidgetKey() {
- return widgetKey;
- }
-
- public List<String> getAppModesKeys() {
- return appModesKeys;
- }
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(widgetKey);
- writeStringList(out, appModesKeys);
- }
-
- private void readFromParcel(Parcel in) {
- widgetKey = in.readString();
- appModesKeys = readStringList(in);
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- private void writeStringList(Parcel out, List<String> val) {
- if (val == null) {
- out.writeInt(-1);
- return;
- }
- int N = val.size();
- int i = 0;
- out.writeInt(N);
- while (i < N) {
- out.writeString(val.get(i));
- i++;
- }
- }
-
- private List<String> readStringList(Parcel in) {
- List<String> list = new ArrayList<>();
- int M = list.size();
- int N = in.readInt();
- if (N == -1) {
- return null;
- }
- int i = 0;
- for (; i < M && i < N; i++) {
- list.set(i, in.readString());
- }
- for (; i < N; i++) {
- list.add(in.readString());
- }
- for (; i < M; i++) {
- list.remove(N);
- }
- return list;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/AFavorite.aidl b/OsmAnd-telegram/src/net/osmand/aidl/favorite/AFavorite.aidl
deleted file mode 100644
index afd535fbe8..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/AFavorite.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.favorite;
-
-parcelable AFavorite; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/AFavorite.java b/OsmAnd-telegram/src/net/osmand/aidl/favorite/AFavorite.java
deleted file mode 100644
index b7fc057249..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/AFavorite.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package net.osmand.aidl.favorite;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class AFavorite implements Parcelable {
-
- private double lat;
- private double lon;
- private String name;
- private String description;
- private String category;
- private String color;
- private boolean visible;
-
- public AFavorite(double lat, double lon, String name, String description,
- String category, String color, boolean visible) {
- this.lat = lat;
- this.lon = lon;
- this.name = name;
- this.description = description;
- this.category = category;
- this.color = color;
- this.visible = visible;
- }
-
- public AFavorite(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<AFavorite> CREATOR = new Creator<AFavorite>() {
- @Override
- public AFavorite createFromParcel(Parcel in) {
- return new AFavorite(in);
- }
-
- @Override
- public AFavorite[] newArray(int size) {
- return new AFavorite[size];
- }
- };
-
- public double getLat() {
- return lat;
- }
-
- public double getLon() {
- return lon;
- }
-
- public String getName() {
- return name;
- }
-
- public String getDescription() {
- return description;
- }
-
- public String getCategory() {
- return category;
- }
-
- public String getColor() {
- return color;
- }
-
- public boolean isVisible() {
- return visible;
- }
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeDouble(lat);
- out.writeDouble(lon);
- out.writeString(name);
- out.writeString(description);
- out.writeString(category);
- out.writeString(color);
- out.writeByte((byte) (visible ? 1 : 0));
- }
-
- private void readFromParcel(Parcel in) {
- lat = in.readDouble();
- lon = in.readDouble();
- name = in.readString();
- description = in.readString();
- category = in.readString();
- color = in.readString();
- visible = in.readByte() != 0;
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/AddFavoriteParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/favorite/AddFavoriteParams.aidl
deleted file mode 100644
index c546992b10..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/AddFavoriteParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.favorite;
-
-parcelable AddFavoriteParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/AddFavoriteParams.java b/OsmAnd-telegram/src/net/osmand/aidl/favorite/AddFavoriteParams.java
deleted file mode 100644
index 87baeb5a99..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/AddFavoriteParams.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package net.osmand.aidl.favorite;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class AddFavoriteParams implements Parcelable {
-
- private AFavorite favorite;
-
- public AddFavoriteParams(AFavorite favorite) {
- this.favorite = favorite;
- }
-
- public AddFavoriteParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<AddFavoriteParams> CREATOR = new Creator<AddFavoriteParams>() {
- @Override
- public AddFavoriteParams createFromParcel(Parcel in) {
- return new AddFavoriteParams(in);
- }
-
- @Override
- public AddFavoriteParams[] newArray(int size) {
- return new AddFavoriteParams[size];
- }
- };
-
- public AFavorite getFavorite() {
- return favorite;
- }
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(favorite, flags);
- }
-
- private void readFromParcel(Parcel in) {
- favorite = in.readParcelable(AFavorite.class.getClassLoader());
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/RemoveFavoriteParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/favorite/RemoveFavoriteParams.aidl
deleted file mode 100644
index 37c08cd374..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/RemoveFavoriteParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.favorite;
-
-parcelable RemoveFavoriteParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/RemoveFavoriteParams.java b/OsmAnd-telegram/src/net/osmand/aidl/favorite/RemoveFavoriteParams.java
deleted file mode 100644
index 15e2ca74bd..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/RemoveFavoriteParams.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package net.osmand.aidl.favorite;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class RemoveFavoriteParams implements Parcelable {
-
- private AFavorite favorite;
-
- public RemoveFavoriteParams(AFavorite favorite) {
- this.favorite = favorite;
- }
-
- public RemoveFavoriteParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<RemoveFavoriteParams> CREATOR = new Creator<RemoveFavoriteParams>() {
- @Override
- public RemoveFavoriteParams createFromParcel(Parcel in) {
- return new RemoveFavoriteParams(in);
- }
-
- @Override
- public RemoveFavoriteParams[] newArray(int size) {
- return new RemoveFavoriteParams[size];
- }
- };
-
- public AFavorite getFavorite() {
- return favorite;
- }
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(favorite, flags);
- }
-
- private void readFromParcel(Parcel in) {
- favorite = in.readParcelable(AFavorite.class.getClassLoader());
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/UpdateFavoriteParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/favorite/UpdateFavoriteParams.aidl
deleted file mode 100644
index ba4a9364d3..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/UpdateFavoriteParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.favorite;
-
-parcelable UpdateFavoriteParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/UpdateFavoriteParams.java b/OsmAnd-telegram/src/net/osmand/aidl/favorite/UpdateFavoriteParams.java
deleted file mode 100644
index 43fdfc13bd..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/UpdateFavoriteParams.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package net.osmand.aidl.favorite;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class UpdateFavoriteParams implements Parcelable {
-
- private AFavorite favoritePrev;
- private AFavorite favoriteNew;
-
- public UpdateFavoriteParams(AFavorite favoritePrev, AFavorite favoriteNew) {
- this.favoritePrev = favoritePrev;
- this.favoriteNew = favoriteNew;
- }
-
- public UpdateFavoriteParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<UpdateFavoriteParams> CREATOR = new Creator<UpdateFavoriteParams>() {
- @Override
- public UpdateFavoriteParams createFromParcel(Parcel in) {
- return new UpdateFavoriteParams(in);
- }
-
- @Override
- public UpdateFavoriteParams[] newArray(int size) {
- return new UpdateFavoriteParams[size];
- }
- };
-
- public AFavorite getFavoritePrev() {
- return favoritePrev;
- }
-
- public AFavorite getFavoriteNew() {
- return favoriteNew;
- }
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(favoritePrev, flags);
- out.writeParcelable(favoriteNew, flags);
- }
-
- private void readFromParcel(Parcel in) {
- favoritePrev = in.readParcelable(AFavorite.class.getClassLoader());
- favoriteNew = in.readParcelable(AFavorite.class.getClassLoader());
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AFavoriteGroup.aidl b/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AFavoriteGroup.aidl
deleted file mode 100644
index baec925474..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AFavoriteGroup.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.favorite.group;
-
-parcelable AFavoriteGroup; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AFavoriteGroup.java b/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AFavoriteGroup.java
deleted file mode 100644
index e9b6348468..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AFavoriteGroup.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package net.osmand.aidl.favorite.group;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class AFavoriteGroup implements Parcelable {
-
- private String name;
- private String color;
- private boolean visible;
-
- public AFavoriteGroup(String name, String color, boolean visible) {
- this.name = name;
- this.color = color;
- this.visible = visible;
- }
-
- public AFavoriteGroup(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<AFavoriteGroup> CREATOR = new Creator<AFavoriteGroup>() {
- @Override
- public AFavoriteGroup createFromParcel(Parcel in) {
- return new AFavoriteGroup(in);
- }
-
- @Override
- public AFavoriteGroup[] newArray(int size) {
- return new AFavoriteGroup[size];
- }
- };
-
- public String getName() {
- return name;
- }
-
- public String getColor() {
- return color;
- }
-
- public boolean isVisible() {
- return visible;
- }
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(name);
- out.writeString(color);
- out.writeByte((byte) (visible ? 1 : 0));
- }
-
- private void readFromParcel(Parcel in) {
- name = in.readString();
- color = in.readString();
- visible = in.readByte() != 0;
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-} \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AddFavoriteGroupParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AddFavoriteGroupParams.aidl
deleted file mode 100644
index 5850b5cd34..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AddFavoriteGroupParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.favorite.group;
-
-parcelable AddFavoriteGroupParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AddFavoriteGroupParams.java b/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AddFavoriteGroupParams.java
deleted file mode 100644
index 7cb3228572..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/AddFavoriteGroupParams.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package net.osmand.aidl.favorite.group;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class AddFavoriteGroupParams implements Parcelable {
-
- private AFavoriteGroup favoriteGroup;
-
- public AddFavoriteGroupParams(AFavoriteGroup favoriteGroup) {
- this.favoriteGroup = favoriteGroup;
- }
-
- public AddFavoriteGroupParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<AddFavoriteGroupParams> CREATOR = new Creator<AddFavoriteGroupParams>() {
- @Override
- public AddFavoriteGroupParams createFromParcel(Parcel in) {
- return new AddFavoriteGroupParams(in);
- }
-
- @Override
- public AddFavoriteGroupParams[] newArray(int size) {
- return new AddFavoriteGroupParams[size];
- }
- };
-
- public AFavoriteGroup getFavoriteGroup() {
- return favoriteGroup;
- }
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(favoriteGroup, flags);
- }
-
- private void readFromParcel(Parcel in) {
- favoriteGroup = in.readParcelable(AFavoriteGroup.class.getClassLoader());
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-} \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/RemoveFavoriteGroupParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/RemoveFavoriteGroupParams.aidl
deleted file mode 100644
index e8b0710a01..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/RemoveFavoriteGroupParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.favorite.group;
-
-parcelable RemoveFavoriteGroupParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/RemoveFavoriteGroupParams.java b/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/RemoveFavoriteGroupParams.java
deleted file mode 100644
index 0b17274440..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/RemoveFavoriteGroupParams.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package net.osmand.aidl.favorite.group;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class RemoveFavoriteGroupParams implements Parcelable {
-
- private AFavoriteGroup favoriteGroup;
-
- public RemoveFavoriteGroupParams(AFavoriteGroup favoriteGroup) {
- this.favoriteGroup = favoriteGroup;
- }
-
- public RemoveFavoriteGroupParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<RemoveFavoriteGroupParams> CREATOR = new Creator<RemoveFavoriteGroupParams>() {
- @Override
- public RemoveFavoriteGroupParams createFromParcel(Parcel in) {
- return new RemoveFavoriteGroupParams(in);
- }
-
- @Override
- public RemoveFavoriteGroupParams[] newArray(int size) {
- return new RemoveFavoriteGroupParams[size];
- }
- };
-
- public AFavoriteGroup getFavoriteGroup() {
- return favoriteGroup;
- }
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(favoriteGroup, flags);
- }
-
- private void readFromParcel(Parcel in) {
- favoriteGroup = in.readParcelable(AFavoriteGroup.class.getClassLoader());
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-} \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/UpdateFavoriteGroupParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/UpdateFavoriteGroupParams.aidl
deleted file mode 100644
index e9001a8c5e..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/UpdateFavoriteGroupParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.favorite.group;
-
-parcelable UpdateFavoriteGroupParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/UpdateFavoriteGroupParams.java b/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/UpdateFavoriteGroupParams.java
deleted file mode 100644
index 0ea52e1fda..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/favorite/group/UpdateFavoriteGroupParams.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package net.osmand.aidl.favorite.group;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class UpdateFavoriteGroupParams implements Parcelable {
-
- private AFavoriteGroup favoriteGroupPrev;
- private AFavoriteGroup favoriteGroupNew;
-
- public UpdateFavoriteGroupParams(AFavoriteGroup favoriteGroup, AFavoriteGroup favoriteGroupNew) {
- this.favoriteGroupPrev = favoriteGroup;
- this.favoriteGroupNew = favoriteGroupNew;
- }
-
- public UpdateFavoriteGroupParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<UpdateFavoriteGroupParams> CREATOR = new Creator<UpdateFavoriteGroupParams>() {
- @Override
- public UpdateFavoriteGroupParams createFromParcel(Parcel in) {
- return new UpdateFavoriteGroupParams(in);
- }
-
- @Override
- public UpdateFavoriteGroupParams[] newArray(int size) {
- return new UpdateFavoriteGroupParams[size];
- }
- };
-
- public AFavoriteGroup getFavoriteGroupPrev() {
- return favoriteGroupPrev;
- }
-
- public AFavoriteGroup getFavoriteGroupNew() {
- return favoriteGroupNew;
- }
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(favoriteGroupPrev, flags);
- out.writeParcelable(favoriteGroupNew, flags);
- }
-
- private void readFromParcel(Parcel in) {
- favoriteGroupPrev = in.readParcelable(AFavoriteGroup.class.getClassLoader());
- favoriteGroupNew = in.readParcelable(AFavoriteGroup.class.getClassLoader());
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-} \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxBitmap.aidl b/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxBitmap.aidl
deleted file mode 100644
index 128f5e6b94..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxBitmap.aidl
+++ /dev/null
@@ -1,4 +0,0 @@
-package net.osmand.aidl.gpx;
-
-parcelable AGpxBitmap;
-
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxBitmap.java b/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxBitmap.java
deleted file mode 100644
index f4bdef433d..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxBitmap.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package net.osmand.aidl.gpx;
-
-import android.graphics.Bitmap;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.support.annotation.NonNull;
-
-public class AGpxBitmap implements Parcelable {
-
- private Bitmap bitmap;
-
- public AGpxBitmap(@NonNull Bitmap bitmap) {
- this.bitmap = bitmap;
- }
-
- public AGpxBitmap(Parcel in) {
- readFromParcel(in);
- }
-
- public Bitmap getBitmap() {
- return bitmap;
- }
-
- public static final Creator<AGpxBitmap> CREATOR = new
- Creator<AGpxBitmap>() {
- public AGpxBitmap createFromParcel(Parcel in) {
- return new AGpxBitmap(in);
- }
-
- public AGpxBitmap[] newArray(int size) {
- return new AGpxBitmap[size];
- }
- };
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(bitmap, flags);
- }
-
- private void readFromParcel(Parcel in) {
- bitmap = in.readParcelable(Bitmap.class.getClassLoader());
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFile.aidl b/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFile.aidl
deleted file mode 100644
index 413d34a571..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFile.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.gpx;
-
-parcelable AGpxFile; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFile.java b/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFile.java
deleted file mode 100644
index 028c0a628a..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFile.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package net.osmand.aidl.gpx;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-public class AGpxFile implements Parcelable {
-
- private String fileName;
- private long modifiedTime;
- private long fileSize;
- private boolean active;
- private AGpxFileDetails details;
-
- public AGpxFile(@NonNull String fileName, long modifiedTime, long fileSize, boolean active, @Nullable AGpxFileDetails details) {
- this.fileName = fileName;
- this.modifiedTime = modifiedTime;
- this.fileSize = fileSize;
- this.active = active;
- this.details = details;
- }
-
- public AGpxFile(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<AGpxFile> CREATOR = new
- Creator<AGpxFile>() {
- public AGpxFile createFromParcel(Parcel in) {
- return new AGpxFile(in);
- }
-
- public AGpxFile[] newArray(int size) {
- return new AGpxFile[size];
- }
- };
-
- public String getFileName() {
- return fileName;
- }
-
- public long getModifiedTime() {
- return modifiedTime;
- }
-
- public long getFileSize() {
- return fileSize;
- }
-
- public boolean isActive() {
- return active;
- }
-
- public AGpxFileDetails getDetails() {
- return details;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(fileName);
- out.writeLong(modifiedTime);
- out.writeLong(fileSize);
- out.writeByte((byte) (active ? 1 : 0));
-
- out.writeByte((byte) (details != null ? 1 : 0));
- if (details != null) {
- out.writeParcelable(details, flags);
- }
- }
-
- private void readFromParcel(Parcel in) {
- fileName = in.readString();
- modifiedTime = in.readLong();
- fileSize = in.readLong();
- active = in.readByte() != 0;
-
- boolean hasDetails = in.readByte() != 0;
- if (hasDetails) {
- details = in.readParcelable(AGpxFileDetails.class.getClassLoader());
- } else {
- details = null;
- }
- }
-
- public int describeContents() {
- return 0;
- }
-} \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFileDetails.aidl b/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFileDetails.aidl
deleted file mode 100644
index 1e2cdec2b1..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFileDetails.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.gpx;
-
-parcelable AGpxFileDetails; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFileDetails.java b/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFileDetails.java
deleted file mode 100644
index 3fe755135e..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/AGpxFileDetails.java
+++ /dev/null
@@ -1,196 +0,0 @@
-package net.osmand.aidl.gpx;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-public class AGpxFileDetails implements Parcelable {
-
- private float totalDistance = 0;
- private int totalTracks = 0;
- private long startTime = Long.MAX_VALUE;
- private long endTime = Long.MIN_VALUE;
- private long timeSpan = 0;
- private long timeMoving = 0;
- private float totalDistanceMoving = 0;
-
- private double diffElevationUp = 0;
- private double diffElevationDown = 0;
- private double avgElevation = 0;
- private double minElevation = 99999;
- private double maxElevation = -100;
-
- private float minSpeed = Float.MAX_VALUE;
- private float maxSpeed = 0;
- private float avgSpeed;
-
- private int points;
- private int wptPoints = 0;
-
- private List<String> wptCategoryNames = new ArrayList<>();
-
- public AGpxFileDetails(float totalDistance, int totalTracks,
- long startTime, long endTime,
- long timeSpan, long timeMoving, float totalDistanceMoving,
- double diffElevationUp, double diffElevationDown,
- double avgElevation, double minElevation, double maxElevation,
- float minSpeed, float maxSpeed, float avgSpeed,
- int points, int wptPoints, Set<String> wptCategoryNames) {
- this.totalDistance = totalDistance;
- this.totalTracks = totalTracks;
- this.startTime = startTime;
- this.endTime = endTime;
- this.timeSpan = timeSpan;
- this.timeMoving = timeMoving;
- this.totalDistanceMoving = totalDistanceMoving;
- this.diffElevationUp = diffElevationUp;
- this.diffElevationDown = diffElevationDown;
- this.avgElevation = avgElevation;
- this.minElevation = minElevation;
- this.maxElevation = maxElevation;
- this.minSpeed = minSpeed;
- this.maxSpeed = maxSpeed;
- this.avgSpeed = avgSpeed;
- this.points = points;
- this.wptPoints = wptPoints;
- if (wptCategoryNames != null) {
- this.wptCategoryNames = new ArrayList<>(wptCategoryNames);
- }
- }
-
- public AGpxFileDetails(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<AGpxFileDetails> CREATOR = new
- Creator<AGpxFileDetails>() {
- public AGpxFileDetails createFromParcel(Parcel in) {
- return new AGpxFileDetails(in);
- }
-
- public AGpxFileDetails[] newArray(int size) {
- return new AGpxFileDetails[size];
- }
- };
-
- public float getTotalDistance() {
- return totalDistance;
- }
-
- public int getTotalTracks() {
- return totalTracks;
- }
-
- public long getStartTime() {
- return startTime;
- }
-
- public long getEndTime() {
- return endTime;
- }
-
- public long getTimeSpan() {
- return timeSpan;
- }
-
- public long getTimeMoving() {
- return timeMoving;
- }
-
- public float getTotalDistanceMoving() {
- return totalDistanceMoving;
- }
-
- public double getDiffElevationUp() {
- return diffElevationUp;
- }
-
- public double getDiffElevationDown() {
- return diffElevationDown;
- }
-
- public double getAvgElevation() {
- return avgElevation;
- }
-
- public double getMinElevation() {
- return minElevation;
- }
-
- public double getMaxElevation() {
- return maxElevation;
- }
-
- public float getMinSpeed() {
- return minSpeed;
- }
-
- public float getMaxSpeed() {
- return maxSpeed;
- }
-
- public float getAvgSpeed() {
- return avgSpeed;
- }
-
- public int getPoints() {
- return points;
- }
-
- public int getWptPoints() {
- return wptPoints;
- }
-
- public List<String> getWptCategoryNames() {
- return wptCategoryNames;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeFloat(totalDistance);
- out.writeInt(totalTracks);
- out.writeLong(startTime);
- out.writeLong(endTime);
- out.writeLong(timeSpan);
- out.writeLong(timeMoving);
- out.writeFloat(totalDistanceMoving);
- out.writeDouble(diffElevationUp);
- out.writeDouble(diffElevationDown);
- out.writeDouble(avgElevation);
- out.writeDouble(minElevation);
- out.writeDouble(maxElevation);
- out.writeFloat(minSpeed);
- out.writeFloat(maxSpeed);
- out.writeFloat(avgSpeed);
- out.writeInt(points);
- out.writeInt(wptPoints);
- out.writeStringList(wptCategoryNames);
- }
-
- private void readFromParcel(Parcel in) {
- totalDistance = in.readFloat();
- totalTracks = in.readInt();
- startTime = in.readLong();
- endTime = in.readLong();
- timeSpan = in.readLong();
- timeMoving = in.readLong();
- totalDistanceMoving = in.readFloat();
- diffElevationUp = in.readDouble();
- diffElevationDown = in.readDouble();
- avgElevation = in.readDouble();
- minElevation = in.readDouble();
- maxElevation = in.readDouble();
- minSpeed = in.readFloat();
- maxSpeed = in.readFloat();
- avgSpeed = in.readFloat();
- points = in.readInt();
- wptPoints = in.readInt();
- in.readStringList(wptCategoryNames);
- }
-
- public int describeContents() {
- return 0;
- }
-} \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/ASelectedGpxFile.aidl b/OsmAnd-telegram/src/net/osmand/aidl/gpx/ASelectedGpxFile.aidl
deleted file mode 100644
index 23fc3312b4..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/ASelectedGpxFile.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.gpx;
-
-parcelable ASelectedGpxFile; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/ASelectedGpxFile.java b/OsmAnd-telegram/src/net/osmand/aidl/gpx/ASelectedGpxFile.java
deleted file mode 100644
index 6ffc6e2a70..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/ASelectedGpxFile.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package net.osmand.aidl.gpx;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-public class ASelectedGpxFile implements Parcelable {
-
- private String fileName;
- private long modifiedTime;
- private long fileSize;
- private AGpxFileDetails details;
-
- public ASelectedGpxFile(@NonNull String fileName) {
- this.fileName = fileName;
- }
-
- public ASelectedGpxFile(@NonNull String fileName, long modifiedTime, long fileSize, @Nullable AGpxFileDetails details) {
- this.fileName = fileName;
- this.modifiedTime = modifiedTime;
- this.fileSize = fileSize;
- this.details = details;
- }
-
- public ASelectedGpxFile(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<ASelectedGpxFile> CREATOR = new
- Creator<ASelectedGpxFile>() {
- public ASelectedGpxFile createFromParcel(Parcel in) {
- return new ASelectedGpxFile(in);
- }
-
- public ASelectedGpxFile[] newArray(int size) {
- return new ASelectedGpxFile[size];
- }
- };
-
- public String getFileName() {
- return fileName;
- }
-
- public long getModifiedTime() {
- return modifiedTime;
- }
-
- public long getFileSize() {
- return fileSize;
- }
-
- public AGpxFileDetails getDetails() {
- return details;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(fileName);
- out.writeLong(modifiedTime);
- out.writeLong(fileSize);
-
- out.writeByte((byte) (details != null ? 1 : 0));
- if (details != null) {
- out.writeParcelable(details, flags);
- }
- }
-
- private void readFromParcel(Parcel in) {
- fileName = in.readString();
- modifiedTime = in.readLong();
- fileSize = in.readLong();
-
- boolean hasDetails= in.readByte() != 0;
- if (hasDetails) {
- details = in.readParcelable(AGpxFileDetails.class.getClassLoader());
- } else {
- details = null;
- }
- }
-
- public int describeContents() {
- return 0;
- }
-}
-
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/CreateGpxBitmapParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/gpx/CreateGpxBitmapParams.aidl
deleted file mode 100644
index b02d5c6e70..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/CreateGpxBitmapParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.gpx;
-
-parcelable CreateGpxBitmapParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/GpxColorParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/gpx/GpxColorParams.aidl
deleted file mode 100644
index bd26e19344..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/GpxColorParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.gpx;
-
-parcelable GpxColorParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/GpxColorParams.java b/OsmAnd-telegram/src/net/osmand/aidl/gpx/GpxColorParams.java
deleted file mode 100644
index cd039ec0cc..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/GpxColorParams.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package net.osmand.aidl.gpx;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.support.annotation.NonNull;
-
-public class GpxColorParams implements Parcelable {
-
- private String fileName;
- private String gpxColor;
-
- public GpxColorParams() {
-
- }
-
- public GpxColorParams(@NonNull String fileName) {
- this.fileName = fileName;
- }
-
- public GpxColorParams(@NonNull String fileName, String gpxColor) {
- this.fileName = fileName;
- this.gpxColor = gpxColor;
- }
-
- public GpxColorParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<GpxColorParams> CREATOR = new
- Creator<GpxColorParams>() {
- public GpxColorParams createFromParcel(Parcel in) {
- return new GpxColorParams(in);
- }
-
- public GpxColorParams[] newArray(int size) {
- return new GpxColorParams[size];
- }
- };
-
- public String getFileName() {
- return fileName;
- }
-
- public String getGpxColor() {
- return gpxColor;
- }
-
- public void setGpxColor(String gpxColor) {
- this.gpxColor = gpxColor;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(fileName);
- out.writeString(gpxColor);
- }
-
- public void readFromParcel(Parcel in) {
- fileName = in.readString();
- gpxColor = in.readString();
- }
-
- public int describeContents() {
- return 0;
- }
-}
-
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/HideGpxParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/gpx/HideGpxParams.aidl
deleted file mode 100644
index 4c8992552c..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/HideGpxParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.gpx;
-
-parcelable HideGpxParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/HideGpxParams.java b/OsmAnd-telegram/src/net/osmand/aidl/gpx/HideGpxParams.java
deleted file mode 100644
index 5e37c66f80..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/HideGpxParams.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package net.osmand.aidl.gpx;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class HideGpxParams implements Parcelable {
-
- private String fileName;
-
- public HideGpxParams(String fileName) {
- this.fileName = fileName;
- }
-
- public HideGpxParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<HideGpxParams> CREATOR = new
- Creator<HideGpxParams>() {
- public HideGpxParams createFromParcel(Parcel in) {
- return new HideGpxParams(in);
- }
-
- public HideGpxParams[] newArray(int size) {
- return new HideGpxParams[size];
- }
- };
-
- public String getFileName() {
- return fileName;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(fileName);
- }
-
- private void readFromParcel(Parcel in) {
- fileName = in.readString();
- }
-
- public int describeContents() {
- return 0;
- }
-}
-
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/ImportGpxParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/gpx/ImportGpxParams.aidl
deleted file mode 100644
index 23ecdb6ff3..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/ImportGpxParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.gpx;
-
-parcelable ImportGpxParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/RemoveGpxParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/gpx/RemoveGpxParams.aidl
deleted file mode 100644
index e9025f7a19..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/RemoveGpxParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.gpx;
-
-parcelable RemoveGpxParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/RemoveGpxParams.java b/OsmAnd-telegram/src/net/osmand/aidl/gpx/RemoveGpxParams.java
deleted file mode 100644
index 2253fa3616..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/RemoveGpxParams.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package net.osmand.aidl.gpx;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class RemoveGpxParams implements Parcelable {
-
- private String fileName;
-
- public RemoveGpxParams(String fileName) {
- this.fileName = fileName;
- }
-
- public RemoveGpxParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<RemoveGpxParams> CREATOR = new
- Creator<RemoveGpxParams>() {
- @Override
- public RemoveGpxParams createFromParcel(Parcel in) {
- return new RemoveGpxParams(in);
- }
-
- @Override
- public RemoveGpxParams[] newArray(int size) {
- return new RemoveGpxParams[size];
- }
- };
-
- public String getFileName() {
- return fileName;
- }
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(fileName);
- }
-
- private void readFromParcel(Parcel in) {
- fileName = in.readString();
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/ShowGpxParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/gpx/ShowGpxParams.aidl
deleted file mode 100644
index 217f600c4e..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/ShowGpxParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.gpx;
-
-parcelable ShowGpxParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/ShowGpxParams.java b/OsmAnd-telegram/src/net/osmand/aidl/gpx/ShowGpxParams.java
deleted file mode 100644
index 4d385a65a4..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/ShowGpxParams.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package net.osmand.aidl.gpx;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class ShowGpxParams implements Parcelable {
-
- private String fileName;
-
- public ShowGpxParams(String fileName) {
- this.fileName = fileName;
- }
-
- public ShowGpxParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<ShowGpxParams> CREATOR = new
- Creator<ShowGpxParams>() {
- public ShowGpxParams createFromParcel(Parcel in) {
- return new ShowGpxParams(in);
- }
-
- public ShowGpxParams[] newArray(int size) {
- return new ShowGpxParams[size];
- }
- };
-
- public String getFileName() {
- return fileName;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(fileName);
- }
-
- private void readFromParcel(Parcel in) {
- fileName = in.readString();
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/StartGpxRecordingParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/gpx/StartGpxRecordingParams.aidl
deleted file mode 100644
index 14f4871540..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/StartGpxRecordingParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.gpx;
-
-parcelable StartGpxRecordingParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/gpx/StopGpxRecordingParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/gpx/StopGpxRecordingParams.aidl
deleted file mode 100644
index db08f1811a..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/gpx/StopGpxRecordingParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.gpx;
-
-parcelable StopGpxRecordingParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/map/ALatLon.aidl b/OsmAnd-telegram/src/net/osmand/aidl/map/ALatLon.aidl
deleted file mode 100644
index 33d5930f02..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/map/ALatLon.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.map;
-
-parcelable ALatLon; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/map/SetMapLocationParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/map/SetMapLocationParams.aidl
deleted file mode 100644
index 9edde4f616..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/map/SetMapLocationParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.map;
-
-parcelable SetMapLocationParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/map/SetMapLocationParams.java b/OsmAnd-telegram/src/net/osmand/aidl/map/SetMapLocationParams.java
deleted file mode 100644
index 929c817d9d..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/map/SetMapLocationParams.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package net.osmand.aidl.map;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class SetMapLocationParams implements Parcelable {
-
- private double latitude;
- private double longitude;
- private int zoom;
- private boolean animated;
-
- public SetMapLocationParams(double latitude, double longitude, int zoom, boolean animated) {
- this.latitude = latitude;
- this.longitude = longitude;
- this.zoom = zoom;
- this.animated = animated;
- }
-
- public SetMapLocationParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<SetMapLocationParams> CREATOR = new
- Creator<SetMapLocationParams>() {
- public SetMapLocationParams createFromParcel(Parcel in) {
- return new SetMapLocationParams(in);
- }
-
- public SetMapLocationParams[] newArray(int size) {
- return new SetMapLocationParams[size];
- }
- };
-
- public double getLatitude() {
- return latitude;
- }
-
- public double getLongitude() {
- return longitude;
- }
-
- public int getZoom() {
- return zoom;
- }
-
- public boolean isAnimated() {
- return animated;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeDouble(latitude);
- out.writeDouble(longitude);
- out.writeInt(zoom);
- out.writeByte((byte) (animated ? 1 : 0));
- }
-
- private void readFromParcel(Parcel in) {
- latitude = in.readDouble();
- longitude = in.readDouble();
- zoom = in.readInt();
- animated = in.readByte() != 0;
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/AMapLayer.aidl b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/AMapLayer.aidl
deleted file mode 100644
index 745f49f1a5..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/AMapLayer.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.maplayer;
-
-parcelable AMapLayer; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/AddMapLayerParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/AddMapLayerParams.aidl
deleted file mode 100644
index 8116760a45..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/AddMapLayerParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.maplayer;
-
-parcelable AddMapLayerParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/AddMapLayerParams.java b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/AddMapLayerParams.java
deleted file mode 100644
index 38e9e53667..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/AddMapLayerParams.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package net.osmand.aidl.maplayer;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.os.Parcelable.Creator;
-
-public class AddMapLayerParams implements Parcelable {
- private AMapLayer layer;
-
- public AddMapLayerParams(AMapLayer layer) {
- this.layer = layer;
- }
-
- public AddMapLayerParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<AddMapLayerParams> CREATOR = new
- Creator<AddMapLayerParams>() {
- public AddMapLayerParams createFromParcel(Parcel in) {
- return new AddMapLayerParams(in);
- }
-
- public AddMapLayerParams[] newArray(int size) {
- return new AddMapLayerParams[size];
- }
- };
-
- public AMapLayer getLayer() {
- return layer;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(layer, flags);
- }
-
- private void readFromParcel(Parcel in) {
- layer = in.readParcelable(AMapLayer.class.getClassLoader());
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/RemoveMapLayerParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/RemoveMapLayerParams.aidl
deleted file mode 100644
index 20a972ee95..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/RemoveMapLayerParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.maplayer;
-
-parcelable RemoveMapLayerParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/RemoveMapLayerParams.java b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/RemoveMapLayerParams.java
deleted file mode 100644
index 3e87627445..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/RemoveMapLayerParams.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package net.osmand.aidl.maplayer;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.os.Parcelable.Creator;
-
-public class RemoveMapLayerParams implements Parcelable {
- private String id;
-
- public RemoveMapLayerParams(String id) {
- this.id = id;
- }
-
- public RemoveMapLayerParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<RemoveMapLayerParams> CREATOR = new
- Creator<RemoveMapLayerParams>() {
- public RemoveMapLayerParams createFromParcel(Parcel in) {
- return new RemoveMapLayerParams(in);
- }
-
- public RemoveMapLayerParams[] newArray(int size) {
- return new RemoveMapLayerParams[size];
- }
- };
-
- public String getId() {
- return id;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(id);
- }
-
- private void readFromParcel(Parcel in) {
- id = in.readString();
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/UpdateMapLayerParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/UpdateMapLayerParams.aidl
deleted file mode 100644
index eafe8ef464..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/UpdateMapLayerParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.maplayer;
-
-parcelable UpdateMapLayerParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/UpdateMapLayerParams.java b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/UpdateMapLayerParams.java
deleted file mode 100644
index a2f6e16498..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/UpdateMapLayerParams.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package net.osmand.aidl.maplayer;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.os.Parcelable.Creator;
-
-public class UpdateMapLayerParams implements Parcelable {
- private AMapLayer layer;
-
- public UpdateMapLayerParams(AMapLayer layer) {
- this.layer = layer;
- }
-
- public UpdateMapLayerParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<UpdateMapLayerParams> CREATOR = new
- Creator<UpdateMapLayerParams>() {
- public UpdateMapLayerParams createFromParcel(Parcel in) {
- return new UpdateMapLayerParams(in);
- }
-
- public UpdateMapLayerParams[] newArray(int size) {
- return new UpdateMapLayerParams[size];
- }
- };
-
- public AMapLayer getLayer() {
- return layer;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(layer, flags);
- }
-
- private void readFromParcel(Parcel in) {
- layer = in.readParcelable(AMapLayer.class.getClassLoader());
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/AMapPoint.aidl b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/AMapPoint.aidl
deleted file mode 100644
index 53fb86b788..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/AMapPoint.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.maplayer.point;
-
-parcelable AMapPoint; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/AddMapPointParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/AddMapPointParams.aidl
deleted file mode 100644
index d41d6b69ca..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/AddMapPointParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.maplayer.point;
-
-parcelable AddMapPointParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/AddMapPointParams.java b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/AddMapPointParams.java
deleted file mode 100644
index 0d575a38d9..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/AddMapPointParams.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package net.osmand.aidl.maplayer.point;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class AddMapPointParams implements Parcelable {
- private String layerId;
- private AMapPoint point;
-
- public AddMapPointParams(String layerId, AMapPoint point) {
- this.layerId = layerId;
- this.point = point;
- }
-
- public AddMapPointParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<AddMapPointParams> CREATOR = new
- Creator<AddMapPointParams>() {
- public AddMapPointParams createFromParcel(Parcel in) {
- return new AddMapPointParams(in);
- }
-
- public AddMapPointParams[] newArray(int size) {
- return new AddMapPointParams[size];
- }
- };
-
- public String getLayerId() {
- return layerId;
- }
-
- public AMapPoint getPoint() {
- return point;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(layerId);
- out.writeParcelable(point, flags);
- }
-
- private void readFromParcel(Parcel in) {
- layerId = in.readString();
- point = in.readParcelable(AMapPoint.class.getClassLoader());
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/RemoveMapPointParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/RemoveMapPointParams.aidl
deleted file mode 100644
index 68a5fdcf11..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/RemoveMapPointParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.maplayer.point;
-
-parcelable RemoveMapPointParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/RemoveMapPointParams.java b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/RemoveMapPointParams.java
deleted file mode 100644
index 797556b1e3..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/RemoveMapPointParams.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package net.osmand.aidl.maplayer.point;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class RemoveMapPointParams implements Parcelable {
- private String layerId;
- private String pointId;
-
- public RemoveMapPointParams(String layerId, String pointId) {
- this.layerId = layerId;
- this.pointId = pointId;
- }
-
- public RemoveMapPointParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<RemoveMapPointParams> CREATOR = new
- Creator<RemoveMapPointParams>() {
- public RemoveMapPointParams createFromParcel(Parcel in) {
- return new RemoveMapPointParams(in);
- }
-
- public RemoveMapPointParams[] newArray(int size) {
- return new RemoveMapPointParams[size];
- }
- };
-
- public String getLayerId() {
- return layerId;
- }
-
- public String getPointId() {
- return pointId;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(layerId);
- out.writeString(pointId);
- }
-
- private void readFromParcel(Parcel in) {
- layerId = in.readString();
- pointId = in.readString();
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/ShowMapPointParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/ShowMapPointParams.aidl
deleted file mode 100644
index 54ff9b2075..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/ShowMapPointParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.maplayer.point;
-
-parcelable ShowMapPointParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/ShowMapPointParams.java b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/ShowMapPointParams.java
deleted file mode 100644
index 5b6e0c17c9..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/ShowMapPointParams.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package net.osmand.aidl.maplayer.point;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class ShowMapPointParams implements Parcelable {
-
- private String layerId;
- private AMapPoint point;
-
- public ShowMapPointParams(String layerId, AMapPoint point) {
- this.layerId = layerId;
- this.point = point;
- }
-
- public ShowMapPointParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<ShowMapPointParams> CREATOR = new
- Creator<ShowMapPointParams>() {
- @Override
- public ShowMapPointParams createFromParcel(Parcel in) {
- return new ShowMapPointParams(in);
- }
-
- @Override
- public ShowMapPointParams[] newArray(int size) {
- return new ShowMapPointParams[size];
- }
- };
-
- public String getLayerId() {
- return layerId;
- }
-
- public AMapPoint getPoint() {
- return point;
- }
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(layerId);
- out.writeParcelable(point, flags);
- }
-
- private void readFromParcel(Parcel in) {
- layerId = in.readString();
- point = in.readParcelable(AMapPoint.class.getClassLoader());
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/UpdateMapPointParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/UpdateMapPointParams.aidl
deleted file mode 100644
index d81ea87253..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/UpdateMapPointParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.maplayer.point;
-
-parcelable UpdateMapPointParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/UpdateMapPointParams.java b/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/UpdateMapPointParams.java
deleted file mode 100644
index a7b871a1d4..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/maplayer/point/UpdateMapPointParams.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package net.osmand.aidl.maplayer.point;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class UpdateMapPointParams implements Parcelable {
- private String layerId;
- private AMapPoint point;
- private boolean updateOpenedMenuAndMap;
-
- public UpdateMapPointParams(String layerId, AMapPoint point, boolean updateOpenedMenuAndMap) {
- this.layerId = layerId;
- this.point = point;
- this.updateOpenedMenuAndMap = updateOpenedMenuAndMap;
- }
-
- public UpdateMapPointParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<UpdateMapPointParams> CREATOR = new
- Creator<UpdateMapPointParams>() {
- public UpdateMapPointParams createFromParcel(Parcel in) {
- return new UpdateMapPointParams(in);
- }
-
- public UpdateMapPointParams[] newArray(int size) {
- return new UpdateMapPointParams[size];
- }
- };
-
- public String getLayerId() {
- return layerId;
- }
-
- public AMapPoint getPoint() {
- return point;
- }
-
- public boolean isUpdateOpenedMenuAndMap() {
- return updateOpenedMenuAndMap;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(layerId);
- out.writeParcelable(point, flags);
- out.writeInt(updateOpenedMenuAndMap ? 1 : 0);
- }
-
- private void readFromParcel(Parcel in) {
- layerId = in.readString();
- point = in.readParcelable(AMapPoint.class.getClassLoader());
- updateOpenedMenuAndMap = in.readInt() != 0;
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AMapMarker.aidl b/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AMapMarker.aidl
deleted file mode 100644
index 4721b1812b..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AMapMarker.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.mapmarker;
-
-parcelable AMapMarker; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AMapMarker.java b/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AMapMarker.java
deleted file mode 100644
index 083b5bbb37..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AMapMarker.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package net.osmand.aidl.mapmarker;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import net.osmand.aidl.map.ALatLon;
-
-public class AMapMarker implements Parcelable {
-
- private ALatLon latLon;
- private String name;
-
- public AMapMarker(ALatLon latLon, String name) {
-
- if (latLon == null) {
- throw new IllegalArgumentException("latLon cannot be null");
- }
-
- if (name == null) {
- name = "";
- }
-
- this.latLon = latLon;
- this.name = name;
- }
-
- public AMapMarker(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Parcelable.Creator<AMapMarker> CREATOR = new
- Parcelable.Creator<AMapMarker>() {
- public AMapMarker createFromParcel(Parcel in) {
- return new AMapMarker(in);
- }
-
- public AMapMarker[] newArray(int size) {
- return new AMapMarker[size];
- }
- };
-
- public ALatLon getLatLon() {
- return latLon;
- }
-
- public String getName() {
- return name;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(latLon, flags);
- out.writeString(name);
- }
-
- private void readFromParcel(Parcel in) {
- latLon = in.readParcelable(ALatLon.class.getClassLoader());
- name = in.readString();
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AddMapMarkerParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AddMapMarkerParams.aidl
deleted file mode 100644
index eef370b4e2..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AddMapMarkerParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.mapmarker;
-
-parcelable AddMapMarkerParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AddMapMarkerParams.java b/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AddMapMarkerParams.java
deleted file mode 100644
index cc707006e4..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/AddMapMarkerParams.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package net.osmand.aidl.mapmarker;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class AddMapMarkerParams implements Parcelable {
-
- private AMapMarker marker;
-
- public AddMapMarkerParams(AMapMarker marker) {
- this.marker = marker;
- }
-
- public AddMapMarkerParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Parcelable.Creator<AddMapMarkerParams> CREATOR = new
- Parcelable.Creator<AddMapMarkerParams>() {
- public AddMapMarkerParams createFromParcel(Parcel in) {
- return new AddMapMarkerParams(in);
- }
-
- public AddMapMarkerParams[] newArray(int size) {
- return new AddMapMarkerParams[size];
- }
- };
-
- public AMapMarker getMarker() {
- return marker;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(marker, flags);
- }
-
- private void readFromParcel(Parcel in) {
- marker = in.readParcelable(AMapMarker.class.getClassLoader());
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkerParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkerParams.aidl
deleted file mode 100644
index e5b5b126ad..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkerParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.mapmarker;
-
-parcelable RemoveMapMarkerParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkerParams.java b/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkerParams.java
deleted file mode 100644
index 08f489922c..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkerParams.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package net.osmand.aidl.mapmarker;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class RemoveMapMarkerParams implements Parcelable {
-
- private AMapMarker marker;
-
- public RemoveMapMarkerParams(AMapMarker marker) {
- this.marker = marker;
- }
-
- public RemoveMapMarkerParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Parcelable.Creator<RemoveMapMarkerParams> CREATOR = new
- Parcelable.Creator<RemoveMapMarkerParams>() {
- public RemoveMapMarkerParams createFromParcel(Parcel in) {
- return new RemoveMapMarkerParams(in);
- }
-
- public RemoveMapMarkerParams[] newArray(int size) {
- return new RemoveMapMarkerParams[size];
- }
- };
-
- public AMapMarker getMarker() {
- return marker;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(marker, flags);
- }
-
- private void readFromParcel(Parcel in) {
- marker = in.readParcelable(AMapMarker.class.getClassLoader());
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkersParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkersParams.aidl
deleted file mode 100644
index ee5f4936d7..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkersParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.mapmarker;
-
-parcelable RemoveMapMarkersParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkersParams.java b/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkersParams.java
deleted file mode 100644
index cf0ea8d00c..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/RemoveMapMarkersParams.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package net.osmand.aidl.mapmarker;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class RemoveMapMarkersParams implements Parcelable {
-
-
- public RemoveMapMarkersParams() {
- }
-
- public RemoveMapMarkersParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<RemoveMapMarkersParams> CREATOR = new
- Creator<RemoveMapMarkersParams>() {
- public RemoveMapMarkersParams createFromParcel(Parcel in) {
- return new RemoveMapMarkersParams(in);
- }
-
- public RemoveMapMarkersParams[] newArray(int size) {
- return new RemoveMapMarkersParams[size];
- }
- };
-
-
- public void writeToParcel(Parcel out, int flags) {
- }
-
- private void readFromParcel(Parcel in) {
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/UpdateMapMarkerParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/UpdateMapMarkerParams.aidl
deleted file mode 100644
index 2a17fa9369..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/UpdateMapMarkerParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.mapmarker;
-
-parcelable UpdateMapMarkerParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/UpdateMapMarkerParams.java b/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/UpdateMapMarkerParams.java
deleted file mode 100644
index d03bc0d7f6..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapmarker/UpdateMapMarkerParams.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package net.osmand.aidl.mapmarker;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class UpdateMapMarkerParams implements Parcelable {
-
- private AMapMarker markerPrev;
- private AMapMarker markerNew;
-
- public UpdateMapMarkerParams(AMapMarker markerPrev, AMapMarker markerNew) {
- this.markerPrev = markerPrev;
- this.markerNew = markerNew;
- }
-
- public UpdateMapMarkerParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Parcelable.Creator<UpdateMapMarkerParams> CREATOR = new
- Parcelable.Creator<UpdateMapMarkerParams>() {
- public UpdateMapMarkerParams createFromParcel(Parcel in) {
- return new UpdateMapMarkerParams(in);
- }
-
- public UpdateMapMarkerParams[] newArray(int size) {
- return new UpdateMapMarkerParams[size];
- }
- };
-
- public AMapMarker getMarkerPrev() {
- return markerPrev;
- }
-
- public AMapMarker getMarkerNew() {
- return markerNew;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(markerPrev, flags);
- out.writeParcelable(markerNew, flags);
- }
-
- private void readFromParcel(Parcel in) {
- markerPrev = in.readParcelable(AMapMarker.class.getClassLoader());
- markerNew = in.readParcelable(AMapMarker.class.getClassLoader());
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AMapWidget.aidl b/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AMapWidget.aidl
deleted file mode 100644
index 7798986483..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AMapWidget.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.mapwidget;
-
-parcelable AMapWidget; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AMapWidget.java b/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AMapWidget.java
deleted file mode 100644
index f6fac08942..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AMapWidget.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package net.osmand.aidl.mapwidget;
-
-import android.content.Intent;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class AMapWidget implements Parcelable {
- private String id;
- private String menuIconName;
- private String menuTitle;
- private String lightIconName;
- private String darkIconName;
- private String text;
- private String description;
- private int order;
- private Intent intentOnClick;
-
- public AMapWidget(String id, String menuIconName, String menuTitle,
- String lightIconName, String darkIconName, String text, String description,
- int order, Intent intentOnClick) {
- this.id = id;
- this.menuIconName = menuIconName;
- this.menuTitle = menuTitle;
- this.lightIconName = lightIconName;
- this.darkIconName = darkIconName;
- this.text = text;
- this.description = description;
- this.order = order;
- this.intentOnClick = intentOnClick;
- }
-
- public AMapWidget(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Parcelable.Creator<AMapWidget> CREATOR = new
- Parcelable.Creator<AMapWidget>() {
- public AMapWidget createFromParcel(Parcel in) {
- return new AMapWidget(in);
- }
-
- public AMapWidget[] newArray(int size) {
- return new AMapWidget[size];
- }
- };
-
- public String getId() {
- return id;
- }
-
- public String getMenuIconName() {
- return menuIconName;
- }
-
- public String getMenuTitle() {
- return menuTitle;
- }
-
- public String getLightIconName() {
- return lightIconName;
- }
-
- public String getDarkIconName() {
- return darkIconName;
- }
-
- public String getText() {
- return text;
- }
-
- public String getDescription() {
- return description;
- }
-
- public int getOrder() {
- return order;
- }
-
- public Intent getIntentOnClick() {
- return intentOnClick;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(id);
- out.writeString(menuIconName);
- out.writeString(menuTitle);
- out.writeString(lightIconName);
- out.writeString(darkIconName);
- out.writeString(text);
- out.writeString(description);
- out.writeInt(order);
- out.writeParcelable(intentOnClick, flags);
- }
-
- private void readFromParcel(Parcel in) {
- id = in.readString();
- menuIconName = in.readString();
- menuTitle = in.readString();
- lightIconName = in.readString();
- darkIconName = in.readString();
- text = in.readString();
- description = in.readString();
- order = in.readInt();
- intentOnClick = in.readParcelable(Intent.class.getClassLoader());
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AddMapWidgetParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AddMapWidgetParams.aidl
deleted file mode 100644
index 891d338eb8..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AddMapWidgetParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.mapwidget;
-
-parcelable AddMapWidgetParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AddMapWidgetParams.java b/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AddMapWidgetParams.java
deleted file mode 100644
index 69b337209e..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/AddMapWidgetParams.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package net.osmand.aidl.mapwidget;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class AddMapWidgetParams implements Parcelable {
- private AMapWidget widget;
-
- public AddMapWidgetParams(AMapWidget widget) {
- this.widget = widget;
- }
-
- public AddMapWidgetParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Parcelable.Creator<AddMapWidgetParams> CREATOR = new
- Parcelable.Creator<AddMapWidgetParams>() {
- public AddMapWidgetParams createFromParcel(Parcel in) {
- return new AddMapWidgetParams(in);
- }
-
- public AddMapWidgetParams[] newArray(int size) {
- return new AddMapWidgetParams[size];
- }
- };
-
- public AMapWidget getWidget() {
- return widget;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(widget, flags);
- }
-
- private void readFromParcel(Parcel in) {
- widget = in.readParcelable(AMapWidget.class.getClassLoader());
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/RemoveMapWidgetParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/RemoveMapWidgetParams.aidl
deleted file mode 100644
index 445b0c994d..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/RemoveMapWidgetParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.mapwidget;
-
-parcelable RemoveMapWidgetParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/RemoveMapWidgetParams.java b/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/RemoveMapWidgetParams.java
deleted file mode 100644
index e1433d530c..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/RemoveMapWidgetParams.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package net.osmand.aidl.mapwidget;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class RemoveMapWidgetParams implements Parcelable {
- private String id;
-
- public RemoveMapWidgetParams(String id) {
- this.id = id;
- }
-
- public RemoveMapWidgetParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Parcelable.Creator<RemoveMapWidgetParams> CREATOR = new
- Parcelable.Creator<RemoveMapWidgetParams>() {
- public RemoveMapWidgetParams createFromParcel(Parcel in) {
- return new RemoveMapWidgetParams(in);
- }
-
- public RemoveMapWidgetParams[] newArray(int size) {
- return new RemoveMapWidgetParams[size];
- }
- };
-
- public String getId() {
- return id;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(id);
- }
-
- private void readFromParcel(Parcel in) {
- id = in.readString();
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/UpdateMapWidgetParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/UpdateMapWidgetParams.aidl
deleted file mode 100644
index b92f94c008..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/UpdateMapWidgetParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.mapwidget;
-
-parcelable UpdateMapWidgetParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/UpdateMapWidgetParams.java b/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/UpdateMapWidgetParams.java
deleted file mode 100644
index 07114ad16e..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/mapwidget/UpdateMapWidgetParams.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package net.osmand.aidl.mapwidget;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class UpdateMapWidgetParams implements Parcelable {
- private AMapWidget widget;
-
- public UpdateMapWidgetParams(AMapWidget widget) {
- this.widget = widget;
- }
-
- public UpdateMapWidgetParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Parcelable.Creator<UpdateMapWidgetParams> CREATOR = new
- Parcelable.Creator<UpdateMapWidgetParams>() {
- public UpdateMapWidgetParams createFromParcel(Parcel in) {
- return new UpdateMapWidgetParams(in);
- }
-
- public UpdateMapWidgetParams[] newArray(int size) {
- return new UpdateMapWidgetParams[size];
- }
- };
-
- public AMapWidget getWidget() {
- return widget;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeParcelable(widget, flags);
- }
-
- private void readFromParcel(Parcel in) {
- widget = in.readParcelable(AMapWidget.class.getClassLoader());
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerFooterParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerFooterParams.aidl
deleted file mode 100644
index fc1271a8ca..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerFooterParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.navdrawer;
-
-parcelable NavDrawerFooterParams;
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerHeaderParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerHeaderParams.aidl
deleted file mode 100644
index c230824841..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerHeaderParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.navdrawer;
-
-parcelable NavDrawerHeaderParams;
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerItem.aidl b/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerItem.aidl
deleted file mode 100644
index 082061b7f1..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/NavDrawerItem.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.navdrawer;
-
-parcelable NavDrawerItem; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/SetNavDrawerItemsParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/SetNavDrawerItemsParams.aidl
deleted file mode 100644
index 1d34a5cdc5..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navdrawer/SetNavDrawerItemsParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.navdrawer;
-
-parcelable SetNavDrawerItemsParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ADirectionInfo.aidl b/OsmAnd-telegram/src/net/osmand/aidl/navigation/ADirectionInfo.aidl
deleted file mode 100644
index b0793d6e1a..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ADirectionInfo.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.navigation;
-
-parcelable ADirectionInfo;
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ANavigationUpdateParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/navigation/ANavigationUpdateParams.aidl
deleted file mode 100644
index 43f370d024..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ANavigationUpdateParams.aidl
+++ /dev/null
@@ -1,4 +0,0 @@
-
-package net.osmand.aidl.navigation;
-
-parcelable ANavigationUpdateParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ANavigationVoiceRouterMessageParams.java b/OsmAnd-telegram/src/net/osmand/aidl/navigation/ANavigationVoiceRouterMessageParams.java
deleted file mode 100644
index 196380729f..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ANavigationVoiceRouterMessageParams.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package net.osmand.aidl.navigation;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class ANavigationVoiceRouterMessageParams implements Parcelable{
- private boolean subscribeToUpdates = true;
- private long callbackId = -1L;
-
- public ANavigationVoiceRouterMessageParams() {
- }
-
- public long getCallbackId() {
- return callbackId;
- }
-
- public void setCallbackId(long callbackId) {
- this.callbackId = callbackId;
- }
-
- public void setSubscribeToUpdates(boolean subscribeToUpdates) {
- this.subscribeToUpdates = subscribeToUpdates;
- }
-
- public boolean isSubscribeToUpdates() {
- return subscribeToUpdates;
- }
-
- protected ANavigationVoiceRouterMessageParams(Parcel in) {
- callbackId = in.readLong();
- subscribeToUpdates = in.readByte() != 0;
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeLong(callbackId);
- dest.writeByte((byte) (subscribeToUpdates ? 1 : 0));
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- public static final Creator<ANavigationVoiceRouterMessageParams> CREATOR = new Creator<ANavigationVoiceRouterMessageParams>() {
- @Override
- public ANavigationVoiceRouterMessageParams createFromParcel(Parcel in) {
- return new ANavigationVoiceRouterMessageParams(in);
- }
-
- @Override
- public ANavigationVoiceRouterMessageParams[] newArray(int size) {
- return new ANavigationVoiceRouterMessageParams[size];
- }
- };
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/MuteNavigationParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/navigation/MuteNavigationParams.aidl
deleted file mode 100644
index d1205adaf3..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/MuteNavigationParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.navigation;
-
-parcelable MuteNavigationParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateGpxParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateGpxParams.aidl
deleted file mode 100644
index dea59ed048..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateGpxParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.navigation;
-
-parcelable NavigateGpxParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateParams.aidl
deleted file mode 100644
index f9b51d7a8c..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.navigation;
-
-parcelable NavigateParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateSearchParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateSearchParams.aidl
deleted file mode 100644
index 57433b8fde..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/NavigateSearchParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.navigation;
-
-parcelable NavigateSearchParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/OnVoiceNavigationParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/navigation/OnVoiceNavigationParams.aidl
deleted file mode 100644
index 53ab4f6a5c..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/OnVoiceNavigationParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.navigation;
-
-parcelable OnVoiceNavigationParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/OnVoiceNavigationParams.java b/OsmAnd-telegram/src/net/osmand/aidl/navigation/OnVoiceNavigationParams.java
deleted file mode 100644
index 20fd34e13e..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/OnVoiceNavigationParams.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package net.osmand.aidl.navigation;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class OnVoiceNavigationParams implements Parcelable {
-
- private List<String> cmds;
- private List<String> played;
-
- public OnVoiceNavigationParams() {
- cmds = new ArrayList<>();
- played = new ArrayList<>();
- }
-
- public OnVoiceNavigationParams(List<String> cmds, List<String> played) {
- this.cmds = cmds;
- this.played = played;
- }
-
- public OnVoiceNavigationParams(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<OnVoiceNavigationParams> CREATOR = new Creator<OnVoiceNavigationParams>() {
- @Override
- public OnVoiceNavigationParams createFromParcel(Parcel in) {
- return new OnVoiceNavigationParams(in);
- }
-
- @Override
- public OnVoiceNavigationParams[] newArray(int size) {
- return new OnVoiceNavigationParams[size];
- }
- };
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeStringList(cmds);
- out.writeStringList(played);
- }
-
- private void readFromParcel(Parcel in) {
- cmds = new ArrayList<>();
- in.readStringList(cmds);
- played = new ArrayList<>();
- in.readStringList(played);
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/PauseNavigationParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/navigation/PauseNavigationParams.aidl
deleted file mode 100644
index 0a18566304..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/PauseNavigationParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.navigation;
-
-parcelable PauseNavigationParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ResumeNavigationParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/navigation/ResumeNavigationParams.aidl
deleted file mode 100644
index 4dcf619aaa..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/ResumeNavigationParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.navigation;
-
-parcelable ResumeNavigationParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/StopNavigationParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/navigation/StopNavigationParams.aidl
deleted file mode 100644
index 5ba45bdf50..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/StopNavigationParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.navigation;
-
-parcelable StopNavigationParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/navigation/UnmuteNavigationParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/navigation/UnmuteNavigationParams.aidl
deleted file mode 100644
index 7512bbcf34..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/navigation/UnmuteNavigationParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.navigation;
-
-parcelable UnmuteNavigationParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/note/StartAudioRecordingParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/note/StartAudioRecordingParams.aidl
deleted file mode 100644
index bb16dea140..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/note/StartAudioRecordingParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.note;
-
-parcelable StartAudioRecordingParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/note/StartVideoRecordingParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/note/StartVideoRecordingParams.aidl
deleted file mode 100644
index 082b68e09c..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/note/StartVideoRecordingParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.note;
-
-parcelable StartVideoRecordingParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/note/StopRecordingParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/note/StopRecordingParams.aidl
deleted file mode 100644
index 4111efbcb6..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/note/StopRecordingParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.note;
-
-parcelable StopRecordingParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/note/TakePhotoNoteParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/note/TakePhotoNoteParams.aidl
deleted file mode 100644
index 3c09d62c41..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/note/TakePhotoNoteParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.note;
-
-parcelable TakePhotoNoteParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/search/SearchParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/search/SearchParams.aidl
deleted file mode 100644
index dfda88c493..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/search/SearchParams.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.search;
-
-parcelable SearchParams; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/search/SearchResult.aidl b/OsmAnd-telegram/src/net/osmand/aidl/search/SearchResult.aidl
deleted file mode 100644
index caecc7721b..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/search/SearchResult.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.search;
-
-parcelable SearchResult; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/tiles/ASqliteDbFile.aidl b/OsmAnd-telegram/src/net/osmand/aidl/tiles/ASqliteDbFile.aidl
deleted file mode 100644
index 319cfd5035..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/tiles/ASqliteDbFile.aidl
+++ /dev/null
@@ -1,3 +0,0 @@
-package net.osmand.aidl.tiles;
-
-parcelable ASqliteDbFile; \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/aidl/tiles/ASqliteDbFile.java b/OsmAnd-telegram/src/net/osmand/aidl/tiles/ASqliteDbFile.java
deleted file mode 100644
index ac6f5e55d2..0000000000
--- a/OsmAnd-telegram/src/net/osmand/aidl/tiles/ASqliteDbFile.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package net.osmand.aidl.tiles;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.support.annotation.NonNull;
-
-public class ASqliteDbFile implements Parcelable {
-
- private String fileName;
- private long modifiedTime;
- private long fileSize;
- private boolean active;
-
- public ASqliteDbFile(@NonNull String fileName, long modifiedTime, long fileSize, boolean active) {
- this.fileName = fileName;
- this.modifiedTime = modifiedTime;
- this.fileSize = fileSize;
- this.active = active;
- }
-
- public ASqliteDbFile(Parcel in) {
- readFromParcel(in);
- }
-
- public static final Creator<ASqliteDbFile> CREATOR = new
- Creator<ASqliteDbFile>() {
- public ASqliteDbFile createFromParcel(Parcel in) {
- return new ASqliteDbFile(in);
- }
-
- public ASqliteDbFile[] newArray(int size) {
- return new ASqliteDbFile[size];
- }
- };
-
- public String getFileName() {
- return fileName;
- }
-
- public long getModifiedTime() {
- return modifiedTime;
- }
-
- public long getFileSize() {
- return fileSize;
- }
-
- public boolean isActive() {
- return active;
- }
-
- public void writeToParcel(Parcel out, int flags) {
- out.writeString(fileName);
- out.writeLong(modifiedTime);
- out.writeLong(fileSize);
- out.writeByte((byte) (active ? 1 : 0));
- }
-
- private void readFromParcel(Parcel in) {
- fileName = in.readString();
- modifiedTime = in.readLong();
- fileSize = in.readLong();
- active = in.readByte() != 0;
- }
-
- public int describeContents() {
- return 0;
- }
-}
diff --git a/OsmAnd-telegram/src/net/osmand/telegram/helpers/OsmandAidlHelper.kt b/OsmAnd-telegram/src/net/osmand/telegram/helpers/OsmandAidlHelper.kt
index 6ff7d5fe80..456cd1f8fe 100644
--- a/OsmAnd-telegram/src/net/osmand/telegram/helpers/OsmandAidlHelper.kt
+++ b/OsmAnd-telegram/src/net/osmand/telegram/helpers/OsmandAidlHelper.kt
@@ -7,44 +7,44 @@ import android.content.ServiceConnection
import android.net.Uri
import android.os.IBinder
import android.os.RemoteException
-import net.osmand.aidl.IOsmAndAidlCallback
-import net.osmand.aidl.IOsmAndAidlInterface
-import net.osmand.aidl.contextmenu.AContextMenuButton
-import net.osmand.aidl.contextmenu.ContextMenuButtonsParams
-import net.osmand.aidl.contextmenu.RemoveContextMenuButtonsParams
-import net.osmand.aidl.favorite.AFavorite
-import net.osmand.aidl.favorite.AddFavoriteParams
-import net.osmand.aidl.favorite.RemoveFavoriteParams
-import net.osmand.aidl.favorite.UpdateFavoriteParams
-import net.osmand.aidl.favorite.group.AFavoriteGroup
-import net.osmand.aidl.favorite.group.AddFavoriteGroupParams
-import net.osmand.aidl.favorite.group.RemoveFavoriteGroupParams
-import net.osmand.aidl.favorite.group.UpdateFavoriteGroupParams
-import net.osmand.aidl.gpx.*
-import net.osmand.aidl.map.ALatLon
-import net.osmand.aidl.map.SetMapLocationParams
-import net.osmand.aidl.maplayer.AMapLayer
-import net.osmand.aidl.maplayer.AddMapLayerParams
-import net.osmand.aidl.maplayer.RemoveMapLayerParams
-import net.osmand.aidl.maplayer.UpdateMapLayerParams
-import net.osmand.aidl.maplayer.point.*
-import net.osmand.aidl.mapmarker.AMapMarker
-import net.osmand.aidl.mapmarker.AddMapMarkerParams
-import net.osmand.aidl.mapmarker.RemoveMapMarkerParams
-import net.osmand.aidl.mapmarker.UpdateMapMarkerParams
-import net.osmand.aidl.mapwidget.AMapWidget
-import net.osmand.aidl.mapwidget.AddMapWidgetParams
-import net.osmand.aidl.mapwidget.RemoveMapWidgetParams
-import net.osmand.aidl.mapwidget.UpdateMapWidgetParams
-import net.osmand.aidl.navdrawer.NavDrawerItem
-import net.osmand.aidl.navdrawer.SetNavDrawerItemsParams
-import net.osmand.aidl.navigation.*
-import net.osmand.aidl.note.StartAudioRecordingParams
-import net.osmand.aidl.note.StartVideoRecordingParams
-import net.osmand.aidl.note.StopRecordingParams
-import net.osmand.aidl.note.TakePhotoNoteParams
-import net.osmand.aidl.search.SearchParams
-import net.osmand.aidl.search.SearchResult
+import net.osmand.aidlapi.IOsmAndAidlCallback
+import net.osmand.aidlapi.IOsmAndAidlInterface
+import net.osmand.aidlapi.contextmenu.AContextMenuButton
+import net.osmand.aidlapi.contextmenu.ContextMenuButtonsParams
+import net.osmand.aidlapi.contextmenu.RemoveContextMenuButtonsParams
+import net.osmand.aidlapi.favorite.AFavorite
+import net.osmand.aidlapi.favorite.AddFavoriteParams
+import net.osmand.aidlapi.favorite.RemoveFavoriteParams
+import net.osmand.aidlapi.favorite.UpdateFavoriteParams
+import net.osmand.aidlapi.favorite.group.AFavoriteGroup
+import net.osmand.aidlapi.favorite.group.AddFavoriteGroupParams
+import net.osmand.aidlapi.favorite.group.RemoveFavoriteGroupParams
+import net.osmand.aidlapi.favorite.group.UpdateFavoriteGroupParams
+import net.osmand.aidlapi.gpx.*
+import net.osmand.aidlapi.map.ALatLon
+import net.osmand.aidlapi.map.SetMapLocationParams
+import net.osmand.aidlapi.maplayer.AMapLayer
+import net.osmand.aidlapi.maplayer.AddMapLayerParams
+import net.osmand.aidlapi.maplayer.RemoveMapLayerParams
+import net.osmand.aidlapi.maplayer.UpdateMapLayerParams
+import net.osmand.aidlapi.maplayer.point.*
+import net.osmand.aidlapi.mapmarker.AMapMarker
+import net.osmand.aidlapi.mapmarker.AddMapMarkerParams
+import net.osmand.aidlapi.mapmarker.RemoveMapMarkerParams
+import net.osmand.aidlapi.mapmarker.UpdateMapMarkerParams
+import net.osmand.aidlapi.mapwidget.AMapWidget
+import net.osmand.aidlapi.mapwidget.AddMapWidgetParams
+import net.osmand.aidlapi.mapwidget.RemoveMapWidgetParams
+import net.osmand.aidlapi.mapwidget.UpdateMapWidgetParams
+import net.osmand.aidlapi.navdrawer.NavDrawerItem
+import net.osmand.aidlapi.navdrawer.SetNavDrawerItemsParams
+import net.osmand.aidlapi.navigation.*
+import net.osmand.aidlapi.note.StartAudioRecordingParams
+import net.osmand.aidlapi.note.StartVideoRecordingParams
+import net.osmand.aidlapi.note.StopRecordingParams
+import net.osmand.aidlapi.note.TakePhotoNoteParams
+import net.osmand.aidlapi.search.SearchParams
+import net.osmand.aidlapi.search.SearchResult
import net.osmand.telegram.TelegramApplication
import net.osmand.telegram.helpers.ShowLocationHelper.Companion.MAP_LAYER_ID
import java.io.File
@@ -263,7 +263,7 @@ class OsmandAidlHelper(private val app: TelegramApplication) {
private fun bindService(packageName: String): Boolean {
return if (mIOsmAndAidlInterface == null) {
- val intent = Intent("net.osmand.aidl.OsmandAidlService")
+ val intent = Intent("net.osmand.aidl.OsmandAidlServiceV2")
intent.`package` = packageName
app.bindService(intent, mConnection, Context.BIND_AUTO_CREATE)
} else {
@@ -1231,18 +1231,4 @@ class OsmandAidlHelper(private val app: TelegramApplication) {
}
return false
}
-
- fun getGpxColor(filename: String): String? {
- if (mIOsmAndAidlInterface != null) {
- try {
- val gpxColorParams = GpxColorParams(filename)
- if (mIOsmAndAidlInterface!!.getGpxColor(gpxColorParams)) {
- return gpxColorParams.gpxColor
- }
- } catch (e: RemoteException) {
- e.printStackTrace()
- }
- }
- return null
- }
-}
+} \ No newline at end of file
diff --git a/OsmAnd-telegram/src/net/osmand/telegram/helpers/ShowLocationHelper.kt b/OsmAnd-telegram/src/net/osmand/telegram/helpers/ShowLocationHelper.kt
index b5dac721f1..f93b7c7aa9 100644
--- a/OsmAnd-telegram/src/net/osmand/telegram/helpers/ShowLocationHelper.kt
+++ b/OsmAnd-telegram/src/net/osmand/telegram/helpers/ShowLocationHelper.kt
@@ -6,10 +6,10 @@ import android.os.AsyncTask
import android.text.TextUtils
import net.osmand.GPXUtilities
import net.osmand.PlatformUtil
-import net.osmand.aidl.gpx.AGpxFile
-import net.osmand.aidl.map.ALatLon
-import net.osmand.aidl.maplayer.point.AMapPoint
-import net.osmand.aidl.mapmarker.AMapMarker
+import net.osmand.aidlapi.gpx.AGpxFile
+import net.osmand.aidlapi.map.ALatLon
+import net.osmand.aidlapi.maplayer.point.AMapPoint
+import net.osmand.aidlapi.mapmarker.AMapMarker
import net.osmand.telegram.R
import net.osmand.telegram.TelegramApplication
import net.osmand.telegram.helpers.OsmandAidlHelper.ContextMenuButtonsListener
@@ -301,7 +301,7 @@ class ShowLocationHelper(private val app: TelegramApplication) {
val aGpxFile = importedGpxFiles.firstOrNull { it.fileName == name }
if (aGpxFile != null) {
- val color = osmandAidlHelper.getGpxColor(aGpxFile.fileName)
+ val color = aGpxFile.color
if (!color.isNullOrEmpty()) {
gpxFile.extensionsToWrite["color"] = color
}
diff --git a/OsmAnd-telegram/src/net/osmand/telegram/ui/UserGpxInfoFragment.kt b/OsmAnd-telegram/src/net/osmand/telegram/ui/UserGpxInfoFragment.kt
index 2e8d6d381c..355c4916a1 100644
--- a/OsmAnd-telegram/src/net/osmand/telegram/ui/UserGpxInfoFragment.kt
+++ b/OsmAnd-telegram/src/net/osmand/telegram/ui/UserGpxInfoFragment.kt
@@ -24,7 +24,7 @@ import android.widget.TextView
import android.widget.Toast
import net.osmand.GPXUtilities
import net.osmand.PlatformUtil
-import net.osmand.aidl.gpx.AGpxBitmap
+import net.osmand.aidlapi.gpx.AGpxBitmap
import net.osmand.telegram.R
import net.osmand.telegram.TelegramApplication
import net.osmand.telegram.TelegramSettings
diff --git a/OsmAnd/AndroidManifest.xml b/OsmAnd/AndroidManifest.xml
index c77d6116e4..c26588dc6b 100644
--- a/OsmAnd/AndroidManifest.xml
+++ b/OsmAnd/AndroidManifest.xml
@@ -867,6 +867,13 @@
</intent-filter>
</service>
+ <service android:name="net.osmand.aidl.OsmandAidlServiceV2" android:exported="true" >
+ <intent-filter>
+ <action android:name="net.osmand.aidl.OsmandAidlServiceV2"/>
+ <category android:name="android.intent.category.DEFAULT"/>
+ </intent-filter>
+ </service>
+
<service
android:name="net.osmand.plus.download.DownloadService"
android:label="@string/process_downloading_service"
diff --git a/OsmAnd/build.gradle b/OsmAnd/build.gradle
index 81f1a8e6c3..a8dc4c4202 100644
--- a/OsmAnd/build.gradle
+++ b/OsmAnd/build.gradle
@@ -433,6 +433,7 @@ task appStart(type: Exec) {
dependencies {
implementation project(path: ':OsmAnd-java', configuration: 'android')
+ implementation project(':OsmAnd-api')
implementation 'com.android.support:multidex:1.0.1'
implementation 'com.android.support:gridlayout-v7:27.1.1'
implementation 'com.android.support:cardview-v7:27.1.1'
diff --git a/OsmAnd/res/drawable-hdpi/ic_action_openstreetmap_logo.png b/OsmAnd/res/drawable-hdpi/ic_action_openstreetmap_logo.png
index 546d3cbbd8..9eb04b9eaf 100644
--- a/OsmAnd/res/drawable-hdpi/ic_action_openstreetmap_logo.png
+++ b/OsmAnd/res/drawable-hdpi/ic_action_openstreetmap_logo.png
Binary files differ
diff --git a/OsmAnd/res/drawable-hdpi/ic_action_utv.png b/OsmAnd/res/drawable-hdpi/ic_action_utv.png
new file mode 100644
index 0000000000..7c34c8c326
--- /dev/null
+++ b/OsmAnd/res/drawable-hdpi/ic_action_utv.png
Binary files differ
diff --git a/OsmAnd/res/drawable-hdpi/ic_action_width_limit.png b/OsmAnd/res/drawable-hdpi/ic_action_width_limit.png
index 46461d5fbe..9e26514e13 100755..100644
--- a/OsmAnd/res/drawable-hdpi/ic_action_width_limit.png
+++ b/OsmAnd/res/drawable-hdpi/ic_action_width_limit.png
Binary files differ
diff --git a/OsmAnd/res/drawable-hdpi/ic_sdcard.png b/OsmAnd/res/drawable-hdpi/ic_sdcard.png
index b8b5e25574..c72f6aec99 100644
--- a/OsmAnd/res/drawable-hdpi/ic_sdcard.png
+++ b/OsmAnd/res/drawable-hdpi/ic_sdcard.png
Binary files differ
diff --git a/OsmAnd/res/drawable-hdpi/map_action_utv.png b/OsmAnd/res/drawable-hdpi/map_action_utv.png
new file mode 100644
index 0000000000..7c34c8c326
--- /dev/null
+++ b/OsmAnd/res/drawable-hdpi/map_action_utv.png
Binary files differ
diff --git a/OsmAnd/res/drawable-large-hdpi/map_action_utv.png b/OsmAnd/res/drawable-large-hdpi/map_action_utv.png
new file mode 100755
index 0000000000..6bf13b2a85
--- /dev/null
+++ b/OsmAnd/res/drawable-large-hdpi/map_action_utv.png
Binary files differ
diff --git a/OsmAnd/res/drawable-large-xhdpi/map_action_utv.png b/OsmAnd/res/drawable-large-xhdpi/map_action_utv.png
new file mode 100755
index 0000000000..e93b45be5c
--- /dev/null
+++ b/OsmAnd/res/drawable-large-xhdpi/map_action_utv.png
Binary files differ
diff --git a/OsmAnd/res/drawable-large/map_action_utv.png b/OsmAnd/res/drawable-large/map_action_utv.png
new file mode 100755
index 0000000000..7c34c8c326
--- /dev/null
+++ b/OsmAnd/res/drawable-large/map_action_utv.png
Binary files differ
diff --git a/OsmAnd/res/drawable-mdpi/ic_action_openstreetmap_logo.png b/OsmAnd/res/drawable-mdpi/ic_action_openstreetmap_logo.png
index f1ec5f4784..8283adb943 100644..100755
--- a/OsmAnd/res/drawable-mdpi/ic_action_openstreetmap_logo.png
+++ b/OsmAnd/res/drawable-mdpi/ic_action_openstreetmap_logo.png
Binary files differ
diff --git a/OsmAnd/res/drawable-mdpi/ic_action_utv.png b/OsmAnd/res/drawable-mdpi/ic_action_utv.png
new file mode 100755
index 0000000000..c65fd59dfa
--- /dev/null
+++ b/OsmAnd/res/drawable-mdpi/ic_action_utv.png
Binary files differ
diff --git a/OsmAnd/res/drawable-mdpi/ic_action_width_limit.png b/OsmAnd/res/drawable-mdpi/ic_action_width_limit.png
index d462b87538..a55525dc2b 100755
--- a/OsmAnd/res/drawable-mdpi/ic_action_width_limit.png
+++ b/OsmAnd/res/drawable-mdpi/ic_action_width_limit.png
Binary files differ
diff --git a/OsmAnd/res/drawable-mdpi/map_action_utv.png b/OsmAnd/res/drawable-mdpi/map_action_utv.png
new file mode 100755
index 0000000000..c65fd59dfa
--- /dev/null
+++ b/OsmAnd/res/drawable-mdpi/map_action_utv.png
Binary files differ
diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_openstreetmap_logo.png b/OsmAnd/res/drawable-xhdpi/ic_action_openstreetmap_logo.png
index 6e1783b1a3..5556cf200f 100644..100755
--- a/OsmAnd/res/drawable-xhdpi/ic_action_openstreetmap_logo.png
+++ b/OsmAnd/res/drawable-xhdpi/ic_action_openstreetmap_logo.png
Binary files differ
diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_utv.png b/OsmAnd/res/drawable-xhdpi/ic_action_utv.png
new file mode 100755
index 0000000000..6bf13b2a85
--- /dev/null
+++ b/OsmAnd/res/drawable-xhdpi/ic_action_utv.png
Binary files differ
diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_width_limit.png b/OsmAnd/res/drawable-xhdpi/ic_action_width_limit.png
index 72825af54a..ccdd283c09 100755
--- a/OsmAnd/res/drawable-xhdpi/ic_action_width_limit.png
+++ b/OsmAnd/res/drawable-xhdpi/ic_action_width_limit.png
Binary files differ
diff --git a/OsmAnd/res/drawable-xhdpi/map_action_utv.png b/OsmAnd/res/drawable-xhdpi/map_action_utv.png
new file mode 100755
index 0000000000..6bf13b2a85
--- /dev/null
+++ b/OsmAnd/res/drawable-xhdpi/map_action_utv.png
Binary files differ
diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_openstreetmap_logo.png b/OsmAnd/res/drawable-xxhdpi/ic_action_openstreetmap_logo.png
index cf79a126f2..11213d2703 100644..100755
--- a/OsmAnd/res/drawable-xxhdpi/ic_action_openstreetmap_logo.png
+++ b/OsmAnd/res/drawable-xxhdpi/ic_action_openstreetmap_logo.png
Binary files differ
diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_utv.png b/OsmAnd/res/drawable-xxhdpi/ic_action_utv.png
new file mode 100755
index 0000000000..e93b45be5c
--- /dev/null
+++ b/OsmAnd/res/drawable-xxhdpi/ic_action_utv.png
Binary files differ
diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_width_limit.png b/OsmAnd/res/drawable-xxhdpi/ic_action_width_limit.png
index 2448d65224..ae27e1df86 100755
--- a/OsmAnd/res/drawable-xxhdpi/ic_action_width_limit.png
+++ b/OsmAnd/res/drawable-xxhdpi/ic_action_width_limit.png
Binary files differ
diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_utv.png b/OsmAnd/res/drawable-xxhdpi/map_action_utv.png
new file mode 100755
index 0000000000..e93b45be5c
--- /dev/null
+++ b/OsmAnd/res/drawable-xxhdpi/map_action_utv.png
Binary files differ
diff --git a/OsmAnd/res/drawable-xxxhdpi/ic_action_openstreetmap_logo.png b/OsmAnd/res/drawable-xxxhdpi/ic_action_openstreetmap_logo.png
new file mode 100755
index 0000000000..a839fa92e6
--- /dev/null
+++ b/OsmAnd/res/drawable-xxxhdpi/ic_action_openstreetmap_logo.png
Binary files differ
diff --git a/OsmAnd/res/drawable-xxxhdpi/ic_action_utv.png b/OsmAnd/res/drawable-xxxhdpi/ic_action_utv.png
new file mode 100755
index 0000000000..8d9b9aab8e
--- /dev/null
+++ b/OsmAnd/res/drawable-xxxhdpi/ic_action_utv.png
Binary files differ
diff --git a/OsmAnd/res/drawable-xxxhdpi/ic_action_width_limit.png b/OsmAnd/res/drawable-xxxhdpi/ic_action_width_limit.png
index e44daa91d1..7bd5635afd 100755
--- a/OsmAnd/res/drawable-xxxhdpi/ic_action_width_limit.png
+++ b/OsmAnd/res/drawable-xxxhdpi/ic_action_width_limit.png
Binary files differ
diff --git a/OsmAnd/res/drawable-xxxhdpi/map_action_utv.png b/OsmAnd/res/drawable-xxxhdpi/map_action_utv.png
new file mode 100755
index 0000000000..8d9b9aab8e
--- /dev/null
+++ b/OsmAnd/res/drawable-xxxhdpi/map_action_utv.png
Binary files differ
diff --git a/OsmAnd/res/layout/data_storage_memory_used_item.xml b/OsmAnd/res/layout/data_storage_memory_used_item.xml
new file mode 100644
index 0000000000..0653b8b681
--- /dev/null
+++ b/OsmAnd/res/layout/data_storage_memory_used_item.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:osmand="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:background="?attr/list_background_color"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/card_row_min_height"
+ android:orientation="horizontal">
+
+ <android.support.v7.widget.AppCompatImageView
+ android:id="@android:id/icon"
+ android:layout_width="@dimen/standard_icon_size"
+ android:layout_height="@dimen/standard_icon_size"
+ android:layout_gravity="center"
+ android:layout_marginLeft="@dimen/content_padding"
+ android:layout_marginRight="@dimen/content_padding"
+ android:src="@drawable/mm_storage_tank"
+ android:tint="?attr/default_icon_color"
+ tools:tint="?attr/default_icon_color" />
+
+ <net.osmand.plus.widgets.TextViewEx
+ android:id="@android:id/title"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1"
+ android:textColor="?android:textColorPrimary"
+ android:textSize="@dimen/default_desc_text_size"
+ android:paddingLeft="@dimen/content_padding"
+ osmand:typeface="@string/font_roboto_regular"
+ tools:text="Internal application memory" />
+
+ <net.osmand.plus.widgets.TextViewEx
+ android:id="@+id/memory"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:background="@null"
+ android:clickable="true"
+ android:focusable="true"
+ android:paddingLeft="@dimen/content_padding"
+ android:paddingRight="@dimen/content_padding"
+ android:textSize="@dimen/default_desc_text_size"
+ osmand:typeface="@string/font_roboto_regular"
+ tools:text="6.7 GB" />
+
+</LinearLayout> \ No newline at end of file
diff --git a/OsmAnd/res/layout/divider_padding_half.xml b/OsmAnd/res/layout/divider_padding_half.xml
new file mode 100644
index 0000000000..55fec44417
--- /dev/null
+++ b/OsmAnd/res/layout/divider_padding_half.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="?attr/list_background_color">
+
+ <View
+ android:id="@+id/topSpace"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/content_padding_half" />
+
+ <View
+ android:id="@+id/divider"
+ android:layout_width="match_parent"
+ android:layout_height="1dp"
+ android:background="?attr/dashboard_divider"
+ android:focusable="false" />
+
+ <View
+ android:id="@+id/bottomSpace"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/content_padding_half" />
+
+</LinearLayout> \ No newline at end of file
diff --git a/OsmAnd/res/layout/preference_category_with_right_text.xml b/OsmAnd/res/layout/preference_category_with_right_text.xml
new file mode 100644
index 0000000000..3cafb66aed
--- /dev/null
+++ b/OsmAnd/res/layout/preference_category_with_right_text.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:osmand="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/card_row_min_height"
+ android:background="?attr/list_background_color"
+ android:gravity="center_vertical"
+ android:minHeight="@dimen/bottom_sheet_cancel_button_height_small"
+ android:orientation="horizontal">
+
+ <net.osmand.plus.widgets.TextViewEx
+ android:id="@android:id/title"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:layout_height="wrap_content"
+ android:textColor="@color/preference_category_title"
+ android:layout_gravity="center_vertical|start"
+ android:paddingLeft="@dimen/content_padding"
+ android:paddingRight="@dimen/content_padding"
+ android:textSize="@dimen/default_desc_text_size"
+ osmand:typeface="@string/font_roboto_medium"
+ tools:text="@string/plugin_settings" />
+
+ <net.osmand.plus.widgets.TextViewEx
+ android:id="@+id/summary"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical|end"
+ android:paddingLeft="@dimen/content_padding"
+ android:paddingRight="@dimen/content_padding"
+ android:textColor="?android:textColorPrimary"
+ android:textSize="@dimen/default_desc_text_size"
+ osmand:typeface="@string/font_roboto_medium"
+ tools:text="summary" />
+
+</LinearLayout> \ No newline at end of file
diff --git a/OsmAnd/res/values-ast/phrases.xml b/OsmAnd/res/values-ast/phrases.xml
index a6b3daec93..8f54bce23a 100644
--- a/OsmAnd/res/values-ast/phrases.xml
+++ b/OsmAnd/res/values-ast/phrases.xml
@@ -1,2 +1,142 @@
<?xml version="1.0" encoding="utf-8"?>
-<resources></resources> \ No newline at end of file
+<resources>
+ <string name="poi_fuel_type">Tipu de combustible</string>
+ <string name="poi_fuel_avia_type">Tipu de combustible (avia)</string>
+ <string name="poi_payment_type">Tipu de pagu</string>
+ <string name="poi_payment_fuel_type">Tarxetes pa carburantes</string>
+ <string name="poi_additional_type">Adicional</string>
+ <string name="poi_internet_access_type">Tipu d\'accesu a Internet</string>
+ <string name="poi_vending_type">Tipu de máquines de venta</string>
+ <string name="poi_bicycle_service">Serviciu pa bicicletes</string>
+ <string name="poi_clothes_type">Tipu de ropa</string>
+ <string name="poi_shoes_type">Tipu de calzáu</string>
+ <string name="poi_fire_hydrant_type">Tipu</string>
+ <string name="poi_fire_hydrant_position">Posición</string>
+ <string name="poi_fire_hydrant_water_source">Orixe del agua</string>
+ <string name="poi_payment_toll_type">Tipu de pagu</string>
+ <string name="poi_traffic_signals_sound">Soníu</string>
+ <string name="poi_highway_crossing_type">Tipu</string>
+ <string name="poi_tactile_paving">Suelu táctil</string>
+ <string name="poi_service_general">Serviciu</string>
+ <string name="poi_brushless">Ensin escobes</string>
+ <string name="poi_self_service">Autoserviciu</string>
+ <string name="poi_automated">Automáticu</string>
+ <string name="poi_parking_type">Tipu</string>
+ <string name="poi_covered">Cubiertu</string>
+ <string name="poi_subway_station_filter">Estación de metro</string>
+ <string name="poi_ferry_terminal_cargo">Mercancíes</string>
+ <string name="poi_bicycle_parking_type">Tipu</string>
+ <string name="poi_aerialway_bicycle">Tresporte de bicicletes</string>
+ <string name="poi_aerialway_heating">Calefacción</string>
+ <string name="poi_pump">Bomba</string>
+ <string name="poi_observatory_designation">Categoría</string>
+ <string name="poi_telescope_type">Tipu</string>
+ <string name="poi_animal_training_type">Tipu</string>
+ <string name="poi_embassy_type">Tipu</string>
+ <string name="poi_city_capital">Capital</string>
+ <string name="poi_pharmacy_dispensing">Dispensa recetes</string>
+ <string name="poi_healthcare_alternative_types">Especialidá</string>
+ <string name="poi_free_flying_characteristics">Carauterístiques</string>
+ <string name="poi_archaeological_site_type">Tipu</string>
+ <string name="poi_star_rating">Valoración por estrelles</string>
+ <string name="poi_religion_type">Relixón</string>
+ <string name="poi_denomination">Denominación</string>
+ <string name="poi_information_type">Tipu</string>
+ <string name="poi_information_contents">Conteníu</string>
+ <string name="poi_clock_option">Adicional</string>
+ <string name="poi_scout_camp">Campamentu scout</string>
+ <string name="poi_backcountry">Acampada llibre</string>
+ <string name="poi_resort_type">Tipu</string>
+ <string name="poi_piste_difficulty">Dificultá de la pista</string>
+ <string name="poi_piste_grooming">Cuidaos de la pista</string>
+ <string name="poi_theatre_genre">Xéneru</string>
+ <string name="poi_outdoor_seating">Terraza</string>
+ <string name="poi_fee">Tasa</string>
+ <string name="poi_smoking">Fumadores</string>
+ <string name="poi_delivery">Entrega</string>
+ <string name="poi_drive_in">Carril de compra</string>
+ <string name="poi_drive_through">Serviciu nel automóvil</string>
+ <string name="poi_takeaway">Pa llevar</string>
+ <string name="poi_cocktails">Cócteles</string>
+ <string name="poi_microbrewery">Cervecería artesanal</string>
+ <string name="poi_beauty_salon_service">Serviciu</string>
+ <string name="poi_recycling_type">Tipu</string>
+ <string name="poi_recycling_accepted_waste">Residuos aceutaos</string>
+ <string name="poi_shelter_type">Tipu</string>
+ <string name="poi_fireplace">Llar</string>
+ <string name="poi_seasonal">Estacional</string>
+ <string name="poi_water_characteristic">Tipu d\'agua</string>
+ <string name="poi_beach_surface_type">Superficie</string>
+ <string name="poi_nudism">Nudismu</string>
+ <string name="poi_diet">Réxime</string>
+ <string name="poi_health_specialty">Especialidá sanitaria</string>
+ <string name="poi_massage_type">Tipu de masaxe</string>
+ <string name="poi_tents">Tiendes de campaña</string>
+ <string name="poi_washing_machine">Llavadora</string>
+ <string name="poi_caravans">Caravanes</string>
+ <string name="poi_power_supply">Suministru eléctricu</string>
+ <string name="poi_medical_system">Sistema médicu</string>
+ <string name="poi_home_visit">Visites a domiciliu</string>
+ <string name="poi_dish">Platu</string>
+ <string name="poi_payment_transport_type">Forma de pagu (tresporte)</string>
+ <string name="poi_social_facility_type">Tipu</string>
+ <string name="poi_social_facility_for">Grupu destinatariu</string>
+ <string name="poi_compressed_air_filter">Aire comprimíu</string>
+ <string name="poi_vacuum_cleaner_filter">Aspiradora</string>
+ <string name="poi_free_flying_characteristic">Carauterístiques</string>
+ <string name="poi_cafeteria">Cafetería</string>
+ <string name="poi_zoo_type">Tipu</string>
+ <string name="poi_motorcycle_services">Servicios</string>
+ <string name="poi_motorcycle_type">Tipos de motos</string>
+ <string name="poi_animal_shelter_type">Animales aceutaos</string>
+ <string name="poi_animal_shelter_purpose">Finalidá</string>
+ <string name="poi_boat_rental_type">Embarcaciones d\'alquiler</string>
+ <string name="poi_operational_status">Estau operativu</string>
+ <string name="poi_water_supply_type">Tipu d\'abastecimientu d\'agua</string>
+ <string name="poi_water_purification">Depuración d\'agua</string>
+ <string name="poi_climbing_style">Estilu d\'escalada</string>
+ <string name="poi_socket">Conector</string>
+ <string name="poi_socket_chademo_output_filter">Conector CHAdeMO</string>
+ <string name="poi_socket_type2_output_filter">Conector tipu 2</string>
+ <string name="poi_socket_type2_combo_output_filter">Conector combináu tipu 2</string>
+ <string name="poi_socket_type3_output_filter">Conector tipu 3</string>
+ <string name="poi_socket_cee_blue_output_filter">Conector CEE azul</string>
+ <string name="poi_socket_schuko_output_filter">Conector Schuko</string>
+ <string name="poi_service_car">Serviciu pa automóviles</string>
+ <string name="poi_glacier_type">Tipu de glaciar</string>
+ <string name="poi_checkpoint_type">Tipu de puntu de control</string>
+ <string name="poi_bulk_purchase">Venta al por mayor</string>
+ <string name="poi_substation_type">Tipu</string>
+ <string name="poi_books_type">Llibros</string>
+ <string name="poi_denotation">Denotación</string>
+ <string name="poi_park_ride">Aparcamientu disuasoriu</string>
+ <string name="poi_rtsa_scale_filter">Categoría de dificultá</string>
+ <string name="poi_standpipe">Toma de bomberos</string>
+ <string name="poi_payment_electronic_purses_yes">Monederos electrónicos</string>
+ <string name="poi_fuel_adblue">Combustible AdBlue</string>
+ <string name="poi_crop_poultry">Producción: avícola</string>
+ <string name="poi_historic_civilization_nuragic">Civilización: nuráxica (s. 18 eC – s. 2 dC)</string>
+ <string name="poi_valley_balka">Balka (pequeñu valle)</string>
+ <string name="poi_stands">Graderíu</string>
+ <string name="poi_direction_anticlockwise">Direición: a la izquierda (antihoraria)</string>
+ <string name="poi_surface_clay">magre</string>
+ <string name="poi_socket_type1">Conector: Tipu 1</string>
+ <string name="poi_checkpoint_type_code">Códigu</string>
+ <string name="poi_checkpoint_type_needler">Perforadora</string>
+ <string name="poi_license_classes">Clases de llicencia</string>
+ <string name="poi_rtsa_scale_nc">н/к</string>
+ <string name="poi_climbing_crag_filter">Escuela d\'escalada</string>
+ <string name="poi_climbing_crag">Sí</string>
+ <string name="poi_snowmobile_filter">Accesu pa motos de nieve</string>
+ <string name="poi_access_bus">Accesu p\'autobuses</string>
+ <string name="poi_access_caravan">Accesu pa caravanes</string>
+ <string name="poi_access_motorhome">Accesu p\'autocaravanes</string>
+ <string name="poi_access_trailer">Accesu pa remolques (trailer)</string>
+ <string name="poi_access_motorcycle">Accesu pa motocicletes</string>
+ <string name="poi_access_moped">Accesu pa ciclomotores</string>
+ <string name="poi_access_mofa">Accesu pa bicimotos</string>
+ <string name="poi_access_hgv">Accesu pa vehículos pesaos</string>
+ <string name="poi_access_goods">Accesu pa furgonetes</string>
+ <string name="poi_snowmobile_no">Accesu pa motos de neve: non</string>
+ <string name="poi_disabled_yes">Si</string>
+</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-b+ast/strings.xml b/OsmAnd/res/values-b+ast/strings.xml
index f2aa616f20..56b9867cef 100644
--- a/OsmAnd/res/values-b+ast/strings.xml
+++ b/OsmAnd/res/values-b+ast/strings.xml
@@ -83,8 +83,8 @@
<string name="gps_network_not_enabled">Nun s\'activó\'l serviciu d\'allugamientu. ¿Activalu\?</string>
<string name="shared_string_wikipedia">Wikipedia</string>
<string name="local_indexes_cat_wiki">Wikipedia</string>
- <string name="application_dir_change_warning3">¿Copiar los ficheros d\'OsmAnd al destín nuevu\?</string>
- <string name="copying_osmand_file_failed">Falló la copia de ficheros</string>
+ <string name="application_dir_change_warning3">¿Mover los ficheros d\'OsmAnd al destín nuevu\?</string>
+ <string name="copying_osmand_file_failed">Fallu al mover los ficheros</string>
<string name="storage_directory_external">Almacenamientu esternu</string>
<string name="storage_directory_multiuser">Almacenamientu multiusuariu</string>
<string name="storage_directory_default">Memoria interna</string>
@@ -100,7 +100,7 @@
<string name="shared_string_ellipsis">…</string>
<string name="routing_settings_2">Axustes de la navegación</string>
<string name="general_settings_2">Axustes xenerales</string>
- <string name="shared_string_ok">Val</string>
+ <string name="shared_string_ok">Aceutar</string>
<string name="shared_string_cancel">Encaboxar</string>
<string name="shared_string_yes">Sí</string>
<string name="shared_string_do_not_use">Nun usar</string>
@@ -273,7 +273,7 @@
<string name="lang_ro">Rumanu</string>
<string name="lang_ru">Rusu</string>
<string name="lang_sc">Sardu</string>
- <string name="lang_sr">Serbiu</string>
+ <string name="lang_sr">Serbiu (cirílicu)</string>
<string name="lang_zh_cn">Chinu simplificáu</string>
<string name="lang_sk">Eslovacu</string>
<string name="lang_sl">Eslovenu</string>
@@ -828,7 +828,7 @@
<string name="ascent_descent">Ascendente/descendente</string>
<string name="home">Panel</string>
<string name="always_center_position_on_map">Amosar la posición nel centru siempres</string>
- <string name="lang_sr_latn">Serbiu llatín</string>
+ <string name="lang_sr_latn">Serbiu (llatín)</string>
<string name="lang_zh_hk">Chinu (Ḥong Kong)</string>
<string name="lang_gn_py">Guaraní</string>
<string name="route_descr_select_destination">Esbilla\'l destín</string>
@@ -1345,7 +1345,7 @@
<string name="rendering_attr_surface_concrete_name">Formigón</string>
<string name="rendering_attr_surface_gravel_name">Grava</string>
<string name="rendering_attr_surface_fine_gravel_name">Grava fino</string>
- <string name="step_by_step">Pasu a pasu</string>
+ <string name="step_by_step">Xiru a xiru</string>
<string name="start_search_from_city">Esbillar primero la ciudá</string>
<string name="modify_the_search_query">Modifica la consulta de gueta.</string>
<string name="type_city_town">Teclexa una ciudá o villa</string>
@@ -1373,7 +1373,7 @@
<string name="route_head">De frente</string>
<string name="app_mode_pedestrian">Andadura</string>
<string name="routeInfo_surface_name">Superficie</string>
- <string name="angular_measeurement">Unidaes de midida angular</string>
+ <string name="angular_measeurement">Unidá angular</string>
<string name="angular_measeurement_descr">Camuda en qué se mide l\'acimut.</string>
<string name="previous_route">Ruta anterior</string>
<string name="on_foot">A pie</string>
@@ -1389,4 +1389,15 @@
\nL\'allugamientu y el tiempu son visibles nel panel d\'OsmAnd amás de nun widget na pantalla del mapa. Pue amestase una alarma al calendariu d\'Android como recordatoriu.</string>
<string name="localization_pref_title">Traducción</string>
<string name="plan_route">Planificar una ruta</string>
+ <string name="shared_string_search">Guetar</string>
+ <string name="searching_gps">Guetando GPS</string>
+ <string name="days_2_4">Díes</string>
+ <string name="price_free">De baldre</string>
+ <string name="get_discount_title">Consigui %1$d %2$s con un %3$s de descuentu.</string>
+ <string name="get_discount_first_part">%1$s los primeros %2$s</string>
+ <string name="get_discount_first_few_part">%1$s los primeros %2$s</string>
+ <string name="get_discount_second_part">llueu %1$s</string>
+ <string name="configure_profile_info">Tolos axustes qu\'apaecen darréu afeuten únicamente al perfil escoyíu.</string>
+ <string name="shared_string_example">Exemplu</string>
+ <string name="wake_time">Hora d\'activamientu</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml
index 857f7f6c70..cd5001b4a9 100644
--- a/OsmAnd/res/values-ca/strings.xml
+++ b/OsmAnd/res/values-ca/strings.xml
@@ -3266,4 +3266,19 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="shared_string_by_default">Predeterminat</string>
<string name="download_detaile_map">Baixeu el mapa detallat %s per veure aquesta àrea.</string>
<string name="route_parameters">Paràmetres de la ruta</string>
+ <string name="change_data_storage_full_description">Voleu moure els arxius de dades OsmAnd a una nova destinació\?
+\n%1$s &gt; %2$s</string>
+ <string name="data_storage_preference_summary">%1$s • Usat %2$s GB</string>
+ <string name="data_storage_space_description">Lliure %1$s • %2$s / %3$s GB</string>
+ <string name="enter_path_to_folder">Introduïu el camí a la carpeta</string>
+ <string name="shared_string_select_folder">Seleccioneu la carpeta</string>
+ <string name="paste_Osmand_data_folder_path">Enganxa el camí a la carpeta amb les dades d\'OsmAnd</string>
+ <string name="change_osmand_data_folder_question">Voleu canviar la carpeta de dades de OsmAnd\?</string>
+ <string name="move_maps_to_new_destination">Desplaça a la nova destinació</string>
+ <string name="avoid_in_routing_descr_">Evita determinades rutes i tipus de carretera</string>
+ <string name="internal_app_storage_description">Emmagatzematge intern, amagat a l\'usuari i a les altres aplicacions, de manera que només OsmAnd pot accedir a les vostres dades</string>
+ <string name="change_data_storage_folder">Canvia la carpeta d\'emmagatzematge de dades</string>
+ <string name="rendering_attr_piste_type_snow_park_name">Parc de neu</string>
+ <string name="rendering_attr_piste_type_sleigh_name">Trineu</string>
+ <string name="app_mode_utv">Costat a costat</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml
index 96623f093e..3fd7bbab3e 100644
--- a/OsmAnd/res/values-da/phrases.xml
+++ b/OsmAnd/res/values-da/phrases.xml
@@ -3733,4 +3733,6 @@
<string name="poi_craft_floorer">Gulvlægger</string>
<string name="poi_craft_bakery">Bager</string>
<string name="poi_craft_cabinet_maker">Møbelsnedker</string>
+ <string name="poi_charge">Gebyr</string>
+ <string name="poi_pet_grooming">Kæledyrspleje</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml
index 05dc4c4dd7..a3835c0a68 100644
--- a/OsmAnd/res/values-da/strings.xml
+++ b/OsmAnd/res/values-da/strings.xml
@@ -3300,7 +3300,7 @@ Repræsenterer område: %1$s x %2$s</string>
<string name="change_data_storage_full_description">Flyt datafiler til den nye destination\?
\n%1$s&gt;%2$s</string>
<string name="data_storage_preference_summary">%1$s • Anvendt %2$s GB</string>
- <string name="data_storage_space_description">Tilgængeligt %1$s • %2$s / %3$s GB</string>
+ <string name="data_storage_space_description">Tilgængeligt %1$s GB • Total %2$s GB</string>
<string name="enter_path_to_folder">Indtast sti til mappen</string>
<string name="shared_string_select_folder">Vælg mappe</string>
<string name="paste_Osmand_data_folder_path">Indsæt sti til mappen med data</string>
@@ -3328,4 +3328,16 @@ Repræsenterer område: %1$s x %2$s</string>
<string name="routeInfo_piste_difficulty_name">Pistesværhedsgrad</string>
<string name="routing_attr_width_name">Breddegrænse</string>
<string name="routing_attr_width_description">Angiv tilladt køretøjsbredde på ruter.</string>
+ <string name="avoid_in_routing_descr_">Undgå visse ruter og vejtyper</string>
+ <string name="app_mode_utv">Side om side</string>
+ <string name="rendering_attr_piste_difficulty_aerialway_name">Lift</string>
+ <string name="rendering_attr_piste_difficulty_connection_name">Forbindelse</string>
+ <string name="shared_string_calculate">Beregn</string>
+ <string name="shared_string_osmand_usage">OsmAnd brug</string>
+ <string name="shared_sting_tiles">Fliser</string>
+ <string name="shared_string_maps">Kort</string>
+ <string name="shared_string_memory_tb_desc">%1$s TB</string>
+ <string name="shared_string_memory_gb_desc">%1$s GB</string>
+ <string name="shared_string_memory_mb_desc">%1$s MB</string>
+ <string name="shared_string_memory_kb_desc">%1$s KB</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-de/phrases.xml b/OsmAnd/res/values-de/phrases.xml
index fd6d16c80c..317f61899e 100644
--- a/OsmAnd/res/values-de/phrases.xml
+++ b/OsmAnd/res/values-de/phrases.xml
@@ -3728,4 +3728,6 @@
<string name="poi_craft_floorer">Bodenleger</string>
<string name="poi_craft_bakery">Backstube</string>
<string name="poi_craft_cabinet_maker">Möbeltischler</string>
+ <string name="poi_charge">Gebühr</string>
+ <string name="poi_pet_grooming">Haustierpflege</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml
index 7d20dacd63..ea5f242010 100644
--- a/OsmAnd/res/values-de/strings.xml
+++ b/OsmAnd/res/values-de/strings.xml
@@ -3267,7 +3267,7 @@ Abgedeckte Fläche: %1$s x %2$s</string>
<string name="wake_time">Aufwachzeit</string>
<string name="units_and_formats">Einheiten und Formate</string>
<string name="appearance">Aussehen</string>
- <string name="map_look_descr">Symbole, Widgets</string>
+ <string name="map_look_descr">Kartendarstellung</string>
<string name="map_look">Kartendarstellung</string>
<string name="list_of_installed_plugins">Liste installierter Module</string>
<string name="configure_navigation">Navigation konfigurieren</string>
@@ -3301,4 +3301,47 @@ Abgedeckte Fläche: %1$s x %2$s</string>
<string name="plugins_settings">Plugin-Einstellungen</string>
<string name="shared_string_by_default">Standardmäßig</string>
<string name="download_detaile_map">"Detaillierte Karte %s herunterladen, um diesen Bereich zu sehen."</string>
+ <string name="download_detailed_map">Laden Sie die detaillierte %s-Karte herunter, um diesen Bereich zu sehen.</string>
+ <string name="change_data_storage_full_description">OsmAnd-Datendateien an das neue Ziel verschieben\?
+\n%1 s &gt; %2 s</string>
+ <string name="data_storage_preference_summary">%1$s • Verwendet %2$s GB</string>
+ <string name="data_storage_space_description">Frei %1$s GB • Insgesamt %2$s GB</string>
+ <string name="enter_path_to_folder">Geben Sie den Pfad zum Ordner ein</string>
+ <string name="shared_string_select_folder">Ordner auswählen</string>
+ <string name="paste_Osmand_data_folder_path">Einfügen des Pfades zum Ordner mit OsmAnd-Daten</string>
+ <string name="change_osmand_data_folder_question">OsmAnd-Datenordner ändern\?</string>
+ <string name="move_maps_to_new_destination">Zum neuen Ziel verschieben</string>
+ <string name="internal_app_storage_description">Interner Speicher, versteckt vor Benutzern und anderen Anwendungen, sodass niemand außer OsmAnd Zugriff auf Ihre Daten erhalten kann</string>
+ <string name="change_data_storage_folder">Ändern des Datenspeicherordners</string>
+ <string name="rendering_attr_piste_type_snow_park_name">Winter-Funpark</string>
+ <string name="rendering_attr_piste_type_sleigh_name">Schlitten</string>
+ <string name="rendering_attr_piste_type_sled_name">Schlitten</string>
+ <string name="rendering_attr_piste_type_hike_name">Wandern</string>
+ <string name="rendering_attr_piste_type_connection_name">Verbindung</string>
+ <string name="rendering_attr_piste_type_skitour_name">Skitour</string>
+ <string name="rendering_attr_piste_type_downhill_name">Downhill</string>
+ <string name="rendering_attr_piste_type_nordic_name">Nordisch</string>
+ <string name="routeInfo_piste_type_name">Pistentyp</string>
+ <string name="rendering_attr_piste_difficulty_novice_name">Anfänger</string>
+ <string name="rendering_attr_piste_difficulty_easy_name">Einfach</string>
+ <string name="rendering_attr_piste_difficulty_intermediate_name">Mittel</string>
+ <string name="rendering_attr_piste_difficulty_advanced_name">Fortgeschritten</string>
+ <string name="rendering_attr_piste_difficulty_expert_name">Experte</string>
+ <string name="rendering_attr_piste_difficulty_freeride_name">Freeride</string>
+ <string name="rendering_attr_piste_difficulty_extreme_name">Extrem</string>
+ <string name="rendering_attr_piste_difficulty_undefined_name">Undefiniert</string>
+ <string name="routeInfo_piste_difficulty_name">Pisten-Schwierigkeitsgrad</string>
+ <string name="routing_attr_width_name">Breitenbegrenzung</string>
+ <string name="routing_attr_width_description">Geben Sie die zulässige Fahrzeugbreitenbegrenzung auf Routen an.</string>
+ <string name="avoid_in_routing_descr_">Vermeiden von bestimmten Routen und Straßentypen</string>
+ <string name="app_mode_utv">Nebeneinander</string>
+ <string name="rendering_attr_piste_difficulty_aerialway_name">Seilbahn</string>
+ <string name="rendering_attr_piste_difficulty_connection_name">Verbindung</string>
+ <string name="shared_string_calculate">Berechnen</string>
+ <string name="shared_string_osmand_usage">OsmAnd Nutzung</string>
+ <string name="shared_string_maps">Karten</string>
+ <string name="shared_string_memory_tb_desc">%1$s TB</string>
+ <string name="shared_string_memory_gb_desc">%1$s GB</string>
+ <string name="shared_string_memory_mb_desc">%1$s MB</string>
+ <string name="shared_string_memory_kb_desc">%1$s KB</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-eo/phrases.xml b/OsmAnd/res/values-eo/phrases.xml
index 2aba7be841..419ba8910e 100644
--- a/OsmAnd/res/values-eo/phrases.xml
+++ b/OsmAnd/res/values-eo/phrases.xml
@@ -3718,4 +3718,6 @@
<string name="poi_craft_floorer">Oficejo de plank‑metisto</string>
<string name="poi_craft_bakery">Bakejo (ne vendejo)</string>
<string name="poi_craft_cabinet_maker">Laborejo de meblisto</string>
+ <string name="poi_charge">Pago</string>
+ <string name="poi_pet_grooming">Dombesta beligejo</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml
index 54360910d7..ae2e371d28 100644
--- a/OsmAnd/res/values-eo/strings.xml
+++ b/OsmAnd/res/values-eo/strings.xml
@@ -3240,7 +3240,7 @@ Indikas lokon: %1$s x %2$s"</string>
<string name="wake_time">Tempo de irado</string>
<string name="units_and_formats">Unuoj kaj formoj</string>
<string name="appearance">Aspekto</string>
- <string name="map_look_descr">Emblemoj, fenestraĵoj</string>
+ <string name="map_look_descr">Alĝustigi mapon</string>
<string name="map_look">Map‑aspekto</string>
<string name="list_of_installed_plugins">Listo de instalitaj kromprogramoj</string>
<string name="configure_navigation">Alĝustigi navigadon</string>
@@ -3271,4 +3271,48 @@ Indikas lokon: %1$s x %2$s"</string>
<string name="logcat_buffer">Bufro logcat</string>
<string name="plugins_settings">Agordoj pri kromprogramo</string>
<string name="shared_string_by_default">Implicite</string>
+ <string name="download_detailed_map">Elŝutu la detalan mapon %s, por vidi tiun ĉi areon.</string>
+ <string name="change_data_storage_full_description">Ĉu movi datum‑dosierojn OsmAnd al la nova loko\?
+\n%1$s → %2$s</string>
+ <string name="data_storage_preference_summary">%1$s • uzita: %2$s GB</string>
+ <string name="data_storage_space_description">Libera: %1$s GB • Tute: %2$s GB</string>
+ <string name="enter_path_to_folder">Entajpu dosier‑indikon</string>
+ <string name="shared_string_select_folder">Elektu dosierujon</string>
+ <string name="paste_Osmand_data_folder_path">Algluu dosier‑indikon por dosierujo de OsmAnd‑datumoj</string>
+ <string name="change_osmand_data_folder_question">Ĉu ŝanĝi datum‑dosierujon OsmAnd\?</string>
+ <string name="move_maps_to_new_destination">Movi al la nova loko</string>
+ <string name="internal_app_storage_description">Interna konservejo, kaŝita de uzanto kaj de aliaj aplikaĵoj, do nur OsmAnd povas aliri viajn datumojn</string>
+ <string name="change_data_storage_folder">Ŝanĝi dosierujon por konservi datumojn</string>
+ <string name="rendering_attr_piste_type_snow_park_name">neĝ‑parko</string>
+ <string name="rendering_attr_piste_type_sleigh_name">glitveturado (tirata de hundoj)</string>
+ <string name="rendering_attr_piste_type_sled_name">glitveturado (motora)</string>
+ <string name="rendering_attr_piste_type_hike_name">marŝado</string>
+ <string name="rendering_attr_piste_type_connection_name">ligilo</string>
+ <string name="rendering_attr_piste_type_skitour_name">ski‑ekskurso</string>
+ <string name="rendering_attr_piste_type_downhill_name">alpa (malsuprenira)</string>
+ <string name="rendering_attr_piste_type_nordic_name">nordia (skikurada)</string>
+ <string name="routeInfo_piste_type_name">Speco de skivojo</string>
+ <string name="rendering_attr_piste_difficulty_novice_name">facilega (por novuloj)</string>
+ <string name="rendering_attr_piste_difficulty_easy_name">facila</string>
+ <string name="rendering_attr_piste_difficulty_intermediate_name">meza</string>
+ <string name="rendering_attr_piste_difficulty_advanced_name">malfacila</string>
+ <string name="rendering_attr_piste_difficulty_expert_name">malfacilega</string>
+ <string name="rendering_attr_piste_difficulty_freeride_name">tre malfacilega</string>
+ <string name="rendering_attr_piste_difficulty_extreme_name">ekstrema</string>
+ <string name="rendering_attr_piste_difficulty_undefined_name">nedifinita</string>
+ <string name="routeInfo_piste_difficulty_name">Facilo de skivojo</string>
+ <string name="routing_attr_width_name">Limigo de larĝo</string>
+ <string name="routing_attr_width_description">Difini permesatan limigon de larĝo de veturilo.</string>
+ <string name="avoid_in_routing_descr_">Eviti difinitajn kursojn kaj specojn de vojoj</string>
+ <string name="app_mode_utv">Ĉiuteren‑veturilo (UTV)</string>
+ <string name="rendering_attr_piste_difficulty_aerialway_name">kablovojo</string>
+ <string name="rendering_attr_piste_difficulty_connection_name">ligilo</string>
+ <string name="shared_string_calculate">Kalkuli</string>
+ <string name="shared_string_osmand_usage">Uzado de OsmAnd</string>
+ <string name="shared_sting_tiles">Kaheloj</string>
+ <string name="shared_string_maps">Mapoj</string>
+ <string name="shared_string_memory_tb_desc">%1$s TB</string>
+ <string name="shared_string_memory_gb_desc">%1$s GB</string>
+ <string name="shared_string_memory_mb_desc">%1$s MB</string>
+ <string name="shared_string_memory_kb_desc">%1$s kB</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml
index 9d4be5a6b5..82e43f0106 100644
--- a/OsmAnd/res/values-es-rAR/phrases.xml
+++ b/OsmAnd/res/values-es-rAR/phrases.xml
@@ -3732,4 +3732,6 @@
<string name="poi_craft_floorer">Constructor de pisos</string>
<string name="poi_craft_bakery">Taller de panadería</string>
<string name="poi_craft_cabinet_maker">Ebanista</string>
+ <string name="poi_charge">Cargo</string>
+ <string name="poi_pet_grooming">Cuidado de mascotas</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml
index 4b31e7075c..560c532b4c 100644
--- a/OsmAnd/res/values-es-rAR/strings.xml
+++ b/OsmAnd/res/values-es-rAR/strings.xml
@@ -866,7 +866,7 @@ Lon %2$s</string>
<string name="osmand_parking_lim_text">Tiempo limitado</string>
<string name="osmand_parking_no_lim_text">Tiempo ilimitado</string>
<string name="osmand_parking_add_event">Añadir una notificación al calendario</string>
- <string name="osmand_parking_time_limit">Estacionamiento de tiempo limitado</string>
+ <string name="osmand_parking_time_limit">Tiempo limitado</string>
<string name="osmand_parking_time_no_limit">Estacionamiento de tiempo ilimitado</string>
<string name="osmand_parking_position_description">Ubicación del vehículo estacionado. %1$s</string>
<string name="osmand_parking_position_description_add">Buscar el vehículo a las:</string>
@@ -3045,10 +3045,10 @@ Lon %2$s</string>
<string name="button_rate">Valorar</string>
<string name="shared_string_privacy_policy">Política de privacidad</string>
<string name="help_us_make_osmand_better">¡Ayúdanos a mejorar OsmAnd!</string>
- <string name="make_osmand_better_descr">Permitir a OsmAnd recopilar y procesar datos de uso anónimos de la aplicación. No recopilamos ni almacenamos datos sobre la ubicación, ni sobre las ubicaciones que ve en el mapa.
+ <string name="make_osmand_better_descr">Permite a OsmAnd recopilar y procesar datos de uso anónimos de la aplicación. No recopilamos ni almacenamos datos sobre la ubicación, ni sobre las ubicaciones que ve en el mapa.
\n
\nPuedes cambiar la selección en cualquier momento en «Ajustes &gt; Privacidad y seguridad».</string>
- <string name="choose_data_to_share">Elegir los tipos de datos a compartir:</string>
+ <string name="choose_data_to_share">Elige los tipos de datos a compartir:</string>
<string name="downloaded_maps">Mapas descargados</string>
<string name="visited_screens">Pantallas visitadas</string>
<string name="colleted_data">Datos recopilados</string>
@@ -3057,7 +3057,7 @@ Lon %2$s</string>
<string name="visited_screens_collect_descr">Nos ayuda a entender qué características de OsmAnd son las más populares.</string>
<string name="privacy_and_security_change_descr">Al pulsar en «Permitir», aceptas nuestras %1$s</string>
<string name="settings_privacy_and_security">Privacidad y seguridad</string>
- <string name="settings_privacy_and_security_desc">Elegir los datos a compartir con nosotros</string>
+ <string name="settings_privacy_and_security_desc">Elige los datos a compartir con nosotros</string>
<string name="shared_string_no_thank_you">No, gracias</string>
<string name="shared_string_allow">Permitir</string>
<string name="profile_name_hint">Nombre del perfil</string>
@@ -3294,7 +3294,7 @@ Lon %2$s</string>
<string name="change_data_storage_full_description">¿Mover los archivos de datos de OsmAnd al nuevo destino\?
\n%1$s &gt; %2$s</string>
<string name="data_storage_preference_summary">%1$s • Usado %2$s GB</string>
- <string name="data_storage_space_description">Libre %1$s • %2$s / %3$s GB</string>
+ <string name="data_storage_space_description">Libre %1$s GB • Total %2$s GB</string>
<string name="enter_path_to_folder">Ingresa la ruta a la carpeta</string>
<string name="shared_string_select_folder">Elegir carpeta</string>
<string name="paste_Osmand_data_folder_path">Pegar la ruta a la carpeta con los datos de OsmAnd</string>
@@ -3322,4 +3322,16 @@ Lon %2$s</string>
<string name="routeInfo_piste_difficulty_name">Dificultad de la pista</string>
<string name="routing_attr_width_name">Límite de anchura</string>
<string name="routing_attr_width_description">Especifica el límite de anchura del vehículo permitido en rutas.</string>
+ <string name="avoid_in_routing_descr_">Evita ciertas rutas y tipos de caminos</string>
+ <string name="app_mode_utv">En paralelo</string>
+ <string name="rendering_attr_piste_difficulty_aerialway_name">Vía aérea</string>
+ <string name="rendering_attr_piste_difficulty_connection_name">Conexión</string>
+ <string name="shared_string_calculate">Calcular</string>
+ <string name="shared_string_osmand_usage">Uso de OsmAnd</string>
+ <string name="shared_sting_tiles">Teselas</string>
+ <string name="shared_string_maps">Mapas</string>
+ <string name="shared_string_memory_tb_desc">%1$s TB</string>
+ <string name="shared_string_memory_gb_desc">%1$s GB</string>
+ <string name="shared_string_memory_mb_desc">%1$s MB</string>
+ <string name="shared_string_memory_kb_desc">%1$s KB</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-es-rUS/strings.xml b/OsmAnd/res/values-es-rUS/strings.xml
index 775070b8f9..efaad8e0b6 100644
--- a/OsmAnd/res/values-es-rUS/strings.xml
+++ b/OsmAnd/res/values-es-rUS/strings.xml
@@ -3323,4 +3323,5 @@ Lon %2$s</string>
<string name="routeInfo_piste_difficulty_name">Dificultad de la pista</string>
<string name="routing_attr_width_name">Límite de anchura</string>
<string name="routing_attr_width_description">Especifica el límite de anchura del vehículo permitido en rutas.</string>
+ <string name="avoid_in_routing_descr_">Evita ciertas rutas y tipos de caminos</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-es/strings.xml b/OsmAnd/res/values-es/strings.xml
index 2f3e850ec5..688a7f02f3 100644
--- a/OsmAnd/res/values-es/strings.xml
+++ b/OsmAnd/res/values-es/strings.xml
@@ -3039,7 +3039,7 @@
<string name="routing_attr_avoid_train_description">Evita usar los trenes</string>
<string name="routing_attr_avoid_subway_name">Evitar metros</string>
<string name="routing_attr_avoid_subway_description">Evita transporte en metro y en tren ligero</string>
- <string name="routing_attr_avoid_ferry_name">Evitar los ferris</string>
+ <string name="routing_attr_avoid_ferry_name">Evitar ferris</string>
<string name="routing_attr_avoid_ferry_description">Evita usar los ferris o transbordadores</string>
<string name="release_3_3_7">• Mostrar el tiempo entre transbordos en transporte público
\n
@@ -3255,8 +3255,8 @@
<string name="price_free">Gratis</string>
<string name="get_discount_title">Consigue %1$d %2$s con un %3$s de descuento.</string>
<string name="get_free_trial_title">Empieza tu %1$d %2$s de prueba gratis.</string>
- <string name="get_discount_first_part">%1$s para el primer %2$s</string>
- <string name="get_discount_first_few_part">%1$s para el primer %2$s</string>
+ <string name="get_discount_first_part">%1$s durante el primer %2$s</string>
+ <string name="get_discount_first_few_part">%1$s durante el primer %2$s</string>
<string name="get_discount_second_part">luego %1$s</string>
<string name="cancel_subscription">Cancelar la suscripción</string>
<string name="price_and_discount">%1$s • Ahorra %2$s</string>
@@ -3275,7 +3275,7 @@
<string name="analytics_pref_title">Analítica</string>
<string name="turn_screen_on_info">Mostrar mapa durante la navegación por encima de la pantalla de bloqueo.</string>
<string name="route_parameters_info">Estos ajustes afectan a la construcción de la ruta. Se aplicará solo al perfil seleccionado: %1$s.</string>
- <string name="wake_time">Hora de despertar</string>
+ <string name="wake_time">Tiempo de encendido</string>
<string name="units_and_formats">Unidades y formatos</string>
<string name="appearance">Apariencia</string>
<string name="map_look_descr">Apariencia del mapa</string>
@@ -3306,4 +3306,25 @@
<string name="route_parameters_descr">Configura los parámetros de ruta</string>
<string name="route_parameters">Parámetros de ruta</string>
<string name="application_profile_changed">Perfil de aplicación cambiado a \"%s\"</string>
+ <string name="plugins_settings">Ajustes de plugin</string>
+ <string name="shared_string_by_default">Por defecto</string>
+ <string name="download_detailed_map">Descarga el mapa detallado de %s para ver este área.</string>
+ <string name="data_storage_preference_summary">%1$s • Usado %2$s GB</string>
+ <string name="data_storage_space_description">Libre %1$s • %2$s / %3$s GB</string>
+ <string name="shared_string_select_folder">Seleccionar carpeta</string>
+ <string name="move_maps_to_new_destination">Mover al nuevo destino</string>
+ <string name="change_data_storage_folder">Cambiar la carpeta de almacenamiento de datos</string>
+ <string name="rendering_attr_piste_type_snow_park_name">Parque de nieve</string>
+ <string name="rendering_attr_piste_type_sleigh_name">Trineo</string>
+ <string name="rendering_attr_piste_type_sled_name">Trineo</string>
+ <string name="routeInfo_piste_type_name">Tipo de pista</string>
+ <string name="rendering_attr_piste_difficulty_novice_name">Principiante</string>
+ <string name="rendering_attr_piste_difficulty_easy_name">Fácil</string>
+ <string name="rendering_attr_piste_difficulty_intermediate_name">Intermedia</string>
+ <string name="rendering_attr_piste_difficulty_expert_name">Experto</string>
+ <string name="rendering_attr_piste_difficulty_extreme_name">Extrema</string>
+ <string name="rendering_attr_piste_difficulty_undefined_name">Indefinida</string>
+ <string name="routeInfo_piste_difficulty_name">Dificultad de pista</string>
+ <string name="routing_attr_width_name">Límite de anchura</string>
+ <string name="routing_attr_width_description">Especifica el límite permitido de anchura del vehículo en rutas.</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-eu/strings.xml b/OsmAnd/res/values-eu/strings.xml
index e155db470d..439a7cfe67 100644
--- a/OsmAnd/res/values-eu/strings.xml
+++ b/OsmAnd/res/values-eu/strings.xml
@@ -435,7 +435,7 @@
<string name="accessibility_mode">Irisgarritasun modua</string>
<string name="accessibility_mode_descr">Ezgaitasunak dituzten erabiltzaileentzako ezaugarriak gaitzen ditu.</string>
<string name="shared_string_on">On</string>
- <string name="shared_string_off">Ezgaituta</string>
+ <string name="shared_string_off">Desgaituta</string>
<string name="accessibility_default">Android sistemako ezarpenaren arabera</string>
<string name="backToMenu">Itzuli menura</string>
<string name="zoomOut">Urrundu</string>
@@ -1650,9 +1650,9 @@ Eskuragarri {2} MB besterik ez daude.</string>
<string name="move_marker_bottom_sheet_title">Mugitu mapa markatzailearen posizioa aldatzeko</string>
<!-- string name="lat_lon_pattern">Lat: %1$.5f Lon: %2$.5f</string -->
<string name="follow_us">Jarraitu gaitzazu</string>
- <string name="access_direction_audio_feedback">Audio bidezko argibideak</string>
+ <string name="access_direction_audio_feedback">Audio bidezko jarraibideak</string>
<string name="access_direction_audio_feedback_descr">Helburura norabidearen berri eman soinu bidez.</string>
- <string name="access_direction_haptic_feedback">Argibide haptikoak</string>
+ <string name="access_direction_haptic_feedback">Jarraibide haptikoak</string>
<string name="access_direction_haptic_feedback_descr">Helburura norabidearen berri eman dardararen bidez.</string>
<string name="use_osm_live_routing_description">Gaitu nabigazioa OSM Live aldaketentzako (beta).</string>
<string name="use_osm_live_routing">OsmAnd Live nabigazioa</string>
@@ -2274,7 +2274,7 @@ Area honi dagokio: %1$s x %2$s</string>
<string name="fonts_header">Maparen letra-tipoak</string>
<string name="shared_string_paused">Pausatua</string>
<string name="osmand_extended_description_part1">"OsmAnd (OSM Automated Navigation Directions) mapa eta nabigazio aplikazio bat da. Doako, mundu osoko eta kalitate altuko OpenStreetMap (OSM) mapak eskura jartzen dizkizuna.
-\n
+\n
\nGozatu ahots bidezko nabigazioa edo nabigazio grafikoa, ikusi interesezko puntuak (POI), sortu eta kudeatu GPX lorratzak, erabili sestra-kurbak eta garaiera datuak (gehigarri baten bidez), aukeratu kotxe, bizikleta eta oinezko moduen artean, editatu OSM, eta askoz gehiago."</string>
<string name="type_address">Idatzi helbidea</string>
<string name="osmand_extended_description_part2">GPS nabigazioa
@@ -2904,7 +2904,7 @@ Area honi dagokio: %1$s x %2$s</string>
<string name="waiting_for_route_calculation">Ibilbidea kalkulatzen…</string>
<string name="show_along_the_route">Erakutsi ibilbidean zehar</string>
<string name="choose_track_file_to_follow">Hautatu lorratz fitxategia jarraitzeko</string>
- <string name="routeInfo_roadClass_name">Klasea</string>
+ <string name="routeInfo_roadClass_name">Errepide mota</string>
<string name="routeInfo_surface_name">Gainazala</string>
<string name="routeInfo_smoothness_name">Lausotasuna</string>
<string name="routeInfo_steepness_name">Aldapa</string>
@@ -2917,7 +2917,7 @@ Area honi dagokio: %1$s x %2$s</string>
<string name="use_osm_live_public_transport">OsmAnd Live garraio publikoa</string>
<string name="time_of_day">Eguneko ordua</string>
<string name="by_transport_type">Egilea: %1$s</string>
- <string name="step_by_step">Urratsez urrats</string>
+ <string name="step_by_step">Biraz bira</string>
<string name="routeInfo_road_types_name">Bide motak</string>
<string name="exit_at">Irten hemen</string>
<string name="sit_on_the_stop">Muntatu honako geltokian</string>
@@ -3181,6 +3181,150 @@ Area honi dagokio: %1$s x %2$s</string>
<string name="select_base_profile_dialog_message">"Oinarritu zure profil pertsonala lehenetsitako aplikazio profil batean, hau da, oinarrizko konfigurazioa, widgeten eta abiadura eta distantziaren lehenetsitako ikusgarritasuna definitzen duena. Hauek dira aplikazio profil lehenetsiak, profil pertsonalizatuen adibideekin batera:"</string>
<string name="app_mode_scooter">Motoa</string>
<string name="shared_string_default">Lehenetsia</string>
- <string name="day"/>
+ <string name="day">Egun</string>
<string name="days_2_4">Egunak</string>
+ <string name="release_3_4">• Aplikazioaren profilak: sortu profil pertsonalizatua zure beharretarako, ikono eta kolore pertsonalizatuarekin
+\n
+\n • Aldatu edozein profileko lehenetsitako abiadura maximo eta minimoa
+\n
+\n • Uneko koordenatuen trepeta gehitu da
+\n
+\n • Mapan ipar-orratza eta erradioen erregela erakusteko aukerak gehitu dira
+\n
+\n • Lorratza bigarren planoan gordetzea konponduta
+\n
+\n • Bigarren planoan mapak deskargatzea hobetua
+\n
+\n • \'Piztu pantaila\' aukera itzuli da
+\n
+\n • Wikipediaren hizkuntza hautaketa konpondu da
+\n
+\n • Nabigazioan ipar-orratzaren botoiaren portaera konpondu da
+\n
+\n • Arazo konponketa gehiago
+\n
+\n</string>
+ <string name="new_route_calculated_dist_dbg">Ibilbidea: distantzia %s, iraupena %s
+\nKalkulua: %.1f s, %d errepide, %d lauza)</string>
+ <string name="lang_oc">Okzitaniera</string>
+ <string name="app_mode_wagon">Bagoia</string>
+ <string name="days_5">Egun</string>
+ <string name="week">Aste</string>
+ <string name="weeks_2_4">Aste</string>
+ <string name="weeks_5">Aste</string>
+ <string name="month">Hilabete</string>
+ <string name="months_2_4">Hilabete</string>
+ <string name="months_5">Hilabete</string>
+ <string name="year">Urte</string>
+ <string name="years_2_4">Urte</string>
+ <string name="years_5">Urte</string>
+ <string name="months_3">Hiru hilabete</string>
+ <string name="price_free">Doan</string>
+ <string name="get_discount_title">Eskuratu %1$d %2$s %3$s(e)ko deskontuarekin.</string>
+ <string name="get_free_trial_title">Hasi zure %1$d %2$s doako proba.</string>
+ <string name="get_discount_first_part">%1$s lehen %2$s</string>
+ <string name="get_discount_first_few_part">%1$s lehen %2$s</string>
+ <string name="get_discount_second_part">gero %1$s</string>
+ <string name="cancel_subscription">Ezeztatu harpidetza</string>
+ <string name="price_and_discount">%1$s • Aurreztu %2$s</string>
+ <string name="configure_profile_info">Beheko ezarpen guztiak aukeratutako profilari eragiten diote besterik ez.</string>
+ <string name="utm_format_descr">OsmAnd-ek UTM Estandarra formatua darabil, UTN Nato formatua antzekoa da baina ez berdina.</string>
+ <string name="shared_string_example">Adibidea</string>
+ <string name="navigate_point_format_utm">UTM Estandarra</string>
+ <string name="navigate_point_format_olc">Ireki kokaleku kodea</string>
+ <string name="coordinates_format_info">Hautatutako formatua aplikazioko toki guztietan aplikatuko da.</string>
+ <string name="pref_selected_by_default_for_profiles">Ezarpen hau lehenetsita hautatuta dago profiletan: %s</string>
+ <string name="change_default_settings">Aldatu lehenetsitako ezarpenak</string>
+ <string name="discard_changes">Baztertu aldaketak</string>
+ <string name="apply_to_current_profile">"Aplikatu uneko %1s profilari"</string>
+ <string name="apply_to_all_profiles">Aplikatu profil guztiei</string>
+ <string name="start_up_message_pref">Hasierako mezua</string>
+ <string name="analytics_pref_title">Analitikak</string>
+ <string name="turn_screen_on_info">Erakutsi mapa nabigazioan zehar blokeo pantailaren gainean.</string>
+ <string name="route_parameters_info">Ezarpen hauek ibilbidearen sorrerari eragiten diote. Hautatutako profilean besterik ez dira aplikatuko: %1$s.</string>
+ <string name="wake_time">Esnatze ordua</string>
+ <string name="units_and_formats">Unitate eta formatuak</string>
+ <string name="appearance">Itxura</string>
+ <string name="map_look_descr">Maparen itxura</string>
+ <string name="map_look">Maparen bista</string>
+ <string name="list_of_installed_plugins">Instalatutako gehigarrien zerrenda</string>
+ <string name="configure_navigation">Konfiguratu nabigazioa</string>
+ <string name="general_settings_profile_descr">Aplikazioaren gaia, unitateak, eskualdea</string>
+ <string name="configure_profile">Konfiguratu profila</string>
+ <string name="screen_alerts_descr">Alertak pantailaren behe-ezkerreko erpinean erakutsiko dira nabigazioan.</string>
+ <string name="switch_profile">Aldatu profila</string>
+ <string name="language_and_output">Hizkuntza eta irteera</string>
+ <string name="reset_to_default">Leheneratu lehenetsikoetara</string>
+ <string name="manage_profiles_descr">Sortu, inportatu, editatu profilak</string>
+ <string name="manage_profiles">Kudeatu aplikazioaren profilak…</string>
+ <string name="osmand_settings_descr">Aplikazio osoari eragiten dio</string>
+ <string name="osmand_settings">OsmAnd ezarpenak</string>
+ <string name="copy_from_other_profile">Kopiatu beste profiletik</string>
+ <string name="turn_screen_on">Piztu pantaila</string>
+ <string name="map_during_navigation_info">Mapa nabigazioan zehar</string>
+ <string name="map_during_navigation">Mapa nabigazioan zehar</string>
+ <string name="shared_string_other">Beste bat</string>
+ <string name="vehicle_parameters_descr">Pisua, altuera, abiadura</string>
+ <string name="vehicle_parameters">Ibilgailuaren parametroak</string>
+ <string name="voice_announces_info">Ahots iragarpenak nabigazioan zehar egiten dira soilik.</string>
+ <string name="voice_announces_descr">Nabigazio argibideak eta iragarpenak</string>
+ <string name="voice_announces">Ahots iragarpenak</string>
+ <string name="screen_alerts">Pantailako alertak</string>
+ <string name="route_parameters_descr">Konfiguratu ibilbidearen parametroak</string>
+ <string name="route_parameters">Ibilbidearen parametroak</string>
+ <string name="application_profile_changed">Aplikazioaren profila \"%s\" izatera aldatu da</string>
+ <string name="logcat_buffer">Logcat bufferra</string>
+ <string name="plugins_settings">Gehigarriaren ezarpenak</string>
+ <string name="shared_string_by_default">Lehenetsita</string>
+ <string name="download_detailed_map">Deskargatu %s(e)ko mapa xehetsua ingurune hau ikusteko.</string>
+ <string name="change_data_storage_full_description">Eraman OsmAnd datu fitxategiak xede berrira\?
+\n%1$s &gt; %2$s</string>
+ <string name="data_storage_preference_summary">%1$s • Erabilita %2$s GB</string>
+ <string name="data_storage_space_description">Libre %1$s • %2$s / %3$s GB</string>
+ <string name="enter_path_to_folder">Sartu karpetara bidea</string>
+ <string name="shared_string_select_folder">Hautatu karpeta</string>
+ <string name="paste_Osmand_data_folder_path">Itsatsi OsmAnd datuak dituen karpetara bidea</string>
+ <string name="change_osmand_data_folder_question">Aldatu OsmAnd datuen karpeta\?</string>
+ <string name="move_maps_to_new_destination">Eraman xede berrira</string>
+ <string name="internal_app_storage_description">Barne biltegiratzea, erabiltzaileari eta beste aplikazioei ezkutatuta, OsmAnd aplikazioa ez den beste inork ezin ditu zure datuak atzitu</string>
+ <string name="change_data_storage_folder">Aldatu datuak biltegiratzeko karpeta</string>
+ <string name="rendering_attr_piste_type_snow_park_name">Elur parkea</string>
+ <string name="rendering_attr_piste_type_sleigh_name">Lera</string>
+ <string name="rendering_attr_piste_type_sled_name">Lera</string>
+ <string name="rendering_attr_piste_type_hike_name">Ibilaldia</string>
+ <string name="rendering_attr_piste_type_connection_name">Konexioa</string>
+ <string name="rendering_attr_piste_type_skitour_name">Eski ibilaldia</string>
+ <string name="rendering_attr_piste_type_downhill_name">Maldan behera</string>
+ <string name="rendering_attr_piste_type_nordic_name">Nordikoa</string>
+ <string name="routeInfo_piste_type_name">Pista mota</string>
+ <string name="rendering_attr_piste_difficulty_novice_name">Hasiberria</string>
+ <string name="rendering_attr_piste_difficulty_easy_name">Erraza</string>
+ <string name="rendering_attr_piste_difficulty_intermediate_name">Tartekoa</string>
+ <string name="rendering_attr_piste_difficulty_advanced_name">Aurreratua</string>
+ <string name="rendering_attr_piste_difficulty_expert_name">Aditua</string>
+ <string name="rendering_attr_piste_difficulty_freeride_name">Ibilbide librea</string>
+ <string name="rendering_attr_piste_difficulty_extreme_name">Muturrekoa</string>
+ <string name="rendering_attr_piste_difficulty_undefined_name">Zehaztu gabea</string>
+ <string name="routeInfo_piste_difficulty_name">Pistaren zailtasuna</string>
+ <string name="routing_attr_width_name">Zabalera muga</string>
+ <string name="routing_attr_width_description">Zehaztu baimendutako ibilgailuaren zabalera muga ibilbideetan.</string>
+ <string name="avoid_in_routing_descr_">Saihestu ibilbide eta errepide mota batzuk</string>
+ <string name="release_3_3">"• \'Jarraibideak\' pantaila berria: Etxea eta lana botoiak bistaratzen ditu, \'aurreko ibilbidea\' lasterbidea, GPX lorratz eta markatzaile aktiboen zerrenda, bilaketa historiala
+\n
+\n • Informazio gehigarria \'Ibilbidearen xehetasunak\' atalean: errepide motak, zoladura, maldak, xamurtasuna
+\n
+\n • Garraio publiko bidezko nabigazioak mota guztietako garraioak onartzen ditu: metroa, autobusa, tranbia, eta abar
+\n
+\n • Ekintza azkar berria lorratzak erakutzi edo ezkutatzeko eta egun7gau moduetarako
+\n
+\n • Alemania, Hego Afrika eta Quebec-en urpetuta agertzen ziren zonaldeak konponduta
+\n
+\n • KML eta KMZ inportaziorako euskarri gehigarria
+\n
+\n • Garraio publiko batzuk irekitzean gertatzen ziren kraskatzeak konponduta
+\n
+\n • Facebook eta Firebase analitikak kendu dira doako bertsiotik (OsmAnd+ bertsioak ez ditu)
+\n
+\n"</string>
+ <string name="app_mode_pickup_truck">Kamioneta irekia</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-fa/strings.xml b/OsmAnd/res/values-fa/strings.xml
index 8517bac99c..e2e823b5f0 100644
--- a/OsmAnd/res/values-fa/strings.xml
+++ b/OsmAnd/res/values-fa/strings.xml
@@ -484,9 +484,9 @@
<string name="poi_search_desc">جست‌وجوی POI (مکان‌های پرکاربرد)</string>
<string name="poi_dialog_comment_default">تغییر POI</string>
<string name="default_buttons_commit">اجرا</string>
- <string name="download_srtm_maps">منحنی‌های تراز</string>
- <string name="srtm_plugin_name">منحنی‌های تراز</string>
- <string name="index_srtm_ele">منحنی‌های تراز</string>
+ <string name="download_srtm_maps">منحنی‌های میزان</string>
+ <string name="srtm_plugin_name">منحنی‌های میزان</string>
+ <string name="index_srtm_ele">منحنی‌های میزان</string>
<string name="download_roads_only_item">فقط جاده‌ها</string>
<string name="rendering_attr_noAdminboundaries_description">مرزهای مناطق را نشان نده (تقسیمات سیاسی سطح ۵–۹).</string>
<string name="incremental_search_city">جست‌وجوی حرف‌به‌حرف نام شهر</string>
@@ -520,21 +520,21 @@
<string name="shared_string_more_actions">عملیات‌های بیشتر</string>
<string name="prefer_motorways">ترجیح آزادراه‌ها</string>
<string name="prefer_in_routing_descr">آزادراه‌ها را ترجیح می‌دهم.</string>
- <string name="local_indexes_cat_srtm">منحنی‌های تراز</string>
+ <string name="local_indexes_cat_srtm">منحنی‌های میزان</string>
<string name="precise_routing_mode_descr">محاسبهٔ مسیرهایی دقیق و بدون اشکال. البته این حالت محدودیت مسافت دارد و کُند است.</string>
<string name="recording_context_menu_show">نشان بده</string>
<string name="av_def_action_picture">عکس‌گرفتن</string>
<string name="recording_context_menu_precord">یادداشت عکسی</string>
<string name="dropbox_plugin_description">با افزونهٔ دراپ‌باکس ردها و یادداشت‌های صوتی/تصویری را با حساب دراپ‌باکس خود همگام کنید.</string>
- <string name="srtm_paid_version_msg">لطفاً افزونهٔ منحنی‌های تراز را بخرید تا به توسعهٔ بیشتر نرم‌افزار کمک کنید.</string>
- <string name="srtm_paid_version_title">افزونهٔ منحنی‌های تراز</string>
+ <string name="srtm_paid_version_msg">لطفاً افزونهٔ منحنی‌های میزان را بخرید تا به توسعهٔ بیشتر نرم‌افزار کمک کنید.</string>
+ <string name="srtm_paid_version_title">افزونهٔ منحنی‌های میزان</string>
<string name="av_widget_action_descr">عملکرد پیش‌فرض ابزارک را انتخاب کنید.</string>
<string name="recording_is_recorded">در حال ضبط صدا/ویدئو. توقف ضبط با لمس ابزارک صدا/ویدئو.</string>
<string name="recording_playing">صدایی از فایل ضبط‌شدهٔ موردنظر در حال پخش است.
\n%1$s</string>
<string name="recording_delete_confirm">این مورد را پاک می‌کنید؟</string>
<string name="recording_description">در حال ضبط %1$s %3$s %2$s</string>
- <string name="osmand_srtm_short_description_80_chars">افزونهٔ OsmAnd برای منحنی‌های تراز آفلاین</string>
+ <string name="osmand_srtm_short_description_80_chars">افزونهٔ OsmAnd برای منحنی‌های میزان آفلاین</string>
<string name="use_magnetic_sensor_descr">برای مقدار قطب‌نما به‌جای حسگر جهتی از حسگر مغناطیسی استفاده می‌کند.</string>
<string name="show_poi_over_map">نشان‌دادن لایهٔ نقاط POI</string>
<string name="show_poi_over_map_description">آخرین لایهٔ انتخاب‌شده از نقاط POI را روی نقشه نشان بده.</string>
@@ -681,7 +681,7 @@
<string name="profile_settings">تنظیمات مخصوص به پروفایلِ</string>
<string name="osmand_service">حالت پس‌زمینه</string>
<string name="osmand_service_descr">زمانی که صفحه خاموش است OsmAnd در پس‌زمینه کار می‌کند.</string>
- <string name="download_files_not_enough_space">فضای کافی برای دانلود %1$s مگابایت وجود ندارد (فضای خالی: %2$s).</string>
+ <string name="download_files_not_enough_space">فضای کافی برای دانلود %1$s مگابایت وجود ندارد (خالی: %2$s).</string>
<string name="download_files_question_space">آیا {0} فایل را دانلود می‌کنید؟
\nحافظهٔ استفاده شده {1} مگابایت است. (حافظهٔ قابل‌استفاده {2} مگابایت است.)</string>
<string name="use_transparent_map_theme">پوستهٔ شفاف</string>
@@ -766,13 +766,13 @@
<string name="layer_hillshade">لایهٔ سایه‌روشن</string>
<string name="index_name_openmaps">نقشه‌های اتحادیهٔ اروپا</string>
<string name="download_hillshade_maps">سایه‌روشن‌ها</string>
- <string name="osmand_srtm_long_description_1000_chars">این افزونه دو لایهٔ منحنی‌های تراز و سایه‌روشن (پستی‌بلندی‌ها) را روی نقشه‌‌های استاندارد OsmAnd نمایش می‌دهد.
+ <string name="osmand_srtm_long_description_1000_chars">این افزونه دو لایهٔ منحنی‌های میزان و سایه‌روشن (پستی‌بلندی‌ها) را روی نقشه‌‌های استاندارد OsmAnd نمایش می‌دهد.
\nورزشکاران، راه‌پیمایان، کوله‌گردان و همهٔ کسانی که به ساختار پستی‌وبلندی‌های زمین علاقه‌مند هستند از این ویژگی بهره می‌برند.
\nمبنای داده‌های جهانی یعنی بین ۷۰ درجهٔ شمالی و ۷۰ درجهٔ جنوبی اندازه‌گیری‌های SRTM (مأموریت توپوگرافی رادار شاتل) و ASTER (رادیومتر پیشرفتهٔ فضابرد بازتاب و گسیل حرارتی) است.
\n
\nاَستِر یک ابزار تصویربرداری است که بر روی ماهوارهٔ Terra نصب است و تِرا ماهوار‌ه‌ای فوق‌پیشرفته برای سامانهٔ دیده‌بانی زمینِ ناساست.
\nاَستِر محصول تلاش مشترک ناسا، وزارت اقتصاد، صنعت و تجارت ژاپن و سامانه‌های فضایی ژاپن است.</string>
- <string name="srtm_plugin_description">این افزونه دو لایهٔ منحنی‌های تراز و سایه‌روشن (پستی‌بلندی‌ها) را روی نقشه‌‌های استاندارد OsmAnd نمایش می‌دهد.
+ <string name="srtm_plugin_description">این افزونه دو لایهٔ منحنی‌های میزان و سایه‌روشن (پستی‌بلندی‌ها) را روی نقشه‌‌های استاندارد OsmAnd نمایش می‌دهد.
\nورزشکاران، راه‌پیمایان، کوله‌گردان و همهٔ کسانی که به ساختار پستی‌وبلندی‌های زمین علاقه‌مند هستند از این ویژگی بهره می‌برند.
\nمبنای داده‌های جهانی یعنی بین ۷۰ درجهٔ شمالی و ۷۰ درجهٔ جنوبی اندازه‌گیری‌های SRTM (مأموریت توپوگرافی رادار شاتل) و ASTER (رادیومتر پیشرفتهٔ فضابرد بازتاب و گسیل حرارتی) است.
\n
@@ -783,8 +783,8 @@
<string name="rendering_attr_noPolygons_name">چندضلعی‌ها</string>
<string name="rendering_attr_appMode_name">حالت رندرگیری</string>
<string name="rendering_attr_appMode_description">بهینه‌سازی نقشه برای</string>
- <string name="rendering_attr_contourLines_description">از این زوم نمایان شود (نیازمند داده‌های منحنی تراز):</string>
- <string name="rendering_attr_contourLines_name">نشان‌دادن منحنی‌های تراز</string>
+ <string name="rendering_attr_contourLines_description">از این زوم نمایان شود (نیازمند داده‌های منحنی میزان):</string>
+ <string name="rendering_attr_contourLines_name">نشان‌دادن منحنی‌های میزان</string>
<string name="rendering_attr_hmRendered_description">جزئیات نقشه را افزایش دهید.</string>
<string name="local_index_routing_data">داده‌های مسیریابی</string>
<string name="route_via">گذر از:</string>
@@ -936,7 +936,7 @@
\n- کارایی کامل در حالت آفلاین (قابلیت ذخیره‌سازی نقشه‌های بُرداری یا کاشی در حافظهٔ دستگاه)
\n- وجود نقشه‌های برداری و آفلاینِ سراسر جهان به‌صورت فشرده
\n- امکان دانلود نقشهٔ یک کشور یا منطقه مستقیماً از طریق برنامه
-\n- امکان قراردادن نقشه‌های مختلف بر روی هم در چند لایه؛ مانند ردهای GPX یا مسیرپیمایی، مکان‌های پرکاربرد یا POI، نقاط برگزیده، منحنی‌های تراز، ایستگاه‌های حمل‌ونقل عمومی، نقشه‌های دیگر با درصد شفافیت دلخواه
+\n- امکان قراردادن نقشه‌های مختلف بر روی هم در چند لایه؛ مانند ردهای GPX یا مسیرپیمایی، مکان‌های پرکاربرد یا POI، نقاط برگزیده، منحنی‌های میزان، ایستگاه‌های حمل‌ونقل عمومی، نقشه‌های دیگر با درصد شفافیت دلخواه
\n- جست‌وجوی آفلاین مکان‌ها (POIها) و نشانی‌ها
\n- مسیریابی آفلاین برای مسافت‌های متوسط
\n- نمایه‌های خودرو، دوچرخه و پیاده با قابلیت‌های اختیاری:
@@ -965,7 +965,7 @@
\n- امکان دانلود نامحدود نقشه‌های کشوری یا منطقه‌ای مستقیماً از طریق برنامه
\n- دسترسی به ویکی‌پدیا به‌صورت آفلاین (دانلود POIهای ویکی‌پدیا) که برای گردشگری بسیار مفید است
\n
-\n- امکان قراردادن نقشه‌های مختلف بر روی هم در چند لایه؛ مانند ردهای GPX یا مسیرپیمایی، مکان‌های پرکاربرد یا POI، نقاط برگزیده، منحنی‌های تراز، ایستگاه‌های حمل‌ونقل عمومی، نقشه‌های دیگر با درصد شفافیت دلخواه
+\n- امکان قراردادن نقشه‌های مختلف بر روی هم در چند لایه؛ مانند ردهای GPX یا مسیرپیمایی، مکان‌های پرکاربرد یا POI، نقاط برگزیده، منحنی‌های میزان، ایستگاه‌های حمل‌ونقل عمومی، نقشه‌های دیگر با درصد شفافیت دلخواه
\n
\n- جست‌وجوی آفلاین مکان‌ها (POIها) و نشانی‌ها
\n- مسیریابی آفلاین برای مسافت‌های متوسط
@@ -974,7 +974,8 @@
\n
\n- زوم وابسته به سرعت؛
\n- میزان‌کردن نقشه در جهت قطب‌نما یا در جهت حرکت؛
-\n- راهنمای خط عبوری، نمایش محدودیت سرعت، راهنمای گفتاری انسانی یا ماشینی</string>
+\n- راهنمای خط عبوری، نمایش محدودیت سرعت، راهنمای گفتاری انسانی یا ماشینی
+\n</string>
<string name="asap">دراسرع‌وقت</string>
<string name="osmand_rastermaps_plugin_description">با استفاده از این افزونه به انواع مختلفی از نقشه‌های آنلاین دسترسی پیدا می‌کنید (اصطلاحاً tile یا raster)؛ مانند کاشی‌های پیش‌فرض اوپن‌استریت‌مپ (مانند مَپنیک)، تصاویر ماهواره‌ای، لایه‌های خاص مانند نقشه‌های آب‌و‌هوایی، هواشناسی، جغرافیایی، لایه‌های سایه‌روشن و... .
\n
@@ -1421,7 +1422,7 @@
<string name="configure_map">پیکربندی نقشه</string>
<string name="search_radius_proximity">تا</string>
<string name="anonymous_user">کاربر ناشناس</string>
- <string name="speed_limit_exceed">آخرین حدّ سرعت</string>
+ <string name="speed_limit_exceed">تاب‌آوری محدودیت سرعت</string>
<string name="print_route">چاپ مسیر</string>
<string name="fav_point_dublicate">نام نقطهٔ برگزیده تکراری است</string>
<string name="text_size_descr">اندازهٔ نوشته‌های نقشه را تنظیم کنید.</string>
@@ -1465,13 +1466,13 @@
<string name="proxy_port_descr">شمارهٔ درگاه پروکسی را تنظیم کنید (مثلاً 8118).</string>
<string name="proxy_host_descr">نام میزبان پروکسی را تنظیم کنید (مثلاً 127.0.0.1).</string>
<string name="plugin_install_needs_network">برای نصب این افزونه به اینترنت وصل شوید.</string>
- <string name="shared_string_disable">غیرفعال‌کردن</string>
- <string name="shared_string_enable">فعال‌کردن</string>
+ <string name="shared_string_disable">غیرفعال</string>
+ <string name="shared_string_enable">فعال</string>
<string name="shared_string_enabled">فعال</string>
<string name="shared_string_disabled">غیرفعال</string>
<string name="shared_string_export">صادرکردن</string>
<string name="voices">پیام‌های گفتاری</string>
- <string name="local_index_description">هر موردی را لمس کنید تا توضیحات بیشتری ببینید، برای غیرفعال یا پاک‌کردن لمس کنید و نگه دارید. داده‌های فعلی روی دستگاه (%1$s آزاد):</string>
+ <string name="local_index_description">هر موردی را لمس کنید تا توضیحات بیشتری ببینید، برای غیرفعال یا پاک‌کردن لمس کنید و نگه دارید. داده‌های فعلی روی دستگاه (%1$s خالی):</string>
<string name="speed_limit_exceed_message">محدودهٔ حداکثر سرعت را انتخاب کنید؛ با گذشتن از این مقدار، آوای هشدار پخش می‌شود.</string>
<string name="fav_point_emoticons_message">نام نقطهٔ برگزیده به %1$s تغییر کرد تا ذخیره‌سازی آن به‌همراه شکلک‌ها در فایل تسهیل شود.</string>
<string name="rendering_attr_hideHouseNumbers_name">پلاک خانه‌ها</string>
@@ -1535,7 +1536,7 @@
<string name="route_points">نقاط مسیر</string>
<string name="track_segments">تکه‌های رد</string>
<string name="track_points">نقاط رد</string>
- <string name="free">آزاد %1$s</string>
+ <string name="free">خالی %1$s</string>
<string name="rendering_value__name">پیش‌فرض</string>
<string name="rendering_value_highContrastRoads_name">جاده‌ها با تضاد رنگی زیاد</string>
<string name="anonymous_user_hint">کاربر ناشناس نمی‌تواند:
@@ -1783,7 +1784,7 @@
<string name="quick_action_add_destination">افزودن مقصد</string>
<string name="quick_action_replace_destination">تغییر مقصد</string>
<string name="subscribe_email_error">خطا</string>
- <string name="sea_depth_thanks">از اینکه منحنی‌های تراز عمق دریا را خریدید سپاسگزاریم</string>
+ <string name="sea_depth_thanks">از اینکه منحنی‌های میزان عمق دریا را خریدید سپاسگزاریم</string>
<string name="analyze_on_map">آنالیز روی نقشه</string>
<string name="shared_string_visible">در حال نمایش</string>
<string name="restore_purchases">بازیابی خریدها</string>
@@ -1818,7 +1819,7 @@
<string name="quick_action_auto_zoom_desc">با لمس این دکمهٔ عملیاتی، زوم خودکار وابسته به سرعت را روشن/خاموش کنید.</string>
<string name="quick_action_add_first_intermediate">افزودن اولین میانی</string>
<string name="subscribe_email_desc">مشترک خبرنامهٔ ایمیلی ما شوید و ۳ نقشهٔ دیگر دانلود کنید!</string>
- <string name="index_item_depth_contours_osmand_ext">منحنی‌های تراز عمق دریا</string>
+ <string name="index_item_depth_contours_osmand_ext">منحنی‌های میزان عمق دریا</string>
<string name="index_item_depth_points_southern_hemisphere">نقاط عمقی دریا در نیمکرهٔ جنوبی</string>
<string name="index_item_depth_points_northern_hemisphere">نقاط عمقی دریا در نیمکرهٔ شمالی</string>
<string name="nautical_maps">نقشهٔ دریایی</string>
@@ -1840,12 +1841,12 @@
<string name="total_distance">مسافت کل</string>
<string name="routing_attr_height_obstacles_name">استفاده از داده‌های ارتفاعی</string>
<string name="routing_attr_height_obstacles_description">فاکتور ارتفاع‌دهی عوارض (با استفاده از داده‌های SRTM،‏ ASTER و EU-DEM).</string>
- <string name="rendering_attr_depthContours_description">نمایش نقاط و خطوط تراز عمقی.</string>
- <string name="rendering_attr_depthContours_name">منحنی‌های تراز عمق دریا</string>
- <string name="rendering_attr_contourDensity_description">تراکم منحنی تراز</string>
- <string name="rendering_attr_contourDensity_name">تراکم منحنی تراز</string>
- <string name="rendering_attr_contourWidth_description">عرض منحنی تراز</string>
- <string name="rendering_attr_contourWidth_name">ضخامت منحنی تراز</string>
+ <string name="rendering_attr_depthContours_description">نمایش نقاط و منحنی‌های میزان عمقی.</string>
+ <string name="rendering_attr_depthContours_name">منحنی‌های میزان عمق دریا</string>
+ <string name="rendering_attr_contourDensity_description">تراکم منحنی میزان</string>
+ <string name="rendering_attr_contourDensity_name">تراکم منحنی میزان</string>
+ <string name="rendering_attr_contourWidth_description">عرض منحنی میزان</string>
+ <string name="rendering_attr_contourWidth_name">ضخامت منحنی میزان</string>
<string name="routing_attr_allow_motorway_name">آزادراه مجاز باشد</string>
<string name="routing_attr_allow_motorway_description">آزادراه‌ها مجاز باشد.</string>
<string name="wiki_around">مقالات ویکی‌پدیا دربارهٔ این حوالی</string>
@@ -1863,7 +1864,7 @@
<string name="shared_string_recorded">ضبط‌شده</string>
<string name="shared_string_record">ضبط‌کردن</string>
<string name="gpx_logging_no_data">اطلاعاتی وجود ندارد</string>
- <string name="rendering_attr_contourColorScheme_description">رنگ‌بندی منحنی‌های تراز</string>
+ <string name="rendering_attr_contourColorScheme_description">رنگ‌بندی منحنی‌های میزان</string>
<string name="save_track_min_speed">کمترین سرعت برای ورود به سیستم</string>
<string name="save_track_precision">کمترین دقت برای ثبت</string>
<string name="christmas_poi">نقطهٔ POI کریسمس</string>
@@ -1871,7 +1872,7 @@
<string name="christmas_desc_q">نقاط محبوبی (POI) که برچسب کریسمس دارند نمایش داده شود؟</string>
<string name="rendering_value_light_brown_name">قهوه‌ای روشن</string>
<string name="rendering_value_dark_brown_name">قهوه‌ای تیره</string>
- <string name="rendering_attr_contourColorScheme_name">رنگ‌بندی منحنی‌های تراز</string>
+ <string name="rendering_attr_contourColorScheme_name">رنگ‌بندی منحنی‌های میزان</string>
<string name="rendering_attr_surfaceIntegrity_name">یکپارچگی سطح جاده‌ها</string>
<string name="search_hint">نام شهر، نشانی یا نام POI را بنویسید</string>
<string name="edit_filter">ویرایش دسته‌ها</string>
@@ -2051,9 +2052,9 @@
<string name="navigate_point_olc">کدِ مکانی باز (OLC)</string>
<string name="navigate_point_olc_info_invalid">کد OLC نامعتبر است
\n</string>
- <string name="navigate_point_olc_info_short">کد بیش از حد کوتاه است؛
+ <string name="navigate_point_olc_info_short">کد OLC کوتاه است؛
\nلطفاً کد کامل را بنویسید.</string>
- <string name="navigate_point_olc_info_area">کد کامل و معتبر است؛
+ <string name="navigate_point_olc_info_area">کد OLC کامل و معتبر است؛
\nپهنهٔ متناظر: %1$s × %2$s</string>
<string name="increase_search_radius">محدودهٔ جست‌وجو را بزرگ‌تر کن</string>
<string name="nothing_found_descr">عبارت جست‌وجو را اصلاح کنید یا محدودهٔ جست‌وجو را بزرگ‌تر کنید.</string>
@@ -2124,10 +2125,10 @@
<string name="roads">جاده‌ها</string>
<string name="downloading_number_of_files">در حال دانلود - %1$d فایل</string>
<string name="show_free_version_banner">نمایش بنر نسخهٔ رایگان</string>
- <string name="show_free_version_banner_description">حتی در نسخهٔ خریداری‌شده هم بنر نسخهٔ رایگان را نشان بده.</string>
+ <string name="show_free_version_banner_description">در نسخهٔ خریداری‌شده نیز بنر نسخهٔ رایگان را نشان بده.</string>
<string name="buy">خرید</string>
<string name="activate_seamarks_plugin">لطفاً افزونهٔ «نمای دریایی نقشه» را فعال کنید</string>
- <string name="activate_srtm_plugin">لطفاً افزونهٔ «منحنی‌های تراز» را فعال کنید</string>
+ <string name="activate_srtm_plugin">لطفاً افزونهٔ «منحنی‌های میزان» را فعال کنید</string>
<string name="later">بعداً</string>
<string name="get_full_version">نسخهٔ کامل</string>
<string name="downloads">دانلودها</string>
@@ -2325,11 +2326,11 @@
<string name="sorted_by_distance">مرتب‌شده بر اساس مسافت</string>
<string name="search_favorites">جست‌وجو در نقاط برگزیده</string>
<string name="hillshade_menu_download_descr">نقشهٔ سایه‌روشن را برای این منطقه دانلود کنید تا سایه‌روشن پستی‌بلندی‌ها را ببینید.</string>
- <string name="hillshade_purchase_header">برای اینکه سایه‌روشن پستی‌بلندی‌ها را روی نقشه ببینید باید افزونهٔ منحنی‌های تراز را بخرید و نصب کنید</string>
+ <string name="hillshade_purchase_header">برای اینکه سایه‌روشن پستی‌بلندی‌ها را روی نقشه ببینید باید افزونهٔ منحنی‌های میزان را بخرید و نصب کنید</string>
<string name="hide_from_zoom_level">از این زوم پنهان شود</string>
- <string name="srtm_menu_download_descr">نقشهٔ منحنی تراز این منطقه را دانلود کنید تا منحنی‌های تراز را روی نقشه ببینید.</string>
+ <string name="srtm_menu_download_descr">نقشهٔ منحنی میزان این منطقه را برای استفاده دانلود کنید.</string>
<string name="shared_string_plugin">افزونه</string>
- <string name="srtm_purchase_header">برای اینکه منحنی‌های تراز را روی نقشه ببینید باید افزونهٔ «منحنی‌های تراز» را بخرید و نصب کنید</string>
+ <string name="srtm_purchase_header">برای اینکه منحنی‌های میزان را روی نقشه ببینید باید افزونهٔ «منحنی‌های میزان» را بخرید و نصب کنید</string>
<string name="srtm_color_scheme">رنگ‌بندی</string>
<string name="show_from_zoom_level">از این زوم آشکار شود</string>
<string name="routing_attr_allow_private_name">مجازشمردن دسترسی خصوصی</string>
@@ -2342,8 +2343,8 @@
<string name="quick_action_add_first_intermediate_desc">این دکمهٔ عملیاتی را لمس کنید تا مکان موجود در مرکز صفحه به‌عنوان اولین نقطهٔ میانی در نظر گرفته شود.</string>
<string name="no_overlay">بدون لایهٔ رویی</string>
<string name="no_underlay">بدون لایهٔ زیری</string>
- <string name="depth_contour_descr">منحنی‌های تراز عمق دریا و نشانه‌های دریایی.</string>
- <string name="download_depth_countours">منحنی‌های تراز عمق دریا</string>
+ <string name="depth_contour_descr">منحنی‌های میزان عمق دریا و نشانه‌های دریایی.</string>
+ <string name="download_depth_countours">منحنی‌های میزان عمق دریا</string>
<string name="do_not_send_anonymous_app_usage">آمار ناشناس مربوط به کارکرد برنامه را ارسال نکن</string>
<string name="do_not_send_anonymous_app_usage_desc">‏OsmAnd دربارهٔ قسمت‌هایی از برنامه که باز می‌کنید، اطلاعاتی جمع‌آوری می‌کند. موقعیت شما هرگز ارسال نمی‌شود و همچنین هر چیزی که در برنامه بنویسید یا جزئیات مناطقی که مشاهده، جست‌وجو یا دانلود می‌کنید، ارسال نمی‌شود.</string>
<string name="do_not_show_startup_messages_desc">تخفیف‌های برنامه و اخبار اتفاقاتِ ویژهٔ محلی را نشان نمی‌دهد.</string>
@@ -2372,7 +2373,7 @@
<string name="lang_fy">فریسی غربی</string>
<string name="lang_als">آلبانیایی (تُسک)</string>
<string name="hillshade_layer_disabled">لایهٔ سایه‌روشن غیرفعال شد</string>
- <string name="srtm_plugin_disabled">منحنی‌های تراز غیرفعال شد</string>
+ <string name="srtm_plugin_disabled">منحنی‌های میزان غیرفعال شد</string>
<string name="av_locations">مکان‌ها</string>
<string name="routing_attr_avoid_shuttle_train_name">پرهیز از قطار خطی</string>
<string name="routing_attr_avoid_shuttle_train_description">از قطار خطی پرهیز شود</string>
@@ -2442,7 +2443,7 @@
\nبا فعال‌کردن این نما، سبک نقشه به «زمستان و اسکی» تغییر می‌کند که همهٔ خصوصیات زمین را با ظاهر زمستانی نشان می‌دهد. برای غیرفعال‌کردن این نما افزونه را غیرفعال کنید یا اینکه از طریق منو ← پیکربندی نقشه ← سبک نقشه، سبک دلخواهتان را انتخاب کنید.</string>
<string name="osmand_extended_description_part1">برنامهٔ OsmAnd (مخفف OSM Automated Navigation Directions به‌معنی راهنمای خودکار ناوبری بر پایهٔ OSM) یک نرم‌افزار نقشه و ناوبری است که به گسترهٔ وسیعی از داده‌های نقشهٔ باز شهری (OpenStreetMap یا به‌صورت خلاصه OSM) دسترسی دارد. این داده‌های رایگان و جهانی با بالاترین کیفیت ارائه می‌شوند.
\n
-\nناوبری دیداری و شنیداری، مشاهدهٔ مکان‌های پرکاربرد (POIها یا Points of interest)، ایجاد و مدیریت ردهای GPX، استفاده از تصویرسازی منحنی‌های تراز و اطلاعات ارتفاع (با استفاده از افزونه)، انتخاب حالت‌های پیاده، دوچرخه، خودرو، امکان ویرایش مکان‌ها و... چیزهایی هستند که تجربهٔ مؤثر و لذت‌بخشی در کار با نقشه را برایتان به ارمغان می‌آورند.</string>
+\nناوبری دیداری و شنیداری، مشاهدهٔ مکان‌های پرکاربرد (POIها یا Points of interest)، ایجاد و مدیریت ردهای GPX، استفاده از تصویرسازی منحنی‌های میزان و اطلاعات ارتفاع (با استفاده از افزونه)، انتخاب حالت‌های پیاده، دوچرخه، خودرو، امکان ویرایش مکان‌ها و... چیزهایی هستند که تجربهٔ مؤثر و لذت‌بخشی در کار با نقشه را برایتان به ارمغان می‌آورند.</string>
<string name="osmand_extended_description_part2">ناوبری با GPS
\n • امکان انتخاب بین حالت آنلاین و آفلاین؛ در حالت آفلاین هزینهٔ دیگری بابت اینترنت نمی‌پردازید و در حالت آنلاین عملکرد سریع‌تری را تجربه می‌کنید
\n • راهنمای گام‌به‌گام گفتاری که در پیمودن مسیر راهنمایی‌تان می‌کند (با پیام‌های گفتاری انسانی و ماشینی)
@@ -2484,7 +2485,7 @@
<string name="av_locations_descr">فایل GPX از موقعیت‌ها.</string>
<string name="osmand_plus_extended_description_part1">برنامهٔ OsmAnd+‎ (مخفف OSM Automated Navigation Directions به‌معنی راهنمای خودکار ناوبری بر پایهٔ OSM) یک نرم‌افزار نقشه و ناوبری است که به گسترهٔ وسیعی از داده‌های نقشهٔ باز شهری (OpenStreetMap یا به‌صورت خلاصه OSM) دسترسی دارد. این داده‌های رایگان و جهانی با بالاترین کیفیت ارائه می‌شوند.
\n
-\nراهبر دیداری و شنیداری، مشاهدهٔ مکان‌های پرکاربرد (POIها یا Points of interest)، ایجاد و مدیریت ردهای GPX، استفاده از تصویرسازی منحنی‌های تراز و اطلاعات ارتفاع، انتخاب حالت‌های پیاده، دوچرخه، خودرو، امکان ویرایش مکان‌ها و... چیزهایی هستند که تجربهٔ مؤثر و لذت‌بخشی را در کار با نقشه برایتان به ارمغان می‌آورد.
+\nراهبر دیداری و شنیداری، مشاهدهٔ مکان‌های پرکاربرد (POIها یا Points of interest)، ایجاد و مدیریت ردهای GPX، استفاده از تصویرسازی منحنی‌های میزان و اطلاعات ارتفاع، انتخاب حالت‌های پیاده، دوچرخه، خودرو، امکان ویرایش مکان‌ها و... چیزهایی هستند که تجربهٔ مؤثر و لذت‌بخشی را در کار با نقشه برایتان به ارمغان می‌آورد.
\n
\n‏OsmAnd+‎ نسخهٔ پولی این برنامه است. با خریدن آن از این پروژه حمایت می‌کنید، سرمایه‌ای برای توسعهٔ قابلیت‌های جدید فراهم می‌کنید و آخرین به‌روزرسانی‌ها در اختیارتان قرار می‌گیرد.
\n
@@ -2507,7 +2508,7 @@
\n • در حالت دوچرخه، مسیریابی GPS بر اساس مسیرهای دوچرخه انجام می‌شود
\n • ارتفاع و سرعتتان را مشاهده کنید
\n • با استفاده از ضبط GPX مسیر سفرتان را ضبط کنید و به‌اشتراک بگذارید
-\n • با استفاده از یک افزونهٔ دیگر می‌توانید منحنی‌های تراز و سایه‌روشن‌ها را فعال کنید</string>
+\n • با استفاده از یک افزونهٔ دیگر می‌توانید منحنی‌های میزان و سایه‌روشن‌ها را فعال کنید</string>
<string name="osmand_extended_description_part6">پیاده‌روی، پیاده‌گردی و گردش در شهر
\n • مسیرهای پیاده‌روی و پیاده‌گردی را نقشه نشانتان می‌دهد
\n • هنگام گشت‌زدن در شهر، با ویکی‌پدیا اطلاعات مفیدی به زبان خودتان در مورد مکان‌ها به‌دست آورید
@@ -2581,7 +2582,7 @@
\n • ایستگاه‌های حمل‌ونقل عمومی (اتوبوس، تراموا، قطار) همراه با نام خطوط
\n • قابلیت ضبط سفر و ذخیره‌کردن مسیر در فایل GPX یا فرستادن به سرویس‌های آنلاین
\n • قابلیت نمایش سرعت و ارتفاع
-\n • امکان نمایش منحنی‌های تراز و سایه‌روشن‌ها (با نصب افزونه)</string>
+\n • امکان نمایش منحنی‌های میزان و سایه‌روشن‌ها (با نصب افزونه)</string>
<string name="osmand_plus_extended_description_part7">مشارکت مستقیم در نقشهٔ باز شهری (OSM)
\n • گزارش مشکل در داده‌ها
\n • آپلود ردهای GPX به OSM مستقیماً از طریق برنامه
@@ -2784,7 +2785,7 @@
<string name="start_editing">شروع ویرایش</string>
<string name="get_unlimited_access">گرفتن دسترسی نامحدود</string>
<string name="welcome_to_open_beta">به ارزیابی همگانی نسخهٔ بتا خوش آمدید</string>
- <string name="contour_lines_hillshade_maps">نقشه‌های منحنی تراز و سایه‌روشن</string>
+ <string name="contour_lines_hillshade_maps">منحنی‌های میزان و نقشه‌های سایه‌روشن</string>
<string name="download_wikipedia_description">مقاله‌های ویکی‌سفر %1$s را دانلود کنید تا آن‌ها را آفلاین بخوانید.</string>
<string name="download_wikipedia_label">دریافت داده‌های ویکی‌پدیا</string>
<string name="open_in_browser_wiki">بازکردن مقالهٔ آنلاین</string>
@@ -2806,18 +2807,18 @@
<string name="open_wikipedia_link_online_description">پیوند در یک مرورگر باز می‌شود.</string>
<string name="hide_full_description">نمایش توضیح کوتاه</string>
<string name="show_full_description">نمایش توضیح کامل</string>
- <string name="nautical_render_descr">سبک مناسب برای ناوبری دریایی.
-\nویژگی‌های اصلی: شناوه‌ها، فانوس‌های دریایی، راه‌های رودخانه‌ای، خطوط عبوری و نشانه‌های دریایی، بندرگاه‌ها، خدمات ساحلی و خطوط تراز عمقی.</string>
+ <string name="nautical_render_descr">سبک مناسب برای ناوبری دریایی.
+\nویژگی‌های اصلی: شناوه‌ها، فانوس‌های دریایی، راه‌های رودخانه‌ای، خطوط عبوری و نشانه‌های دریایی، بندرگاه‌ها، خدمات ساحلی و منحنی‌های میزان عمقی.</string>
<string name="ski_map_render_descr">سبک اسکی.
\nویژگی‌های اصلی: نمایش پیست‌ها، تله‌اسکی‌ها و سایر ویژگی‌های اسکی به‌شکلی ساده و مناسب. اجزای ثانویه و اضافی کمتر روی نقشه.</string>
<string name="light_rs_render_descr">سبکی ساده و پادنما برای ناوبری خودرویی. در حالت شب چشم را آزار نمی‌دهد.
-\nویژگی‌های اصلی: خطوط تراز، راه‌هایی با رنگ نارنجی و متضاد، اجزای ثانویه و اضافی کمتر روی نقشه.</string>
- <string name="topo_render_descr">سبکی پادنما که مخصوص پیاده‌گردی، راه‌نوردی و دوچرخه‌سواری در طبیعت است و در روشنایی بیرون خواناست.
-\nویژگی‌های اصلی: راه‌ها و عوارض طبیعیِ پادنما، انواع مختلف مسیرها، خطوط تراز با تنظیمات پیشرفته، جزئیات بیشتر نسبت به سبک پیشفرض در زوم‌های یکسان. نمایش انواع سطوح که در نتیجه راه‌ها را بر اساس کیفیت سطحشان مجزا می‌کند. حالت شب ندارد.</string>
+\nویژگی‌های اصلی: منحنی‌های میزان، جاده‌های نارنجی‌رنگ و پادنما، اجزای ثانویه و اضافی کمتر روی نقشه.</string>
+ <string name="topo_render_descr">سبکی پادنما که مخصوص پیاده‌گردی، راه‌نوردی و دوچرخه‌سواری در طبیعت است و در روشنایی بیرون خواناست.
+\nویژگی‌های اصلی: جاده‌ها و عوارض طبیعیِ پادنما، انواع مختلف مسیرها، منحنی‌های میزان با تنظیمات پیشرفته، جزئیات بیشتر نسبت به سبک پیشفرض در زوم‌های یکسان. نمایش انواع سطوح که در نتیجه راه‌ها را بر اساس کیفیت سطحشان مجزا می‌کند. حالت شب ندارد.</string>
<string name="mapnik_render_descr">سبک پیشفرض قدیمی که به‌سبک مپنیک است.
\nویژگی‌های اصلی: رنگی و مشابه سبک مپنیک.</string>
<string name="default_render_descr">سبکی مناسب برای استفادهٔ معمولی، با ظاهری ساده و تروتمیزتر برای شهرهای متراکم.
-\nویژگی‌های اصلی: خطوط تراز، مسیرها، کیفیت سطوح، محدودیت‌های دسترسی، شمارهٔ راه‌ها، رسم مسیرها طبق درجه‌بندی SAC، خصوصیات ورزش‌های آب‌های خروشان.</string>
+\nویژگی‌های اصلی: منحنی‌های میزان، مسیرها، کیفیت سطوح، محدودیت‌های دسترسی، شمارهٔ راه‌ها، رسم مسیرها طبق درجه‌بندی SAC، خصوصیات ورزش‌های آب‌های خروشان.</string>
<string name="read_wikipedia_offline_description">برای مطالعهٔ آفلاین مقاله‌های ویکی‌پدیا و ویکی‌سفر مشترک OsmAnd Live شوید.</string>
<string name="how_to_open_link">پیوند چطور باز شود؟</string>
<string name="read_wikipedia_offline">ویکی‌پدیا را آفلاین بخوانید</string>
@@ -3089,7 +3090,7 @@
<string name="make_osmand_better_descr">به OsmAnd اجازه بدهید دربارهٔ نحوهٔ استفاده از برنامه داده‌های ناشناس جمع‌آوری و پردازش کند. ما دربارهٔ موقعیت شما، یا دربارهٔ جاهایی که روی نقشه می‌بینید داده‌ای جمع‌آوری یا ذخیره نمی‌کنیم.
\n
\nهر زمان که بخواهید می‌توانید انتخاب خود را از بخش «تنظیمات &gt; حریم خصوصی و امنیت» تغییر دهید.</string>
- <string name="choose_data_to_share">انتخاب کنید چه داده‌هایی را مایل هستید به اشتراک بگذارید:</string>
+ <string name="choose_data_to_share">چه داده‌هایی را مایل هستید به اشتراک بگذارید:</string>
<string name="downloaded_maps">نقشه‌هایی که دانلود کرده‌اید</string>
<string name="visited_screens">صفحه‌هایی که دیده‌اید</string>
<string name="collected_data_descr">"مشخص کنید OsmAnd مجاز است چه داده‌هایی را به اشتراک بگذارد."</string>
@@ -3169,7 +3170,7 @@
<string name="edit_profile_setup_title">تنظیم پروفایل</string>
<string name="edit_profile_setup_subtitle">پروفایل تنظیمات خودش را نگه می‌دارد</string>
<string name="edit_profile_setup_map_subtitle">انتخاب گزینه‌های پیشفرض نقشه برای پروفایل</string>
- <string name="edit_profile_screen_options_subtitle">"انتخاب گزینه‌های پیشفرض نمایشگر برای پروفایل"</string>
+ <string name="edit_profile_screen_options_subtitle">گزینه‌های پیشفرض صفحه برای این پروفایل</string>
<string name="edit_profile_nav_settings_subtitle">انتخاب تنظیمات پیشفرض ناوبری برای پروفایل</string>
<string name="app_mode_ufo">بشقاب‌پرنده</string>
<string name="app_mode_personal_transporter">رانَک</string>
@@ -3271,8 +3272,8 @@
<string name="price_and_discount">%1$s • %2$s ارزان‌تر</string>
<string name="configure_profile_info">همهٔ تنظیمات زیر فقط روی پروفایل انتخاب‌شده اثر می‌گذارند.</string>
<string name="shared_string_example">مثال</string>
- <string name="navigate_point_format_utm">استاندارد UTM</string>
- <string name="navigate_point_format_olc">کد مکانی باز (OLC)</string>
+ <string name="navigate_point_format_utm">UTM Standard</string>
+ <string name="navigate_point_format_olc">Open Location Code</string>
<string name="coordinates_format_info">قالب انتخابی در همه‌جای برنامه به کار خواهد رفت.</string>
<string name="start_up_message_pref">پیام راه‌اندازی</string>
<string name="wake_time">زمان بیدارباش</string>
@@ -3281,7 +3282,7 @@
<string name="map_look">چهرهٔ نقشه</string>
<string name="list_of_installed_plugins">فهرست افزونه‌های نصب‌شده</string>
<string name="configure_navigation">پیکربندی ناوبری</string>
- <string name="screen_alerts_descr">در هنگام ناوبری، هشدارها در گوشهٔ پایین چپ صفحه ظاهر می‌شوند.</string>
+ <string name="screen_alerts_descr">در هنگام ناوبری، هشدارها در گوشهٔ پایین چپ ظاهر می‌شوند.</string>
<string name="switch_profile">تعویض پروفایل</string>
<string name="language_and_output">زبان و خروجی</string>
<string name="reset_to_default">بازنشانی به پیشفرض</string>
@@ -3309,13 +3310,13 @@
<string name="voice_announces_info">پیام‌های گفتاری فقط در هنگام ناوبری پخش می‌شود.</string>
<string name="voice_announces_descr">راهنما و پیام‌های ناوبری</string>
<string name="voice_announces">پیام‌های گفتاری</string>
- <string name="screen_alerts">هشدارهای نمایشگر</string>
+ <string name="screen_alerts">هشدارهای تصویری</string>
<string name="application_profile_changed">پروفایل برنامه به «%s» تغییر کرد</string>
<string name="pref_selected_by_default_for_profiles">این تنظیم به‌طور پیشفرض برای این پروفایل‌ها انتخاب شده: %s</string>
<string name="change_default_settings">تغییر تنظیمات پیشفرض</string>
<string name="discard_changes">انصراف از تغییرات</string>
<string name="turn_screen_on_info">در هنگام ناوبری، نقشه را روی صفحهٔ قفل نمایش بده.</string>
- <string name="route_parameters_info">این تنظیمات روی مسیریابی اثرگذار است. فقط برای پروفایل انتخاب‌شده به کار گرفته خواهد شد: %1$s.</string>
+ <string name="route_parameters_info">این تنظیمات بر مسیریابی اثرگذار است. فقط برای پروفایل انتخاب‌شده به کار گرفته خواهد شد: %1$s.</string>
<string name="turn_screen_on">نمایشگر روشن شود</string>
<string name="map_during_navigation_info">نقشه در هنگام ناوبری</string>
<string name="map_during_navigation">نقشه در هنگام ناوبری</string>
@@ -3329,12 +3330,12 @@
<string name="app_mode_pickup_truck">کامیون پیک‌آپ</string>
<string name="analytics_pref_title">تحلیل‌ها</string>
<string name="logcat_buffer">بافر لاگ‌کت</string>
- <string name="shared_string_by_default">به‌طور پیشفرض</string>
+ <string name="shared_string_by_default">پیشفرض</string>
<string name="download_detaile_map">برای دیدن این منطقه، نقشهٔ باجزئیات %s را دانلود کنید.</string>
<string name="download_detailed_map">برای دیدن این منطقه، نقشهٔ باجزئیات %s را دانلود کنید.</string>
<string name="change_data_storage_full_description">فایل‌های دادهٔ OsmAnd را به مقصد جدید انتقال می‌دهید؟
\n%1$s &gt; %2$s</string>
- <string name="data_storage_preference_summary">%1$s • پُر %2$s گ‌ب</string>
+ <string name="data_storage_preference_summary">%1$s • %2$s گ‌ب استفاده شده</string>
<string name="data_storage_space_description">خالی %1$s • %2$s از %3$s گ‌ب</string>
<string name="enter_path_to_folder">مسیر پوشه را وارد کنید</string>
<string name="shared_string_select_folder">انتخاب پوشه</string>
@@ -3346,7 +3347,7 @@
<string name="rendering_attr_piste_type_snow_park_name">پارک برفی</string>
<string name="rendering_attr_piste_type_sleigh_name">سورتمه کالسکه‌ای</string>
<string name="rendering_attr_piste_type_sled_name">سورتمه</string>
- <string name="rendering_attr_piste_type_hike_name"></string>
+ <string name="rendering_attr_piste_type_hike_name"/>
<string name="rendering_attr_piste_type_skitour_name">تور اسکی</string>
<string name="rendering_attr_piste_type_downhill_name">دان‌هیل</string>
<string name="rendering_attr_piste_type_nordic_name">نوردیک</string>
@@ -3362,4 +3363,5 @@
<string name="routeInfo_piste_difficulty_name">دشواری پیست</string>
<string name="routing_attr_width_name">محدودیت عرض</string>
<string name="routing_attr_width_description">محدودیت پهنای وسیله در مسیرها را مشخص کنید.</string>
+ <string name="avoid_in_routing_descr_">از مسیرهای بخصوص و انواع جاده‌ها بپرهیزید</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-fr/phrases.xml b/OsmAnd/res/values-fr/phrases.xml
index 48722b30ba..6f1428418c 100644
--- a/OsmAnd/res/values-fr/phrases.xml
+++ b/OsmAnd/res/values-fr/phrases.xml
@@ -3632,4 +3632,14 @@
<string name="poi_goods_yes">Oui</string>
<string name="poi_goods_designated">Accès conçu pour les fauteuils roulants</string>
<string name="poi_disabled_yes">Oui</string>
+ <string name="poi_glacier_type_hanging">suspendu</string>
+ <string name="poi_motorcar_yes">accès-voiture :</string>
+ <string name="poi_motorcar_private">accès-voiture : privé</string>
+ <string name="poi_motorcar_no">accès-voiture : impossible</string>
+ <string name="poi_motorcar_permissive">accès-voiture : possible</string>
+ <string name="poi_motorcar_customers">accès-voiture : clients</string>
+ <string name="poi_motor_vehicle_yes">accès-voiture : autorisé</string>
+ <string name="poi_motor_vehicle_private">Accès-voiture : privé</string>
+ <string name="poi_motor_vehicle_delivery">Accès-véhicules : livraison</string>
+ <string name="poi_motor_vehicle_agricultural">Accès-véhicules : agricoles</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml
index 4b25cae698..bff2fc31a1 100644
--- a/OsmAnd/res/values-fr/strings.xml
+++ b/OsmAnd/res/values-fr/strings.xml
@@ -3262,7 +3262,7 @@ représentant la zone : %1$s x %2$s</string>
<string name="change_data_storage_full_description">Déplacer les fichiers de données OsmAnd vers la nouvelle destination \?
\n%1$s &gt; %2$s</string>
<string name="data_storage_preference_summary">%1$s • %2$s GB utilisés</string>
- <string name="data_storage_space_description">Libre %1$s • %2$s / %3$s GB</string>
+ <string name="data_storage_space_description">Libre %1$s GB • Total %2$s GB</string>
<string name="enter_path_to_folder">Saisissez le chemin du dossier</string>
<string name="shared_string_select_folder">Sélectionner le dossier</string>
<string name="paste_Osmand_data_folder_path">Coller le chemin du dossier contenant les données OsmAnd</string>
@@ -3290,4 +3290,16 @@ représentant la zone : %1$s x %2$s</string>
<string name="routing_attr_width_name">Limite de largeur</string>
<string name="routing_attr_width_description">Indique la limite de largeur autorisée sur les itinéraires.</string>
<string name="internal_app_storage_description">Stockage interne, masqué à l\'utilisateur ainsi qu\'aux autres applications ce qui signifie que seul OsmAnd peut accéder à vos données</string>
+ <string name="avoid_in_routing_descr_">Éviter certains types de route</string>
+ <string name="app_mode_utv">Côte à côte</string>
+ <string name="rendering_attr_piste_difficulty_connection_name">Connexion</string>
+ <string name="rendering_attr_piste_difficulty_aerialway_name">Transport aérien</string>
+ <string name="shared_string_calculate">Calculer</string>
+ <string name="shared_string_osmand_usage">Utilisation d\'OsmAnd</string>
+ <string name="shared_sting_tiles">Tuiles</string>
+ <string name="shared_string_maps">Cartes</string>
+ <string name="shared_string_memory_tb_desc">%1$s TB</string>
+ <string name="shared_string_memory_gb_desc">%1$s GB</string>
+ <string name="shared_string_memory_mb_desc">%1$s MB</string>
+ <string name="shared_string_memory_kb_desc">%1$s KB</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-gl/phrases.xml b/OsmAnd/res/values-gl/phrases.xml
index ab68acf01a..1e11d33972 100644
--- a/OsmAnd/res/values-gl/phrases.xml
+++ b/OsmAnd/res/values-gl/phrases.xml
@@ -3718,4 +3718,6 @@
<string name="poi_craft_floorer">Construtor de chans</string>
<string name="poi_craft_bakery">Obradoiro de panadaría</string>
<string name="poi_craft_cabinet_maker">Ebanista</string>
+ <string name="poi_charge">Carga</string>
+ <string name="poi_pet_grooming">Coidado de mascotas</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-gl/strings.xml b/OsmAnd/res/values-gl/strings.xml
index ea7f4cdcdf..fd6fb80d41 100644
--- a/OsmAnd/res/values-gl/strings.xml
+++ b/OsmAnd/res/values-gl/strings.xml
@@ -3299,7 +3299,7 @@ Lon %2$s</string>
<string name="wake_time">Hora de espertado</string>
<string name="units_and_formats">Unidades e formatos</string>
<string name="appearance">Aparencia</string>
- <string name="map_look_descr">iconas, trebellos</string>
+ <string name="map_look_descr">Aparencia do mapa</string>
<string name="map_look">Aparencia do mapa</string>
<string name="list_of_installed_plugins">Listaxe de engadidos instalados</string>
<string name="configure_navigation">Configurar a navegación</string>
@@ -3331,4 +3331,48 @@ Lon %2$s</string>
<string name="shared_string_by_default">Predefinido</string>
<string name="plugins_settings">Axustes do engadido</string>
<string name="download_detaile_map">Baixa o mapa detallado de %s, para poder ollar esta área.</string>
+ <string name="download_detailed_map">Baixa o mapa detallado de %s para ollar esta área.</string>
+ <string name="change_data_storage_full_description">Mover os ficheiros de datos do OsmAnd ó novo destino\?
+\n%1$s &gt; %2$s</string>
+ <string name="data_storage_preference_summary">%1$s • Empregado %2$s GB</string>
+ <string name="data_storage_space_description">Libre %1$s GB • Total %2$s GB</string>
+ <string name="enter_path_to_folder">Insire a ruta do cartafol</string>
+ <string name="shared_string_select_folder">Escoller cartafol</string>
+ <string name="paste_Osmand_data_folder_path">Colar ou pegar a ruta do cartafol cos datos do OsmAnd</string>
+ <string name="change_osmand_data_folder_question">Mudar o cartafol de datos do OsmAnd\?</string>
+ <string name="move_maps_to_new_destination">Mover ó novo destino</string>
+ <string name="internal_app_storage_description">Almacenamento interno, agochado para o usuario e outras aplicacións, para que ninguén agás o OsmAnd poida acceder ós teus datos</string>
+ <string name="change_data_storage_folder">Mudar o cartafol de almacenamento dos datos</string>
+ <string name="rendering_attr_piste_type_snow_park_name">Parque de neve</string>
+ <string name="rendering_attr_piste_type_sleigh_name">Zorra</string>
+ <string name="rendering_attr_piste_type_sled_name">Zorra</string>
+ <string name="rendering_attr_piste_type_hike_name">Camiñada</string>
+ <string name="rendering_attr_piste_type_connection_name">Conexión</string>
+ <string name="rendering_attr_piste_type_skitour_name">Esquí de travesía</string>
+ <string name="rendering_attr_piste_type_downhill_name">Descendemento</string>
+ <string name="rendering_attr_piste_type_nordic_name">Nórdico</string>
+ <string name="routeInfo_piste_type_name">Tipo de pista</string>
+ <string name="rendering_attr_piste_difficulty_novice_name">Novato</string>
+ <string name="rendering_attr_piste_difficulty_easy_name">Doado</string>
+ <string name="rendering_attr_piste_difficulty_intermediate_name">Intermedio</string>
+ <string name="rendering_attr_piste_difficulty_advanced_name">Avanzado</string>
+ <string name="rendering_attr_piste_difficulty_expert_name">Experto</string>
+ <string name="rendering_attr_piste_difficulty_freeride_name">Estilo libre</string>
+ <string name="rendering_attr_piste_difficulty_extreme_name">Extremo</string>
+ <string name="rendering_attr_piste_difficulty_undefined_name">Indefinido</string>
+ <string name="routeInfo_piste_difficulty_name">Dificuldade da pista</string>
+ <string name="routing_attr_width_name">Límite de largura</string>
+ <string name="routing_attr_width_description">Especifica o límite permitido de largura do vehículo nas rutas.</string>
+ <string name="avoid_in_routing_descr_">Evitar certas rutas e tipos de estradas</string>
+ <string name="app_mode_utv">Lado a lado</string>
+ <string name="rendering_attr_piste_difficulty_aerialway_name">Vía aeroportuaria</string>
+ <string name="rendering_attr_piste_difficulty_connection_name">Conexión</string>
+ <string name="shared_string_calculate">Calcular</string>
+ <string name="shared_string_osmand_usage">Uso do OsmAnd</string>
+ <string name="shared_sting_tiles">Teselas</string>
+ <string name="shared_string_maps">Mapas</string>
+ <string name="shared_string_memory_tb_desc">%1$s TB</string>
+ <string name="shared_string_memory_gb_desc">%1$s GB</string>
+ <string name="shared_string_memory_mb_desc">%1$s MB</string>
+ <string name="shared_string_memory_kb_desc">%1$s KB</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-he/strings.xml b/OsmAnd/res/values-he/strings.xml
index c665c97b16..872a9f22c2 100644
--- a/OsmAnd/res/values-he/strings.xml
+++ b/OsmAnd/res/values-he/strings.xml
@@ -3280,7 +3280,7 @@
<string name="change_data_storage_full_description">להעביר את קובצי הנתונים של OsmAnd ליעד החדש\?
\n%1$s &gt; %2$s</string>
<string name="data_storage_preference_summary">%1$s ‏• %2$s ג״ב מנוצלים</string>
- <string name="data_storage_space_description">%1$s פנויים • %2$s /‏ %3$s ג״ב</string>
+ <string name="data_storage_space_description">%1$s ג״ב פנויים • סה״כ %2$s ג״ב</string>
<string name="enter_path_to_folder">נא לספק נתיב לתיקייה</string>
<string name="shared_string_select_folder">בחירת תיקייה</string>
<string name="paste_Osmand_data_folder_path">נא להדביק את הנתיב לתיקייה עם הנתונים של OsmAnd</string>
@@ -3308,4 +3308,16 @@
<string name="routeInfo_piste_difficulty_name">דרגת קושי מסלול</string>
<string name="routing_attr_width_name">מגבלת רוחב</string>
<string name="routing_attr_width_description">ציון מגבלת רוחב מכונית אפשרי בנתיבים.</string>
+ <string name="avoid_in_routing_descr_">הימנעות מסוגים מסוימים של מסלולים וכבישים</string>
+ <string name="app_mode_utv">זה לצד זה</string>
+ <string name="rendering_attr_piste_difficulty_aerialway_name">דרך אווירית</string>
+ <string name="rendering_attr_piste_difficulty_connection_name">חיבור</string>
+ <string name="shared_string_calculate">חישוב</string>
+ <string name="shared_string_osmand_usage">שימוש ב־OsmAnd</string>
+ <string name="shared_sting_tiles">אריחים</string>
+ <string name="shared_string_maps">מפות</string>
+ <string name="shared_string_memory_tb_desc">%1$s ט״ב</string>
+ <string name="shared_string_memory_gb_desc">%1$s ג״ב</string>
+ <string name="shared_string_memory_mb_desc">%1$s מ״ב</string>
+ <string name="shared_string_memory_kb_desc">%1$s ק״ב</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-is/strings.xml b/OsmAnd/res/values-is/strings.xml
index c337dba681..12ca416ef0 100644
--- a/OsmAnd/res/values-is/strings.xml
+++ b/OsmAnd/res/values-is/strings.xml
@@ -3335,4 +3335,5 @@ Stendur fyrir svæði: %1$s x %2$s</string>
<string name="routeInfo_piste_difficulty_name">Erfiðleikastig brautar</string>
<string name="routing_attr_width_name">Takmörkun breiddar</string>
<string name="routing_attr_width_description">Tilgreindu takmörk á breidd farartækja á leiðum.</string>
+ <string name="avoid_in_routing_descr_">Forðast tilteknar leiðir og gerðir af vegum</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml
index 74d03db220..47eb980cd2 100644
--- a/OsmAnd/res/values-it/strings.xml
+++ b/OsmAnd/res/values-it/strings.xml
@@ -3252,7 +3252,7 @@ Rappresenta l\'area: %1$s x %2$s</string>
<string name="analytics_pref_title">Statistiche</string>
<string name="turn_screen_on_info">Mostra la mappa durante la navigazione sopra al salvaschermo</string>
<string name="route_parameters_info">Queste impostazioni riguardano il calcolo del percorso. Verranno applicate solo al profilo: %1$s.</string>
- <string name="wake_time">Ora di risveglio</string>
+ <string name="wake_time">Tempo di accensione</string>
<string name="units_and_formats">Unità e formati</string>
<string name="appearance">Aspetto</string>
<string name="map_look_descr">Icone, widget</string>
diff --git a/OsmAnd/res/values-my/strings.xml b/OsmAnd/res/values-my/strings.xml
index c33c4af523..4afd4b4d3f 100644
--- a/OsmAnd/res/values-my/strings.xml
+++ b/OsmAnd/res/values-my/strings.xml
@@ -13,8 +13,242 @@
<string name="shared_string_go">သွားမည်</string>
<string name="shared_string_previous">အလျင်က</string>
<string name="search_radius_proximity">အတွင်း</string>
- <string name="cancel_navigation">လမ်းညွှန်ခြင်းရပ်ထား</string>
+ <string name="cancel_navigation">လမ်းညွှန်ခြင်းရပ်မြည်</string>
<string name="day_night_info">နေ့/ည ပတ်သက်သောအချက်များ</string>
<string name="daynight_mode_auto">နေထွက်/နေဝင်</string>
<string name="poi">POI</string>
-</resources> \ No newline at end of file
+ <string name="shared_string_back">နောက်သို့</string>
+ <string name="get_unlimited_access">အကန့်အသတ်မဲ့သုံးခွင့်ရှိ</string>
+ <string name="price_free">အလကား</string>
+ <string name="configure_profile_info">အောက်ဖော်ပြပါ settings အားလုံးသည်ရွေးချယ်ထားသောပရိုဖိုင်းကိုသာထိခိုက်သည်။</string>
+ <string name="shared_string_example">ဥပမာ</string>
+ <string name="change_default_settings">မူလက settings များကိုပြောင်းမြည်</string>
+ <string name="discard_changes">ပြောင်းလဲထားချက်များကို ဖယ်ရှားမြည်</string>
+ <string name="wake_time">နိုးချိန်</string>
+ <string name="configure_profile">ပရိုဖိုင်းကိုပြုပြင်မြည်</string>
+ <string name="switch_profile">ပရိုဖိုင်းကိုပြောင်းလဲမည်</string>
+ <string name="change_data_storage_full_description">OsmAnd အချက်အလက်ဖိုင်များကိုနေရာအသစ်သို့ရွှေ့ပါ။ \n%1$s &gt; %2$s</string>
+ <string name="data_storage_preference_summary">%1$s • သုံးပြီး %2$s GB</string>
+ <string name="data_storage_space_description">"နေရာလွပ် %1$s • %2$s / %3$s GB"</string>
+ <string name="enter_path_to_folder">folder ကိုရှိနေရာကိုရိုက်ထည့်ပါ</string>
+ <string name="shared_string_select_folder">ဖိုလ်ဒါကိုရွေးပါ</string>
+ <string name="paste_Osmand_data_folder_path">OsmAnd ဒေတာရှိသော ဖိုလ်ဒါနေရာကိုကူးထည့်ပါ</string>
+ <string name="change_osmand_data_folder_question">OsmAnd data folder ကိုပြောင်းမြည်\?</string>
+ <string name="move_maps_to_new_destination">နေရာအသစ်ကိုပြောင်းမြည်</string>
+ <string name="change_data_storage_folder">OsmAnd data folder ကိုပြောင်းမြည်</string>
+ <string name="rendering_attr_piste_type_snow_park_name">နှင်းပန်းခြံ</string>
+ <string name="rendering_attr_piste_type_hike_name">ခရီးဝေးလမ်းရှောက်</string>
+ <string name="rendering_attr_piste_type_downhill_name">တောင်ဂုံးဆင်း</string>
+ <string name="routeInfo_piste_type_name">"နှင်းတောင်ပေါ် ski စီးလမ်းအမြိုး"</string>
+ <string name="rendering_attr_piste_difficulty_easy_name">လွယ်တယ်</string>
+ <string name="map_orientation_change_in_accordance_with_speed">မြေပုံ orientation ကန့်သတ်နေရာ</string>
+ <string name="today">ဒီနေ့</string>
+ <string name="yesterday">မနေ့</string>
+ <string name="shared_string_install">ထည့်သွင်းပါ</string>
+ <string name="routing_attr_allow_private_name">ကိုယ်ပိုင်သုံးခွင့်ရှိ</string>
+ <string name="change_color">အရောင်ပြောင်းပါ</string>
+ <string name="select_street">လမ်းရွေးပါ</string>
+ <string name="type_address">လိပ်စာရိုက်ပါ</string>
+ <string name="type_city_town">မြို့ကြီးသို့မဟုတ်မြို့ရိုက်ထည့်ပါ</string>
+ <string name="type_postcode">စာပို့သင်္ကေတရိုက်ထည့်ပါ</string>
+ <string name="nearest_cities">အနီးဆုံးမြို့ကြီးများ</string>
+ <string name="select_city">မြို့ကြီးရွေးချယ်ပါ</string>
+ <string name="select_postcode">စာပို့သင်္ကေတကိုရွေးချယ်ပါ</string>
+ <string name="right_side_navigation">ညာလက်မောင်း</string>
+ <string name="driving_region_automatic">အော်တိုမက်တစ်</string>
+ <string name="routing_attr_relief_smoothness_factor_hills_name">တောင်ကုန်း</string>
+ <string name="routing_attr_relief_smoothness_factor_more_plains_name">မြေညီ</string>
+ <string name="routing_attr_driving_style_speed_name">လမ်းကြောင်းတိုများ</string>
+ <string name="routing_attr_driving_style_balance_name">တန်းတူရည်တူ</string>
+ <string name="routing_attr_driving_style_name">မောင်းနှင်မှုပုံစံ</string>
+ <string name="routing_attr_relief_smoothness_factor_name">မြင့်အတက်အကျကိုရွေးချယ်ပါ</string>
+ <string name="routing_attr_allow_motorway_name">အဝေးပြေးလမ်းမသုံးခွင့်ပြု</string>
+ <string name="rendering_value_light_brown_name">အညိုရောင်နုနု</string>
+ <string name="rendering_value_dark_brown_name">အညိုေရာင်ရင့်</string>
+ <string name="selected_categories">ရွေးချယ်ထားသောအမျိုးအစားများ</string>
+ <string name="custom_search">စိတ်ကြိုက်ရှာဖွေခြင်း</string>
+ <string name="apply_filters">filter များကိုအသုံးပြုပါ</string>
+ <string name="save_filter">filter ကိုသိမ်းပါ</string>
+ <string name="delete_filter">filter ကိုဖျက်ပါ</string>
+ <string name="si_mi_meters">Miles/meters</string>
+ <string name="search_another_country">အခြားဒေသတစ်ခုကိုရွေးပါ</string>
+ <string name="first_usage_wizard_desc">သင်၏တည်နေရာကို OsmAnd ကဆုံးဖြတ်ခွင့်ပေးပြီး ထိုဒေသအတွက်မြေပုံများကိုဆွဲယူမြည်။</string>
+ <string name="location_not_found">တည်နေရာကိုမတွေ့ပါ</string>
+ <string name="no_inet_connection">အင်တာနက်ဆက်သွယ်မှုမရှိပါ</string>
+ <string name="no_inet_connection_desc_map">မြေပုံများကို download လုပ်ရန်လိုအပ်သည်။</string>
+ <string name="get_started">စတင်ပါ</string>
+ <string name="postcode">စာပို့သင်္ကေတ</string>
+ <string name="shared_string_from">မှ</string>
+ <string name="city_type_district">နယ်မြေဒေသ</string>
+ <string name="city_type_neighbourhood">ရပ်ကွက်ထဲ</string>
+ <string name="shared_string_is_open_24_7">၂၄/၇ ဖွင့်လှစ်</string>
+ <string name="app_mode_bus">ဘတ်စ်ကား</string>
+ <string name="app_mode_train">ရထား</string>
+ <string name="map_widget_battery">ဘက်ထရီအဆင့်</string>
+ <string name="map_widget_magnetic_bearing">သံလိုက် ဦးတည်ရာ</string>
+ <string name="map_widget_bearing">ကိုယ်နဲ့နှိုင်း ယှဉ် ဦးတည်ရာ</string>
+ <string name="map_markers_other">အခြားအမှတ်အသားများ</string>
+ <string name="shared_string_widgets">Widgets</string>
+ <string name="map_markers">မြေပုံအမှတ်အသားများ</string>
+ <string name="shared_string_remove">ဖယ်ရှားပါ</string>
+ <string name="shared_string_select">ရွေးချယ်ပါ</string>
+ <string name="shared_string_sound">အသံ</string>
+ <string name="no_address_found">လိပ်စာဆုံးဖြတ်မရ</string>
+ <string name="shared_string_near">အနီး</string>
+ <string name="default_speed_system">မြန်နှုန်းယူနစ်</string>
+ <string name="nm">nmi</string>
+ <string name="si_nm">ရေကြောင်းမိုင်</string>
+ <string name="si_mph">တစ်နာရီမိုင်</string>
+ <string name="si_m_s">တစ်စက္ကန့်ကိုမီတာ</string>
+ <string name="si_min_km">တစ်မိနစ်မှာ ကီလိုမီတာနှုန်း</string>
+ <string name="si_min_m">တစ်မိနစ်မှာမိုင်</string>
+ <string name="min_mile">မိနစ် / မီတာ</string>
+ <string name="min_km">မိနစ် / ကီလိုမီတာ</string>
+ <string name="m_s">မီတာ / စက္ကန့်</string>
+ <string name="looking_up_address">လိပ်စာရှာဖွေနေသည်</string>
+ <string name="create_custom_poi">စိတ်တိုင်းကျ filter ကိုဖန်တီးပါ</string>
+ <string name="utm_format_descr">OsmAnd သည် UTM Standard format ကိုအသုံးပြုသည် UTM Nato format နှင့်ဆင်တူသော်လည်းမတူပါ။</string>
+ <string name="navigate_point_format_utm">UTM စံသတ်မှတ်ချက်</string>
+ <string name="coordinates_format_info">ရွေးချယ်ထားသည့်ပုံစံသည် application နေရာအားလုံးသို့သက်ရောက်လိမ့်မည်။</string>
+ <string name="pref_selected_by_default_for_profiles">ဤသတ်မှတ်ချက်ကိုပရိုဖိုင်း %s အတွက်ပုံမှန်အားဖြင့်ရွေးထားသည်</string>
+ <string name="apply_to_current_profile">လက်ရှိပရိုဖိုင်း %1$s ကိုပြုပြင်မြည်</string>
+ <string name="apply_to_all_profiles">ပရိုဖိုင်းအားလုံးကိုပြောင်းလဲမည်</string>
+ <string name="start_up_message_pref">စစခြင်းမက်ဆေ့ခ်ျ</string>
+ <string name="turn_screen_on_info">မြေပုံကို screen သော့ခတ်မျက်နှာပြင်အပေါ်ထက်မှာပြမြည်။</string>
+ <string name="appearance">ပုံပန်းမျက်နှာပြင်</string>
+ <string name="map_look_descr">မြေပုံမျက်နှာပြင်</string>
+ <string name="list_of_installed_plugins">Installed လုတ်ထားသောပလပ်အင်များ</string>
+ <string name="configure_navigation">လမ်းညွှန်ခြင်းဖွဲ့စည်းပုံ</string>
+ <string name="screen_alerts_descr">သတိပေးချက်များကို navigation လုပ်စဉ် screen ၏ဘယ်ဘက်အောက်ထောင့်တွင်အချက်ပြလိမ့်မည်။</string>
+ <string name="language_and_output">ဘာသာစကားနှင့်ထွက်ရှိမှု</string>
+ <string name="reset_to_default">မူလပုံမှန်ကိုပြန်ပြောင်းမြည်</string>
+ <string name="manage_profiles_descr">profile များကိုဖန်တီးခြင်း၊ တင်သွင်းခြင်း၊ တည်းဖြတ်ခြင်း</string>
+ <string name="application_profile_changed">Application ပရိုဖိုင်းကို \"%s\" သို့ပြောင်းခဲ့သည်</string>
+ <string name="shared_string_by_default">မူလပုံမှန်</string>
+ <string name="download_detailed_map">ဤဒေသရဲ့အသေးစိတ်် %s မြေပုံကို download ပြီးကြည့်ပါ။</string>
+ <string name="internal_app_storage_description">သုံးစွဲသူနှင့်အခြားအက်ပလီကေးရှင်းများမှသိမ်းဆည်းထားသောအတွင်းသိုလှောင်မှုဖြစ်သောကြောင့် OsmAnd မှလွဲ၍ မည်သူမျှသင့်အချက်အလက်များကိုလက်လှမ်းမမီနိုင်ပါ</string>
+ <string name="rendering_attr_piste_type_nordic_name">စကင်ဒနေဗီးယားနိုင်ငံများ</string>
+ <string name="rendering_attr_piste_difficulty_novice_name">ဝါနုသူ</string>
+ <string name="rendering_attr_piste_difficulty_intermediate_name">ဝါလတ်</string>
+ <string name="rendering_attr_piste_difficulty_advanced_name">ဝါအမြင့်</string>
+ <string name="rendering_attr_piste_difficulty_expert_name">ဝါရင့်</string>
+ <string name="rendering_attr_piste_difficulty_extreme_name">အစွန်းရောက်</string>
+ <string name="routeInfo_piste_difficulty_name">နှင်းတောင် ski အခက်အခဲ</string>
+ <string name="shared_string_color_magenta">ပန်းခရမ်းရောင်</string>
+ <string name="press_again_to_change_the_map_orientation">မြေပုံတည်နေရာကိုပြောင်းလဲရန်နောက်တစ်ကြိမ်အသာပုတ်ပါ</string>
+ <string name="default_speed_setting_descr">မူလအရှိန် settings များကိုပြောင်းမြည်</string>
+ <string name="minmax_speed_dialog_title">အနှေး /အမြန်နှုန်း ကိုသတ်မှတ်ပါ</string>
+ <string name="new_profile">ပရိုဖိုင်းအသစ်</string>
+ <string name="last_launch_crashed">OsmAnd ၏နောက်ဆုံးပစ်လွှတ်မှုမအောင်မြင်ပါ ကျေးဇူးပြုပြီးကျွန်ုပ်တို့က OsmAnd ကိုတိုးတက်စေရန်အမှားသတင်းစကားကိုဝေမျှပါ။</string>
+ <string name="day">နေ့</string>
+ <string name="days_2_4">နေ့ရက်များ</string>
+ <string name="days_5">နေ့ရက်များ</string>
+ <string name="week">အပတ်</string>
+ <string name="weeks_2_4">အပတ်များ</string>
+ <string name="weeks_5">အပတ်များ</string>
+ <string name="month">လ</string>
+ <string name="months_2_4">လများ</string>
+ <string name="months_5">လများ</string>
+ <string name="year">နှစ်</string>
+ <string name="years_2_4">နှစ်များ</string>
+ <string name="years_5">နှစ်များ</string>
+ <string name="months_3">သုံးလ</string>
+ <string name="get_discount_second_part">ပြီးရင် %1$s</string>
+ <string name="cancel_subscription">ကြေးပေးသွင်းမှုကိုပယ်ဖျက်ပါ</string>
+ <string name="osmand_settings">OsmA အပြင်အဆင်များ</string>
+ <string name="copy_from_other_profile">အခြားပရိုဖိုင်းမှကူးယူပါ</string>
+ <string name="turn_screen_on">မျက်နှာပြင်ဖွင့်ပါ</string>
+ <string name="map_during_navigation_info">လမ်းညွှန်နေစဉ်မြေပုံ</string>
+ <string name="map_during_navigation">လမ်းညွှန်နေစဉ်မြေပုံ</string>
+ <string name="shared_string_other">အခြား</string>
+ <string name="vehicle_parameters_descr">အလေးချိန်၊ အမြင့်၊ အမြန်နှုန်း</string>
+ <string name="vehicle_parameters">ယာဉ်သတ်မှတ်ချက်များ</string>
+ <string name="voice_announces_info">အသံကြေငြာချက်များသည် လမ်းညွှန်အတွင်းသာလာမြည်။</string>
+ <string name="voice_announces_descr">လမ်းညွှန်ညွှန်ကြားချက်နှင့်ကြေငြာ</string>
+ <string name="voice_announces">အသံကြေငြာ</string>
+ <string name="screen_alerts">ဖန်သားပြင်သတိပေးချက်များ</string>
+ <string name="route_parameters_descr">လမ်းကြောင်း parameters များကိုပြုပြင်ပါ</string>
+ <string name="route_parameters">လမ်းကြောင်း parameters များ</string>
+ <string name="shared_string_walk">လမ်းလျှောက်</string>
+ <string name="save_poi_value_exceed_length">tag ၏အများဆုံးအရှည်မှအက္ခရာာ %s လုံးဖြစ်သည်။
+\nကျေးဇူးပြုပြီးတိုပေးပါ။</string>
+ <string name="avoid_pt_types_descr">လမ်းညွှန်ရန် မသုံးမြည့်ပြည်သူပို့ဆောင်ရေးအမျိုးအစားများကိုရွေးပါ။</string>
+ <string name="avoid_pt_types">ရှောင်ထားသောပို့ဆောင်ရေးအမျိုးအစားများ</string>
+ <string name="shared_string_degrees">ဒီဂရီ</string>
+ <string name="shared_string_milliradians">Milliradians</string>
+ <string name="routing_attr_avoid_tram_name">လမ်းရထားများကိုရှောင်ပါ</string>
+ <string name="routing_attr_avoid_tram_description">လမ်းရထားများကိုရှောင်</string>
+ <string name="routing_attr_avoid_bus_name">ဘတ်စ်ကားများကိုရှောင်</string>
+ <string name="routing_attr_avoid_bus_description">ဘတ်စ်ကားနှင့် trolleyဘတ်စ်များကိုရှောင်</string>
+ <string name="routing_attr_avoid_share_taxi_name">စုပေါင်းစီးတက္ကစီကိုရှောင်</string>
+ <string name="routing_attr_avoid_share_taxi_description">စုပေါင်းစီးတက္ကစီကိုရှောင်</string>
+ <string name="routing_attr_avoid_train_name">ရထားတွေကိုရှောင်</string>
+ <string name="routing_attr_avoid_train_description">ရထားတွေကိုရှောင်</string>
+ <string name="routing_attr_avoid_subway_name">မြေအောက်ရထားတွေကိုရှောင်</string>
+ <string name="routing_attr_avoid_subway_description">မြေအောက်ရထားနှင့်ရထားများကိုရှောင်</string>
+ <string name="routing_attr_avoid_ferry_name">သင်္ဘောများကိုရှောင်</string>
+ <string name="routing_attr_avoid_ferry_description">သင်္ဘောများကိုရှောင်</string>
+ <string name="send_log">log ပို့ပါ</string>
+ <string name="files_moved">%1$d ဖိုင်များ (%2$s) ပြောင်းထားသည်။</string>
+ <string name="files_copied">%1$d ဖိုင်များကို (%2$s) ကူးယူထားသည်။</string>
+ <string name="move_maps">မြေပုံများကိုရွှေ့ပါ</string>
+ <string name="dont_move_maps">မရွှေ့ရ</string>
+ <string name="public_transport_ped_route_title">ခြေလျင်ဖြင့်သွားသောလမ်းကြောင်းသည်ခန့်မှန်းခြေအားဖြင့် %1$s ဖြစ်ပြီးပြည်သူပို့ဆောင်ရေးထက်ပိုမြန်လိမ့်မည်</string>
+ <string name="public_transport_no_route_title">OsmAnd သည်သင်၏ဆက်တင်များနှင့်အံဝင်ခွင်ကျဖြစ်မည့်လမ်းကြောင်းကိုရှာမတွေ့ပါ။</string>
+ <string name="public_transport_calc_pedestrian">လမ်းလျှောက်လမ်းကြောင်းကိုတွက်ချက်မြည်</string>
+ <string name="public_transport_type">သယ်ယူပို့ဆောင်ရေးအမျိုးအစား</string>
+ <string name="searching_gps">GPS ရှာဖွေခြင်း</string>
+ <string name="coordinates_widget">Coordinates ဝစ်ဂျက်</string>
+ <string name="rate_dialog_descr">စက္ကန့် ၃၀လောက်အချိန်ပေးပြီး Google Play မှာ ကျွန်ုပ်တို့၏ application ကို သင်၏ထင်မြင်ချက်များ တင်ပြပေးပါ။</string>
+ <string name="button_rate">သတ်မှတ်ချက်</string>
+ <string name="shared_string_privacy_policy">တစ်ကိုယ်ရေ မူဝါဒ</string>
+ <string name="help_us_make_osmand_better">ကျွန်တော်တို့ရဲ့ OsmAnd ကိုပိုကောင်းအောင်ကူညီပါ!</string>
+ <string name="choose_data_to_share">သင်မျှဝေလိုသည့်အချက်အလက်အမျိုးအစားကိုရွေးချယ်ပါ။</string>
+ <string name="downloaded_maps">ဒေါင်းလုပ်လုပ်ထားသောမြေပုံများ</string>
+ <string name="visited_screens">သွားရောက်ကြည့်ရှုခဲ့ဖန်သားပြင်မျာ</string>
+ <string name="visited_screens_collect_descr">မည်သည့် OsmAnd အင်္ဂါရပ်များသည်လူကြိုက်အများဆုံးဖြစ်ကြောင်းနားလည်ရန်ကျွန်ုပ်တို့ကိုကူညီပါ။</string>
+ <string name="privacy_and_security_change_descr">Allow ကိုနှိပ်ရင် ကျွန်ုပ်တို့၏ %1$s ကိုသင်သဘောတူသည်</string>
+ <string name="settings_privacy_and_security_desc">မည်သည့်ဒေတာကိုကျွန်ုပ်တို့နှင့်မျှဝေနေသည်ကိုရွေးချယ်ပါ</string>
+ <string name="shared_string_allow">ခွင့်ပြုပါ</string>
+ <string name="nav_type_hint">လမ်းညွှန်အမျိုးအစား</string>
+ <string name="app_mode_taxi">တက္ကစီ</string>
+ <string name="app_mode_subway">မြေအောက်ရထား</string>
+ <string name="app_mode_horse">မြင်း</string>
+ <string name="app_mode_helicopter">ရဟတ်ယာဉ်</string>
+ <string name="osmand_routing_promo">..osmand / routing တွင်သင့်ကိုယ်ပိုင်ပြင်ဆင်ထားသော routing.xml ဖိုင်ကို ထည့်သွင်းနိုင်သည်</string>
+ <string name="app_mode_skiing">နှင်းလျှောစီး</string>
+ <string name="base_profile_descr_ski">နှင်းလျှောစီး</string>
+ <string name="show_compass_ruler">သံလိုက်အိမ်မြှောင်ကိုဖော်ပြ</string>
+ <string name="hide_compass_ruler">သံလိုက်အိမ်မြှောင်ကိုဖြောက်လိုက်</string>
+ <string name="select_icon_profile_dialog_title">အိုင်ကွန်ကိုရွေးပါ</string>
+ <string name="settings_routing_mode_string">mode: %s</string>
+ <string name="routing_profile_ski">နှင်းလျှောစီး</string>
+ <string name="profile_type_descr_string">အမျိုးအစား: %s</string>
+ <string name="profile_type_base_string">အခြေခံပရိုဖိုင်း</string>
+ <string name="profile_alert_need_routing_type_title">လမ်းညွှန်အမျိုးအစားကိုရွေးပါ</string>
+ <string name="profile_alert_need_routing_type_msg">application ပရိုဖိုင်းအသစ်အတွက် လမ်းညွှန်အမျိုးအစားရွေးပါ</string>
+ <string name="profile_alert_need_profile_name_title">ပရိုဖိုင်းအမည်ရိုက်ထည့်ပါ</string>
+ <string name="profile_alert_need_profile_name_msg">ပရိုဖိုင်းအမည်မှာဗလာမဖြစ်သင့်ပါ!</string>
+ <string name="profile_alert_duplicate_name_title">နာမည် နှခုထပ်</string>
+ <string name="profile_alert_duplicate_name_msg">အဲဒီနာမည်နဲ့ပရိုဖိုင်းရှိပြီးသားဖြစ်သည်</string>
+ <string name="profile_alert_cant_delete_base">OsmAnd ၏အခြေခံ ပရိုဖိုင်းများကိုဖျက်လို့မရပါ</string>
+ <string name="profile_alert_need_save_title">ပြောင်းလဲမှုများကိုသိမ်းပါ</string>
+ <string name="profile_alert_need_save_msg">ရှေ့ဆက်မသွားမီပရိုဖိုင်းသို့ပြောင်းလဲမှုများကိုအရင်သိမ်းထားရန်လိုအပ်သည်</string>
+ <string name="profile_alert_delete_title">ပရိုဖိုင်းကိုဖျက်မည်</string>
+ <string name="profile_alert_delete_msg">%s ပရိုဖိုင်းကိုသင်ဖျက်လိုကြောင်းသေချာပါလား</string>
+ <string name="select_base_profile_dialog_title">အခြေခံပရိုဖိုင်းကိုရွေးချယ်ပါ</string>
+ <string name="select_nav_profile_dialog_title">လမ်းညွှန်အမျိုးအစားကိုရွေးပါ</string>
+ <string name="base_profile_descr_car">ကား၊ ထရပ်ကား၊ ဆိုင်ကယ်</string>
+ <string name="base_profile_descr_bicycle">MTB, moped, မြင်း</string>
+ <string name="base_profile_descr_pedestrian">လမ်းလျှောက်, တောင်တက်, အပြေး</string>
+ <string name="base_profile_descr_public_transport">ပြည်သူပို့ဆောင်ရေးအမျိုးအားလုံး</string>
+ <string name="base_profile_descr_boat">သင်္ဘော၊ လှေလှော်ခြင်း၊ ရွက်လွှင့်ခြင်း</string>
+ <string name="base_profile_descr_aircraft">လေယာဉ်ပျံ၊ စက်မဲ့လေယာဉ်ပျံ</string>
+ <string name="routing_profile_geocoding">Geocoding</string>
+ <string name="routing_profile_straightline">လမ်းဖြောင့်</string>
+ <string name="osmand_default_routing">Osmand လမ်းကြောင်း</string>
+ <string name="custom_routing">စိတ်တိုင်းကျလမ်းကြောင်းပရိုဖိုင်း</string>
+ <string name="special_routing_type">အထူးလမ်းကြောင်း</string>
+ <string name="application_profiles_descr">အက်ပလီကေးရှင်းထဲတွင်မြင်နိုင်သောပရိုဖိုင်းများကိုရွေးချယ်ပါ။</string>
+ <string name="application_profiles">အက်ပလီကေးရှင်းပရိုဖိုင်းများ</string>
+</resources>
diff --git a/OsmAnd/res/values-nb/strings.xml b/OsmAnd/res/values-nb/strings.xml
index 29dbc66597..bb90b8b01c 100644
--- a/OsmAnd/res/values-nb/strings.xml
+++ b/OsmAnd/res/values-nb/strings.xml
@@ -768,9 +768,9 @@
<string name="show_more_map_detail_descr">Vis noen vektorkartdetaljer (veier etc.) allerede ved lavere zoomnivåer.</string>
<string name="choose_audio_stream">Utdata for taleveiledning</string>
<string name="choose_audio_stream_descr">Velg høyttaleren til å avspille taleveiledningen.</string>
- <string name="voice_stream_voice_call">Telefonanropslyd (også for å avbryte bluetooth-bilstereo)</string>
+ <string name="voice_stream_voice_call">Telefonanropslyd (for å avbryte Blåtanns-bilstereo)</string>
<string name="voice_stream_notification">Varslingslyd</string>
- <string name="voice_stream_music">Media-/musikklyd</string>
+ <string name="voice_stream_music">Media-/navigasjonslyd</string>
<string name="level_to_switch_vector_raster_descr">Bruk rasterkart for alt utover dette nivået.</string>
<string name="level_to_switch_vector_raster">Minste vektorielle forstørrelsesnivå</string>
<string name="incomplete_locale">ufullstendig</string>
@@ -806,7 +806,7 @@
<string name="rendering_value_pink_name">Rosa</string>
<string name="rendering_value_brown_name">Brun</string>
<string name="use_points_as_intermediates">Beregn rute mellom punkter</string>
- <string name="lang_sr">Serbisk</string>
+ <string name="lang_sr">Serbisk (kyrillisk)</string>
<string name="lang_zh_cn">Kinesisk (forenklet)</string>
<string name="lang_zh_tw">Kinesisk (tradisjonell)</string>
<string name="keep_and_add_destination_point">Legg til som påfølgende reisemål</string>
@@ -1761,7 +1761,7 @@
<string name="si_nm_h">Nautisk mil i timen (knop)</string>
<string name="simulate_your_location_stop_descr">Stopp simulering av din posisjon.</string>
<string name="simulate_your_location_descr">Simuler din posisjon ved bruk av en beregnet rute eller et GPX-spor som er tatt opp.</string>
- <string name="av_locations_descr">GPX-fil med plasseringsnotater.</string>
+ <string name="av_locations_descr">GPX-fil med plasseringer.</string>
<string name="rendering_attr_currentTrackColor_description">GPX-farge</string>
<string name="archive_wikipedia_data">Du har gamle, inkompatible Wikipediadata. Arkiver disse?</string>
<string name="download_wikipedia_files">Last ned ytterligere Wikipedia-data (%1$s MB)?</string>
@@ -2426,7 +2426,7 @@
<string name="will_open_on">Åpner</string>
<string name="shared_string_without_name">Uten navn</string>
<string name="lang_lo">Laotisk</string>
- <string name="lang_sr_latn">Serbisk (Latin)</string>
+ <string name="lang_sr_latn">Serbisk (latinsk)</string>
<string name="update_poi_does_not_change_indexes">Interessepunktendringer i programmet påvirker ikke nedlastede kartfiler, endringer lagres som en fil på enheten din i stedet.</string>
<string name="si_mi_feet">Eng. mil/fot</string>
<string name="si_mi_yard">Eng. mil/yard</string>
@@ -2901,7 +2901,7 @@
<string name="shared_string_capacity">Kapasitet</string>
<string name="shared_string_width">Bredde</string>
<string name="shared_string_height">Høyde</string>
- <string name="routeInfo_roadClass_name">Klasse</string>
+ <string name="routeInfo_roadClass_name">Veitype</string>
<string name="routeInfo_surface_name">Overflate</string>
<string name="routeInfo_smoothness_name">Jevnhet</string>
<string name="routeInfo_steepness_name">Stigning</string>
@@ -3045,15 +3045,15 @@
<string name="button_rate">Vurder</string>
<string name="shared_string_privacy_policy">Personvernspraksis</string>
<string name="help_us_make_osmand_better">Hjelp oss å forbedre OsmAnd.</string>
- <string name="make_osmand_better_descr">Tillat OsmAnd å samle inn og behandle anonym programbruksdata. Vi samler ikke inn eller lagrer data om din plassering, eller om plasseringene du ser på på kartet.
-\n
+ <string name="make_osmand_better_descr">Tillat OsmAnd å samle inn og behandle anonym programbruksdata. Vi samler ikke inn eller lagrer data om din plassering, eller om plasseringer ser på på kartet.
+\n
\nDu kan alltid endre ditt valg i Innstillinger &gt; Personvern og sikkerhet.</string>
<string name="choose_data_to_share">Velg hvilken type data du ønsker å dele:</string>
<string name="downloaded_maps">Nedlastede kart</string>
<string name="visited_screens">Besøkte skjermer</string>
- <string name="collected_data_descr">Liste over data du ønsker å dele med OsmAnd.</string>
- <string name="downloaded_maps_collect_descr">Denne dataen samles inn for å forstå hvilke kart og hvilke regioner og land som er mest populære.</string>
- <string name="visited_screens_collect_descr">Denne dataen samles inn for å forstå hvilke funksjoner i OsmAnd som er mest populære.</string>
+ <string name="collected_data_descr">Definer hvilken data du ønsker å dele med OsmAnd.</string>
+ <string name="downloaded_maps_collect_descr">Hjelp oss å forstå hvilke kart over hvilke regioner og land som er mest populære.</string>
+ <string name="visited_screens_collect_descr">Hjelp oss å forstå hvilke OsmAnd-funksjoner som er mest populære.</string>
<string name="privacy_and_security_change_descr">Ved å trykke \"Tillat\", samtykker du til vår %1$s</string>
<string name="settings_privacy_and_security">Personvern og sikkerhet</string>
<string name="settings_privacy_and_security_desc">Velg data til deling</string>
@@ -3064,7 +3064,7 @@
<string name="app_mode_taxi">Drosje</string>
<string name="app_mode_horse">Hest</string>
<string name="app_mode_helicopter">Helikopter</string>
- <string name="osmand_routing_promo">Du kan legge til din egen endrede versjon av routing.xml til i ..osmand/routing</string>
+ <string name="osmand_routing_promo">Du kan legge til din egen endrede versjon av filen routing.xml til i ..osmand/routing</string>
<string name="app_mode_skiing">Skikjøring</string>
<string name="base_profile_descr_ski">Skikjøring</string>
<string name="show_compass_ruler">Vis kompasslinjal</string>
@@ -3076,16 +3076,16 @@
<string name="profile_type_descr_string">Type: %s</string>
<string name="profile_type_base_string">Grunnprofil</string>
<string name="profile_alert_need_routing_type_title">Velg navigasjonstype</string>
- <string name="profile_alert_need_routing_type_msg">Du må velge navigasjonstype for å opprette en ny programprofil</string>
+ <string name="profile_alert_need_routing_type_msg">Du må velge navigasjonstype for den nye programprofilen</string>
<string name="profile_alert_need_profile_name_title">Skriv inn profilnavn</string>
<string name="profile_alert_need_profile_name_msg">Profilnavn kan ikke være tomt.</string>
<string name="profile_alert_duplicate_name_title">Duplikatnavn</string>
<string name="profile_alert_duplicate_name_msg">Det finnes allerede en profil med dette navnet</string>
- <string name="profile_alert_cant_delete_base">Du kan ikke slette OsmAnd-grunnprofiler</string>
+ <string name="profile_alert_cant_delete_base">Du kan ikke slette OsmAnd sine grunnprofiler</string>
<string name="profile_alert_need_save_title">Lagre endringer</string>
<string name="profile_alert_need_save_msg">Du må lagre endringer før du kan fortsette</string>
<string name="profile_alert_delete_title">Slett profil</string>
- <string name="profile_alert_delete_msg">Er du sikker på at du ønsker å slette profilen %s</string>
+ <string name="profile_alert_delete_msg">Er du sikker på at du ønsker å slette %s-profilen</string>
<string name="select_base_profile_dialog_title">Velg grunnprofil</string>
<string name="select_nav_profile_dialog_title">Velg navigasjonstype</string>
<string name="base_profile_descr_car">Bil, lastebil, motorsykkel</string>
@@ -3115,7 +3115,7 @@
<string name="process_downloading_service">OsmAnd nedlastingstjeneste</string>
<string name="shared_string_color_magenta">Magenta</string>
<string name="shared_string_icon">Ikon</string>
- <string name="collected_data">Innsamlet data</string>
+ <string name="collected_data">Data innsamlet</string>
<string name="press_again_to_change_the_map_orientation">Trykk igjen for å endre kartorientering</string>
<string name="app_mode_offroad">Terreng</string>
<string name="edit_profile_setup_title">Sett opp profil</string>
@@ -3218,11 +3218,31 @@
<string name="vehicle_parameters">Kjøretøyparameter</string>
<string name="screen_alerts">Skjermvarsler</string>
<string name="logcat_buffer">Logcat-mellomlager</string>
- <string name="map_look_descr">ikoner, miniprogrammer</string>
+ <string name="map_look_descr">Kartutseende</string>
<string name="map_look">Kartutseende</string>
<string name="general_settings_profile_descr">Programdrakt, enheter, region</string>
<string name="language_and_output">Språk og utdata</string>
<string name="plugins_settings">Programtilleggsinnstillinger</string>
<string name="shared_string_by_default">Som forvalg</string>
<string name="download_detaile_map">Last ned detaljert %s-kart, for å vise dette området.</string>
+ <string name="sett_no_ext_input">Ingen</string>
+ <string name="change_data_storage_full_description">Flytt OsmAnd-datafiler til det nye målet\?
+\n%1$s &gt; %2$s</string>
+ <string name="data_storage_preference_summary">%1$s • %2$s GB brukt</string>
+ <string name="data_storage_space_description">%1$s GB ledig • %2$s GB totalt</string>
+ <string name="shared_string_select_folder">Velg mappe</string>
+ <string name="change_osmand_data_folder_question">Endre OsmAnd-datamappe\?</string>
+ <string name="move_maps_to_new_destination">Flytt til det nye målet</string>
+ <string name="routing_attr_width_name">Breddebegrensning</string>
+ <string name="routing_attr_width_description">Velg tillatt kjøretøybredde på ruter.</string>
+ <string name="avoid_in_routing_descr_">Unngå visse ruter og veityper</string>
+ <string name="app_mode_utv">Side om side</string>
+ <string name="shared_string_calculate">Beregn</string>
+ <string name="shared_string_osmand_usage">OsmAnd-bruk</string>
+ <string name="shared_sting_tiles">Flis</string>
+ <string name="shared_string_maps">Kart</string>
+ <string name="shared_string_memory_tb_desc">%1$s TB</string>
+ <string name="shared_string_memory_gb_desc">%1$s GB</string>
+ <string name="shared_string_memory_mb_desc">%1$s MB</string>
+ <string name="shared_string_memory_kb_desc">%1$s KB</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-nl/strings.xml b/OsmAnd/res/values-nl/strings.xml
index b46f7bb187..a516849ec3 100644
--- a/OsmAnd/res/values-nl/strings.xml
+++ b/OsmAnd/res/values-nl/strings.xml
@@ -1210,8 +1210,8 @@ Wil je een nieuwe map maken op de toegestane locatie en de OsmAnd-bestanden daar
<string name="home">Dashboard</string>
<string name="live_monitoring_m_descr">Stuur tracking-data naar een webservice als een GPX-track wordt gemaakt.</string>
<string name="live_monitoring_m">Online tracking (GPX vereist)</string>
- <string name="live_monitoring_start">Start online tracking</string>
- <string name="live_monitoring_stop">Stop online tracking</string>
+ <string name="live_monitoring_start">Start online tracken</string>
+ <string name="live_monitoring_stop">Stop online tracken</string>
<string name="gpx_monitoring_start">Start GPX-opname</string>
<string name="gpx_monitoring_stop">Stop GPX-opname</string>
<string name="gpx_start_new_segment">Start nieuw segment</string>
@@ -1467,7 +1467,7 @@ Wil je een nieuwe map maken op de toegestane locatie en de OsmAnd-bestanden daar
<string name="shared_string_audio">Geluid</string>
<string name="shared_string_video">Video</string>
<string name="shared_string_photo">Foto</string>
- <string name="delay_to_start_navigation_descr">Stel in hoe lang het routeplanning-scherm getoond wordt voordat de navigatie start</string>
+ <string name="delay_to_start_navigation_descr">Stel in hoe lang het routeplanning-scherm getoond wordt voordat de navigatie start.</string>
<string name="delay_to_start_navigation">Start navigatie na…</string>
<string name="shared_string_go">Start</string>
<string name="action_create">Actietoets aanmaken</string>
@@ -1889,7 +1889,7 @@ Lengtegraad:\t\t%2$s</string>
<string name="download_files_error_not_enough_space">Niet genoeg opslagruimte!
Tijdelijk is {3} MB nodig en permanent {1} MB extra
Nu is maar {2} MB beschikbaar.</string>
- <string name="download_files_question_space_with_temp">{0} bestanden downloaden\? Tijdelijk is {3} MB nodig en permanent {1} MB. Er is nu {2} MB beschikbaar.</string>
+ <string name="download_files_question_space_with_temp">{0} bestanden downloaden\? Tijdelijk is {3} MB nodig en permanent {1} MB. (Er is nu {2} MB beschikbaar.)</string>
<string name="upload_osm_note_description">Je kunt OSM Opmerkingen anoniem uploaden of je OpenStreetMap.org profiel gebruiken.</string>
<string name="upload_osm_note">Upload OSM-notitie</string>
<string name="map_marker_1st">Eerste Markeervlaggetje</string>
@@ -2324,7 +2324,8 @@ voor Gebied: %1$s x %2$s</string>
\n • Japan &amp; Korea: ***
\n • Midden-Oosten: **
\n • Afrika: **
-\n • Antarctica: * Van bijna alle landen is een kaart te downloaden: van Afghanistan tot Zimbabwe, Australië tot de VS, Nederland, Duitsland, Spanje, Japan, …</string>
+\n • Antarctica: * Van bijna alle landen is een kaart te downloaden: van Afghanistan tot Zimbabwe, Australië tot de VS, Nederland, Duitsland, Spanje, Japan, …
+\n</string>
<string name="save_poi_too_many_uppercase">Naam bevat erg veel hoofdletters, toch doorgaan?</string>
<string name="search_favorites">Zoek Favorieten</string>
<string name="quick_action_showhide_osmbugs_title">OSM-opmerkingen tonen/verbergen</string>
diff --git a/OsmAnd/res/values-oc/phrases.xml b/OsmAnd/res/values-oc/phrases.xml
index 2bc5e1b2ba..92139141e5 100644
--- a/OsmAnd/res/values-oc/phrases.xml
+++ b/OsmAnd/res/values-oc/phrases.xml
@@ -930,4 +930,135 @@
<string name="poi_access_hgv">Accès per veïculs pesants</string>
<string name="poi_access_goods">Accès per veïculs de carga leugiers</string>
<string name="poi_access_disabled">Accès per deficients fisics</string>
+ <string name="poi_buoy_lateral">Bòia laterala</string>
+ <string name="poi_buoy_safe_water">Bòia d’airau segur</string>
+ <string name="poi_buoy_special_purpose">Bòia especiala</string>
+ <string name="poi_daymark">Marca diürna</string>
+ <string name="poi_distance_mark">Indicador de distància</string>
+ <string name="poi_dry_dock">Bacin de carenatge</string>
+ <string name="poi_floating_dock">Pontin flotant</string>
+ <string name="poi_fog_signal">Senhau de nebla</string>
+ <string name="poi_harbour_basin">Bacin portuari</string>
+ <string name="poi_seamark_harbour">Pòrt</string>
+ <string name="poi_landmark">Amira</string>
+ <string name="poi_seamark_light">Fuòc nautic</string>
+ <string name="poi_seamark_light_major">Fuòc nautic màger</string>
+ <string name="poi_seamark_light_minor">Fuòc nautic minor</string>
+ <string name="poi_seamark_light_float">Bòia lumenosa</string>
+ <string name="poi_seamark_light_vessel">Vaissèu far</string>
+ <string name="poi_notice">Senhau nautic</string>
+ <string name="poi_pile">Torreta</string>
+ <string name="poi_radar_transponder">Radar transponedor</string>
+ <string name="poi_radio_station">Emetedor de ràdio, senhau maritim</string>
+ <string name="poi_signal_station_traffic">Semafòr de transit nautic</string>
+ <string name="poi_signal_station_warning">Semafòr d’avertiment nautic</string>
+ <string name="poi_small_craft_facility">Installacions per barquetas</string>
+ <string name="poi_seamark_rock">Escuelh remarcable</string>
+ <string name="poi_seamark_wreck">Avariá</string>
+ <string name="poi_seamark_clearance_height">Autura maximala</string>
+ <string name="poi_seamark_clearance_height_closed">Autura maximala (barrat)</string>
+ <string name="poi_seamark_clearance_height_open">Autura maximala (dobèrt)</string>
+ <string name="poi_seamark_clearance_width">Amplor maximala</string>
+ <string name="poi_military_landuse">Zòna militària</string>
+ <string name="poi_military_airfield">Basa aeriana militària</string>
+ <string name="poi_military_bunker">Casemata</string>
+ <string name="poi_military_barracks">Casèrna</string>
+ <string name="poi_military_danger_area">Airau perilhós (tir)</string>
+ <string name="poi_military_range">Terren militar</string>
+ <string name="poi_military_office">Administracion militara</string>
+ <string name="poi_military_naval_base">Basa navala militara</string>
+ <string name="poi_military_nuclear_explosion_site">Luòc d’explosion nucleara</string>
+ <string name="poi_wiki_place">Viquédia</string>
+ <string name="poi_wiki_lang_en">Wiki en anglés</string>
+ <string name="poi_wiki_lang_ar">Wiki en arab</string>
+ <string name="poi_wiki_lang_be">"Wiki bielorussa"</string>
+ <string name="poi_wiki_lang_ca">Wiki catalana</string>
+ <string name="poi_wiki_lang_fr">Wiki francesa</string>
+ <string name="poi_wiki_lang_oc">Viquí occitana</string>
+ <string name="poi_bollard">Bitassa</string>
+ <string name="poi_cycle_barrier">Barriera per bicicletas</string>
+ <string name="poi_motorcycle_barrier">Barrieras per mòtos</string>
+ <string name="poi_block">Blòc</string>
+ <string name="poi_bus_trap">Passatge per bus, carris</string>
+ <string name="poi_full_height_turnstile">Torniquet aut</string>
+ <string name="poi_bump_gate">Alentidor</string>
+ <string name="poi_general_barrier">Barriera generala</string>
+ <string name="poi_debris">Fracham, escombre</string>
+ <string name="poi_height_restrictor">Limitador d’autor</string>
+ <string name="poi_sally_port">Portalet</string>
+ <string name="poi_swing_gate">Portanèu viradís</string>
+ <string name="poi_turnstile">Torniquet</string>
+ <string name="poi_barrier_entrance">Fracha</string>
+ <string name="poi_entrance_main">Intrada principala</string>
+ <string name="poi_entrance">Intrada</string>
+ <string name="poi_entrance_exit">Sortida</string>
+ <string name="poi_highway_crossing">Passatge pedonier</string>
+ <string name="poi_icn_ref">Nos d’un malhum ciclista internacionau</string>
+ <string name="poi_ncn_ref">Nos d’un malhum ciclista nacionau</string>
+ <string name="poi_rcn_ref">Nos d’un malhum ciclista regionau</string>
+ <string name="poi_lcn_ref">Nos d’un malhum ciclista locau</string>
+ <string name="poi_opening_hours">Orari de dobertura</string>
+ <string name="poi_collection_times">Orari de levada</string>
+ <string name="poi_description">Descripcion</string>
+ <string name="poi_phone">Telefòn</string>
+ <string name="poi_website">Sit oèb</string>
+ <string name="poi_email">Corrier electronic</string>
+ <string name="poi_fax">Facs</string>
+ <string name="facebook">Facebook</string>
+ <string name="twitter">Twitter</string>
+ <string name="poi_youtube">YouTube</string>
+ <string name="poi_instagram">Instagram</string>
+ <string name="poi_service_times">Orari de servici</string>
+ <string name="poi_maxheight">Autor maximala</string>
+ <string name="poi_maxweight">Pes maximau</string>
+ <string name="poi_height">Autor</string>
+ <string name="poi_width">Amplor</string>
+ <string name="poi_ele">Autor subre lo nivèu de mar</string>
+ <string name="poi_abandoned">Abandonat</string>
+ <string name="poi_abandoned_poi">Objèctes perduts</string>
+ <string name="poi_disused">Desafectat</string>
+ <string name="poi_operator">Operador</string>
+ <string name="poi_brand">Marca</string>
+ <string name="poi_fee_yes">Òc</string>
+ <string name="poi_fee_no">Non</string>
+ <string name="poi_drinking_water_yes">Òc</string>
+ <string name="poi_drinking_water_no">Non</string>
+ <string name="poi_supervised_yes">Susvelhat</string>
+ <string name="poi_supervised_no">Non susvelhat</string>
+ <string name="poi_seasonal_yes">Òc</string>
+ <string name="poi_seasonal_no">Non</string>
+ <string name="poi_seasonal_dry_season">Sason seca</string>
+ <string name="poi_seasonal_wet_season">Sason umida</string>
+ <string name="poi_seasonal_spring">Prima</string>
+ <string name="poi_seasonal_summer">Estiu</string>
+ <string name="poi_seasonal_autumn">Auton</string>
+ <string name="poi_seasonal_winter">Ivèrn</string>
+ <string name="poi_crossing_traffic_signals">Amb lumes de circulacion</string>
+ <string name="poi_crossing_uncontrolled">Crosada non regulada</string>
+ <string name="poi_crossing_unmarked">Crosada non marcada</string>
+ <string name="poi_start_date">Data de començament</string>
+ <string name="poi_wheelchair_accessibility">Acessibilitat en cadiera de ròdas</string>
+ <string name="poi_wheelchair_yes">Òc</string>
+ <string name="poi_wheelchair_no">Non</string>
+ <string name="poi_wheelchair_limited">Limitat</string>
+ <string name="poi_wholesale">Venda en gròs</string>
+ <string name="poi_access_private">Accès privat</string>
+ <string name="poi_access_no">Accès interdit</string>
+ <string name="poi_access_destination">Accès reservat ai ribairòus</string>
+ <string name="poi_access_permissive">Accès autorisat</string>
+ <string name="poi_access_customers">Accès per la practica</string>
+ <string name="poi_access_delivery">Accès per liurasons</string>
+ <string name="poi_content_water">Contengut: aiga</string>
+ <string name="poi_content_slurry">Contengut: aiga de femorier</string>
+ <string name="poi_content_oil">Contengut: petròli</string>
+ <string name="poi_content_fuel">Contengut: carburant</string>
+ <string name="poi_content_manure">Contengut: fems</string>
+ <string name="poi_content_wine">Contengut: vin</string>
+ <string name="poi_content_sewage">Contengut: aigas grassas</string>
+ <string name="poi_content_gas">Contengut: gas</string>
+ <string name="poi_content_biomass">Contengut: biomassa</string>
+ <string name="poi_content_crop">Contengut: culhida</string>
+ <string name="poi_content_fodder">Contengut: ferratge</string>
+ <string name="poi_content_beer">Contengut: cervesa</string>
+ <string name="poi_content_salt">Contengut: sau</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml
index 8b972c0d39..2da2499403 100644
--- a/OsmAnd/res/values-pl/strings.xml
+++ b/OsmAnd/res/values-pl/strings.xml
@@ -3258,7 +3258,7 @@ Reprezentuje obszar: %1$s x %2$s</string>
<string name="apply_to_all_profiles">Zastosuj we wszystkich profilach</string>
<string name="units_and_formats">Jednostki i formaty</string>
<string name="appearance">Wygląd</string>
- <string name="map_look_descr">ikony, widżety</string>
+ <string name="map_look_descr">Wygląd mapy</string>
<string name="map_look">Wygląd mapy</string>
<string name="list_of_installed_plugins">Lista zainstalowanych wtyczek</string>
<string name="general_settings_profile_descr">Styl aplikacji, jednostki, region</string>
@@ -3297,4 +3297,45 @@ Reprezentuje obszar: %1$s x %2$s</string>
<string name="plugins_settings">Ustawienia wtyczki</string>
<string name="shared_string_by_default">Domyślnie</string>
<string name="download_detailed_map">Pobierz szczegółową mapę %S, aby zobaczyć ten obszar.</string>
+ <string name="change_data_storage_full_description">Przenieść pliki danych OsmAnd do nowego położenia\?
+\n%1$s &gt; %2$s</string>
+ <string name="data_storage_preference_summary">%1$s • Zajęte %2$s GB</string>
+ <string name="data_storage_space_description">Wolne %1$s GB • Ogółem %2$s GB</string>
+ <string name="enter_path_to_folder">Proszę wprowadzić ścieżkę do katalogu</string>
+ <string name="shared_string_select_folder">Wybierz katalog</string>
+ <string name="paste_Osmand_data_folder_path">Wklej ścieżkę do katalogu z danymi OsmAnd</string>
+ <string name="change_osmand_data_folder_question">Zmienić katalog danych OsmAnd\?</string>
+ <string name="move_maps_to_new_destination">Przenieś do nowego miejsca przeznaczenia</string>
+ <string name="internal_app_storage_description">Wewnętrzna pamięć masowa, ukryta przed użytkownikiem i innymi aplikacjami, dzięki czemu nikt oprócz OsmAnd nie może uzyskać dostępu do Twoich danych</string>
+ <string name="change_data_storage_folder">Zmień katalog przechowywania danych</string>
+ <string name="rendering_attr_piste_type_snow_park_name">Trasa - park śnieżny</string>
+ <string name="rendering_attr_piste_type_sleigh_name">Sanie</string>
+ <string name="rendering_attr_piste_type_sled_name">Sanki</string>
+ <string name="rendering_attr_piste_type_hike_name">Wspinaczka</string>
+ <string name="rendering_attr_piste_type_connection_name">Połączenia</string>
+ <string name="rendering_attr_piste_type_downhill_name">Zjazd</string>
+ <string name="rendering_attr_piste_type_nordic_name">Skandynawski</string>
+ <string name="routeInfo_piste_type_name">Rodzaj trasy</string>
+ <string name="rendering_attr_piste_difficulty_novice_name">Nowicjusz</string>
+ <string name="rendering_attr_piste_difficulty_easy_name">Łatwa</string>
+ <string name="rendering_attr_piste_difficulty_intermediate_name">Średnia</string>
+ <string name="rendering_attr_piste_difficulty_advanced_name">Zaawansowane</string>
+ <string name="rendering_attr_piste_difficulty_expert_name">Ekspert</string>
+ <string name="rendering_attr_piste_difficulty_freeride_name">Bardzo trudna</string>
+ <string name="rendering_attr_piste_difficulty_extreme_name">Ekstremalna</string>
+ <string name="rendering_attr_piste_difficulty_undefined_name">Niezdefiniowana</string>
+ <string name="routeInfo_piste_difficulty_name">Trudność stoku</string>
+ <string name="routing_attr_width_name">Granica szerokości</string>
+ <string name="routing_attr_width_description">Określ dozwoloną szerokość pojazdu na trasach.</string>
+ <string name="avoid_in_routing_descr_">Unikaj określonych tras i typów dróg</string>
+ <string name="app_mode_utv">Strona po stronie</string>
+ <string name="rendering_attr_piste_difficulty_aerialway_name">Lotnisko</string>
+ <string name="rendering_attr_piste_difficulty_connection_name">Połączenia</string>
+ <string name="shared_string_calculate">Oblicz</string>
+ <string name="shared_string_osmand_usage">Użyj OsmAnd</string>
+ <string name="shared_string_maps">Mapy</string>
+ <string name="shared_string_memory_tb_desc">%1$s TB</string>
+ <string name="shared_string_memory_gb_desc">%1$s GB</string>
+ <string name="shared_string_memory_mb_desc">%1$s MB</string>
+ <string name="shared_string_memory_kb_desc">%1$s KB</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-pt-rBR/phrases.xml b/OsmAnd/res/values-pt-rBR/phrases.xml
index df82e4c25e..3c12354352 100644
--- a/OsmAnd/res/values-pt-rBR/phrases.xml
+++ b/OsmAnd/res/values-pt-rBR/phrases.xml
@@ -3725,4 +3725,6 @@
<string name="poi_craft_floorer">Assentador de piso</string>
<string name="poi_craft_bakery">Padaria</string>
<string name="poi_craft_cabinet_maker">Marceneiro</string>
+ <string name="poi_charge">Pagamento</string>
+ <string name="poi_pet_grooming">Cuidado de animais</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml
index 5be1175228..d03ed7a662 100644
--- a/OsmAnd/res/values-pt-rBR/strings.xml
+++ b/OsmAnd/res/values-pt-rBR/strings.xml
@@ -349,7 +349,7 @@
<string name="edit_tilesource_successfully">A fonte da quadrícula %1$s foi salva</string>
<string name="speak_traffic_warnings">Moderadores de tráfego</string>
<string name="context_menu_item_directions_from">Rota a partir daqui</string>
- <string name="app_mode_default">Explorar</string>
+ <string name="app_mode_default">Explorar mapa</string>
<string name="local_indexes_cat_av">Dados de Áudio/Vídeo</string>
<string name="stop_routing_confirm">Confirma que quer parar a navegação?</string>
<string name="int_hour">h</string>
@@ -359,7 +359,7 @@
<string name="shared_string_all">Todos</string>
<string name="shared_string_waypoints">Marcos do trajeto</string>
<string name="download_additional_maps">Baixar mapas que faltam %1$s (%2$d MB)?</string>
- <string name="rendering_value_browse_map_name">Explorar</string>
+ <string name="rendering_value_browse_map_name">Explorar mapa</string>
<string name="rendering_value_car_name">Carro</string>
<string name="rendering_value_bicycle_name">Bicicleta</string>
<string name="rendering_value_pedestrian_name">A pé</string>
@@ -2582,7 +2582,7 @@ Pôr do Sol: %2$s</string>
<string name="osm_notes">Notas OSM</string>
<string name="will_open_tomorrow_at">Abre amanhã às</string>
<string name="rendering_attr_hidePOILabels_name">Rótulos POI</string>
- <string name="day_off_label">desligado</string>
+ <string name="day_off_label">fechado</string>
<string name="winter_and_ski_renderer">Inverno e esqui</string>
<string name="touring_view_renderer">Vista de turismo</string>
<string name="nautical_renderer">Náutico</string>
@@ -2792,8 +2792,8 @@ Pôr do Sol: %2$s</string>
<string name="shared_string_world">Mundo</string>
<string name="thank_you_for_feedback">Obrigado por seus comentários</string>
<string name="poi_cannot_be_found">Nó ou caminho não pode ser encontrado.</string>
- <string name="search_no_results_feedback">Nenhum resultado de pesquisa\?
-\nMande-nos o seu comentário</string>
+ <string name="search_no_results_feedback">Nenhum resultado de pesquisa\?
+\nMande-nos o seu feedback</string>
<string name="commiting_way">Enviando caminho…</string>
<string name="increase_search_radius_to">Aumentar raio de pesquisa para %1$s</string>
<string name="send_search_query">Enviar consulta de pesquisa?</string>
@@ -2828,8 +2828,8 @@ Pôr do Sol: %2$s</string>
<string name="osm_live_payment_monthly_title">Mensal</string>
<string name="osm_live_payment_3_months_title">A cada três meses</string>
<string name="osm_live_payment_annual_title">Anualmente</string>
- <string name="osm_live_payment_month_cost_descr">%1$s ao mês</string>
- <string name="osm_live_payment_month_cost_descr_ex">%1$.2f %2$s ao mês</string>
+ <string name="osm_live_payment_month_cost_descr">%1$s / mês</string>
+ <string name="osm_live_payment_month_cost_descr_ex">%1$.2f %2$s / mês</string>
<string name="osm_live_payment_discount_descr">Menos %1$s.</string>
<string name="osm_live_payment_current_subscription">Assinatura atual</string>
<string name="osm_live_payment_renews_monthly">Renova mensalmente</string>
@@ -3280,7 +3280,7 @@ Pôr do Sol: %2$s</string>
<string name="change_data_storage_full_description">Mover arquivos de dados OsmAnd para o novo destino\?
\n%1$s &gt; %2$s</string>
<string name="data_storage_preference_summary">%1$s • Usado %2$s GB</string>
- <string name="data_storage_space_description">Livre %1$s • %2$s / %3$s GB</string>
+ <string name="data_storage_space_description">Livre %1$s GB • Total %2$s GB</string>
<string name="enter_path_to_folder">Digite o caminho para a pasta</string>
<string name="shared_string_select_folder">Selecionar pasta</string>
<string name="paste_Osmand_data_folder_path">Cole o caminho para a pasta com os dados OsmAnd</string>
@@ -3308,4 +3308,16 @@ Pôr do Sol: %2$s</string>
<string name="routeInfo_piste_difficulty_name">Dificuldade da pista</string>
<string name="routing_attr_width_name">Limite de largura</string>
<string name="routing_attr_width_description">Especifique o limite permitido de largura do veículo nas rotas.</string>
+ <string name="avoid_in_routing_descr_">Evitar certas rotas e tipos de estradas</string>
+ <string name="app_mode_utv">Lado a lado</string>
+ <string name="rendering_attr_piste_difficulty_aerialway_name">Maneira aérea</string>
+ <string name="rendering_attr_piste_difficulty_connection_name">Conexão</string>
+ <string name="shared_string_calculate">Calcular</string>
+ <string name="shared_string_osmand_usage">Uso do Osmand</string>
+ <string name="shared_sting_tiles">Quadrículas</string>
+ <string name="shared_string_maps">Mapas</string>
+ <string name="shared_string_memory_tb_desc">%1$s TB</string>
+ <string name="shared_string_memory_gb_desc">%1$s GB</string>
+ <string name="shared_string_memory_mb_desc">%1$s MB</string>
+ <string name="shared_string_memory_kb_desc">%1$s KB</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-pt/strings.xml b/OsmAnd/res/values-pt/strings.xml
index 1cd9874788..b71156ce94 100644
--- a/OsmAnd/res/values-pt/strings.xml
+++ b/OsmAnd/res/values-pt/strings.xml
@@ -208,7 +208,7 @@
<string name="search_history_int_streets">Interseção : {0} x {1} dans {2}</string>
<string name="search_history_building">Edifício : {0}, {1}, {2}</string>
<string name="favorite">Favorito</string>
- <string name="shared_string_clear_all">Apagar tudo</string>
+ <string name="shared_string_clear_all">Limpar tudo</string>
<string name="shared_string_history">Histórico</string>
<string name="uploading_data">Enviando dados…</string>
<string name="uploading">Enviando…</string>
@@ -1475,7 +1475,7 @@
<string name="m_s">m/s</string>
<string name="shared_string_trip_recording">Gravar viagem</string>
<string name="shared_string_navigation">Navegação</string>
- <string name="nm">mni</string>
+ <string name="nm">mn</string>
<string name="shared_string_update">Atualizar</string>
<string name="please_specify_poi_type_only_from_list">Por favor especifique o tipo de POI correto ou ignore-o.</string>
<string name="access_from_map_description">O botão do menu lança o painel de controlo em vez do menu</string>
@@ -2914,7 +2914,7 @@
<string name="save_poi_value_exceed_length_title">Comprimento do valor de \"%s</string>
<string name="public_transport_warning_descr_blog">Saiba mais sobre como o OsmAnd calcula as rotas no nosso blogue.</string>
<string name="public_transport_warning_title">A navegação em transportes públicos está atualmente em testes beta, podem ocorrer erros e imprecisões.</string>
- <string name="add_intermediate">Adicionar ponto intermédio</string>
+ <string name="add_intermediate">Adicionar ponto intermediário</string>
<string name="transfers_size">%1$d transbordos</string>
<string name="add_start_and_end_points">Adicionar pontos de início e fim</string>
<string name="route_add_start_point">Adicionar ponto de partida</string>
@@ -3291,7 +3291,7 @@
<string name="change_data_storage_full_description">Mover ficheiros de dados OsmAnd para o novo destino\?
\n%1$s &gt; %2$s</string>
<string name="data_storage_preference_summary">%1$s • Usado %2$s GB</string>
- <string name="data_storage_space_description">Livre %1$s • %2$s / %3$s GB</string>
+ <string name="data_storage_space_description">Livre %1$s GB • Total %2$s GB</string>
<string name="enter_path_to_folder">Insira o caminho para a pasta</string>
<string name="shared_string_select_folder">Selecionar pasta</string>
<string name="paste_Osmand_data_folder_path">Colar caminho para a pasta com dados OsmAnd</string>
@@ -3319,4 +3319,15 @@
<string name="routeInfo_piste_difficulty_name">Dificuldade da pista</string>
<string name="routing_attr_width_name">Limite de largura</string>
<string name="routing_attr_width_description">Especifique o limite permitido de largura do veículo nas rotas.</string>
+ <string name="avoid_in_routing_descr_">Evitar determinadas categorias de rotas e estradas</string>
+ <string name="app_mode_utv">Lado a Lado</string>
+ <string name="rendering_attr_piste_difficulty_connection_name">Conexão</string>
+ <string name="shared_string_calculate">Calcular</string>
+ <string name="shared_string_osmand_usage">Uso de OsmAnd</string>
+ <string name="shared_sting_tiles">Azulejos</string>
+ <string name="shared_string_maps">Mapas</string>
+ <string name="shared_string_memory_tb_desc">%1$s TB</string>
+ <string name="shared_string_memory_gb_desc">%1$s GB</string>
+ <string name="shared_string_memory_mb_desc">%1$s MB</string>
+ <string name="shared_string_memory_kb_desc">%1$s KB</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-ru/phrases.xml b/OsmAnd/res/values-ru/phrases.xml
index 88d2be9b8f..4cf22c2798 100644
--- a/OsmAnd/res/values-ru/phrases.xml
+++ b/OsmAnd/res/values-ru/phrases.xml
@@ -603,7 +603,7 @@
<string name="poi_crematorium">Крематорий</string>
<string name="poi_internet_cafe">Интернет-кафе;Интернет-салон;Киберкафе</string>
<string name="poi_bank">Банк</string>
- <string name="poi_amenity_atm">Банкомат</string>
+ <string name="poi_atm">Банкомат</string>
<string name="poi_money_lender">Ростовщик</string>
<string name="poi_pawnbroker">Ломбард</string>
<string name="poi_bureau_de_change">Обмен валют</string>
@@ -2426,7 +2426,7 @@
<string name="poi_inscription_e">Надпись:З</string>
<string name="poi_inscription_ne">Надпись:СЗ</string>
<string name="poi_construction_yes">В процессе строительства</string>
- <string name="poi_additional_atm_yes">С банкоматом</string>
+ <string name="poi_atm_yes">С банкоматом;Банкомат</string>
<string name="poi_atm_no">Без банкомата</string>
<string name="poi_firepit">Место для разведения огня</string>
<string name="poi_street_cabinet">Распределительный шкаф</string>
@@ -3487,5 +3487,6 @@
<string name="poi_craft_bakery">Пекарня</string>
<string name="poi_craft_cabinet_maker">Краснодеревщик</string>
+ <string name="poi_charge">Сумма оплаты</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml
index 03258f785c..a63403b799 100644
--- a/OsmAnd/res/values-ru/strings.xml
+++ b/OsmAnd/res/values-ru/strings.xml
@@ -3059,11 +3059,11 @@
<string name="move_maps">Переместить карты</string>
<string name="dont_move_maps">Не перемещать</string>
<string name="public_transport_ped_route_title">Маршрут пешком составляет примерно %1$s и он может быть быстрее, чем на общественном транспорте</string>
- <string name="shared_string_privacy_policy">Политика конфиденциальности</string>
+ <string name="shared_string_privacy_policy">политикой конфиденциальности</string>
<string name="help_us_make_osmand_better">Помогите нам сделать OsmAnd лучше!</string>
- <string name="make_osmand_better_descr">Разрешить OsmAnd собирать и обрабатывать анонимные данные об использовании приложения. Мы не собираем и не храним данные о вашем местоположении или о местоположениях, которые вы просматриваете на карте.
-\n
-\nВы всегда можете изменить свой выбор в Настройки &gt; Конфиденциальность и безопасность.</string>
+ <string name="make_osmand_better_descr">"Разрешите OsmAnd собирать и обрабатывать анонимные данные об использовании приложения. Мы не собираем и не храним данные о вашем местоположении или о любых местах, которые вы просматриваете на карте.
+\n
+\nВы можете изменить свой выбор в любое время в Настройки &gt; Конфиденциальность и безопасность."</string>
<string name="choose_data_to_share">Выберите тип данных, которыми вы хотите поделиться:</string>
<string name="downloaded_maps">Загруженные карты</string>
<string name="visited_screens">Посещаемые экраны</string>
@@ -3071,7 +3071,7 @@
<string name="collected_data_descr">Список данных, которыми вы хотите поделиться с OsmAnd.</string>
<string name="downloaded_maps_collect_descr">Мы собираем эти данные, чтобы понять, какие регионы и страны наиболее популярны.</string>
<string name="visited_screens_collect_descr">Мы собираем эти данные, чтобы понять какие функции OsmAnd наиболее популярны.</string>
- <string name="privacy_and_security_change_descr">Нажимая кнопку \"Разрешить\", вы соглашаетесь с нашими %1$s</string>
+ <string name="privacy_and_security_change_descr">Нажимая кнопку \"Разрешить\", вы соглашаетесь с нашей %1$s</string>
<string name="settings_privacy_and_security">Конфиденциальность и безопасность</string>
<string name="shared_string_no_thank_you">Нет, спасибо</string>
<string name="shared_string_allow">Разрешить</string>
@@ -3224,7 +3224,7 @@
<string name="application_profile_changed">Профиль изменён на\"%s\"</string>
<string name="configure_profile_info">Все приведенные ниже настройки относятся только к выбранному профилю.</string>
<string name="units_and_formats">Единицы измерения и форматы</string>
- <string name="map_look_descr">иконки, виджеты</string>
+ <string name="map_look_descr">Внешний вид карты</string>
<string name="list_of_installed_plugins">Список установленных плагинов</string>
<string name="general_settings_profile_descr">Тема приложения, единицы измерения, регион</string>
<string name="manage_profiles_descr">Создание, импорт и редактирование профилей</string>
@@ -3239,7 +3239,7 @@
<string name="appearance">Внешний вид</string>
<string name="configure_navigation">Настроить навигацию</string>
<string name="screen_alerts_descr">Оповещения будут отображаться в левом нижнем углу экрана во время навигации.</string>
- <string name="osmand_settings_descr">Влияет на всё приложение</string>
+ <string name="osmand_settings_descr">Влияют на всё приложение</string>
<string name="osmand_settings">Настройки OsmAnd</string>
<string name="copy_from_other_profile">Копировать из другого профиля</string>
<string name="turn_screen_on">Включить экран</string>
@@ -3258,4 +3258,15 @@
<string name="language_and_output">Язык и вывод</string>
<string name="change_data_storage_full_description">Переместите файлы данных OsmAnd в новое место назначения\?
\n%1$s &gt; %2$s</string>
+ <string name="shared_string_by_default">По умолчанию</string>
+ <string name="data_storage_preference_summary">%1$s • Использовано %2$s ГБ</string>
+ <string name="data_storage_space_description">"Свободно %1$s • %2$s / %3$s ГБ"</string>
+ <string name="enter_path_to_folder">Введите путь к папке</string>
+ <string name="shared_string_select_folder">Выберите папку</string>
+ <string name="paste_Osmand_data_folder_path">Вставить путь к папке с данными OsmAnd</string>
+ <string name="change_osmand_data_folder_question">Изменить папку данных OsmAnd\?</string>
+ <string name="move_maps_to_new_destination">Переместить в новое место назначения</string>
+ <string name="internal_app_storage_description">Внутреннее хранилище, скрытое от пользователя и других приложений, поэтому никто, кроме OsmAnd не может получить доступ к вашим данным</string>
+ <string name="change_data_storage_folder">Изменение папку хранения данных</string>
+ <string name="avoid_in_routing_descr_">Избегать определенные маршруты и типы дорог</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-sc/phrases.xml b/OsmAnd/res/values-sc/phrases.xml
index 51da4ffb0e..ce5a635396 100644
--- a/OsmAnd/res/values-sc/phrases.xml
+++ b/OsmAnd/res/values-sc/phrases.xml
@@ -3723,4 +3723,5 @@
<string name="poi_craft_floorer">Pamentadore</string>
<string name="poi_craft_bakery">Furru de su pane</string>
<string name="poi_craft_cabinet_maker">Ebanista</string>
+ <string name="poi_charge">Tarifa</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml
index 0ea6f0902e..87e2cc69a6 100644
--- a/OsmAnd/res/values-sc/strings.xml
+++ b/OsmAnd/res/values-sc/strings.xml
@@ -3329,4 +3329,5 @@ Pro praghere iscrie su còdighe intreu</string>
<string name="routeInfo_piste_difficulty_name">Dificultade de sa pista</string>
<string name="routing_attr_width_name">Lìmite de largària</string>
<string name="routing_attr_width_description">Dislinda su lìmite de largària permìtidu in sas àndalas.</string>
+ <string name="avoid_in_routing_descr_">Istransi castas isseberadas de àndalas e caminos</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml
index fe43c0a4c4..2a3d68e2af 100644
--- a/OsmAnd/res/values-sk/strings.xml
+++ b/OsmAnd/res/values-sk/strings.xml
@@ -1076,7 +1076,7 @@ Proporčná pamäť %4$s MB (Limit Androidu %5$s MB, Dalvik %6$s MB).</string>
<string name="routing_attr_avoid_motorway_name">Vyhnúť sa diaľniciam</string>
<string name="routing_attr_avoid_motorway_description">Vyhnúť sa diaľniciam</string>
<string name="routing_attr_weight_name">Hmotnostný limit</string>
- <string name="routing_attr_weight_description">Zadajte povolenú hmotnosť vozidla na cestách.</string>
+ <string name="routing_attr_weight_description">Zadajte hmotnosť vozidla, ktorá musí byť povolená na cestách.</string>
<string name="select_gpx">Vybrať GPX…</string>
<string name="route_descr_select_destination">Vybrať cieľ</string>
<string name="route_preferences">Predvoľby trasy</string>
@@ -3278,4 +3278,36 @@ Zodpovedá oblasti: %1$s x %2$s</string>
<string name="plugins_settings">Nastavenia modulu</string>
<string name="shared_string_by_default">Predvolene</string>
<string name="download_detailed_map">Pre zobrazenie tejto oblasti si stiahnite podrobnú mapu %s.</string>
+ <string name="change_data_storage_full_description">Presunúť dátové súbory OsmAnd do nového umiestnenia\?
+\n%1$s &gt; %2$s</string>
+ <string name="data_storage_preference_summary">%1$s • Použité %2$s GB</string>
+ <string name="data_storage_space_description">Voľné %1$s • %2$s / %3$s GB</string>
+ <string name="enter_path_to_folder">Zadajte cestu k priečinku</string>
+ <string name="shared_string_select_folder">Zvoľte priečinok</string>
+ <string name="paste_Osmand_data_folder_path">Vložte cestu k priečinku s dátami OsmAnd</string>
+ <string name="change_osmand_data_folder_question">Zmeniť dátový priečinok OsmAnd\?</string>
+ <string name="move_maps_to_new_destination">Presunúť do nového umiestnenia</string>
+ <string name="internal_app_storage_description">Interné úložisko, skryté pred používateľom a inými aplikáciami, kde k dátam môže pristupovať len OsmAnd</string>
+ <string name="change_data_storage_folder">Zmeniť priečinok na ukladanie dát</string>
+ <string name="rendering_attr_piste_type_snow_park_name">Areál zimných športov</string>
+ <string name="rendering_attr_piste_type_sleigh_name">Sane v záprahu</string>
+ <string name="rendering_attr_piste_type_sled_name">Sánkovanie</string>
+ <string name="rendering_attr_piste_type_hike_name">Putovanie</string>
+ <string name="rendering_attr_piste_type_connection_name">Spojnica</string>
+ <string name="rendering_attr_piste_type_skitour_name">Lyžiarsky okruh</string>
+ <string name="rendering_attr_piste_type_downhill_name">Zjazd</string>
+ <string name="rendering_attr_piste_type_nordic_name">Beh na lyžiach</string>
+ <string name="routeInfo_piste_type_name">Typ zjazdovky</string>
+ <string name="rendering_attr_piste_difficulty_novice_name">Pre začiatočníkov</string>
+ <string name="rendering_attr_piste_difficulty_easy_name">Ľahká</string>
+ <string name="rendering_attr_piste_difficulty_intermediate_name">Stredná</string>
+ <string name="rendering_attr_piste_difficulty_advanced_name">Pokročilí</string>
+ <string name="rendering_attr_piste_difficulty_expert_name">Pre expertov</string>
+ <string name="rendering_attr_piste_difficulty_freeride_name">Voľný zjazd</string>
+ <string name="rendering_attr_piste_difficulty_extreme_name">Extrémna</string>
+ <string name="rendering_attr_piste_difficulty_undefined_name">Neurčená</string>
+ <string name="routeInfo_piste_difficulty_name">Obtiažnosť zjazdovky</string>
+ <string name="routing_attr_width_name">Limit šírky</string>
+ <string name="routing_attr_width_description">Zadajte šírku vozidla, ktorá musí byť povolená na cestách.</string>
+ <string name="avoid_in_routing_descr_">Vyhnúť sa niektorým trasám a typom ciest</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-sv/strings.xml b/OsmAnd/res/values-sv/strings.xml
index 56ee8aed01..1de54fdb54 100644
--- a/OsmAnd/res/values-sv/strings.xml
+++ b/OsmAnd/res/values-sv/strings.xml
@@ -2929,4 +2929,5 @@ Vänligen tillhandahåll fullständig kod</string>
<string name="application_profile_changed">Programprofil ändrat till \"%s\"</string>
<string name="logcat_buffer">Logcat-buffert</string>
<string name="plugins_settings">Tilläggsinställningar</string>
+ <string name="app_mode_utv">Sida vid sida</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-tr/phrases.xml b/OsmAnd/res/values-tr/phrases.xml
index a08e84df34..9d2d8d145f 100644
--- a/OsmAnd/res/values-tr/phrases.xml
+++ b/OsmAnd/res/values-tr/phrases.xml
@@ -193,7 +193,7 @@
<string name="poi_service_tyres">Lastikler</string>
<string name="poi_vehicle_inspection">Araç muayene</string>
<string name="poi_car_wash">Oto yıkama</string>
- <string name="poi_fuel">Benzin istasyonu; Gaz istasyonu, Dolum istastonu; Petrol istasyonu</string>
+ <string name="poi_fuel">Gaz istasyonu;Benzin istasyonu;Dolum istasyonu;Petrol istasyonu</string>
<string name="poi_fuel_diesel">Dizel</string>
<string name="poi_fuel_gtl_diesel">GTL dizel</string>
<string name="poi_fuel_hgv_diesel">TIR dizel</string>
@@ -1296,4 +1296,447 @@
<string name="poi_wiki_lang_mn">Moğolca wiki</string>
<string name="poi_wiki_lang_nap">Napolitence wiki</string>
<string name="reddit">Reddit</string>
+ <string name="poi_service_times">Servis zamanları</string>
+ <string name="poi_maxheight">Maksimum yükseklik</string>
+ <string name="poi_brand">Marka</string>
+ <string name="poi_drinking_water_no">Hayır</string>
+ <string name="poi_seasonal_yes">Evet</string>
+ <string name="poi_seasonal_no">Hayır</string>
+ <string name="poi_seasonal_dry_season">Kuru mevsim</string>
+ <string name="poi_seasonal_wet_season">Yağışlı mevsim</string>
+ <string name="poi_seasonal_spring">İlkbahar</string>
+ <string name="poi_start_date">Başlangıç tarihi</string>
+ <string name="poi_access_permissive">İzin verilen erişim</string>
+ <string name="poi_access_customers">Müşteri erişimi</string>
+ <string name="poi_access_delivery">Teslimat erişimi</string>
+ <string name="poi_access_agricultural">Tarımsal erişim</string>
+ <string name="poi_content_silage">İçerik: silaj</string>
+ <string name="poi_content_water">İçerik: su</string>
+ <string name="poi_content_slurry">İçerik: bulamaç</string>
+ <string name="poi_content_fuel">İçerik: yakıt</string>
+ <string name="poi_content_manure">İçerik: gübre</string>
+ <string name="poi_content_wine">İçerik: şarap</string>
+ <string name="poi_content_sewage">İçerik: kanalizasyon</string>
+ <string name="poi_content_gas">İçerik: gaz</string>
+ <string name="poi_content_biomass">İçerik: biyokütle</string>
+ <string name="poi_content_wastewater">İçerik: atık su</string>
+ <string name="poi_content_crop">İçerik: mahsul</string>
+ <string name="poi_content_fodder">İçerik: yem</string>
+ <string name="poi_content_beer">İçerik: bira</string>
+ <string name="poi_content_salt">İçerik: tuz</string>
+ <string name="poi_content_grain">İçerik: tahıl</string>
+ <string name="poi_wholesale">Toptan</string>
+ <string name="poi_nudism_yes">İzin veriliyor</string>
+ <string name="poi_nudism_no">Yasak</string>
+ <string name="poi_nudism_obligatory">Zorunlu</string>
+ <string name="poi_nudism_customary">Alışılmış</string>
+ <string name="poi_nudism_permissive">Serbest</string>
+ <string name="poi_height">Yükseklik</string>
+ <string name="poi_ele">Deniz seviyesinden yükseklik</string>
+ <string name="poi_wheelchair_no">Hayır</string>
+ <string name="poi_wheelchair_limited">Sınırlı</string>
+ <string name="poi_width">Genişlik</string>
+ <string name="poi_wheelchair_accessibility">Tekerlekli sandalye erişilebilirliği</string>
+ <string name="poi_wheelchair_yes">Evet</string>
+ <string name="poi_trade_building_supplies">Inşaat malzemeleri</string>
+ <string name="poi_trade_plumbing">Tesisat malzemeleri</string>
+ <string name="poi_trade_wood">Ahşap malzemeleri</string>
+ <string name="poi_trade_agricultural_supplies">Ziraat malzemeleri</string>
+ <string name="poi_trade_tile">Döşeme malzemeleri</string>
+ <string name="poi_population">Nüfus</string>
+ <string name="poi_parking_underground">Yeraltı</string>
+ <string name="poi_parking_multi_storey">Çok katlı</string>
+ <string name="poi_bicycle_parking_stands">Standlar</string>
+ <string name="poi_bicycle_parking_wall_loops">Duvar döngüleri</string>
+ <string name="poi_bicycle_parking_rack">Raf</string>
+ <string name="poi_bicycle_parking_building">Özel bina</string>
+ <string name="poi_bicycle_parking_bollard">Baba</string>
+ <string name="poi_bicycle_parking_informal">Gayri resmi</string>
+ <string name="poi_leaf_type_broadleaved">Geniş yapraklı</string>
+ <string name="poi_leaf_type_needleleaved">İğne yapraklı</string>
+ <string name="poi_leaf_type_mixed">Karışık</string>
+ <string name="poi_leaf_type_leafless">Yapraksız</string>
+ <string name="poi_trees_olive">Zeytin</string>
+ <string name="poi_trees_apple">Elma</string>
+ <string name="poi_trees_oil">Palmiye yağı</string>
+ <string name="poi_trees_orange">Portakal</string>
+ <string name="poi_trees_almond">Badem</string>
+ <string name="poi_trees_banana">Muz</string>
+ <string name="poi_trees_hazel">Fındık</string>
+ <string name="poi_trees_coconut">Hindistan cevizi</string>
+ <string name="poi_trees_persimmon">Trabzon hurması</string>
+ <string name="poi_trees_cherry">Kiraz</string>
+ <string name="poi_trees_walnut">Ceviz</string>
+ <string name="poi_trees_plum">Erik</string>
+ <string name="poi_trees_peach">Şeftali</string>
+ <string name="poi_trees_tea">Çay</string>
+ <string name="poi_trees_coca">Koka</string>
+ <string name="poi_trees_kiwi">Kivi</string>
+ <string name="poi_trees_meadow_orchard">Ağaçlı çayır</string>
+ <string name="poi_trees_nectorine">Nektarin</string>
+ <string name="poi_trees_mango">Mango</string>
+ <string name="poi_trees_rubber">Kauçuk</string>
+ <string name="poi_trees_date">Hurma</string>
+ <string name="poi_trees_coffea">Kahve</string>
+ <string name="poi_trees_pomegranate">Nar</string>
+ <string name="poi_urban">Kentsel</string>
+ <string name="poi_rural">Kırsal</string>
+ <string name="poi_seats">Koltuk</string>
+ <string name="poi_backrest_yes">Arkalık: evet</string>
+ <string name="poi_backrest_no">Arkalık: hayır</string>
+ <string name="poi_intermittent">Aralıklı</string>
+ <string name="poi_generator_source_coal">Enerji kaynağı: kömür</string>
+ <string name="poi_generator_source_gas">Enerji kaynağı: gaz</string>
+ <string name="poi_generator_source_nuclear">Enerji kaynağı: nükleer</string>
+ <string name="poi_generator_source_solar">Enerji kaynağı: güneş</string>
+ <string name="poi_generator_source_hydro">Enerji kaynağı: hidro</string>
+ <string name="poi_generator_source_wind">Enerji kaynağı: rüzgar</string>
+ <string name="poi_generator_source_geothermal">Enerji kaynağı: jeotermal</string>
+ <string name="poi_generator_source_oil">Enerji kaynağı: petrol</string>
+ <string name="poi_generator_source_diesel">Enerji kaynağı: dizel</string>
+ <string name="poi_int_name">Uluslararası isim</string>
+ <string name="poi_nat_name">Ulusal isim</string>
+ <string name="poi_reg_name">Bölgesel isim</string>
+ <string name="poi_loc_name">Yerel isim</string>
+ <string name="poi_old_name">Eski isim</string>
+ <string name="poi_alt_name">Alternatif isim</string>
+ <string name="poi_pump_manual">Manuel</string>
+ <string name="poi_pump_powered">Enerjili</string>
+ <string name="poi_pump_no">Pompa yok</string>
+ <string name="poi_water_characteristic_mineral">Mineral</string>
+ <string name="poi_water_characteristic_mud">Su karakteristiği: çamur</string>
+ <string name="poi_water_characteristic_sulfuric">Sülfürik</string>
+ <string name="poi_water_point">Su noktası</string>
+ <string name="poi_species">Türler</string>
+ <string name="poi_genus">Cins</string>
+ <string name="poi_taxon">Sınıf</string>
+ <string name="poi_information_guidepost">İşaret direği</string>
+ <string name="poi_information_board">Tahta</string>
+ <string name="poi_information_map">Harita</string>
+ <string name="poi_information_office">Ofis</string>
+ <string name="poi_information_trail_blaze">Yol işaretçisi</string>
+ <string name="poi_information_terminal">Terminal</string>
+ <string name="poi_information_route_marker">Rota işaretleyici</string>
+ <string name="poi_information_hikingmap">Yürüyüş haritası</string>
+ <string name="poi_information_nature">Doğa</string>
+ <string name="poi_information_history">Geçmiş</string>
+ <string name="poi_information_audioguide">Sesli rehber</string>
+ <string name="poi_information_bicyclemap">Bisiklet haritası</string>
+ <string name="poi_information_tactile_model">Dokunsal model</string>
+ <string name="poi_information_tactile_map">Dokunsal harita</string>
+ <string name="poi_board_type_notice">İlan panosu</string>
+ <string name="poi_board_type_plants">Bitkiler</string>
+ <string name="poi_board_type_geology">Jeoloji</string>
+ <string name="poi_board_type_public_transport">Toplu taşıma</string>
+ <string name="poi_board_type_technology">Teknoloji</string>
+ <string name="poi_board_type_astronomy">Astronomi</string>
+ <string name="poi_fireplace_yes">Evet</string>
+ <string name="poi_fireplace_no">Şömine yok</string>
+ <string name="poi_covered_yes">Evet</string>
+ <string name="poi_covered_no">Kapalı değil</string>
+ <string name="poi_smoking_no">İzin verilmemekte</string>
+ <string name="poi_smoking_outside">Sadece dışarıda</string>
+ <string name="poi_smoking_yes">İzin veriliyor</string>
+ <string name="poi_smoking_separated">Ayrı bir odada</string>
+ <string name="poi_smoking_isolated">İzole edilmiş bir odada</string>
+ <string name="poi_smoking_dedicated">Sigara içenler için ayrılmış</string>
+ <string name="poi_toll_yes">Ücretli</string>
+ <string name="poi_toll_no">Ücret yok</string>
+ <string name="poi_tactile_paving_yes">Evet</string>
+ <string name="poi_tactile_paving_no">Dokunsal kaldırım olmadan</string>
+ <string name="poi_traffic_signals_sound_yes">Evet</string>
+ <string name="poi_traffic_signals_sound_no">Hayır</string>
+ <string name="poi_traffic_signals_sound_walk">Sadece yürümeye izin verildiğinde</string>
+ <string name="poi_toll_hgv_yes">Ağır vasıta geçiş ücreti</string>
+ <string name="poi_rescue_station">Kurtarma istasyonu</string>
+ <string name="poi_bicycle_parking_anchors">Çapalar</string>
+ <string name="poi_services">Servis alanı</string>
+ <string name="poi_mini_roundabout">Mini döner kavşak</string>
+ <string name="poi_railway_crossing">Demiryolu geçidi</string>
+ <string name="poi_railway_level_crossing">Hemzemin geçit</string>
+ <string name="poi_bird_hide">Kuşları gözlemlemek için yer</string>
+ <string name="poi_horse_riding">At binme</string>
+ <string name="poi_leisure_common">Ortak eğlence alanı</string>
+ <string name="poi_garden">Bahçe</string>
+ <string name="poi_heath">Fundalık</string>
+ <string name="poi_grass">Çimen</string>
+ <string name="poi_grassland">Çayır</string>
+ <string name="poi_scrub">Maki</string>
+ <string name="poi_farmland">Tarım arazisi</string>
+ <string name="poi_sand">Kum</string>
+ <string name="poi_dead_wood">Ölü odun</string>
+ <string name="poi_passing_place">Geçiş yeri</string>
+ <string name="poi_level">Seviye</string>
+ <string name="poi_rtsa_scale">RTSA ölçeği</string>
+ <string name="poi_piste_difficulty_easy">Kolay</string>
+ <string name="poi_piste_difficulty_intermediate">Orta düzey</string>
+ <string name="poi_piste_difficulty_advanced">İleri</string>
+ <string name="poi_piste_difficulty_novice">Acemi</string>
+ <string name="poi_piste_difficulty_expert">Uzman</string>
+ <string name="poi_piste_difficulty_freeride">Serbest sürüş</string>
+ <string name="poi_piste_grooming_classic">Klasik</string>
+ <string name="poi_piste_grooming_classic_skating">Klasik+paten</string>
+ <string name="poi_piste_grooming_scooter">Scooter</string>
+ <string name="poi_piste_grooming_skating">Paten</string>
+ <string name="poi_piste_grooming_no">Hayır</string>
+ <string name="poi_piste_grooming_mogul">Tümsek</string>
+ <string name="poi_garden_type_residential">Bahçe tipi: konut</string>
+ <string name="poi_garden_type_community">Bahçe tipi: topluluk</string>
+ <string name="poi_garden_type_private">Bahçe tipi: özel</string>
+ <string name="poi_garden_type_botanical">Bahçe tipi: botanik</string>
+ <string name="poi_garden_style_kitchen">Bahçe tarzı: mutfak</string>
+ <string name="poi_garden_style_rosarium">Bahçe tarzı: gül bahçesi</string>
+ <string name="poi_garden_style_french">Bahçe tarzı: Fransız</string>
+ <string name="poi_garden_style_english">Bahçe tarzı: İngiliz</string>
+ <string name="poi_garden_style_japanese">Bahçe tarzı: Japon</string>
+ <string name="poi_capacity">Kapasite</string>
+ <string name="poi_capacity_disabled_yes">Evet</string>
+ <string name="poi_capacity_disabled_no">Engelliler için ayrılmış yer yok</string>
+ <string name="poi_capacity_disabled">Engelliler için ayrılmış yerler</string>
+ <string name="poi_capacity_women_yes">Kadınlar için ayrılmış yerler</string>
+ <string name="poi_capacity_women_no">Kadınlar için ayrılmış yer yok</string>
+ <string name="poi_capacity_women">Kadınlar için ayrılmış yerler</string>
+ <string name="poi_capacity_pupils">Öğrenciler için ayrılmış yerler</string>
+ <string name="poi_capacity_teachers">Öğretmenler için ayrılmış yerler</string>
+ <string name="poi_capacity_parent_yes">Ebeveynler için ayrılmış yerler</string>
+ <string name="poi_capacity_parent_no">Ebeveynler için ayrılmış yer yok</string>
+ <string name="poi_capacity_parent">Ebeveynler için ayrılmış yerler</string>
+ <string name="poi_aerialway_occupancy">Kabin/sandalye/araç kapasitesi</string>
+ <string name="poi_aerialway_capacity">Saat başına kapasite</string>
+ <string name="poi_aerialway_duration">Ortalama seyahat süresi, dakika</string>
+ <string name="poi_animal_shelter">Hayvan barınağı</string>
+ <string name="poi_pump_yes">Evet</string>
+ <string name="poi_animal_shelter_wildlife">Yaban hayatı</string>
+ <string name="poi_animal_shelter_horse">At</string>
+ <string name="poi_animal_shelter_mammal">Memeliler</string>
+ <string name="poi_animal_shelter_fish">Balıklar</string>
+ <string name="poi_source_biomass">Enerji kaynağı: biyokütle</string>
+ <string name="poi_content_oil">İçerik: petrol</string>
+ <string name="poi_bicycle_parking_shed">Baraka</string>
+ <string name="poi_information_sign">Tabela</string>
+ <string name="poi_logging">Kerestecilik</string>
+ <string name="poi_piste_grooming_backcountry">Taşra</string>
+ <string name="poi_aerialway_heating_yes">Evet</string>
+ <string name="poi_aerialway_heating_no">Isıtma yok</string>
+ <string name="poi_aerialway_bicycle_yes">İzin veriliyor</string>
+ <string name="poi_aerialway_bicycle_no">Bisiklet: izin verilmiyor</string>
+ <string name="poi_aerialway_bicycle_summer">Sadece yaz aylarında izin veriliyor</string>
+ <string name="poi_aerialway_access_entry">Sadece giriş</string>
+ <string name="poi_aerialway_access_exit">Sadece çıkış</string>
+ <string name="poi_aerialway_access_both">Giriş ve çıkış</string>
+ <string name="poi_aerialway_summer_access_entry">Yaz aylarında erişim: sadece giriş</string>
+ <string name="poi_aerialway_summer_access_exit">Yaz aylarında erişim: sadece çıkış</string>
+ <string name="poi_aerialway_summer_access_both">Yaz aylarında erişim: giriş ve çıkış</string>
+ <string name="poi_stars_1">1 (Turist)</string>
+ <string name="poi_stars_1s">1S (Üstün Turist)</string>
+ <string name="poi_stars_2">2 (Standart)</string>
+ <string name="poi_stars_2s">2S (Üstün Standart)</string>
+ <string name="poi_stars_3">3 (Konfor)</string>
+ <string name="poi_stars_3s">3S (Üstün Konfor)</string>
+ <string name="poi_stars_4">4 (Birinci Sınıf)</string>
+ <string name="poi_stars_4s">4S (Üstün Birinci Sınıf)</string>
+ <string name="poi_stars_5">5 (Lüks)</string>
+ <string name="poi_stars_5s">5S (Üstün Lüks)</string>
+ <string name="poi_rooms">Odalar</string>
+ <string name="poi_love_hotel">Aşk oteli</string>
+ <string name="poi_payment_coins_yes">Madeni para</string>
+ <string name="poi_payment_coins_no">Madeni para kabul edilmiyor</string>
+ <string name="poi_payment_coins_50c12">50 sent, 1€, ve 2€ madeni paralar</string>
+ <string name="poi_payment_telephone_cards_yes">Telefon kartları</string>
+ <string name="poi_payment_telephone_cards_no">Telefon kartları kabul edilmiyor</string>
+ <string name="poi_payment_credit_cards_yes">Kredi kartları</string>
+ <string name="poi_payment_credit_cards_no">Kredi kartları kabul edilmiyor</string>
+ <string name="poi_payment_notes_yes">Banknot</string>
+ <string name="poi_payment_notes_no">Banknot kabul edilmiyor</string>
+ <string name="poi_payment_electronic_purses_yes">Elektronik cüzdanlar</string>
+ <string name="poi_payment_electronic_purses_no">Elektronik cüzdanlar kabul edilmiyor</string>
+ <string name="poi_payment_cash_yes">Nakit</string>
+ <string name="poi_payment_cash_no">Nakit kabul edilmiyor</string>
+ <string name="poi_payment_debit_cards_yes">Banka kartları</string>
+ <string name="poi_payment_debit_cards_no">Banka kartları kabul edilmiyor</string>
+ <string name="poi_payment_bitcoin_yes">Bitcoin</string>
+ <string name="poi_payment_bitcoin_no">Bitcoin kabul edilmiyor</string>
+ <string name="poi_payment_visa_yes">Visa</string>
+ <string name="poi_payment_visa_no">Visa kartları kabul edilmiyor</string>
+ <string name="poi_payment_mastercard_yes">MasterCard</string>
+ <string name="poi_payment_mastercard_no">MasterCard kabul edilmiyor</string>
+ <string name="poi_payment_account_cards_yes">Hesap kartları</string>
+ <string name="poi_payment_account_cards_no">Hesap kartları kabul edilmiyor</string>
+ <string name="poi_payment_maestro_yes">Maestro kartları</string>
+ <string name="poi_payment_maestro_no">Maestro kartları kabul edilmiyor</string>
+ <string name="poi_payment_american_express_yes">American Express (AMEX)</string>
+ <string name="poi_payment_american_express_no">American Express (AMEX) kartları kabul edilmiyor</string>
+ <string name="poi_payment_diners_club_yes">Diners Club</string>
+ <string name="poi_payment_diners_club_no">Diners Club kartları kabul edilmiyor</string>
+ <string name="poi_payment_dkv_yes">DKV</string>
+ <string name="poi_payment_dkv_no">DKV kabul edilmiyor</string>
+ <string name="poi_payment_uta_yes">UTA</string>
+ <string name="poi_payment_uta_no">UTA kartları kabul edilmiyor</string>
+ <string name="poi_payment_efectivo_yes">Efectivo</string>
+ <string name="poi_payment_efectivo_no">Efectivo kabul edilmiyor</string>
+ <string name="poi_payment_girocard_yes">Girocard</string>
+ <string name="poi_payment_girocard_no">Girocard kabul edilmiyor</string>
+ <string name="poi_payment_discover_card_yes">Discover Card</string>
+ <string name="poi_payment_discover_card_no">Discover Card kabul edilmiyor</string>
+ <string name="poi_payment_visa_electron_yes">Visa Electron</string>
+ <string name="poi_payment_visa_electron_no">Visa Electron kartları kabul edilmiyor</string>
+ <string name="poi_payment_litecoin_yes">Litecoin</string>
+ <string name="poi_payment_litecoin_no">Litecoin kabul edilmiyor</string>
+ <string name="poi_payment_cheque_yes">Çek</string>
+ <string name="poi_payment_cheque_no">Çek kabul edilmiyor</string>
+ <string name="poi_payment_pikepass_yes">PIKEPASS</string>
+ <string name="poi_payment_pikepass_no">PIKEPASS kabul edilmiyor</string>
+ <string name="poi_payment_pikepass_designated">PIKEPASS (belirlenmiş)</string>
+ <string name="poi_payment_visa_debit_yes">Visa Banka kartları</string>
+ <string name="poi_payment_visa_debit_no">Visa Banka kartları kabul edilmiyor</string>
+ <string name="poi_payment_cryptocurrencies_no">Kripto paralar kabul edilmiyor</string>
+ <string name="poi_payment_others_yes">Diğerleri</string>
+ <string name="poi_payment_others_no">Diğer ödeme yöntemleri kabul edilmiyor</string>
+ <string name="poi_payment_routex_yes">Routex</string>
+ <string name="poi_payment_routex_no">Routex yakıt kartları kabul edilmiyor</string>
+ <string name="poi_payment_bancomat_yes">Bancomat</string>
+ <string name="poi_payment_bancomat_no">Bancomat kabul edilmiyor</string>
+ <string name="poi_payment_icsf_yes">IC Stored Fare</string>
+ <string name="poi_payment_icsf_no">IC Stored Fare kartları kabul edilmiyor</string>
+ <string name="poi_payment_prepaid_ticket_yes">Ön ödemeli biletler</string>
+ <string name="poi_payment_jcb_yes">JCB</string>
+ <string name="poi_payment_jcb_no">JCB kartları kabul edilmiyor</string>
+ <string name="poi_payment_laser_yes">Laser</string>
+ <string name="poi_payment_laser_no">Laser kartları kabul edilmiyor</string>
+ <string name="poi_payment_ep_quick_yes">Quick</string>
+ <string name="poi_payment_ep_quick_no">Quick kartları kabul edilmiyor</string>
+ <string name="poi_payment_eurowag_yes">Eurowag</string>
+ <string name="poi_payment_eurowag_no">Eurowag kartları kabul edilmiyor</string>
+ <string name="poi_payment_e_zpass_yes">E‑ZPass</string>
+ <string name="poi_payment_e_zpass_no">E-ZPass kabul edilmiyor</string>
+ <string name="poi_payment_euroshell_yes">Euroshell</string>
+ <string name="poi_payment_euroshell_no">Euroshell yakıt kartları kabul edilmiyor</string>
+ <string name="poi_payment_kitcard_yes">KITCard</string>
+ <string name="poi_payment_kitcard_no">KITCard kabul edilmiyor</string>
+ <string name="poi_payment_westfalen_card_yes">Westfalen</string>
+ <string name="poi_payment_westfalen_card_no">Westfalen kartları kabul edilmiyor</string>
+ <string name="poi_payment_v_pay_yes">V PAY</string>
+ <string name="poi_payment_v_pay_no">V PAY kartları kabul edilmiyor</string>
+ <string name="poi_payment_dogecoin_yes">Dogecoin</string>
+ <string name="poi_payment_dogecoin_no">Dogecoin kabul edilmiyor</string>
+ <string name="poi_payment_cibus_yes">Cibus</string>
+ <string name="poi_payment_cibus_no">Cibus kartları kabul edilmiyor</string>
+ <string name="poi_payment_wire_transfer_yes">Banka havalesi</string>
+ <string name="poi_payment_wire_transfer_no">Banka havalesi kabul edilmiyor</string>
+ <string name="poi_payment_ep_cash_yes">Nakit kartı (Geldkarte)</string>
+ <string name="poi_payment_ep_cash_no">Nakit kartı (Geldkarte) kabul edilmiyor</string>
+ <string name="poi_payment_ep_proton_yes">Proton</string>
+ <string name="poi_payment_ep_proton_no">Proton kartları kabul edilmiyor</string>
+ <string name="poi_payment_ep_avant_yes">AvantCard</string>
+ <string name="poi_payment_ep_avant_no">AvantCard kabul edilmiyor</string>
+ <string name="poi_payment_ep_mep_yes">MEP</string>
+ <string name="poi_payment_ep_mep_no">MEP kabul edilmiyor</string>
+ <string name="poi_payment_ep_minipay_yes">Minipay</string>
+ <string name="poi_payment_ep_minipay_no">Minipay kabul edilmiyor</string>
+ <string name="poi_payment_ep_minicash_yes">MiniCash</string>
+ <string name="poi_payment_ep_minicash_no">MiniCash kabul edilmiyor</string>
+ <string name="poi_payment_ep_moneo_yes">Moneo</string>
+ <string name="poi_payment_ep_moneo_no">Moneo kabul edilmiyor</string>
+ <string name="poi_payment_ep_monedero4b_yes">Monedero 4B</string>
+ <string name="poi_payment_ep_monedero4b_no">Monedero 4B kabul edilmiyor</string>
+ <string name="poi_payment_ep_monedero_yes">Monedero</string>
+ <string name="poi_payment_ep_monedero_no">Monedero kabul edilmiyor</string>
+ <string name="poi_payment_bankaxess_yes">BankAxess</string>
+ <string name="poi_payment_bankaxess_no">BankAxess kabul edilmiyor</string>
+ <string name="poi_payment_coinkite_yes">Coinkite</string>
+ <string name="poi_payment_coinkite_no">Coinkite kabul edilmiyor</string>
+ <string name="poi_payment_roadrunner_yes">Roadrunner</string>
+ <string name="poi_payment_roadrunner_no">Roadrunner kartları kabul edilmiyor</string>
+ <string name="poi_payment_svg_yes">SVG</string>
+ <string name="poi_payment_svg_no">SVG kabul edilmiyor</string>
+ <string name="poi_payment_sms_yes">SMS ödemeleri</string>
+ <string name="poi_payment_sms_no">SMS ödemeleri kabul edilmiyor</string>
+ <string name="poi_payment_oyster_yes">Oyster</string>
+ <string name="poi_payment_oyster_no">Oyster kartları kabul edilmiyor</string>
+ <string name="poi_payment_sube_yes">SUBE</string>
+ <string name="poi_payment_sube_no">SUBE kartları kabul edilmiyor</string>
+ <string name="poi_payment_via_verde_yes">Via Verde</string>
+ <string name="poi_payment_via_verde_no">Via Verde kabul edilmiyor</string>
+ <string name="poi_payment_meal_voucher_yes">Yemek kuponları</string>
+ <string name="poi_payment_meal_voucher_no">Yemek kuponları kabul edilmiyor</string>
+ <string name="poi_payment_paypal_yes">PayPal</string>
+ <string name="poi_payment_paypal_no">PayPal kabul edilmiyor</string>
+ <string name="poi_payment_u_key_yes">U-Key</string>
+ <string name="poi_payment_u_key_no">U-Key kabul edilmiyor</string>
+ <string name="poi_payment_token_yes">Jeton</string>
+ <string name="poi_payment_token_no">Jeton kabul edilmiyor</string>
+ <string name="poi_payment_gift_card_yes">Hediye kartları</string>
+ <string name="poi_payment_gift_card_no">Hediye kartları kabul edilmiyor</string>
+ <string name="poi_payment_golden_crown_yes">Golden Crown</string>
+ <string name="poi_payment_golden_crown_no">Golden Crown kartları kabul edilmiyor</string>
+ <string name="poi_payment_pro100_yes">PRO100</string>
+ <string name="poi_payment_pro100_no">PRO100 kartları kabul edilmiyor</string>
+ <string name="poi_payment_union_card_yes">Union Card</string>
+ <string name="poi_payment_union_card_no">Union Card kabul edilmiyor</string>
+ <string name="poi_payment_mtsmoney_yes">MTS-Money</string>
+ <string name="poi_payment_mtsmoney_no">MTS-Money kabul edilmiyor</string>
+ <string name="poi_payment_yandexmoney_yes">Yandex.Money</string>
+ <string name="poi_payment_yandexmoney_no">Yandex.Money kabul edilmiyor</string>
+ <string name="poi_description_payment">Ödeme açıklaması</string>
+ <string name="poi_payment_ov_chipkaart_yes">OV-Chipkaart</string>
+ <string name="poi_payment_ov_chipkaart_no">OV-Chipkaart kabul edilmiyor</string>
+ <string name="poi_events_venue">Etkinlik mekanı</string>
+ <string name="poi_diet_vegetarian_only">Sadece vejetaryen</string>
+ <string name="poi_diet_vegetarian_yes">Vejetaryen</string>
+ <string name="poi_diet_vegetarian_no">Vejetaryen diyet: hayır</string>
+ <string name="poi_diet_vegan_only">Sadece Vegan</string>
+ <string name="poi_diet_vegan_yes">Vegan</string>
+ <string name="poi_diet_vegan_no">Vegan diyet: hayır</string>
+ <string name="poi_diet_gluten_free_only">Sadece glutensiz</string>
+ <string name="poi_diet_gluten_free_yes">Glutensiz</string>
+ <string name="poi_diet_gluten_free_no">Glutensiz diyet: hayır</string>
+ <string name="poi_diet_kosher_only">Sadece kosher</string>
+ <string name="poi_diet_kosher_yes">Kosher</string>
+ <string name="poi_diet_kosher_no">Kosher diyet: hayır</string>
+ <string name="poi_diet_halal_only">Sadece helal</string>
+ <string name="poi_diet_halal_yes">Helal</string>
+ <string name="poi_diet_halal_no">Helal diyet: hayır</string>
+ <string name="poi_diet_lactose_free_only">Sadece laktozsuz</string>
+ <string name="poi_diet_lactose_free_yes">Laktozsuz</string>
+ <string name="poi_diet_lactose_free_no">Laktozsuz diyet: hayır</string>
+ <string name="poi_diet_pescetarian_yes">Pesketaryen</string>
+ <string name="poi_drive_in_yes">Evet</string>
+ <string name="poi_drive_in_no">Arabalı servis: hayır</string>
+ <string name="poi_drive_through_yes">Evet</string>
+ <string name="poi_drive_through_no">Arabaya servis: hayır</string>
+ <string name="poi_brewery_additional">Bira fabrikası adı</string>
+ <string name="poi_microbrewery_yes">Evet</string>
+ <string name="poi_microbrewery_no">Mikro bira fabrikası yok</string>
+ <string name="poi_takeaway_yes">Paket servisi</string>
+ <string name="poi_takeaway_no">Paket servisi yok</string>
+ <string name="poi_takeaway_only">Sadece paket servisi</string>
+ <string name="poi_delivery_yes">Teslimat</string>
+ <string name="poi_delivery_no">Teslimat yok</string>
+ <string name="poi_delivery_only">Sadece teslimat</string>
+ <string name="poi_outdoor_seating_yes">Açık havada oturma: evet</string>
+ <string name="poi_outdoor_seating_no">Açık havada oturma yok</string>
+ <string name="poi_outdoor_seating_terrace">Açık havada oturma: teras</string>
+ <string name="poi_outdoor_seating_sidewalk">Açık havada oturma: kaldırım</string>
+ <string name="poi_outdoor_seating_pedestrian_zone">Açık havada oturma: yaya bölgesi</string>
+ <string name="poi_outdoor_seating_garden">Açık havada oturma: bahçe</string>
+ <string name="poi_outdoor_seating_patio">Açık havada oturma: veranda</string>
+ <string name="poi_cocktails_yes">Evet</string>
+ <string name="poi_second_hand_yes">İkinci el ürünler</string>
+ <string name="poi_second_hand_no">İkinci el ürün yok</string>
+ <string name="poi_second_hand_only">Sadece ikinci el ürünler</string>
+ <string name="poi_outdoor_seating_filter_yes">Evet</string>
+ <string name="poi_delivery_filter_yes">Evet</string>
+ <string name="poi_diet_vegetarian_filter_yes">Vejetaryen</string>
+ <string name="poi_diet_vegan_filter_yes">Vegan</string>
+ <string name="poi_diet_gluten_free_filter_yes">Glutensiz</string>
+ <string name="poi_diet_kosher_filter_yes">Kosher</string>
+ <string name="poi_diet_halal_filter_yes">Helal</string>
+ <string name="poi_diet_lactose_free_filter_yes">Laktozsuz</string>
+ <string name="poi_takeaway_filter_yes">Evet</string>
+ <string name="poi_diet_vegetarian_few">Vejetaryen (birkaç)</string>
+ <string name="poi_seamark_clearance_height">Açıklık yüksekliği</string>
+ <string name="poi_seamark_clearance_height_closed">Açıklık yüksekliği (kapalı)</string>
+ <string name="poi_seamark_clearance_height_open">Açıklık yüksekliği (açık)</string>
+ <string name="poi_seamark_clearance_width">Açıklık genişliği</string>
+ <string name="poi_payment_coins_0_5">0.5$ madeni para</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml
index 0ed6b70887..482fc1ea1c 100644
--- a/OsmAnd/res/values-tr/strings.xml
+++ b/OsmAnd/res/values-tr/strings.xml
@@ -631,7 +631,7 @@
<string name="favorite_delete_multiple">%1$d Sık Kullanılan ve %2$d Sık Kullanılan grubu sileceksiniz. Emin misiniz\?</string>
<string name="local_index_gpx_info_show">"
\n
-\nAyarlar için ekrana uzun basın"</string>
+\nAyarlar için uzun basın"</string>
<string name="local_index_installed">Yerel Versiyon</string>
<string name="local_index_items_backuped">%1$d/%2$d öge devre dışı bırakıldı.</string>
<string name="local_index_items_deleted">%1$d/%2$d öge silindi.</string>
@@ -3244,7 +3244,7 @@
<string name="change_data_storage_full_description">OsmAnd veri dosyaları yeni hedefe taşınsın mı\?
\n%1$s &gt; %2$s</string>
<string name="data_storage_preference_summary">%1$s • Kullanılan %2$s GB</string>
- <string name="data_storage_space_description">Boş %1$s • %2$s / %3$s GB</string>
+ <string name="data_storage_space_description">Boş %1$s GB • Toplam %2$s GB</string>
<string name="enter_path_to_folder">Klasörün yolunu girin</string>
<string name="shared_string_select_folder">Klasör seç</string>
<string name="paste_Osmand_data_folder_path">OsmAnd verilerinin bulunduğu klasörün yolunu yapıştırın</string>
@@ -3272,4 +3272,16 @@
<string name="routeInfo_piste_difficulty_name">Pist zorluğu</string>
<string name="routing_attr_width_name">Genişlik sınırı</string>
<string name="routing_attr_width_description">Rotalarda izin verilen araç genişlik sınırını belirtin.</string>
-</resources>
+ <string name="avoid_in_routing_descr_">Belirli rotalardan ve yol türlerinden kaçının</string>
+ <string name="app_mode_utv">Yan yana</string>
+ <string name="rendering_attr_piste_difficulty_aerialway_name">Hava yolu</string>
+ <string name="rendering_attr_piste_difficulty_connection_name">Bağlantı</string>
+ <string name="shared_string_calculate">Hesapla</string>
+ <string name="shared_string_osmand_usage">OsmAnd Kullanımı</string>
+ <string name="shared_sting_tiles">Döşemeler</string>
+ <string name="shared_string_maps">Haritalar</string>
+ <string name="shared_string_memory_tb_desc">%1$s TB</string>
+ <string name="shared_string_memory_gb_desc">%1$s GB</string>
+ <string name="shared_string_memory_mb_desc">%1$s MB</string>
+ <string name="shared_string_memory_kb_desc">%1$s KB</string>
+</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-zh-rTW/phrases.xml b/OsmAnd/res/values-zh-rTW/phrases.xml
index bb46dbff38..b40f5c9792 100644
--- a/OsmAnd/res/values-zh-rTW/phrases.xml
+++ b/OsmAnd/res/values-zh-rTW/phrases.xml
@@ -2340,7 +2340,7 @@
<string name="poi_diaper_table_count">尿布更換台數量</string>
<string name="poi_service_bicycle_charging_yes">充電︰有</string>
<string name="poi_service_bicycle_charging_no">充電︰沒有</string>
- <string name="poi_bicycle_repair_station">自行車自行維修站</string>
+ <string name="poi_bicycle_repair_station">自行車維修站;自行車自行維修站</string>
<string name="poi_shower_filter_yes">是的</string>
<string name="poi_historic_period_classical">歷史時期:古典(新時代 IV,西元 374 年 - 西元 900 年)</string>
<string name="poi_historic_period_imperial">歷史時期︰帝國 (新時代 V,西元 900 年 — 西元 1200 年)</string>
@@ -3603,4 +3603,127 @@
<string name="poi_historic_tank">歷史坦克</string>
<string name="poi_hookah_lounge">水煙休息室</string>
<string name="poi_source_biomass">能量來源:生質</string>
+ <string name="poi_snowmobile_filter">雪地摩托車進入</string>
+ <string name="poi_access_bus">巴士進入</string>
+ <string name="poi_access_caravan">露營車進入</string>
+ <string name="poi_access_motorhome">豪華露營車進入</string>
+ <string name="poi_access_trailer">拖車進入</string>
+ <string name="poi_access_motorcycle">摩托車進入</string>
+ <string name="poi_access_moped">非機動車進入</string>
+ <string name="poi_access_mofa">非機動車進入</string>
+ <string name="poi_access_hgv">大貨車進入</string>
+ <string name="poi_access_goods">小貨車進入</string>
+ <string name="poi_access_disabled">無障礙空間</string>
+ <string name="poi_taxi_office">計程車辦公室</string>
+ <string name="poi_vehicle_yes">車輛進入:是</string>
+ <string name="poi_vehicle_private">車輛進入:私人</string>
+ <string name="poi_vehicle_no">車輛進入:否</string>
+ <string name="poi_vehicle_destination">車輛進入:目的地</string>
+ <string name="poi_vehicle_permissive">車輛進入:許可</string>
+ <string name="poi_vehicle_customers">車輛進入:顧客</string>
+ <string name="poi_vehicle_military">車輛進入:軍事</string>
+ <string name="poi_vehicle_delivery">車輛進入:送貨</string>
+ <string name="poi_vehicle_forestry">車輛進入:林業</string>
+ <string name="poi_motorcar_yes">汽車進入:</string>
+ <string name="poi_motorcar_private">汽車進入:私人</string>
+ <string name="poi_motorcar_no">汽車進入:否</string>
+ <string name="poi_motorcar_destination">汽車進入:目的地</string>
+ <string name="poi_motorcar_permissive">汽車進入:許可</string>
+ <string name="poi_motorcar_customers">汽車進入:顧客</string>
+ <string name="poi_motorcar_forestry">汽車進入:林業</string>
+ <string name="poi_motor_vehicle_yes">機動車輛進入:是</string>
+ <string name="poi_motor_vehicle_private">機動車輛進入:私人</string>
+ <string name="poi_motor_vehicle_no">機動車輛進入:否</string>
+ <string name="poi_motor_vehicle_destination">機動車輛進入:目的地</string>
+ <string name="poi_motor_vehicle_permissive">機動車輛進入:許可</string>
+ <string name="poi_motor_vehicle_customers">機動車輛進入:顧庫</string>
+ <string name="poi_motor_vehicle_military">機動車輛進入:軍事</string>
+ <string name="poi_motor_vehicle_delivery">機動車輛進入:送貨</string>
+ <string name="poi_motor_vehicle_forestry">機動車輛進入:林業</string>
+ <string name="poi_motor_vehicle_agricultural">機動車輛進入:農業</string>
+ <string name="poi_hgv_private">大貨車進入:私人</string>
+ <string name="poi_hgv_no">大貨車進入:否</string>
+ <string name="poi_hgv_agricultural">大貨車進入:農業</string>
+ <string name="poi_hgv_discouraged">大貨車進入:不鼓勵</string>
+ <string name="poi_hgv_unsuitable">大貨車進入:不適合</string>
+ <string name="poi_goods_no">小貨車進入:否</string>
+ <string name="poi_motorcycle_private">摩托車進入:私人</string>
+ <string name="poi_motorcycle_no">摩托車進入:否</string>
+ <string name="poi_moped_no">非機動車輛進入:否</string>
+ <string name="poi_mofa_no">非機動車輛進入:否</string>
+ <string name="poi_bicycle_private">腳踏車進入:私人</string>
+ <string name="poi_bicycle_dismount">腳踏車進入:下車</string>
+ <string name="poi_bicycle_destination">腳踏車進入:目的地</string>
+ <string name="poi_bicycle_permissive">腳踏車進入:許可</string>
+ <string name="poi_bicycle_customers">腳踏車進入:顧客</string>
+ <string name="poi_horse_private">馬進入:私人</string>
+ <string name="poi_horse_destination">馬進入:目的地</string>
+ <string name="poi_horse_permissive">馬進入:許可</string>
+ <string name="poi_horse_forestry">馬進入:林業</string>
+ <string name="poi_foot_yes">行人進入:是</string>
+ <string name="poi_foot_private">行人進入:私人</string>
+ <string name="poi_foot_no">行人進入:否</string>
+ <string name="poi_foot_destination">行人進入:目的地</string>
+ <string name="poi_foot_permissive">行人進入:許可</string>
+ <string name="poi_foot_customers">行人進入:顧客</string>
+ <string name="poi_caravan_no">露營車進入:否</string>
+ <string name="poi_motorhome_no">豪華露營車進入:否</string>
+ <string name="poi_trailer_no">拖車進入:否</string>
+ <string name="poi_psv_yes">公車進入:是</string>
+ <string name="poi_psv_designated">公車進入:指定</string>
+ <string name="poi_psv_no">公車進入:否</string>
+ <string name="poi_bus_no">巴士進入:否</string>
+ <string name="poi_tourist_bus_yes">遊覽車進入:是</string>
+ <string name="poi_tourist_bus_designated">遊覽車進入:指定</string>
+ <string name="poi_tourist_bus_no">遊覽車進入:否</string>
+ <string name="poi_coach_yes">長途公車進入:是</string>
+ <string name="poi_coach_no">長途公車進入:否</string>
+ <string name="poi_ski_yes">滑雪進入:是</string>
+ <string name="poi_ski_no">滑雪進入:否</string>
+ <string name="poi_snowmobile_private">雪地摩托車進入:私人</string>
+ <string name="poi_snowmobile_no">雪地摩托車進入:否</string>
+ <string name="poi_agricultural_yes">農用車進入:是</string>
+ <string name="poi_agricultural_no">農用車進入:否</string>
+ <string name="poi_taxi_yes">計程車進入:是</string>
+ <string name="poi_taxi_designated">計程車進入:指定</string>
+ <string name="poi_taxi_no">計程車進入:否</string>
+ <string name="poi_disabled_no">無障礙通道:否</string>
+ <string name="poi_snowmobile_yes">是</string>
+ <string name="poi_snowmobile_designated">指定</string>
+ <string name="poi_snowmobile_permissive">許可</string>
+ <string name="poi_bus_yes">是</string>
+ <string name="poi_bus_designated">指定</string>
+ <string name="poi_caravan_yes">是</string>
+ <string name="poi_caravan_designated">指定</string>
+ <string name="poi_motorhome_yes">是</string>
+ <string name="poi_motorhome_designated">指定</string>
+ <string name="poi_trailer_yes">是</string>
+ <string name="poi_trailer_designated">指定</string>
+ <string name="poi_motorcycle_yes">是</string>
+ <string name="poi_motorcycle_permissive">許可</string>
+ <string name="poi_motorcycle_destination">目的地</string>
+ <string name="poi_motorcycle_designated">指定</string>
+ <string name="poi_moped_yes">是</string>
+ <string name="poi_moped_designated">指定</string>
+ <string name="poi_mofa_yes">是</string>
+ <string name="poi_mofa_designated">指定</string>
+ <string name="poi_hgv_yes">是</string>
+ <string name="poi_hgv_destination">目的地</string>
+ <string name="poi_hgv_permissive">許可</string>
+ <string name="poi_hgv_designated">指定</string>
+ <string name="poi_hgv_delivery">送貨</string>
+ <string name="poi_goods_yes">是</string>
+ <string name="poi_goods_designated">指定</string>
+ <string name="poi_disabled_yes">是</string>
+ <string name="poi_disabled_designated">指定</string>
+ <string name="poi_cellar_entrance">地窖入口</string>
+ <string name="poi_health_food">健康食品</string>
+ <string name="poi_craft_builder">建築師</string>
+ <string name="poi_craft_distillery">酒廠</string>
+ <string name="poi_craft_joiner">木匠</string>
+ <string name="poi_craft_floorer">鋪地板的人</string>
+ <string name="poi_craft_bakery">烘焙坊</string>
+ <string name="poi_craft_cabinet_maker">櫥櫃製造商</string>
+ <string name="poi_charge">充電</string>
+ <string name="poi_pet_grooming">寵物美容</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml
index d19ae7897e..7ae143a50c 100644
--- a/OsmAnd/res/values-zh-rTW/strings.xml
+++ b/OsmAnd/res/values-zh-rTW/strings.xml
@@ -1437,7 +1437,7 @@
<string name="shared_string_deselect">取消選擇</string>
<string name="shared_string_deselect_all">取消全選</string>
<string name="shared_string_clear">清除</string>
- <string name="shared_string_clear_all">全部清除</string>
+ <string name="shared_string_clear_all">清除全部</string>
<string name="shared_string_save">儲存</string>
<string name="shared_string_save_as_gpx">另存為新的 GPX 檔案</string>
<string name="shared_string_rename">更名</string>
@@ -3280,4 +3280,47 @@
<string name="plugins_settings">外掛程式設定</string>
<string name="shared_string_by_default">預設值</string>
<string name="download_detailed_map">下載更詳細的 %s 地圖以檢視此區域。</string>
+ <string name="change_data_storage_full_description">移動 OsmAnd 資料檔案到新目的地?
+\n%1$s &gt; %2$s</string>
+ <string name="data_storage_preference_summary">%1$s • 已使用 %2$s GB</string>
+ <string name="data_storage_space_description">剩餘 %1$s GB • 總共 %2$s GB</string>
+ <string name="enter_path_to_folder">輸入到資料夾的路徑</string>
+ <string name="shared_string_select_folder">選取資料夾</string>
+ <string name="paste_Osmand_data_folder_path">貼上有 OsmAnd 資料的資料夾路徑</string>
+ <string name="change_osmand_data_folder_question">變更 OsmAnd 資料夾?</string>
+ <string name="move_maps_to_new_destination">移動到新目的地</string>
+ <string name="internal_app_storage_description">內部儲存空間,對其他使用者與其他應用程式隱藏,所以除了 OsmAnd 以外都不能存取您的資料</string>
+ <string name="change_data_storage_folder">變更資料儲存資料夾</string>
+ <string name="rendering_attr_piste_type_snow_park_name">雪園</string>
+ <string name="rendering_attr_piste_type_sleigh_name">雪橇</string>
+ <string name="rendering_attr_piste_type_sled_name">平底雪橇</string>
+ <string name="rendering_attr_piste_type_hike_name">遠足</string>
+ <string name="rendering_attr_piste_type_connection_name">連線</string>
+ <string name="rendering_attr_piste_type_skitour_name">滑雪旅行</string>
+ <string name="rendering_attr_piste_type_downhill_name">下坡</string>
+ <string name="rendering_attr_piste_type_nordic_name">北歐風</string>
+ <string name="routeInfo_piste_type_name">軌道類型</string>
+ <string name="rendering_attr_piste_difficulty_novice_name">新手</string>
+ <string name="rendering_attr_piste_difficulty_easy_name">簡單</string>
+ <string name="rendering_attr_piste_difficulty_intermediate_name">中等</string>
+ <string name="rendering_attr_piste_difficulty_advanced_name">進階</string>
+ <string name="rendering_attr_piste_difficulty_expert_name">專家</string>
+ <string name="rendering_attr_piste_difficulty_freeride_name">自由滑雪</string>
+ <string name="rendering_attr_piste_difficulty_extreme_name">極度</string>
+ <string name="rendering_attr_piste_difficulty_undefined_name">未定義</string>
+ <string name="routeInfo_piste_difficulty_name">滑雪難度</string>
+ <string name="routing_attr_width_name">寬度限制</string>
+ <string name="routing_attr_width_description">在路線當指定允許的車輛寬度限制。</string>
+ <string name="avoid_in_routing_descr_">避開特定路線與道路類型</string>
+ <string name="app_mode_utv">並排</string>
+ <string name="rendering_attr_piste_difficulty_aerialway_name">空中航道</string>
+ <string name="rendering_attr_piste_difficulty_connection_name">連線</string>
+ <string name="shared_string_calculate">計算</string>
+ <string name="shared_string_osmand_usage">OsmAnd 用法</string>
+ <string name="shared_sting_tiles">圖磚</string>
+ <string name="shared_string_maps">地圖</string>
+ <string name="shared_string_memory_tb_desc">%1$s TB</string>
+ <string name="shared_string_memory_gb_desc">%1$s GB</string>
+ <string name="shared_string_memory_mb_desc">%1$s MB</string>
+ <string name="shared_string_memory_kb_desc">%1$s KB</string>
</resources> \ No newline at end of file
diff --git a/OsmAnd/res/values/phrases.xml b/OsmAnd/res/values/phrases.xml
index 033cae44a5..ddec07f1ec 100644
--- a/OsmAnd/res/values/phrases.xml
+++ b/OsmAnd/res/values/phrases.xml
@@ -1054,7 +1054,6 @@
<string name="poi_internet_cafe">Internet cafe</string>
<string name="poi_bank">Bank</string>
- <string name="poi_amenity_atm">ATM</string>
<string name="poi_atm">ATM</string>
<string name="poi_payment_terminal">Payment terminal</string>
<string name="poi_money_lender">Money lender</string>
@@ -2730,7 +2729,7 @@
<string name="poi_inscription_ne">Inscription:NE</string>
<string name="poi_construction_yes">Under construction</string>
- <string name="poi_additional_atm_yes">ATM: yes</string>
+ <string name="poi_atm_yes">ATM: yes</string>
<string name="poi_atm_no">ATM: no</string>
<string name="poi_firepit">Firepit</string>
@@ -4108,5 +4107,8 @@
<string name="poi_craft_bakery">Bakehouse</string>
<string name="poi_craft_cabinet_maker">Cabinetmaker</string>
+ <string name="poi_charge">Charge</string>
+
+ <string name="poi_pet_grooming">Pet grooming</string>
</resources>
diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml
index 1e10b1152c..e454ece212 100644
--- a/OsmAnd/res/values/strings.xml
+++ b/OsmAnd/res/values/strings.xml
@@ -11,15 +11,27 @@
Thx - Hardy
-->
+
<string name="track_storage_directory">Track Storage Directory</string>
<string name="track_storage_directory_descrp">Tracks can be stored in rec folder or in monthly or daily folders.</string>
<string name="store_tracks_in_rec_directory">Store recorded tracks in rec folder</string>
<string name="store_tracks_in_daily_directories">Store recorded tracks in daily folders</string>
<string name="store_tracks_in_daily_directories_descrp">Store recorded tracks in sub-folders per recording day (like 2018-01-01).</string>
+ <string name="shared_string_calculate">Calculate</string>
+ <string name="shared_string_osmand_usage">OsmAnd Usage</string>
+ <string name="shared_sting_tiles">Tiles</string>
+ <string name="shared_string_maps">Maps</string>
+ <string name="shared_string_memory_tb_desc">%1$s TB</string>
+ <string name="shared_string_memory_gb_desc">%1$s GB</string>
+ <string name="shared_string_memory_mb_desc">%1$s MB</string>
+ <string name="shared_string_memory_kb_desc">%1$s KB</string>
+ <string name="app_mode_utv">Side by Side</string>
+ <string name="rendering_attr_piste_difficulty_aerialway_name">Aerialway</string>
+ <string name="rendering_attr_piste_difficulty_connection_name">Connection</string>
<string name="avoid_in_routing_descr_">Avoid certain routes and road types</string>
<string name="change_data_storage_full_description">Move OsmAnd data files to the new destination?\n%1$s > %2$s</string>
<string name="data_storage_preference_summary">%1$s • Used %2$s GB</string>
- <string name="data_storage_space_description">Free %1$s • %2$s / %3$s GB</string>
+ <string name="data_storage_space_description">Free %1$s GB • Total %2$s GB</string>
<string name="enter_path_to_folder">Enter path to the folder</string>
<string name="shared_string_select_folder">Select folder</string>
<string name="paste_Osmand_data_folder_path">Paste path to the folder with OsmAnd data</string>
diff --git a/OsmAnd/res/xml/data_storage.xml b/OsmAnd/res/xml/data_storage.xml
index 527ab8e1a9..242418b0e0 100644
--- a/OsmAnd/res/xml/data_storage.xml
+++ b/OsmAnd/res/xml/data_storage.xml
@@ -2,6 +2,44 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/application_dir">
+ <Preference
+ android:key="osmand_usage"
+ android:layout="@layout/preference_category_with_right_text"
+ android:title="@string/shared_string_osmand_usage" />
+
+ <Preference
+ android:key="maps_memory_used"
+ android:layout="@layout/data_storage_memory_used_item"
+ android:icon="@drawable/ic_map"
+ android:title="@string/shared_string_maps"/>
+
+ <Preference
+ android:key="tracks_memory_used"
+ android:layout="@layout/data_storage_memory_used_item"
+ android:icon="@drawable/ic_action_polygom_dark"
+ android:title="@string/shared_string_gpx_tracks"/>
+
+ <Preference
+ android:key="notes_memory_used"
+ android:layout="@layout/data_storage_memory_used_item"
+ android:icon="@drawable/ic_action_photo_dark"
+ android:title="@string/audionotes_plugin_name"/>
+
+ <Preference
+ android:key="tiles_memory_used"
+ android:layout="@layout/data_storage_memory_used_item"
+ android:icon="@drawable/ic_world_globe_dark"
+ android:title="@string/shared_sting_tiles"/>
+
+ <Preference
+ android:key="other_memory_used"
+ android:layout="@layout/data_storage_memory_used_item"
+ android:icon="@drawable/ic_action_folder"
+ android:title="@string/shared_string_other"/>
+
+ <Preference
+ android:layout="@layout/divider_padding_half" />
+
<PreferenceCategory
android:key="application_profiles"
android:layout="@layout/preference_category_with_descr"
diff --git a/OsmAnd/res/xml/general_profile_settings.xml b/OsmAnd/res/xml/general_profile_settings.xml
index eedbd410af..bf059a374d 100644
--- a/OsmAnd/res/xml/general_profile_settings.xml
+++ b/OsmAnd/res/xml/general_profile_settings.xml
@@ -53,6 +53,11 @@
android:layout="@layout/preference_with_descr"
android:title="@string/angular_measeurement" />
+ <net.osmand.plus.settings.preferences.ListPreferenceEx
+ android:key="default_speed_system"
+ android:layout="@layout/preference_with_descr"
+ android:title="@string/default_speed_system" />
+
<Preference
android:layout="@layout/simple_divider_item"
android:selectable="false" />
diff --git a/OsmAnd/src/net/osmand/aidl/AidlCallbackListenerV2.java b/OsmAnd/src/net/osmand/aidl/AidlCallbackListenerV2.java
new file mode 100644
index 0000000000..a1579da12d
--- /dev/null
+++ b/OsmAnd/src/net/osmand/aidl/AidlCallbackListenerV2.java
@@ -0,0 +1,36 @@
+package net.osmand.aidl;
+
+import net.osmand.aidlapi.IOsmAndAidlCallback;
+
+import java.util.Map;
+
+public interface AidlCallbackListenerV2 {
+
+ /**
+ * Add AidlCallbackListener to OsmandAidlService's map of listeners. Key is unique to each AIDL
+ * method that wants to register callback and used to access only "own" callbacks.
+ *
+ * @param callback
+ * @param key - every AIDL method which uses that register callbacks in service need to use its own bit key
+ * 1 - key for registerForUpdates(...)
+ * 2 - key for registerForNavigationUpdates(...)
+ * 4 - key for onContextMenuButtonClicked(...)
+ * 8 - key for... future use
+ * 16 - key for... future use
+ * @return long - unique id of callback. Could be used for unregistering callback
+ */
+ long addAidlCallback(IOsmAndAidlCallback callback, int key);
+
+ /**
+ * Unregister AidlCallbackListener from OsmandAidlService's map
+ *
+ * @param id - unique id of callback
+ * @return - true if callback successfully unregistered
+ */
+ boolean removeAidlCallback(long id);
+
+ /**
+ * @return map of all callbacks. AidlCallbackParams contains method key and callback.
+ */
+ Map<Long, OsmandAidlServiceV2.AidlCallbackParams> getAidlCallbacks();
+} \ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/aidl/AidlContextMenuButtonWrapper.java b/OsmAnd/src/net/osmand/aidl/AidlContextMenuButtonWrapper.java
new file mode 100644
index 0000000000..28c27acb26
--- /dev/null
+++ b/OsmAnd/src/net/osmand/aidl/AidlContextMenuButtonWrapper.java
@@ -0,0 +1,64 @@
+package net.osmand.aidl;
+
+import net.osmand.aidl.contextmenu.AContextMenuButton;
+
+public class AidlContextMenuButtonWrapper {
+
+ private int buttonId;
+
+ private String leftTextCaption;
+ private String rightTextCaption;
+ private String leftIconName;
+ private String rightIconName;
+
+ private boolean needColorizeIcon;
+ private boolean enabled;
+
+ public AidlContextMenuButtonWrapper(AContextMenuButton aContextMenuButton) {
+ buttonId = aContextMenuButton.getButtonId();
+ leftTextCaption = aContextMenuButton.getLeftTextCaption();
+ rightTextCaption = aContextMenuButton.getRightTextCaption();
+ leftIconName = aContextMenuButton.getLeftIconName();
+ rightIconName = aContextMenuButton.getRightIconName();
+ needColorizeIcon = aContextMenuButton.isTintIcon();
+ enabled = aContextMenuButton.isEnabled();
+ }
+
+ public AidlContextMenuButtonWrapper(net.osmand.aidlapi.contextmenu.AContextMenuButton aContextMenuButton) {
+ buttonId = aContextMenuButton.getButtonId();
+ leftTextCaption = aContextMenuButton.getLeftTextCaption();
+ rightTextCaption = aContextMenuButton.getRightTextCaption();
+ leftIconName = aContextMenuButton.getLeftIconName();
+ rightIconName = aContextMenuButton.getRightIconName();
+ needColorizeIcon = aContextMenuButton.isTintIcon();
+ enabled = aContextMenuButton.isEnabled();
+ }
+
+ public int getButtonId() {
+ return buttonId;
+ }
+
+ public String getLeftTextCaption() {
+ return leftTextCaption;
+ }
+
+ public String getRightTextCaption() {
+ return rightTextCaption;
+ }
+
+ public String getLeftIconName() {
+ return leftIconName;
+ }
+
+ public String getRightIconName() {
+ return rightIconName;
+ }
+
+ public boolean isTintIcon() {
+ return needColorizeIcon;
+ }
+
+ public boolean isEnabled() {
+ return enabled;
+ }
+} \ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/aidl/AidlContextMenuButtonsWrapper.java b/OsmAnd/src/net/osmand/aidl/AidlContextMenuButtonsWrapper.java
new file mode 100644
index 0000000000..32fbcb8796
--- /dev/null
+++ b/OsmAnd/src/net/osmand/aidl/AidlContextMenuButtonsWrapper.java
@@ -0,0 +1,86 @@
+package net.osmand.aidl;
+
+import net.osmand.aidl.contextmenu.AContextMenuButton;
+import net.osmand.aidl.contextmenu.ContextMenuButtonsParams;
+
+import java.util.List;
+
+public class AidlContextMenuButtonsWrapper {
+
+ private AidlContextMenuButtonWrapper leftButton;
+ private AidlContextMenuButtonWrapper rightButton;
+
+ private String id;
+ private String appPackage;
+ private String layerId;
+
+ private long callbackId;
+
+ private List<String> pointsIds;
+
+ public AidlContextMenuButtonsWrapper(ContextMenuButtonsParams params) {
+ id = params.getId();
+ appPackage = params.getAppPackage();
+ layerId = params.getLayerId();
+ callbackId = params.getCallbackId();
+ pointsIds = params.getPointsIds();
+
+ AContextMenuButton leftButton = params.getLeftButton();
+ AContextMenuButton rightButton = params.getRightButton();
+ if (leftButton != null) {
+ this.leftButton = new AidlContextMenuButtonWrapper(leftButton);
+ }
+ if (rightButton != null) {
+ this.rightButton = new AidlContextMenuButtonWrapper(rightButton);
+ }
+ }
+
+ public AidlContextMenuButtonsWrapper(net.osmand.aidlapi.contextmenu.ContextMenuButtonsParams params) {
+ id = params.getId();
+ appPackage = params.getAppPackage();
+ layerId = params.getLayerId();
+ callbackId = params.getCallbackId();
+ pointsIds = params.getPointsIds();
+
+ net.osmand.aidlapi.contextmenu.AContextMenuButton leftButton = params.getLeftButton();
+ net.osmand.aidlapi.contextmenu.AContextMenuButton rightButton = params.getRightButton();
+ if (leftButton != null) {
+ this.leftButton = new AidlContextMenuButtonWrapper(leftButton);
+ }
+ if (rightButton != null) {
+ this.leftButton = new AidlContextMenuButtonWrapper(rightButton);
+ }
+ }
+
+ public AidlContextMenuButtonWrapper getLeftButton() {
+ return leftButton;
+ }
+
+ public AidlContextMenuButtonWrapper getRightButton() {
+ return rightButton;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getAppPackage() {
+ return appPackage;
+ }
+
+ public String getLayerId() {
+ return layerId;
+ }
+
+ public long getCallbackId() {
+ return callbackId;
+ }
+
+ public void setCallbackId(long callbackId) {
+ this.callbackId = callbackId;
+ }
+
+ public List<String> getPointsIds() {
+ return pointsIds;
+ }
+} \ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/aidl/AidlMapLayerWrapper.java b/OsmAnd/src/net/osmand/aidl/AidlMapLayerWrapper.java
new file mode 100644
index 0000000000..3737736bd8
--- /dev/null
+++ b/OsmAnd/src/net/osmand/aidl/AidlMapLayerWrapper.java
@@ -0,0 +1,153 @@
+package net.osmand.aidl;
+
+import net.osmand.aidl.maplayer.AMapLayer;
+import net.osmand.aidl.maplayer.point.AMapPoint;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class AidlMapLayerWrapper {
+
+ private String id;
+ private String name;
+ private float zOrder;
+ private Map<String, AidlMapPointWrapper> points = new ConcurrentHashMap<>();
+
+ private boolean imagePoints;
+ private int circlePointMinZoom;
+ private int circlePointMaxZoom;
+ private int smallPointMinZoom;
+ private int smallPointMaxZoom;
+ private int bigPointMinZoom;
+ private int bigPointMaxZoom;
+
+ public AidlMapLayerWrapper(AMapLayer aMapLayer) {
+ id = aMapLayer.getId();
+ name = aMapLayer.getName();
+ zOrder = aMapLayer.getZOrder();
+ imagePoints = aMapLayer.isImagePoints();
+ circlePointMinZoom = aMapLayer.getCirclePointMinZoom();
+ circlePointMaxZoom = aMapLayer.getCirclePointMaxZoom();
+ smallPointMinZoom = aMapLayer.getSmallPointMinZoom();
+ smallPointMaxZoom = aMapLayer.getSmallPointMaxZoom();
+ bigPointMinZoom = aMapLayer.getBigPointMinZoom();
+ bigPointMaxZoom = aMapLayer.getBigPointMaxZoom();
+
+ List<AMapPoint> pointList = aMapLayer.getPoints();
+ if (pointList != null) {
+ for (AMapPoint p : pointList) {
+ this.points.put(p.getId(), new AidlMapPointWrapper(p));
+ }
+ }
+ }
+
+ public AidlMapLayerWrapper(net.osmand.aidlapi.maplayer.AMapLayer aMapLayer) {
+ id = aMapLayer.getId();
+ name = aMapLayer.getName();
+ zOrder = aMapLayer.getZOrder();
+ imagePoints = aMapLayer.isImagePoints();
+ circlePointMinZoom = aMapLayer.getCirclePointMinZoom();
+ circlePointMaxZoom = aMapLayer.getCirclePointMaxZoom();
+ smallPointMinZoom = aMapLayer.getSmallPointMinZoom();
+ smallPointMaxZoom = aMapLayer.getSmallPointMaxZoom();
+ bigPointMinZoom = aMapLayer.getBigPointMinZoom();
+ bigPointMaxZoom = aMapLayer.getBigPointMaxZoom();
+
+ List<net.osmand.aidlapi.maplayer.point.AMapPoint> pointList = aMapLayer.getPoints();
+ if (pointList != null) {
+ for (net.osmand.aidlapi.maplayer.point.AMapPoint p : pointList) {
+ this.points.put(p.getId(), new AidlMapPointWrapper(p));
+ }
+ }
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public float getZOrder() {
+ return zOrder;
+ }
+
+ public List<AidlMapPointWrapper> getPoints() {
+ return new ArrayList<>(points.values());
+ }
+
+ public AidlMapPointWrapper getPoint(String pointId) {
+ return points.get(pointId);
+ }
+
+ public boolean hasPoint(String pointId) {
+ return points.containsKey(pointId);
+ }
+
+ public void putPoint(AidlMapPointWrapper point) {
+ points.put(point.getId(), point);
+ }
+
+ public void removePoint(String pointId) {
+ points.remove(pointId);
+ }
+
+ public boolean isImagePoints() {
+ return imagePoints;
+ }
+
+ public void setImagePoints(boolean imagePoints) {
+ this.imagePoints = imagePoints;
+ }
+
+ public void copyZoomBounds(AidlMapLayerWrapper layer) {
+ circlePointMinZoom = layer.circlePointMinZoom;
+ circlePointMaxZoom = layer.circlePointMaxZoom;
+ smallPointMinZoom = layer.smallPointMinZoom;
+ smallPointMaxZoom = layer.smallPointMaxZoom;
+ bigPointMinZoom = layer.bigPointMinZoom;
+ bigPointMaxZoom = layer.bigPointMaxZoom;
+ }
+
+ public void setCirclePointZoomBounds(int min, int max) {
+ circlePointMinZoom = min;
+ circlePointMaxZoom = max;
+ }
+
+ public void setSmallPointZoomBounds(int min, int max) {
+ smallPointMinZoom = min;
+ smallPointMaxZoom = max;
+ }
+
+ public void setBigPointZoomBounds(int min, int max) {
+ bigPointMinZoom = min;
+ bigPointMaxZoom = max;
+ }
+
+ public int getCirclePointMinZoom() {
+ return circlePointMinZoom;
+ }
+
+ public int getCirclePointMaxZoom() {
+ return circlePointMaxZoom;
+ }
+
+ public int getSmallPointMinZoom() {
+ return smallPointMinZoom;
+ }
+
+ public int getSmallPointMaxZoom() {
+ return smallPointMaxZoom;
+ }
+
+ public int getBigPointMinZoom() {
+ return bigPointMinZoom;
+ }
+
+ public int getBigPointMaxZoom() {
+ return bigPointMaxZoom;
+ }
+} \ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/aidl/AidlMapPointWrapper.java b/OsmAnd/src/net/osmand/aidl/AidlMapPointWrapper.java
new file mode 100644
index 0000000000..fdaeb0a082
--- /dev/null
+++ b/OsmAnd/src/net/osmand/aidl/AidlMapPointWrapper.java
@@ -0,0 +1,85 @@
+package net.osmand.aidl;
+
+import net.osmand.aidl.map.ALatLon;
+import net.osmand.aidl.maplayer.point.AMapPoint;
+import net.osmand.data.LatLon;
+
+import java.util.List;
+import java.util.Map;
+
+public class AidlMapPointWrapper {
+
+ private String id;
+ private String shortName;
+ private String fullName;
+ private String typeName;
+ private String layerId;
+ private int color;
+ private LatLon location;
+ private List<String> details;
+ private Map<String, String> params;
+
+ public AidlMapPointWrapper(AMapPoint aMapPoint) {
+ id = aMapPoint.getId();
+ shortName = aMapPoint.getShortName();
+ fullName = aMapPoint.getFullName();
+ typeName = aMapPoint.getTypeName();
+ layerId = aMapPoint.getLayerId();
+ color = aMapPoint.getColor();
+
+ ALatLon aLatLon = aMapPoint.getLocation();
+ location = new LatLon(aLatLon.getLatitude(), aLatLon.getLongitude());
+ details = aMapPoint.getDetails();
+ params = aMapPoint.getParams();
+ }
+
+ public AidlMapPointWrapper(net.osmand.aidlapi.maplayer.point.AMapPoint aMapPoint) {
+ id = aMapPoint.getId();
+ shortName = aMapPoint.getShortName();
+ fullName = aMapPoint.getFullName();
+ typeName = aMapPoint.getTypeName();
+ layerId = aMapPoint.getLayerId();
+ color = aMapPoint.getColor();
+
+ net.osmand.aidlapi.map.ALatLon aLatLon = aMapPoint.getLocation();
+ location = new LatLon(aLatLon.getLatitude(), aLatLon.getLongitude());
+ details = aMapPoint.getDetails();
+ params = aMapPoint.getParams();
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getShortName() {
+ return shortName;
+ }
+
+ public String getFullName() {
+ return fullName;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public String getLayerId() {
+ return layerId;
+ }
+
+ public int getColor() {
+ return color;
+ }
+
+ public LatLon getLocation() {
+ return location;
+ }
+
+ public List<String> getDetails() {
+ return details;
+ }
+
+ public Map<String, String> getParams() {
+ return params;
+ }
+} \ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/aidl/AidlMapWidgetWrapper.java b/OsmAnd/src/net/osmand/aidl/AidlMapWidgetWrapper.java
new file mode 100644
index 0000000000..b60d2a4416
--- /dev/null
+++ b/OsmAnd/src/net/osmand/aidl/AidlMapWidgetWrapper.java
@@ -0,0 +1,78 @@
+package net.osmand.aidl;
+
+import android.content.Intent;
+
+import net.osmand.aidl.mapwidget.AMapWidget;
+
+public class AidlMapWidgetWrapper {
+
+ private String id;
+ private String menuIconName;
+ private String menuTitle;
+ private String lightIconName;
+ private String darkIconName;
+ private String text;
+ private String description;
+ private int order;
+ private Intent intentOnClick;
+
+ public AidlMapWidgetWrapper(AMapWidget aMapWidget) {
+ this.id = aMapWidget.getId();
+ this.menuIconName = aMapWidget.getMenuIconName();
+ this.menuTitle = aMapWidget.getMenuTitle();
+ this.lightIconName = aMapWidget.getLightIconName();
+ this.darkIconName = aMapWidget.getDarkIconName();
+ this.text = aMapWidget.getText();
+ this.description = aMapWidget.getDescription();
+ this.order = aMapWidget.getOrder();
+ this.intentOnClick = aMapWidget.getIntentOnClick();
+ }
+
+ public AidlMapWidgetWrapper(net.osmand.aidlapi.mapwidget.AMapWidget aMapWidget) {
+ this.id = aMapWidget.getId();
+ this.menuIconName = aMapWidget.getMenuIconName();
+ this.menuTitle = aMapWidget.getMenuTitle();
+ this.lightIconName = aMapWidget.getLightIconName();
+ this.darkIconName = aMapWidget.getDarkIconName();
+ this.text = aMapWidget.getText();
+ this.description = aMapWidget.getDescription();
+ this.order = aMapWidget.getOrder();
+ this.intentOnClick = aMapWidget.getIntentOnClick();
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getMenuIconName() {
+ return menuIconName;
+ }
+
+ public String getMenuTitle() {
+ return menuTitle;
+ }
+
+ public String getLightIconName() {
+ return lightIconName;
+ }
+
+ public String getDarkIconName() {
+ return darkIconName;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public int getOrder() {
+ return order;
+ }
+
+ public Intent getIntentOnClick() {
+ return intentOnClick;
+ }
+} \ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/aidl/AidlSearchResultWrapper.java b/OsmAnd/src/net/osmand/aidl/AidlSearchResultWrapper.java
new file mode 100644
index 0000000000..56a4d0bd1c
--- /dev/null
+++ b/OsmAnd/src/net/osmand/aidl/AidlSearchResultWrapper.java
@@ -0,0 +1,52 @@
+package net.osmand.aidl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AidlSearchResultWrapper {
+
+ private double latitude;
+ private double longitude;
+
+ private String localName;
+ private String localTypeName;
+
+ private String alternateName;
+ private List<String> otherNames = new ArrayList<>();
+
+ public AidlSearchResultWrapper(double latitude, double longitude, String localName, String localTypeName,
+ String alternateName, List<String> otherNames) {
+ this.latitude = latitude;
+ this.longitude = longitude;
+ this.localName = localName;
+ this.localTypeName = localTypeName;
+ this.alternateName = alternateName;
+ if (otherNames != null) {
+ this.otherNames.addAll(otherNames);
+ }
+ }
+
+ public double getLatitude() {
+ return latitude;
+ }
+
+ public double getLongitude() {
+ return longitude;
+ }
+
+ public String getLocalName() {
+ return localName;
+ }
+
+ public String getLocalTypeName() {
+ return localTypeName;
+ }
+
+ public String getAlternateName() {
+ return alternateName;
+ }
+
+ public List<String> getOtherNames() {
+ return otherNames;
+ }
+} \ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java b/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java
index 08caab5c50..240bf76580 100644
--- a/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java
+++ b/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java
@@ -17,7 +17,6 @@ import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
-import android.os.RemoteException;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;
@@ -30,27 +29,11 @@ import net.osmand.GPXUtilities.GPXFile;
import net.osmand.GPXUtilities.GPXTrackAnalysis;
import net.osmand.IndexConstants;
import net.osmand.PlatformUtil;
-import net.osmand.aidl.contextmenu.ContextMenuButtonsParams;
-import net.osmand.aidl.copyfile.CopyFileParams;
-import net.osmand.aidl.customization.CustomizationInfoParams;
-import net.osmand.aidl.favorite.AFavorite;
-import net.osmand.aidl.favorite.group.AFavoriteGroup;
-import net.osmand.aidl.gpx.AGpxBitmap;
import net.osmand.aidl.gpx.AGpxFile;
import net.osmand.aidl.gpx.AGpxFileDetails;
import net.osmand.aidl.gpx.ASelectedGpxFile;
-import net.osmand.aidl.gpx.GpxColorParams;
-import net.osmand.aidl.gpx.StartGpxRecordingParams;
-import net.osmand.aidl.gpx.StopGpxRecordingParams;
-import net.osmand.aidl.maplayer.AMapLayer;
-import net.osmand.aidl.maplayer.point.AMapPoint;
-import net.osmand.aidl.mapmarker.AMapMarker;
-import net.osmand.aidl.mapwidget.AMapWidget;
-import net.osmand.aidl.navdrawer.NavDrawerFooterParams;
import net.osmand.aidl.navigation.ADirectionInfo;
import net.osmand.aidl.navigation.OnVoiceNavigationParams;
-import net.osmand.aidl.plugins.PluginParams;
-import net.osmand.aidl.search.SearchResult;
import net.osmand.aidl.tiles.ASqliteDbFile;
import net.osmand.data.FavouritePoint;
import net.osmand.data.LatLon;
@@ -66,6 +49,7 @@ import net.osmand.plus.GpxSelectionHelper;
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
import net.osmand.plus.MapMarkersHelper;
import net.osmand.plus.MapMarkersHelper.MapMarker;
+import net.osmand.plus.OsmAndAppCustomization;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
@@ -117,21 +101,24 @@ import java.util.Map;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;
-import static net.osmand.aidl.OsmandAidlConstants.COPY_FILE_IO_ERROR;
-import static net.osmand.aidl.OsmandAidlConstants.COPY_FILE_MAX_LOCK_TIME_MS;
-import static net.osmand.aidl.OsmandAidlConstants.COPY_FILE_PARAMS_ERROR;
-import static net.osmand.aidl.OsmandAidlConstants.COPY_FILE_PART_SIZE_LIMIT;
-import static net.osmand.aidl.OsmandAidlConstants.COPY_FILE_PART_SIZE_LIMIT_ERROR;
-import static net.osmand.aidl.OsmandAidlConstants.COPY_FILE_UNSUPPORTED_FILE_TYPE_ERROR;
-import static net.osmand.aidl.OsmandAidlConstants.COPY_FILE_WRITE_LOCK_ERROR;
-import static net.osmand.aidl.OsmandAidlConstants.OK_RESPONSE;
-import static net.osmand.aidl.OsmandAidlService.KEY_ON_CONTEXT_MENU_BUTTONS_CLICK;
-import static net.osmand.aidl.OsmandAidlService.KEY_ON_NAV_DATA_UPDATE;
-import static net.osmand.aidl.OsmandAidlService.KEY_ON_VOICE_MESSAGE;
+import static net.osmand.aidlapi.OsmandAidlConstants.COPY_FILE_IO_ERROR;
+import static net.osmand.aidlapi.OsmandAidlConstants.COPY_FILE_MAX_LOCK_TIME_MS;
+import static net.osmand.aidlapi.OsmandAidlConstants.COPY_FILE_PARAMS_ERROR;
+import static net.osmand.aidlapi.OsmandAidlConstants.COPY_FILE_PART_SIZE_LIMIT;
+import static net.osmand.aidlapi.OsmandAidlConstants.COPY_FILE_PART_SIZE_LIMIT_ERROR;
+import static net.osmand.aidlapi.OsmandAidlConstants.COPY_FILE_UNSUPPORTED_FILE_TYPE_ERROR;
+import static net.osmand.aidlapi.OsmandAidlConstants.COPY_FILE_WRITE_LOCK_ERROR;
+import static net.osmand.aidlapi.OsmandAidlConstants.OK_RESPONSE;
public class OsmandAidlApi {
AidlCallbackListener aidlCallbackListener = null;
+ AidlCallbackListenerV2 aidlCallbackListenerV2 = null;
+
+ public static final int KEY_ON_UPDATE = 1;
+ public static final int KEY_ON_NAV_DATA_UPDATE = 2;
+ public static final int KEY_ON_CONTEXT_MENU_BUTTONS_CLICK = 4;
+ public static final int KEY_ON_VOICE_MESSAGE = 5;
private static final Log LOG = PlatformUtil.getLog(OsmandAidlApi.class);
private static final String AIDL_REFRESH_MAP = "aidl_refresh_map";
@@ -187,7 +174,7 @@ public class OsmandAidlApi {
private static final ApplicationMode DEFAULT_PROFILE = ApplicationMode.CAR;
- private static final ApplicationMode[] VALID_PROFILES = new ApplicationMode[]{
+ private static final ApplicationMode[] VALID_PROFILES = new ApplicationMode[] {
ApplicationMode.CAR,
ApplicationMode.BICYCLE,
ApplicationMode.PEDESTRIAN
@@ -196,14 +183,14 @@ public class OsmandAidlApi {
private static final int DEFAULT_ZOOM = 15;
private OsmandApplication app;
- private Map<String, AMapWidget> widgets = new ConcurrentHashMap<>();
+ private Map<String, AidlMapWidgetWrapper> widgets = new ConcurrentHashMap<>();
private Map<String, TextInfoWidget> widgetControls = new ConcurrentHashMap<>();
- private Map<String, AMapLayer> layers = new ConcurrentHashMap<>();
+ private Map<String, AidlMapLayerWrapper> layers = new ConcurrentHashMap<>();
private Map<String, OsmandMapLayer> mapLayers = new ConcurrentHashMap<>();
private Map<String, BroadcastReceiver> receivers = new TreeMap<>();
private Map<String, ConnectedApp> connectedApps = new ConcurrentHashMap<>();
- private Map<String, ContextMenuButtonsParams> contextMenuButtonsParams = new ConcurrentHashMap<>();
- private Map<Long, VoiceRouter.VoiceMessageListener> voiceRouterMessageCallbacks= new ConcurrentHashMap<>();
+ private Map<String, AidlContextMenuButtonsWrapper> contextMenuButtonsParams = new ConcurrentHashMap<>();
+ private Map<Long, VoiceRouter.VoiceMessageListener> voiceRouterMessageCallbacks = new ConcurrentHashMap<>();
private AMapPointUpdateListener aMapPointUpdateListener;
@@ -247,7 +234,7 @@ public class OsmandAidlApi {
aMapPointUpdateListener = null;
mapActivityActive = false;
for (BroadcastReceiver b : receivers.values()) {
- if(b == null) {
+ if (b == null) {
continue;
}
try {
@@ -264,7 +251,7 @@ public class OsmandAidlApi {
}
private void initOsmandTelegram() {
- String[] packages = new String[]{"net.osmand.telegram", "net.osmand.telegram.debug"};
+ String[] packages = new String[] {"net.osmand.telegram", "net.osmand.telegram.debug"};
Intent intent = new Intent("net.osmand.telegram.InitApp");
for (String pack : packages) {
intent.setComponent(new ComponentName(pack, "net.osmand.telegram.InitAppBroadcastReceiver"));
@@ -335,7 +322,7 @@ public class OsmandAidlApi {
MapActivity mapActivity = mapActivityRef.get();
String widgetId = intent.getStringExtra(AIDL_OBJECT_ID);
if (mapActivity != null && widgetId != null) {
- AMapWidget widget = widgets.get(widgetId);
+ AidlMapWidgetWrapper widget = widgets.get(widgetId);
if (widget != null) {
MapInfoLayer layer = mapActivity.getMapLayers().getMapInfoLayer();
if (layer != null) {
@@ -365,7 +352,7 @@ public class OsmandAidlApi {
MapActivity mapActivity = mapActivityRef.get();
String ContextMenuButtonsParamsId = intent.getStringExtra(AIDL_OBJECT_ID);
if (mapActivity != null && ContextMenuButtonsParamsId != null) {
- ContextMenuButtonsParams buttonsParams = contextMenuButtonsParams.get(ContextMenuButtonsParamsId);
+ AidlContextMenuButtonsWrapper buttonsParams = contextMenuButtonsParams.get(ContextMenuButtonsParamsId);
if (buttonsParams != null) {
MapContextMenu mapContextMenu = mapActivity.getContextMenu();
if (mapContextMenu.isVisible()) {
@@ -378,8 +365,7 @@ public class OsmandAidlApi {
registerReceiver(addContextMenuButtonsParamsReceiver, mapActivity, AIDL_ADD_CONTEXT_MENU_BUTTONS);
}
- private void registerReceiver(BroadcastReceiver rec, MapActivity ma,
- String filter) {
+ private void registerReceiver(BroadcastReceiver rec, MapActivity ma, String filter) {
receivers.put(filter, rec);
ma.registerReceiver(rec, new IntentFilter(filter));
}
@@ -406,7 +392,7 @@ public class OsmandAidlApi {
}
public void registerWidgetControls(MapActivity mapActivity) {
- for (AMapWidget widget : widgets.values()) {
+ for (AidlMapWidgetWrapper widget : widgets.values()) {
MapInfoLayer layer = mapActivity.getMapLayers().getMapInfoLayer();
if (layer != null) {
TextInfoWidget control = createWidgetControl(mapActivity, widget.getId());
@@ -430,7 +416,7 @@ public class OsmandAidlApi {
MapActivity mapActivity = mapActivityRef.get();
String layerId = intent.getStringExtra(AIDL_OBJECT_ID);
if (mapActivity != null && layerId != null) {
- AMapLayer layer = layers.get(layerId);
+ AidlMapLayerWrapper layer = layers.get(layerId);
if (layer != null) {
OsmandMapLayer mapLayer = mapLayers.get(layerId);
if (mapLayer != null) {
@@ -851,7 +837,7 @@ public class OsmandAidlApi {
}
public void registerMapLayers(MapActivity mapActivity) {
- for (AMapLayer layer : layers.values()) {
+ for (AidlMapLayerWrapper layer : layers.values()) {
OsmandMapLayer mapLayer = mapLayers.get(layer.getId());
if (mapLayer != null) {
mapActivity.getMapView().removeLayer(mapLayer);
@@ -873,7 +859,7 @@ public class OsmandAidlApi {
@Override
public boolean updateInfo(DrawSettings drawSettings) {
- AMapWidget widget = widgets.get(widgetId);
+ AidlMapWidgetWrapper widget = widgets.get(widgetId);
if (widget != null) {
String txt = widget.getText();
String subtxt = widget.getDescription();
@@ -896,7 +882,7 @@ public class OsmandAidlApi {
control.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- AMapWidget widget = widgets.get(widgetId);
+ AidlMapWidgetWrapper widget = widgets.get(widgetId);
if (widget != null && widget.getIntentOnClick() != null) {
app.startActivity(widget.getIntentOnClick());
}
@@ -910,154 +896,122 @@ public class OsmandAidlApi {
return true;
}
- boolean addFavoriteGroup(AFavoriteGroup favoriteGroup) {
- if (favoriteGroup != null) {
- FavouritesDbHelper favoritesHelper = app.getFavorites();
- List<FavouritesDbHelper.FavoriteGroup> groups = favoritesHelper.getFavoriteGroups();
- for (FavouritesDbHelper.FavoriteGroup g : groups) {
- if (g.name.equals(favoriteGroup.getName())) {
- return false;
- }
- }
- int color = 0;
- if (!Algorithms.isEmpty(favoriteGroup.getColor())) {
- color = ColorDialogs.getColorByTag(favoriteGroup.getColor());
+ boolean addFavoriteGroup(String name, String colorTag, boolean visible) {
+ FavouritesDbHelper favoritesHelper = app.getFavorites();
+ List<FavouritesDbHelper.FavoriteGroup> groups = favoritesHelper.getFavoriteGroups();
+ for (FavouritesDbHelper.FavoriteGroup g : groups) {
+ if (g.name.equals(name)) {
+ return false;
}
- favoritesHelper.addEmptyCategory(favoriteGroup.getName(), color, favoriteGroup.isVisible());
- return true;
- } else {
- return false;
}
+ int color = 0;
+ if (!Algorithms.isEmpty(colorTag)) {
+ color = ColorDialogs.getColorByTag(colorTag);
+ }
+ favoritesHelper.addEmptyCategory(name, color, visible);
+ return true;
}
- boolean removeFavoriteGroup(AFavoriteGroup favoriteGroup) {
- if (favoriteGroup != null) {
- FavouritesDbHelper favoritesHelper = app.getFavorites();
- List<FavouritesDbHelper.FavoriteGroup> groups = favoritesHelper.getFavoriteGroups();
- for (FavouritesDbHelper.FavoriteGroup g : groups) {
- if (g.name.equals(favoriteGroup.getName())) {
- favoritesHelper.deleteGroup(g);
- return true;
- }
+ boolean removeFavoriteGroup(String name) {
+ FavouritesDbHelper favoritesHelper = app.getFavorites();
+ List<FavouritesDbHelper.FavoriteGroup> groups = favoritesHelper.getFavoriteGroups();
+ for (FavouritesDbHelper.FavoriteGroup g : groups) {
+ if (g.name.equals(name)) {
+ favoritesHelper.deleteGroup(g);
+ return true;
}
- return false;
- } else {
- return false;
}
+ return false;
}
- boolean updateFavoriteGroup(AFavoriteGroup gPrev, AFavoriteGroup gNew) {
- if (gPrev != null && gNew != null) {
- FavouritesDbHelper favoritesHelper = app.getFavorites();
- List<FavouritesDbHelper.FavoriteGroup> groups = favoritesHelper.getFavoriteGroups();
- for (FavouritesDbHelper.FavoriteGroup g : groups) {
- if (g.name.equals(gPrev.getName())) {
- int color = 0;
- if (!Algorithms.isEmpty(gNew.getColor())) {
- color = ColorDialogs.getColorByTag(gNew.getColor());
- }
- favoritesHelper.editFavouriteGroup(g, gNew.getName(), color, gNew.isVisible());
- return true;
+ boolean updateFavoriteGroup(String prevGroupName, String newGroupName, String colorTag, boolean visible) {
+ FavouritesDbHelper favoritesHelper = app.getFavorites();
+ List<FavouritesDbHelper.FavoriteGroup> groups = favoritesHelper.getFavoriteGroups();
+ for (FavouritesDbHelper.FavoriteGroup g : groups) {
+ if (g.name.equals(prevGroupName)) {
+ int color = 0;
+ if (!Algorithms.isEmpty(colorTag)) {
+ color = ColorDialogs.getColorByTag(colorTag);
}
+ favoritesHelper.editFavouriteGroup(g, newGroupName, color, visible);
+ return true;
}
- return false;
- } else {
- return false;
}
+ return false;
}
- boolean addFavorite(AFavorite favorite) {
- if (favorite != null) {
- FavouritesDbHelper favoritesHelper = app.getFavorites();
- FavouritePoint point = new FavouritePoint(favorite.getLat(), favorite.getLon(), favorite.getName(), favorite.getCategory());
- point.setDescription(favorite.getDescription());
- int color = 0;
- if (!Algorithms.isEmpty(favorite.getColor())) {
- color = ColorDialogs.getColorByTag(favorite.getColor());
- }
- point.setColor(color);
- point.setVisible(favorite.isVisible());
- favoritesHelper.addFavourite(point);
- refreshMap();
- return true;
- } else {
- return false;
+ boolean addFavorite(double latitude, double longitude, String name, String category, String description, String colorTag, boolean visible) {
+ FavouritesDbHelper favoritesHelper = app.getFavorites();
+ FavouritePoint point = new FavouritePoint(latitude, longitude, name, category);
+ point.setDescription(description);
+ int color = 0;
+ if (!Algorithms.isEmpty(colorTag)) {
+ color = ColorDialogs.getColorByTag(colorTag);
}
+ point.setColor(color);
+ point.setVisible(visible);
+ favoritesHelper.addFavourite(point);
+ refreshMap();
+ return true;
}
- boolean removeFavorite(AFavorite favorite) {
- if (favorite != null) {
- FavouritesDbHelper favoritesHelper = app.getFavorites();
- List<FavouritePoint> favorites = favoritesHelper.getFavouritePoints();
- for (FavouritePoint f : favorites) {
- if (f.getName().equals(favorite.getName()) && f.getCategory().equals(favorite.getCategory()) &&
- f.getLatitude() == favorite.getLat() && f.getLongitude() == favorite.getLon()) {
- favoritesHelper.deleteFavourite(f);
- refreshMap();
- return true;
- }
+ boolean removeFavorite(String name, String category, double latitude, double longitude) {
+ FavouritesDbHelper favoritesHelper = app.getFavorites();
+ List<FavouritePoint> favorites = favoritesHelper.getFavouritePoints();
+ for (FavouritePoint f : favorites) {
+ if (f.getName().equals(name) && f.getCategory().equals(category) &&
+ f.getLatitude() == latitude && f.getLongitude() == longitude) {
+ favoritesHelper.deleteFavourite(f);
+ refreshMap();
+ return true;
}
- return false;
- } else {
- return false;
}
+ return false;
}
- boolean updateFavorite(AFavorite fPrev, AFavorite fNew) {
- if (fPrev != null && fNew != null) {
- FavouritesDbHelper favoritesHelper = app.getFavorites();
- List<FavouritePoint> favorites = favoritesHelper.getFavouritePoints();
- for (FavouritePoint f : favorites) {
- if (f.getName().equals(fPrev.getName()) && f.getCategory().equals(fPrev.getCategory()) &&
- f.getLatitude() == fPrev.getLat() && f.getLongitude() == fPrev.getLon()) {
- if (fNew.getLat() != f.getLatitude() || fNew.getLon() != f.getLongitude()) {
- favoritesHelper.editFavourite(f, fNew.getLat(), fNew.getLon());
- }
- if (!fNew.getName().equals(f.getName()) || !fNew.getDescription().equals(f.getDescription()) ||
- !fNew.getCategory().equals(f.getCategory())) {
- favoritesHelper.editFavouriteName(f, fNew.getName(), fNew.getCategory(), fNew.getDescription());
- }
- refreshMap();
- return true;
+ boolean updateFavorite(String prevName, String prevCategory, double prevLat, double prevLon, String newName, String newCategory, String newDescription, double newLat, double newLon) {
+ FavouritesDbHelper favoritesHelper = app.getFavorites();
+ List<FavouritePoint> favorites = favoritesHelper.getFavouritePoints();
+ for (FavouritePoint f : favorites) {
+ if (f.getName().equals(prevName) && f.getCategory().equals(prevCategory) &&
+ f.getLatitude() == prevLat && f.getLongitude() == prevLon) {
+ if (newLat != f.getLatitude() || newLon != f.getLongitude()) {
+ favoritesHelper.editFavourite(f, newLat, newLon);
+ }
+ if (!newName.equals(f.getName()) || !newDescription.equals(f.getDescription()) ||
+ !newCategory.equals(f.getCategory())) {
+ favoritesHelper.editFavouriteName(f, newName, newCategory, newDescription);
}
+ refreshMap();
+ return true;
}
- return false;
- } else {
- return false;
}
+ return false;
}
- boolean addMapMarker(AMapMarker marker) {
- if (marker != null) {
- PointDescription pd = new PointDescription(
- PointDescription.POINT_TYPE_MAP_MARKER, marker.getName() != null ? marker.getName() : "");
- MapMarkersHelper markersHelper = app.getMapMarkersHelper();
- markersHelper.addMapMarker(new LatLon(marker.getLatLon().getLatitude(), marker.getLatLon().getLongitude()), pd);
- refreshMap();
- return true;
- } else {
- return false;
- }
+ boolean addMapMarker(String name, double latitude, double longitude) {
+ PointDescription pd = new PointDescription(
+ PointDescription.POINT_TYPE_MAP_MARKER, name != null ? name : "");
+ MapMarkersHelper markersHelper = app.getMapMarkersHelper();
+ markersHelper.addMapMarker(new LatLon(latitude, longitude), pd);
+ refreshMap();
+ return true;
}
- boolean removeMapMarker(AMapMarker marker, boolean ignoreCoordinates) {
- if (marker != null) {
- LatLon latLon = new LatLon(marker.getLatLon().getLatitude(), marker.getLatLon().getLongitude());
- MapMarkersHelper markersHelper = app.getMapMarkersHelper();
- List<MapMarker> mapMarkers = markersHelper.getMapMarkers();
- for (MapMarker m : mapMarkers) {
- if (m.getOnlyName().equals(marker.getName())) {
- if (ignoreCoordinates || latLon.equals(new LatLon(m.getLatitude(), m.getLongitude()))) {
- markersHelper.moveMapMarkerToHistory(m);
- refreshMap();
- return true;
- }
+ boolean removeMapMarker(String name, double latitude, double longitude, boolean ignoreCoordinates) {
+ LatLon latLon = new LatLon(latitude, longitude);
+ MapMarkersHelper markersHelper = app.getMapMarkersHelper();
+ List<MapMarker> mapMarkers = markersHelper.getMapMarkers();
+ for (MapMarker m : mapMarkers) {
+ if (m.getOnlyName().equals(name)) {
+ if (ignoreCoordinates || latLon.equals(new LatLon(m.getLatitude(), m.getLongitude()))) {
+ markersHelper.moveMapMarkerToHistory(m);
+ refreshMap();
+ return true;
}
}
- return false;
- } else {
- return false;
}
+ return false;
}
boolean removeAllActiveMapMarkers() {
@@ -1075,34 +1029,30 @@ public class OsmandAidlApi {
}
- boolean updateMapMarker(AMapMarker markerPrev, AMapMarker markerNew, boolean ignoreCoordinates) {
- if (markerPrev != null && markerNew != null) {
- LatLon latLon = new LatLon(markerPrev.getLatLon().getLatitude(), markerPrev.getLatLon().getLongitude());
- LatLon latLonNew = new LatLon(markerNew.getLatLon().getLatitude(), markerNew.getLatLon().getLongitude());
- MapMarkersHelper markersHelper = app.getMapMarkersHelper();
- List<MapMarker> mapMarkers = markersHelper.getMapMarkers();
- for (MapMarker m : mapMarkers) {
- if (m.getOnlyName().equals(markerPrev.getName())) {
- if (ignoreCoordinates || latLon.equals(new LatLon(m.getLatitude(), m.getLongitude()))) {
- PointDescription pd = new PointDescription(
- PointDescription.POINT_TYPE_MAP_MARKER, markerNew.getName() != null ? markerNew.getName() : "");
- MapMarker marker = new MapMarker(m.point, pd, m.colorIndex, m.selected, m.index);
- marker.id = m.id;
- marker.creationDate = m.creationDate;
- marker.visitedDate = m.visitedDate;
- markersHelper.moveMapMarker(marker, latLonNew);
- refreshMap();
- return true;
- }
+ boolean updateMapMarker(String prevName, LatLon prevLatLon, String newName, LatLon newLatLon, boolean ignoreCoordinates) {
+ LatLon latLon = new LatLon(prevLatLon.getLatitude(), prevLatLon.getLongitude());
+ LatLon latLonNew = new LatLon(newLatLon.getLatitude(), newLatLon.getLongitude());
+ MapMarkersHelper markersHelper = app.getMapMarkersHelper();
+ List<MapMarker> mapMarkers = markersHelper.getMapMarkers();
+ for (MapMarker m : mapMarkers) {
+ if (m.getOnlyName().equals(prevName)) {
+ if (ignoreCoordinates || latLon.equals(new LatLon(m.getLatitude(), m.getLongitude()))) {
+ PointDescription pd = new PointDescription(
+ PointDescription.POINT_TYPE_MAP_MARKER, newName != null ? newName : "");
+ MapMarker marker = new MapMarker(m.point, pd, m.colorIndex, m.selected, m.index);
+ marker.id = m.id;
+ marker.creationDate = m.creationDate;
+ marker.visitedDate = m.visitedDate;
+ markersHelper.moveMapMarker(marker, latLonNew);
+ refreshMap();
+ return true;
}
}
- return false;
- } else {
- return false;
}
+ return false;
}
- boolean addMapWidget(AMapWidget widget) {
+ boolean addMapWidget(AidlMapWidgetWrapper widget) {
if (widget != null) {
if (widgets.containsKey(widget.getId())) {
updateMapWidget(widget);
@@ -1133,7 +1083,7 @@ public class OsmandAidlApi {
}
}
- boolean updateMapWidget(AMapWidget widget) {
+ boolean updateMapWidget(AidlMapWidgetWrapper widget) {
if (widget != null && widgets.containsKey(widget.getId())) {
widgets.put(widget.getId(), widget);
refreshMap();
@@ -1143,7 +1093,7 @@ public class OsmandAidlApi {
}
}
- boolean addMapLayer(AMapLayer layer) {
+ boolean addMapLayer(AidlMapLayerWrapper layer) {
if (layer != null) {
if (layers.containsKey(layer.getId())) {
updateMapLayer(layer);
@@ -1174,10 +1124,10 @@ public class OsmandAidlApi {
}
}
- boolean updateMapLayer(AMapLayer layer) {
+ boolean updateMapLayer(AidlMapLayerWrapper layer) {
if (layer != null && layers.containsKey(layer.getId())) {
- AMapLayer existingLayer = layers.get(layer.getId());
- for (AMapPoint point : layer.getPoints()) {
+ AidlMapLayerWrapper existingLayer = layers.get(layer.getId());
+ for (AidlMapPointWrapper point : layer.getPoints()) {
existingLayer.putPoint(point);
}
existingLayer.copyZoomBounds(layer);
@@ -1188,12 +1138,12 @@ public class OsmandAidlApi {
}
}
- boolean showMapPoint(String layerId, AMapPoint point) {
+ boolean showMapPoint(String layerId, AidlMapPointWrapper point) {
if (point != null) {
if (!TextUtils.isEmpty(layerId)) {
- AMapLayer layer = layers.get(layerId);
+ AidlMapLayerWrapper layer = layers.get(layerId);
if (layer != null) {
- AMapPoint p = layer.getPoint(point.getId());
+ AidlMapPointWrapper p = layer.getPoint(point.getId());
if (p != null) {
point = p;
}
@@ -1214,9 +1164,9 @@ public class OsmandAidlApi {
return false;
}
- boolean putMapPoint(String layerId, AMapPoint point) {
+ boolean putMapPoint(String layerId, AidlMapPointWrapper point) {
if (point != null) {
- AMapLayer layer = layers.get(layerId);
+ AidlMapLayerWrapper layer = layers.get(layerId);
if (layer != null) {
layer.putPoint(point);
refreshMap();
@@ -1226,9 +1176,9 @@ public class OsmandAidlApi {
return false;
}
- boolean updateMapPoint(String layerId, AMapPoint point, boolean updateOpenedMenuAndMap) {
+ boolean updateMapPoint(String layerId, AidlMapPointWrapper point, boolean updateOpenedMenuAndMap) {
if (point != null) {
- AMapLayer layer = layers.get(layerId);
+ AidlMapLayerWrapper layer = layers.get(layerId);
if (layer != null) {
layer.putPoint(point);
refreshMap();
@@ -1243,7 +1193,7 @@ public class OsmandAidlApi {
boolean removeMapPoint(String layerId, String pointId) {
if (pointId != null) {
- AMapLayer layer = layers.get(layerId);
+ AidlMapLayerWrapper layer = layers.get(layerId);
if (layer != null) {
layer.removePoint(pointId);
refreshMap();
@@ -1256,7 +1206,7 @@ public class OsmandAidlApi {
@SuppressLint("StaticFieldLeak")
private void finishGpxImport(boolean destinationExists, File destination, String color, boolean show) {
int col = ConfigureMapMenu.GpxAppearanceAdapter.parseTrackColor(
- app.getRendererRegistry().getCurrentSelectedRenderer(), color);
+ app.getRendererRegistry().getCurrentSelectedRenderer(), color);
if (!destinationExists) {
GpxDataItem gpxDataItem = new GpxDataItem(destination, col);
gpxDataItem.setApiImported(true);
@@ -1449,69 +1399,100 @@ public class OsmandAidlApi {
}
boolean getActiveGpx(List<ASelectedGpxFile> files) {
- if (files != null) {
- List<SelectedGpxFile> selectedGpxFiles = app.getSelectedGpxHelper().getSelectedGPXFiles();
- String gpxPath = app.getAppPath(IndexConstants.GPX_INDEX_DIR).getAbsolutePath();
- for (SelectedGpxFile selectedGpxFile : selectedGpxFiles) {
- GPXFile gpxFile = selectedGpxFile.getGpxFile();
- String path = gpxFile.path;
- if (!Algorithms.isEmpty(path)) {
- if (path.startsWith(gpxPath)) {
- path = path.substring(gpxPath.length() + 1);
- }
- long modifiedTime = gpxFile.modifiedTime;
- long fileSize = new File(gpxFile.path).length();
- files.add(new ASelectedGpxFile(path, modifiedTime, fileSize, createGpxFileDetails(selectedGpxFile.getTrackAnalysis())));
+ List<SelectedGpxFile> selectedGpxFiles = app.getSelectedGpxHelper().getSelectedGPXFiles();
+ String gpxPath = app.getAppPath(IndexConstants.GPX_INDEX_DIR).getAbsolutePath();
+ for (SelectedGpxFile selectedGpxFile : selectedGpxFiles) {
+ GPXFile gpxFile = selectedGpxFile.getGpxFile();
+ String path = gpxFile.path;
+ if (!Algorithms.isEmpty(path)) {
+ if (path.startsWith(gpxPath)) {
+ path = path.substring(gpxPath.length() + 1);
}
+ long modifiedTime = gpxFile.modifiedTime;
+ long fileSize = new File(gpxFile.path).length();
+ files.add(new ASelectedGpxFile(path, modifiedTime, fileSize, createGpxFileDetails(selectedGpxFile.getTrackAnalysis())));
}
- return true;
}
- return false;
+ return true;
+ }
+
+ boolean getActiveGpxV2(List<net.osmand.aidlapi.gpx.ASelectedGpxFile> files) {
+ List<SelectedGpxFile> selectedGpxFiles = app.getSelectedGpxHelper().getSelectedGPXFiles();
+ String gpxPath = app.getAppPath(IndexConstants.GPX_INDEX_DIR).getAbsolutePath();
+ for (SelectedGpxFile selectedGpxFile : selectedGpxFiles) {
+ GPXFile gpxFile = selectedGpxFile.getGpxFile();
+ String path = gpxFile.path;
+ if (!Algorithms.isEmpty(path)) {
+ if (path.startsWith(gpxPath)) {
+ path = path.substring(gpxPath.length() + 1);
+ }
+ long modifiedTime = gpxFile.modifiedTime;
+ long fileSize = new File(gpxFile.path).length();
+ files.add(new net.osmand.aidlapi.gpx.ASelectedGpxFile(path, modifiedTime, fileSize, createGpxFileDetailsV2(selectedGpxFile.getTrackAnalysis())));
+ }
+ }
+ return true;
+ }
+
+ boolean getImportedGpxV2(List<net.osmand.aidlapi.gpx.AGpxFile> files) {
+ List<GpxDataItem> gpxDataItems = app.getGpxDatabase().getItems();
+ for (GpxDataItem dataItem : gpxDataItems) {
+ File file = dataItem.getFile();
+ if (file.exists()) {
+ String fileName = file.getName();
+ boolean active = app.getSelectedGpxHelper().getSelectedFileByPath(file.getAbsolutePath()) != null;
+ long modifiedTime = dataItem.getFileLastModifiedTime();
+ long fileSize = file.length();
+ int color = dataItem.getColor();
+ String colorName = "";
+ if (color != 0) {
+ colorName = ConfigureMapMenu.GpxAppearanceAdapter.parseTrackColorName(app.getRendererRegistry().getCurrentSelectedRenderer(), color);
+ }
+ net.osmand.aidlapi.gpx.AGpxFileDetails details = null;
+ GPXTrackAnalysis analysis = dataItem.getAnalysis();
+ if (analysis != null) {
+ details = createGpxFileDetailsV2(analysis);
+ }
+ files.add(new net.osmand.aidlapi.gpx.AGpxFile(fileName, modifiedTime, fileSize, active, colorName, details));
+ }
+ }
+ return true;
}
boolean getImportedGpx(List<AGpxFile> files) {
- if (files != null) {
- List<GpxDataItem> gpxDataItems = app.getGpxDatabase().getItems();
- for (GpxDataItem dataItem : gpxDataItems) {
- //if (dataItem.isApiImported()) {
- File file = dataItem.getFile();
- if (file.exists()) {
- String fileName = file.getName();
- boolean active = app.getSelectedGpxHelper().getSelectedFileByPath(file.getAbsolutePath()) != null;
- long modifiedTime = dataItem.getFileLastModifiedTime();
- long fileSize = file.length();
- AGpxFileDetails details = null;
- GPXTrackAnalysis analysis = dataItem.getAnalysis();
- if (analysis != null) {
- details = createGpxFileDetails(analysis);
- }
- files.add(new AGpxFile(fileName, modifiedTime, fileSize, active, details));
- }
- //}
+ List<GpxDataItem> gpxDataItems = app.getGpxDatabase().getItems();
+ for (GpxDataItem dataItem : gpxDataItems) {
+ File file = dataItem.getFile();
+ if (file.exists()) {
+ String fileName = file.getName();
+ boolean active = app.getSelectedGpxHelper().getSelectedFileByPath(file.getAbsolutePath()) != null;
+ long modifiedTime = dataItem.getFileLastModifiedTime();
+ long fileSize = file.length();
+ AGpxFileDetails details = null;
+ GPXTrackAnalysis analysis = dataItem.getAnalysis();
+ if (analysis != null) {
+ details = createGpxFileDetails(analysis);
+ }
+ files.add(new AGpxFile(fileName, modifiedTime, fileSize, active, details));
}
- return true;
}
- return false;
+ return true;
}
- boolean getGpxColor(GpxColorParams params) {
- if (params != null) {
- List<GpxDataItem> gpxDataItems = app.getGpxDatabase().getItems();
- for (GpxDataItem dataItem : gpxDataItems) {
- File file = dataItem.getFile();
- if (file.exists()) {
- if (file.getName().equals(params.getFileName())) {
- int color = dataItem.getColor();
- if (color != 0) {
- String colorName = ConfigureMapMenu.GpxAppearanceAdapter.parseTrackColorName(app.getRendererRegistry().getCurrentSelectedRenderer(), color);
- params.setGpxColor(colorName);
- return true;
- }
+ String getGpxColor(String gpxFileName) {
+ List<GpxDataItem> gpxDataItems = app.getGpxDatabase().getItems();
+ for (GpxDataItem dataItem : gpxDataItems) {
+ File file = dataItem.getFile();
+ if (file.exists()) {
+ if (file.getName().equals(gpxFileName)) {
+ int color = dataItem.getColor();
+ if (color != 0) {
+ return ConfigureMapMenu.GpxAppearanceAdapter.parseTrackColorName(app.getRendererRegistry().getCurrentSelectedRenderer(), color);
}
}
}
}
- return false;
+ return null;
}
boolean removeGpx(String fileName) {
@@ -1530,27 +1511,45 @@ public class OsmandAidlApi {
}
private boolean getSqliteDbFiles(List<ASqliteDbFile> fileNames, boolean activeOnly) {
- if (fileNames != null) {
- File tilesPath = app.getAppPath(IndexConstants.TILES_INDEX_DIR);
- if (tilesPath.canRead()) {
- File[] files = tilesPath.listFiles();
- if (files != null) {
- String activeFile = app.getSettings().MAP_OVERLAY.get();
- for (File tileFile : files) {
- String fileName = tileFile.getName();
- String fileNameLC = fileName.toLowerCase();
- if (tileFile.isFile() && !fileNameLC.startsWith("hillshade") && fileNameLC.endsWith(SQLiteTileSource.EXT)) {
- boolean active = fileName.equals(activeFile);
- if (!activeOnly || active) {
- fileNames.add(new ASqliteDbFile(fileName, tileFile.lastModified(), tileFile.length(), active));
- }
+ File tilesPath = app.getAppPath(IndexConstants.TILES_INDEX_DIR);
+ if (tilesPath.canRead()) {
+ File[] files = tilesPath.listFiles();
+ if (files != null) {
+ String activeFile = app.getSettings().MAP_OVERLAY.get();
+ for (File tileFile : files) {
+ String fileName = tileFile.getName();
+ String fileNameLC = fileName.toLowerCase();
+ if (tileFile.isFile() && !fileNameLC.startsWith("hillshade") && fileNameLC.endsWith(SQLiteTileSource.EXT)) {
+ boolean active = fileName.equals(activeFile);
+ if (!activeOnly || active) {
+ fileNames.add(new ASqliteDbFile(fileName, tileFile.lastModified(), tileFile.length(), active));
}
}
}
}
- return true;
}
- return false;
+ return true;
+ }
+
+ private boolean getSqliteDbFilesV2(List<net.osmand.aidlapi.tiles.ASqliteDbFile> fileNames, boolean activeOnly) {
+ File tilesPath = app.getAppPath(IndexConstants.TILES_INDEX_DIR);
+ if (tilesPath.canRead()) {
+ File[] files = tilesPath.listFiles();
+ if (files != null) {
+ String activeFile = app.getSettings().MAP_OVERLAY.get();
+ for (File tileFile : files) {
+ String fileName = tileFile.getName();
+ String fileNameLC = fileName.toLowerCase();
+ if (tileFile.isFile() && !fileNameLC.startsWith("hillshade") && fileNameLC.endsWith(SQLiteTileSource.EXT)) {
+ boolean active = fileName.equals(activeFile);
+ if (!activeOnly || active) {
+ fileNames.add(new net.osmand.aidlapi.tiles.ASqliteDbFile(fileName, tileFile.lastModified(), tileFile.length(), active));
+ }
+ }
+ }
+ }
+ }
+ return true;
}
boolean getSqliteDbFiles(List<ASqliteDbFile> fileNames) {
@@ -1561,6 +1560,14 @@ public class OsmandAidlApi {
return getSqliteDbFiles(fileNames, true);
}
+ boolean getSqliteDbFilesV2(List<net.osmand.aidlapi.tiles.ASqliteDbFile> fileNames) {
+ return getSqliteDbFilesV2(fileNames, false);
+ }
+
+ boolean getActiveSqliteDbFilesV2(List<net.osmand.aidlapi.tiles.ASqliteDbFile> fileNames) {
+ return getSqliteDbFilesV2(fileNames, true);
+ }
+
boolean showSqliteDbFile(String fileName) {
if (!Algorithms.isEmpty(fileName)) {
File tileFile = new File(app.getAppPath(IndexConstants.TILES_INDEX_DIR), fileName);
@@ -1608,7 +1615,7 @@ public class OsmandAidlApi {
return true;
}
- boolean startGpxRecording(StartGpxRecordingParams params) {
+ boolean startGpxRecording() {
final OsmandMonitoringPlugin plugin = OsmandPlugin.getEnabledPlugin(OsmandMonitoringPlugin.class);
if (plugin != null) {
plugin.startGPXMonitoring(null);
@@ -1618,7 +1625,7 @@ public class OsmandAidlApi {
return false;
}
- boolean stopGpxRecording(StopGpxRecordingParams params) {
+ boolean stopGpxRecording() {
final OsmandMonitoringPlugin plugin = OsmandPlugin.getEnabledPlugin(OsmandMonitoringPlugin.class);
if (plugin != null) {
plugin.stopRecording();
@@ -1663,8 +1670,8 @@ public class OsmandAidlApi {
}
boolean navigate(String startName, double startLat, double startLon,
- String destName, double destLat, double destLon,
- String profile, boolean force) {
+ String destName, double destLat, double destLon,
+ String profile, boolean force) {
Intent intent = new Intent();
intent.setAction(AIDL_NAVIGATE);
intent.putExtra(AIDL_START_NAME, startName);
@@ -1680,8 +1687,8 @@ public class OsmandAidlApi {
}
boolean navigateSearch(String startName, double startLat, double startLon,
- String searchQuery, double searchLat, double searchLon,
- String profile, boolean force) {
+ String searchQuery, double searchLat, double searchLon,
+ String profile, boolean force) {
Intent intent = new Intent();
intent.setAction(AIDL_NAVIGATE_SEARCH);
intent.putExtra(AIDL_START_NAME, startName);
@@ -1742,7 +1749,7 @@ public class OsmandAidlApi {
}
boolean search(final String searchQuery, final int searchType, final double latitude, final double longitude,
- final int radiusLevel, final int totalLimit, final SearchCompleteCallback callback) {
+ final int radiusLevel, final int totalLimit, final SearchCompleteCallback callback) {
if (Algorithms.isEmpty(searchQuery) || latitude == 0 || longitude == 0 || callback == null) {
return false;
}
@@ -1763,8 +1770,7 @@ public class OsmandAidlApi {
return true;
}
- boolean registerForOsmandInitialization(final OsmandAppInitCallback callback)
- throws RemoteException {
+ boolean registerForOsmandInitialization(final OsmandAppInitCallback callback) {
if (app.isApplicationInitializing()) {
app.getAppInitializer().addListener(new AppInitializeListener() {
@Override
@@ -1786,7 +1792,7 @@ public class OsmandAidlApi {
return true;
}
- boolean setNavDrawerItems(String appPackage, List<net.osmand.aidl.navdrawer.NavDrawerItem> items) {
+ boolean setNavDrawerItems(String appPackage, List<OsmAndAppCustomization.NavDrawerItem> items) {
return app.getAppCustomization().setNavDrawerItems(appPackage, items);
}
@@ -1887,7 +1893,7 @@ public class OsmandAidlApi {
}
boolean setNavDrawerLogo(@Nullable String uri) {
- return app.getAppCustomization().setNavDrawerLogo(uri,null, null);
+ return app.getAppCustomization().setNavDrawerLogo(uri, null, null);
}
boolean setEnabledIds(Collection<String> ids) {
@@ -1930,38 +1936,38 @@ public class OsmandAidlApi {
return app.getAppCustomization().setNavDrawerLogoWithParams(uri, packageName, intent);
}
- boolean setNavDrawerFooterWithParams(@NonNull NavDrawerFooterParams params) {
- return app.getAppCustomization().setNavDrawerFooterParams(params);
+ boolean setNavDrawerFooterWithParams(String uri, @Nullable String packageName, @Nullable String intent) {
+ return app.getAppCustomization().setNavDrawerFooterParams(uri, packageName, intent);
}
boolean restoreOsmand() {
return app.getAppCustomization().restoreOsmand();
}
- boolean changePluginState(PluginParams params) {
- return app.getAppCustomization().changePluginStatus(params);
+ boolean changePluginState(String pluginId, int newState) {
+ return app.getAppCustomization().changePluginStatus(pluginId, newState);
}
private Map<Long, IRoutingDataUpdateListener> navUpdateCallbacks = new ConcurrentHashMap<>();
void registerForNavigationUpdates(long id) {
- final ADirectionInfo directionInfo = new ADirectionInfo(-1, -1, false);
final NextDirectionInfo baseNdi = new NextDirectionInfo();
IRoutingDataUpdateListener listener = new IRoutingDataUpdateListener() {
@Override
public void onRoutingDataUpdate() {
- RoutingHelper rh = app.getRoutingHelper();
- if (rh.isDeviatedFromRoute()) {
- directionInfo.setTurnType(TurnType.OFFR);
- directionInfo.setDistanceTo((int) rh.getRouteDeviation());
- } else {
- NextDirectionInfo ndi = rh.getNextRouteDirectionInfo(baseNdi, true);
- if (ndi != null && ndi.distanceTo > 0 && ndi.directionInfo != null) {
- directionInfo.setDistanceTo(ndi.distanceTo);
- directionInfo.setTurnType(ndi.directionInfo.getTurnType().getValue());
- }
- }
if (aidlCallbackListener != null) {
+ ADirectionInfo directionInfo = new ADirectionInfo(-1, -1, false);
+ RoutingHelper rh = app.getRoutingHelper();
+ if (rh.isDeviatedFromRoute()) {
+ directionInfo.setTurnType(TurnType.OFFR);
+ directionInfo.setDistanceTo((int) rh.getRouteDeviation());
+ } else {
+ NextDirectionInfo ndi = rh.getNextRouteDirectionInfo(baseNdi, true);
+ if (ndi != null && ndi.distanceTo > 0 && ndi.directionInfo != null) {
+ directionInfo.setDistanceTo(ndi.distanceTo);
+ directionInfo.setTurnType(ndi.directionInfo.getTurnType().getValue());
+ }
+ }
for (OsmandAidlService.AidlCallbackParams cb : aidlCallbackListener.getAidlCallbacks().values()) {
if (!aidlCallbackListener.getAidlCallbacks().isEmpty() && (cb.getKey() & KEY_ON_NAV_DATA_UPDATE) > 0) {
try {
@@ -1972,6 +1978,29 @@ public class OsmandAidlApi {
}
}
}
+ if (aidlCallbackListenerV2 != null) {
+ net.osmand.aidlapi.navigation.ADirectionInfo directionInfo = new net.osmand.aidlapi.navigation.ADirectionInfo(-1, -1, false);
+ RoutingHelper rh = app.getRoutingHelper();
+ if (rh.isDeviatedFromRoute()) {
+ directionInfo.setTurnType(TurnType.OFFR);
+ directionInfo.setDistanceTo((int) rh.getRouteDeviation());
+ } else {
+ NextDirectionInfo ndi = rh.getNextRouteDirectionInfo(baseNdi, true);
+ if (ndi != null && ndi.distanceTo > 0 && ndi.directionInfo != null) {
+ directionInfo.setDistanceTo(ndi.distanceTo);
+ directionInfo.setTurnType(ndi.directionInfo.getTurnType().getValue());
+ }
+ }
+ for (OsmandAidlServiceV2.AidlCallbackParams cb : aidlCallbackListenerV2.getAidlCallbacks().values()) {
+ if (!aidlCallbackListenerV2.getAidlCallbacks().isEmpty() && (cb.getKey() & KEY_ON_NAV_DATA_UPDATE) > 0) {
+ try {
+ cb.getCallback().updateNavigationInfo(directionInfo);
+ } catch (Exception e) {
+ LOG.error(e.getMessage(), e);
+ }
+ }
+ }
+ }
}
};
navUpdateCallbacks.put(id, listener);
@@ -1998,6 +2027,17 @@ public class OsmandAidlApi {
}
}
}
+ if (aidlCallbackListenerV2 != null) {
+ for (OsmandAidlServiceV2.AidlCallbackParams cb : aidlCallbackListenerV2.getAidlCallbacks().values()) {
+ if (!aidlCallbackListenerV2.getAidlCallbacks().isEmpty() && (cb.getKey() & KEY_ON_VOICE_MESSAGE) > 0) {
+ try {
+ cb.getCallback().onVoiceRouterNotify(new net.osmand.aidlapi.navigation.OnVoiceNavigationParams(cmds, played));
+ } catch (Exception e) {
+ LOG.error(e.getMessage(), e);
+ }
+ }
+ }
+ }
}
};
voiceRouterMessageCallbacks.put(id, listener);
@@ -2009,11 +2049,11 @@ public class OsmandAidlApi {
voiceRouterMessageCallbacks.remove(id);
}
- public Map<String, ContextMenuButtonsParams> getContextMenuButtonsParams() {
+ public Map<String, AidlContextMenuButtonsWrapper> getContextMenuButtonsParams() {
return contextMenuButtonsParams;
}
- boolean addContextMenuButtons(ContextMenuButtonsParams buttonsParams, long callbackId) {
+ boolean addContextMenuButtons(AidlContextMenuButtonsWrapper buttonsParams, long callbackId) {
if (buttonsParams != null) {
if (contextMenuButtonsParams.containsKey(buttonsParams.getId())) {
updateContextMenuButtons(buttonsParams, callbackId);
@@ -2045,7 +2085,7 @@ public class OsmandAidlApi {
}
}
- boolean updateContextMenuButtons(ContextMenuButtonsParams buttonsParams, long callbackId) {
+ boolean updateContextMenuButtons(AidlContextMenuButtonsWrapper buttonsParams, long callbackId) {
if (buttonsParams != null && contextMenuButtonsParams.containsKey(buttonsParams.getId())) {
contextMenuButtonsParams.put(buttonsParams.getId(), buttonsParams);
addContextMenuButtonListener(buttonsParams, callbackId);
@@ -2059,12 +2099,7 @@ public class OsmandAidlApi {
return app.getAppCustomization().areSettingsCustomizedForPreference(sharedPreferencesName);
}
- boolean setCustomization(CustomizationInfoParams params) {
- app.getAppCustomization().setCustomization(params);
- return true;
- }
-
- private void addContextMenuButtonListener(ContextMenuButtonsParams buttonsParams, long callbackId) {
+ private void addContextMenuButtonListener(AidlContextMenuButtonsWrapper buttonsParams, long callbackId) {
IContextMenuButtonListener listener = new IContextMenuButtonListener() {
@Override
@@ -2080,6 +2115,17 @@ public class OsmandAidlApi {
}
}
}
+ if (aidlCallbackListenerV2 != null) {
+ for (OsmandAidlServiceV2.AidlCallbackParams cb : aidlCallbackListenerV2.getAidlCallbacks().values()) {
+ if (!aidlCallbackListenerV2.getAidlCallbacks().isEmpty() && (cb.getKey() & KEY_ON_CONTEXT_MENU_BUTTONS_CLICK) > 0) {
+ try {
+ cb.getCallback().onContextMenuButtonClicked(buttonId, pointId, layerId);
+ } catch (Exception e) {
+ LOG.error(e.getMessage(), e);
+ }
+ }
+ }
+ }
}
};
buttonsParams.setCallbackId(callbackId);
@@ -2096,7 +2142,7 @@ public class OsmandAidlApi {
}
boolean getBitmapForGpx(final Uri gpxUri, final float density, final int widthPixels,
- final int heightPixels, final int color, final GpxBitmapCreatedCallback callback) {
+ final int heightPixels, final int color, final GpxBitmapCreatedCallback callback) {
if (gpxUri == null || callback == null) {
return false;
}
@@ -2116,7 +2162,7 @@ public class OsmandAidlApi {
@Override
public void drawTrackBitmap(Bitmap bitmap) {
- callback.onGpxBitmapCreatedComplete(new AGpxBitmap(bitmap));
+ callback.onGpxBitmapCreatedComplete(bitmap);
}
};
@@ -2167,27 +2213,26 @@ public class OsmandAidlApi {
}
}
- int copyFile(final CopyFileParams params) {
- if (Algorithms.isEmpty(params.getFileName()) || params.getFilePartData() == null) {
+ int copyFile(String fileName, byte[] filePartData, long startTime, boolean done) {
+ if (Algorithms.isEmpty(fileName) || filePartData == null) {
return COPY_FILE_PARAMS_ERROR;
}
- if (params.getFilePartData().length > COPY_FILE_PART_SIZE_LIMIT) {
+ if (filePartData.length > COPY_FILE_PART_SIZE_LIMIT) {
return COPY_FILE_PART_SIZE_LIMIT_ERROR;
}
- if (params.getFileName().endsWith(IndexConstants.SQLITE_EXT)) {
- return copyFileImpl(params, IndexConstants.TILES_INDEX_DIR);
+ if (fileName.endsWith(IndexConstants.SQLITE_EXT)) {
+ return copyFileImpl(fileName, filePartData, startTime, done, IndexConstants.TILES_INDEX_DIR);
} else {
return COPY_FILE_UNSUPPORTED_FILE_TYPE_ERROR;
}
}
- private int copyFileImpl(CopyFileParams params, String destinationDir) {
- File file = app.getAppPath(IndexConstants.TEMP_DIR + params.getFileName());
+ private int copyFileImpl(String fileName, byte[] filePartData, long startTime, boolean done, String destinationDir) {
+ File file = app.getAppPath(IndexConstants.TEMP_DIR + fileName);
File tempDir = app.getAppPath(IndexConstants.TEMP_DIR);
if (!tempDir.exists()) {
tempDir.mkdirs();
}
- String fileName = params.getFileName();
File destFile = app.getAppPath(destinationDir + fileName);
long currentTime = System.currentTimeMillis();
try {
@@ -2195,32 +2240,32 @@ public class OsmandAidlApi {
if (info == null) {
FileOutputStream fos = new FileOutputStream(file, true);
copyFilesCache.put(fileName,
- new FileCopyInfo(params.getStartTime(), currentTime, fos));
- if (params.isDone()) {
- if (!finishFileCopy(params, file, fos, fileName, destFile)) {
+ new FileCopyInfo(startTime, currentTime, fos));
+ if (done) {
+ if (!finishFileCopy(filePartData, file, fos, fileName, destFile)) {
return COPY_FILE_IO_ERROR;
}
} else {
- fos.write(params.getFilePartData());
+ fos.write(filePartData);
}
} else {
- if (info.startTime != params.getStartTime()) {
+ if (info.startTime != startTime) {
if (currentTime - info.lastAccessTime < COPY_FILE_MAX_LOCK_TIME_MS) {
return COPY_FILE_WRITE_LOCK_ERROR;
} else {
file.delete();
copyFilesCache.remove(fileName);
- return copyFileImpl(params, destinationDir);
+ return copyFileImpl(fileName, filePartData, startTime, done, destinationDir);
}
}
FileOutputStream fos = info.fileOutputStream;
info.lastAccessTime = currentTime;
- if (params.isDone()) {
- if (!finishFileCopy(params, file, fos, fileName, destFile)) {
+ if (done) {
+ if (!finishFileCopy(filePartData, file, fos, fileName, destFile)) {
return COPY_FILE_IO_ERROR;
}
} else {
- fos.write(params.getFilePartData());
+ fos.write(filePartData);
}
}
} catch (IOException e) {
@@ -2230,9 +2275,8 @@ public class OsmandAidlApi {
return OK_RESPONSE;
}
- private boolean finishFileCopy(CopyFileParams params, File file, FileOutputStream fos, String fileName, File destFile) throws IOException {
+ private boolean finishFileCopy(byte[] data, File file, FileOutputStream fos, String fileName, File destFile) throws IOException {
boolean res = true;
- byte[] data = params.getFilePartData();
if (data.length > 0) {
fos.write(data);
}
@@ -2282,8 +2326,6 @@ public class OsmandAidlApi {
}
}
-
-
private static AGpxFileDetails createGpxFileDetails(@NonNull GPXTrackAnalysis a) {
return new AGpxFileDetails(a.totalDistance, a.totalTracks, a.startTime, a.endTime,
a.timeSpan, a.timeMoving, a.totalDistanceMoving, a.diffElevationUp, a.diffElevationDown,
@@ -2291,6 +2333,13 @@ public class OsmandAidlApi {
a.points, a.wptPoints, a.wptCategoryNames);
}
+ private static net.osmand.aidlapi.gpx.AGpxFileDetails createGpxFileDetailsV2(@NonNull GPXTrackAnalysis a) {
+ return new net.osmand.aidlapi.gpx.AGpxFileDetails(a.totalDistance, a.totalTracks, a.startTime, a.endTime,
+ a.timeSpan, a.timeMoving, a.totalDistanceMoving, a.diffElevationUp, a.diffElevationDown,
+ a.avgElevation, a.minElevation, a.maxElevation, a.minSpeed, a.maxSpeed, a.avgSpeed,
+ a.points, a.wptPoints, a.wptCategoryNames);
+ }
+
public static class ConnectedApp implements Comparable<ConnectedApp> {
static final String PACK_KEY = "pack";
@@ -2332,11 +2381,11 @@ public class OsmandAidlApi {
}
public interface SearchCompleteCallback {
- void onSearchComplete(List<SearchResult> resultSet);
+ void onSearchComplete(List<AidlSearchResultWrapper> resultSet);
}
public interface GpxBitmapCreatedCallback {
- void onGpxBitmapCreatedComplete(AGpxBitmap aGpxBitmap);
+ void onGpxBitmapCreatedComplete(Bitmap bitmap);
}
public interface OsmandAppInitCallback {
@@ -2344,6 +2393,6 @@ public class OsmandAidlApi {
}
public interface AMapPointUpdateListener {
- void onAMapPointUpdated(AMapPoint point, String layerId);
+ void onAMapPointUpdated(AidlMapPointWrapper point, String layerId);
}
-}
+} \ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/aidl/OsmandAidlConstants.java b/OsmAnd/src/net/osmand/aidl/OsmandAidlConstants.java
deleted file mode 100644
index 583a77c4e1..0000000000
--- a/OsmAnd/src/net/osmand/aidl/OsmandAidlConstants.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package net.osmand.aidl;
-
-public interface OsmandAidlConstants {
-
- int OK_RESPONSE = 0;
-
- int MIN_UPDATE_TIME_MS = 1000;
- long COPY_FILE_PART_SIZE_LIMIT = 256 * 1024;
- long COPY_FILE_MAX_LOCK_TIME_MS = 10000;
-
- int CANNOT_ACCESS_API_ERROR = -5;
- int UNKNOWN_API_ERROR = -2;
-
- int MIN_UPDATE_TIME_MS_ERROR = -1;
-
- int COPY_FILE_PARAMS_ERROR = -1001;
- int COPY_FILE_PART_SIZE_LIMIT_ERROR = -1002;
- int COPY_FILE_WRITE_LOCK_ERROR = -1003;
- int COPY_FILE_IO_ERROR = -1004;
- int COPY_FILE_UNSUPPORTED_FILE_TYPE_ERROR = -1005;
-
- int TURN_TYPE_C = 1;//"C"; // continue (go straight) //$NON-NLS-1$
- int TURN_TYPE_TL = 2; // turn left //$NON-NLS-1$
- int TURN_TYPE_TSLL = 3; // turn slightly left //$NON-NLS-1$
- int TURN_TYPE_TSHL = 4; // turn sharply left //$NON-NLS-1$
- int TURN_TYPE_TR = 5; // turn right //$NON-NLS-1$
- int TURN_TYPE_TSLR = 6; // turn slightly right //$NON-NLS-1$
- int TURN_TYPE_TSHR = 7; // turn sharply right //$NON-NLS-1$
- int TURN_TYPE_KL = 8; // keep left //$NON-NLS-1$
- int TURN_TYPE_KR = 9; // keep right//$NON-NLS-1$
- int TURN_TYPE_TU = 10; // U-turn //$NON-NLS-1$
- int TURN_TYPE_TRU = 11; // Right U-turn //$NON-NLS-1$
- int TURN_TYPE_OFFR = 12; // Off route //$NON-NLS-1$
- int TURN_TYPE_RNDB = 13; // Roundabout
- int TURN_TYPE_RNLB = 14; // Roundabout left
-}
diff --git a/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java b/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java
index 2cbcf691c2..d382439fff 100644
--- a/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java
+++ b/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java
@@ -2,8 +2,8 @@ package net.osmand.aidl;
import android.app.Service;
import android.content.Intent;
+import android.graphics.Bitmap;
import android.os.Binder;
-import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
@@ -23,9 +23,11 @@ import net.osmand.aidl.customization.CustomizationInfoParams;
import net.osmand.aidl.customization.OsmandSettingsInfoParams;
import net.osmand.aidl.customization.OsmandSettingsParams;
import net.osmand.aidl.customization.SetWidgetsParams;
+import net.osmand.aidl.favorite.AFavorite;
import net.osmand.aidl.favorite.AddFavoriteParams;
import net.osmand.aidl.favorite.RemoveFavoriteParams;
import net.osmand.aidl.favorite.UpdateFavoriteParams;
+import net.osmand.aidl.favorite.group.AFavoriteGroup;
import net.osmand.aidl.favorite.group.AddFavoriteGroupParams;
import net.osmand.aidl.favorite.group.RemoveFavoriteGroupParams;
import net.osmand.aidl.favorite.group.UpdateFavoriteGroupParams;
@@ -40,6 +42,7 @@ import net.osmand.aidl.gpx.RemoveGpxParams;
import net.osmand.aidl.gpx.ShowGpxParams;
import net.osmand.aidl.gpx.StartGpxRecordingParams;
import net.osmand.aidl.gpx.StopGpxRecordingParams;
+import net.osmand.aidl.map.ALatLon;
import net.osmand.aidl.map.SetMapLocationParams;
import net.osmand.aidl.maplayer.AddMapLayerParams;
import net.osmand.aidl.maplayer.RemoveMapLayerParams;
@@ -48,6 +51,7 @@ import net.osmand.aidl.maplayer.point.AddMapPointParams;
import net.osmand.aidl.maplayer.point.RemoveMapPointParams;
import net.osmand.aidl.maplayer.point.ShowMapPointParams;
import net.osmand.aidl.maplayer.point.UpdateMapPointParams;
+import net.osmand.aidl.mapmarker.AMapMarker;
import net.osmand.aidl.mapmarker.AddMapMarkerParams;
import net.osmand.aidl.mapmarker.RemoveMapMarkerParams;
import net.osmand.aidl.mapmarker.RemoveMapMarkersParams;
@@ -57,6 +61,7 @@ import net.osmand.aidl.mapwidget.RemoveMapWidgetParams;
import net.osmand.aidl.mapwidget.UpdateMapWidgetParams;
import net.osmand.aidl.navdrawer.NavDrawerFooterParams;
import net.osmand.aidl.navdrawer.NavDrawerHeaderParams;
+import net.osmand.aidl.navdrawer.NavDrawerItem;
import net.osmand.aidl.navdrawer.SetNavDrawerItemsParams;
import net.osmand.aidl.navigation.ANavigationUpdateParams;
import net.osmand.aidl.navigation.ANavigationVoiceRouterMessageParams;
@@ -76,6 +81,8 @@ import net.osmand.aidl.plugins.PluginParams;
import net.osmand.aidl.search.SearchParams;
import net.osmand.aidl.search.SearchResult;
import net.osmand.aidl.tiles.ASqliteDbFile;
+import net.osmand.data.LatLon;
+import net.osmand.plus.OsmAndAppCustomization;
import net.osmand.plus.OsmandApplication;
import net.osmand.util.Algorithms;
@@ -87,22 +94,19 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicLong;
-import static net.osmand.aidl.OsmandAidlConstants.CANNOT_ACCESS_API_ERROR;
-import static net.osmand.aidl.OsmandAidlConstants.MIN_UPDATE_TIME_MS;
-import static net.osmand.aidl.OsmandAidlConstants.MIN_UPDATE_TIME_MS_ERROR;
-import static net.osmand.aidl.OsmandAidlConstants.UNKNOWN_API_ERROR;
+import static net.osmand.aidl.OsmandAidlApi.KEY_ON_CONTEXT_MENU_BUTTONS_CLICK;
+import static net.osmand.aidl.OsmandAidlApi.KEY_ON_NAV_DATA_UPDATE;
+import static net.osmand.aidl.OsmandAidlApi.KEY_ON_UPDATE;
+import static net.osmand.aidl.OsmandAidlApi.KEY_ON_VOICE_MESSAGE;
+import static net.osmand.aidlapi.OsmandAidlConstants.CANNOT_ACCESS_API_ERROR;
+import static net.osmand.aidlapi.OsmandAidlConstants.MIN_UPDATE_TIME_MS;
+import static net.osmand.aidlapi.OsmandAidlConstants.MIN_UPDATE_TIME_MS_ERROR;
+import static net.osmand.aidlapi.OsmandAidlConstants.UNKNOWN_API_ERROR;
public class OsmandAidlService extends Service implements AidlCallbackListener {
private static final Log LOG = PlatformUtil.getLog(OsmandAidlService.class);
- private static final String DATA_KEY_RESULT_SET = "resultSet";
-
- public static final int KEY_ON_UPDATE = 1;
- public static final int KEY_ON_NAV_DATA_UPDATE = 2;
- public static final int KEY_ON_CONTEXT_MENU_BUTTONS_CLICK = 4;
- public static final int KEY_ON_VOICE_MESSAGE = 5;
-
private Map<Long, AidlCallbackParams> callbacks = new ConcurrentHashMap<>();
private Handler mHandler = null;
HandlerThread mHandlerThread = new HandlerThread("OsmAndAidlServiceThread");
@@ -207,7 +211,13 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean addFavoriteGroup(AddFavoriteGroupParams params) {
try {
OsmandAidlApi api = getApi("addFavoriteGroup");
- return params != null && api != null && api.addFavoriteGroup(params.getFavoriteGroup());
+ if (params != null && api != null) {
+ AFavoriteGroup favoriteGroup = params.getFavoriteGroup();
+ if (favoriteGroup != null) {
+ return api.addFavoriteGroup(favoriteGroup.getName(), favoriteGroup.getColor(), favoriteGroup.isVisible());
+ }
+ }
+ return false;
} catch (Exception e) {
handleException(e);
return false;
@@ -218,7 +228,13 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean removeFavoriteGroup(RemoveFavoriteGroupParams params) {
try {
OsmandAidlApi api = getApi("removeFavoriteGroup");
- return params != null && api != null && api.removeFavoriteGroup(params.getFavoriteGroup());
+ if (params != null && api != null) {
+ AFavoriteGroup favoriteGroup = params.getFavoriteGroup();
+ if (favoriteGroup != null) {
+ return api.removeFavoriteGroup(favoriteGroup.getName());
+ }
+ }
+ return false;
} catch (Exception e) {
handleException(e);
return false;
@@ -229,7 +245,14 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean updateFavoriteGroup(UpdateFavoriteGroupParams params) {
try {
OsmandAidlApi api = getApi("updateFavoriteGroup");
- return params != null && api != null && api.updateFavoriteGroup(params.getFavoriteGroupPrev(), params.getFavoriteGroupNew());
+ if (params != null && api != null) {
+ AFavoriteGroup prevGroup = params.getFavoriteGroupPrev();
+ AFavoriteGroup newGroup = params.getFavoriteGroupNew();
+ if (prevGroup != null && newGroup != null) {
+ return api.updateFavoriteGroup(prevGroup.getName(), newGroup.getName(), newGroup.getColor(), newGroup.isVisible());
+ }
+ }
+ return false;
} catch (Exception e) {
handleException(e);
return false;
@@ -240,7 +263,13 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean addFavorite(AddFavoriteParams params) {
try {
OsmandAidlApi api = getApi("addFavorite");
- return params != null && api != null && api.addFavorite(params.getFavorite());
+ if (params != null && api != null) {
+ AFavorite fav = params.getFavorite();
+ if (fav != null) {
+ return api.addFavorite(fav.getLat(), fav.getLon(), fav.getName(), fav.getCategory(), fav.getDescription(), fav.getColor(), fav.isVisible());
+ }
+ }
+ return false;
} catch (Exception e) {
handleException(e);
return false;
@@ -251,7 +280,13 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean removeFavorite(RemoveFavoriteParams params) {
try {
OsmandAidlApi api = getApi("removeFavorite");
- return params != null && api != null && api.removeFavorite(params.getFavorite());
+ if (params != null && api != null) {
+ AFavorite fav = params.getFavorite();
+ if (fav != null) {
+ return api.removeFavorite(fav.getName(), fav.getCategory(), fav.getLat(), fav.getLon());
+ }
+ }
+ return false;
} catch (Exception e) {
handleException(e);
return false;
@@ -262,7 +297,15 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean updateFavorite(UpdateFavoriteParams params) {
try {
OsmandAidlApi api = getApi("updateFavorite");
- return params != null && api != null && api.updateFavorite(params.getFavoritePrev(), params.getFavoriteNew());
+ if (params != null && api != null) {
+ AFavorite prevFav = params.getFavoritePrev();
+ AFavorite newFav = params.getFavoriteNew();
+ if (prevFav != null && newFav != null) {
+ return api.updateFavorite(prevFav.getName(), prevFav.getCategory(), prevFav.getLat(), prevFav.getLon(),
+ newFav.getName(), newFav.getCategory(), newFav.getDescription(), newFav.getLat(), newFav.getLon());
+ }
+ }
+ return false;
} catch (Exception e) {
handleException(e);
return false;
@@ -273,7 +316,13 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean addMapMarker(AddMapMarkerParams params) {
try {
OsmandAidlApi api = getApi("addMapMarker");
- return params != null && api != null && api.addMapMarker(params.getMarker());
+ if (params != null && api != null) {
+ AMapMarker mapMarker = params.getMarker();
+ if (mapMarker != null) {
+ return api.addMapMarker(mapMarker.getName(), mapMarker.getLatLon().getLatitude(), mapMarker.getLatLon().getLongitude());
+ }
+ }
+ return false;
} catch (Exception e) {
return false;
}
@@ -283,7 +332,14 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean removeMapMarker(RemoveMapMarkerParams params) {
try {
OsmandAidlApi api = getApi("removeMapMarker");
- return params != null && api != null && api.removeMapMarker(params.getMarker(), params.getIgnoreCoordinates());
+ if (params != null && api != null) {
+ AMapMarker mapMarker = params.getMarker();
+ if (mapMarker != null) {
+ ALatLon aLatLon = mapMarker.getLatLon();
+ return api.removeMapMarker(mapMarker.getName(), aLatLon.getLatitude(), aLatLon.getLongitude(), params.getIgnoreCoordinates());
+ }
+ }
+ return false;
} catch (Exception e) {
handleException(e);
return false;
@@ -294,7 +350,19 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean updateMapMarker(UpdateMapMarkerParams params) {
try {
OsmandAidlApi api = getApi("updateMapMarker");
- return params != null && api != null && api.updateMapMarker(params.getMarkerPrev(), params.getMarkerNew(), params.getIgnoreCoordinates());
+ if (params != null && api != null) {
+ AMapMarker markerPrev = params.getMarkerPrev();
+ AMapMarker markerNew = params.getMarkerNew();
+ if (markerPrev != null && markerNew != null) {
+ ALatLon aLatLonPrev = markerPrev.getLatLon();
+ ALatLon aLatLonNew = markerNew.getLatLon();
+ LatLon prevLatLon = new LatLon(aLatLonPrev.getLatitude(), aLatLonPrev.getLongitude());
+ LatLon newLatLon = new LatLon(aLatLonNew.getLatitude(), aLatLonNew.getLongitude());
+
+ return api.updateMapMarker(markerPrev.getName(), prevLatLon, markerNew.getName(), newLatLon, params.getIgnoreCoordinates());
+ }
+ }
+ return false;
} catch (Exception e) {
handleException(e);
return false;
@@ -305,7 +373,7 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean addMapWidget(AddMapWidgetParams params) {
try {
OsmandAidlApi api = getApi("addMapWidget");
- return params != null && api != null && api.addMapWidget(params.getWidget());
+ return params != null && api != null && api.addMapWidget(new AidlMapWidgetWrapper(params.getWidget()));
} catch (Exception e) {
handleException(e);
return false;
@@ -326,7 +394,7 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean updateMapWidget(UpdateMapWidgetParams params) {
try {
OsmandAidlApi api = getApi("updateMapWidget");
- return params != null && api != null && api.updateMapWidget(params.getWidget());
+ return params != null && api != null && api.updateMapWidget(new AidlMapWidgetWrapper(params.getWidget()));
} catch (Exception e) {
handleException(e);
return false;
@@ -337,7 +405,7 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean showMapPoint(ShowMapPointParams params) {
try {
OsmandAidlApi api = getApi("showMapPoint");
- return params != null && api != null && api.showMapPoint(params.getLayerId(), params.getPoint());
+ return params != null && api != null && api.showMapPoint(params.getLayerId(), new AidlMapPointWrapper(params.getPoint()));
} catch (Exception e) {
handleException(e);
return false;
@@ -348,7 +416,7 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean addMapPoint(AddMapPointParams params) {
try {
OsmandAidlApi api = getApi("addMapPoint");
- return params != null && api != null && api.putMapPoint(params.getLayerId(), params.getPoint());
+ return params != null && api != null && api.putMapPoint(params.getLayerId(), new AidlMapPointWrapper(params.getPoint()));
} catch (Exception e) {
handleException(e);
return false;
@@ -370,7 +438,7 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean updateMapPoint(UpdateMapPointParams params) {
try {
OsmandAidlApi api = getApi("updateMapPoint");
- return params != null && api != null && api.updateMapPoint(params.getLayerId(), params.getPoint(), params.isUpdateOpenedMenuAndMap());
+ return params != null && api != null && api.updateMapPoint(params.getLayerId(), new AidlMapPointWrapper(params.getPoint()), params.isUpdateOpenedMenuAndMap());
} catch (Exception e) {
handleException(e);
return false;
@@ -381,7 +449,7 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean addMapLayer(AddMapLayerParams params) {
try {
OsmandAidlApi api = getApi("addMapLayer");
- return params != null && api != null && api.addMapLayer(params.getLayer());
+ return params != null && api != null && api.addMapLayer(new AidlMapLayerWrapper(params.getLayer()));
} catch (Exception e) {
handleException(e);
return false;
@@ -403,7 +471,7 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean updateMapLayer(UpdateMapLayerParams params) {
try {
OsmandAidlApi api = getApi("updateMapLayer");
- return params != null && api != null && api.updateMapLayer(params.getLayer());
+ return params != null && api != null && api.updateMapLayer(new AidlMapLayerWrapper(params.getLayer()));
} catch (Exception e) {
handleException(e);
return false;
@@ -467,7 +535,10 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean getActiveGpx(List<ASelectedGpxFile> files) {
try {
OsmandAidlApi api = getApi("getActiveGpx");
- return api != null && api.getActiveGpx(files);
+ if (api != null && files != null) {
+ return api.getActiveGpx(files);
+ }
+ return false;
} catch (Exception e) {
handleException(e);
return false;
@@ -478,7 +549,10 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean getImportedGpx(List<AGpxFile> files) {
try {
OsmandAidlApi api = getApi("getImportedGpx");
- return api != null && api.getImportedGpx(files);
+ if (api != null && files != null) {
+ return api.getImportedGpx(files);
+ }
+ return false;
} catch (Exception e) {
handleException(e);
return false;
@@ -574,7 +648,7 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean startGpxRecording(StartGpxRecordingParams params) {
try {
OsmandAidlApi api = getApi("startGpxRecording");
- return api != null && api.startGpxRecording(params);
+ return api != null && api.startGpxRecording();
} catch (Exception e) {
handleException(e);
return false;
@@ -585,7 +659,7 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean stopGpxRecording(StopGpxRecordingParams params) {
try {
OsmandAidlApi api = getApi("stopGpxRecording");
- return api != null && api.stopGpxRecording(params);
+ return api != null && api.stopGpxRecording();
} catch (Exception e) {
handleException(e);
return false;
@@ -720,7 +794,10 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean setNavDrawerItems(SetNavDrawerItemsParams params) {
try {
OsmandAidlApi api = getApi("setNavDrawerItems");
- return params != null && api != null && api.setNavDrawerItems(params.getAppPackage(), params.getItems());
+ if (api != null && params != null) {
+ return api.setNavDrawerItems(params.getAppPackage(), convertNavDrawerItems(params.getItems()));
+ }
+ return false;
} catch (Exception e) {
handleException(e);
return false;
@@ -734,13 +811,15 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
return params != null && api != null && api.search(params.getSearchQuery(), params.getSearchType(),
params.getLatitude(), params.getLongitude(), params.getRadiusLevel(), params.getTotalLimit(), new SearchCompleteCallback() {
@Override
- public void onSearchComplete(List<SearchResult> resultSet) {
- Bundle data = new Bundle();
- if (resultSet.size() > 0) {
- data.putParcelableArrayList(DATA_KEY_RESULT_SET, new ArrayList<>(resultSet));
- }
+ public void onSearchComplete(List<AidlSearchResultWrapper> resultSet) {
try {
- callback.onSearchComplete(resultSet);
+ List<SearchResult> searchResults = new ArrayList<>();
+ for (AidlSearchResultWrapper item : resultSet) {
+ SearchResult result = new SearchResult(item.getLatitude(), item.getLongitude(), item.getLocalName(),
+ item.getLocalTypeName(), item.getAlternateName(), item.getOtherNames());
+ searchResults.add(result);
+ }
+ callback.onSearchComplete(searchResults);
} catch (RemoteException e) {
handleException(e);
}
@@ -963,7 +1042,8 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean setNavDrawerFooterWithParams(NavDrawerFooterParams params) {
try {
OsmandAidlApi api = getApi("setNavDrawerFooterParams");
- return api != null && api.setNavDrawerFooterWithParams(params);
+ return api != null && api.setNavDrawerFooterWithParams(
+ params.getAppName(), params.getPackageName(), params.getIntent());
} catch (Exception e) {
handleException(e);
return false;
@@ -985,7 +1065,7 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean changePluginState(PluginParams params) {
try {
OsmandAidlApi api = getApi("changePluginState");
- return api != null && api.changePluginState(params);
+ return api != null && api.changePluginState(params.getPluginId(), params.getNewState());
} catch (Exception e) {
handleException(e);
return false;
@@ -1018,9 +1098,9 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
OsmandAidlApi api = getApi("getBitmapForGpx");
return params != null && api != null && api.getBitmapForGpx(params.getGpxUri(), params.getDensity(), params.getWidthPixels(), params.getHeightPixels(), params.getColor(), new GpxBitmapCreatedCallback() {
@Override
- public void onGpxBitmapCreatedComplete(AGpxBitmap aGpxBitmap) {
+ public void onGpxBitmapCreatedComplete(Bitmap gpxBitmap) {
try {
- callback.onGpxBitmapCreated(aGpxBitmap);
+ callback.onGpxBitmapCreated(new AGpxBitmap(gpxBitmap));
} catch (RemoteException e) {
handleException(e);
}
@@ -1033,13 +1113,13 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
}
@Override
- public int copyFile(CopyFileParams copyFileParams) {
+ public int copyFile(CopyFileParams params) {
try {
OsmandAidlApi api = getApi("copyFile");
if (api == null) {
return CANNOT_ACCESS_API_ERROR;
}
- return api.copyFile(copyFileParams);
+ return api.copyFile(params.getFileName(), params.getFilePartData(), params.getStartTime(), params.isDone());
} catch (Exception e) {
handleException(e);
return UNKNOWN_API_ERROR;
@@ -1079,7 +1159,7 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
callbackId = addAidlCallback(callback, KEY_ON_CONTEXT_MENU_BUTTONS_CLICK);
params.setCallbackId(callbackId);
}
- boolean buttonsAdded = api.addContextMenuButtons(params, callbackId);
+ boolean buttonsAdded = api.addContextMenuButtons(new AidlContextMenuButtonsWrapper(params), callbackId);
return buttonsAdded ? callbackId : -1;
} else {
return -1;
@@ -1111,7 +1191,7 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
OsmandAidlApi api = getApi("updateContextMenuButtons");
if (params != null && api != null) {
ContextMenuButtonsParams buttonsParams = params.getContextMenuButtonsParams();
- return api.updateContextMenuButtons(buttonsParams, buttonsParams.getCallbackId());
+ return api.updateContextMenuButtons(new AidlContextMenuButtonsWrapper(buttonsParams), buttonsParams.getCallbackId());
}
return false;
} catch (Exception e) {
@@ -1135,7 +1215,11 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
public boolean setCustomization(CustomizationInfoParams params) {
try {
OsmandAidlApi api = getApi("setCustomization");
- return api != null && params != null && api.setCustomization(params);
+ if (api != null && params != null) {
+ OsmandAidlService.this.setCustomization(api, params);
+ return true;
+ }
+ return false;
} catch (Exception e) {
handleException(e);
return false;
@@ -1143,10 +1227,10 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
}
@Override
- public long registerForVoiceRouterMessages(ANavigationVoiceRouterMessageParams params, final IOsmAndAidlCallback callback) throws RemoteException {
+ public long registerForVoiceRouterMessages(ANavigationVoiceRouterMessageParams params, final IOsmAndAidlCallback callback) {
try {
OsmandAidlApi api = getApi("registerForVoiceRouterMessages");
- if (api != null ) {
+ if (api != null) {
if (!params.isSubscribeToUpdates() && params.getCallbackId() != -1) {
api.unregisterFromVoiceRouterMessages(params.getCallbackId());
removeAidlCallback(params.getCallbackId());
@@ -1177,10 +1261,14 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
}
@Override
- public boolean getGpxColor(GpxColorParams params) throws RemoteException {
+ public boolean getGpxColor(GpxColorParams params) {
try {
OsmandAidlApi api = getApi("getGpxColor");
- return api != null && api.getGpxColor(params);
+ if (api != null && params != null) {
+ String colorName = api.getGpxColor(params.getFileName());
+ params.setGpxColor(colorName);
+ }
+ return false;
} catch (Exception e) {
handleException(e);
return false;
@@ -1188,6 +1276,80 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
}
};
+ private void setCustomization(OsmandAidlApi api, CustomizationInfoParams params) {
+ NavDrawerHeaderParams navDrawerHeaderParams = params.getNavDrawerHeaderParams();
+ NavDrawerFooterParams navDrawerFooterParams = params.getNavDrawerFooterParams();
+ SetNavDrawerItemsParams navDrawerItemsParams = params.getNavDrawerItemsParams();
+
+ setNavDrawerParams(api, navDrawerHeaderParams, navDrawerFooterParams, navDrawerItemsParams);
+
+ OsmandSettingsParams settingsParams = params.getSettingsParams();
+ if (settingsParams != null) {
+ api.customizeOsmandSettings(settingsParams.getSharedPreferencesName(), settingsParams.getBundle());
+ }
+
+ ArrayList<SetWidgetsParams> visibilityWidgetsParams = params.getVisibilityWidgetsParams();
+ ArrayList<SetWidgetsParams> availabilityWidgetsParams = params.getAvailabilityWidgetsParams();
+
+ regWidgetsVisibility(api, visibilityWidgetsParams);
+ regWidgetsAvailability(api, availabilityWidgetsParams);
+
+ ArrayList<PluginParams> pluginsParams = params.getPluginsParams();
+ if (pluginsParams != null) {
+ changePluginsStatus(api, pluginsParams);
+ }
+
+ List<String> enabledIds = params.getFeaturesEnabledIds();
+ List<String> disabledIds = params.getFeaturesDisabledIds();
+
+ api.setEnabledIds(enabledIds);
+ api.setDisabledIds(disabledIds);
+
+ List<String> enabledPatterns = params.getFeaturesEnabledPatterns();
+ List<String> disabledPatterns = params.getFeaturesDisabledPatterns();
+
+ api.setEnabledPatterns(enabledPatterns);
+ api.setDisabledPatterns(disabledPatterns);
+ }
+
+ private void setNavDrawerParams(OsmandAidlApi api, NavDrawerHeaderParams navDrawerHeaderParams, NavDrawerFooterParams navDrawerFooterParams, SetNavDrawerItemsParams navDrawerItemsParams) {
+ if (navDrawerHeaderParams != null) {
+ api.setNavDrawerLogoWithParams(navDrawerHeaderParams.getImageUri(), navDrawerHeaderParams.getPackageName(), navDrawerHeaderParams.getIntent());
+ }
+ if (navDrawerFooterParams != null) {
+ api.setNavDrawerFooterWithParams(navDrawerFooterParams.getAppName(), navDrawerFooterParams.getPackageName(), navDrawerFooterParams.getIntent());
+ }
+ if (navDrawerItemsParams != null) {
+ api.setNavDrawerItems(navDrawerItemsParams.getAppPackage(), convertNavDrawerItems(navDrawerItemsParams.getItems()));
+ }
+ }
+
+ private void regWidgetsVisibility(OsmandAidlApi api, ArrayList<SetWidgetsParams> visibilityWidgetsParams) {
+ for (SetWidgetsParams setWidgetsParams : visibilityWidgetsParams) {
+ api.regWidgetVisibility(setWidgetsParams.getWidgetKey(), setWidgetsParams.getAppModesKeys());
+ }
+ }
+
+ private void regWidgetsAvailability(OsmandAidlApi api, ArrayList<SetWidgetsParams> availabilityWidgetsParams) {
+ for (SetWidgetsParams setWidgetsParams : availabilityWidgetsParams) {
+ api.regWidgetAvailability(setWidgetsParams.getWidgetKey(), setWidgetsParams.getAppModesKeys());
+ }
+ }
+
+ public void changePluginsStatus(OsmandAidlApi api, List<PluginParams> pluginsParams) {
+ for (PluginParams pluginParams : pluginsParams) {
+ api.changePluginState(pluginParams.getPluginId(), pluginParams.getNewState());
+ }
+ }
+
+ private List<OsmAndAppCustomization.NavDrawerItem> convertNavDrawerItems(List<NavDrawerItem> drawerItems) {
+ List<OsmAndAppCustomization.NavDrawerItem> customizationItems = new ArrayList<>();
+ for (NavDrawerItem item : drawerItems) {
+ customizationItems.add(new OsmAndAppCustomization.NavDrawerItem(item.getName(), item.getUri(), item.getIconName(), item.getFlags()));
+ }
+ return customizationItems;
+ }
+
public static class AidlCallbackParams {
private IOsmAndAidlCallback callback;
private long key;
diff --git a/OsmAnd/src/net/osmand/aidl/OsmandAidlServiceV2.java b/OsmAnd/src/net/osmand/aidl/OsmandAidlServiceV2.java
new file mode 100644
index 0000000000..728c1a0553
--- /dev/null
+++ b/OsmAnd/src/net/osmand/aidl/OsmandAidlServiceV2.java
@@ -0,0 +1,1313 @@
+package net.osmand.aidl;
+
+import android.app.Service;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.os.Binder;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.support.annotation.Nullable;
+
+import net.osmand.PlatformUtil;
+import net.osmand.aidl.OsmandAidlApi.GpxBitmapCreatedCallback;
+import net.osmand.aidl.OsmandAidlApi.OsmandAppInitCallback;
+import net.osmand.aidl.OsmandAidlApi.SearchCompleteCallback;
+import net.osmand.aidlapi.IOsmAndAidlCallback;
+import net.osmand.aidlapi.IOsmAndAidlInterface;
+import net.osmand.aidlapi.calculateroute.CalculateRouteParams;
+import net.osmand.aidlapi.contextmenu.ContextMenuButtonsParams;
+import net.osmand.aidlapi.contextmenu.RemoveContextMenuButtonsParams;
+import net.osmand.aidlapi.contextmenu.UpdateContextMenuButtonsParams;
+import net.osmand.aidlapi.copyfile.CopyFileParams;
+import net.osmand.aidlapi.customization.CustomizationInfoParams;
+import net.osmand.aidlapi.customization.OsmandSettingsInfoParams;
+import net.osmand.aidlapi.customization.OsmandSettingsParams;
+import net.osmand.aidlapi.customization.SetWidgetsParams;
+import net.osmand.aidlapi.favorite.AFavorite;
+import net.osmand.aidlapi.favorite.AddFavoriteParams;
+import net.osmand.aidlapi.favorite.RemoveFavoriteParams;
+import net.osmand.aidlapi.favorite.UpdateFavoriteParams;
+import net.osmand.aidlapi.favorite.group.AFavoriteGroup;
+import net.osmand.aidlapi.favorite.group.AddFavoriteGroupParams;
+import net.osmand.aidlapi.favorite.group.RemoveFavoriteGroupParams;
+import net.osmand.aidlapi.favorite.group.UpdateFavoriteGroupParams;
+import net.osmand.aidlapi.gpx.AGpxBitmap;
+import net.osmand.aidlapi.gpx.AGpxFile;
+import net.osmand.aidlapi.gpx.ASelectedGpxFile;
+import net.osmand.aidlapi.gpx.CreateGpxBitmapParams;
+import net.osmand.aidlapi.gpx.HideGpxParams;
+import net.osmand.aidlapi.gpx.ImportGpxParams;
+import net.osmand.aidlapi.gpx.RemoveGpxParams;
+import net.osmand.aidlapi.gpx.ShowGpxParams;
+import net.osmand.aidlapi.gpx.StartGpxRecordingParams;
+import net.osmand.aidlapi.gpx.StopGpxRecordingParams;
+import net.osmand.aidlapi.map.ALatLon;
+import net.osmand.aidlapi.map.SetMapLocationParams;
+import net.osmand.aidlapi.maplayer.AddMapLayerParams;
+import net.osmand.aidlapi.maplayer.RemoveMapLayerParams;
+import net.osmand.aidlapi.maplayer.UpdateMapLayerParams;
+import net.osmand.aidlapi.maplayer.point.AddMapPointParams;
+import net.osmand.aidlapi.maplayer.point.RemoveMapPointParams;
+import net.osmand.aidlapi.maplayer.point.ShowMapPointParams;
+import net.osmand.aidlapi.maplayer.point.UpdateMapPointParams;
+import net.osmand.aidlapi.mapmarker.AMapMarker;
+import net.osmand.aidlapi.mapmarker.AddMapMarkerParams;
+import net.osmand.aidlapi.mapmarker.RemoveMapMarkerParams;
+import net.osmand.aidlapi.mapmarker.RemoveMapMarkersParams;
+import net.osmand.aidlapi.mapmarker.UpdateMapMarkerParams;
+import net.osmand.aidlapi.mapwidget.AddMapWidgetParams;
+import net.osmand.aidlapi.mapwidget.RemoveMapWidgetParams;
+import net.osmand.aidlapi.mapwidget.UpdateMapWidgetParams;
+import net.osmand.aidlapi.navdrawer.NavDrawerFooterParams;
+import net.osmand.aidlapi.navdrawer.NavDrawerHeaderParams;
+import net.osmand.aidlapi.navdrawer.NavDrawerItem;
+import net.osmand.aidlapi.navdrawer.SetNavDrawerItemsParams;
+import net.osmand.aidlapi.navigation.ANavigationUpdateParams;
+import net.osmand.aidlapi.navigation.ANavigationVoiceRouterMessageParams;
+import net.osmand.aidlapi.navigation.MuteNavigationParams;
+import net.osmand.aidlapi.navigation.NavigateGpxParams;
+import net.osmand.aidlapi.navigation.NavigateParams;
+import net.osmand.aidlapi.navigation.NavigateSearchParams;
+import net.osmand.aidlapi.navigation.PauseNavigationParams;
+import net.osmand.aidlapi.navigation.ResumeNavigationParams;
+import net.osmand.aidlapi.navigation.StopNavigationParams;
+import net.osmand.aidlapi.navigation.UnmuteNavigationParams;
+import net.osmand.aidlapi.note.StartAudioRecordingParams;
+import net.osmand.aidlapi.note.StartVideoRecordingParams;
+import net.osmand.aidlapi.note.StopRecordingParams;
+import net.osmand.aidlapi.note.TakePhotoNoteParams;
+import net.osmand.aidlapi.plugins.PluginParams;
+import net.osmand.aidlapi.search.SearchParams;
+import net.osmand.aidlapi.search.SearchResult;
+import net.osmand.aidlapi.tiles.ASqliteDbFile;
+import net.osmand.data.LatLon;
+import net.osmand.plus.OsmAndAppCustomization;
+import net.osmand.plus.OsmandApplication;
+import net.osmand.util.Algorithms;
+
+import org.apache.commons.logging.Log;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicLong;
+
+import static net.osmand.aidl.OsmandAidlApi.KEY_ON_CONTEXT_MENU_BUTTONS_CLICK;
+import static net.osmand.aidl.OsmandAidlApi.KEY_ON_NAV_DATA_UPDATE;
+import static net.osmand.aidl.OsmandAidlApi.KEY_ON_UPDATE;
+import static net.osmand.aidl.OsmandAidlApi.KEY_ON_VOICE_MESSAGE;
+import static net.osmand.aidlapi.OsmandAidlConstants.CANNOT_ACCESS_API_ERROR;
+import static net.osmand.aidlapi.OsmandAidlConstants.MIN_UPDATE_TIME_MS;
+import static net.osmand.aidlapi.OsmandAidlConstants.MIN_UPDATE_TIME_MS_ERROR;
+import static net.osmand.aidlapi.OsmandAidlConstants.UNKNOWN_API_ERROR;
+
+public class OsmandAidlServiceV2 extends Service implements AidlCallbackListenerV2 {
+
+ private static final Log LOG = PlatformUtil.getLog(OsmandAidlService.class);
+
+ private Map<Long, AidlCallbackParams> callbacks = new ConcurrentHashMap<>();
+ private Handler mHandler = null;
+ HandlerThread mHandlerThread = new HandlerThread("OsmAndAidlServiceV2Thread");
+
+ private final AtomicLong aidlCallbackId = new AtomicLong(0);
+
+ private OsmandApplication getApp() {
+ return (OsmandApplication) getApplication();
+ }
+
+ @Nullable
+ private OsmandAidlApi getApi(String reason) {
+ LOG.info("Request AIDL API V2 for " + reason);
+ OsmandAidlApi api = getApp().getAidlApi();
+ String pack = getApp().getPackageManager().getNameForUid(Binder.getCallingUid());
+ if (pack != null && !pack.equals(getApp().getPackageName()) && !api.isAppEnabled(pack)) {
+ return null;
+ }
+ return api;
+ }
+
+ @Override
+ public IBinder onBind(Intent intent) {
+ mHandlerThread.start();
+ mHandler = new Handler(mHandlerThread.getLooper());
+
+ // Return the interface
+ return mBinder;
+ }
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ OsmandAidlApi api = getApi("setting_listener");
+ if (api != null) {
+ api.aidlCallbackListenerV2 = this;
+ }
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+
+ callbacks.clear();
+ OsmandAidlApi api = getApi("clear_listener");
+ if (api != null) {
+ api.aidlCallbackListenerV2 = null;
+ }
+ mHandlerThread.quit();
+ }
+
+ private long getCallbackId() {
+ return aidlCallbackId.get();
+ }
+
+ private long getAndIncrementCallbackId() {
+ return aidlCallbackId.getAndIncrement();
+ }
+
+ @Override
+ public long addAidlCallback(IOsmAndAidlCallback callback, int key) {
+ long id = getAndIncrementCallbackId();
+ callbacks.put(id, new AidlCallbackParams(callback, key));
+ return id;
+ }
+
+ @Override
+ public boolean removeAidlCallback(long id) {
+ for (Long key : callbacks.keySet()) {
+ if (key == id) {
+ callbacks.remove(id);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public Map<Long, AidlCallbackParams> getAidlCallbacks() {
+ return callbacks;
+ }
+
+ private final IOsmAndAidlInterface.Stub mBinder = new IOsmAndAidlInterface.Stub() {
+
+ private void handleException(Exception e) {
+ LOG.error("AIDL V2 e.getMessage()", e);
+ }
+
+ @Override
+ public boolean refreshMap() {
+ try {
+ OsmandAidlApi api = getApi("refreshMap");
+ return api != null && api.reloadMap();
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean addFavoriteGroup(AddFavoriteGroupParams params) {
+ try {
+ OsmandAidlApi api = getApi("addFavoriteGroup");
+ if (params != null && api != null) {
+ AFavoriteGroup favoriteGroup = params.getFavoriteGroup();
+ if (favoriteGroup != null) {
+ return api.addFavoriteGroup(favoriteGroup.getName(), favoriteGroup.getColor(), favoriteGroup.isVisible());
+ }
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean removeFavoriteGroup(RemoveFavoriteGroupParams params) {
+ try {
+ OsmandAidlApi api = getApi("removeFavoriteGroup");
+ if (params != null && api != null) {
+ AFavoriteGroup favoriteGroup = params.getFavoriteGroup();
+ if (favoriteGroup != null) {
+ return api.removeFavoriteGroup(favoriteGroup.getName());
+ }
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean updateFavoriteGroup(UpdateFavoriteGroupParams params) {
+ try {
+ OsmandAidlApi api = getApi("updateFavoriteGroup");
+ if (params != null && api != null) {
+ AFavoriteGroup prevGroup = params.getFavoriteGroupPrev();
+ AFavoriteGroup newGroup = params.getFavoriteGroupNew();
+ if (prevGroup != null && newGroup != null) {
+ return api.updateFavoriteGroup(prevGroup.getName(), newGroup.getName(), newGroup.getColor(), newGroup.isVisible());
+ }
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean addFavorite(AddFavoriteParams params) {
+ try {
+ OsmandAidlApi api = getApi("addFavorite");
+ if (params != null && api != null) {
+ AFavorite fav = params.getFavorite();
+ if (fav != null) {
+ return api.addFavorite(fav.getLat(), fav.getLon(), fav.getName(), fav.getCategory(), fav.getDescription(), fav.getColor(), fav.isVisible());
+ }
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean removeFavorite(RemoveFavoriteParams params) {
+ try {
+ OsmandAidlApi api = getApi("removeFavorite");
+ if (params != null && api != null) {
+ AFavorite fav = params.getFavorite();
+ if (fav != null) {
+ return api.removeFavorite(fav.getName(), fav.getCategory(), fav.getLat(), fav.getLon());
+ }
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean updateFavorite(UpdateFavoriteParams params) {
+ try {
+ OsmandAidlApi api = getApi("updateFavorite");
+ if (params != null && api != null) {
+ AFavorite prevFav = params.getFavoritePrev();
+ AFavorite newFav = params.getFavoriteNew();
+ if (prevFav != null && newFav != null) {
+ return api.updateFavorite(prevFav.getName(), prevFav.getCategory(), prevFav.getLat(), prevFav.getLon(),
+ newFav.getName(), newFav.getCategory(), newFav.getDescription(), newFav.getLat(), newFav.getLon());
+ }
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean addMapMarker(AddMapMarkerParams params) {
+ try {
+ OsmandAidlApi api = getApi("addMapMarker");
+ if (params != null && api != null) {
+ AMapMarker mapMarker = params.getMarker();
+ if (mapMarker != null) {
+ return api.addMapMarker(mapMarker.getName(), mapMarker.getLatLon().getLatitude(), mapMarker.getLatLon().getLongitude());
+ }
+ }
+ return false;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ @Override
+ public boolean removeMapMarker(RemoveMapMarkerParams params) {
+ try {
+ OsmandAidlApi api = getApi("removeMapMarker");
+ if (params != null && api != null) {
+ AMapMarker mapMarker = params.getMarker();
+ if (mapMarker != null) {
+ ALatLon aLatLon = mapMarker.getLatLon();
+ return api.removeMapMarker(mapMarker.getName(), aLatLon.getLatitude(), aLatLon.getLongitude(), params.getIgnoreCoordinates());
+ }
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean updateMapMarker(UpdateMapMarkerParams params) {
+ try {
+ OsmandAidlApi api = getApi("updateMapMarker");
+ if (params != null && api != null) {
+ AMapMarker markerPrev = params.getMarkerPrev();
+ AMapMarker markerNew = params.getMarkerNew();
+ if (markerPrev != null && markerNew != null) {
+ ALatLon aLatLonPrev = markerPrev.getLatLon();
+ ALatLon aLatLonNew = markerNew.getLatLon();
+ LatLon prevLatLon = new LatLon(aLatLonPrev.getLatitude(), aLatLonPrev.getLongitude());
+ LatLon newLatLon = new LatLon(aLatLonNew.getLatitude(), aLatLonNew.getLongitude());
+
+ return api.updateMapMarker(markerPrev.getName(), prevLatLon, markerNew.getName(), newLatLon, params.getIgnoreCoordinates());
+ }
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean addMapWidget(AddMapWidgetParams params) {
+ try {
+ OsmandAidlApi api = getApi("addMapWidget");
+ return params != null && api != null && api.addMapWidget(new AidlMapWidgetWrapper(params.getWidget()));
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean removeMapWidget(RemoveMapWidgetParams params) {
+ try {
+ OsmandAidlApi api = getApi("removeMapWidget");
+ return params != null && api != null && api.removeMapWidget(params.getId());
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ @Override
+ public boolean updateMapWidget(UpdateMapWidgetParams params) {
+ try {
+ OsmandAidlApi api = getApi("updateMapWidget");
+ return params != null && api != null && api.updateMapWidget(new AidlMapWidgetWrapper(params.getWidget()));
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean showMapPoint(ShowMapPointParams params) {
+ try {
+ OsmandAidlApi api = getApi("showMapPoint");
+ return params != null && api != null && api.showMapPoint(params.getLayerId(), new AidlMapPointWrapper(params.getPoint()));
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean addMapPoint(AddMapPointParams params) {
+ try {
+ OsmandAidlApi api = getApi("addMapPoint");
+ return params != null && api != null && api.putMapPoint(params.getLayerId(), new AidlMapPointWrapper(params.getPoint()));
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean removeMapPoint(RemoveMapPointParams params) {
+ try {
+ OsmandAidlApi api = getApi("removeMapPoint");
+ return params != null && api != null && api.removeMapPoint(params.getLayerId(), params.getPointId());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean updateMapPoint(UpdateMapPointParams params) {
+ try {
+ OsmandAidlApi api = getApi("updateMapPoint");
+ return params != null && api != null && api.updateMapPoint(params.getLayerId(), new AidlMapPointWrapper(params.getPoint()), params.isUpdateOpenedMenuAndMap());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean addMapLayer(AddMapLayerParams params) {
+ try {
+ OsmandAidlApi api = getApi("addMapLayer");
+ return params != null && api != null && api.addMapLayer(new AidlMapLayerWrapper(params.getLayer()));
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean removeMapLayer(RemoveMapLayerParams params) {
+ try {
+ OsmandAidlApi api = getApi("removeMapLayer");
+ return params != null && api != null && api.removeMapLayer(params.getId());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean updateMapLayer(UpdateMapLayerParams params) {
+ try {
+ OsmandAidlApi api = getApi("updateMapLayer");
+ return params != null && api != null && api.updateMapLayer(new AidlMapLayerWrapper(params.getLayer()));
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean importGpx(ImportGpxParams params) {
+ try {
+ if (params != null && !Algorithms.isEmpty(params.getDestinationPath())) {
+ OsmandAidlApi api = getApi("importGpx");
+ if (api != null) {
+ if (params.getGpxFile() != null) {
+ return api.importGpxFromFile(params.getGpxFile(), params.getDestinationPath(),
+ params.getColor(), params.isShow());
+ } else if (params.getGpxUri() != null) {
+ return api.importGpxFromUri(params.getGpxUri(), params.getDestinationPath(),
+ params.getColor(), params.isShow());
+ } else if (params.getSourceRawData() != null) {
+ return api.importGpxFromData(params.getSourceRawData(), params.getDestinationPath(),
+ params.getColor(), params.isShow());
+ }
+ }
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean showGpx(ShowGpxParams params) {
+ try {
+ if (params != null && params.getFileName() != null) {
+ OsmandAidlApi api = getApi("showGpx");
+ return api != null && api.showGpx(params.getFileName());
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean hideGpx(HideGpxParams params) {
+ try {
+ if (params != null && params.getFileName() != null) {
+ OsmandAidlApi api = getApi("hideGpx");
+ return api != null && api.hideGpx(params.getFileName());
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean getActiveGpx(List<ASelectedGpxFile> files) {
+ try {
+ OsmandAidlApi api = getApi("getActiveGpx");
+ if (api != null && files != null) {
+ return api.getActiveGpxV2(files);
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean getImportedGpx(List<AGpxFile> files) {
+ try {
+ OsmandAidlApi api = getApi("getImportedGpx");
+ if (api != null && files != null) {
+ return api.getImportedGpxV2(files);
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean removeGpx(RemoveGpxParams params) {
+ try {
+ if (params != null && params.getFileName() != null) {
+ OsmandAidlApi api = getApi("removeGpx");
+ return api != null && api.removeGpx(params.getFileName());
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean setMapLocation(SetMapLocationParams params) {
+ try {
+ if (params != null) {
+ OsmandAidlApi api = getApi("setMapLocation");
+ return api != null && api.setMapLocation(params.getLatitude(), params.getLongitude(),
+ params.getZoom(), params.isAnimated());
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean calculateRoute(CalculateRouteParams params) {
+ return false;
+ }
+
+ @Override
+ public boolean startGpxRecording(StartGpxRecordingParams params) {
+ try {
+ OsmandAidlApi api = getApi("startGpxRecording");
+ return api != null && api.startGpxRecording();
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean stopGpxRecording(StopGpxRecordingParams params) {
+ try {
+ OsmandAidlApi api = getApi("stopGpxRecording");
+ return api != null && api.stopGpxRecording();
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean takePhotoNote(TakePhotoNoteParams params) {
+ try {
+ OsmandAidlApi api = getApi("takePhotoNote");
+ return params != null && api != null && api.takePhotoNote(params.getLatitude(), params.getLongitude());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean startVideoRecording(StartVideoRecordingParams params) {
+ try {
+ OsmandAidlApi api = getApi("startVideoRecording");
+ return params != null && api != null && api.startVideoRecording(params.getLatitude(), params.getLongitude());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean startAudioRecording(StartAudioRecordingParams params) {
+ try {
+ OsmandAidlApi api = getApi("startAudioRecording");
+ return params != null && api != null && api.startAudioRecording(params.getLatitude(), params.getLongitude());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean stopRecording(StopRecordingParams params) {
+ try {
+ OsmandAidlApi api = getApi("stopRecording");
+ return api != null && api.stopRecording();
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean navigate(NavigateParams params) {
+ try {
+ OsmandAidlApi api = getApi("navigate");
+ return params != null && api != null && api.navigate(
+ params.getStartName(), params.getStartLat(), params.getStartLon(),
+ params.getDestName(), params.getDestLat(), params.getDestLon(),
+ params.getProfile(), params.isForce());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean navigateGpx(NavigateGpxParams params) {
+ try {
+ OsmandAidlApi api = getApi("navigateGpx");
+ return params != null && api != null && api.navigateGpx(params.getData(), params.getUri(), params.isForce());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean pauseNavigation(PauseNavigationParams params) {
+ try {
+ OsmandAidlApi api = getApi("pauseNavigation");
+ return api != null && api.pauseNavigation();
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean resumeNavigation(ResumeNavigationParams params) {
+ try {
+ OsmandAidlApi api = getApi("resumeNavigation");
+ return api != null && api.resumeNavigation();
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean stopNavigation(StopNavigationParams params) {
+ try {
+ OsmandAidlApi api = getApi("stopNavigation");
+ return api != null && api.stopNavigation();
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean muteNavigation(MuteNavigationParams params) {
+ try {
+ OsmandAidlApi api = getApi("muteNavigation");
+ return api != null && api.muteNavigation();
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean unmuteNavigation(UnmuteNavigationParams params) {
+ try {
+ OsmandAidlApi api = getApi("unmuteNavigation");
+ return api != null && api.unmuteNavigation();
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean setNavDrawerItems(SetNavDrawerItemsParams params) {
+ try {
+ OsmandAidlApi api = getApi("setNavDrawerItems");
+ if (api != null && params != null) {
+ return api.setNavDrawerItems(params.getAppPackage(), convertNavDrawerItems(params.getItems()));
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean search(SearchParams params, final IOsmAndAidlCallback callback) {
+ try {
+ OsmandAidlApi api = getApi("search");
+ return params != null && api != null && api.search(params.getSearchQuery(), params.getSearchType(),
+ params.getLatitude(), params.getLongitude(), params.getRadiusLevel(), params.getTotalLimit(), new SearchCompleteCallback() {
+ @Override
+ public void onSearchComplete(List<AidlSearchResultWrapper> resultSet) {
+ try {
+ List<SearchResult> searchResults = new ArrayList<>();
+ for (AidlSearchResultWrapper item : resultSet) {
+ SearchResult result = new SearchResult(item.getLatitude(), item.getLongitude(), item.getLocalName(),
+ item.getLocalTypeName(), item.getAlternateName(), item.getOtherNames());
+ searchResults.add(result);
+ }
+ callback.onSearchComplete(searchResults);
+ } catch (RemoteException e) {
+ handleException(e);
+ }
+ }
+ });
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean navigateSearch(NavigateSearchParams params) {
+ try {
+ OsmandAidlApi api = getApi("navigateSearch");
+ return params != null && api != null && api.navigateSearch(
+ params.getStartName(), params.getStartLat(), params.getStartLon(),
+ params.getSearchQuery(), params.getSearchLat(), params.getSearchLon(),
+ params.getProfile(), params.isForce());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public long registerForUpdates(long updateTimeMS, IOsmAndAidlCallback callback) {
+ try {
+ if (updateTimeMS >= MIN_UPDATE_TIME_MS) {
+ long id = addAidlCallback(callback, KEY_ON_UPDATE);
+ startRemoteUpdates(updateTimeMS, id, callback);
+ return id;
+ } else {
+ return MIN_UPDATE_TIME_MS_ERROR;
+ }
+ } catch (Exception e) {
+ handleException(e);
+ return UNKNOWN_API_ERROR;
+ }
+ }
+
+ @Override
+ public boolean unregisterFromUpdates(long callbackId) {
+ try {
+ return removeAidlCallback(callbackId);
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean setNavDrawerLogo(String imageUri) {
+ try {
+ OsmandAidlApi api = getApi("setNavDrawerLogo");
+ return api != null && api.setNavDrawerLogo(imageUri);
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean setEnabledIds(List<String> ids) {
+ try {
+ OsmandAidlApi api = getApi("setFeaturesEnabledIds");
+ return api != null && api.setEnabledIds(ids);
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean setDisabledIds(List<String> ids) {
+ try {
+ OsmandAidlApi api = getApi("setFeaturesDisabledIds");
+ return api != null && api.setDisabledIds(ids);
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean setEnabledPatterns(List<String> patterns) {
+ try {
+ OsmandAidlApi api = getApi("setFeaturesEnabledPatterns");
+ return api != null && api.setEnabledPatterns(patterns);
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean setDisabledPatterns(List<String> patterns) {
+ try {
+ OsmandAidlApi api = getApi("setFeaturesDisabledPatterns");
+ return api != null && api.setDisabledPatterns(patterns);
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ void startRemoteUpdates(final long updateTimeMS, final long callbackId, final IOsmAndAidlCallback callback) {
+ try {
+ mHandler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ if (callbacks.containsKey(callbackId)) {
+ OsmandAidlApi api = getApi("isUpdateAllowed");
+ if (api != null && api.isUpdateAllowed()) {
+ callback.onUpdate();
+ }
+ startRemoteUpdates(updateTimeMS, callbackId, callback);
+ }
+ } catch (RemoteException e) {
+ handleException(e);
+ }
+ }
+ }, updateTimeMS);
+ } catch (Exception e) {
+ handleException(e);
+ }
+ }
+
+ @Override
+ public boolean regWidgetVisibility(SetWidgetsParams params) {
+ try {
+ OsmandAidlApi api = getApi("regWidgetVisibility");
+ return api != null && api.regWidgetVisibility(params.getWidgetKey(), params.getAppModesKeys());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean regWidgetAvailability(SetWidgetsParams params) {
+ try {
+ OsmandAidlApi api = getApi("regWidgetVisibility");
+ return api != null && api.regWidgetAvailability(params.getWidgetKey(), params.getAppModesKeys());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean customizeOsmandSettings(OsmandSettingsParams params) {
+ try {
+ OsmandAidlApi api = getApi("customizeOsmandSettings");
+ return api != null && api.customizeOsmandSettings(params.getSharedPreferencesName(), params.getBundle());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean getSqliteDbFiles(List<ASqliteDbFile> files) {
+ try {
+ OsmandAidlApi api = getApi("getSqliteDbFiles");
+ return api != null && api.getSqliteDbFilesV2(files);
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean getActiveSqliteDbFiles(List<ASqliteDbFile> files) {
+ try {
+ OsmandAidlApi api = getApi("getActiveSqliteDbFiles");
+ return api != null && api.getActiveSqliteDbFilesV2(files);
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean showSqliteDbFile(String fileName) {
+ try {
+ OsmandAidlApi api = getApi("showSqliteDbFile");
+ return api != null && api.showSqliteDbFile(fileName);
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean hideSqliteDbFile(String fileName) {
+ try {
+ OsmandAidlApi api = getApi("hideSqliteDbFile");
+ return api != null && api.hideSqliteDbFile(fileName);
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean setNavDrawerLogoWithParams(NavDrawerHeaderParams params) {
+ try {
+ OsmandAidlApi api = getApi("setNavDrawerLogoWithParams");
+ return api != null && api.setNavDrawerLogoWithParams(
+ params.getImageUri(), params.getPackageName(), params.getIntent());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean setNavDrawerFooterWithParams(NavDrawerFooterParams params) {
+ try {
+ OsmandAidlApi api = getApi("setNavDrawerFooterParams");
+ return api != null && api.setNavDrawerFooterWithParams(
+ params.getAppName(), params.getPackageName(), params.getIntent());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean restoreOsmand() {
+ try {
+ OsmandAidlApi api = getApi("restoreOsmand");
+ return api != null && api.restoreOsmand();
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean changePluginState(PluginParams params) {
+ try {
+ OsmandAidlApi api = getApi("changePluginState");
+ return api != null && api.changePluginState(params.getPluginId(), params.getNewState());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean registerForOsmandInitListener(final IOsmAndAidlCallback callback) {
+ try {
+ OsmandAidlApi api = getApi("registerForOsmandInitListener");
+ return api != null && api.registerForOsmandInitialization(new OsmandAppInitCallback() {
+ @Override
+ public void onAppInitialized() {
+ try {
+ callback.onAppInitialized();
+ } catch (Exception e) {
+ handleException(e);
+ }
+ }
+ });
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean getBitmapForGpx(CreateGpxBitmapParams params, final IOsmAndAidlCallback callback) {
+ try {
+ OsmandAidlApi api = getApi("getBitmapForGpx");
+ return params != null && api != null && api.getBitmapForGpx(params.getGpxUri(), params.getDensity(), params.getWidthPixels(), params.getHeightPixels(), params.getColor(), new GpxBitmapCreatedCallback() {
+ @Override
+ public void onGpxBitmapCreatedComplete(Bitmap gpxBitmap) {
+ try {
+ callback.onGpxBitmapCreated(new AGpxBitmap(gpxBitmap));
+ } catch (RemoteException e) {
+ handleException(e);
+ }
+ }
+ });
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public int copyFile(CopyFileParams params) {
+ try {
+ OsmandAidlApi api = getApi("copyFile");
+ if (api == null) {
+ return CANNOT_ACCESS_API_ERROR;
+ }
+ return api.copyFile(params.getFileName(), params.getFilePartData(), params.getStartTime(), params.isDone());
+ } catch (Exception e) {
+ handleException(e);
+ return UNKNOWN_API_ERROR;
+ }
+ }
+
+ @Override
+ public long registerForNavigationUpdates(ANavigationUpdateParams params, final IOsmAndAidlCallback callback) {
+ try {
+ OsmandAidlApi api = getApi("registerForNavUpdates");
+ if (api != null) {
+ if (!params.isSubscribeToUpdates() && params.getCallbackId() != -1) {
+ api.unregisterFromUpdates(params.getCallbackId());
+ removeAidlCallback(params.getCallbackId());
+ return -1;
+ } else {
+ long id = addAidlCallback(callback, KEY_ON_NAV_DATA_UPDATE);
+ api.registerForNavigationUpdates(id);
+ return id;
+ }
+ } else {
+ return -1;
+ }
+ } catch (Exception e) {
+ handleException(e);
+ return UNKNOWN_API_ERROR;
+ }
+ }
+
+ @Override
+ public long addContextMenuButtons(ContextMenuButtonsParams params, final IOsmAndAidlCallback callback) {
+ try {
+ OsmandAidlApi api = getApi("addContextMenuButtons");
+ if (api != null && params != null) {
+ long callbackId = params.getCallbackId();
+ if (callbackId == -1 || !callbacks.containsKey(callbackId)) {
+ callbackId = addAidlCallback(callback, KEY_ON_CONTEXT_MENU_BUTTONS_CLICK);
+ params.setCallbackId(callbackId);
+ }
+ boolean buttonsAdded = api.addContextMenuButtons(new AidlContextMenuButtonsWrapper(params), callbackId);
+ return buttonsAdded ? callbackId : -1;
+ } else {
+ return -1;
+ }
+ } catch (Exception e) {
+ handleException(e);
+ return UNKNOWN_API_ERROR;
+ }
+ }
+
+ @Override
+ public boolean removeContextMenuButtons(RemoveContextMenuButtonsParams params) {
+ try {
+ OsmandAidlApi api = getApi("removeContextMenuButtons");
+ if (params != null && api != null) {
+ long callbackId = params.getCallbackId();
+ removeAidlCallback(callbackId);
+ return api.removeContextMenuButtons(params.getParamsId(), callbackId);
+ }
+ return false;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ @Override
+ public boolean updateContextMenuButtons(UpdateContextMenuButtonsParams params) {
+ try {
+ OsmandAidlApi api = getApi("updateContextMenuButtons");
+ if (params != null && api != null) {
+ ContextMenuButtonsParams buttonsParams = params.getContextMenuButtonsParams();
+ return api.updateContextMenuButtons(new AidlContextMenuButtonsWrapper(buttonsParams), buttonsParams.getCallbackId());
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean areOsmandSettingsCustomized(OsmandSettingsInfoParams params) {
+ try {
+ OsmandAidlApi api = getApi("areOsmandSettingsCustomized");
+ return api != null && api.areOsmandSettingsCustomized(params.getSharedPreferencesName());
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean setCustomization(CustomizationInfoParams params) {
+ try {
+ OsmandAidlApi api = getApi("setCustomization");
+ if (api != null && params != null) {
+ OsmandAidlServiceV2.this.setCustomization(api, params);
+ return true;
+ }
+ return false;
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+
+ @Override
+ public long registerForVoiceRouterMessages(ANavigationVoiceRouterMessageParams params, final IOsmAndAidlCallback callback) {
+ try {
+ OsmandAidlApi api = getApi("registerForVoiceRouterMessages");
+ if (api != null) {
+ if (!params.isSubscribeToUpdates() && params.getCallbackId() != -1) {
+ api.unregisterFromVoiceRouterMessages(params.getCallbackId());
+ removeAidlCallback(params.getCallbackId());
+ return -1;
+ } else {
+ long id = addAidlCallback(callback, KEY_ON_VOICE_MESSAGE);
+ api.registerForVoiceRouterMessages(id);
+ return id;
+ }
+ } else {
+ return -1;
+ }
+ } catch (Exception e) {
+ handleException(e);
+ return UNKNOWN_API_ERROR;
+ }
+ }
+
+ @Override
+ public boolean removeAllActiveMapMarkers(RemoveMapMarkersParams params) {
+ try {
+ OsmandAidlApi api = getApi("removeAllActiveMapMarkers");
+ return api != null && api.removeAllActiveMapMarkers();
+ } catch (Exception e) {
+ handleException(e);
+ return false;
+ }
+ }
+ };
+
+ private void setCustomization(OsmandAidlApi api, CustomizationInfoParams params) {
+ NavDrawerHeaderParams navDrawerHeaderParams = params.getNavDrawerHeaderParams();
+ NavDrawerFooterParams navDrawerFooterParams = params.getNavDrawerFooterParams();
+ SetNavDrawerItemsParams navDrawerItemsParams = params.getNavDrawerItemsParams();
+
+ setNavDrawerParams(api, navDrawerHeaderParams, navDrawerFooterParams, navDrawerItemsParams);
+
+ OsmandSettingsParams settingsParams = params.getSettingsParams();
+ if (settingsParams != null) {
+ api.customizeOsmandSettings(settingsParams.getSharedPreferencesName(), settingsParams.getBundle());
+ }
+
+ ArrayList<SetWidgetsParams> visibilityWidgetsParams = params.getVisibilityWidgetsParams();
+ ArrayList<SetWidgetsParams> availabilityWidgetsParams = params.getAvailabilityWidgetsParams();
+
+ regWidgetsVisibility(api, visibilityWidgetsParams);
+ regWidgetsAvailability(api, availabilityWidgetsParams);
+
+ ArrayList<PluginParams> pluginsParams = params.getPluginsParams();
+ if (pluginsParams != null) {
+ changePluginsStatus(api, pluginsParams);
+ }
+
+ List<String> enabledIds = params.getFeaturesEnabledIds();
+ List<String> disabledIds = params.getFeaturesDisabledIds();
+
+ api.setEnabledIds(enabledIds);
+ api.setDisabledIds(disabledIds);
+
+ List<String> enabledPatterns = params.getFeaturesEnabledPatterns();
+ List<String> disabledPatterns = params.getFeaturesDisabledPatterns();
+
+ api.setEnabledPatterns(enabledPatterns);
+ api.setDisabledPatterns(disabledPatterns);
+ }
+
+ private void setNavDrawerParams(OsmandAidlApi api, NavDrawerHeaderParams navDrawerHeaderParams, NavDrawerFooterParams navDrawerFooterParams, SetNavDrawerItemsParams navDrawerItemsParams) {
+ if (navDrawerHeaderParams != null) {
+ api.setNavDrawerLogoWithParams(navDrawerHeaderParams.getImageUri(), navDrawerHeaderParams.getPackageName(), navDrawerHeaderParams.getIntent());
+ }
+ if (navDrawerFooterParams != null) {
+ api.setNavDrawerFooterWithParams(navDrawerFooterParams.getAppName(), navDrawerFooterParams.getPackageName(), navDrawerFooterParams.getIntent());
+ }
+ if (navDrawerItemsParams != null) {
+ api.setNavDrawerItems(navDrawerItemsParams.getAppPackage(), convertNavDrawerItems(navDrawerItemsParams.getItems()));
+ }
+ }
+
+ private void regWidgetsVisibility(OsmandAidlApi api, ArrayList<SetWidgetsParams> visibilityWidgetsParams) {
+ for (SetWidgetsParams setWidgetsParams : visibilityWidgetsParams) {
+ api.regWidgetVisibility(setWidgetsParams.getWidgetKey(), setWidgetsParams.getAppModesKeys());
+ }
+ }
+
+ private void regWidgetsAvailability(OsmandAidlApi api, ArrayList<SetWidgetsParams> availabilityWidgetsParams) {
+ for (SetWidgetsParams setWidgetsParams : availabilityWidgetsParams) {
+ api.regWidgetAvailability(setWidgetsParams.getWidgetKey(), setWidgetsParams.getAppModesKeys());
+ }
+ }
+
+ public void changePluginsStatus(OsmandAidlApi api, List<PluginParams> pluginsParams) {
+ for (PluginParams pluginParams : pluginsParams) {
+ api.changePluginState(pluginParams.getPluginId(), pluginParams.getNewState());
+ }
+ }
+
+ private List<OsmAndAppCustomization.NavDrawerItem> convertNavDrawerItems(List<NavDrawerItem> drawerItems) {
+ List<OsmAndAppCustomization.NavDrawerItem> customizationItems = new ArrayList<>();
+ for (NavDrawerItem item : drawerItems) {
+ customizationItems.add(new OsmAndAppCustomization.NavDrawerItem(item.getName(), item.getUri(), item.getIconName(), item.getFlags()));
+ }
+ return customizationItems;
+ }
+
+ public static class AidlCallbackParams {
+ private IOsmAndAidlCallback callback;
+ private long key;
+
+ AidlCallbackParams(IOsmAndAidlCallback callback, long key) {
+ this.callback = callback;
+
+ this.key = key;
+ }
+
+ public IOsmAndAidlCallback getCallback() {
+ return callback;
+ }
+
+ public void setCallback(IOsmAndAidlCallback callback) {
+ this.callback = callback;
+ }
+
+ public long getKey() {
+ return key;
+ }
+
+ public void setKey(long key) {
+ this.key = key;
+ }
+ }
+} \ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/aidl/navigation/OnVoiceNavigationParams.java b/OsmAnd/src/net/osmand/aidl/navigation/OnVoiceNavigationParams.java
index 20fd34e13e..523fe0b682 100644
--- a/OsmAnd/src/net/osmand/aidl/navigation/OnVoiceNavigationParams.java
+++ b/OsmAnd/src/net/osmand/aidl/navigation/OnVoiceNavigationParams.java
@@ -37,6 +37,14 @@ public class OnVoiceNavigationParams implements Parcelable {
}
};
+ public List<String> getCommands() {
+ return cmds;
+ }
+
+ public List<String> getPlayed() {
+ return played;
+ }
+
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeStringList(cmds);
diff --git a/OsmAnd/src/net/osmand/plus/AppInitializer.java b/OsmAnd/src/net/osmand/plus/AppInitializer.java
index 053b787b33..cfb6a127bb 100644
--- a/OsmAnd/src/net/osmand/plus/AppInitializer.java
+++ b/OsmAnd/src/net/osmand/plus/AppInitializer.java
@@ -499,6 +499,7 @@ public class AppInitializer implements IProgress {
}
app.travelDbHelper = startupInit(app.travelDbHelper, TravelDbHelper.class);
app.lockHelper = startupInit(new LockHelper(app), LockHelper.class);
+ app.settingsHelper = startupInit(new SettingsHelper(app), SettingsHelper.class);
initOpeningHoursParser();
diff --git a/OsmAnd/src/net/osmand/plus/ApplicationMode.java b/OsmAnd/src/net/osmand/plus/ApplicationMode.java
index 94a4ec5de3..b157428939 100644
--- a/OsmAnd/src/net/osmand/plus/ApplicationMode.java
+++ b/OsmAnd/src/net/osmand/plus/ApplicationMode.java
@@ -183,6 +183,10 @@ public class ApplicationMode {
public static class ApplicationModeBuilder {
private ApplicationMode applicationMode;
+ public ApplicationMode getApplicationMode() {
+ return applicationMode;
+ }
+
private ApplicationMode reg() {
values.add(applicationMode);
defaultValues.add(applicationMode);
@@ -347,7 +351,7 @@ public class ApplicationMode {
}
public static ApplicationModeBuilder createCustomMode(ApplicationMode parent, String userProfileTitle, String stringKey) {
- return create(parent,-1, stringKey).userProfileTitle(userProfileTitle);
+ return create(parent, -1, stringKey).userProfileTitle(userProfileTitle);
}
@@ -622,6 +626,31 @@ public class ApplicationMode {
}
}
+ public static ApplicationModeBuilder fromJson(OsmandApplication app, String json) {
+ Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
+ ApplicationModeBean mb = gson.fromJson(json, ApplicationModeBean.class);
+
+ ApplicationModeBuilder b = createCustomMode(valueOfStringKey(mb.parent, null),
+ mb.userProfileName, mb.stringKey);
+ b.setRouteService(mb.routeService).setRoutingProfile(mb.routingProfile);
+ b.icon(app, mb.iconName);
+ b.setColor(mb.iconColor);
+ return b;
+ }
+
+ public String toJson() {
+ ApplicationModeBean mb = new ApplicationModeBean();
+ mb.userProfileName = userProfileName;
+ mb.iconColor = iconColor;
+ mb.iconName = iconResName;
+ mb.parent = parentAppMode != null ? parentAppMode.getStringKey() : null;
+ mb.stringKey = stringKey;
+ mb.routeService = routeService;
+ mb.routingProfile = routingProfile;
+ Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
+ return gson.toJson(mb);
+ }
+
private static void initCustomModes(OsmandApplication app){
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
Type t = new TypeToken<ArrayList<ApplicationModeBean>>() {}.getType();
@@ -640,7 +669,6 @@ public class ApplicationMode {
}
-
private static void saveCustomModeToSettings(OsmandSettings settings){
List<ApplicationModeBean> customModes = new ArrayList<>();
for (ApplicationMode mode : values) {
diff --git a/OsmAnd/src/net/osmand/plus/GPXDatabase.java b/OsmAnd/src/net/osmand/plus/GPXDatabase.java
index e4a4f20692..9673b186cc 100644
--- a/OsmAnd/src/net/osmand/plus/GPXDatabase.java
+++ b/OsmAnd/src/net/osmand/plus/GPXDatabase.java
@@ -473,8 +473,11 @@ public class GPXDatabase {
}
public boolean updateAnalysis(GpxDataItem item, GPXTrackAnalysis a) {
+ if (a == null) {
+ return false;
+ }
SQLiteConnection db = openConnection(false);
- if (db != null && a != null) {
+ if (db != null) {
try {
String fileName = getFileName(item.file);
String fileDir = getFileDir(item.file);
diff --git a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java
index 78ac863c0b..22d214b7bd 100644
--- a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java
+++ b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java
@@ -572,7 +572,7 @@ public class GpxSelectionHelper {
app.getSettings().SELECTED_GPX.set(ar.toString());
}
- private SelectedGpxFile selectGpxFileImpl(GPXFile gpx, boolean show, boolean notShowNavigationDialog, boolean syncGroup, boolean selectedByUser) {
+ private SelectedGpxFile selectGpxFileImpl(GPXFile gpx, GpxDataItem dataItem, boolean show, boolean notShowNavigationDialog, boolean syncGroup, boolean selectedByUser) {
boolean displayed;
SelectedGpxFile sf;
if (gpx != null && gpx.showCurrentTrack) {
@@ -588,6 +588,9 @@ public class GpxSelectionHelper {
displayed = sf != null;
if (show && sf == null) {
sf = new SelectedGpxFile();
+ if (dataItem != null && dataItem.getColor() != 0) {
+ gpx.setColor(dataItem.getColor());
+ }
sf.setGpxFile(gpx);
sf.notShowNavigationDialog = notShowNavigationDialog;
sf.selectedByUser = selectedByUser;
@@ -612,20 +615,18 @@ public class GpxSelectionHelper {
return selectGpxFile(gpx, show, notShowNavigationDialog, true, true, true);
}
- public SelectedGpxFile selectGpxFile(GPXFile gpx, boolean show, boolean notShowNavigationDialog, boolean syncGroup, boolean selectedByUser) {
- SelectedGpxFile sf = selectGpxFileImpl(gpx, show, notShowNavigationDialog, syncGroup, selectedByUser);
+ public SelectedGpxFile selectGpxFile(GPXFile gpx, GpxDataItem dataItem, boolean show, boolean notShowNavigationDialog, boolean syncGroup, boolean selectedByUser) {
+ SelectedGpxFile sf = selectGpxFileImpl(gpx, dataItem, show, notShowNavigationDialog, syncGroup, selectedByUser);
saveCurrentSelections();
return sf;
}
public SelectedGpxFile selectGpxFile(GPXFile gpx, boolean show, boolean notShowNavigationDialog, boolean syncGroup, boolean selectedByUser, boolean canAddToMarkers) {
- if (canAddToMarkers && show) {
- GPXDatabase.GpxDataItem dataItem = app.getGpxDatabase().getItem(new File(gpx.path));
- if (dataItem != null && dataItem.isShowAsMarkers()) {
- app.getMapMarkersHelper().addOrEnableGroup(gpx);
- }
+ GpxDataItem dataItem = app.getGpxDatabase().getItem(new File(gpx.path));
+ if (canAddToMarkers && show && dataItem != null && dataItem.isShowAsMarkers()) {
+ app.getMapMarkersHelper().addOrEnableGroup(gpx);
}
- return selectGpxFile(gpx, show, notShowNavigationDialog, syncGroup, selectedByUser);
+ return selectGpxFile(gpx, dataItem, show, notShowNavigationDialog, syncGroup, selectedByUser);
}
public void clearPoints(GPXFile gpxFile) {
diff --git a/OsmAnd/src/net/osmand/plus/OsmAndAppCustomization.java b/OsmAnd/src/net/osmand/plus/OsmAndAppCustomization.java
index 824de9449c..ea97bf83d2 100644
--- a/OsmAnd/src/net/osmand/plus/OsmAndAppCustomization.java
+++ b/OsmAnd/src/net/osmand/plus/OsmAndAppCustomization.java
@@ -16,13 +16,6 @@ import android.widget.ArrayAdapter;
import net.osmand.IProgress;
import net.osmand.IndexConstants;
import net.osmand.aidl.OsmandAidlApi;
-import net.osmand.aidl.customization.CustomizationInfoParams;
-import net.osmand.aidl.customization.OsmandSettingsParams;
-import net.osmand.aidl.customization.SetWidgetsParams;
-import net.osmand.aidl.navdrawer.NavDrawerFooterParams;
-import net.osmand.aidl.navdrawer.NavDrawerHeaderParams;
-import net.osmand.aidl.navdrawer.SetNavDrawerItemsParams;
-import net.osmand.aidl.plugins.PluginParams;
import net.osmand.data.LocationPoint;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.PluginsActivity;
@@ -52,7 +45,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_ITEM_ID_SCHEME;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_ITEM_ID_SCHEME;
public class OsmAndAppCustomization {
@@ -63,7 +56,10 @@ public class OsmAndAppCustomization {
private Bitmap navDrawerLogo;
private ArrayList<String> navDrawerParams;
- private NavDrawerFooterParams navDrawerFooterParams;
+
+ private String navDrawerFooterIntent;
+ private String navDrawerFooterAppName;
+ private String navDrawerFooterPackageName;
private Set<String> featuresEnabledIds = new HashSet<>();
private Set<String> featuresDisabledIds = new HashSet<>();
@@ -253,13 +249,15 @@ public class OsmAndAppCustomization {
return true;
}
- public boolean setNavDrawerFooterParams(NavDrawerFooterParams params) {
- navDrawerFooterParams = params;
+ public boolean setNavDrawerFooterParams(String uri, @Nullable String packageName, @Nullable String intent) {
+ navDrawerFooterAppName = uri;
+ navDrawerFooterIntent = intent;
+ navDrawerFooterPackageName = packageName;
return true;
}
- public NavDrawerFooterParams getNavFooterParams() {
- return navDrawerFooterParams;
+ public String getNavFooterAppName() {
+ return navDrawerFooterAppName;
}
public void setFeaturesEnabledIds(@NonNull Collection<String> ids) {
@@ -300,89 +298,6 @@ public class OsmAndAppCustomization {
return set;
}
- public void regWidgetsVisibility(@NonNull ArrayList<SetWidgetsParams> visibilityWidgetsParams) {
- for (SetWidgetsParams setWidgetsParams : visibilityWidgetsParams) {
- regWidgetVisibility(setWidgetsParams.getWidgetKey(), setWidgetsParams.getAppModesKeys());
- }
- }
-
- public void regWidgetsAvailability(@NonNull ArrayList<SetWidgetsParams> availabilityWidgetsParams) {
- for (SetWidgetsParams setWidgetsParams : availabilityWidgetsParams) {
- regWidgetAvailability(setWidgetsParams.getWidgetKey(), setWidgetsParams.getAppModesKeys());
- }
- }
-
- public void setCustomization(CustomizationInfoParams params) {
- OsmandSettingsParams settingsParams = params.getSettingsParams();
- if (settingsParams != null) {
- customizeOsmandSettings(settingsParams.getSharedPreferencesName(), settingsParams.getBundle());
- }
- NavDrawerHeaderParams navDrawerHeaderParams = params.getNavDrawerHeaderParams();
- NavDrawerFooterParams navDrawerFooterParams = params.getNavDrawerFooterParams();
- SetNavDrawerItemsParams navDrawerItemsParams = params.getNavDrawerItemsParams();
-
- setNavDrawerParams(navDrawerHeaderParams, navDrawerFooterParams, navDrawerItemsParams);
-
- ArrayList<SetWidgetsParams> visibilityWidgetsParams = params.getVisibilityWidgetsParams();
- ArrayList<SetWidgetsParams> availabilityWidgetsParams = params.getAvailabilityWidgetsParams();
-
- setWidgetsParams(visibilityWidgetsParams, availabilityWidgetsParams);
-
- ArrayList<PluginParams> pluginsParams = params.getPluginsParams();
- if (pluginsParams != null) {
- changePluginsStatus(pluginsParams);
- }
-
- List<String> enabledIds = params.getFeaturesEnabledIds();
- List<String> disabledIds = params.getFeaturesDisabledIds();
-
- setFeaturesIds(enabledIds, disabledIds);
-
- List<String> enabledPatterns = params.getFeaturesEnabledPatterns();
- List<String> disabledPatterns = params.getFeaturesDisabledPatterns();
-
- setFeaturesPatterns(enabledPatterns, disabledPatterns);
- }
-
- public void setNavDrawerParams(NavDrawerHeaderParams navDrawerHeaderParams, NavDrawerFooterParams navDrawerFooterParams, SetNavDrawerItemsParams navDrawerItemsParams) {
- if (navDrawerHeaderParams != null) {
- setNavDrawerLogoWithParams(navDrawerHeaderParams.getImageUri(), navDrawerHeaderParams.getPackageName(), navDrawerHeaderParams.getIntent());
- }
- if (navDrawerFooterParams != null) {
- setNavDrawerFooterParams(navDrawerFooterParams);
- }
- if (navDrawerItemsParams != null) {
- setNavDrawerItems(navDrawerItemsParams.getAppPackage(), navDrawerItemsParams.getItems());
- }
- }
-
- public void setWidgetsParams(ArrayList<SetWidgetsParams> visibilityWidgetsParams, ArrayList<SetWidgetsParams> availabilityWidgetsParams) {
- if (visibilityWidgetsParams != null) {
- regWidgetsVisibility(visibilityWidgetsParams);
- }
- if (availabilityWidgetsParams != null) {
- regWidgetsAvailability(availabilityWidgetsParams);
- }
- }
-
- public void setFeaturesIds(List<String> enabledIds, List<String> disabledIds) {
- if (enabledIds != null) {
- setFeaturesEnabledIds(enabledIds);
- }
- if (disabledIds != null) {
- setFeaturesDisabledIds(disabledIds);
- }
- }
-
- public void setFeaturesPatterns(List<String> enabledPatterns, List<String> disabledPatterns) {
- if (enabledPatterns != null) {
- setFeaturesEnabledPatterns(enabledPatterns);
- }
- if (disabledPatterns != null) {
- setFeaturesDisabledPatterns(disabledPatterns);
- }
- }
-
public boolean isWidgetVisible(@NonNull String key, ApplicationMode appMode) {
Set<ApplicationMode> set = widgetsVisibilityMap.get(key);
if (set == null) {
@@ -404,25 +319,19 @@ public class OsmAndAppCustomization {
return setNavDrawerLogo(imageUri, packageName, intent);
}
- public void changePluginsStatus(List<PluginParams> pluginsParams) {
- for (PluginParams pluginParams : pluginsParams) {
- changePluginStatus(pluginParams);
- }
- }
-
- public boolean changePluginStatus(PluginParams params) {
- if (params.getNewState() == 0) {
+ public boolean changePluginStatus(String pluginId, int newState) {
+ if (newState == 0) {
for (OsmandPlugin plugin : OsmandPlugin.getEnabledPlugins()) {
- if (plugin.getId().equals(params.getPluginId())) {
+ if (plugin.getId().equals(pluginId)) {
OsmandPlugin.enablePlugin(null, app, plugin, false);
}
}
return true;
}
- if (params.getNewState() == 1) {
+ if (newState == 1) {
for (OsmandPlugin plugin : OsmandPlugin.getAvailablePlugins()) {
- if (plugin.getId().equals(params.getPluginId())) {
+ if (plugin.getId().equals(pluginId)) {
OsmandPlugin.enablePlugin(null, app, plugin, true);
}
}
@@ -432,7 +341,7 @@ public class OsmAndAppCustomization {
return false;
}
- public boolean setNavDrawerItems(String appPackage, List<net.osmand.aidl.navdrawer.NavDrawerItem> items) {
+ public boolean setNavDrawerItems(String appPackage, List<NavDrawerItem> items) {
if (!TextUtils.isEmpty(appPackage) && items != null) {
clearNavDrawerItems(appPackage);
if (items.isEmpty()) {
@@ -441,11 +350,9 @@ public class OsmAndAppCustomization {
List<NavDrawerItem> newItems = new ArrayList<>(MAX_NAV_DRAWER_ITEMS_PER_APP);
boolean success = true;
for (int i = 0; i < items.size() && i <= MAX_NAV_DRAWER_ITEMS_PER_APP; i++) {
- net.osmand.aidl.navdrawer.NavDrawerItem item = items.get(i);
- String name = item.getName();
- String uri = item.getUri();
- if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(uri)) {
- newItems.add(new NavDrawerItem(name, uri, item.getIconName(), item.getFlags()));
+ NavDrawerItem item = items.get(i);
+ if (!TextUtils.isEmpty(item.name) && !TextUtils.isEmpty(item.uri)) {
+ newItems.add(item);
} else {
success = false;
break;
@@ -654,7 +561,7 @@ public class OsmAndAppCustomization {
this.listeners.remove(listener);
}
- private static class NavDrawerItem {
+ public static class NavDrawerItem {
static final String NAME_KEY = "name";
static final String URI_KEY = "uri";
@@ -666,7 +573,7 @@ public class OsmAndAppCustomization {
private String iconName;
private int flags;
- NavDrawerItem(String name, String uri, String iconName, int flags) {
+ public NavDrawerItem(String name, String uri, String iconName, int flags) {
this.name = name;
this.uri = uri;
this.iconName = iconName;
diff --git a/OsmAnd/src/net/osmand/plus/OsmAndLocationSimulation.java b/OsmAnd/src/net/osmand/plus/OsmAndLocationSimulation.java
index a5ed402e78..0fee27c79f 100644
--- a/OsmAnd/src/net/osmand/plus/OsmAndLocationSimulation.java
+++ b/OsmAnd/src/net/osmand/plus/OsmAndLocationSimulation.java
@@ -16,6 +16,7 @@ import android.widget.Toast;
import net.osmand.CallbackWithObject;
import net.osmand.GPXUtilities;
import net.osmand.Location;
+import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.helpers.GpxUiHelper;
import net.osmand.plus.routing.RouteProvider.GPXRouteParamsBuilder;
@@ -78,6 +79,7 @@ public class OsmAndLocationSimulation {
public void onClick(DialogInterface dialog, int which) {
boolean gpxNavigation = radioGPX.isChecked();
if (gpxNavigation) {
+ boolean nightMode = ma instanceof MapActivity ? app.getDaynightHelper().isNightModeForMapControls() : !app.getSettings().isLightContent();
GpxUiHelper.selectGPXFile(ma, false, false, new CallbackWithObject<GPXUtilities.GPXFile[]>() {
@Override
public boolean processResult(GPXUtilities.GPXFile[] result) {
@@ -88,7 +90,7 @@ public class OsmAndLocationSimulation {
}
return true;
}
- });
+ }, nightMode);
} else {
List<Location> currentRoute = app.getRoutingHelper().getCurrentCalculatedRoute();
if (currentRoute.isEmpty()) {
diff --git a/OsmAnd/src/net/osmand/plus/OsmandApplication.java b/OsmAnd/src/net/osmand/plus/OsmandApplication.java
index 6d7abb46fe..236f2583a3 100644
--- a/OsmAnd/src/net/osmand/plus/OsmandApplication.java
+++ b/OsmAnd/src/net/osmand/plus/OsmandApplication.java
@@ -136,6 +136,7 @@ public class OsmandApplication extends MultiDexApplication {
InAppPurchaseHelper inAppPurchaseHelper;
MapViewTrackingUtilities mapViewTrackingUtilities;
LockHelper lockHelper;
+ SettingsHelper settingsHelper;
private RoutingConfiguration.Builder routingConfig;
private Locale preferredLocale = null;
@@ -335,6 +336,10 @@ public class OsmandApplication extends MultiDexApplication {
return lockHelper;
}
+ public SettingsHelper getSettingsHelper() {
+ return settingsHelper;
+ }
+
public synchronized DownloadIndexesThread getDownloadThread() {
if(downloadIndexesThread == null) {
downloadIndexesThread = new DownloadIndexesThread(this);
diff --git a/OsmAnd/src/net/osmand/plus/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/OsmandSettings.java
index 623e9f13fe..1aa1b81f81 100644
--- a/OsmAnd/src/net/osmand/plus/OsmandSettings.java
+++ b/OsmAnd/src/net/osmand/plus/OsmandSettings.java
@@ -45,17 +45,11 @@ import net.osmand.util.Algorithms;
import org.json.JSONException;
import org.json.JSONObject;
-import java.io.BufferedOutputStream;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
@@ -157,8 +151,8 @@ public class OsmandSettings {
private final OsmandApplication ctx;
private PreferencesDataStore dataStore;
private SettingsAPI settingsAPI;
- private Object globalPreferences;
private Object defaultProfilePreferences;
+ private Object globalPreferences;
private Object profilePreferences;
private ApplicationMode currentMode;
private Map<String, OsmandPreference<?>> registeredPreferences =
@@ -287,7 +281,7 @@ public class OsmandSettings {
}
}
if (metricSystem != null) {
- METRIC_SYSTEM.set(metricSystem);
+ METRIC_SYSTEM.setModeValue(mode, metricSystem);
return true;
}
} else if (preference == SPEED_SYSTEM) {
@@ -306,7 +300,7 @@ public class OsmandSettings {
}
}
if (speedSystem != null) {
- SPEED_SYSTEM.set(speedSystem);
+ SPEED_SYSTEM.setModeValue(mode, speedSystem);
return true;
}
} else if (preference instanceof BooleanPreference) {
@@ -396,6 +390,7 @@ public class OsmandSettings {
if (aidlApi != null) {
aidlApi.loadConnectedApps();
OsmandPlugin.updateActivatedPlugins(ctx);
+ ctx.poiFilters.loadSelectedPoiFilters();
}
fireEvent(oldMode);
@@ -539,10 +534,6 @@ public class OsmandSettings {
return this;
}
- public boolean isGlobal() {
- return global;
- }
-
public CommonPreference<T> cache() {
cache = true;
return this;
@@ -665,48 +656,46 @@ public class OsmandSettings {
@Override
public boolean writeToJson(JSONObject json, ApplicationMode appMode) throws JSONException {
if (appMode != null) {
- if (isSetForMode(appMode)) {
- json.put(getId(), asStringModeValue(appMode));
+ if (!global) {
+ String value = asStringModeValue(appMode);
+ if (value != null) {
+ json.put(getId(), value);
+ }
return true;
}
} else if (global) {
- if (isSet()) {
- json.put(getId(), asString());
- return true;
+ String value = asString();
+ if (value != null) {
+ json.put(getId(), value);
}
+ return true;
}
return false;
}
@Override
public void readFromJson(JSONObject json, ApplicationMode appMode) throws JSONException {
- if (isGlobal()) {
- String globalValue = json.getString(getId());
- if (globalValue != null) {
- set(parseString(globalValue));
- }
- } else {
- Object jsonModeValuesObj = json.get(getId());
- if (jsonModeValuesObj instanceof JSONObject) {
- JSONObject jsonModeValues = (JSONObject) jsonModeValuesObj;
- for (ApplicationMode m : ApplicationMode.allPossibleValues()) {
- String modeValue = jsonModeValues.getString(m.getStringKey());
- if (modeValue != null) {
- setModeValue(m, parseString(modeValue));
- }
- }
+ if (appMode != null) {
+ if (!global) {
+ String modeValue = json.getString(getId());
+ setModeValue(appMode, parseString(modeValue));
}
+ } else if (global) {
+ String globalValue = json.getString(getId());
+ set(parseString(globalValue));
}
}
@Override
public String asString() {
- return get().toString();
+ T o = get();
+ return o != null ? o.toString() : null;
}
@Override
public String asStringModeValue(ApplicationMode m) {
- return getModeValue(m).toString();
+ T v = getModeValue(m);
+ return v != null ? v.toString() : null;
}
}
@@ -1366,9 +1355,9 @@ public class OsmandSettings {
}
- public final OsmandPreference<Boolean> SHOW_POI_LABEL = new BooleanPreference("show_poi_label", false).makeGlobal();
+ public final OsmandPreference<Boolean> SHOW_POI_LABEL = new BooleanPreference("show_poi_label", false).makeProfile();
- public final OsmandPreference<Boolean> SHOW_MAPILLARY = new BooleanPreference("show_mapillary", false).makeGlobal();
+ public final OsmandPreference<Boolean> SHOW_MAPILLARY = new BooleanPreference("show_mapillary", false).makeProfile();
public final OsmandPreference<Boolean> MAPILLARY_FIRST_DIALOG_SHOWN = new BooleanPreference("mapillary_first_dialog_shown", false).makeGlobal();
public final OsmandPreference<Boolean> ONLINE_PHOTOS_ROW_COLLAPSED = new BooleanPreference("mapillary_menu_collapsed", false).makeGlobal();
public final OsmandPreference<Boolean> WEBGL_SUPPORTED = new BooleanPreference("webgl_supported", true).makeGlobal();
@@ -1808,15 +1797,15 @@ public class OsmandSettings {
public final OsmandPreference<Integer> BT_SCO_DELAY = new IntPreference("bt_sco_delay", 1500).makeGlobal().cache();
// this value string is synchronized with settings_pref.xml preference name
- public final CommonPreference<Boolean> MAP_ONLINE_DATA = new BooleanPreference("map_online_data", false).makeGlobal();
+ public final CommonPreference<Boolean> MAP_ONLINE_DATA = new BooleanPreference("map_online_data", false).makeProfile();
public final CommonPreference<String> CONTOUR_LINES_ZOOM = new StringPreference("contour_lines_zoom", null).makeGlobal().cache();
// this value string is synchronized with settings_pref.xml preference name
- public final CommonPreference<String> MAP_OVERLAY = new StringPreference("map_overlay", null).makeGlobal().cache();
+ public final CommonPreference<String> MAP_OVERLAY = new StringPreference("map_overlay", null).makeProfile().cache();
// this value string is synchronized with settings_pref.xml preference name
- public final CommonPreference<String> MAP_UNDERLAY = new StringPreference("map_underlay", null).makeGlobal().cache();
+ public final CommonPreference<String> MAP_UNDERLAY = new StringPreference("map_underlay", null).makeProfile().cache();
// this value string is synchronized with settings_pref.xml preference name
public final CommonPreference<Integer> MAP_OVERLAY_TRANSPARENCY = new IntPreference("overlay_transparency",
@@ -1828,7 +1817,7 @@ public class OsmandSettings {
// this value string is synchronized with settings_pref.xml preference name
public final CommonPreference<String> MAP_TILE_SOURCES = new StringPreference("map_tile_sources",
- TileSourceManager.getMapnikSource().getName()).makeGlobal();
+ TileSourceManager.getMapnikSource().getName()).makeProfile();
public final CommonPreference<LayerTransparencySeekbarMode> LAYER_TRANSPARENCY_SEEKBAR_MODE =
new EnumIntPreference<>("layer_transparency_seekbar_mode", LayerTransparencySeekbarMode.UNDEFINED, LayerTransparencySeekbarMode.values());
@@ -1856,7 +1845,7 @@ public class OsmandSettings {
MAP_MARKERS_MODE.setModeDefaultValue(ApplicationMode.PEDESTRIAN, MapMarkersMode.TOOLBAR);
}
- public final OsmandPreference<Boolean> SHOW_MAP_MARKERS = new BooleanPreference("show_map_markers", true).makeGlobal();
+ public final OsmandPreference<Boolean> SHOW_MAP_MARKERS = new BooleanPreference("show_map_markers", true).makeProfile();
public final OsmandPreference<Boolean> SHOW_COORDINATES_WIDGET = new BooleanPreference("show_coordinates_widget", false).makeProfile().cache();
@@ -2924,7 +2913,7 @@ public class OsmandSettings {
public final OsmandPreference<String> LAST_SELECTED_GPX_TRACK_FOR_NEW_POINT = new StringPreference("last_selected_gpx_track_for_new_point", null).makeGlobal().cache();
// Avoid using this property, probably you need to use PoiFiltersHelper.getSelectedPoiFilters()
- public final OsmandPreference<String> SELECTED_POI_FILTER_FOR_MAP = new StringPreference("selected_poi_filter_for_map", null).makeGlobal().cache();
+ public final OsmandPreference<String> SELECTED_POI_FILTER_FOR_MAP = new StringPreference("selected_poi_filter_for_map", null).makeProfile().cache();
public Set<String> getSelectedPoiFilters() {
Set<String> result = new LinkedHashSet<>();
@@ -2992,10 +2981,8 @@ public class OsmandSettings {
}
{
- CommonPreference<String> pref = getCustomRenderProperty("appMode");
- pref.setModeDefaultValue(ApplicationMode.CAR, "car");
- pref.setModeDefaultValue(ApplicationMode.PEDESTRIAN, "pedestrian");
- pref.setModeDefaultValue(ApplicationMode.BICYCLE, "bicycle");
+ getCustomRenderProperty("appMode");
+ getCustomRenderProperty("defAppMode");
}
Map<String, CommonPreference<Boolean>> customBooleanRendersProps = new LinkedHashMap<String, OsmandSettings.CommonPreference<Boolean>>();
diff --git a/OsmAnd/src/net/osmand/plus/SettingsHelper.java b/OsmAnd/src/net/osmand/plus/SettingsHelper.java
index b3e0dceadf..07e0b4e0e1 100644
--- a/OsmAnd/src/net/osmand/plus/SettingsHelper.java
+++ b/OsmAnd/src/net/osmand/plus/SettingsHelper.java
@@ -1,13 +1,21 @@
package net.osmand.plus;
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.AsyncTask;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.v7.app.AlertDialog;
import net.osmand.PlatformUtil;
+import net.osmand.plus.ApplicationMode.ApplicationModeBuilder;
import net.osmand.plus.OsmandSettings.OsmandPreference;
import net.osmand.util.Algorithms;
import org.apache.commons.logging.Log;
+import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@@ -25,7 +33,6 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
@@ -39,6 +46,42 @@ public class SettingsHelper {
private static final Log LOG = PlatformUtil.getLog(SettingsHelper.class);
private static final int BUFFER = 1024;
+ private OsmandApplication app;
+ private Activity activity;
+
+ private boolean importing;
+ private boolean importSuspended;
+ private ImportAsyncTask importTask;
+
+ public SettingsHelper(OsmandApplication app) {
+ this.app = app;
+ }
+
+ public Activity getActivity() {
+ return activity;
+ }
+
+ public void setActivity(Activity activity) {
+ this.activity = activity;
+ if (importing) {
+ importTask.processNextItem();
+ }
+ }
+
+ public void resetActivity(Activity activity) {
+ if (this.activity == activity) {
+ if (importing) {
+ importTask.suspendImport();
+ importSuspended = true;
+ }
+ this.activity = null;
+ }
+ }
+
+ public boolean isImporting() {
+ return importing;
+ }
+
public enum SettingsItemType {
GLOBAL,
PROFILE,
@@ -55,15 +98,74 @@ public class SettingsHelper {
this.type = type;
}
+ SettingsItem(@NonNull SettingsItemType type, @NonNull JSONObject json) throws JSONException {
+ this.type = type;
+ readFromJson(json);
+ }
+
+ @NonNull
public SettingsItemType getType() {
return type;
}
+ @NonNull
public abstract String getName();
- public abstract SettingsItemReader getReader();
+ @NonNull
+ public abstract String getPublicName(@NonNull Context ctx);
+
+ @NonNull
+ public abstract String getFileName();
+
+ static SettingsItemType parseItemType(@NonNull JSONObject json) throws IllegalArgumentException, JSONException {
+ return SettingsItemType.valueOf(json.getString("type"));
+ }
+
+ public boolean exists() {
+ return false;
+ }
+
+ public void apply() {
+ // non implemented
+ }
+
+ void readFromJson(@NonNull JSONObject json) throws JSONException {
+ }
- public abstract SettingsItemWriter getWriter();
+ void writeToJson(@NonNull JSONObject json) throws JSONException {
+ json.put("type", type.name());
+ json.put("name", getName());
+ }
+
+ String toJson() throws JSONException {
+ JSONObject json = new JSONObject();
+ writeToJson(json);
+ return json.toString();
+ }
+
+ @NonNull
+ abstract SettingsItemReader getReader();
+
+ @NonNull
+ abstract SettingsItemWriter getWriter();
+
+ @Override
+ public int hashCode() {
+ return (getType().name() + getName()).hashCode();
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other == this) {
+ return true;
+ }
+ if (!(other instanceof SettingsItem)) {
+ return false;
+ }
+
+ SettingsItem item = (SettingsItem) other;
+ return item.getType() == getType() && item.getName().equals(getName());
+ }
}
public abstract static class SettingsItemReader<T extends SettingsItem> {
@@ -101,6 +203,11 @@ public class SettingsHelper {
this.settings = settings;
}
+ protected OsmandSettingsItem(@NonNull SettingsItemType type, @NonNull OsmandSettings settings, @NonNull JSONObject json) throws JSONException {
+ super(type, json);
+ this.settings = settings;
+ }
+
public OsmandSettings getSettings() {
return settings;
}
@@ -128,29 +235,35 @@ public class SettingsHelper {
buf.append(str);
}
} catch (IOException e) {
- throw new IllegalArgumentException("Cannot read json body", e);
+ throw new IOException("Cannot read json body", e);
}
String jsonStr = buf.toString();
if (Algorithms.isEmpty(jsonStr)) {
throw new IllegalArgumentException("Cannot find json body");
}
- JSONObject json;
+ final JSONObject json;
try {
json = new JSONObject(jsonStr);
} catch (JSONException e) {
throw new IllegalArgumentException("Json parse error", e);
}
- Map<String, OsmandPreference<?>> prefs = settings.getRegisteredPreferences();
- Iterator<String> iter = json.keys();
- while (iter.hasNext()) {
- String key = iter.next();
- OsmandPreference<?> p = prefs.get(key);
- try {
- readPreferenceFromJson(p, json);
- } catch (JSONException e) {
- LOG.error(null, e);
+ settings.getContext().runInUIThread(new Runnable() {
+ @Override
+ public void run() {
+ Map<String, OsmandPreference<?>> prefs = settings.getRegisteredPreferences();
+ Iterator<String> iter = json.keys();
+ while (iter.hasNext()) {
+ String key = iter.next();
+ OsmandPreference<?> p = prefs.get(key);
+ try {
+ readPreferenceFromJson(p, json);
+ } catch (JSONException e) {
+ LOG.error("Failed to read preference: " + p.getId(), e);
+ }
+ }
}
- }
+ });
+
}
}
@@ -174,7 +287,7 @@ public class SettingsHelper {
try {
writePreferenceToJson(pref, json);
} catch (JSONException e) {
- LOG.error(null, e);
+ LOG.error("Failed to write preference: " + pref.getId(), e);
}
}
if (json.length() > 0) {
@@ -182,7 +295,7 @@ public class SettingsHelper {
String s = json.toString(2);
outputStream.write(s.getBytes("UTF-8"));
} catch (JSONException e) {
- LOG.error(null, e);
+ LOG.error("Failed to write json to stream", e);
}
return true;
}
@@ -196,13 +309,32 @@ public class SettingsHelper {
super(SettingsItemType.GLOBAL, settings);
}
+ @NonNull
@Override
public String getName() {
- return "global";
+ return "general_settings";
+ }
+
+ @NonNull
+ @Override
+ public String getPublicName(@NonNull Context ctx) {
+ return ctx.getString(R.string.general_settings_2);
+ }
+
+ @NonNull
+ @Override
+ public String getFileName() {
+ return getName() + ".json";
}
@Override
- public SettingsItemReader getReader() {
+ public boolean exists() {
+ return true;
+ }
+
+ @NonNull
+ @Override
+ SettingsItemReader getReader() {
return new OsmandSettingsItemReader(this, getSettings()) {
@Override
protected void readPreferenceFromJson(@NonNull OsmandPreference<?> preference, @NonNull JSONObject json) throws JSONException {
@@ -211,8 +343,9 @@ public class SettingsHelper {
};
}
+ @NonNull
@Override
- public SettingsItemWriter getWriter() {
+ SettingsItemWriter getWriter() {
return new OsmandSettingsItemWriter(this, getSettings()) {
@Override
protected void writePreferenceToJson(@NonNull OsmandPreference<?> preference, @NonNull JSONObject json) throws JSONException {
@@ -225,19 +358,74 @@ public class SettingsHelper {
public static class ProfileSettingsItem extends OsmandSettingsItem {
private ApplicationMode appMode;
+ private ApplicationModeBuilder builder;
public ProfileSettingsItem(@NonNull OsmandSettings settings, @NonNull ApplicationMode appMode) {
super(SettingsItemType.PROFILE, settings);
this.appMode = appMode;
}
+ public ProfileSettingsItem(@NonNull OsmandSettings settings, @NonNull JSONObject json) throws JSONException {
+ super(SettingsItemType.PROFILE, settings, json);
+ readFromJson(settings.getContext(), json);
+ }
+
+ @NonNull
@Override
public String getName() {
return appMode.getStringKey();
}
+ @NonNull
+ @Override
+ public String getPublicName(@NonNull Context ctx) {
+ if (appMode.isCustomProfile()) {
+ return appMode.getCustomProfileName();
+ } else if (appMode.getNameKeyResource() != -1) {
+ return ctx.getString(appMode.getNameKeyResource());
+ } else {
+ return getName();
+ }
+ }
+
+ @NonNull
+ @Override
+ public String getFileName() {
+ return "profile_" + getName() + ".json";
+ }
+
+ void readFromJson(@NonNull OsmandApplication app, @NonNull JSONObject json) throws JSONException {
+ String appModeJson = json.getString("appMode");
+ builder = ApplicationMode.fromJson(app, appModeJson);
+ ApplicationMode appMode = builder.getApplicationMode();
+ if (!appMode.isCustomProfile()) {
+ appMode = ApplicationMode.valueOfStringKey(appMode.getStringKey(), appMode);
+ }
+ this.appMode = appMode;
+ }
+
+ @Override
+ public boolean exists() {
+ return builder != null && ApplicationMode.valueOfStringKey(getName(), null) != null;
+ }
+
@Override
- public SettingsItemReader getReader() {
+ public void apply() {
+ if (appMode.isCustomProfile()) {
+ appMode = ApplicationMode.saveCustomProfile(builder, getSettings().getContext());
+ }
+ }
+
+ @Override
+ void writeToJson(@NonNull JSONObject json) throws JSONException {
+ super.writeToJson(json);
+ json.put("appMode", new JSONObject(appMode.toJson()));
+ }
+
+
+ @NonNull
+ @Override
+ SettingsItemReader getReader() {
return new OsmandSettingsItemReader(this, getSettings()) {
@Override
protected void readPreferenceFromJson(@NonNull OsmandPreference<?> preference, @NonNull JSONObject json) throws JSONException {
@@ -246,8 +434,9 @@ public class SettingsHelper {
};
}
+ @NonNull
@Override
- public SettingsItemWriter getWriter() {
+ SettingsItemWriter getWriter() {
return new OsmandSettingsItemWriter(this, getSettings()) {
@Override
protected void writePreferenceToJson(@NonNull OsmandPreference<?> preference, @NonNull JSONObject json) throws JSONException {
@@ -294,13 +483,17 @@ public class SettingsHelper {
@Nullable
private InputStream inputStream;
- private String name;
+ protected String name;
public StreamSettingsItem(@NonNull SettingsItemType type, @NonNull String name) {
super(type);
this.name = name;
}
+ StreamSettingsItem(@NonNull SettingsItemType type, @NonNull JSONObject json) throws JSONException {
+ super(type, json);
+ }
+
public StreamSettingsItem(@NonNull SettingsItemType type, @NonNull InputStream inputStream, @NonNull String name) {
super(type);
this.inputStream = inputStream;
@@ -316,11 +509,25 @@ public class SettingsHelper {
this.inputStream = inputStream;
}
+ @NonNull
@Override
public String getName() {
return name;
}
+ @NonNull
+ @Override
+ public String getPublicName(@NonNull Context ctx) {
+ return getName();
+ }
+
+ @Override
+ void readFromJson(@NonNull JSONObject json) throws JSONException {
+ super.readFromJson(json);
+ name = json.getString("name");
+ }
+
+ @NonNull
@Override
public SettingsItemWriter getWriter() {
return new StreamSettingsItemWriter(this);
@@ -336,18 +543,29 @@ public class SettingsHelper {
super(SettingsItemType.DATA, name);
}
+ DataSettingsItem(@NonNull JSONObject json) throws JSONException {
+ super(SettingsItemType.DATA, json);
+ }
+
public DataSettingsItem(@NonNull byte[] data, @NonNull String name) {
super(SettingsItemType.DATA, name);
this.data = data;
}
+ @NonNull
+ @Override
+ public String getFileName() {
+ return getName() + ".dat";
+ }
+
@Nullable
public byte[] getData() {
return data;
}
+ @NonNull
@Override
- public SettingsItemReader getReader() {
+ SettingsItemReader getReader() {
return new StreamSettingsItemReader(this) {
@Override
public void readFromStream(@NonNull InputStream inputStream) throws IOException, IllegalArgumentException {
@@ -364,6 +582,7 @@ public class SettingsHelper {
};
}
+ @NonNull
@Override
public SettingsItemWriter getWriter() {
setInputStream(new ByteArrayInputStream(data));
@@ -380,32 +599,54 @@ public class SettingsHelper {
this.file = file;
}
+ FileSettingsItem(@NonNull OsmandApplication app, @NonNull JSONObject json) throws JSONException {
+ super(SettingsItemType.FILE, json);
+ this.file = new File(app.getAppPath(null), name);
+ }
+
+ @NonNull
+ @Override
+ public String getFileName() {
+ return getName();
+ }
+
public File getFile() {
return file;
}
@Override
- public SettingsItemReader getReader() {
+ public boolean exists() {
+ return file.exists();
+ }
+
+ @NonNull
+ @Override
+ SettingsItemReader getReader() {
return new StreamSettingsItemReader(this) {
@Override
public void readFromStream(@NonNull InputStream inputStream) throws IOException, IllegalArgumentException {
OutputStream output = new FileOutputStream(file);
byte[] buffer = new byte[BUFFER];
int count;
- while ((count = inputStream.read(buffer)) != -1) {
- output.write(buffer, 0, count);
+ try {
+ while ((count = inputStream.read(buffer)) != -1) {
+ output.write(buffer, 0, count);
+ }
+ output.flush();
+ } finally {
+ Algorithms.closeStream(output);
}
- output.flush();
}
};
}
+ @NonNull
@Override
public SettingsItemWriter getWriter() {
try {
setInputStream(new FileInputStream(file));
} catch (FileNotFoundException e) {
- LOG.error(null, e);
+ LOG.error("Failed to set input stream from file: " + file.getName(), e);
}
return super.getWriter();
}
@@ -414,64 +655,105 @@ public class SettingsHelper {
private static class SettingsItemsFactory {
private OsmandApplication app;
+ private List<SettingsItem> items = new ArrayList<>();
- SettingsItemsFactory(OsmandApplication app) {
+ SettingsItemsFactory(OsmandApplication app, String jsonStr) throws IllegalArgumentException, JSONException {
this.app = app;
+ JSONObject json = new JSONObject(jsonStr);
+ JSONArray itemsJson = json.getJSONArray("items");
+ for (int i = 0; i < itemsJson.length(); i++) {
+ JSONObject itemJson = itemsJson.getJSONObject(i);
+ SettingsItem item = createItem(itemJson);
+ if (item != null) {
+ items.add(item);
+ }
+ }
+ if (items.size() == 0) {
+ throw new IllegalArgumentException("No items");
+ }
+ }
+
+ @NonNull
+ public List<SettingsItem> getItems() {
+ return items;
}
@Nullable
- public SettingsItem createItem(@NonNull SettingsItemType type, @NonNull String name) {
+ public SettingsItem getItemByFileName(@NonNull String fileName) {
+ for (SettingsItem item : items) {
+ if (item.getFileName().equals(fileName)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ @Nullable
+ private SettingsItem createItem(@NonNull JSONObject json) throws IllegalArgumentException, JSONException {
+ SettingsItem item = null;
+ SettingsItemType type = SettingsItem.parseItemType(json);
OsmandSettings settings = app.getSettings();
switch (type) {
case GLOBAL:
- return new GlobalSettingsItem(settings);
+ item = new GlobalSettingsItem(settings);
+ break;
case PROFILE:
- ApplicationMode appMode = ApplicationMode.valueOfStringKey(name, null);
- return appMode != null ? new ProfileSettingsItem(settings, appMode) : null;
+ item = new ProfileSettingsItem(settings, json);
+ break;
case PLUGIN:
- return null;
+ break;
case DATA:
- return new DataSettingsItem(name);
+ item = new DataSettingsItem(json);
+ break;
case FILE:
- return new FileSettingsItem(app, new File(app.getAppPath(null), name));
+ item = new FileSettingsItem(app, json);
+ break;
}
- return null;
+ return item;
}
}
- public static class SettingsExporter {
+ private static class SettingsExporter {
private Map<String, SettingsItem> items;
private Map<String, String> additionalParams;
- public SettingsExporter() {
+ SettingsExporter() {
items = new LinkedHashMap<>();
additionalParams = new LinkedHashMap<>();
}
- public void addSettingsItem(SettingsItem item) throws IllegalArgumentException {
+ void addSettingsItem(SettingsItem item) throws IllegalArgumentException {
if (items.containsKey(item.getName())) {
throw new IllegalArgumentException("Already has such item: " + item.getName());
}
items.put(item.getName(), item);
}
- public void addAdditionalParam(String key, String value) {
+ void addAdditionalParam(String key, String value) {
additionalParams.put(key, value);
}
- public void exportSettings(File zipFile) throws JSONException, IOException {
+ void exportSettings(File zipFile) throws JSONException, IOException {
JSONObject json = new JSONObject();
json.put("osmand_settings_version", OsmandSettings.VERSION);
for (Map.Entry<String, String> param : additionalParams.entrySet()) {
json.put(param.getKey(), param.getValue());
}
- BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(zipFile), BUFFER);
- ZipOutputStream zos = new ZipOutputStream(bos);
+ JSONArray itemsJson = new JSONArray();
+ for (SettingsItem item : items.values()) {
+ itemsJson.put(new JSONObject(item.toJson()));
+ }
+ json.put("items", itemsJson);
+ OutputStream os = new BufferedOutputStream(new FileOutputStream(zipFile), BUFFER);
+ ZipOutputStream zos = new ZipOutputStream(os);
try {
+ ZipEntry entry = new ZipEntry("items.json");
+ zos.putNextEntry(entry);
+ zos.write(json.toString(2).getBytes("UTF-8"));
+ zos.closeEntry();
for (SettingsItem item : items.values()) {
- ZipEntry entry = new ZipEntry(item.getName());
- entry.setExtra(item.getType().name().getBytes());
+ entry = new ZipEntry(item.getFileName());
zos.putNextEntry(entry);
item.getWriter().writeToStream(zos);
zos.closeEntry();
@@ -480,54 +762,301 @@ public class SettingsHelper {
zos.finish();
} finally {
Algorithms.closeStream(zos);
- Algorithms.closeStream(bos);
+ Algorithms.closeStream(os);
}
}
}
- public static class SettingsImporter {
+ private static class SettingsImporter {
private OsmandApplication app;
- private List<SettingsItem> items;
- public SettingsImporter(@NonNull OsmandApplication app) {
+ SettingsImporter(@NonNull OsmandApplication app) {
this.app = app;
}
- public List<SettingsItem> getItems() {
- return Collections.unmodifiableList(items);
+ List<SettingsItem> collectItems(@NonNull File zipFile) throws IllegalArgumentException, IOException {
+ return processItems(zipFile, null);
}
- public void importSettings(File zipFile) throws IllegalArgumentException, IOException {
- items = new ArrayList<>();
+ void importItems(@NonNull File zipFile, @NonNull List<SettingsItem> items) throws IllegalArgumentException, IOException {
+ processItems(zipFile, items);
+ }
+
+ private List<SettingsItem> processItems(@NonNull File zipFile, @Nullable List<SettingsItem> items) throws IllegalArgumentException, IOException {
+ boolean collecting = items == null;
+ if (collecting) {
+ items = new ArrayList<>();
+ } else {
+ if (items.size() == 0) {
+ throw new IllegalArgumentException("No items");
+ }
+ }
ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile));
InputStream ois = new BufferedInputStream(zis);
- SettingsItemsFactory itemsFactory = new SettingsItemsFactory(app);
try {
- ZipEntry entry;
- while ((entry = zis.getNextEntry()) != null) {
- String itemTypeStr = new String(entry.getExtra());
- if (!Algorithms.isEmpty(itemTypeStr)) {
- try {
- SettingsItemType type = SettingsItemType.valueOf(itemTypeStr);
- SettingsItem item = itemsFactory.createItem(type, entry.getName());
- if (item != null) {
+ ZipEntry entry = zis.getNextEntry();
+ if (entry != null && entry.getName().equals("items.json")) {
+ String itemsJson = null;
+ try {
+ itemsJson = Algorithms.readFromInputStream(ois).toString();
+ } catch (IOException e) {
+ LOG.error("Error reading items.json: " + itemsJson, e);
+ throw new IllegalArgumentException("No items");
+ } finally {
+ zis.closeEntry();
+ }
+ SettingsItemsFactory itemsFactory;
+ try {
+ itemsFactory = new SettingsItemsFactory(app, itemsJson);
+ if (collecting) {
+ items.addAll(itemsFactory.getItems());
+ }
+ } catch (IllegalArgumentException e) {
+ LOG.error("Error parsing items: " + itemsJson, e);
+ throw new IllegalArgumentException("No items");
+ } catch (JSONException e) {
+ LOG.error("Error parsing items: " + itemsJson, e);
+ throw new IllegalArgumentException("No items");
+ }
+ while (!collecting && (entry = zis.getNextEntry()) != null) {
+ String fileName = entry.getName();
+ SettingsItem item = itemsFactory.getItemByFileName(fileName);
+ if (item != null) {
+ try {
item.getReader().readFromStream(ois);
- items.add(item);
+ } catch (IllegalArgumentException e) {
+ LOG.error("Error reading item data: " + item.getName(), e);
+ } catch (IOException e) {
+ LOG.error("Error reading item data: " + item.getName(), e);
+ } finally {
+ zis.closeEntry();
}
- } catch (IllegalArgumentException e) {
- LOG.error("Wrong SettingsItemType: " + itemTypeStr, e);
- } finally {
- zis.closeEntry();
}
}
+ } else {
+ throw new IllegalArgumentException("No items found");
}
} catch (IOException ex) {
- LOG.error(ex);
+ LOG.error("Failed to read next entry", ex);
} finally {
Algorithms.closeStream(ois);
Algorithms.closeStream(zis);
}
+ return items;
+ }
+ }
+
+ @SuppressLint("StaticFieldLeak")
+ private class ImportAsyncTask extends AsyncTask<Void, Void, List<SettingsItem>> {
+
+ private File zipFile;
+ private SettingsImporter importer;
+ private List<SettingsItem> items;
+ private List<SettingsItem> processedItems = new ArrayList<>();
+ private SettingsItem currentItem;
+ private AlertDialog dialog;
+
+ ImportAsyncTask(@NonNull File zipFile) {
+ this.zipFile = zipFile;
+ importer = new SettingsImporter(app);
+ }
+
+ @Override
+ protected void onPreExecute() {
+ if (importing) {
+ finishImport(false);
+ }
+ importing = true;
+ importSuspended = false;
+ importTask = this;
+ }
+
+ @Override
+ protected List<SettingsItem> doInBackground(Void... voids) {
+ try {
+ return importer.collectItems(zipFile);
+ } catch (IllegalArgumentException e) {
+ LOG.error("Failed to collect items from: " + zipFile.getName(), e);
+ } catch (IOException e) {
+ LOG.error("Failed to collect items from: " + zipFile.getName(), e);
+ }
+ return null;
+ }
+
+ @Override
+ protected void onPostExecute(List<SettingsItem> items) {
+ this.items = items;
+ if (items != null && items.size() > 0) {
+ processNextItem();
+ }
+ }
+
+ private void processNextItem() {
+ if (activity == null) {
+ return;
+ }
+ if (items.size() == 0 && !importSuspended) {
+ if (processedItems.size() > 0) {
+ new ImportItemsAsyncTask(zipFile, processedItems).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ } else {
+ finishImport(false);
+ }
+ return;
+ }
+ final SettingsItem item;
+ if (importSuspended && currentItem != null) {
+ item = currentItem;
+ } else if (items.size() > 0) {
+ item = items.remove(0);
+ currentItem = item;
+ } else {
+ item = null;
+ }
+ importSuspended = false;
+ if (item != null) {
+ if (item.exists()) {
+ switch (item.getType()) {
+ case PROFILE: {
+ AlertDialog.Builder b = new AlertDialog.Builder(activity);
+ b.setMessage("Profile \"" + item.getPublicName(app) + "\" is already exists. Overwrite?");
+ b.setPositiveButton(R.string.shared_string_yes, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ acceptItem(item);
+ }
+ });
+ b.setNegativeButton(R.string.shared_string_no, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ processNextItem();
+ }
+ });
+ b.setOnDismissListener(new DialogInterface.OnDismissListener() {
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ ImportAsyncTask.this.dialog = null;
+ }
+ });
+ b.setCancelable(false);
+ dialog = b.show();
+ break;
+ }
+ case FILE:
+ // overwrite now
+ acceptItem(item);
+ break;
+ default:
+ acceptItem(item);
+ break;
+ }
+ } else {
+ acceptItem(item);
+ }
+ } else {
+ processNextItem();
+ }
+ }
+
+ private void suspendImport() {
+ if (dialog != null) {
+ dialog.dismiss();
+ dialog = null;
+ }
+ }
+
+ private void acceptItem(SettingsItem item) {
+ item.apply();
+ processedItems.add(item);
+ processNextItem();
+ }
+ }
+
+ @SuppressLint("StaticFieldLeak")
+ private class ImportItemsAsyncTask extends AsyncTask<Void, Void, Boolean> {
+
+ private SettingsImporter importer;
+ private File zipFile;
+ private List<SettingsItem> items;
+
+ ImportItemsAsyncTask(@NonNull File zipFile, @NonNull List<SettingsItem> items) {
+ importer = new SettingsImporter(app);
+ this.zipFile = zipFile;
+ this.items = items;
+ }
+
+ @Override
+ protected Boolean doInBackground(Void... voids) {
+ try {
+ importer.importItems(zipFile, items);
+ return true;
+ } catch (IllegalArgumentException e) {
+ LOG.error("Failed to import items from: " + zipFile.getName(), e);
+ } catch (IOException e) {
+ LOG.error("Failed to import items from: " + zipFile.getName(), e);
+ }
+ return false;
+ }
+
+ @Override
+ protected void onPostExecute(Boolean success) {
+ finishImport(success);
+ }
+ }
+
+ private void finishImport(boolean success) {
+ importing = false;
+ importSuspended = false;
+ importTask = null;
+ if (success) {
+ app.showShortToastMessage("Import succeed");
+ } else {
+ app.showShortToastMessage("Import failed");
+ }
+ }
+
+ @SuppressLint("StaticFieldLeak")
+ private class ExportAsyncTask extends AsyncTask<Void, Void, Boolean> {
+
+ private SettingsExporter exporter;
+ private File zipFile;
+
+ ExportAsyncTask(@NonNull File zipFile, @NonNull List<SettingsItem> items) {
+ this.zipFile = zipFile;
+ this.exporter = new SettingsExporter();
+ for (SettingsItem item : items) {
+ exporter.addSettingsItem(item);
+ }
}
+
+ @Override
+ protected Boolean doInBackground(Void... voids) {
+ try {
+ exporter.exportSettings(zipFile);
+ return true;
+ } catch (JSONException e) {
+ LOG.error("Failed to export items to: " + zipFile.getName(), e);
+ } catch (IOException e) {
+ LOG.error("Failed to export items to: " + zipFile.getName(), e);
+ }
+ return false;
+ }
+
+ @Override
+ protected void onPostExecute(Boolean success) {
+ if (success) {
+ app.showShortToastMessage("Export succeed");
+ } else {
+ app.showShortToastMessage("Export failed");
+ }
+ }
+ }
+
+ public void importSettings(@NonNull File zipFile) {
+ new ImportAsyncTask(zipFile).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ }
+
+ public void exportSettings(@NonNull File zipFile, @NonNull List<SettingsItem> items) {
+ new ExportAsyncTask(zipFile, items).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}
diff --git a/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java b/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java
index 71ddddf064..8dbbe8ee22 100644
--- a/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java
+++ b/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java
@@ -496,12 +496,12 @@ public class TargetPointsHelper {
updateRouteAndRefresh(updateRoute);
}
- public void removeWayPoint(boolean updateRoute, int index){
+ public void removeWayPoint(boolean updateRoute, int index) {
+ int sz = intermediatePoints.size();
if (index < 0) {
cancelTargetPointAddressRequest();
settings.clearPointToNavigate();
pointToNavigate = null;
- int sz = intermediatePoints.size();
if (sz > 0) {
settings.deleteIntermediatePoint(sz - 1);
pointToNavigate = intermediatePoints.remove(sz - 1);
@@ -510,7 +510,7 @@ public class TargetPointsHelper {
pointToNavigate.pointDescription);
lookupAddressForPointToNavigate();
}
- } else {
+ } else if (sz > index) {
settings.deleteIntermediatePoint(index);
TargetPoint targetPoint = intermediatePoints.remove(index);
cancelPointAddressRequests(targetPoint.point);
diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
index a260a8310b..5549953449 100644
--- a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
+++ b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
@@ -50,9 +50,8 @@ import net.osmand.SecondSplashScreenFragment;
import net.osmand.StateChangedListener;
import net.osmand.ValueHolder;
import net.osmand.access.MapAccessibilityActions;
+import net.osmand.aidl.AidlMapPointWrapper;
import net.osmand.aidl.OsmandAidlApi.AMapPointUpdateListener;
-import net.osmand.aidl.map.ALatLon;
-import net.osmand.aidl.maplayer.point.AMapPoint;
import net.osmand.core.android.AtlasMapRendererView;
import net.osmand.data.LatLon;
import net.osmand.data.PointDescription;
@@ -161,7 +160,7 @@ import java.util.concurrent.Executors;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_SETTINGS_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_SETTINGS_ID;
public class MapActivity extends OsmandActionBarActivity implements DownloadEvents,
OnRequestPermissionsResultCallback, IRouteInformationListener, AMapPointUpdateListener,
@@ -840,6 +839,7 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
}
app.getDownloadThread().setUiActivity(this);
+ app.getSettingsHelper().setActivity(this);
boolean routeWasFinished = routingHelper.isRouteWasFinished();
if (routeWasFinished && !DestinationReachedMenu.wasShown()) {
@@ -1428,6 +1428,7 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
app.getMapMarkersHelper().removeListener(this);
app.getRoutingHelper().removeListener(this);
app.getDownloadThread().resetUiActivity(this);
+ app.getSettingsHelper().resetActivity(this);
if (atlasMapRendererView != null) {
atlasMapRendererView.handleOnPause();
}
@@ -1923,13 +1924,12 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
}
@Override
- public void onAMapPointUpdated(final AMapPoint point, String layerId) {
+ public void onAMapPointUpdated(final AidlMapPointWrapper point, String layerId) {
if (canUpdateAMapPointMenu(point, layerId)) {
app.runInUIThread(new Runnable() {
@Override
public void run() {
- ALatLon loc = point.getLocation();
- LatLon latLon = new LatLon(loc.getLatitude(), loc.getLongitude());
+ LatLon latLon = point.getLocation();
PointDescription pointDescription = new PointDescription(PointDescription.POINT_TYPE_MARKER, point.getFullName());
mapContextMenu.update(latLon, pointDescription, point);
mapContextMenu.centerMarkerLocation();
@@ -1938,12 +1938,12 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
}
}
- private boolean canUpdateAMapPointMenu(AMapPoint point, String layerId) {
+ private boolean canUpdateAMapPointMenu(AidlMapPointWrapper point, String layerId) {
Object object = mapContextMenu.getObject();
- if (!mapContextMenu.isVisible() || !(object instanceof AMapPoint)) {
+ if (!mapContextMenu.isVisible() || !(object instanceof AidlMapPointWrapper)) {
return false;
}
- AMapPoint oldPoint = (AMapPoint) object;
+ AidlMapPointWrapper oldPoint = (AidlMapPointWrapper) object;
return oldPoint.getLayerId().equals(layerId) && oldPoint.getId().equals(point.getId());
}
diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java
index 5ba6b0f456..6e8255f6f0 100644
--- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java
+++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java
@@ -85,26 +85,26 @@ import java.util.List;
import static net.osmand.plus.ContextMenuAdapter.PROFILES_CHOSEN_PROFILE_TAG;
import static net.osmand.plus.ContextMenuAdapter.PROFILES_CONTROL_BUTTON_TAG;
import static net.osmand.plus.ContextMenuAdapter.PROFILES_NORMAL_PROFILE_TAG;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_CONFIGURE_MAP_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_CONFIGURE_SCREEN_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_DASHBOARD_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_DIRECTIONS_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_DIVIDER_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_DOWNLOAD_MAPS_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_HELP_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_MAP_MARKERS_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_MEASURE_DISTANCE_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_MY_PLACES_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_OSMAND_LIVE_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_PLUGINS_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_SEARCH_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_SETTINGS_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_TRAVEL_GUIDES_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_ADD_GPX_WAYPOINT;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_DIRECTIONS_FROM_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_EDIT_GPX_WP;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MEASURE_DISTANCE;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_SEARCH_NEARBY;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_CONFIGURE_MAP_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_CONFIGURE_SCREEN_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_DASHBOARD_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_DIRECTIONS_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_DIVIDER_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_DOWNLOAD_MAPS_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_HELP_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_MAP_MARKERS_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_MEASURE_DISTANCE_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_MY_PLACES_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_OSMAND_LIVE_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_PLUGINS_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_SEARCH_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_SETTINGS_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_TRAVEL_GUIDES_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_ADD_GPX_WAYPOINT;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_DIRECTIONS_FROM_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_EDIT_GPX_WP;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MEASURE_DISTANCE;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_SEARCH_NEARBY;
import static net.osmand.plus.helpers.ImportHelper.GPX_SUFFIX;
diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java
index 71849b7298..e64769f88a 100644
--- a/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java
+++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java
@@ -5,6 +5,7 @@ import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;
+import android.support.v7.view.ContextThemeWrapper;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
@@ -91,6 +92,9 @@ public class MapActivityLayers {
private MapWidgetRegistry mapWidgetRegistry;
private QuickActionRegistry quickActionRegistry;
private MeasurementToolLayer measurementToolLayer;
+
+ private boolean nightMode;
+ private int themeRes;
private StateChangedListener<Integer> transparencyListener;
@@ -98,6 +102,8 @@ public class MapActivityLayers {
this.activity = activity;
this.mapWidgetRegistry = new MapWidgetRegistry(activity.getMyApplication());
this.quickActionRegistry = new QuickActionRegistry(activity.getMyApplication().getSettings());
+ this.nightMode = activity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
+ this.themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
}
public QuickActionRegistry getQuickActionRegistry() {
@@ -266,7 +272,7 @@ public class MapActivityLayers {
return true;
}
};
- return GpxUiHelper.selectGPXFiles(files, activity, callbackWithObject);
+ return GpxUiHelper.selectGPXFiles(files, activity, callbackWithObject, themeRes);
}
@@ -283,8 +289,8 @@ public class MapActivityLayers {
}
list.add(poiFilters.getCustomPOIFilter());
- final ArrayAdapter<ContextMenuItem> listAdapter = adapter.createListAdapter(activity, app.getSettings().isLightContent());
- AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+ final ArrayAdapter<ContextMenuItem> listAdapter = adapter.createListAdapter(activity, !nightMode);
+ AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(activity, themeRes));
final ListView listView = new ListView(activity);
listView.setDivider(null);
listView.setClickable(true);
@@ -361,9 +367,8 @@ public class MapActivityLayers {
addFilterToList(adapter, list, f, false);
}
- final ArrayAdapter<ContextMenuItem> listAdapter =
- adapter.createListAdapter(activity, app.getSettings().isLightContent());
- AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+ final ArrayAdapter<ContextMenuItem> listAdapter = adapter.createListAdapter(activity, !nightMode);
+ AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(activity, themeRes));
builder.setAdapter(listAdapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
diff --git a/OsmAnd/src/net/osmand/plus/activities/SettingsNavigationActivity.java b/OsmAnd/src/net/osmand/plus/activities/SettingsNavigationActivity.java
index 3f7f7ce571..1c39792cf2 100644
--- a/OsmAnd/src/net/osmand/plus/activities/SettingsNavigationActivity.java
+++ b/OsmAnd/src/net/osmand/plus/activities/SettingsNavigationActivity.java
@@ -745,6 +745,13 @@ public class SettingsNavigationActivity extends SettingsBaseActivity {
case NAUTICALMILES_PER_HOUR:
ratio[0] = 3600 / OsmAndFormatter.METERS_IN_ONE_NAUTICALMILE;
break;
+ case MINUTES_PER_MILE:
+ ratio[0] = 3600 / OsmAndFormatter.METERS_IN_ONE_MILE;
+ speedUnits = activity.getString(R.string.mile_per_hour);
+ break;
+ case METERS_PER_SECOND:
+ ratio[0] = 1;
+ break;
}
float settingsMinSpeed = settings.MIN_SPEED.get();
diff --git a/OsmAnd/src/net/osmand/plus/activities/actions/OsmandRestoreOrExitDialog.java b/OsmAnd/src/net/osmand/plus/activities/actions/OsmandRestoreOrExitDialog.java
index ee3e27ba43..e1298fe5b9 100644
--- a/OsmAnd/src/net/osmand/plus/activities/actions/OsmandRestoreOrExitDialog.java
+++ b/OsmAnd/src/net/osmand/plus/activities/actions/OsmandRestoreOrExitDialog.java
@@ -25,7 +25,7 @@ public class OsmandRestoreOrExitDialog extends BottomSheetDialogFragment {
View view = getActivity().getLayoutInflater()
.inflate(R.layout.dash_restore_osmand_fragment, container, false);
try {
- clientAppTitle = getMyApplication().getAppCustomization().getNavFooterParams().getAppName();
+ clientAppTitle = getMyApplication().getAppCustomization().getNavFooterAppName();
} catch (Exception e) {
e.printStackTrace();
}
diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java
index bb0777836e..061fbdc57b 100644
--- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java
+++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java
@@ -91,7 +91,7 @@ import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
-import static net.osmand.plus.OsmAndCustomizationConstants.RECORDING_LAYER;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.RECORDING_LAYER;
public class AudioVideoNotesPlugin extends OsmandPlugin {
diff --git a/OsmAnd/src/net/osmand/plus/base/MapViewTrackingUtilities.java b/OsmAnd/src/net/osmand/plus/base/MapViewTrackingUtilities.java
index 9cf4e72a28..e07e04d1d4 100644
--- a/OsmAnd/src/net/osmand/plus/base/MapViewTrackingUtilities.java
+++ b/OsmAnd/src/net/osmand/plus/base/MapViewTrackingUtilities.java
@@ -128,7 +128,7 @@ public class MapViewTrackingUtilities implements OsmAndLocationListener, IMapLoc
myLocation != null && isSmallSpeedForDirectionOfMovement(myLocation, speedForDirectionOfMovement);
if ((settings.ROTATE_MAP.get() == OsmandSettings.ROTATE_MAP_COMPASS || (settings.ROTATE_MAP.get() == OsmandSettings.ROTATE_MAP_BEARING && smallSpeedForDirectionOfMovement)) && !routePlanningMode) {
if (Math.abs(MapUtils.degreesDiff(mapView.getRotate(), -val)) > 1.0) {
- mapView.setRotate(-val);
+ mapView.setRotate(-val, false);
}
} else if (showViewAngle && headingChanged) {
mapView.refreshMap();
@@ -208,7 +208,7 @@ public class MapViewTrackingUtilities implements OsmAndLocationListener, IMapLoc
mapView.getAnimatedDraggingThread().startZooming(zoom.first, zoom.second, false);
}
if (rotation != null) {
- mapView.setRotate(rotation);
+ mapView.setRotate(rotation, false);
}
mapView.setLatLon(location.getLatitude(), location.getLongitude());
}
@@ -264,7 +264,7 @@ public class MapViewTrackingUtilities implements OsmAndLocationListener, IMapLoc
public void updateSettings(){
if (mapView != null) {
if (settings.ROTATE_MAP.get() == OsmandSettings.ROTATE_MAP_NONE || routePlanningMode) {
- mapView.setRotate(0);
+ mapView.setRotate(0, true);
}
mapView.setMapPosition(settings.ROTATE_MAP.get() == OsmandSettings.ROTATE_MAP_BEARING
&& !routePlanningMode
diff --git a/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java b/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java
index aaf2ed7ff6..527fb03d9e 100644
--- a/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java
+++ b/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java
@@ -18,7 +18,7 @@ import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
import net.osmand.plus.views.OsmandMapTileView;
import net.osmand.plus.views.mapwidgets.TextInfoWidget;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_BUILDS_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_BUILDS_ID;
public class OsmandDevelopmentPlugin extends OsmandPlugin {
private static final String ID = "osmand.development";
diff --git a/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java b/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java
index 432fb53164..996a1be09b 100644
--- a/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java
+++ b/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java
@@ -17,6 +17,7 @@ import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.activities.SettingsBaseActivity;
+import net.osmand.plus.render.NativeOsmandLibrary;
import net.osmand.util.SunriseSunset;
import java.text.SimpleDateFormat;
@@ -37,6 +38,15 @@ public class SettingsDevelopmentActivity extends SettingsBaseActivity {
cat.addPreference(createCheckBoxPreference(settings.USE_OPENGL_RENDER,
R.string.use_opengl_render,R.string.use_opengl_render_descr));
+ CheckBoxPreference nativeCheckbox = createCheckBoxPreference(settings.SAFE_MODE, R.string.safe_mode,
+ R.string.safe_mode_description);
+ // disable the checkbox if the library cannot be used
+ if ((NativeOsmandLibrary.isLoaded() && !NativeOsmandLibrary.isSupported()) || settings.NATIVE_RENDERING_FAILED.get()) {
+ nativeCheckbox.setEnabled(false);
+ nativeCheckbox.setChecked(true);
+ }
+ cat.addPreference(nativeCheckbox);
+
PreferenceCategory navigation = new PreferenceCategory(this);
navigation.setTitle(R.string.routing_settings);
cat.addPreference(navigation);
diff --git a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java
index bc34487e12..8b1d2a47fe 100644
--- a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java
+++ b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java
@@ -9,6 +9,7 @@ import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
+import android.support.v7.view.ContextThemeWrapper;
import android.support.v7.widget.AppCompatCheckedTextView;
import android.support.v7.widget.SwitchCompat;
import android.view.LayoutInflater;
@@ -70,27 +71,27 @@ import java.util.Map;
import gnu.trove.list.array.TIntArrayList;
-import static net.osmand.plus.OsmAndCustomizationConstants.APP_PROFILES_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.CUSTOM_RENDERING_ITEMS_ID_SCHEME;
-import static net.osmand.plus.OsmAndCustomizationConstants.DETAILS_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.FAVORITES_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.GPX_FILES_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.HIDE_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_LANGUAGE_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_MAGNIFIER_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_MARKERS_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_MODE_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_RENDERING_CATEGORY_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_SOURCE_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_STYLE_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.POI_OVERLAY_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.POI_OVERLAY_LABELS_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.ROAD_STYLE_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.ROUTES_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.SHOW_CATEGORY_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.TEXT_SIZE_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.TRANSPORT_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.TRANSPORT_RENDERING_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.APP_PROFILES_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.CUSTOM_RENDERING_ITEMS_ID_SCHEME;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DETAILS_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.FAVORITES_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.GPX_FILES_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.HIDE_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_LANGUAGE_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_MAGNIFIER_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_MARKERS_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_MODE_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_RENDERING_CATEGORY_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_SOURCE_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_STYLE_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.POI_OVERLAY_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.POI_OVERLAY_LABELS_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.ROAD_STYLE_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.ROUTES_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.SHOW_CATEGORY_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.TEXT_SIZE_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.TRANSPORT_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.TRANSPORT_RENDERING_ID;
import static net.osmand.plus.srtmplugin.SRTMPlugin.CONTOUR_DENSITY_ATTR;
import static net.osmand.plus.srtmplugin.SRTMPlugin.CONTOUR_LINES_ATTR;
import static net.osmand.plus.srtmplugin.SRTMPlugin.CONTOUR_LINES_SCHEME_ATTR;
@@ -114,6 +115,8 @@ public class ConfigureMapMenu {
public ContextMenuAdapter createListAdapter(final MapActivity ma) {
OsmandApplication app = ma.getMyApplication();
+ boolean nightMode = app.getDaynightHelper().isNightModeForMapControls();
+ int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
ContextMenuAdapter adapter = new ContextMenuAdapter();
adapter.setDefaultLayoutId(R.layout.list_item_icon_and_menu);
adapter.addItem(new ContextMenuItem.ItemBuilder()
@@ -138,8 +141,8 @@ public class ConfigureMapMenu {
}
}
}
- createLayersItems(customRules, adapter, ma);
- createRenderingAttributeItems(customRules, adapter, ma);
+ createLayersItems(customRules, adapter, ma, themeRes);
+ createRenderingAttributeItems(customRules, adapter, ma, themeRes, nightMode);
return adapter;
}
@@ -284,7 +287,7 @@ public class ConfigureMapMenu {
}
}
- private void createLayersItems(List<RenderingRuleProperty> customRules, ContextMenuAdapter adapter, final MapActivity activity) {
+ private void createLayersItems(List<RenderingRuleProperty> customRules, ContextMenuAdapter adapter, final MapActivity activity, final int themeRes) {
final OsmandApplication app = activity.getMyApplication();
final OsmandSettings settings = app.getSettings();
LayerMenuListener l = new LayerMenuListener(activity, adapter);
@@ -398,7 +401,7 @@ public class ConfigureMapMenu {
}
private void showTransportDialog(final ArrayAdapter<ContextMenuItem> ad, final int pos) {
- final AlertDialog.Builder b = new AlertDialog.Builder(activity);
+ final AlertDialog.Builder b = new AlertDialog.Builder(new ContextThemeWrapper(activity, themeRes));
b.setTitle(activity.getString(R.string.rendering_category_transport));
final int[] iconIds = new int[transportPrefs.size()];
@@ -425,7 +428,7 @@ public class ConfigureMapMenu {
}
}
- adapter = new ArrayAdapter<CharSequence>(activity, R.layout.popup_list_item_icon24_and_menu, R.id.title, vals) {
+ adapter = new ArrayAdapter<CharSequence>(new ContextThemeWrapper(activity, themeRes), R.layout.popup_list_item_icon24_and_menu, R.id.title, vals) {
@NonNull
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
@@ -545,7 +548,8 @@ public class ConfigureMapMenu {
}
private void createRenderingAttributeItems(List<RenderingRuleProperty> customRules,
- final ContextMenuAdapter adapter, final MapActivity activity) {
+ final ContextMenuAdapter adapter, final MapActivity activity,
+ final int themeRes, final boolean nightMode) {
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.map_widget_map_rendering, activity)
.setId(MAP_RENDERING_CATEGORY_ID)
.setCategory(true).setLayout(R.layout.list_group_title_with_switch).createItem());
@@ -570,7 +574,7 @@ public class ConfigureMapMenu {
public boolean onContextMenuClick(final ArrayAdapter<ContextMenuItem> ad, int itemId,
final int pos, boolean isChecked, int[] viewCoordinates) {
final OsmandMapTileView view = activity.getMapView();
- AlertDialog.Builder bld = new AlertDialog.Builder(view.getContext());
+ AlertDialog.Builder bld = new AlertDialog.Builder(new ContextThemeWrapper(view.getContext(), themeRes));
bld.setTitle(R.string.daynight);
final String[] items = new String[OsmandSettings.DayNightMode.values().length];
for (int i = 0; i < items.length; i++) {
@@ -608,7 +612,7 @@ public class ConfigureMapMenu {
final int pos, boolean isChecked, int[] viewCoordinates) {
final OsmandMapTileView view = activity.getMapView();
final OsmandSettings.OsmandPreference<Float> mapDensity = view.getSettings().MAP_DENSITY;
- final AlertDialog.Builder bld = new AlertDialog.Builder(view.getContext());
+ AlertDialog.Builder bld = new AlertDialog.Builder(new ContextThemeWrapper(view.getContext(), themeRes));
int p = (int) (mapDensity.get() * 100);
final TIntArrayList tlist = new TIntArrayList(new int[]{25, 33, 50, 75, 100, 125, 150, 200, 300, 400});
final List<String> values = new ArrayList<>();
@@ -658,7 +662,7 @@ public class ConfigureMapMenu {
}).createItem());
ContextMenuItem props;
- props = createRenderingProperty(customRules, adapter, activity, R.drawable.ic_action_intersection, ROAD_STYLE_ATTR, ROAD_STYLE_ID);
+ props = createRenderingProperty(customRules, adapter, activity, R.drawable.ic_action_intersection, ROAD_STYLE_ATTR, ROAD_STYLE_ID, themeRes);
if (props != null) {
adapter.addItem(props);
}
@@ -671,7 +675,7 @@ public class ConfigureMapMenu {
public boolean onContextMenuClick(final ArrayAdapter<ContextMenuItem> ad, int itemId,
final int pos, boolean isChecked, int[] viewCoordinates) {
final OsmandMapTileView view = activity.getMapView();
- AlertDialog.Builder b = new AlertDialog.Builder(view.getContext());
+ AlertDialog.Builder b = new AlertDialog.Builder(new ContextThemeWrapper(view.getContext(), themeRes));
// test old descr as title
b.setTitle(R.string.text_size);
final Float[] txtValues = new Float[]{0.75f, 1f, 1.25f, 1.5f, 2f, 3f};
@@ -711,7 +715,7 @@ public class ConfigureMapMenu {
public boolean onContextMenuClick(final ArrayAdapter<ContextMenuItem> ad, int itemId,
final int pos, boolean isChecked, int[] viewCoordinates) {
final OsmandMapTileView view = activity.getMapView();
- final AlertDialog.Builder b = new AlertDialog.Builder(view.getContext());
+ AlertDialog.Builder b = new AlertDialog.Builder(new ContextThemeWrapper(view.getContext(), themeRes));
b.setTitle(activity.getString(R.string.map_locale));
@@ -735,7 +739,7 @@ public class ConfigureMapMenu {
}
};
- final ArrayAdapter<CharSequence> singleChoiceAdapter = new ArrayAdapter<CharSequence>(activity, R.layout.single_choice_switch_item, R.id.text1, txtValues) {
+ final ArrayAdapter<CharSequence> singleChoiceAdapter = new ArrayAdapter<CharSequence>(new ContextThemeWrapper(view.getContext(), themeRes), R.layout.single_choice_switch_item, R.id.text1, txtValues) {
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
@@ -794,17 +798,17 @@ public class ConfigureMapMenu {
}).createItem());
props = createProperties(customRules, null, R.string.rendering_category_transport, R.drawable.ic_action_bus_dark,
- "transport", null, adapter, activity, true, TRANSPORT_RENDERING_ID);
+ "transport", null, adapter, activity, true, TRANSPORT_RENDERING_ID, themeRes, nightMode);
if (props != null) {
adapter.addItem(props);
}
props = createProperties(customRules, null, R.string.rendering_category_details, R.drawable.ic_action_layers_dark,
- "details", null, adapter, activity, true, DETAILS_ID);
+ "details", null, adapter, activity, true, DETAILS_ID, themeRes, nightMode);
if (props != null) {
adapter.addItem(props);
}
props = createProperties(customRules, null, R.string.rendering_category_hide, R.drawable.ic_action_hide,
- "hide", null, adapter, activity, true, HIDE_ID);
+ "hide", null, adapter, activity, true, HIDE_ID, themeRes, nightMode);
if (props != null) {
adapter.addItem(props);
}
@@ -816,7 +820,7 @@ public class ConfigureMapMenu {
}
}
props = createProperties(customRules, customRulesIncluded, R.string.rendering_category_routes, R.drawable.ic_action_map_routes,
- "routes", null, adapter, activity, true, ROUTES_ID);
+ "routes", null, adapter, activity, true, ROUTES_ID, themeRes, nightMode);
if (props != null) {
adapter.addItem(props);
}
@@ -824,7 +828,7 @@ public class ConfigureMapMenu {
if (getCustomRenderingPropertiesSize(customRules) > 0) {
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.rendering_category_others, activity)
.setCategory(true).setLayout(R.layout.list_group_title_with_switch).createItem());
- createCustomRenderingProperties(adapter, activity, customRules);
+ createCustomRenderingProperties(adapter, activity, customRules, themeRes);
}
}
@@ -879,7 +883,9 @@ public class ConfigureMapMenu {
final ContextMenuAdapter adapter,
final MapActivity activity,
final boolean useDescription,
- final String id) {
+ final String id,
+ final int themeRes,
+ final boolean nightMode) {
final List<RenderingRuleProperty> ps = new ArrayList<>();
final List<OsmandSettings.CommonPreference<Boolean>> prefs = new ArrayList<>();
@@ -928,7 +934,7 @@ public class ConfigureMapMenu {
activity.getMapLayers().updateLayers(activity.getMapView());
} else {
showPreferencesDialog(adapter, a, pos, activity, activity.getString(strId), ps, prefs,
- useDescription, defaultSettings, true, customRulesIncluded);
+ useDescription, defaultSettings, true, customRulesIncluded, themeRes, nightMode);
}
return false;
}
@@ -968,7 +974,7 @@ public class ConfigureMapMenu {
public boolean onRowItemClick(ArrayAdapter<ContextMenuItem> a, View view, int itemId,
int pos) {
showPreferencesDialog(adapter, a, pos, activity, activity.getString(strId), ps, prefs,
- useDescription, defaultSettings, false, customRulesIncluded);
+ useDescription, defaultSettings, false, customRulesIncluded, themeRes, nightMode);
return false;
}
});
@@ -1010,9 +1016,11 @@ public class ConfigureMapMenu {
final boolean useDescription,
ListStringPreference defaultSettings,
boolean useDefault,
- final List<RenderingRuleProperty> customRulesIncluded) {
+ final List<RenderingRuleProperty> customRulesIncluded,
+ final int themeRes,
+ final boolean nightMode) {
- AlertDialog.Builder bld = new AlertDialog.Builder(activity);
+ AlertDialog.Builder bld = new AlertDialog.Builder(new ContextThemeWrapper(activity, themeRes));
boolean[] checkedItems = new boolean[prefs.size()];
final boolean[] tempPrefs = new boolean[prefs.size()];
for (int i = 0; i < prefs.size(); i++) {
@@ -1095,8 +1103,7 @@ public class ConfigureMapMenu {
final OsmandSettings.CommonPreference<String> pref = activity.getMyApplication().getSettings()
.getCustomRenderProperty(p.getAttrName());
- LayoutInflater inflater = activity.getLayoutInflater();
- View spinnerView = inflater.inflate(R.layout.spinner_rule_layout, null);
+ View spinnerView = View.inflate(new ContextThemeWrapper(activity, themeRes), R.layout.spinner_rule_layout, null);
TextView title = (TextView) spinnerView.findViewById(R.id.title);
final Spinner spinner = (Spinner) spinnerView.findViewById(R.id.spinner);
TextView description = (TextView) spinnerView.findViewById(R.id.description);
@@ -1125,7 +1132,7 @@ public class ConfigureMapMenu {
p.getPossibleValues()[j]);
}
- StringSpinnerArrayAdapter arrayAdapter = new StringSpinnerArrayAdapter(activity);
+ StringSpinnerArrayAdapter arrayAdapter = new StringSpinnerArrayAdapter(activity, nightMode);
for (String val : possibleValuesString) {
arrayAdapter.add(val);
}
@@ -1176,6 +1183,7 @@ public class ConfigureMapMenu {
private boolean isPropertyAccepted(RenderingRuleProperty p) {
return !(p.getAttrName().equals(RenderingRuleStorageProperties.A_APP_MODE) ||
+ p.getAttrName().equals(RenderingRuleStorageProperties.A_BASE_APP_MODE) ||
p.getAttrName().equals(RenderingRuleStorageProperties.A_ENGINE_V1) ||
p.getAttrName().equals(HIKING_ROUTES_OSMC_ATTR) ||
p.getAttrName().equals(ROAD_STYLE_ATTR) ||
@@ -1188,10 +1196,10 @@ public class ConfigureMapMenu {
}
private void createCustomRenderingProperties(final ContextMenuAdapter adapter, final MapActivity activity,
- List<RenderingRuleProperty> customRules) {
+ List<RenderingRuleProperty> customRules, final int themeRes) {
for (final RenderingRuleProperty p : customRules) {
if (isPropertyAccepted(p)) {
- adapter.addItem(createRenderingProperty(adapter, activity, 0, p, CUSTOM_RENDERING_ITEMS_ID_SCHEME + p.getName()));
+ adapter.addItem(createRenderingProperty(adapter, activity, 0, p, CUSTOM_RENDERING_ITEMS_ID_SCHEME + p.getName(), themeRes));
}
}
}
@@ -1208,17 +1216,19 @@ public class ConfigureMapMenu {
private ContextMenuItem createRenderingProperty(final List<RenderingRuleProperty> customRules,
final ContextMenuAdapter adapter, final MapActivity activity,
- @DrawableRes final int icon, final String attrName, String id) {
+ @DrawableRes final int icon, final String attrName, String id,
+ final int themeRes) {
for (final RenderingRuleProperty p : customRules) {
if (p.getAttrName().equals(attrName)) {
- return createRenderingProperty(adapter, activity, icon, p, id);
+ return createRenderingProperty(adapter, activity, icon, p, id, themeRes);
}
}
return null;
}
private ContextMenuItem createRenderingProperty(final ContextMenuAdapter adapter, final MapActivity activity,
- @DrawableRes final int icon, final RenderingRuleProperty p, final String id) {
+ @DrawableRes final int icon, final RenderingRuleProperty p, final String id,
+ final int themeRes) {
final OsmandMapTileView view = activity.getMapView();
String propertyName = SettingsActivity.getStringPropertyName(view.getContext(), p.getAttrName(),
p.getName());
@@ -1258,7 +1268,7 @@ public class ConfigureMapMenu {
@Override
public boolean onContextMenuClick(final ArrayAdapter<ContextMenuItem> ad,
final int itemId, final int pos, boolean isChecked, int[] viewCoordinates) {
- AlertDialog.Builder b = new AlertDialog.Builder(view.getContext());
+ AlertDialog.Builder b = new AlertDialog.Builder(new ContextThemeWrapper(view.getContext(), themeRes));
// test old descr as title
b.setTitle(propertyDescr);
@@ -1309,13 +1319,13 @@ public class ConfigureMapMenu {
private class StringSpinnerArrayAdapter extends ArrayAdapter<String> {
- private boolean lightTheme;
+ private boolean nightMode;
- public StringSpinnerArrayAdapter(Context context) {
+ public StringSpinnerArrayAdapter(Context context, boolean nightMode) {
super(context, android.R.layout.simple_spinner_item);
setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
OsmandApplication app = (OsmandApplication )getContext().getApplicationContext();
- lightTheme = app.getSettings().isLightContent();
+ this.nightMode = nightMode;
}
@Override
@@ -1324,7 +1334,7 @@ public class ConfigureMapMenu {
String text = getItem(position);
label.setText(text);
- label.setTextColor(!lightTheme ?
+ label.setTextColor(nightMode ?
ContextCompat.getColorStateList(getContext(), R.color.text_color_primary_dark) : ContextCompat.getColorStateList(getContext(), R.color.text_color_primary_light));
return label;
}
@@ -1335,7 +1345,7 @@ public class ConfigureMapMenu {
String text = getItem(position);
label.setText(text);
- label.setTextColor(!lightTheme ?
+ label.setTextColor(nightMode ?
ContextCompat.getColorStateList(getContext(), R.color.text_color_primary_dark) : ContextCompat.getColorStateList(getContext(), R.color.text_color_primary_light));
return label;
diff --git a/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java b/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java
index 6bc43505bb..e61dc78cd9 100644
--- a/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java
+++ b/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java
@@ -15,8 +15,8 @@ import net.osmand.IndexConstants;
import net.osmand.Location;
import net.osmand.PlatformUtil;
import net.osmand.aidl.OsmandAidlApi;
+import net.osmand.aidl.AidlSearchResultWrapper;
import net.osmand.aidl.search.SearchParams;
-import net.osmand.aidl.search.SearchResult;
import net.osmand.data.FavouritePoint;
import net.osmand.data.LatLon;
import net.osmand.data.PointDescription;
@@ -663,7 +663,7 @@ public class ExternalApiHelper {
searchLocation.getLatitude(), searchLocation.getLongitude(),
1, 1, new OsmandAidlApi.SearchCompleteCallback() {
@Override
- public void onSearchComplete(final List<SearchResult> resultSet) {
+ public void onSearchComplete(final List<AidlSearchResultWrapper> resultSet) {
final MapActivity mapActivity = mapActivityRef.get();
if (mapActivity != null) {
mapActivity.getMyApplication().runInUIThread(new Runnable() {
@@ -674,7 +674,7 @@ public class ExternalApiHelper {
dlg.dismiss();
}
if (resultSet.size() > 0) {
- final SearchResult res = resultSet.get(0);
+ final AidlSearchResultWrapper res = resultSet.get(0);
LatLon to = new LatLon(res.getLatitude(), res.getLongitude());
PointDescription toDesc = new PointDescription(
PointDescription.POINT_TYPE_TARGET, res.getLocalName() + ", " + res.getLocalTypeName());
@@ -707,13 +707,13 @@ public class ExternalApiHelper {
core.setOnResultsComplete(new Runnable() {
@Override
public void run() {
- List<SearchResult> resultSet = new ArrayList<>();
+ List<AidlSearchResultWrapper> resultSet = new ArrayList<>();
SearchUICore.SearchResultCollection resultCollection = core.getCurrentSearchResult();
int count = 0;
for (net.osmand.search.core.SearchResult r : resultCollection.getCurrentSearchResults()) {
String name = QuickSearchListItem.getName(app, r);
String typeName = QuickSearchListItem.getTypeName(app, r);
- SearchResult result = new SearchResult(r.location.getLatitude(), r.location.getLongitude(),
+ AidlSearchResultWrapper result = new AidlSearchResultWrapper(r.location.getLatitude(), r.location.getLongitude(),
name, typeName, r.alternateName, new ArrayList<>(r.otherNames));
resultSet.add(result);
count++;
diff --git a/OsmAnd/src/net/osmand/plus/helpers/GpxUiHelper.java b/OsmAnd/src/net/osmand/plus/helpers/GpxUiHelper.java
index 5350a4b1ad..4f1a852cfd 100644
--- a/OsmAnd/src/net/osmand/plus/helpers/GpxUiHelper.java
+++ b/OsmAnd/src/net/osmand/plus/helpers/GpxUiHelper.java
@@ -23,6 +23,7 @@ import android.support.v7.widget.SwitchCompat;
import android.text.SpannableString;
import android.text.style.StyleSpan;
import android.util.TypedValue;
+import android.view.ContextThemeWrapper;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
@@ -219,7 +220,8 @@ public class GpxUiHelper {
}
public static AlertDialog selectGPXFiles(List<String> selectedGpxList, final Activity activity,
- final CallbackWithObject<GPXFile[]> callbackWithObject) {
+ final CallbackWithObject<GPXFile[]> callbackWithObject,
+ int dialogThemeRes) {
OsmandApplication app = (OsmandApplication) activity.getApplication();
final File dir = app.getAppPath(IndexConstants.GPX_INDEX_DIR);
final List<GPXInfo> allGpxList = getSortedGPXFilesInfo(dir, selectedGpxList, false);
@@ -229,11 +231,13 @@ public class GpxUiHelper {
allGpxList.add(0, new GPXInfo(activity.getString(R.string.show_current_gpx_title), 0, 0));
final ContextMenuAdapter adapter = createGpxContextMenuAdapter(allGpxList, selectedGpxList, true);
- return createDialog(activity, true, true, true, callbackWithObject, allGpxList, adapter);
+ return createDialog(activity, true, true, true, callbackWithObject, allGpxList, adapter, dialogThemeRes);
}
public static AlertDialog selectGPXFile(final Activity activity,
- final boolean showCurrentGpx, final boolean multipleChoice, final CallbackWithObject<GPXFile[]> callbackWithObject) {
+ final boolean showCurrentGpx, final boolean multipleChoice,
+ final CallbackWithObject<GPXFile[]> callbackWithObject, boolean nightMode) {
+ int dialogThemeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
OsmandApplication app = (OsmandApplication) activity.getApplication();
final File dir = app.getAppPath(IndexConstants.GPX_INDEX_DIR);
final List<GPXInfo> list = getSortedGPXFilesInfo(dir, null, false);
@@ -246,7 +250,7 @@ public class GpxUiHelper {
}
final ContextMenuAdapter adapter = createGpxContextMenuAdapter(list, null, showCurrentGpx);
- return createDialog(activity, showCurrentGpx, multipleChoice, false, callbackWithObject, list, adapter);
+ return createDialog(activity, showCurrentGpx, multipleChoice, false, callbackWithObject, list, adapter, dialogThemeRes);
}
return null;
}
@@ -439,11 +443,12 @@ public class GpxUiHelper {
final boolean showAppearanceSetting,
final CallbackWithObject<GPXFile[]> callbackWithObject,
final List<GPXInfo> list,
- final ContextMenuAdapter adapter) {
+ final ContextMenuAdapter adapter,
+ final int themeRes) {
final OsmandApplication app = (OsmandApplication) activity.getApplication();
final DateFormat dateFormat = android.text.format.DateFormat.getMediumDateFormat(activity);
final File dir = app.getAppPath(IndexConstants.GPX_INDEX_DIR);
- AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+ AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(activity, themeRes));
final int layout = R.layout.gpx_track_item;
final Map<String, String> gpxAppearanceParams = new HashMap<>();
@@ -479,7 +484,7 @@ public class GpxUiHelper {
View v = convertView;
boolean checkLayout = getItemViewType(position) == 0;
if (v == null) {
- v = activity.getLayoutInflater().inflate(layout, null);
+ v = View.inflate(new ContextThemeWrapper(activity, themeRes), layout, null);
}
if (dataItems == null) {
@@ -546,7 +551,7 @@ public class GpxUiHelper {
if (trackWidthProp == null || trackColorProp == null) {
builder.setTitle(R.string.show_gpx);
} else {
- final View apprTitleView = activity.getLayoutInflater().inflate(R.layout.select_gpx_appearance_title, null);
+ final View apprTitleView = View.inflate(new ContextThemeWrapper(activity, themeRes), R.layout.select_gpx_appearance_title, null);
final OsmandSettings.CommonPreference<String> prefWidth
= app.getSettings().getCustomRenderProperty(CURRENT_TRACK_WIDTH_ATTR);
@@ -558,14 +563,14 @@ public class GpxUiHelper {
apprTitleView.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- final ListPopupWindow popup = new ListPopupWindow(activity);
+ final ListPopupWindow popup = new ListPopupWindow(new ContextThemeWrapper(activity, themeRes));
popup.setAnchorView(apprTitleView);
popup.setContentWidth(AndroidUtils.dpToPx(activity, 200f));
popup.setModal(true);
popup.setDropDownGravity(Gravity.RIGHT | Gravity.TOP);
popup.setVerticalOffset(AndroidUtils.dpToPx(activity, -48f));
popup.setHorizontalOffset(AndroidUtils.dpToPx(activity, -6f));
- final GpxAppearanceAdapter gpxApprAdapter = new GpxAppearanceAdapter(activity,
+ final GpxAppearanceAdapter gpxApprAdapter = new GpxAppearanceAdapter(new ContextThemeWrapper(activity, themeRes),
gpxAppearanceParams.containsKey(CURRENT_TRACK_COLOR_ATTR) ? gpxAppearanceParams.get(CURRENT_TRACK_COLOR_ATTR) : prefColor.get(),
GpxAppearanceAdapter.GpxAppearanceAdapterType.TRACK_WIDTH_COLOR);
popup.setAdapter(gpxApprAdapter);
@@ -669,7 +674,7 @@ public class GpxUiHelper {
if (position == 0 && showCurrentGpx && item.getSelected()) {
OsmandMonitoringPlugin monitoringPlugin = OsmandPlugin.getEnabledPlugin(OsmandMonitoringPlugin.class);
if (monitoringPlugin == null) {
- AlertDialog.Builder confirm = new AlertDialog.Builder(activity);
+ AlertDialog.Builder confirm = new AlertDialog.Builder(new ContextThemeWrapper(activity, themeRes));
confirm.setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java
index 7f6a23b10c..c89fee0cbf 100644
--- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java
+++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java
@@ -2,9 +2,7 @@ package net.osmand.plus.mapcontextmenu;
import android.content.Context;
import android.graphics.drawable.Drawable;
-import android.graphics.drawable.StateListDrawable;
import android.os.AsyncTask;
-import android.os.Build;
import android.support.annotation.ColorRes;
import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
@@ -17,13 +15,11 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
-import java.util.Map;
-import net.osmand.AndroidUtils;
import net.osmand.IndexConstants;
import net.osmand.Location;
import net.osmand.NativeLibrary.RenderedObject;
import net.osmand.PlatformUtil;
-import net.osmand.aidl.maplayer.point.AMapPoint;
+import net.osmand.aidl.AidlMapPointWrapper;
import net.osmand.binary.BinaryMapDataObject;
import net.osmand.binary.BinaryMapIndexReader.TagValuePair;
import net.osmand.binary.RouteDataObject;
@@ -211,8 +207,8 @@ public abstract class MenuController extends BaseMenuController implements Colla
menuController = new TransportRouteController(mapActivity, pointDescription, (TransportStopRoute) object);
} else if (object instanceof TransportStop) {
menuController = new TransportStopController(mapActivity, pointDescription, (TransportStop) object);
- } else if (object instanceof AMapPoint) {
- menuController = new AMapPointMenuController(mapActivity, pointDescription, (AMapPoint) object);
+ } else if (object instanceof AidlMapPointWrapper) {
+ menuController = new AMapPointMenuController(mapActivity, pointDescription, (AidlMapPointWrapper) object);
} else if (object instanceof LatLon) {
if (pointDescription.isParking()) {
menuController = new ParkingPositionMenuController(mapActivity, pointDescription);
diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/AMapPointMenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/AMapPointMenuController.java
index 52ea9d5740..f4e3be4253 100644
--- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/AMapPointMenuController.java
+++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/AMapPointMenuController.java
@@ -10,9 +10,10 @@ import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.Pair;
-import net.osmand.aidl.contextmenu.AContextMenuButton;
-import net.osmand.aidl.contextmenu.ContextMenuButtonsParams;
-import net.osmand.aidl.maplayer.point.AMapPoint;
+import net.osmand.aidl.AidlContextMenuButtonWrapper;
+import net.osmand.aidl.AidlContextMenuButtonsWrapper;
+import net.osmand.aidl.AidlMapPointWrapper;
+import net.osmand.aidlapi.maplayer.point.AMapPoint;
import net.osmand.data.LatLon;
import net.osmand.data.PointDescription;
import net.osmand.plus.OsmAndFormatter;
@@ -24,7 +25,6 @@ import net.osmand.plus.mapcontextmenu.MenuController;
import net.osmand.plus.widgets.tools.CropCircleTransformation;
import net.osmand.util.Algorithms;
-import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
@@ -35,19 +35,19 @@ public class AMapPointMenuController extends MenuController {
private static final float NO_VALUE = -1;
private static final int NO_ICON = 0;
- private AMapPoint point;
+ private AidlMapPointWrapper point;
private Drawable pointDrawable;
- public AMapPointMenuController(@NonNull MapActivity mapActivity, @NonNull PointDescription pointDescription, @NonNull final AMapPoint point) {
+ public AMapPointMenuController(@NonNull MapActivity mapActivity, @NonNull PointDescription pointDescription, @NonNull final AidlMapPointWrapper point) {
super(new MenuBuilder(mapActivity), pointDescription, mapActivity);
this.point = point;
pointDrawable = getPointDrawable();
final OsmandApplication app = mapActivity.getMyApplication();
- Map<String, ContextMenuButtonsParams> buttonsParamsMap = app.getAidlApi().getContextMenuButtonsParams();
+ Map<String, AidlContextMenuButtonsWrapper> buttonsParamsMap = app.getAidlApi().getContextMenuButtonsParams();
if (!buttonsParamsMap.isEmpty()) {
additionalButtonsControllers = new ArrayList<>();
- for (ContextMenuButtonsParams buttonsParams : buttonsParamsMap.values()) {
+ for (AidlContextMenuButtonsWrapper buttonsParams : buttonsParamsMap.values()) {
List<String> pointsIds = buttonsParams.getPointsIds();
if (((pointsIds == null || pointsIds.isEmpty()) || pointsIds.contains(point.getId())) || buttonsParams.getLayerId().equals(point.getLayerId())) {
long callbackId = buttonsParams.getCallbackId();
@@ -61,8 +61,8 @@ public class AMapPointMenuController extends MenuController {
@Override
protected void setObject(Object object) {
- if (object instanceof AMapPoint) {
- this.point = (AMapPoint) object;
+ if (object instanceof AidlMapPointWrapper) {
+ this.point = (AidlMapPointWrapper) object;
}
}
@@ -179,7 +179,7 @@ public class AMapPointMenuController extends MenuController {
return false;
}
- private TitleButtonController createAdditionButtonController(final AContextMenuButton contextMenuButton, final long callbackId) {
+ private TitleButtonController createAdditionButtonController(final AidlContextMenuButtonWrapper contextMenuButton, final long callbackId) {
MapActivity mapActivity = getMapActivity();
if (mapActivity == null || contextMenuButton == null) {
return null;
diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/RoutePreferencesMenu.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/RoutePreferencesMenu.java
index 44b9a1aa32..7f0826304e 100644
--- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/RoutePreferencesMenu.java
+++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/RoutePreferencesMenu.java
@@ -376,7 +376,7 @@ public class RoutePreferencesMenu {
mapActivity.getRoutingHelper().recalculateRouteDueToSettingsChange();
return true;
}
- });
+ }, app.getDaynightHelper().isNightModeForMapControls());
}
private void updateSpinnerItems(final TextView gpxSpinner) {
diff --git a/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java b/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java
index 1cbb2fd73e..d8d8572218 100644
--- a/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java
+++ b/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java
@@ -39,7 +39,7 @@ import java.text.MessageFormat;
import java.util.List;
import static android.content.Intent.ACTION_VIEW;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAPILLARY;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAPILLARY;
public class MapillaryPlugin extends OsmandPlugin {
public static final String ID = "osmand.mapillary";
diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java
index 8590bb43a4..d356fc0c82 100644
--- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java
+++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java
@@ -885,7 +885,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment {
}
};
- return GpxUiHelper.selectGPXFile(mapActivity, false, false, callbackWithObject);
+ return GpxUiHelper.selectGPXFile(mapActivity, false, false, callbackWithObject, nightMode);
}
private void applyMovePointMode() {
diff --git a/OsmAnd/src/net/osmand/plus/myplaces/TrackBitmapDrawer.java b/OsmAnd/src/net/osmand/plus/myplaces/TrackBitmapDrawer.java
index efc0376ffa..0f803f960f 100644
--- a/OsmAnd/src/net/osmand/plus/myplaces/TrackBitmapDrawer.java
+++ b/OsmAnd/src/net/osmand/plus/myplaces/TrackBitmapDrawer.java
@@ -158,6 +158,7 @@ public class TrackBitmapDrawer {
.setLocation(clat, clon)
.setZoom(15)
.density(density)
+ .setMapDensity(density)
.setPixelDimensions(widthPixels, heightPixels, 0.5f, 0.5f);
rotatedTileBox = boxBuilder.build();
diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java
index a2d18d0c7d..80eb92b415 100644
--- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java
+++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java
@@ -47,12 +47,12 @@ import org.apache.commons.logging.Log;
import java.util.List;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_CREATE_POI;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MODIFY_OSM_CHANGE;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MODIFY_OSM_NOTE;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MODIFY_POI;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_OPEN_OSM_NOTE;
-import static net.osmand.plus.OsmAndCustomizationConstants.OSM_NOTES;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_CREATE_POI;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MODIFY_OSM_CHANGE;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MODIFY_OSM_NOTE;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MODIFY_POI;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_OPEN_OSM_NOTE;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.OSM_NOTES;
public class OsmEditingPlugin extends OsmandPlugin {
@@ -455,7 +455,7 @@ public class OsmEditingPlugin extends OsmandPlugin {
@Override
public int getLogoResourceId() {
- return R.drawable.ic_action_bug_dark;
+ return R.drawable.ic_action_openstreetmap_logo;
}
@Override
diff --git a/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java b/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java
index a76fadd526..c0a633d51d 100644
--- a/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java
+++ b/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java
@@ -1,7 +1,7 @@
package net.osmand.plus.parkingpoint;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MARK_AS_PARKING_LOC;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MARK_AS_PARKING_LOC;
import android.app.Activity;
import android.content.DialogInterface;
diff --git a/OsmAnd/src/net/osmand/plus/poi/PoiFiltersHelper.java b/OsmAnd/src/net/osmand/plus/poi/PoiFiltersHelper.java
index e2aa0d5d20..5356fedfa2 100644
--- a/OsmAnd/src/net/osmand/plus/poi/PoiFiltersHelper.java
+++ b/OsmAnd/src/net/osmand/plus/poi/PoiFiltersHelper.java
@@ -369,6 +369,7 @@ public class PoiFiltersHelper {
}
public void loadSelectedPoiFilters() {
+ selectedPoiFilters.clear();
Set<String> filters = application.getSettings().getSelectedPoiFilters();
for (String f : filters) {
PoiUIFilter filter = getFilterById(f);
diff --git a/OsmAnd/src/net/osmand/plus/profiles/EditProfileFragment.java b/OsmAnd/src/net/osmand/plus/profiles/EditProfileFragment.java
index cb8c5ea751..93cfe27843 100644
--- a/OsmAnd/src/net/osmand/plus/profiles/EditProfileFragment.java
+++ b/OsmAnd/src/net/osmand/plus/profiles/EditProfileFragment.java
@@ -66,7 +66,7 @@ import java.util.Map.Entry;
import studio.carbonylgroup.textfieldboxes.ExtendedEditText;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_SETTINGS_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_SETTINGS_ID;
import static net.osmand.plus.profiles.SelectProfileBottomSheetDialogFragment.DIALOG_TYPE;
import static net.osmand.plus.profiles.SelectProfileBottomSheetDialogFragment.SELECTED_KEY;
import static net.osmand.plus.profiles.SelectProfileBottomSheetDialogFragment.TYPE_BASE_APP_PROFILE;
diff --git a/OsmAnd/src/net/osmand/plus/profiles/SelectProfileBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/profiles/SelectProfileBottomSheetDialogFragment.java
index bfb229c68a..a80206f8c7 100644
--- a/OsmAnd/src/net/osmand/plus/profiles/SelectProfileBottomSheetDialogFragment.java
+++ b/OsmAnd/src/net/osmand/plus/profiles/SelectProfileBottomSheetDialogFragment.java
@@ -267,6 +267,7 @@ public class SelectProfileBottomSheetDialogFragment extends MenuBottomSheetDialo
icons.add(new IconResWithDescr(R.drawable.ic_action_camper, R.string.app_mode_camper, "ic_action_camper", false));
icons.add(new IconResWithDescr(R.drawable.ic_action_pickup_truck, R.string.app_mode_pickup_truck, "ic_action_pickup_truck", false));
icons.add(new IconResWithDescr(R.drawable.ic_action_wagon, R.string.app_mode_wagon, "ic_action_wagon", false));
+ icons.add(new IconResWithDescr(R.drawable.ic_action_utv, R.string.app_mode_utv, "ic_action_utv", false));
return icons;
}
diff --git a/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java b/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java
index fce15e399b..1b06c9b3fd 100644
--- a/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java
+++ b/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java
@@ -46,10 +46,10 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_DOWNLOAD_MAP;
-import static net.osmand.plus.OsmAndCustomizationConstants.OVERLAY_MAP;
-import static net.osmand.plus.OsmAndCustomizationConstants.UNDERLAY_MAP;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_UPDATE_MAP;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_DOWNLOAD_MAP;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.OVERLAY_MAP;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.UNDERLAY_MAP;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_UPDATE_MAP;
public class OsmandRasterMapsPlugin extends OsmandPlugin {
public static final String ID = "osmand.rastermaps";
diff --git a/OsmAnd/src/net/osmand/plus/render/MapRenderRepositories.java b/OsmAnd/src/net/osmand/plus/render/MapRenderRepositories.java
index 5f5e63e700..f4ce51cf88 100644
--- a/OsmAnd/src/net/osmand/plus/render/MapRenderRepositories.java
+++ b/OsmAnd/src/net/osmand/plus/render/MapRenderRepositories.java
@@ -66,7 +66,6 @@ import android.os.Looper;
import android.widget.Toast;
public class MapRenderRepositories {
-
// It is needed to not draw object twice if user have map index that intersects by boundaries
public static boolean checkForDuplicateObjectIds = true;
@@ -644,9 +643,17 @@ public class MapRenderRepositories {
// find selected rendering type
OsmandApplication app = ((OsmandApplication) context.getApplicationContext());
boolean nightMode = app.getDaynightHelper().isNightMode();
+
// boolean moreDetail = prefs.SHOW_MORE_MAP_DETAIL.get();
RenderingRulesStorage storage = app.getRendererRegistry().getCurrentSelectedRenderer();
+ prefs.getCustomRenderProperty("appMode").setModeValue(prefs.APPLICATION_MODE.get(),
+ app.getSettings().APPLICATION_MODE.get().getStringKey());
+ prefs.getCustomRenderProperty("baseAppMode").setModeValue(prefs.APPLICATION_MODE.get(),
+ app.getSettings().APPLICATION_MODE.get().getParent() != null
+ ? prefs.APPLICATION_MODE.get().getParent().getStringKey()
+ : prefs.APPLICATION_MODE.get().getStringKey());
RenderingRuleSearchRequest renderingReq = getSearchRequestWithAppliedCustomRules(storage, nightMode);
+
renderingReq.saveState();
NativeOsmandLibrary nativeLib = !prefs.SAFE_MODE.get() ? NativeOsmandLibrary.getLibrary(storage, context) : null;
diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java
index b4923d3e39..095394e5b4 100644
--- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java
+++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java
@@ -498,6 +498,17 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
updateCards();
}
+ private void applyCardsState(@NonNull List<BaseCard> newCards, @NonNull List<BaseCard> prevCards) {
+ for (BaseCard newCard : newCards) {
+ for (BaseCard prevCard : prevCards) {
+ if (newCard.getClass() == prevCard.getClass()) {
+ newCard.applyState(prevCard);
+ break;
+ }
+ }
+ }
+ }
+
private void updateCards() {
MapActivity mapActivity = getMapActivity();
if (mapActivity == null) {
@@ -510,7 +521,7 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
TargetPointsHelper targetPointsHelper = app.getTargetPointsHelper();
RoutingHelper routingHelper = app.getRoutingHelper();
- menuCards.clear();
+ List<BaseCard> menuCards = new ArrayList<>();
boolean bottomShadowVisible = true;
if (isBasicRouteCalculated()) {
@@ -646,6 +657,8 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
}
}
}
+ applyCardsState(menuCards, this.menuCards);
+ this.menuCards = menuCards;
setBottomShadowVisible(bottomShadowVisible);
setupCards();
}
@@ -2188,6 +2201,7 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
app.getRoutingHelper().removeListener(this);
}
removeTargetPointListener();
+ menuCards = new ArrayList<>();
}
public boolean needShowMenu() {
diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/RouteOptionsBottomSheet.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/RouteOptionsBottomSheet.java
index dbe9633c44..3b11ca88a4 100644
--- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/RouteOptionsBottomSheet.java
+++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/RouteOptionsBottomSheet.java
@@ -412,7 +412,7 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
routingHelper.recalculateRouteDueToSettingsChange();
return true;
}
- });
+ }, nightMode);
}
private void showOptionsMenu(final TextView gpxSpinner) {
diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/BaseCard.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/BaseCard.java
index 1277d09746..2665610a8b 100644
--- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/BaseCard.java
+++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/BaseCard.java
@@ -65,6 +65,10 @@ public abstract class BaseCard {
}
}
+ public void applyState(@NonNull BaseCard card) {
+ // non implemented
+ }
+
public CardListener getListener() {
return listener;
}
diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/HistoryCard.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/HistoryCard.java
index 77757d849b..94d4cad622 100644
--- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/HistoryCard.java
+++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/HistoryCard.java
@@ -2,6 +2,7 @@ package net.osmand.plus.routepreparationmenu.cards;
import android.annotation.SuppressLint;
import android.graphics.drawable.Drawable;
+import android.support.annotation.NonNull;
import android.support.v7.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
@@ -126,4 +127,12 @@ public class HistoryCard extends BaseCard {
((TextView) view.findViewById(R.id.gpx_card_title)).setText(R.string.shared_string_history);
}
+
+ @Override
+ public void applyState(@NonNull BaseCard card) {
+ super.applyState(card);
+ if (card instanceof HistoryCard) {
+ limit = ((HistoryCard) card).limit;
+ }
+ }
}
diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/MapMarkersCard.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/MapMarkersCard.java
index 530c06c043..62727168b0 100644
--- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/MapMarkersCard.java
+++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/MapMarkersCard.java
@@ -142,4 +142,12 @@ public class MapMarkersCard extends BaseCard {
((TextView) view.findViewById(R.id.gpx_card_title)).setText(R.string.map_markers);
}
+
+ @Override
+ public void applyState(@NonNull BaseCard card) {
+ super.applyState(card);
+ if (card instanceof MapMarkersCard) {
+ showLimited = ((MapMarkersCard) card).showLimited;
+ }
+ }
} \ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/TracksCard.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/TracksCard.java
index 3022cbf7c5..40b9d5ff9a 100644
--- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/TracksCard.java
+++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/TracksCard.java
@@ -1,6 +1,7 @@
package net.osmand.plus.routepreparationmenu.cards;
import android.annotation.SuppressLint;
+import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.support.v7.view.ContextThemeWrapper;
import android.view.LayoutInflater;
@@ -148,4 +149,12 @@ public class TracksCard extends BaseCard {
((TextView) view.findViewById(R.id.gpx_card_title)).setText(
String.format("%s (%d)", app.getString(R.string.tracks_on_map), list.size()));
}
+
+ @Override
+ public void applyState(@NonNull BaseCard card) {
+ super.applyState(card);
+ if (card instanceof TracksCard) {
+ showLimited = ((TracksCard) card).showLimited;
+ }
+ }
} \ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java b/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java
index c181406ab4..7cf1a08cb5 100644
--- a/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java
+++ b/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java
@@ -901,7 +901,7 @@ public class RouteCalculationResult {
nextInd++;
}
}
- int dist = listDistance[currentRoute];
+ int dist = getListDistance(currentRoute);
if (fromLoc != null) {
dist += fromLoc.distanceTo(locations.get(currentRoute));
}
@@ -910,9 +910,9 @@ public class RouteCalculationResult {
if (directions.get(nextInd).routePointOffset <= currentRoute
&& currentRoute <= directions.get(nextInd).routeEndPointOffset)
// We are not into a puntual direction.
- dist -= listDistance[directions.get(nextInd).routeEndPointOffset];
+ dist -= getListDistance(directions.get(nextInd).routeEndPointOffset);
else
- dist -= listDistance[directions.get(nextInd).routePointOffset];
+ dist -= getListDistance(directions.get(nextInd).routePointOffset);
}
if(intermediatePoints != null && nextIntermediate < intermediatePoints.length) {
info.intermediatePoint = intermediatePoints[nextIntermediate] == nextInd;
@@ -930,7 +930,7 @@ public class RouteCalculationResult {
/*public */NextDirectionInfo getNextRouteDirectionInfoAfter(NextDirectionInfo prev, NextDirectionInfo next, boolean toSpeak) {
int dirInfo = prev.directionInfoInd;
if (dirInfo < directions.size() && prev.directionInfo != null) {
- int dist = listDistance[prev.directionInfo.routePointOffset];
+ int dist = getListDistance(prev.directionInfo.routePointOffset);
int nextInd = dirInfo + 1;
if (toSpeak) {
while (nextInd < directions.size()) {
@@ -943,7 +943,7 @@ public class RouteCalculationResult {
}
if (nextInd < directions.size()) {
next.directionInfo = directions.get(nextInd);
- dist -= listDistance[directions.get(nextInd).routePointOffset];
+ dist -= getListDistance(directions.get(nextInd).routePointOffset);
}
if(intermediatePoints != null && nextIntermediate < intermediatePoints.length) {
next.intermediatePoint = intermediatePoints[nextIntermediate] == nextInd;
@@ -1044,7 +1044,7 @@ public class RouteCalculationResult {
return 0;
} else {
int directionInd = intermediatePoints[nextIntermediate];
- return dist - listDistance[directions.get(directionInd).routePointOffset];
+ return dist - getListDistance(directions.get(directionInd).routePointOffset);
}
}
return 0;
@@ -1072,9 +1072,9 @@ public class RouteCalculationResult {
RouteDirectionInfo current = directions.get(currentDirectionInfo);
time = current.afterLeftTime;
- int distanceToNextTurn = listDistance[currentRoute];
+ int distanceToNextTurn = getListDistance(currentRoute);
if(currentDirectionInfo + 1 < directions.size()) {
- distanceToNextTurn -= listDistance[directions.get(currentDirectionInfo + 1).routePointOffset];
+ distanceToNextTurn -= getListDistance(directions.get(currentDirectionInfo + 1).routePointOffset);
}
Location l = locations.get(currentRoute);
if(fromLoc != null){
@@ -1092,6 +1092,9 @@ public class RouteCalculationResult {
return getLeftTime(fromLoc) - directions.get(intermediatePoints[nextIntermediate]).afterLeftTime;
}
+ private int getListDistance(int index) {
+ return listDistance.length > index ? listDistance[index] : 0;
+ }
public static class NextDirectionInfo {
public RouteDirectionInfo directionInfo;
diff --git a/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java b/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java
index 75cacd9945..c17f5c2ef6 100644
--- a/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java
+++ b/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java
@@ -958,14 +958,16 @@ public class RouteProvider {
gpx.tracks.add(track);
TrkSegment trkSegment = new TrkSegment();
track.segments.add(trkSegment);
- int cRoute = currentRoute;
- int cDirInfo = currentDirectionInfo;
+
+ if (routeNodes == null || routeNodes.isEmpty()) {
+ return gpx;
+ }
// Save the start point to gpx file's trkpt section unless already contained
WptPt startpoint = new WptPt();
TargetPoint sc = helper.getPointToStart();
int routePointOffsetAdjusted = 0;
- if (sc != null && ((float) sc.getLatitude() != (float) routeNodes.get(cRoute).getLatitude() || (float) sc.getLongitude() != (float) routeNodes.get(cRoute).getLongitude())){
+ if (sc != null && ((float) sc.getLatitude() != (float) routeNodes.get(currentRoute).getLatitude() || (float) sc.getLongitude() != (float) routeNodes.get(currentRoute).getLongitude())){
startpoint.lat = sc.getLatitude();
startpoint.lon = sc.getLongitude();
trkSegment.points.add(startpoint);
@@ -977,7 +979,7 @@ public class RouteProvider {
routePointOffsetAdjusted = 1;
}
- for (int i = cRoute; i< routeNodes.size(); i++) {
+ for (int i = currentRoute; i< routeNodes.size(); i++) {
Location loc = routeNodes.get(i);
WptPt pt = new WptPt();
pt.lat = loc.getLatitude();
@@ -994,52 +996,54 @@ public class RouteProvider {
trkSegment.points.add(pt);
}
- Route route = new Route();
- route.name = name;
- gpx.routes.add(route);
- for (int i = cDirInfo; i < directionInfo.size(); i++) {
- RouteDirectionInfo dirInfo = directionInfo.get(i);
- if (dirInfo.routePointOffset - routePointOffsetAdjusted >= cRoute) {
- if (dirInfo.getTurnType() != null && !dirInfo.getTurnType().isSkipToSpeak() &&
- dirInfo.routePointOffset - routePointOffsetAdjusted < routeNodes.size()) {
- Location loc = routeNodes.get(dirInfo.routePointOffset - routePointOffsetAdjusted);
- WptPt pt = new WptPt();
- pt.lat = loc.getLatitude();
- pt.lon = loc.getLongitude();
-
- // Collect distances and times for subsequent suppressed turns
- int collectedDistance = 0;
- int collectedTime = 0;
- for (int j = i + 1; j < directionInfo.size(); j++) {
- if (directionInfo.get(j).getTurnType() != null && directionInfo.get(j).getTurnType().isSkipToSpeak()) {
- collectedDistance += directionInfo.get(j).getDistance();
- collectedTime += directionInfo.get(j).getExpectedTime();
- } else {
- break;
+ if (directionInfo != null && !directionInfo.isEmpty()) {
+ Route route = new Route();
+ route.name = name;
+ gpx.routes.add(route);
+ for (int i = currentDirectionInfo; i < directionInfo.size(); i++) {
+ RouteDirectionInfo dirInfo = directionInfo.get(i);
+ if (dirInfo.routePointOffset - routePointOffsetAdjusted >= currentRoute) {
+ if (dirInfo.getTurnType() != null && !dirInfo.getTurnType().isSkipToSpeak() &&
+ dirInfo.routePointOffset - routePointOffsetAdjusted < routeNodes.size()) {
+ Location loc = routeNodes.get(dirInfo.routePointOffset - routePointOffsetAdjusted);
+ WptPt pt = new WptPt();
+ pt.lat = loc.getLatitude();
+ pt.lon = loc.getLongitude();
+
+ // Collect distances and times for subsequent suppressed turns
+ int collectedDistance = 0;
+ int collectedTime = 0;
+ for (int j = i + 1; j < directionInfo.size(); j++) {
+ if (directionInfo.get(j).getTurnType() != null && directionInfo.get(j).getTurnType().isSkipToSpeak()) {
+ collectedDistance += directionInfo.get(j).getDistance();
+ collectedTime += directionInfo.get(j).getExpectedTime();
+ } else {
+ break;
+ }
}
- }
- pt.desc = dirInfo.getDescriptionRoute(ctx, collectedDistance + dirInfo.getDistance());
- Map<String, String> extensions = pt.getExtensionsToWrite();
- extensions.put("time", (collectedTime + dirInfo.getExpectedTime()) + "");
- int turnType = dirInfo.getTurnType().getValue();
- if (TurnType.C != turnType) {
- extensions.put("turn", dirInfo.getTurnType().toXmlString());
- extensions.put("turn-angle", dirInfo.getTurnType().getTurnAngle() + "");
- }
- extensions.put("offset", (dirInfo.routePointOffset - cRoute) + "");
+ pt.desc = dirInfo.getDescriptionRoute(ctx, collectedDistance + dirInfo.getDistance());
+ Map<String, String> extensions = pt.getExtensionsToWrite();
+ extensions.put("time", (collectedTime + dirInfo.getExpectedTime()) + "");
+ int turnType = dirInfo.getTurnType().getValue();
+ if (TurnType.C != turnType) {
+ extensions.put("turn", dirInfo.getTurnType().toXmlString());
+ extensions.put("turn-angle", dirInfo.getTurnType().getTurnAngle() + "");
+ }
+ extensions.put("offset", (dirInfo.routePointOffset - currentRoute) + "");
- // Issue #2894
- if (dirInfo.getRef() != null && !"null".equals(dirInfo.getRef())) {
- extensions.put("ref", dirInfo.getRef() + "");
- }
- if (dirInfo.getStreetName() != null && !"null".equals(dirInfo.getStreetName())) {
- extensions.put("street-name", dirInfo.getStreetName() + "");
- }
- if (dirInfo.getDestinationName() != null && !"null".equals(dirInfo.getDestinationName())) {
- extensions.put("dest", dirInfo.getDestinationName() + "");
- }
+ // Issue #2894
+ if (dirInfo.getRef() != null && !"null".equals(dirInfo.getRef())) {
+ extensions.put("ref", dirInfo.getRef() + "");
+ }
+ if (dirInfo.getStreetName() != null && !"null".equals(dirInfo.getStreetName())) {
+ extensions.put("street-name", dirInfo.getStreetName() + "");
+ }
+ if (dirInfo.getDestinationName() != null && !"null".equals(dirInfo.getDestinationName())) {
+ extensions.put("dest", dirInfo.getDestinationName() + "");
+ }
- route.points.add(pt);
+ route.points.add(pt);
+ }
}
}
}
diff --git a/OsmAnd/src/net/osmand/plus/settings/BaseSettingsFragment.java b/OsmAnd/src/net/osmand/plus/settings/BaseSettingsFragment.java
index 6f3cf45df2..7ede734aea 100644
--- a/OsmAnd/src/net/osmand/plus/settings/BaseSettingsFragment.java
+++ b/OsmAnd/src/net/osmand/plus/settings/BaseSettingsFragment.java
@@ -60,7 +60,7 @@ import net.osmand.util.Algorithms;
import org.apache.commons.logging.Log;
-import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_SETTINGS_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_SETTINGS_ID;
public abstract class BaseSettingsFragment extends PreferenceFragmentCompat implements OnPreferenceChangeListener,
OnPreferenceClickListener, AppModeChangedListener {
diff --git a/OsmAnd/src/net/osmand/plus/settings/DataStorageFragment.java b/OsmAnd/src/net/osmand/plus/settings/DataStorageFragment.java
index f4013e536c..b944501c53 100644
--- a/OsmAnd/src/net/osmand/plus/settings/DataStorageFragment.java
+++ b/OsmAnd/src/net/osmand/plus/settings/DataStorageFragment.java
@@ -5,7 +5,6 @@ import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
-import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Bundle;
@@ -46,39 +45,61 @@ import java.util.Locale;
import static net.osmand.plus.settings.DataStorageItemsHolder.INTERNAL_STORAGE;
import static net.osmand.plus.settings.DataStorageItemsHolder.MANUALLY_SPECIFIED;
+import static net.osmand.plus.settings.DataStorageItemsHolder.TILES_MEMORY;
import static net.osmand.plus.settings.bottomsheets.ChangeDataStorageBottomSheet.CHOSEN_DIRECTORY;
import static net.osmand.plus.settings.bottomsheets.ChangeDataStorageBottomSheet.MOVE_DATA;
import static net.osmand.plus.settings.bottomsheets.SelectFolderBottomSheet.PATH_CHANGED;
import static net.osmand.plus.settings.bottomsheets.SelectFolderBottomSheet.NEW_PATH;
-public class DataStorageFragment extends BaseSettingsFragment {
+public class DataStorageFragment extends BaseSettingsFragment implements DataStorageItemsHolder.UpdateMemoryInfoUIAdapter {
private final static String CHANGE_DIRECTORY_BUTTON = "change_directory";
+ private final static String OSMAND_USAGE = "osmand_usage";
+ private final static String CALCULATE_TILES_BTN_PRESSED = "calculate_tiles_btn_pressed";
+ private final static String ITEMS_HOLDER = "items_holder";
private ArrayList<DataStorageMenuItem> menuItems;
+ private ArrayList<DataStorageMemoryItem> memoryItems;
private ArrayList<CheckBoxPreference> dataStorageRadioButtonsGroup;
private Preference changeButton;
private DataStorageMenuItem currentDataStorage;
private String tmpManuallySpecifiedPath;
private DataStorageItemsHolder itemsHolder;
+ private boolean calculateTilesBtnPressed;
+
+ private DataStorageItemsHolder.RefreshMemoryUsedInfo calculateMemoryTask;
+ private DataStorageItemsHolder.RefreshMemoryUsedInfo calculateTilesMemoryTask;
private OsmandApplication app;
private OsmandActionBarActivity activity;
private OsmandSettings settings;
@Override
- protected void setupPreferences() {
+ public void onCreate(Bundle savedInstanceState) {
app = getMyApplication();
activity = getMyActivity();
+ settings = app.getSettings();
+ if (savedInstanceState != null) {
+ calculateTilesBtnPressed = savedInstanceState.getBoolean(CALCULATE_TILES_BTN_PRESSED);
+ itemsHolder = savedInstanceState.getParcelable(ITEMS_HOLDER);
+ }
+ if (itemsHolder == null) {
+ refreshDataInfo();
+ }
+ super.onCreate(savedInstanceState);
+ }
+
+ @Override
+ protected void setupPreferences() {
+
PreferenceScreen screen = getPreferenceScreen();
- if (screen == null || app == null || activity == null) {
+ if (screen == null || itemsHolder == null) {
return;
}
- settings = app.getSettings();
- itemsHolder = DataStorageItemsHolder.refreshInfo(app);
menuItems = itemsHolder.getStorageItems();
+ memoryItems = itemsHolder.getMemoryInfoItems();
dataStorageRadioButtonsGroup = new ArrayList<>();
for (DataStorageMenuItem item : menuItems) {
@@ -174,13 +195,24 @@ public class DataStorageFragment extends BaseSettingsFragment {
}
@Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putBoolean(CALCULATE_TILES_BTN_PRESSED, calculateTilesBtnPressed);
+ outState.putParcelable(ITEMS_HOLDER, itemsHolder);
+ }
+
+ @Override
protected void onBindPreferenceViewHolder(Preference preference, PreferenceViewHolder holder) {
super.onBindPreferenceViewHolder(preference, holder);
String key = preference.getKey();
if (key == null) {
return;
}
- View itemView = holder.itemView;
+ int activeColorResId = isNightMode() ? R.color.active_color_primary_dark : R.color.active_color_primary_light;
+ int activeColor = ContextCompat.getColor(app, activeColorResId);
+ int primaryTextColorResId = isNightMode() ? R.color.text_color_primary_dark : R.color.text_color_primary_light;
+ int primaryTextColor = ContextCompat.getColor(app, primaryTextColorResId);
+ final View itemView = holder.itemView;
if (preference instanceof CheckBoxPreference) {
DataStorageMenuItem item = itemsHolder.getStorage(key);
if (item != null) {
@@ -222,13 +254,57 @@ public class DataStorageFragment extends BaseSettingsFragment {
} else if (key.equals(CHANGE_DIRECTORY_BUTTON)) {
ImageView icon = itemView.findViewById(R.id.button_icon);
TextView title = itemView.findViewById(R.id.button_text);
- int colorResId = isNightMode() ? R.color.active_color_primary_dark : R.color.active_color_primary_light;
- int color = ContextCompat.getColor(app, colorResId);
- Drawable drawable = UiUtilities.getColoredSelectableDrawable(app, color, 0.3f);
+ Drawable drawable = UiUtilities.getColoredSelectableDrawable(app, activeColor, 0.3f);
AndroidUtils.setBackground(itemView, drawable);
icon.setVisibility(View.INVISIBLE);
title.setText(R.string.shared_string_change);
+ } else if(key.equals(OSMAND_USAGE)) {
+ long totalUsageBytes = 0;
+ for (DataStorageMemoryItem mi : memoryItems) {
+ totalUsageBytes += mi.getUsedMemoryBytes();
+ }
+ TextView tvSummary = itemView.findViewById(R.id.summary);
+ tvSummary.setText(getFormattedMemoryUsedInfo(totalUsageBytes));
+ } else {
+ for (DataStorageMemoryItem mi : memoryItems) {
+ if (key.equals(mi.getKey())) {
+ TextView tvMemory = itemView.findViewById(R.id.memory);
+ String summary = "";
+ int color = 0;
+ if (mi.getKey().equals(TILES_MEMORY) && !calculateTilesBtnPressed) {
+ summary = getString(R.string.shared_string_calculate);
+ color = activeColor;
+ tvMemory.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ calculateTilesBtnPressed = true;
+ calculateTilesMemoryTask = itemsHolder.calculateTilesMemoryUsed(DataStorageFragment.this);
+ updateAllSettings();
+ }
+ });
+ } else {
+ tvMemory.setOnClickListener(null);
+ color = primaryTextColor;
+ summary = getFormattedMemoryUsedInfo(mi.getUsedMemoryBytes());
+ }
+ tvMemory.setTextColor(color);
+ tvMemory.setText(summary);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void onDestroy() {
+ if (!activity.isChangingConfigurations()) {
+ if (calculateMemoryTask != null) {
+ calculateMemoryTask.cancel(true);
+ }
+ if (calculateTilesMemoryTask != null) {
+ calculateTilesMemoryTask.cancel(true);
+ }
}
+ super.onDestroy();
}
private void updateView(String key) {
@@ -348,8 +424,15 @@ public class DataStorageFragment extends BaseSettingsFragment {
Toast.makeText(activity, R.string.specified_directiory_not_writeable,
Toast.LENGTH_LONG).show();
}
+ refreshDataInfo();
updateAllSettings();
}
+
+ private void refreshDataInfo() {
+ calculateTilesBtnPressed = false;
+ itemsHolder = DataStorageItemsHolder.refreshInfo(app);
+ calculateMemoryTask = itemsHolder.calculateMemoryUsedInfo(this);
+ }
private String getSpaceDescription(String path) {
File dir = new File(path);
@@ -362,16 +445,40 @@ public class DataStorageFragment extends BaseSettingsFragment {
DecimalFormat formatter = new DecimalFormat("#.##");
return String.format(getString(R.string.data_storage_space_description),
formatter.format(AndroidUtils.getFreeSpaceGb(dir)),
- formatter.format(AndroidUtils.getUsedSpaceGb(dir)),
formatter.format(AndroidUtils.getTotalSpaceGb(dir)));
}
return "";
}
+
+ private String getFormattedMemoryUsedInfo(long bytes) {
+ int type = 1;
+ double used = (double) bytes / 1024;
+ while (used > 1024) {
+ ++type;
+ used = used / 1024;
+ }
+ String formattedUsed = new DecimalFormat("#.##").format(used);
+ if (type == 1) {
+ return String.format(getString(R.string.shared_string_memory_kb_desc), formattedUsed);
+ } else if (type == 2) {
+ return String.format(getString(R.string.shared_string_memory_mb_desc), formattedUsed);
+ } else if (type == 3){
+ return String.format(getString(R.string.shared_string_memory_gb_desc), formattedUsed);
+ } else if (type == 4){
+ return String.format(getString(R.string.shared_string_memory_tb_desc), formattedUsed);
+ }
+ return "";
+ }
protected void reloadData() {
new ReloadData(activity, getMyApplication()).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void) null);
}
+ @Override
+ public void onMemoryInfoUpdate() {
+ updateAllSettings();
+ }
+
public static class MoveFilesToDifferentDirectory extends AsyncTask<Void, Void, Boolean> {
protected WeakReference<OsmandActionBarActivity> activity;
diff --git a/OsmAnd/src/net/osmand/plus/settings/DataStorageItemsHolder.java b/OsmAnd/src/net/osmand/plus/settings/DataStorageItemsHolder.java
index 089bf5c448..6c1f4a8dc5 100644
--- a/OsmAnd/src/net/osmand/plus/settings/DataStorageItemsHolder.java
+++ b/OsmAnd/src/net/osmand/plus/settings/DataStorageItemsHolder.java
@@ -1,7 +1,11 @@
package net.osmand.plus.settings;
+import android.os.AsyncTask;
import android.os.Build;
+import android.os.Parcel;
+import android.os.Parcelable;
+import net.osmand.IndexConstants;
import net.osmand.ValueHolder;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
@@ -10,39 +14,49 @@ import net.osmand.plus.R;
import java.io.File;
import java.util.ArrayList;
-public class DataStorageItemsHolder {
+public class DataStorageItemsHolder implements Parcelable {
public final static String INTERNAL_STORAGE = "internal_storage";
public final static String EXTERNAL_STORAGE = "external_storage";
public final static String SHARED_STORAGE = "shared_storage";
public final static String MULTIUSER_STORAGE = "multiuser_storage";
public final static String MANUALLY_SPECIFIED = "manually_specified";
- private ArrayList<DataStorageMenuItem> menuItems;
+ public final static String MAPS_MEMORY = "maps_memory_used";
+ public final static String TRACKS_MEMORY = "tracks_memory_used";
+ public final static String NOTES_MEMORY = "notes_memory_used";
+ public final static String TILES_MEMORY = "tiles_memory_used";
+ public final static String OTHER_MEMORY = "other_memory_used";
+
+ private ArrayList<DataStorageMenuItem> menuItems = new ArrayList<>();
private DataStorageMenuItem currentDataStorage;
private DataStorageMenuItem manuallySpecified;
+ private ArrayList<DataStorageMemoryItem> memoryItems = new ArrayList<>();
+ private DataStorageMemoryItem mapsMemory;
+ private DataStorageMemoryItem tracksMemory;
+ private DataStorageMemoryItem notesMemory;
+ private DataStorageMemoryItem tilesMemory;
+ private DataStorageMemoryItem otherMemory;
+
private int currentStorageType;
private String currentStoragePath;
- private OsmandApplication app;
- private OsmandSettings settings;
-
private DataStorageItemsHolder(OsmandApplication app) {
- this.app = app;
- this.settings = app.getSettings();
- prepareData();
+ prepareData(app);
}
public static DataStorageItemsHolder refreshInfo(OsmandApplication app) {
return new DataStorageItemsHolder(app);
}
- private void prepareData() {
+ private void prepareData(OsmandApplication app) {
if (app == null) {
return;
}
+ OsmandSettings settings = app.getSettings();
+
if (settings.getExternalStorageDirectoryTypeV19() >= 0) {
currentStorageType = settings.getExternalStorageDirectoryTypeV19();
} else {
@@ -55,8 +69,6 @@ public class DataStorageItemsHolder {
}
currentStoragePath = settings.getExternalStorageDirectory().getAbsolutePath();
- menuItems = new ArrayList<>();
-
String path;
File dir;
int iconId;
@@ -69,13 +81,13 @@ public class DataStorageItemsHolder {
iconId = R.drawable.ic_action_phone;
DataStorageMenuItem internalStorageItem = DataStorageMenuItem.builder()
- .buildKey(INTERNAL_STORAGE)
- .buildTitle(getString(R.string.storage_directory_internal_app))
- .buildDirectory(path)
- .buildDescription(getString(R.string.internal_app_storage_description))
- .buildType(OsmandSettings.EXTERNAL_STORAGE_TYPE_INTERNAL_FILE)
- .buildIconResId(iconId)
- .build();
+ .setKey(INTERNAL_STORAGE)
+ .setTitle(app.getString(R.string.storage_directory_internal_app))
+ .setDirectory(path)
+ .setDescription(app.getString(R.string.internal_app_storage_description))
+ .setType(OsmandSettings.EXTERNAL_STORAGE_TYPE_INTERNAL_FILE)
+ .setIconResId(iconId)
+ .createItem();
addItem(internalStorageItem);
//shared_storage
@@ -84,12 +96,12 @@ public class DataStorageItemsHolder {
iconId = R.drawable.ic_action_phone;
DataStorageMenuItem sharedStorageItem = DataStorageMenuItem.builder()
- .buildKey(SHARED_STORAGE)
- .buildTitle(getString(R.string.storage_directory_shared))
- .buildDirectory(path)
- .buildType(OsmandSettings.EXTERNAL_STORAGE_TYPE_DEFAULT)
- .buildIconResId(iconId)
- .build();
+ .setKey(SHARED_STORAGE)
+ .setTitle(app.getString(R.string.storage_directory_shared))
+ .setDirectory(path)
+ .setType(OsmandSettings.EXTERNAL_STORAGE_TYPE_DEFAULT)
+ .setIconResId(iconId)
+ .createItem();
addItem(sharedStorageItem);
//external storage
@@ -103,12 +115,12 @@ public class DataStorageItemsHolder {
path = dir.getAbsolutePath();
iconId = getIconForStorageType(dir);
DataStorageMenuItem externalStorageItem = DataStorageMenuItem.builder()
- .buildKey(EXTERNAL_STORAGE + i)
- .buildTitle(getString(R.string.storage_directory_external) + " " + i)
- .buildDirectory(path)
- .buildType(OsmandSettings.EXTERNAL_STORAGE_TYPE_EXTERNAL_FILE)
- .buildIconResId(iconId)
- .build();
+ .setKey(EXTERNAL_STORAGE + i)
+ .setTitle(app.getString(R.string.storage_directory_external) + " " + i)
+ .setDirectory(path)
+ .setType(OsmandSettings.EXTERNAL_STORAGE_TYPE_EXTERNAL_FILE)
+ .setIconResId(iconId)
+ .createItem();
addItem(externalStorageItem);
}
}
@@ -125,12 +137,12 @@ public class DataStorageItemsHolder {
path = dir.getAbsolutePath();
iconId = getIconForStorageType(dir);
DataStorageMenuItem multiuserStorageItem = DataStorageMenuItem.builder()
- .buildKey(MULTIUSER_STORAGE + i)
- .buildTitle(getString(R.string.storage_directory_multiuser) + " " + i)
- .buildDirectory(path)
- .buildType(OsmandSettings.EXTERNAL_STORAGE_TYPE_OBB)
- .buildIconResId(iconId)
- .build();
+ .setKey(MULTIUSER_STORAGE + i)
+ .setTitle(app.getString(R.string.storage_directory_multiuser) + " " + i)
+ .setDirectory(path)
+ .setType(OsmandSettings.EXTERNAL_STORAGE_TYPE_OBB)
+ .setIconResId(iconId)
+ .createItem();
addItem(multiuserStorageItem);
}
}
@@ -139,21 +151,60 @@ public class DataStorageItemsHolder {
//manually specified storage
manuallySpecified = DataStorageMenuItem.builder()
- .buildKey(MANUALLY_SPECIFIED)
- .buildTitle(getString(R.string.storage_directory_manual))
- .buildDirectory(currentStoragePath)
- .buildType(OsmandSettings.EXTERNAL_STORAGE_TYPE_SPECIFIED)
- .buildIconResId(R.drawable.ic_action_folder)
- .build();
+ .setKey(MANUALLY_SPECIFIED)
+ .setTitle(app.getString(R.string.storage_directory_manual))
+ .setDirectory(currentStoragePath)
+ .setType(OsmandSettings.EXTERNAL_STORAGE_TYPE_SPECIFIED)
+ .setIconResId(R.drawable.ic_action_folder)
+ .createItem();
menuItems.add(manuallySpecified);
if (currentDataStorage == null) {
currentDataStorage = manuallySpecified;
}
+
+ initMemoryUsed(app);
}
- private String getString(int resId) {
- return app.getString(resId);
+ private void initMemoryUsed(OsmandApplication app) {
+ mapsMemory = DataStorageMemoryItem.builder()
+ .setKey(MAPS_MEMORY)
+ .setExtensions(IndexConstants.BINARY_MAP_INDEX_EXT, IndexConstants.BINARY_MAP_INDEX_EXT_ZIP)
+ .setDirectories(
+ app.getAppPath(IndexConstants.MAPS_PATH).getAbsolutePath(),
+ app.getAppPath(IndexConstants.ROADS_INDEX_DIR).getAbsolutePath(),
+ app.getAppPath(IndexConstants.SRTM_INDEX_DIR).getAbsolutePath(),
+ app.getAppPath(IndexConstants.WIKI_INDEX_DIR).getAbsolutePath(),
+ app.getAppPath(IndexConstants.WIKIVOYAGE_INDEX_DIR).getAbsolutePath(),
+ app.getAppPath(IndexConstants.BACKUP_INDEX_DIR).getAbsolutePath())
+ .createItem();
+ memoryItems.add(mapsMemory);
+
+ tracksMemory = DataStorageMemoryItem.builder()
+ .setKey(TRACKS_MEMORY)
+// .setExtensions(".gpx", ".gpx.bz2")
+ .setDirectories(app.getAppPath(IndexConstants.GPX_INDEX_DIR).getAbsolutePath())
+ .createItem();
+ memoryItems.add(tracksMemory);
+
+ notesMemory = DataStorageMemoryItem.builder()
+ .setKey(NOTES_MEMORY)
+// .setExtensions("")
+ .setDirectories(app.getAppPath(IndexConstants.AV_INDEX_DIR).getAbsolutePath())
+ .createItem();
+ memoryItems.add(notesMemory);
+
+ tilesMemory = DataStorageMemoryItem.builder()
+ .setKey(TILES_MEMORY)
+// .setExtensions("")
+ .setDirectories(app.getAppPath(IndexConstants.TILES_INDEX_DIR).getAbsolutePath())
+ .createItem();
+ memoryItems.add(tilesMemory);
+
+ otherMemory = DataStorageMemoryItem.builder()
+ .setKey(OTHER_MEMORY)
+ .createItem();
+ memoryItems.add(otherMemory);
}
public ArrayList<DataStorageMenuItem> getStorageItems() {
@@ -197,4 +248,190 @@ public class DataStorageItemsHolder {
public String getCurrentPath() {
return currentStoragePath;
}
+
+ public ArrayList<DataStorageMemoryItem> getMemoryInfoItems() {
+ return memoryItems;
+ }
+
+ public RefreshMemoryUsedInfo calculateMemoryUsedInfo(UpdateMemoryInfoUIAdapter listener) {
+ File rootDir = new File(currentStoragePath);
+ RefreshMemoryUsedInfo task = new RefreshMemoryUsedInfo(listener, otherMemory, rootDir, tilesMemory.getDirectories());
+ task.execute(mapsMemory, tracksMemory, notesMemory);
+ return task;
+ }
+
+ public RefreshMemoryUsedInfo calculateTilesMemoryUsed(UpdateMemoryInfoUIAdapter listener) {
+ File rootDir = new File(tilesMemory.getDirectories()[0]);
+ RefreshMemoryUsedInfo task = new RefreshMemoryUsedInfo(listener, otherMemory, rootDir);
+ task.execute(tilesMemory);
+ return task;
+ }
+
+ public static class RefreshMemoryUsedInfo extends AsyncTask<DataStorageMemoryItem, Void, Void> {
+ private UpdateMemoryInfoUIAdapter listener;
+ private File rootDir;
+ private DataStorageMemoryItem otherMemory;
+ private String[] directoriesToAvoid;
+
+ public RefreshMemoryUsedInfo(UpdateMemoryInfoUIAdapter listener, DataStorageMemoryItem otherMemory, File rootDir, String... directoriesToAvoid) {
+ this.listener = listener;
+ this.otherMemory = otherMemory;
+ this.rootDir = rootDir;
+ this.directoriesToAvoid = directoriesToAvoid;
+ }
+
+ @Override
+ protected Void doInBackground(DataStorageMemoryItem... items) {
+ if (items.length == 1) {
+ DataStorageMemoryItem item = items[0];
+ item.addBytes(getDirectorySize(rootDir, item.getExtensions()));
+ } else {
+ calculateMultiTypes(items);
+ }
+ return null;
+ }
+
+ private void calculateMultiTypes(DataStorageMemoryItem[] items) {
+ File[] files = rootDir.listFiles();
+
+ for (File f : files) {
+ boolean matched = false;
+ if (f.isDirectory()) {
+ boolean avoid = false;
+ for (String directoryToAvoid : directoriesToAvoid) {
+ if (f.getAbsolutePath().equals(directoryToAvoid)) {
+ avoid = true;
+ break;
+ }
+ }
+ if (!avoid) {
+ for (DataStorageMemoryItem item : items) {
+ String[] directories = item.getDirectories();
+ if (directories != null) {
+ for (String directory : directories) {
+ if (f.getAbsolutePath().equals(directory)) {
+ item.addBytes(getDirectorySize(f, item.getExtensions()));
+ matched = true;
+ break;
+ }
+ }
+ }
+ }
+ if (!matched) {
+ otherMemory.addBytes(getDirectorySize(f, null));
+ }
+ }
+ } else if (f.isFile()) {
+ for (DataStorageMemoryItem item : items) {
+ String[] extensions = item.getExtensions();
+ if (extensions != null) {
+ for (String extension : extensions) {
+ if (f.getAbsolutePath().endsWith(extension)) {
+ item.addBytes(f.length());
+ matched = true;
+ break;
+ }
+ }
+ }
+ }
+ if (!matched) {
+ otherMemory.addBytes(f.length());
+ }
+ publishProgress();
+ }
+ }
+ }
+
+ private long getDirectorySize(File dir, String[] extensions) {
+ long bytes = 0;
+ if (dir.isDirectory()) {
+ File[] files = dir.listFiles();
+ for (File file : files) {
+ if (isCancelled()) {
+ break;
+ }
+ if (file.isDirectory()) {
+ bytes += getDirectorySize(file, extensions);
+ } else if (file.isFile()) {
+ //check file extension
+ boolean matched = false;
+ if (extensions != null) {
+ for (String extension : extensions) {
+ if (file.getName().endsWith(extension)) {
+ matched = true;
+ break;
+ }
+ }
+ } else {
+ matched = true;
+ }
+ if (matched) {
+ bytes += file.length();
+ } else {
+ otherMemory.addBytes(file.length());
+ }
+ publishProgress();
+ }
+ }
+ }
+ return bytes;
+ }
+
+ @Override
+ protected void onProgressUpdate(Void... values) {
+ super.onProgressUpdate(values);
+ if (listener != null) {
+ listener.onMemoryInfoUpdate();
+ }
+ }
+
+ @Override
+ protected void onPostExecute(Void aVoid) {
+ super.onPostExecute(aVoid);
+ if (listener != null) {
+ listener.onMemoryInfoUpdate();
+ }
+ }
+ }
+
+ public interface UpdateMemoryInfoUIAdapter {
+
+ void onMemoryInfoUpdate();
+
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ private DataStorageItemsHolder(Parcel in) {
+ menuItems = in.readArrayList(DataStorageMenuItem.class.getClassLoader());
+ currentDataStorage = in.readParcelable(DataStorageMenuItem.class.getClassLoader());
+ memoryItems = in.readArrayList(DataStorageMemoryItem.class.getClassLoader());
+ currentStorageType = in.readInt();
+ currentStoragePath = in.readString();
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeArray(menuItems.toArray());
+ dest.writeParcelable(currentDataStorage, flags);
+ dest.writeArray(memoryItems.toArray());
+ dest.writeInt(currentStorageType);
+ dest.writeString(currentStoragePath);
+ }
+
+ public static final Parcelable.Creator<DataStorageItemsHolder> CREATOR = new Parcelable.Creator<DataStorageItemsHolder>() {
+
+ @Override
+ public DataStorageItemsHolder createFromParcel(Parcel source) {
+ return new DataStorageItemsHolder(source);
+ }
+
+ @Override
+ public DataStorageItemsHolder[] newArray(int size) {
+ return new DataStorageItemsHolder[size];
+ }
+ };
} \ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/plus/settings/DataStorageMemoryItem.java b/OsmAnd/src/net/osmand/plus/settings/DataStorageMemoryItem.java
new file mode 100644
index 0000000000..a13d87fab2
--- /dev/null
+++ b/OsmAnd/src/net/osmand/plus/settings/DataStorageMemoryItem.java
@@ -0,0 +1,122 @@
+package net.osmand.plus.settings;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class DataStorageMemoryItem implements Parcelable {
+ private String key;
+ private String[] extensions;
+ private String[] directories;
+ private long usedMemoryBytes;
+
+ private DataStorageMemoryItem(String key, String[] extensions, long usedMemoryBytes, String[] directories) {
+ this.key = key;
+ this.extensions = extensions;
+ this.usedMemoryBytes = usedMemoryBytes;
+ this.directories = directories;
+ }
+
+ private DataStorageMemoryItem(Parcel in) {
+ key = in.readString();
+ in.readStringArray(extensions);
+ in.readStringArray(directories);
+ usedMemoryBytes = in.readLong();
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public long getUsedMemoryBytes() {
+ return usedMemoryBytes;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public void setUsedMemoryBytes(long usedMemoryBytes) {
+ this.usedMemoryBytes = usedMemoryBytes;
+ }
+
+ public static DataStorageMemoryItemBuilder builder() {
+ return new DataStorageMemoryItemBuilder();
+ }
+
+ public String[] getExtensions() {
+ return extensions;
+ }
+
+ public void setExtensions(String[] extensions) {
+ this.extensions = extensions;
+ }
+
+ public String[] getDirectories() {
+ return directories;
+ }
+
+ public void setDirectories(String[] directories) {
+ this.directories = directories;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(key);
+ dest.writeStringArray(extensions);
+ dest.writeStringArray(directories);
+ dest.writeLong(usedMemoryBytes);
+ }
+
+ public static final Parcelable.Creator<DataStorageMemoryItem> CREATOR = new Parcelable.Creator<DataStorageMemoryItem>() {
+
+ @Override
+ public DataStorageMemoryItem createFromParcel(Parcel source) {
+ return new DataStorageMemoryItem(source);
+ }
+
+ @Override
+ public DataStorageMemoryItem[] newArray(int size) {
+ return new DataStorageMemoryItem[size];
+ }
+ };
+
+ public static class DataStorageMemoryItemBuilder {
+ private String key;
+ private String[] extensions;
+ private String[] directories;
+ private long usedMemoryBytes;
+
+ public DataStorageMemoryItemBuilder setKey(String key) {
+ this.key = key;
+ return this;
+ }
+
+ public DataStorageMemoryItemBuilder setExtensions(String ... extensions) {
+ this.extensions = extensions;
+ return this;
+ }
+
+ public DataStorageMemoryItemBuilder setDirectories(String ... directories) {
+ this.directories = directories;
+ return this;
+ }
+
+ public DataStorageMemoryItemBuilder setUsedMemoryBytes(long usedMemoryBytes) {
+ this.usedMemoryBytes = usedMemoryBytes;
+ return this;
+ }
+
+ public DataStorageMemoryItem createItem() {
+ return new DataStorageMemoryItem(key, extensions, usedMemoryBytes, directories);
+ }
+ }
+
+ public void addBytes(long bytes) {
+ this.usedMemoryBytes += bytes;
+ }
+}
diff --git a/OsmAnd/src/net/osmand/plus/settings/DataStorageMenuItem.java b/OsmAnd/src/net/osmand/plus/settings/DataStorageMenuItem.java
index 548150089d..cd49cfd21d 100644
--- a/OsmAnd/src/net/osmand/plus/settings/DataStorageMenuItem.java
+++ b/OsmAnd/src/net/osmand/plus/settings/DataStorageMenuItem.java
@@ -120,37 +120,37 @@ public class DataStorageMenuItem implements Parcelable, Cloneable {
@IdRes
private int iconResId;
- public DataStorageMenuItemBuilder buildKey(String key) {
+ public DataStorageMenuItemBuilder setKey(String key) {
this.key = key;
return this;
}
- public DataStorageMenuItemBuilder buildType(int type) {
+ public DataStorageMenuItemBuilder setType(int type) {
this.type = type;
return this;
}
- public DataStorageMenuItemBuilder buildTitle(String title) {
+ public DataStorageMenuItemBuilder setTitle(String title) {
this.title = title;
return this;
}
- public DataStorageMenuItemBuilder buildDescription(String description) {
+ public DataStorageMenuItemBuilder setDescription(String description) {
this.description = description;
return this;
}
- public DataStorageMenuItemBuilder buildDirectory(String directory) {
+ public DataStorageMenuItemBuilder setDirectory(String directory) {
this.directory = directory;
return this;
}
- public DataStorageMenuItemBuilder buildIconResId(int iconResId) {
+ public DataStorageMenuItemBuilder setIconResId(int iconResId) {
this.iconResId = iconResId;
return this;
}
- public DataStorageMenuItem build() {
+ public DataStorageMenuItem createItem() {
return new DataStorageMenuItem(key, type, title, description, directory, iconResId);
}
}
@@ -158,12 +158,12 @@ public class DataStorageMenuItem implements Parcelable, Cloneable {
@Override
public Object clone() throws CloneNotSupportedException {
return DataStorageMenuItem.builder()
- .buildKey(this.key)
- .buildTitle(this.title)
- .buildDescription(this.description)
- .buildDirectory(this.directory)
- .buildType(this.type)
- .buildIconResId(this.iconResId)
- .build();
+ .setKey(this.key)
+ .setTitle(this.title)
+ .setDescription(this.description)
+ .setDirectory(this.directory)
+ .setType(this.type)
+ .setIconResId(this.iconResId)
+ .createItem();
}
} \ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/plus/settings/GeneralProfileSettingsFragment.java b/OsmAnd/src/net/osmand/plus/settings/GeneralProfileSettingsFragment.java
index 447c5e8a36..ba5299fc04 100644
--- a/OsmAnd/src/net/osmand/plus/settings/GeneralProfileSettingsFragment.java
+++ b/OsmAnd/src/net/osmand/plus/settings/GeneralProfileSettingsFragment.java
@@ -48,6 +48,7 @@ public class GeneralProfileSettingsFragment extends BaseSettingsFragment impleme
setupUnitsOfLengthPref();
setupCoordinatesFormatPref();
setupAngularUnitsPref();
+ setupSpeedSystemPref();
setupKalmanFilterPref();
setupMagneticFieldSensorPref();
@@ -202,7 +203,24 @@ public class GeneralProfileSettingsFragment extends BaseSettingsFragment impleme
ListPreferenceEx angularUnits = (ListPreferenceEx) findPreference(settings.ANGULAR_UNITS.getId());
angularUnits.setEntries(entries);
angularUnits.setEntryValues(entryValues);
- angularUnits.setIcon(getContentIcon(R.drawable.ic_action_angular_unit));
+ angularUnits.setIcon(getIcon(R.drawable.ic_action_angular_unit));
+ }
+
+ private void setupSpeedSystemPref() {
+ OsmandSettings.SpeedConstants[] speedConstants = OsmandSettings.SpeedConstants.values();
+ String[] entries = new String[speedConstants.length];
+ Integer[] entryValues = new Integer[speedConstants.length];
+
+ for (int i = 0; i < entries.length; i++) {
+ entries[i] = speedConstants[i].toHumanString(app);
+ entryValues[i] = speedConstants[i].ordinal();
+ }
+
+ ListPreferenceEx speedSystem = (ListPreferenceEx) findPreference(settings.SPEED_SYSTEM.getId());
+ speedSystem.setEntries(entries);
+ speedSystem.setEntryValues(entryValues);
+ speedSystem.setDescription(R.string.default_speed_system_descr);
+ speedSystem.setIcon(getContentIcon(R.drawable.ic_action_speed));
}
private void setupKalmanFilterPref() {
diff --git a/OsmAnd/src/net/osmand/plus/settings/RouteParametersFragment.java b/OsmAnd/src/net/osmand/plus/settings/RouteParametersFragment.java
index 6c4dd6ba70..c4ab399b6c 100644
--- a/OsmAnd/src/net/osmand/plus/settings/RouteParametersFragment.java
+++ b/OsmAnd/src/net/osmand/plus/settings/RouteParametersFragment.java
@@ -15,7 +15,6 @@ import net.osmand.plus.OsmandSettings.BooleanPreference;
import net.osmand.plus.R;
import net.osmand.plus.activities.SettingsBaseActivity;
import net.osmand.plus.activities.SettingsNavigationActivity;
-import net.osmand.plus.routepreparationmenu.RoutingOptionsHelper;
import net.osmand.plus.routing.RouteProvider;
import net.osmand.plus.settings.preferences.ListPreferenceEx;
import net.osmand.plus.settings.preferences.MultiSelectBooleanPreference;
@@ -30,6 +29,7 @@ import java.util.Map;
import java.util.Set;
import static net.osmand.plus.activities.SettingsNavigationActivity.getRouter;
+import static net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.DRIVING_STYLE;
public class RouteParametersFragment extends BaseSettingsFragment {
@@ -43,6 +43,7 @@ public class RouteParametersFragment extends BaseSettingsFragment {
private List<GeneralRouter.RoutingParameter> avoidParameters = new ArrayList<GeneralRouter.RoutingParameter>();
private List<GeneralRouter.RoutingParameter> preferParameters = new ArrayList<GeneralRouter.RoutingParameter>();
+ private List<GeneralRouter.RoutingParameter> drivingStyleParameters = new ArrayList<GeneralRouter.RoutingParameter>();
private List<GeneralRouter.RoutingParameter> reliefFactorParameters = new ArrayList<GeneralRouter.RoutingParameter>();
private List<GeneralRouter.RoutingParameter> otherRoutingParameters = new ArrayList<GeneralRouter.RoutingParameter>();
@@ -118,7 +119,7 @@ public class RouteParametersFragment extends BaseSettingsFragment {
clearParameters();
if (router != null) {
Map<String, GeneralRouter.RoutingParameter> parameters = router.getParameters();
- if (parameters.containsKey(GeneralRouter.USE_SHORTEST_WAY)) {
+ if (!am.isDerivedRoutingFrom(ApplicationMode.CAR)) {
screen.addPreference(fastRoute);
}
for (Map.Entry<String, GeneralRouter.RoutingParameter> e : parameters.entrySet()) {
@@ -130,14 +131,19 @@ public class RouteParametersFragment extends BaseSettingsFragment {
preferParameters.add(routingParameter);
} else if (RELIEF_SMOOTHNESS_FACTOR.equals(routingParameter.getGroup())) {
reliefFactorParameters.add(routingParameter);
- } else if (!param.equals(GeneralRouter.USE_SHORTEST_WAY)
+ } else if (DRIVING_STYLE.equals(routingParameter.getGroup())) {
+ drivingStyleParameters.add(routingParameter);
+ } else if ((!param.equals(GeneralRouter.USE_SHORTEST_WAY) || am.isDerivedRoutingFrom(ApplicationMode.CAR))
&& !param.equals(GeneralRouter.VEHICLE_HEIGHT)
&& !param.equals(GeneralRouter.VEHICLE_WEIGHT)
- && !param.equals(GeneralRouter.VEHICLE_WIDTH)
- && !RoutingOptionsHelper.DRIVING_STYLE.equals(routingParameter.getGroup())) {
+ && !param.equals(GeneralRouter.VEHICLE_WIDTH)) {
otherRoutingParameters.add(routingParameter);
}
}
+ if (drivingStyleParameters.size() > 0) {
+ ListPreferenceEx drivingStyleRouting = createRoutingBooleanListPreference(DRIVING_STYLE, drivingStyleParameters);
+ screen.addPreference(drivingStyleRouting);
+ }
if (avoidParameters.size() > 0) {
MultiSelectBooleanPreference avoidRouting = new MultiSelectBooleanPreference(app);
avoidRouting.setKey(AVOID_ROUTING_PARAMETER_PREFIX);
@@ -179,27 +185,8 @@ public class RouteParametersFragment extends BaseSettingsFragment {
screen.addPreference(preferRouting);
}
if (reliefFactorParameters.size() > 0) {
- String defaultTitle = Algorithms.capitalizeFirstLetterAndLowercase(RELIEF_SMOOTHNESS_FACTOR.replace('_', ' '));
- String title = SettingsBaseActivity.getRoutingStringPropertyName(app, RELIEF_SMOOTHNESS_FACTOR, defaultTitle);
-
- Object[] entryValues = new Object[reliefFactorParameters.size()];
- String[] entries = new String[entryValues.length];
-
- String selectedParameterId = null;
- for (int i = 0; i < reliefFactorParameters.size(); i++) {
- GeneralRouter.RoutingParameter parameter = reliefFactorParameters.get(i);
- entryValues[i] = parameter.getId();
- entries[i] = SettingsNavigationActivity.getRoutinParameterTitle(app, parameter);
- if (SettingsNavigationActivity.isRoutingParameterSelected(settings, am, parameter)) {
- selectedParameterId = parameter.getId();
- }
- }
-
- ListPreferenceEx reliefFactorRouting = createListPreferenceEx(RELIEF_SMOOTHNESS_FACTOR, entries, entryValues, title, R.layout.preference_with_descr);
- reliefFactorRouting.setPersistent(false);
- reliefFactorRouting.setValue(selectedParameterId);
+ ListPreferenceEx reliefFactorRouting = createRoutingBooleanListPreference(RELIEF_SMOOTHNESS_FACTOR, reliefFactorParameters);
reliefFactorRouting.setDescription(R.string.relief_smoothness_factor_descr);
- reliefFactorRouting.setIconSpaceReserved(true);
screen.addPreference(reliefFactorRouting);
}
@@ -243,13 +230,12 @@ public class RouteParametersFragment extends BaseSettingsFragment {
public boolean onPreferenceChange(Preference preference, Object newValue) {
String key = preference.getKey();
- if (RELIEF_SMOOTHNESS_FACTOR.equals(key)) {
- if (newValue instanceof String) {
- String selectedParameterId = (String) newValue;
- for (GeneralRouter.RoutingParameter parameter : reliefFactorParameters) {
- String parameterId = parameter.getId();
- SettingsNavigationActivity.setRoutingParameterSelected(settings, getSelectedAppMode(), parameterId, parameter.getDefaultBoolean(), parameterId.equals(selectedParameterId));
- }
+ if ((RELIEF_SMOOTHNESS_FACTOR.equals(key) || DRIVING_STYLE.equals(key)) && newValue instanceof String) {
+ String selectedParameterId = (String) newValue;
+ List<GeneralRouter.RoutingParameter> routingParameters = DRIVING_STYLE.equals(key) ? drivingStyleParameters : reliefFactorParameters;
+ for (GeneralRouter.RoutingParameter parameter : routingParameters) {
+ String parameterId = parameter.getId();
+ SettingsNavigationActivity.setRoutingParameterSelected(settings, getSelectedAppMode(), parameterId, parameter.getDefaultBoolean(), parameterId.equals(selectedParameterId));
}
return true;
}
@@ -257,9 +243,36 @@ public class RouteParametersFragment extends BaseSettingsFragment {
return super.onPreferenceChange(preference, newValue);
}
+ private ListPreferenceEx createRoutingBooleanListPreference(String groupKey, List<GeneralRouter.RoutingParameter> routingParameters) {
+ String defaultTitle = Algorithms.capitalizeFirstLetterAndLowercase(groupKey.replace('_', ' '));
+ String title = SettingsBaseActivity.getRoutingStringPropertyName(app, groupKey, defaultTitle);
+ ApplicationMode am = settings.getApplicationMode();
+
+ Object[] entryValues = new Object[routingParameters.size()];
+ String[] entries = new String[entryValues.length];
+
+ String selectedParameterId = null;
+ for (int i = 0; i < routingParameters.size(); i++) {
+ GeneralRouter.RoutingParameter parameter = routingParameters.get(i);
+ entryValues[i] = parameter.getId();
+ entries[i] = SettingsNavigationActivity.getRoutinParameterTitle(app, parameter);
+ if (SettingsNavigationActivity.isRoutingParameterSelected(settings, am, parameter)) {
+ selectedParameterId = parameter.getId();
+ }
+ }
+
+ ListPreferenceEx routingListPref = createListPreferenceEx(groupKey, entries, entryValues, title, R.layout.preference_with_descr);
+ routingListPref.setPersistent(false);
+ routingListPref.setValue(selectedParameterId);
+ routingListPref.setIcon(getRoutingPrefIcon(groupKey));
+
+ return routingListPref;
+ }
+
private void clearParameters() {
avoidParameters.clear();
preferParameters.clear();
+ drivingStyleParameters.clear();
reliefFactorParameters.clear();
otherRoutingParameters.clear();
}
@@ -268,8 +281,12 @@ public class RouteParametersFragment extends BaseSettingsFragment {
switch (prefId) {
case GeneralRouter.ALLOW_PRIVATE:
return getIcon(R.drawable.ic_action_private_access);
+ case GeneralRouter.USE_SHORTEST_WAY:
+ return getContentIcon(R.drawable.ic_action_fuel);
case AVOID_ROUTING_PARAMETER_PREFIX:
return getContentIcon(R.drawable.ic_action_alert);
+ case DRIVING_STYLE:
+ return getContentIcon(R.drawable.ic_action_bicycle_dark);
case "fast_route_mode":
return getIcon(R.drawable.ic_action_fastest_route);
case "enable_time_conditional_routing":
diff --git a/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java b/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java
index 4e23944e16..d7bf1b1174 100644
--- a/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java
+++ b/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java
@@ -29,8 +29,8 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static net.osmand.plus.OsmAndCustomizationConstants.CONTOUR_LINES;
-import static net.osmand.plus.OsmAndCustomizationConstants.HILLSHADE_LAYER;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.CONTOUR_LINES;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.HILLSHADE_LAYER;
public class SRTMPlugin extends OsmandPlugin {
diff --git a/OsmAnd/src/net/osmand/plus/views/AidlMapLayer.java b/OsmAnd/src/net/osmand/plus/views/AidlMapLayer.java
index 8241ee636f..270581e5dd 100644
--- a/OsmAnd/src/net/osmand/plus/views/AidlMapLayer.java
+++ b/OsmAnd/src/net/osmand/plus/views/AidlMapLayer.java
@@ -16,9 +16,9 @@ import android.support.annotation.Nullable;
import android.text.TextUtils;
import net.osmand.AndroidUtils;
-import net.osmand.aidl.map.ALatLon;
-import net.osmand.aidl.maplayer.AMapLayer;
-import net.osmand.aidl.maplayer.point.AMapPoint;
+import net.osmand.aidl.AidlMapLayerWrapper;
+import net.osmand.aidl.AidlMapPointWrapper;
+import net.osmand.aidlapi.maplayer.point.AMapPoint;
import net.osmand.data.LatLon;
import net.osmand.data.PointDescription;
import net.osmand.data.RotatedTileBox;
@@ -39,7 +39,7 @@ import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-public class AidlMapLayer extends OsmandMapLayer implements IContextMenuProvider, MapTextLayer.MapTextProvider<AMapPoint> {
+public class AidlMapLayer extends OsmandMapLayer implements IContextMenuProvider, MapTextLayer.MapTextProvider<AidlMapPointWrapper> {
private static final float POINT_IMAGE_VERTICAL_OFFSET = 0.91f;
@@ -51,7 +51,7 @@ public class AidlMapLayer extends OsmandMapLayer implements IContextMenuProvider
private final MapActivity map;
private OsmandMapTileView view;
- private AMapLayer aidlLayer;
+ private AidlMapLayerWrapper aidlLayer;
private Paint pointInnerCircle;
private Paint pointOuterCircle;
@@ -75,9 +75,9 @@ public class AidlMapLayer extends OsmandMapLayer implements IContextMenuProvider
private Map<String, Bitmap> pointImages = new ConcurrentHashMap<>();
private Set<String> imageRequests = new HashSet<>();
- private List<AMapPoint> displayedPoints = new ArrayList<>();
+ private List<AidlMapPointWrapper> displayedPoints = new ArrayList<>();
- public AidlMapLayer(MapActivity map, AMapLayer aidlLayer) {
+ public AidlMapLayer(MapActivity map, AidlMapLayerWrapper aidlLayer) {
this.map = map;
this.aidlLayer = aidlLayer;
}
@@ -140,8 +140,8 @@ public class AidlMapLayer extends OsmandMapLayer implements IContextMenuProvider
canvas.rotate(-tileBox.getRotate(), tileBox.getCenterPixelX(), tileBox.getCenterPixelY());
String selectedPointId = getSelectedContextMenuPointId();
- for (AMapPoint point : aidlLayer.getPoints()) {
- ALatLon l = point.getLocation();
+ for (AidlMapPointWrapper point : aidlLayer.getPoints()) {
+ LatLon l = point.getLocation();
if (l != null) {
int x = (int) tileBox.getPixXFromLatLon(l.getLatitude(), l.getLongitude());
int y = (int) tileBox.getPixYFromLatLon(l.getLatitude(), l.getLongitude());
@@ -169,7 +169,7 @@ public class AidlMapLayer extends OsmandMapLayer implements IContextMenuProvider
mapTextLayer.putData(this, displayedPoints);
}
- private void drawPoint(Canvas canvas, int x, int y, RotatedTileBox tb, AMapPoint point, Bitmap image, boolean selected) {
+ private void drawPoint(Canvas canvas, int x, int y, RotatedTileBox tb, AidlMapPointWrapper point, Bitmap image, boolean selected) {
if (image == null) {
image = placeholder;
}
@@ -205,8 +205,8 @@ public class AidlMapLayer extends OsmandMapLayer implements IContextMenuProvider
private String getSelectedContextMenuPointId() {
MapContextMenu mapContextMenu = map.getContextMenu();
Object object = mapContextMenu.getObject();
- if (mapContextMenu.isVisible() && object instanceof AMapPoint) {
- AMapPoint aMapPoint = (AMapPoint) object;
+ if (mapContextMenu.isVisible() && object instanceof AidlMapPointWrapper) {
+ AidlMapPointWrapper aMapPoint = (AidlMapPointWrapper) object;
return aMapPoint.getId();
}
return null;
@@ -226,7 +226,7 @@ public class AidlMapLayer extends OsmandMapLayer implements IContextMenuProvider
return rect;
}
- private boolean isStale(AMapPoint point) {
+ private boolean isStale(AidlMapPointWrapper point) {
return Boolean.parseBoolean(point.getParams().get(AMapPoint.POINT_STALE_LOC_PARAM));
}
@@ -251,7 +251,7 @@ public class AidlMapLayer extends OsmandMapLayer implements IContextMenuProvider
@Override
public boolean isObjectClickable(Object o) {
- return o instanceof AMapPoint;
+ return o instanceof AidlMapPointWrapper;
}
@Override
@@ -266,40 +266,33 @@ public class AidlMapLayer extends OsmandMapLayer implements IContextMenuProvider
@Override
public LatLon getObjectLocation(Object o) {
- if (o instanceof AMapPoint) {
- ALatLon loc = ((AMapPoint) o).getLocation();
- if (loc != null) {
- return new LatLon(loc.getLatitude(), loc.getLongitude());
- }
+ if (o instanceof AidlMapPointWrapper) {
+ return ((AidlMapPointWrapper) o).getLocation();
}
return null;
}
@Override
public PointDescription getObjectName(Object o) {
- if (o instanceof AMapPoint) {
- return new PointDescription(PointDescription.POINT_TYPE_MARKER, ((AMapPoint) o).getFullName());
+ if (o instanceof AidlMapPointWrapper) {
+ return new PointDescription(PointDescription.POINT_TYPE_MARKER, ((AidlMapPointWrapper) o).getFullName());
} else {
return null;
}
}
@Nullable
- public AMapPoint getPoint(@NonNull String id) {
+ public AidlMapPointWrapper getPoint(@NonNull String id) {
return aidlLayer.getPoint(id);
}
@Override
- public LatLon getTextLocation(AMapPoint o) {
- ALatLon loc = o.getLocation();
- if (loc != null) {
- return new LatLon(loc.getLatitude(), loc.getLongitude());
- }
- return null;
+ public LatLon getTextLocation(AidlMapPointWrapper o) {
+ return o.getLocation();
}
@Override
- public int getTextShift(AMapPoint o, RotatedTileBox rb) {
+ public int getTextShift(AidlMapPointWrapper o, RotatedTileBox rb) {
if (pointsType == PointsType.STANDARD) {
return (int) (getRadiusPoi(rb) * 1.5);
} else if (pointsType == PointsType.CIRCLE) {
@@ -313,7 +306,7 @@ public class AidlMapLayer extends OsmandMapLayer implements IContextMenuProvider
}
@Override
- public String getText(AMapPoint o) {
+ public String getText(AidlMapPointWrapper o) {
return o.getShortName();
}
@@ -376,13 +369,13 @@ public class AidlMapLayer extends OsmandMapLayer implements IContextMenuProvider
return r * 3 / 2;
}
- private void getFromPoint(RotatedTileBox tb, PointF point, List<? super AMapPoint> points) {
+ private void getFromPoint(RotatedTileBox tb, PointF point, List<? super AidlMapPointWrapper> points) {
if (view != null) {
int ex = (int) point.x;
int ey = (int) point.y;
int radius = getPointRadius(tb);
- for (AMapPoint p : aidlLayer.getPoints()) {
- ALatLon position = p.getLocation();
+ for (AidlMapPointWrapper p : aidlLayer.getPoints()) {
+ LatLon position = p.getLocation();
if (position != null) {
int x = (int) tb.getPixXFromLatLon(position.getLatitude(), position.getLongitude());
int y = (int) tb.getPixYFromLatLon(position.getLatitude(), position.getLongitude());
diff --git a/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java b/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java
index d8615c7399..7486f6a9eb 100644
--- a/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java
+++ b/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java
@@ -25,7 +25,7 @@ import net.osmand.AndroidUtils;
import net.osmand.CallbackWithObject;
import net.osmand.NativeLibrary.RenderedObject;
import net.osmand.RenderingContext;
-import net.osmand.aidl.maplayer.point.AMapPoint;
+import net.osmand.aidl.AidlMapPointWrapper;
import net.osmand.core.android.MapRendererView;
import net.osmand.core.jni.AmenitySymbolsProvider.AmenitySymbolsGroup;
import net.osmand.core.jni.AreaI;
@@ -76,7 +76,7 @@ import java.util.Set;
import gnu.trove.list.array.TIntArrayList;
-import static net.osmand.plus.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_CHANGE_MARKER_POSITION;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_CHANGE_MARKER_POSITION;
public class ContextMenuLayer extends OsmandMapLayer {
//private static final Log LOG = PlatformUtil.getLog(ContextMenuLayer.class);
@@ -205,7 +205,7 @@ public class ContextMenuLayer extends OsmandMapLayer {
RenderedObject r = (RenderedObject) selectedObject;
x = r.getX();
y = r.getY();
- } else if (selectedObject instanceof AMapPoint) {
+ } else if (selectedObject instanceof AidlMapPointWrapper) {
markerCustomized = true;
}
if (x != null && y != null && x.size() > 2) {
diff --git a/OsmAnd/src/net/osmand/plus/views/GPXLayer.java b/OsmAnd/src/net/osmand/plus/views/GPXLayer.java
index 8cf1b8182d..ef8ee27e83 100644
--- a/OsmAnd/src/net/osmand/plus/views/GPXLayer.java
+++ b/OsmAnd/src/net/osmand/plus/views/GPXLayer.java
@@ -30,7 +30,6 @@ import net.osmand.data.PointDescription;
import net.osmand.data.QuadRect;
import net.osmand.data.QuadTree;
import net.osmand.data.RotatedTileBox;
-import net.osmand.plus.GPXDatabase.GpxDataItem;
import net.osmand.plus.GpxSelectionHelper;
import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup;
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
@@ -292,8 +291,7 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex
for (SelectedGpxFile g : selectedGPXFiles) {
List<GpxDisplayGroup> groups = g.getDisplayGroups();
if (groups != null && !groups.isEmpty()) {
- GpxDataItem gpxDataItem = view.getApplication().getGpxDatabase().getItem(new File(g.getGpxFile().path));
- int color = gpxDataItem != null ? gpxDataItem.getColor() : 0;
+ int color = g.getGpxFile().getColor(0);
if (color == 0) {
color = g.getModifiableGpxFile().getColor(0);
}
@@ -437,11 +435,7 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex
private void drawXAxisPoints(Canvas canvas, RotatedTileBox tileBox) {
int color = trackChartPoints.getSegmentColor();
if (color == 0) {
- GpxDataItem gpxDataItem = null;
- if (!trackChartPoints.getGpx().showCurrentTrack) {
- gpxDataItem = view.getApplication().getGpxDatabase().getItem(new File(trackChartPoints.getGpx().path));
- }
- color = gpxDataItem != null ? gpxDataItem.getColor() : 0;
+ color = trackChartPoints.getGpx().getColor(0);
if (trackChartPoints.getGpx().showCurrentTrack) {
color = currentTrackColor;
}
@@ -522,13 +516,9 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex
private void drawSelectedFileSegments(SelectedGpxFile selectedGpxFile, boolean currentTrack, Canvas canvas,
RotatedTileBox tileBox, DrawSettings settings) {
- GpxDataItem gpxDataItem = null;
- if (!currentTrack) {
- gpxDataItem = view.getApplication().getGpxDatabase().getItem(new File(selectedGpxFile.getGpxFile().path));
- }
List<TrkSegment> segments = selectedGpxFile.getPointsToDisplay();
for (TrkSegment ts : segments) {
- int color = gpxDataItem != null ? gpxDataItem.getColor() : 0;
+ int color = selectedGpxFile.getGpxFile().getColor(0);
if (currentTrack) {
color = currentTrackColor;
}
diff --git a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java
index e6deacfb93..2b97229ffd 100644
--- a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java
+++ b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java
@@ -9,7 +9,6 @@ import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.graphics.Canvas;
-import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.PointF;
import android.graphics.drawable.Drawable;
@@ -52,7 +51,6 @@ import net.osmand.plus.dialogs.DirectionsDialogs;
import net.osmand.plus.helpers.AndroidUiHelper;
import net.osmand.plus.mapcontextmenu.MapContextMenu;
import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin;
-import net.osmand.plus.routepreparationmenu.ChooseRouteFragment;
import net.osmand.plus.routepreparationmenu.MapRouteInfoMenu;
import net.osmand.plus.routepreparationmenu.MapRouteInfoMenu.PointType;
import net.osmand.plus.routing.RoutingHelper;
@@ -65,14 +63,14 @@ import java.util.List;
import gnu.trove.list.array.TIntArrayList;
-import static net.osmand.plus.OsmAndCustomizationConstants.BACK_TO_LOC_HUD_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.COMPASS_HUD_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.LAYERS_HUD_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.MENU_HUD_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.QUICK_SEARCH_HUD_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.ROUTE_PLANNING_HUD_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.ZOOM_IN_HUD_ID;
-import static net.osmand.plus.OsmAndCustomizationConstants.ZOOM_OUT_HUD_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.BACK_TO_LOC_HUD_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.COMPASS_HUD_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.LAYERS_HUD_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.MENU_HUD_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.QUICK_SEARCH_HUD_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.ROUTE_PLANNING_HUD_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.ZOOM_IN_HUD_ID;
+import static net.osmand.aidlapi.OsmAndCustomizationConstants.ZOOM_OUT_HUD_ID;
public class MapControlsLayer extends OsmandMapLayer {
diff --git a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java
index 9909badc2c..a84587cc3d 100644
--- a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java
+++ b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java
@@ -399,10 +399,10 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
return getZoom() > LOWEST_ZOOM_TO_ROTATE;
}
- public void setRotate(float rotate) {
+ public void setRotate(float rotate, boolean force) {
if (isMapRotateEnabled()) {
float diff = MapUtils.unifyRotationDiff(rotate, getRotate());
- if (Math.abs(diff) > 5) { // check smallest rotation
+ if (Math.abs(diff) > 5 || force) { // check smallest rotation
animatedDraggingThread.startRotate(rotate);
}
}
diff --git a/OsmAnd/src/net/osmand/plus/views/RulerControlLayer.java b/OsmAnd/src/net/osmand/plus/views/RulerControlLayer.java
index 6c610dde71..87c2a15d0d 100644
--- a/OsmAnd/src/net/osmand/plus/views/RulerControlLayer.java
+++ b/OsmAnd/src/net/osmand/plus/views/RulerControlLayer.java
@@ -64,6 +64,7 @@ public class RulerControlLayer extends OsmandMapLayer {
private QuadPoint cacheCenter;
private float cacheMapDensity;
private OsmandSettings.OsmandPreference<Float> mapDensity;
+ private OsmandSettings.MetricsConstants cacheMetricSystem;
private int cacheIntZoom;
private double cacheTileX;
private double cacheTileY;
@@ -127,7 +128,8 @@ public class RulerControlLayer extends OsmandMapLayer {
public void initLayer(final OsmandMapTileView view) {
app = mapActivity.getMyApplication();
this.view = view;
- mapDensity = mapActivity.getMyApplication().getSettings().MAP_DENSITY;
+ mapDensity = app.getSettings().MAP_DENSITY;
+ cacheMetricSystem = app.getSettings().METRIC_SYSTEM.get();
cacheMapDensity = mapDensity.get();
cacheDistances = new ArrayList<>();
cacheCenter = new QuadPoint();
@@ -443,10 +445,13 @@ public class RulerControlLayer extends OsmandMapLayer {
updateCenter(tb, center);
}
- boolean move = tb.getZoom() != cacheIntZoom || Math.abs(tb.getCenterTileX() - cacheTileX) > 1 ||
- Math.abs(tb.getCenterTileY() - cacheTileY) > 1 || mapDensity.get() != cacheMapDensity;
+ OsmandSettings.MetricsConstants currentMetricSystem = app.getSettings().METRIC_SYSTEM.get();
+ boolean updateCache = tb.getZoom() != cacheIntZoom || Math.abs(tb.getCenterTileX() - cacheTileX) > 1
+ || Math.abs(tb.getCenterTileY() - cacheTileY) > 1 || mapDensity.get() != cacheMapDensity
+ || cacheMetricSystem != currentMetricSystem;
- if (!tb.isZoomAnimated() && move) {
+ if (!tb.isZoomAnimated() && updateCache) {
+ cacheMetricSystem = currentMetricSystem;
cacheIntZoom = tb.getZoom();
cacheTileX = tb.getCenterTileX();
cacheTileY = tb.getCenterTileY();
diff --git a/OsmAnd/src/net/osmand/plus/voice/JSTTSCommandPlayerImpl.java b/OsmAnd/src/net/osmand/plus/voice/JSTTSCommandPlayerImpl.java
index e479c710ef..4b61f4053d 100644
--- a/OsmAnd/src/net/osmand/plus/voice/JSTTSCommandPlayerImpl.java
+++ b/OsmAnd/src/net/osmand/plus/voice/JSTTSCommandPlayerImpl.java
@@ -1,32 +1,18 @@
package net.osmand.plus.voice;
import android.app.Activity;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.net.Uri;
-import android.speech.tts.TextToSpeech;
-import android.support.v7.app.AlertDialog;
-import android.util.Log;
import net.osmand.IndexConstants;
import net.osmand.PlatformUtil;
import net.osmand.plus.ApplicationMode;
import net.osmand.plus.OsmandApplication;
-import net.osmand.plus.R;
-import net.osmand.plus.activities.SettingsActivity;
import net.osmand.plus.routing.VoiceRouter;
-import net.osmand.util.Algorithms;
import org.mozilla.javascript.ScriptableObject;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
public class JSTTSCommandPlayerImpl extends TTSCommandPlayerImpl {
private static final org.apache.commons.logging.Log log = PlatformUtil.getLog(JSTTSCommandPlayerImpl.class);
@@ -46,7 +32,7 @@ public class JSTTSCommandPlayerImpl extends TTSCommandPlayerImpl {
"/" + voiceProvider + "/" + voiceProvider.replace("-tts", "_tts") + ".js")));
context.evaluateReader(jsScope, br, "JS", 1, null);
br.close();
- } catch (IOException e) {
+ } catch (Exception e) {
log.error(e.getMessage(), e);
} finally {
org.mozilla.javascript.Context.exit();
diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/article/WikivoyageArticleDialogFragment.java b/OsmAnd/src/net/osmand/plus/wikivoyage/article/WikivoyageArticleDialogFragment.java
index 2b3d93d559..c27858ce3d 100644
--- a/OsmAnd/src/net/osmand/plus/wikivoyage/article/WikivoyageArticleDialogFragment.java
+++ b/OsmAnd/src/net/osmand/plus/wikivoyage/article/WikivoyageArticleDialogFragment.java
@@ -92,8 +92,9 @@ public class WikivoyageArticleDialogFragment extends WikiArticleBaseDialogFragme
setupToolbar((Toolbar) mainView.findViewById(R.id.toolbar));
+ int appBarTextColor = nightMode ? R.color.wikivoyage_app_bar_text_dark : R.color.wikivoyage_app_bar_text_light;
articleToolbarText = (TextView) mainView.findViewById(R.id.article_toolbar_text);
- articleToolbarText.setTextColor(ContextCompat.getColor(getContext(), R.color.text_color_primary_dark));
+ articleToolbarText.setTextColor(ContextCompat.getColor(getContext(), appBarTextColor));
ColorStateList selectedLangColorStateList = AndroidUtils.createPressedColorStateList(
getContext(), nightMode,
R.color.icon_color_default_light, R.color.wikivoyage_active_light,
diff --git a/build.gradle b/build.gradle
index deac60b991..1cd0b221b4 100644
--- a/build.gradle
+++ b/build.gradle
@@ -9,6 +9,7 @@ buildscript {
//classpath 'com.android.tools.build:gradle:2.+'
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.google.gms:google-services:3.0.0'
+ classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
diff --git a/settings.gradle b/settings.gradle
index 2b32c3618c..420c7b05c0 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,4 +1,4 @@
-include ':OsmAnd-java', ':OsmAndCore-sample', ':OsmAnd-telegram'
+include ':OsmAnd-java', ':OsmAndCore-sample', ':OsmAnd-telegram', ':OsmAnd-api'
include ':OsmAnd'
include ':plugins:Osmand-Nautical'
include ':plugins:Osmand-ParkingPlugin'