Basic functional settings screen
This commit is contained in:
@@ -32,8 +32,7 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBackPressed() {
|
public void onBackPressed() {
|
||||||
if (!app.getUi().back()) {
|
if (!app.getUi().back())
|
||||||
super.onBackPressed(); // exits app
|
super.onBackPressed();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ public class AppController {
|
|||||||
}
|
}
|
||||||
public AppCompatActivity getActivity() { return appActivity; }
|
public AppCompatActivity getActivity() { return appActivity; }
|
||||||
public void init() {
|
public void init() {
|
||||||
|
if (getActivity().getSupportActionBar() != null)
|
||||||
|
getActivity().getSupportActionBar().show();
|
||||||
if(map == null) map = new MapComponent(this);
|
if(map == null) map = new MapComponent(this);
|
||||||
if(ui == null) {
|
if(ui == null) {
|
||||||
ui = new UIComponent(this, map);
|
ui = new UIComponent(this, map);
|
||||||
|
|||||||
@@ -13,17 +13,24 @@ public final class UserPrefsHelper {
|
|||||||
|
|
||||||
//Defaults
|
//Defaults
|
||||||
private static final String DEFAULT_MAP_STYLE = "bundled/style/classic.style.json";
|
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 = 0;
|
||||||
private static final boolean DEFAULT_PERSIST_LOCATION_ENABLED = true;
|
private static final boolean DEFAULT_PERSIST_LOCATION_ENABLED = true;
|
||||||
private static final boolean DEFAULT_LAST_LOCATION_ENABLED = false;
|
private static final boolean DEFAULT_LAST_LOCATION_ENABLED = false;
|
||||||
|
|
||||||
|
|
||||||
public static String startupMapStyle(SharedPreferences prefs) {
|
public static String startupMapStyle(SharedPreferences prefs) {
|
||||||
return prefs.getString(KEY_STARTUP_MAP_STYLE, DEFAULT_MAP_STYLE);
|
return prefs.getString(KEY_STARTUP_MAP_STYLE, DEFAULT_MAP_STYLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String mapRenderer(SharedPreferences prefs) {
|
public static boolean startupMapStyle(SharedPreferences prefs, String updated) {
|
||||||
return prefs.getString(KEY_MAP_RENDERER, DEFAULT_MAP_RENDERER);
|
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) {
|
public static boolean persistLocationEnabled(SharedPreferences prefs) {
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
package eu.konggdev.strikemaps.map;
|
package eu.konggdev.strikemaps.map;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
import android.widget.Toast;
|
||||||
|
import android.widget.Toolbar;
|
||||||
import eu.konggdev.strikemaps.Component;
|
import eu.konggdev.strikemaps.Component;
|
||||||
|
import eu.konggdev.strikemaps.map.renderer.implementation.MapLibreGLJSRenderer;
|
||||||
import eu.konggdev.strikemaps.ui.factory.AlertDialogFactory;
|
import eu.konggdev.strikemaps.ui.factory.AlertDialogFactory;
|
||||||
import eu.konggdev.strikemaps.data.helper.UserPrefsHelper;
|
import eu.konggdev.strikemaps.data.helper.UserPrefsHelper;
|
||||||
import eu.konggdev.strikemaps.map.renderer.implementation.VtmRenderer;
|
import eu.konggdev.strikemaps.map.renderer.implementation.VtmRenderer;
|
||||||
@@ -24,11 +28,17 @@ public class MapComponent implements Component {
|
|||||||
public MapComponent(AppController ref) {
|
public MapComponent(AppController ref) {
|
||||||
this.app = ref;
|
this.app = ref;
|
||||||
switch(UserPrefsHelper.mapRenderer(app.getPrefs())) {
|
switch(UserPrefsHelper.mapRenderer(app.getPrefs())) {
|
||||||
case "vtm":
|
case 0:
|
||||||
|
this.mapRenderer = new MapLibreNativeRenderer(app, this);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
this.mapRenderer = new MapLibreGLJSRenderer(app, this);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
this.mapRenderer = new VtmRenderer(app, this);
|
this.mapRenderer = new VtmRenderer(app, this);
|
||||||
break;
|
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);
|
this.mapRenderer = new MapLibreNativeRenderer(app, this);
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|||||||
+31
@@ -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<Feature> featuresAtPoint(LatLng point) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MapLibreGLJSRenderer(AppController app, MapComponent controller) { }
|
||||||
|
}
|
||||||
@@ -42,17 +42,15 @@ public class UIComponent implements Component {
|
|||||||
R.id.mainContentView, new MainContentRegion(map.toFragment(), R.id.mainContentView),
|
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.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)
|
R.id.topUi, new UIRegion(new FragmentLayoutSearch(app, R.id.topUi), R.id.topUi)
|
||||||
), //TODO: Probably stop referencing layout 3(!) times everytime
|
) //TODO: Probably stop referencing layout 3(!) times everytime
|
||||||
null
|
|
||||||
),
|
),
|
||||||
//Settings screen
|
//Settings screen
|
||||||
DefinedScreen.SETTINGS, new Screen(
|
DefinedScreen.SETTINGS, new Screen(
|
||||||
app,
|
app,
|
||||||
//Just the settings content fragment
|
//Just the settings content fragment
|
||||||
Map.of(
|
Map.of(
|
||||||
R.id.mainContentView, new MainContentRegion(new FragmentLayoutContentSettings(), R.id.mainContentView)
|
R.id.mainContentView, new MainContentRegion(new FragmentLayoutContentSettings(app), R.id.mainContentView)
|
||||||
),
|
)
|
||||||
new Toolbar(app.getActivity())
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
+39
-2
@@ -1,20 +1,57 @@
|
|||||||
package eu.konggdev.strikemaps.ui.fragment.layout.content.main;
|
package eu.konggdev.strikemaps.ui.fragment.layout.content.main;
|
||||||
|
|
||||||
|
import android.app.ActionBar;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
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.annotation.NonNull;
|
||||||
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
|
import com.google.android.material.appbar.MaterialToolbar;
|
||||||
import eu.konggdev.strikemaps.R;
|
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 class FragmentLayoutContentSettings extends Fragment implements MainContentLayout {
|
||||||
public FragmentLayoutContentSettings() {
|
@NonNull AppController app;
|
||||||
|
|
||||||
|
public FragmentLayoutContentSettings(AppController app) {
|
||||||
super(R.layout.fragment_settings);
|
super(R.layout.fragment_settings);
|
||||||
|
this.app = app;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Fragment toFragment() {
|
public Fragment toFragment() {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
|
||||||
|
Spinner mapRendererSelector = view.findViewById(R.id.mapRendererSelector);
|
||||||
|
ArrayAdapter<CharSequence> 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);
|
||||||
|
mapRendererSelector.setSelection(UserPrefsHelper.mapRenderer(app.getPrefs()));
|
||||||
|
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) {}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package eu.konggdev.strikemaps.ui.screen;
|
package eu.konggdev.strikemaps.ui.screen;
|
||||||
|
|
||||||
|
import android.view.View;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
@@ -14,11 +15,10 @@ import eu.konggdev.strikemaps.ui.element.region.UIRegion;
|
|||||||
|
|
||||||
public class Screen {
|
public class Screen {
|
||||||
@NonNull AppController app;
|
@NonNull AppController app;
|
||||||
Toolbar supportBar;
|
Toolbar toolbar;
|
||||||
public Screen(AppController app, Map<Integer, UIRegion> regions, Toolbar supportBar) {
|
public Screen(AppController app, Map<Integer, UIRegion> regions) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
this.uiRegions = regions;
|
this.uiRegions = regions;
|
||||||
this.supportBar = supportBar;
|
|
||||||
}
|
}
|
||||||
Map<Integer, UIRegion> uiRegions;
|
Map<Integer, UIRegion> uiRegions;
|
||||||
public Integer popup;
|
public Integer popup;
|
||||||
|
|||||||
@@ -7,4 +7,24 @@
|
|||||||
android:padding="24dp"
|
android:padding="24dp"
|
||||||
android:background="@android:color/background_dark">
|
android:background="@android:color/background_dark">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/mapRendererLabel"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Map Renderer:"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textSize="16sp"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/mapRendererSelector"/>
|
||||||
|
|
||||||
|
<Spinner
|
||||||
|
android:id="@+id/mapRendererSelector"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/mapRendererLabel"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"/>
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@@ -3,4 +3,9 @@
|
|||||||
<string name="settings_title">Settings</string>
|
<string name="settings_title">Settings</string>
|
||||||
<string name="attribution_title"> Attribution </string>
|
<string name="attribution_title"> Attribution </string>
|
||||||
<string name="shipped_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</string>
|
<string name="shipped_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</string>
|
||||||
|
<string-array name="map_renderers">
|
||||||
|
<item>MapLibre Native</item>
|
||||||
|
<item>MapLibre GL JS</item>
|
||||||
|
<item>VTM</item>
|
||||||
|
</string-array>
|
||||||
</resources>
|
</resources>
|
||||||
Reference in New Issue
Block a user