Add option to force Google Maps or use geo: URI for navigation
This commit is contained in:
@@ -111,6 +111,11 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".activity.settings.SettingsActivity"
|
||||||
|
android:launchMode="singleTask"
|
||||||
|
android:theme="@style/AppTheme"/>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".activity.about.AboutActivity"
|
android:name=".activity.about.AboutActivity"
|
||||||
android:launchMode="singleTask"
|
android:launchMode="singleTask"
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ import it.danieleverducci.nextcloudmaps.R;
|
|||||||
import it.danieleverducci.nextcloudmaps.activity.NextcloudMapsStyledActivity;
|
import it.danieleverducci.nextcloudmaps.activity.NextcloudMapsStyledActivity;
|
||||||
import it.danieleverducci.nextcloudmaps.activity.about.AboutActivity;
|
import it.danieleverducci.nextcloudmaps.activity.about.AboutActivity;
|
||||||
import it.danieleverducci.nextcloudmaps.activity.detail.GeofavoriteDetailActivity;
|
import it.danieleverducci.nextcloudmaps.activity.detail.GeofavoriteDetailActivity;
|
||||||
|
import it.danieleverducci.nextcloudmaps.activity.settings.SettingsActivity;
|
||||||
import it.danieleverducci.nextcloudmaps.activity.login.LoginActivity;
|
import it.danieleverducci.nextcloudmaps.activity.login.LoginActivity;
|
||||||
import it.danieleverducci.nextcloudmaps.activity.main.NavigationAdapter.NavigationItem;
|
import it.danieleverducci.nextcloudmaps.activity.main.NavigationAdapter.NavigationItem;
|
||||||
import it.danieleverducci.nextcloudmaps.activity.mappicker.MapPickerActivity;
|
import it.danieleverducci.nextcloudmaps.activity.mappicker.MapPickerActivity;
|
||||||
@@ -58,6 +59,7 @@ public class MainActivity extends NextcloudMapsStyledActivity {
|
|||||||
private static final String NAVIGATION_KEY_ADD_GEOFAVORITE_FROM_GPS = "add_from_gps";
|
private static final String NAVIGATION_KEY_ADD_GEOFAVORITE_FROM_GPS = "add_from_gps";
|
||||||
private static final String NAVIGATION_KEY_ADD_GEOFAVORITE_FROM_MAP = "add_from_map";
|
private static final String NAVIGATION_KEY_ADD_GEOFAVORITE_FROM_MAP = "add_from_map";
|
||||||
private static final String NAVIGATION_KEY_SHOW_ABOUT = "about";
|
private static final String NAVIGATION_KEY_SHOW_ABOUT = "about";
|
||||||
|
private static final String NAVIGATION_KEY_SETTINGS = "settings";
|
||||||
private static final String NAVIGATION_KEY_SWITCH_ACCOUNT = "switch_account";
|
private static final String NAVIGATION_KEY_SWITCH_ACCOUNT = "switch_account";
|
||||||
|
|
||||||
private ArrayList<OnGpsPermissionGrantedListener> onGpsPermissionGrantedListener = new ArrayList<>();
|
private ArrayList<OnGpsPermissionGrantedListener> onGpsPermissionGrantedListener = new ArrayList<>();
|
||||||
@@ -164,6 +166,9 @@ public class MainActivity extends NextcloudMapsStyledActivity {
|
|||||||
case NAVIGATION_KEY_SHOW_ABOUT:
|
case NAVIGATION_KEY_SHOW_ABOUT:
|
||||||
show_about();
|
show_about();
|
||||||
break;
|
break;
|
||||||
|
case NAVIGATION_KEY_SETTINGS:
|
||||||
|
show_settings();
|
||||||
|
break;
|
||||||
case NAVIGATION_KEY_SWITCH_ACCOUNT:
|
case NAVIGATION_KEY_SWITCH_ACCOUNT:
|
||||||
switch_account();
|
switch_account();
|
||||||
break;
|
break;
|
||||||
@@ -173,6 +178,7 @@ public class MainActivity extends NextcloudMapsStyledActivity {
|
|||||||
navItems.add(new NavigationItem(NAVIGATION_KEY_ADD_GEOFAVORITE_FROM_GPS, getString(R.string.new_geobookmark_gps), R.drawable.ic_add_gps));
|
navItems.add(new NavigationItem(NAVIGATION_KEY_ADD_GEOFAVORITE_FROM_GPS, getString(R.string.new_geobookmark_gps), R.drawable.ic_add_gps));
|
||||||
navItems.add(new NavigationItem(NAVIGATION_KEY_ADD_GEOFAVORITE_FROM_MAP, getString(R.string.new_geobookmark_map), R.drawable.ic_add_map));
|
navItems.add(new NavigationItem(NAVIGATION_KEY_ADD_GEOFAVORITE_FROM_MAP, getString(R.string.new_geobookmark_map), R.drawable.ic_add_map));
|
||||||
navItems.add(new NavigationItem(NAVIGATION_KEY_SHOW_ABOUT, getString(R.string.about), R.drawable.ic_info_grey));
|
navItems.add(new NavigationItem(NAVIGATION_KEY_SHOW_ABOUT, getString(R.string.about), R.drawable.ic_info_grey));
|
||||||
|
navItems.add(new NavigationItem(NAVIGATION_KEY_SETTINGS, getString(R.string.settings), R.drawable.ic_settings_grey));
|
||||||
navItems.add(new NavigationItem(NAVIGATION_KEY_SWITCH_ACCOUNT, getString(R.string.switch_account), R.drawable.ic_logout_grey));
|
navItems.add(new NavigationItem(NAVIGATION_KEY_SWITCH_ACCOUNT, getString(R.string.switch_account), R.drawable.ic_logout_grey));
|
||||||
navigationCommonAdapter.setItems(navItems);
|
navigationCommonAdapter.setItems(navItems);
|
||||||
|
|
||||||
@@ -192,6 +198,10 @@ public class MainActivity extends NextcloudMapsStyledActivity {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void show_settings() {
|
||||||
|
startActivity(new Intent(this, SettingsActivity.class));
|
||||||
|
}
|
||||||
|
|
||||||
private void show_about() {
|
private void show_about() {
|
||||||
startActivity(new Intent(this, AboutActivity.class));
|
startActivity(new Intent(this, AboutActivity.class));
|
||||||
}
|
}
|
||||||
|
|||||||
+56
@@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Nextcloud Maps Geofavorites for Android
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package it.danieleverducci.nextcloudmaps.activity.settings;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.widget.Switch;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.ActionBar;
|
||||||
|
import androidx.appcompat.widget.Toolbar;
|
||||||
|
|
||||||
|
import it.danieleverducci.nextcloudmaps.R;
|
||||||
|
import it.danieleverducci.nextcloudmaps.activity.NextcloudMapsStyledActivity;
|
||||||
|
import it.danieleverducci.nextcloudmaps.utils.SettingsManager;
|
||||||
|
|
||||||
|
public class SettingsActivity extends NextcloudMapsStyledActivity {
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_settings);
|
||||||
|
|
||||||
|
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||||
|
setSupportActionBar(toolbar);
|
||||||
|
|
||||||
|
ActionBar actionBar = getSupportActionBar();
|
||||||
|
if (actionBar != null) {
|
||||||
|
actionBar.setDisplayShowTitleEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
Switch useGoogleMapsSwitch = findViewById(R.id.use_google_maps_switch);
|
||||||
|
useGoogleMapsSwitch.setChecked(SettingsManager.isUseGoogleMaps(this));
|
||||||
|
useGoogleMapsSwitch.setOnCheckedChangeListener((buttonView, isChecked) ->
|
||||||
|
SettingsManager.setUseGoogleMaps(SettingsActivity.this, isChecked)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onSupportNavigateUp() {
|
||||||
|
finish();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -24,7 +24,10 @@ public class IntentGenerator {
|
|||||||
public static Intent newGeoUriIntent(Context context, Geofavorite item) {
|
public static Intent newGeoUriIntent(Context context, Geofavorite item) {
|
||||||
Intent i = new Intent();
|
Intent i = new Intent();
|
||||||
i.setAction(Intent.ACTION_VIEW);
|
i.setAction(Intent.ACTION_VIEW);
|
||||||
i.setData(isGoogleMapsInstalled(context) ? item.getGmapsUri() : item.getGeoUri());
|
i.setData(
|
||||||
|
SettingsManager.isUseGoogleMaps(context) && isGoogleMapsInstalled(context)
|
||||||
|
? item.getGmapsUri() : item.getGeoUri()
|
||||||
|
);
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ public class SettingsManager {
|
|||||||
static private final String SETTING_LAST_MAP_POSITION_LAT = "SETTING_LAST_MAP_POSITION_LAT";
|
static private final String SETTING_LAST_MAP_POSITION_LAT = "SETTING_LAST_MAP_POSITION_LAT";
|
||||||
static private final String SETTING_LAST_MAP_POSITION_LNG = "SETTING_LAST_MAP_POSITION_LNG";
|
static private final String SETTING_LAST_MAP_POSITION_LNG = "SETTING_LAST_MAP_POSITION_LNG";
|
||||||
static private final String SETTING_LAST_MAP_POSITION_ZOOM = "SETTING_LAST_MAP_POSITION_ZOOM";
|
static private final String SETTING_LAST_MAP_POSITION_ZOOM = "SETTING_LAST_MAP_POSITION_ZOOM";
|
||||||
|
static private final String SETTING_USE_GOOGLE_MAPS = "SETTING_USE_GOOGLE_MAPS";
|
||||||
|
|
||||||
public static int getGeofavoriteListSortBy(Context context) {
|
public static int getGeofavoriteListSortBy(Context context) {
|
||||||
return PreferenceManager.getDefaultSharedPreferences(context)
|
return PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
@@ -47,6 +48,16 @@ public class SettingsManager {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isUseGoogleMaps(Context context) {
|
||||||
|
return PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
|
.getBoolean(SETTING_USE_GOOGLE_MAPS, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setUseGoogleMaps(Context context, boolean value) {
|
||||||
|
PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
|
.edit().putBoolean(SETTING_USE_GOOGLE_MAPS, value).apply();
|
||||||
|
}
|
||||||
|
|
||||||
public static void setLastMapPosition(Context context, double lat, double lng, double zoom) {
|
public static void setLastMapPosition(Context context, double lat, double lng, double zoom) {
|
||||||
PreferenceManager.getDefaultSharedPreferences(context).edit()
|
PreferenceManager.getDefaultSharedPreferences(context).edit()
|
||||||
.putFloat(SETTING_LAST_MAP_POSITION_LAT, (float)lat)
|
.putFloat(SETTING_LAST_MAP_POSITION_LAT, (float)lat)
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<!--
|
||||||
|
Material Design Settings icon by Google
|
||||||
|
Licensed under the Apache License, Version 2.0
|
||||||
|
https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
-->
|
||||||
|
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24"
|
||||||
|
android:tint="#757575">
|
||||||
|
<path
|
||||||
|
android:fillColor="#757575"
|
||||||
|
android:pathData="M19.14,12.94c0.04,-0.3 0.06,-0.61 0.06,-0.94c0,-0.32 -0.02,-0.64 -0.07,-0.94l2.03,-1.58a0.49,0.49 0,0 0,0.12 -0.61l-1.92,-3.32a0.49,0.49 0,0 0,-0.59 -0.22l-2.39,0.96c-0.5,-0.38 -1.03,-0.7 -1.62,-0.94L14.4,2.81a0.48,0.48 0,0 0,-0.47 -0.41h-3.84c-0.24,0 -0.43,0.17 -0.47,0.41L9.25,5.35C8.66,5.59 8.12,5.92 7.63,6.29L5.24,5.33a0.49,0.49 0,0 0,-0.59 0.22L2.74,8.87a0.48,0.48 0,0 0,0.12 0.61l2.03,1.58C4.84,11.36 4.8,11.69 4.8,12s0.02,0.64 0.07,0.94l-2.03,1.58a0.49,0.49 0,0 0,-0.12 0.61l1.92,3.32c0.12,0.22 0.37,0.29 0.59,0.22l2.39,-0.96c0.5,0.38 1.03,0.7 1.62,0.94l0.36,2.54c0.05,0.24 0.24,0.41 0.48,0.41h3.84c0.24,0 0.44,-0.17 0.47,-0.41l0.36,-2.54c0.59,-0.24 1.13,-0.56 1.62,-0.94l2.39,0.96c0.22,0.08 0.47,0 0.59,-0.22l1.92,-3.32c0.12,-0.22 0.07,-0.47 -0.12,-0.61L19.14,12.94zM12,15.6A3.6,3.6 0,1 1,12 8.4a3.6,3.6 0,0 1,0 7.2z"/>
|
||||||
|
</vector>
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
~ Nextcloud Maps Geofavorites for Android
|
||||||
|
~
|
||||||
|
~ This program is free software: you can redistribute it and/or modify
|
||||||
|
~ it under the terms of the GNU General Public License as published by
|
||||||
|
~ the Free Software Foundation, either version 3 of the License, or
|
||||||
|
~ (at your option) any later version.
|
||||||
|
~
|
||||||
|
~ This program is distributed in the hope that it will be useful,
|
||||||
|
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
~ GNU General Public License for more details.
|
||||||
|
~
|
||||||
|
~ You should have received a copy of the GNU General Public License
|
||||||
|
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<ScrollView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@color/primary"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
|
android:id="@+id/appBar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.Toolbar
|
||||||
|
android:id="@+id/toolbar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="?android:attr/actionBarSize"
|
||||||
|
app:contentInsetStartWithNavigation="0dp"
|
||||||
|
app:navigationIcon="@drawable/ic_back_grey"
|
||||||
|
app:titleMarginStart="0dp"/>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="@dimen/spacer_2x">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:padding="10dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:text="@string/settings_use_google_maps"
|
||||||
|
style="?android:attr/editTextPreferenceStyle"/>
|
||||||
|
|
||||||
|
<Switch
|
||||||
|
android:id="@+id/use_google_maps_switch"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"/>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingStart="10dp"
|
||||||
|
android:paddingEnd="10dp"
|
||||||
|
android:paddingBottom="10dp"
|
||||||
|
android:text="@string/settings_use_google_maps_summary"
|
||||||
|
android:textSize="12sp"
|
||||||
|
android:textColor="@android:color/darker_gray"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
|
</ScrollView>
|
||||||
@@ -99,6 +99,11 @@
|
|||||||
<string name="url_license" translatable="false">https://raw.githubusercontent.com/penguin86/nextcloud-maps-client/master/LICENSE</string>
|
<string name="url_license" translatable="false">https://raw.githubusercontent.com/penguin86/nextcloud-maps-client/master/LICENSE</string>
|
||||||
<string name="url_maps" translatable="false">https://donate.openstreetmap.org</string>
|
<string name="url_maps" translatable="false">https://donate.openstreetmap.org</string>
|
||||||
|
|
||||||
|
<!-- Settings -->
|
||||||
|
<string name="settings">Settings</string>
|
||||||
|
<string name="settings_use_google_maps">Always open with Google Maps</string>
|
||||||
|
<string name="settings_use_google_maps_summary">When disabled, a generic Geo URI will be used instead so you can choose your preferred maps app</string>
|
||||||
|
|
||||||
<!-- Menu -->
|
<!-- Menu -->
|
||||||
<string name="new_geobookmark_gps">New from current position</string>
|
<string name="new_geobookmark_gps">New from current position</string>
|
||||||
<string name="new_geobookmark_map">New from map</string>
|
<string name="new_geobookmark_map">New from map</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user