aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2014-05-24 16:09:36 +0200
committerBananeweizen <bananeweizen@gmx.de>2014-05-24 16:09:36 +0200
commita5e7f74edd2f24c765a8ea87540782e26dd26bf4 (patch)
treece601a632dc842c977943ed1d773eb985d00c6e3 /main
parentb91529a6aaf8ac2460ec18cddcafc0d41f83f8b6 (diff)
downloadcgeo-a5e7f74edd2f24c765a8ea87540782e26dd26bf4.zip
cgeo-a5e7f74edd2f24c765a8ea87540782e26dd26bf4.tar.gz
cgeo-a5e7f74edd2f24c765a8ea87540782e26dd26bf4.tar.bz2
fix #3871: provide up navigation
Diffstat (limited to 'main')
-rw-r--r--main/AndroidManifest.xml41
-rw-r--r--main/res/layout/actionbar_maps.xml2
-rw-r--r--main/res/layout/addresslist_activity.xml2
-rw-r--r--main/src/cgeo/geocaching/AbstractLoggingActivity.java2
-rw-r--r--main/src/cgeo/geocaching/CompassActivity.java2
-rw-r--r--main/src/cgeo/geocaching/LogCacheActivity.java7
-rw-r--r--main/src/cgeo/geocaching/MainActivity.java3
-rw-r--r--main/src/cgeo/geocaching/NavigateAnyPointActivity.java3
-rw-r--r--main/src/cgeo/geocaching/TrackableActivity.java3
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractActivity.java13
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractListActivity.java14
-rw-r--r--main/src/cgeo/geocaching/activity/ActivityMixin.java27
-rw-r--r--main/src/cgeo/geocaching/activity/IAbstractActivity.java3
-rw-r--r--main/src/cgeo/geocaching/maps/AbstractMap.java3
-rw-r--r--main/src/cgeo/geocaching/maps/CGeoMap.java8
-rw-r--r--main/src/cgeo/geocaching/maps/google/GoogleMapActivity.java4
-rw-r--r--main/src/cgeo/geocaching/maps/interfaces/MapActivityImpl.java2
-rw-r--r--main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapActivity.java6
-rw-r--r--main/src/cgeo/geocaching/maps/mapsforge/v024/MapsforgeMapActivity024.java6
19 files changed, 83 insertions, 68 deletions
diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml
index 4f0135e..0268762 100644
--- a/main/AndroidManifest.xml
+++ b/main/AndroidManifest.xml
@@ -22,7 +22,6 @@
<uses-feature
android:name="android.hardware.screen.portrait"
android:required="false" />
-
<uses-feature
android:name="android.hardware.nfc"
android:required="false" />
@@ -84,12 +83,16 @@
android:configChanges="keyboardHidden|orientation"
android:label="@string/app_name"
android:launchMode="singleTop"
+ android:parentActivityName="cgeo.geocaching.MainActivity"
android:windowSoftInputMode="stateHidden" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
+ android:name="android.support.PARENT_ACTIVITY"
+ android:value="cgeo.geocaching.MainActivity" />
+ <meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
@@ -104,13 +107,21 @@
android:name=".AboutActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/about"
+ android:parentActivityName="cgeo.geocaching.MainActivity"
android:windowSoftInputMode="stateHidden" >
+ <meta-data
+ android:name="android.support.PARENT_ACTIVITY"
+ android:value="cgeo.geocaching.MainActivity" />
</activity>
<activity
android:name=".UsefulAppsActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/helpers"
+ android:parentActivityName="cgeo.geocaching.MainActivity"
android:windowSoftInputMode="stateHidden" >
+ <meta-data
+ android:name="android.support.PARENT_ACTIVITY"
+ android:value="cgeo.geocaching.MainActivity" />
</activity>
<activity
android:name=".twitter.TwitterAuthorizationActivity"
@@ -139,24 +150,40 @@
android:name=".NavigateAnyPointActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/search_destination"
+ android:parentActivityName="cgeo.geocaching.MainActivity"
android:windowSoftInputMode="stateHidden" >
+ <meta-data
+ android:name="android.support.PARENT_ACTIVITY"
+ android:value="cgeo.geocaching.MainActivity" />
</activity>
<activity
android:name=".AddressListActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/search_address_result"
+ android:parentActivityName="cgeo.geocaching.SearchActivity"
android:windowSoftInputMode="stateHidden" >
+ <meta-data
+ android:name="android.support.PARENT_ACTIVITY"
+ android:value="cgeo.geocaching.SearchActivity" />
</activity>
<activity
android:name=".settings.SettingsActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/settings_titlebar"
+ android:parentActivityName="cgeo.geocaching.MainActivity"
android:theme="@style/settings" >
+ <meta-data
+ android:name="android.support.PARENT_ACTIVITY"
+ android:value="cgeo.geocaching.MainActivity" />
</activity>
<activity
android:name=".CacheListActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
- android:label="@string/app_name" >
+ android:label="@string/app_name"
+ android:parentActivityName="cgeo.geocaching.MainActivity" >
+ <meta-data
+ android:name="android.support.PARENT_ACTIVITY"
+ android:value="cgeo.geocaching.MainActivity" />
<!-- intent filter for local gpx files -->
<intent-filter>
@@ -425,9 +452,12 @@
<activity
android:name=".SelectMapfileActivity"
android:configChanges="keyboardHidden|orientation"
- android:label="@string/map_file_select_title" >
+ android:label="@string/map_file_select_title"
+ android:parentActivityName="cgeo.geocaching.settings.SettingsActivity" >
+ <meta-data
+ android:name="android.support.PARENT_ACTIVITY"
+ android:value="cgeo.geocaching.settings.SettingsActivity" />
</activity>
-
<activity
android:name="WaypointPopup"
android:configChanges="keyboardHidden|orientation"
@@ -469,7 +499,8 @@
</activity>
<activity
android:name=".CreateShortcutActivity"
- android:label="@string/cgeo_shortcut" >
+ android:label="@string/cgeo_shortcut"
+ android:parentActivityName="cgeo.geocaching.MainActivity" >
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT" />
diff --git a/main/res/layout/actionbar_maps.xml b/main/res/layout/actionbar_maps.xml
index 348342c..0e3dc0e 100644
--- a/main/res/layout/actionbar_maps.xml
+++ b/main/res/layout/actionbar_maps.xml
@@ -13,7 +13,7 @@
<ImageView
style="@style/action_bar_action"
android:layout_marginLeft="-13dp"
- android:onClick="goHome" />
+ android:onClick="navigateUp" />
<View style="@style/action_bar_separator" />
diff --git a/main/res/layout/addresslist_activity.xml b/main/res/layout/addresslist_activity.xml
index e5c6491..3410137 100644
--- a/main/res/layout/addresslist_activity.xml
+++ b/main/res/layout/addresslist_activity.xml
@@ -4,8 +4,6 @@
android:layout_height="fill_parent"
android:orientation="vertical" >
- <include layout="@layout/actionbar_maps" />
-
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
diff --git a/main/src/cgeo/geocaching/AbstractLoggingActivity.java b/main/src/cgeo/geocaching/AbstractLoggingActivity.java
index 3b0f78d..75dc3bf 100644
--- a/main/src/cgeo/geocaching/AbstractLoggingActivity.java
+++ b/main/src/cgeo/geocaching/AbstractLoggingActivity.java
@@ -79,7 +79,7 @@ public abstract class AbstractLoggingActivity extends AbstractActionBarActivity
return true;
}
- return false;
+ return super.onOptionsItemSelected(item);
}
protected abstract LogContext getLogContext();
diff --git a/main/src/cgeo/geocaching/CompassActivity.java b/main/src/cgeo/geocaching/CompassActivity.java
index e5c38a3..1d86c49 100644
--- a/main/src/cgeo/geocaching/CompassActivity.java
+++ b/main/src/cgeo/geocaching/CompassActivity.java
@@ -217,7 +217,7 @@ public class CompassActivity extends AbstractActionBarActivity {
return true;
}
}
- return false;
+ return super.onOptionsItemSelected(item);
}
private void setTitle() {
diff --git a/main/src/cgeo/geocaching/LogCacheActivity.java b/main/src/cgeo/geocaching/LogCacheActivity.java
index 5149dbc..15bc0ea 100644
--- a/main/src/cgeo/geocaching/LogCacheActivity.java
+++ b/main/src/cgeo/geocaching/LogCacheActivity.java
@@ -410,10 +410,6 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- if (super.onOptionsItemSelected(item)) {
- return true;
- }
-
final int id = item.getItemId();
if (id >= 10 && id <= 19) {
rating = (id - 9) / 2.0f;
@@ -423,8 +419,7 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia
updatePostButtonText();
return true;
}
-
- return false;
+ return super.onOptionsItemSelected(item);
}
@Override
diff --git a/main/src/cgeo/geocaching/MainActivity.java b/main/src/cgeo/geocaching/MainActivity.java
index 8de27b0..cf323bb 100644
--- a/main/src/cgeo/geocaching/MainActivity.java
+++ b/main/src/cgeo/geocaching/MainActivity.java
@@ -326,9 +326,8 @@ public class MainActivity extends AbstractActionBarActivity {
case R.id.menu_gosearch:
onSearchRequested();
return true;
- default:
- return super.onOptionsItemSelected(item);
}
+ return super.onOptionsItemSelected(item);
}
private void startScannerApplication() {
diff --git a/main/src/cgeo/geocaching/NavigateAnyPointActivity.java b/main/src/cgeo/geocaching/NavigateAnyPointActivity.java
index c9b1b3f..39531f1 100644
--- a/main/src/cgeo/geocaching/NavigateAnyPointActivity.java
+++ b/main/src/cgeo/geocaching/NavigateAnyPointActivity.java
@@ -361,9 +361,8 @@ public class NavigateAnyPointActivity extends AbstractActionBarActivity implemen
case R.id.menu_navigate:
NavigationAppFactory.showNavigationMenu(this, null, null, coords);
return true;
- default:
- return super.onOptionsItemSelected(item);
}
+ return super.onOptionsItemSelected(item);
}
private void addToHistory(final Geopoint coords) {
diff --git a/main/src/cgeo/geocaching/TrackableActivity.java b/main/src/cgeo/geocaching/TrackableActivity.java
index ee45ba7..29ffe45 100644
--- a/main/src/cgeo/geocaching/TrackableActivity.java
+++ b/main/src/cgeo/geocaching/TrackableActivity.java
@@ -254,9 +254,8 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
case R.id.menu_browser_trackable:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(trackable.getBrowserUrl())));
return true;
- default:
- return false;
}
+ return super.onOptionsItemSelected(item);
}
@Override
diff --git a/main/src/cgeo/geocaching/activity/AbstractActivity.java b/main/src/cgeo/geocaching/activity/AbstractActivity.java
index d542b13..05dde40 100644
--- a/main/src/cgeo/geocaching/activity/AbstractActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractActivity.java
@@ -49,11 +49,6 @@ public abstract class AbstractActivity extends ActionBarActivity implements IAbs
this.keepScreenOn = keepScreenOn;
}
- @Override
- final public void goHome(final View view) {
- ActivityMixin.navigateToMain(this);
- }
-
final protected void showProgress(final boolean show) {
ActivityMixin.showProgress(this, show);
}
@@ -83,9 +78,8 @@ public abstract class AbstractActivity extends ActionBarActivity implements IAbs
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId()== android.R.id.home) {
- ActivityMixin.navigateToMain(this);
- return true;
+ if (item.getItemId() == android.R.id.home) {
+ return ActivityMixin.navigateUp(this);
}
return super.onOptionsItemSelected(item);
}
@@ -208,8 +202,9 @@ public abstract class AbstractActivity extends ActionBarActivity implements IAbs
}
protected void initializeAndroidBeam(ActivitySharingInterface sharingInterface) {
- if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH)
+ if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
initializeICSAndroidBeam(sharingInterface);
+ }
}
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
diff --git a/main/src/cgeo/geocaching/activity/AbstractListActivity.java b/main/src/cgeo/geocaching/activity/AbstractListActivity.java
index eaa8a96..eac191a 100644
--- a/main/src/cgeo/geocaching/activity/AbstractListActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractListActivity.java
@@ -5,7 +5,6 @@ import cgeo.geocaching.CgeoApplication;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.MenuItem;
-import android.view.View;
import android.view.Window;
public abstract class AbstractListActivity extends ActionBarListActivity implements
@@ -24,11 +23,6 @@ public abstract class AbstractListActivity extends ActionBarListActivity impleme
this.keepScreenOn = keepScreenOn;
}
- @Override
- final public void goHome(View view) {
- ActivityMixin.navigateToMain(this);
- }
-
final public void showProgress(final boolean show) {
ActivityMixin.showProgress(this, show);
}
@@ -41,7 +35,7 @@ public abstract class AbstractListActivity extends ActionBarListActivity impleme
public final void showToast(String text) {
ActivityMixin.showToast(this, text);
}
-
+
@Override
public final void showShortToast(String text) {
ActivityMixin.showShortToast(this, text);
@@ -56,16 +50,14 @@ public abstract class AbstractListActivity extends ActionBarListActivity impleme
initUpAction();
}
- protected void initUpAction()
- {
+ protected void initUpAction() {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId()== android.R.id.home) {
- ActivityMixin.navigateToMain(this);
- return true;
+ return ActivityMixin.navigateUp(this);
}
return super.onOptionsItemSelected(item);
}
diff --git a/main/src/cgeo/geocaching/activity/ActivityMixin.java b/main/src/cgeo/geocaching/activity/ActivityMixin.java
index c43e1bd..f699112 100644
--- a/main/src/cgeo/geocaching/activity/ActivityMixin.java
+++ b/main/src/cgeo/geocaching/activity/ActivityMixin.java
@@ -1,15 +1,16 @@
package cgeo.geocaching.activity;
-import cgeo.geocaching.MainActivity;
import cgeo.geocaching.R;
import cgeo.geocaching.compatibility.Compatibility;
import cgeo.geocaching.settings.Settings;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.NonNull;
import android.app.Activity;
import android.content.Intent;
import android.support.v4.app.NavUtils;
+import android.support.v4.app.TaskStackBuilder;
import android.support.v7.app.ActionBarActivity;
import android.view.Gravity;
import android.view.WindowManager;
@@ -114,8 +115,26 @@ public final class ActivityMixin {
editText.setSelection(newCursor);
}
- public static void navigateToMain(Activity activity) {
- final Intent main = new Intent(activity, MainActivity.class);
- NavUtils.navigateUpTo(activity, main);
+ public static boolean navigateUp(@NonNull final Activity activity) {
+ // see http://developer.android.com/training/implementing-navigation/ancestral.html
+ Intent upIntent = NavUtils.getParentActivityIntent(activity);
+ if (upIntent == null) {
+ activity.finish();
+ return true;
+ }
+ if (NavUtils.shouldUpRecreateTask(activity, upIntent)) {
+ // This activity is NOT part of this app's task, so create a new task
+ // when navigating up, with a synthesized back stack.
+ TaskStackBuilder.create(activity)
+ // Add all of this activity's parents to the back stack
+ .addNextIntentWithParentStack(upIntent)
+ // Navigate up to the closest parent
+ .startActivities();
+ } else {
+ // This activity is part of this app's task, so simply
+ // navigate up to the logical parent activity.
+ NavUtils.navigateUpTo(activity, upIntent);
+ }
+ return true;
}
}
diff --git a/main/src/cgeo/geocaching/activity/IAbstractActivity.java b/main/src/cgeo/geocaching/activity/IAbstractActivity.java
index 7ca2322..4fb6a2a 100644
--- a/main/src/cgeo/geocaching/activity/IAbstractActivity.java
+++ b/main/src/cgeo/geocaching/activity/IAbstractActivity.java
@@ -1,11 +1,8 @@
package cgeo.geocaching.activity;
-import android.view.View;
public interface IAbstractActivity {
- public void goHome(View view);
-
public void showToast(String text);
public void showShortToast(String text);
diff --git a/main/src/cgeo/geocaching/maps/AbstractMap.java b/main/src/cgeo/geocaching/maps/AbstractMap.java
index aff9c75..2eceadb 100644
--- a/main/src/cgeo/geocaching/maps/AbstractMap.java
+++ b/main/src/cgeo/geocaching/maps/AbstractMap.java
@@ -9,7 +9,6 @@ import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
-import android.view.View;
import android.view.Window;
/**
@@ -70,8 +69,6 @@ public abstract class AbstractMap {
return mapActivity.superOnOptionsItemSelected(item);
}
- public abstract void goHome(View view);
-
public abstract void onSaveInstanceState(final Bundle outState);
}
diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java
index 9c67723..978d3af 100644
--- a/main/src/cgeo/geocaching/maps/CGeoMap.java
+++ b/main/src/cgeo/geocaching/maps/CGeoMap.java
@@ -706,7 +706,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
final int id = item.getItemId();
switch (id) {
case android.R.id.home:
- ActivityMixin.navigateToMain(activity);
+ ActivityMixin.navigateUp(activity);
return true;
case R.id.menu_trail_mode:
Settings.setMapTrail(!Settings.isMapTrail());
@@ -1593,12 +1593,6 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
return mapItemFactory.getGeoPointBase(coords);
}
- // close activity and open homescreen
- @Override
- public void goHome(View view) {
- ActivityMixin.navigateToMain(activity);
- }
-
@Override
public View makeView() {
ImageView imageView = new ImageView(activity);
diff --git a/main/src/cgeo/geocaching/maps/google/GoogleMapActivity.java b/main/src/cgeo/geocaching/maps/google/GoogleMapActivity.java
index 8a1bad6..2a29cc9 100644
--- a/main/src/cgeo/geocaching/maps/google/GoogleMapActivity.java
+++ b/main/src/cgeo/geocaching/maps/google/GoogleMapActivity.java
@@ -98,8 +98,8 @@ public class GoogleMapActivity extends MapActivity implements MapActivityImpl, F
}
@Override
- public void goHome(View view) {
- ActivityMixin.navigateToMain(this);
+ public void navigateUp(View view) {
+ ActivityMixin.navigateUp(this);
}
@Override
diff --git a/main/src/cgeo/geocaching/maps/interfaces/MapActivityImpl.java b/main/src/cgeo/geocaching/maps/interfaces/MapActivityImpl.java
index 08309f4..3596d5f 100644
--- a/main/src/cgeo/geocaching/maps/interfaces/MapActivityImpl.java
+++ b/main/src/cgeo/geocaching/maps/interfaces/MapActivityImpl.java
@@ -33,5 +33,5 @@ public interface MapActivityImpl {
boolean superOnOptionsItemSelected(MenuItem item);
- public abstract void goHome(View view);
+ public abstract void navigateUp(View view);
}
diff --git a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapActivity.java b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapActivity.java
index a0384b8..94213ba 100644
--- a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapActivity.java
+++ b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapActivity.java
@@ -1,5 +1,6 @@
package cgeo.geocaching.maps.mapsforge;
+import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.activity.FilteredActivity;
import cgeo.geocaching.maps.AbstractMap;
import cgeo.geocaching.maps.CGeoMap;
@@ -111,10 +112,9 @@ public class MapsforgeMapActivity extends MapActivity implements MapActivityImpl
return super.onPrepareOptionsMenu(menu);
}
- // close activity and open homescreen
@Override
- public void goHome(View view) {
- mapBase.goHome(view);
+ public void navigateUp(View view) {
+ ActivityMixin.navigateUp(this);
}
@Override
diff --git a/main/src/cgeo/geocaching/maps/mapsforge/v024/MapsforgeMapActivity024.java b/main/src/cgeo/geocaching/maps/mapsforge/v024/MapsforgeMapActivity024.java
index 33ed30e..daeb2b8 100644
--- a/main/src/cgeo/geocaching/maps/mapsforge/v024/MapsforgeMapActivity024.java
+++ b/main/src/cgeo/geocaching/maps/mapsforge/v024/MapsforgeMapActivity024.java
@@ -1,5 +1,6 @@
package cgeo.geocaching.maps.mapsforge.v024;
+import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.activity.FilteredActivity;
import cgeo.geocaching.maps.AbstractMap;
import cgeo.geocaching.maps.CGeoMap;
@@ -111,10 +112,9 @@ public class MapsforgeMapActivity024 extends MapActivity implements MapActivityI
return super.onPrepareOptionsMenu(menu);
}
- // close activity and open homescreen
@Override
- public void goHome(View view) {
- mapBase.goHome(view);
+ public void navigateUp(View view) {
+ ActivityMixin.navigateUp(this);
}
@Override