Permalink
Browse files

#435 part 2, settings preferences for the various configuration options

  • Loading branch information...
spyhunter99 committed Oct 21, 2016
1 parent 3217574 commit 474019f9b50570add753aa29b184dadc9fdf155c
@@ -184,6 +184,15 @@
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".PreferenceActivity"
android:label="OpenStreetMap Preferences">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
@@ -4,13 +4,15 @@
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.graphics.Typeface;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.preference.PreferenceManager;
import android.support.v4.content.ContextCompat;
import android.view.View;
import android.widget.AdapterView;
@@ -24,7 +26,10 @@
import org.osmdroid.samples.SampleWithMinimapZoomcontrols;
import org.osmdroid.samples.SampleWithTilesOverlay;
import org.osmdroid.samples.SampleWithTilesOverlayAndCustomTileSource;
import org.osmdroid.tileprovider.constants.OpenStreetMapTileProviderConstants;
import org.osmdroid.views.MapView;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -45,6 +50,17 @@ public void onCreate(final Bundle savedInstanceState) {
checkPermissions();
}
File discoveredBestPath = OpenStreetMapTileProviderConstants.TILE_PATH_BASE;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
OpenStreetMapTileProviderConstants.TILE_PATH_BASE = new File(prefs.getString("textViewCacheDirectory", discoveredBestPath.getAbsolutePath()));
OpenStreetMapTileProviderConstants.DEBUGMODE=prefs.getBoolean("checkBoxDebugMode",false);
OpenStreetMapTileProviderConstants.DEBUG_TILE_PROVIDERS=prefs.getBoolean("checkBoxDebugTileProvider",false);
MapView.hardwareAccelerated=prefs.getBoolean("checkBoxHardwareAcceleration",false);
// Generate a ListView with Sample Maps
final ArrayList<String> list = new ArrayList<>();
list.add("OSMDroid Sample map (Start Here)");
@@ -56,6 +72,7 @@ public void onCreate(final Bundle savedInstanceState) {
list.add("More Samples");
list.add("Bug Drivers");
list.add("Report a bug");
list.add("Settings");
//this.setListAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list));
ListView lv = (ListView) findViewById(R.id.activitylist);
ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list);
@@ -108,6 +125,10 @@ public void onItemClick(AdapterView<?> parent, View view, int position, long id)
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/osmdroid/osmdroid/issues"));
startActivity(browserIntent);
break;
case 9:
Intent i = new Intent(this,PreferenceActivity.class);
startActivity(i);
break;
}
}
@@ -0,0 +1,155 @@
package org.osmdroid;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.Editable;
import android.text.InputType;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import org.osmdroid.tileprovider.constants.OpenStreetMapTileProviderConstants;
import org.osmdroid.tileprovider.util.StorageUtils;
import org.osmdroid.views.MapView;
import java.io.File;
/**
* Created by alex on 10/21/16.
*/
public class PreferenceActivity extends Activity implements View.OnClickListener {
CheckBox checkBoxDebugTileProvider,
checkBoxDebugMode,
checkBoxHardwareAcceleration;
Button buttonSetCache,
buttonManualCacheEntry;
TextView textViewCacheDirectory;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_prefs);
checkBoxDebugTileProvider = (CheckBox) findViewById(R.id.checkBoxDebugTileProvider);
checkBoxDebugMode = (CheckBox) findViewById(R.id.checkBoxDebugMode);
checkBoxHardwareAcceleration = (CheckBox) findViewById(R.id.checkBoxHardwareAcceleration);
buttonSetCache = (Button) findViewById(R.id.buttonSetCache);
buttonManualCacheEntry = (Button) findViewById(R.id.buttonManualCacheEntry);
textViewCacheDirectory = (TextView) findViewById(R.id.textViewCacheDirectory);
checkBoxDebugTileProvider.setOnClickListener(this);
checkBoxDebugMode.setOnClickListener(this);
checkBoxHardwareAcceleration.setOnClickListener(this);
buttonSetCache.setOnClickListener(this);
buttonManualCacheEntry.setOnClickListener(this);
}
@Override
public void onResume() {
super.onResume();
//TODO load from preferneces
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
checkBoxDebugMode.setChecked(prefs.getBoolean("checkBoxDebugMode", OpenStreetMapTileProviderConstants.DEBUGMODE));
checkBoxDebugTileProvider.setChecked(prefs.getBoolean("checkBoxDebugTileProvider", OpenStreetMapTileProviderConstants.DEBUG_TILE_PROVIDERS));
checkBoxHardwareAcceleration.setChecked(prefs.getBoolean("checkBoxHardwareAcceleration", MapView.hardwareAccelerated));
textViewCacheDirectory.setText(prefs.getString("textViewCacheDirectory", OpenStreetMapTileProviderConstants.getBasePath().getAbsolutePath()));
}
@Override
public void onPause() {
super.onPause();
OpenStreetMapTileProviderConstants.DEBUGMODE = checkBoxDebugMode.isChecked();
OpenStreetMapTileProviderConstants.DEBUG_TILE_PROVIDERS = checkBoxDebugTileProvider.isChecked();
MapView.hardwareAccelerated = checkBoxHardwareAcceleration.isChecked();
OpenStreetMapTileProviderConstants.TILE_PATH_BASE=new File(textViewCacheDirectory.getText().toString());
SharedPreferences.Editor edit = PreferenceManager.getDefaultSharedPreferences(this).edit();
edit.putBoolean("checkBoxDebugMode", checkBoxDebugMode.isChecked());
edit.putBoolean("checkBoxDebugTileProvider", checkBoxDebugTileProvider.isChecked());
edit.putBoolean("checkBoxHardwareAcceleration", checkBoxHardwareAcceleration.isChecked());
edit.putString("textViewCacheDirectory", textViewCacheDirectory.getText().toString());
edit.commit();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.buttonManualCacheEntry: {
showManualEntry();
}
case R.id.buttonSetCache: {
}
}
}
String m_Text = "";
private void showManualEntry() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title");
// Set up the input
final EditText input = new EditText(this);
// Specify the type of input expected; this, for example, sets the input as a password, and will mask the text
input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
input.setLines(1);
input.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
File file = new File(input.getText().toString());
if (!file.exists()) {
input.setError("Does not exist");
} else if (file.exists() && !file.isDirectory()) {
input.setError("Not a directory");
} else if (!StorageUtils.isWritable(file)){
input.setError("Not writable");
} else {
input.setError(null);
}
}
});
builder.setView(input);
// Set up the buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (input.getError()==null) {
m_Text = input.getText().toString();
textViewCacheDirectory.setText(m_Text);
}
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
}
}
@@ -13,12 +13,6 @@
// Final Fields
// ===========================================================
public static final String DEBUGTAG = "OPENSTREETMAP";
public static final boolean DEBUGMODE = false;
public static final int NOT_SET = Integer.MIN_VALUE;
public static final String PREFS_NAME = "org.andnav.osm.prefs";
public static final String PREFS_TILE_SOURCE = "tilesource";
public static final String PREFS_SCROLL_X = "scrollX";
@@ -0,0 +1,47 @@
<?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="match_parent">
<CheckBox
android:text="@string/tile_provided_debugging"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/checkBoxDebugTileProvider" />
<CheckBox
android:text="@string/debug_logging"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/checkBoxDebugMode" />
<CheckBox
android:text="@string/enable_mapview_hardware_acceleration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/checkBoxHardwareAcceleration" />
<TextView
android:text="@string/cache_directory"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<TextView
android:text="/storage/sdcard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textViewCacheDirectory" />
<Button
android:text="Pick Cache Location"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/buttonSetCache" />
<Button
android:text="Enter Cache Location"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/buttonManualCacheEntry" />
</LinearLayout>
@@ -35,5 +35,9 @@
<string name="bt_center_map_description">Center on my location</string>
<string name="bt_follow_me_description">Follow me</string>
<string name="debug_logging">Debug Logging</string>
<string name="tile_provided_debugging">Tile Provided Debugging</string>
<string name="cache_directory">Cache Directory</string>
<string name="enable_mapview_hardware_acceleration">Enable MapView Hardware Acceleration</string>
</resources>
Oops, something went wrong.

0 comments on commit 474019f

Please sign in to comment.