aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
Diffstat (limited to 'main/src')
-rw-r--r--main/src/cgeo/geocaching/CacheDetailActivity.java12
-rw-r--r--main/src/cgeo/geocaching/Settings.java14
-rw-r--r--main/src/cgeo/geocaching/SettingsActivity.java12
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java12
-rw-r--r--main/src/cgeo/geocaching/cgeocaches.java38
-rw-r--r--main/src/cgeo/geocaching/maps/CGeoMap.java12
-rw-r--r--main/src/cgeo/geocaching/network/Network.java15
7 files changed, 97 insertions, 18 deletions
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java
index 3c422d5..fec3758 100644
--- a/main/src/cgeo/geocaching/CacheDetailActivity.java
+++ b/main/src/cgeo/geocaching/CacheDetailActivity.java
@@ -166,8 +166,8 @@ public class CacheDetailActivity extends AbstractActivity {
/**
* A {@link List} of all available pages.
- *
- * @todo Move to adapter
+ *
+ * TODO Move to adapter
*/
private final List<Page> pageOrder = new ArrayList<Page>();
@@ -552,14 +552,14 @@ public class CacheDetailActivity extends AbstractActivity {
if (null != cache) {
menu.add(0, MENU_DEFAULT_NAVIGATION, 0, NavigationAppFactory.getDefaultNavigationApplication().getName()).setIcon(R.drawable.ic_menu_compass); // default navigation tool
- final SubMenu subMenu = menu.addSubMenu(1, 0, 0, res.getString(R.string.cache_menu_navigate)).setIcon(R.drawable.ic_menu_mapmode);
+ final SubMenu subMenu = menu.addSubMenu(0, 0, 0, res.getString(R.string.cache_menu_navigate)).setIcon(R.drawable.ic_menu_mapmode);
NavigationAppFactory.addMenuItems(subMenu, cache);
GeneralAppsFactory.addMenuItems(subMenu, cache);
- menu.add(1, MENU_CALENDAR, 0, res.getString(R.string.cache_menu_event)).setIcon(R.drawable.ic_menu_agenda); // add event to calendar
+ menu.add(0, MENU_CALENDAR, 0, res.getString(R.string.cache_menu_event)).setIcon(R.drawable.ic_menu_agenda); // add event to calendar
LoggingUI.addMenuItems(menu, cache);
menu.add(0, MENU_CACHES_AROUND, 0, res.getString(R.string.cache_menu_around)).setIcon(R.drawable.ic_menu_rotate); // caches around
- menu.add(1, MENU_BROWSER, 0, res.getString(R.string.cache_menu_browser)).setIcon(R.drawable.ic_menu_globe); // browser
+ menu.add(0, MENU_BROWSER, 0, res.getString(R.string.cache_menu_browser)).setIcon(R.drawable.ic_menu_globe); // browser
menu.add(0, MENU_SHARE, 0, res.getString(R.string.cache_menu_share)).setIcon(R.drawable.ic_menu_share); // share cache
}
return true;
@@ -677,7 +677,7 @@ public class CacheDetailActivity extends AbstractActivity {
creator.notifyDataSetChanged();
}
- // actionbar: title and icon (default: mystery-icon)
+ // action bar: title and icon (default: mystery-icon)
if (StringUtils.isNotBlank(cache.getName())) {
setTitle(cache.getName() + " (" + cache.getGeocode().toUpperCase() + ")");
} else {
diff --git a/main/src/cgeo/geocaching/Settings.java b/main/src/cgeo/geocaching/Settings.java
index 74614c4..b4fc94b 100644
--- a/main/src/cgeo/geocaching/Settings.java
+++ b/main/src/cgeo/geocaching/Settings.java
@@ -98,6 +98,7 @@ public final class Settings {
private static final String KEY_GPX_EXPORT_DIR = "gpxExportDir";
private static final String KEY_GPX_IMPORT_DIR = "gpxImportDir";
private static final String KEY_PLAIN_LOGS = "plainLogs";
+ private static final String KEY_NATIVE_UA = "nativeUa";
private final static int unitsMetric = 1;
@@ -1226,4 +1227,17 @@ public final class Settings {
});
}
+ public static boolean getUseNativeUa() {
+ return sharedPrefs.getBoolean(KEY_NATIVE_UA, false);
+ }
+
+ public static void setUseNativeUa(final boolean useNativeUa) {
+ editSharedSettings(new PrefRunnable() {
+
+ @Override
+ public void edit(Editor edit) {
+ edit.putBoolean(KEY_NATIVE_UA, useNativeUa);
+ }
+ });
+ }
}
diff --git a/main/src/cgeo/geocaching/SettingsActivity.java b/main/src/cgeo/geocaching/SettingsActivity.java
index defb138..b0870a4 100644
--- a/main/src/cgeo/geocaching/SettingsActivity.java
+++ b/main/src/cgeo/geocaching/SettingsActivity.java
@@ -527,6 +527,18 @@ public class SettingsActivity extends AbstractActivity {
}
});
+ // Workaround for cspire customers on mobile connections #1843
+ final CheckBox useNativeUserAgent = (CheckBox) findViewById(R.id.use_native_ua);
+ useNativeUserAgent.setChecked(Settings.getUseNativeUa());
+ useNativeUserAgent.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ Settings.setUseNativeUa(!Settings.getUseNativeUa());
+ useNativeUserAgent.setChecked(Settings.getUseNativeUa());
+ }
+ });
+
// Altitude settings
EditText altitudeEdit = (EditText) findViewById(R.id.altitude);
altitudeEdit.setText(String.valueOf(Settings.getAltCorrection()));
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
index 26e5648..6e1d81c 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
@@ -179,7 +179,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
/**
* Returns all installed navigation apps for default navigation.
- *
+ *
* @return
*/
public static List<NavigationAppsEnum> getInstalledDefaultNavigationApps() {
@@ -300,9 +300,9 @@ public final class NavigationAppFactory extends AbstractAppFactory {
private static App getDefaultNavigationApplication(int defaultNavigation) {
if (defaultNavigation == 2) {
- return getNavigationAppFromSetting(Settings.getDefaultNavigationTool2());
+ return getNavigationAppForId(Settings.getDefaultNavigationTool2());
}
- return getNavigationAppFromSetting(Settings.getDefaultNavigationTool());
+ return getNavigationAppForId(Settings.getDefaultNavigationTool());
}
/**
@@ -340,14 +340,14 @@ public final class NavigationAppFactory extends AbstractAppFactory {
* @return never <code>null</code>
*/
public static App getDefaultNavigationApplication() {
- return getNavigationAppFromSetting(Settings.getDefaultNavigationTool());
+ return getDefaultNavigationApplication(1);
}
- private static App getNavigationAppFromSetting(final int defaultNavigationTool) {
+ private static App getNavigationAppForId(final int navigationAppId) {
final List<NavigationAppsEnum> installedNavigationApps = getInstalledNavigationApps();
for (NavigationAppsEnum navigationApp : installedNavigationApps) {
- if (navigationApp.id == defaultNavigationTool) {
+ if (navigationApp.id == navigationAppId) {
return navigationApp.app;
}
}
diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java
index 4e12f07..7639faa 100644
--- a/main/src/cgeo/geocaching/cgeocaches.java
+++ b/main/src/cgeo/geocaching/cgeocaches.java
@@ -106,6 +106,7 @@ public class cgeocaches extends AbstractListActivity {
private CacheListType type = null;
private Geopoint coords = null;
private SearchResult search = null;
+ /** The list of shown caches shared with Adapter. Don't manipulate outside of main thread only with Handler */
private final List<cgCache> cacheList = new ArrayList<cgCache>();
private CacheListAdapter adapter = null;
private LayoutInflater inflater = null;
@@ -268,12 +269,17 @@ public class cgeocaches extends AbstractListActivity {
}
}
};
+ private Set<cgCache> cachesFromSearchResult;
+
+ /**
+ * Loads the caches and fills the cachelist
+ */
private void replaceCacheListFromSearch() {
- cacheList.clear();
if (search!=null) {
- cacheList.addAll(search.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB));
+ cachesFromSearchResult = search.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB);
}
+ refreshCacheListHandler.sendEmptyMessage(0);
}
protected void updateTitle() {
@@ -338,6 +344,10 @@ public class cgeocaches extends AbstractListActivity {
}
}
};
+
+ /**
+ * TODO Possibly parts should be a Thread not a Handler
+ */
private Handler downloadFromWebHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
@@ -1374,6 +1384,10 @@ public class cgeocaches extends AbstractListActivity {
}
}
+ /**
+ * Thread to refresh the cache details.
+ */
+
private class LoadDetailsThread extends Thread {
final private Handler handler;
@@ -1653,6 +1667,12 @@ public class cgeocaches extends AbstractListActivity {
invalidateOptionsMenuCompatible();
}
+ /**
+ * TODO Possible refactoring. IMO The Handler is obsolete
+ * @author keith.paterson
+ *
+ */
+
private class MoveHandler extends Handler {
@Override
public void handleMessage(Message msg) {
@@ -1678,6 +1698,20 @@ public class cgeocaches extends AbstractListActivity {
}
}
+ /**
+ * Handler to refresh the current list of caches. This list is shared with the Adapter and therefore must be updated
+ * in the UI-Thread
+ */
+
+ private Handler refreshCacheListHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ cacheList.clear();
+ cacheList.addAll(cachesFromSearchResult);
+ }
+ };
+
+
private void renameList() {
new StoredList.UserInterface(this).promptForListRename(listId, new Runnable() {
diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java
index fb366c8..a2848ae 100644
--- a/main/src/cgeo/geocaching/maps/CGeoMap.java
+++ b/main/src/cgeo/geocaching/maps/CGeoMap.java
@@ -350,7 +350,12 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
public void onSaveInstanceState(final Bundle outState) {
outState.putInt(BUNDLE_MAP_SOURCE, currentSourceId);
outState.putIntArray(BUNDLE_MAP_STATE, currentMapState());
- outState.putString(BUNDLE_MAP_MODE, mapMode.name());
+ if (isLiveMode()) {
+ outState.putString(BUNDLE_MAP_MODE, mapMode.name());
+ }
+ else {
+ outState.putString(BUNDLE_MAP_MODE, null);
+ }
}
@Override
@@ -392,7 +397,10 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
if (savedInstanceState != null) {
currentSourceId = savedInstanceState.getInt(BUNDLE_MAP_SOURCE, Settings.getMapSource());
mapStateIntent = savedInstanceState.getIntArray(BUNDLE_MAP_STATE);
- mapMode = Enum.valueOf(MapMode.class, savedInstanceState.getString(BUNDLE_MAP_MODE));
+ String lastMapmode = savedInstanceState.getString(BUNDLE_MAP_MODE);
+ if (lastMapmode != null) {
+ mapMode = Enum.valueOf(MapMode.class, lastMapmode);
+ }
Settings.setLiveMap(mapMode == MapMode.LIVE_ONLINE);
} else {
diff --git a/main/src/cgeo/geocaching/network/Network.java b/main/src/cgeo/geocaching/network/Network.java
index 5911146..bd4b6f6 100644
--- a/main/src/cgeo/geocaching/network/Network.java
+++ b/main/src/cgeo/geocaching/network/Network.java
@@ -1,5 +1,7 @@
package cgeo.geocaching.network;
+import cgeo.geocaching.Settings;
+import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.files.LocalStorage;
import cgeo.geocaching.utils.BaseUtils;
import cgeo.geocaching.utils.Log;
@@ -32,11 +34,13 @@ import ch.boye.httpclientandroidlib.params.CoreProtocolPNames;
import ch.boye.httpclientandroidlib.params.HttpParams;
import ch.boye.httpclientandroidlib.protocol.HttpContext;
import ch.boye.httpclientandroidlib.util.EntityUtils;
+
import org.apache.commons.lang3.StringUtils;
import org.json.JSONException;
import org.json.JSONObject;
import android.net.Uri;
+import android.webkit.WebView;
import java.io.File;
import java.io.IOException;
@@ -47,7 +51,10 @@ public abstract class Network {
private static final int NB_DOWNLOAD_RETRIES = 4;
/** User agent id */
- private final static String USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1";
+ private final static String PC_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1";
+ /** Native user agent **/
+ private final static String NATIVE_USER_AGENT = new WebView(cgeoapplication.getInstance()).getSettings().getUserAgentString();
+
private static final String PATTERN_PASSWORD = "(?<=[\\?&])[Pp]ass(w(or)?d)?=[^&#$]+";
private final static HttpParams clientParams = new BasicHttpParams();
@@ -230,7 +237,11 @@ public abstract class Network {
"X-Requested-With", "XMLHttpRequest")) {
request.setHeader(header.getName(), header.getValue());
}
- request.getParams().setParameter(CoreProtocolPNames.USER_AGENT, Network.USER_AGENT);
+ if (Settings.getUseNativeUa()) {
+ request.getParams().setParameter(CoreProtocolPNames.USER_AGENT, Network.NATIVE_USER_AGENT);
+ } else {
+ request.getParams().setParameter(CoreProtocolPNames.USER_AGENT, Network.PC_USER_AGENT);
+ }
}
/**