mirror of
https://github.com/mollyim/osmdroid.git
synced 2025-05-12 23:00:37 +01:00
#435 part 2, settings preferences for the various configuration options
This commit is contained in:
parent
3217574500
commit
474019f9b5
7 changed files with 416 additions and 6 deletions
|
@ -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,6 +4,7 @@ package org.osmdroid;
|
|||
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;
|
||||
|
@ -11,6 +12,7 @@ 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.SampleWithMinimapItemizedoverlay;
|
|||
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 class MainActivity extends Activity implements AdapterView.OnItemClickLis
|
|||
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 class MainActivity extends Activity implements AdapterView.OnItemClickLis
|
|||
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 class MainActivity extends Activity implements AdapterView.OnItemClickLis
|
|||
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 @@ public interface OpenStreetMapConstants {
|
|||
// 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";
|
||||
|
|
47
OpenStreetMapViewer/src/main/res/layout/activity_prefs.xml
Normal file
47
OpenStreetMapViewer/src/main/res/layout/activity_prefs.xml
Normal file
|
@ -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>
|
||||
|
|
180
config/checkstyle/checkstyle-noframes-sorted.xsl
Normal file
180
config/checkstyle/checkstyle-noframes-sorted.xsl
Normal file
|
@ -0,0 +1,180 @@
|
|||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:output method="html" indent="yes"/>
|
||||
<xsl:decimal-format decimal-separator="." grouping-separator="," />
|
||||
|
||||
<xsl:key name="files" match="file" use="@name" />
|
||||
|
||||
<!-- Checkstyle XML Style Sheet by Stephane Bailliez <sbailliez@apache.org> -->
|
||||
<!-- Part of the Checkstyle distribution found at http://checkstyle.sourceforge.net -->
|
||||
<!-- Usage (generates checkstyle_report.html): -->
|
||||
<!-- <checkstyle failonviolation="false" config="${check.config}"> -->
|
||||
<!-- <fileset dir="${src.dir}" includes="**/*.java"/> -->
|
||||
<!-- <formatter type="xml" toFile="${doc.dir}/checkstyle_report.xml"/> -->
|
||||
<!-- </checkstyle> -->
|
||||
<!-- <style basedir="${doc.dir}" destdir="${doc.dir}" -->
|
||||
<!-- includes="checkstyle_report.xml" -->
|
||||
<!-- style="${doc.dir}/checkstyle-noframes-sorted.xsl"/> -->
|
||||
|
||||
<xsl:template match="checkstyle">
|
||||
<html>
|
||||
<head>
|
||||
<style type="text/css">
|
||||
.bannercell {
|
||||
border: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
body {
|
||||
margin-left: 10;
|
||||
margin-right: 10;
|
||||
font:normal 80% arial,helvetica,sanserif;
|
||||
background-color:#FFFFFF;
|
||||
color:#000000;
|
||||
}
|
||||
.a td {
|
||||
background: #efefef;
|
||||
}
|
||||
.b td {
|
||||
background: #fff;
|
||||
}
|
||||
th, td {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
th {
|
||||
font-weight:bold;
|
||||
background: #ccc;
|
||||
color: black;
|
||||
}
|
||||
table, th, td {
|
||||
font-size:100%;
|
||||
border: none
|
||||
}
|
||||
table.log tr td, tr th {
|
||||
|
||||
}
|
||||
h2 {
|
||||
font-weight:bold;
|
||||
font-size:140%;
|
||||
margin-bottom: 5;
|
||||
}
|
||||
h3 {
|
||||
font-size:100%;
|
||||
font-weight:bold;
|
||||
background: #525D76;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
padding: 5px;
|
||||
margin-right: 2px;
|
||||
margin-left: 2px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<!-- jakarta logo -->
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td class="bannercell" rowspan="2">
|
||||
<!--a href="http://jakarta.apache.org/">
|
||||
<img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
|
||||
</a-->
|
||||
</td>
|
||||
<td class="text-align:right"><h2>CheckStyle Audit</h2></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-align:right">Designed for use with <a href='http://checkstyle.sourceforge.net/'>CheckStyle</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"/>
|
||||
|
||||
<!-- Summary part -->
|
||||
<xsl:apply-templates select="." mode="summary"/>
|
||||
<hr size="1" width="100%" align="left"/>
|
||||
|
||||
<!-- Package List part -->
|
||||
<xsl:apply-templates select="." mode="filelist"/>
|
||||
<hr size="1" width="100%" align="left"/>
|
||||
|
||||
<!-- For each package create its part -->
|
||||
<xsl:apply-templates select="file[@name and generate-id(.) = generate-id(key('files', @name))]" />
|
||||
|
||||
<hr size="1" width="100%" align="left"/>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
<xsl:template match="checkstyle" mode="filelist">
|
||||
<h3>Files</h3>
|
||||
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Errors</th>
|
||||
</tr>
|
||||
<xsl:for-each select="file[@name and generate-id(.) = generate-id(key('files', @name))]">
|
||||
<xsl:sort data-type="number" order="descending" select="count(key('files', @name)/error)"/>
|
||||
<xsl:variable name="currentName" select="@name" />
|
||||
<xsl:variable name="errorCount" select="count(key('files', @name)/error)"/>
|
||||
<tr>
|
||||
<xsl:call-template name="alternated-row"/>
|
||||
<td><a href="#f-{@name}"><xsl:value-of select="@name"/></a></td>
|
||||
<td><xsl:value-of select="$errorCount"/></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="file">
|
||||
<a name="f-{@name}"></a>
|
||||
<h3>File <xsl:value-of select="@name"/></h3>
|
||||
|
||||
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||
<tr>
|
||||
<th>Error Description</th>
|
||||
<th>Line</th>
|
||||
</tr>
|
||||
<xsl:for-each select="key('files', @name)/error">
|
||||
<xsl:sort data-type="number" order="ascending" select="@line"/>
|
||||
<tr>
|
||||
<xsl:call-template name="alternated-row"/>
|
||||
<td><xsl:value-of select="@message"/></td>
|
||||
<td><xsl:value-of select="@line"/></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
<a href="#top">Back to top</a>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="checkstyle" mode="summary">
|
||||
<h3>Summary</h3>
|
||||
<xsl:variable name="fileCount" select="count(file[@name and generate-id(.) = generate-id(key('files', @name))])"/>
|
||||
<xsl:variable name="errorCount" select="count(file/error)"/>
|
||||
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||
<tr>
|
||||
<th>Files</th>
|
||||
<th>Errors</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<xsl:call-template name="alternated-row"/>
|
||||
<td><xsl:value-of select="$fileCount"/></td>
|
||||
<td><xsl:value-of select="$errorCount"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="alternated-row">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:if test="position() mod 2 = 1">a</xsl:if>
|
||||
<xsl:if test="position() mod 2 = 0">b</xsl:if>
|
||||
</xsl:attribute>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
||||
|
Loading…
Reference in a new issue