diff --git a/app/src/main/java/eu/konggdev/strikemaps/MainActivity.java b/app/src/main/java/eu/konggdev/strikemaps/MainActivity.java index 1760868..aefacdd 100755 --- a/app/src/main/java/eu/konggdev/strikemaps/MainActivity.java +++ b/app/src/main/java/eu/konggdev/strikemaps/MainActivity.java @@ -32,8 +32,7 @@ public class MainActivity extends AppCompatActivity { @Override public void onBackPressed() { - if (!app.getUi().back()) { - super.onBackPressed(); // exits app - } + if (!app.getUi().back()) + super.onBackPressed(); } } diff --git a/app/src/main/java/eu/konggdev/strikemaps/app/AppController.java b/app/src/main/java/eu/konggdev/strikemaps/app/AppController.java index 6febed0..7cc5bb6 100644 --- a/app/src/main/java/eu/konggdev/strikemaps/app/AppController.java +++ b/app/src/main/java/eu/konggdev/strikemaps/app/AppController.java @@ -34,6 +34,8 @@ public class AppController { } public AppCompatActivity getActivity() { return appActivity; } public void init() { + if (getActivity().getSupportActionBar() != null) + getActivity().getSupportActionBar().show(); if(map == null) map = new MapComponent(this); if(ui == null) { ui = new UIComponent(this, map); diff --git a/app/src/main/java/eu/konggdev/strikemaps/data/helper/UserPrefsHelper.java b/app/src/main/java/eu/konggdev/strikemaps/data/helper/UserPrefsHelper.java index 0192158..297042d 100644 --- a/app/src/main/java/eu/konggdev/strikemaps/data/helper/UserPrefsHelper.java +++ b/app/src/main/java/eu/konggdev/strikemaps/data/helper/UserPrefsHelper.java @@ -13,17 +13,24 @@ public final class UserPrefsHelper { //Defaults private static final String DEFAULT_MAP_STYLE = "bundled/style/classic.style.json"; - private static final String DEFAULT_MAP_RENDERER = "mapLibre"; + private static final Integer DEFAULT_MAP_RENDERER = 1; private static final boolean DEFAULT_PERSIST_LOCATION_ENABLED = true; private static final boolean DEFAULT_LAST_LOCATION_ENABLED = false; - public static String startupMapStyle(SharedPreferences prefs) { return prefs.getString(KEY_STARTUP_MAP_STYLE, DEFAULT_MAP_STYLE); } - public static String mapRenderer(SharedPreferences prefs) { - return prefs.getString(KEY_MAP_RENDERER, DEFAULT_MAP_RENDERER); + public static boolean startupMapStyle(SharedPreferences prefs, String updated) { + return prefs.edit().putString(KEY_STARTUP_MAP_STYLE, updated).commit(); + } + + public static Integer mapRenderer(SharedPreferences prefs) { + return prefs.getInt(KEY_MAP_RENDERER, DEFAULT_MAP_RENDERER); + } + + public static boolean mapRenderer(SharedPreferences prefs, Integer updated) { + return prefs.edit().putInt(KEY_MAP_RENDERER, updated).commit(); } public static boolean persistLocationEnabled(SharedPreferences prefs) { diff --git a/app/src/main/java/eu/konggdev/strikemaps/map/MapComponent.java b/app/src/main/java/eu/konggdev/strikemaps/map/MapComponent.java index 5356b01..439cfef 100644 --- a/app/src/main/java/eu/konggdev/strikemaps/map/MapComponent.java +++ b/app/src/main/java/eu/konggdev/strikemaps/map/MapComponent.java @@ -1,7 +1,11 @@ package eu.konggdev.strikemaps.map; import java.util.*; + +import android.widget.Toast; +import android.widget.Toolbar; import eu.konggdev.strikemaps.Component; +import eu.konggdev.strikemaps.map.renderer.implementation.MapLibreGLJSRenderer; import eu.konggdev.strikemaps.ui.factory.AlertDialogFactory; import eu.konggdev.strikemaps.data.helper.UserPrefsHelper; import eu.konggdev.strikemaps.map.renderer.implementation.VtmRenderer; @@ -24,11 +28,17 @@ public class MapComponent implements Component { public MapComponent(AppController ref) { this.app = ref; switch(UserPrefsHelper.mapRenderer(app.getPrefs())) { - case "vtm": + case 1: + this.mapRenderer = new MapLibreNativeRenderer(app, this); + break; + case 2: + this.mapRenderer = new MapLibreGLJSRenderer(app, this); + break; + case 3: this.mapRenderer = new VtmRenderer(app, this); break; - case "mapLibre": - default: //This shouldn't happen + default: //This shouldn't happen + Toast.makeText(app.getActivity(), "Invalid renderer value in preferences\nFalling back to MapLibre Native", Toast.LENGTH_SHORT).show(); this.mapRenderer = new MapLibreNativeRenderer(app, this); break; }; diff --git a/app/src/main/java/eu/konggdev/strikemaps/map/renderer/implementation/MapLibreGLJSRenderer.java b/app/src/main/java/eu/konggdev/strikemaps/map/renderer/implementation/MapLibreGLJSRenderer.java new file mode 100644 index 0000000..38b6fad --- /dev/null +++ b/app/src/main/java/eu/konggdev/strikemaps/map/renderer/implementation/MapLibreGLJSRenderer.java @@ -0,0 +1,31 @@ +package eu.konggdev.strikemaps.map.renderer.implementation; + +import android.view.View; +import eu.konggdev.strikemaps.app.AppController; +import eu.konggdev.strikemaps.map.MapComponent; +import eu.konggdev.strikemaps.map.renderer.MapRenderer; +import org.maplibre.android.geometry.LatLng; +import org.maplibre.geojson.Feature; + +import java.util.Collections; +import java.util.List; + +//Stub for now +public class MapLibreGLJSRenderer implements MapRenderer { + @Override + public void reload() { + + } + + @Override + public View getView() { + return null; + } + + @Override + public List featuresAtPoint(LatLng point) { + return Collections.emptyList(); + } + + public MapLibreGLJSRenderer(AppController app, MapComponent controller) { } +} diff --git a/app/src/main/java/eu/konggdev/strikemaps/ui/UIComponent.java b/app/src/main/java/eu/konggdev/strikemaps/ui/UIComponent.java index 95d0acc..d52f22b 100644 --- a/app/src/main/java/eu/konggdev/strikemaps/ui/UIComponent.java +++ b/app/src/main/java/eu/konggdev/strikemaps/ui/UIComponent.java @@ -42,17 +42,15 @@ public class UIComponent implements Component { R.id.mainContentView, new MainContentRegion(map.toFragment(), R.id.mainContentView), R.id.bottomUi, new UIRegion(new FragmentLayoutControls(app, R.id.bottomUi), R.id.bottomUi), R.id.topUi, new UIRegion(new FragmentLayoutSearch(app, R.id.topUi), R.id.topUi) - ), //TODO: Probably stop referencing layout 3(!) times everytime - null + ) //TODO: Probably stop referencing layout 3(!) times everytime ), //Settings screen DefinedScreen.SETTINGS, new Screen( app, //Just the settings content fragment Map.of( - R.id.mainContentView, new MainContentRegion(new FragmentLayoutContentSettings(), R.id.mainContentView) - ), - new Toolbar(app.getActivity()) + R.id.mainContentView, new MainContentRegion(new FragmentLayoutContentSettings(app), R.id.mainContentView) + ) ) ); } diff --git a/app/src/main/java/eu/konggdev/strikemaps/ui/fragment/layout/content/main/FragmentLayoutContentSettings.java b/app/src/main/java/eu/konggdev/strikemaps/ui/fragment/layout/content/main/FragmentLayoutContentSettings.java index dcefccc..427cca0 100644 --- a/app/src/main/java/eu/konggdev/strikemaps/ui/fragment/layout/content/main/FragmentLayoutContentSettings.java +++ b/app/src/main/java/eu/konggdev/strikemaps/ui/fragment/layout/content/main/FragmentLayoutContentSettings.java @@ -1,20 +1,58 @@ package eu.konggdev.strikemaps.ui.fragment.layout.content.main; +import android.app.ActionBar; import android.os.Bundle; import android.view.View; -import android.widget.LinearLayout; +import android.widget.AdapterView; +import android.widget.Spinner; +import android.widget.ArrayAdapter; import androidx.annotation.NonNull; +import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; +import com.google.android.material.appbar.MaterialToolbar; import eu.konggdev.strikemaps.R; +import eu.konggdev.strikemaps.data.helper.UserPrefsHelper; +import eu.konggdev.strikemaps.app.AppController; + +import java.util.Arrays; + public class FragmentLayoutContentSettings extends Fragment implements MainContentLayout { - public FragmentLayoutContentSettings() { + @NonNull AppController app; + + public FragmentLayoutContentSettings(AppController app) { super(R.layout.fragment_settings); + this.app = app; } @Override public Fragment toFragment() { return this; } + + @Override + public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { + Spinner mapRendererSelector = view.findViewById(R.id.mapRendererSelector); + ArrayAdapter adapter = ArrayAdapter.createFromResource( + view.getContext(), + R.array.map_renderers, + android.R.layout.simple_spinner_item + ); + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + mapRendererSelector.setAdapter(adapter); + String currentRenderer = UserPrefsHelper.mapRenderer(app.getPrefs()); + mapRendererSelector.setSelection(adapter.getPosition(currentRenderer)); + mapRendererSelector.setOnItemSelectedListener( + new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + UserPrefsHelper.mapRenderer(app.getPrefs(), position); + } + + @Override + public void onNothingSelected(AdapterView parent) {} + } + ); + } } diff --git a/app/src/main/java/eu/konggdev/strikemaps/ui/screen/Screen.java b/app/src/main/java/eu/konggdev/strikemaps/ui/screen/Screen.java index 3c6e37a..95c0e17 100644 --- a/app/src/main/java/eu/konggdev/strikemaps/ui/screen/Screen.java +++ b/app/src/main/java/eu/konggdev/strikemaps/ui/screen/Screen.java @@ -1,5 +1,6 @@ package eu.konggdev.strikemaps.ui.screen; +import android.view.View; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.appcompat.widget.Toolbar; @@ -14,11 +15,10 @@ import eu.konggdev.strikemaps.ui.element.region.UIRegion; public class Screen { @NonNull AppController app; - Toolbar supportBar; - public Screen(AppController app, Map regions, Toolbar supportBar) { + Toolbar toolbar; + public Screen(AppController app, Map regions) { this.app = app; this.uiRegions = regions; - this.supportBar = supportBar; } Map uiRegions; public Integer popup; diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index df0d4b6..99af95b 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -7,4 +7,24 @@ android:padding="24dp" android:background="@android:color/background_dark"> + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e1c7da5..c661c57 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,4 +3,9 @@ Settings Attribution Earth map data Included;\n - © OpenStreetMap Contributors\nMap Rendering libraries Included;\n - MapLibre developed by MapLibre Organization\n - Vtm developed by Mapsforge\nStrike Maps made with <3 by konggdev + + MapLibre Native + MapLibre GL JS + VTM + \ No newline at end of file