diff options
Diffstat (limited to 'main/src')
| -rw-r--r-- | main/src/cgeo/geocaching/CacheDetailActivity.java | 12 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/Settings.java | 14 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/SettingsActivity.java | 12 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java | 12 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/cgeocaches.java | 38 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/maps/CGeoMap.java | 12 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/network/Network.java | 15 |
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); + } } /** |
