diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2e7ab77..5766dce 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -25,8 +25,6 @@
-
-
+
+
onGpsPermissionGrantedListener = new ArrayList<>();
@@ -164,6 +166,9 @@ public class MainActivity extends NextcloudMapsStyledActivity {
case NAVIGATION_KEY_SHOW_ABOUT:
show_about();
break;
+ case NAVIGATION_KEY_SETTINGS:
+ show_settings();
+ break;
case NAVIGATION_KEY_SWITCH_ACCOUNT:
switch_account();
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_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_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));
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() {
startActivity(new Intent(this, AboutActivity.class));
}
diff --git a/app/src/main/java/it/danieleverducci/nextcloudmaps/activity/settings/SettingsActivity.java b/app/src/main/java/it/danieleverducci/nextcloudmaps/activity/settings/SettingsActivity.java
new file mode 100644
index 0000000..93068de
--- /dev/null
+++ b/app/src/main/java/it/danieleverducci/nextcloudmaps/activity/settings/SettingsActivity.java
@@ -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 .
+ */
+
+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;
+ }
+}
diff --git a/app/src/main/java/it/danieleverducci/nextcloudmaps/utils/IntentGenerator.java b/app/src/main/java/it/danieleverducci/nextcloudmaps/utils/IntentGenerator.java
index 7f66efc..e9864fe 100644
--- a/app/src/main/java/it/danieleverducci/nextcloudmaps/utils/IntentGenerator.java
+++ b/app/src/main/java/it/danieleverducci/nextcloudmaps/utils/IntentGenerator.java
@@ -2,7 +2,6 @@ package it.danieleverducci.nextcloudmaps.utils;
import android.content.Context;
import android.content.Intent;
-import android.content.pm.PackageManager;
import android.util.Log;
import it.danieleverducci.nextcloudmaps.R;
@@ -24,16 +23,10 @@ public class IntentGenerator {
public static Intent newGeoUriIntent(Context context, Geofavorite item) {
Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
- i.setData(isGoogleMapsInstalled(context) ? item.getGmapsUri() : item.getGeoUri());
+ i.setData(
+ SettingsManager.isUseGoogleMaps(context)
+ ? item.getGmapsUri() : item.getGeoUri()
+ );
return i;
}
-
- public static boolean isGoogleMapsInstalled(Context context) {
- try {
- context.getPackageManager().getApplicationInfo("com.google.android.apps.maps", 0);
- return true;
- } catch (PackageManager.NameNotFoundException e) {
- return false;
- }
- }
}
diff --git a/app/src/main/java/it/danieleverducci/nextcloudmaps/utils/SettingsManager.java b/app/src/main/java/it/danieleverducci/nextcloudmaps/utils/SettingsManager.java
index 97e72a8..af2ee87 100644
--- a/app/src/main/java/it/danieleverducci/nextcloudmaps/utils/SettingsManager.java
+++ b/app/src/main/java/it/danieleverducci/nextcloudmaps/utils/SettingsManager.java
@@ -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_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_USE_GOOGLE_MAPS = "SETTING_USE_GOOGLE_MAPS";
public static int getGeofavoriteListSortBy(Context 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) {
PreferenceManager.getDefaultSharedPreferences(context).edit()
.putFloat(SETTING_LAST_MAP_POSITION_LAT, (float)lat)
diff --git a/app/src/main/res/drawable/ic_settings_grey.xml b/app/src/main/res/drawable/ic_settings_grey.xml
new file mode 100644
index 0000000..db4bb38
--- /dev/null
+++ b/app/src/main/res/drawable/ic_settings_grey.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
new file mode 100644
index 0000000..7869e30
--- /dev/null
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 93bbad3..a318a3d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -99,6 +99,11 @@
https://raw.githubusercontent.com/penguin86/nextcloud-maps-client/master/LICENSE
https://donate.openstreetmap.org
+
+ Settings
+ Always open with Google Maps
+ When disabled, a generic Geo URI will be used instead so you can choose your preferred maps app
+
New from current position
New from map