aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/activity/ActivityMixin.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/activity/ActivityMixin.java')
-rw-r--r--main/src/cgeo/geocaching/activity/ActivityMixin.java72
1 files changed, 45 insertions, 27 deletions
diff --git a/main/src/cgeo/geocaching/activity/ActivityMixin.java b/main/src/cgeo/geocaching/activity/ActivityMixin.java
index bfd45da..e2181d0 100644
--- a/main/src/cgeo/geocaching/activity/ActivityMixin.java
+++ b/main/src/cgeo/geocaching/activity/ActivityMixin.java
@@ -1,55 +1,45 @@
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.os.Build;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.app.NavUtils;
+import android.support.v4.app.TaskStackBuilder;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.ActionBarActivity;
import android.view.Gravity;
-import android.view.View;
import android.view.WindowManager;
import android.widget.EditText;
-import android.widget.ProgressBar;
-import android.widget.TextView;
import android.widget.Toast;
public final class ActivityMixin {
- public final static void goHome(final Activity fromActivity) {
- final Intent intent = new Intent(fromActivity, MainActivity.class);
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
-
- fromActivity.startActivity(intent);
- fromActivity.finish();
- }
-
public static void setTitle(final Activity activity, final CharSequence text) {
if (StringUtils.isBlank(text)) {
return;
}
- final TextView title = (TextView) activity.findViewById(R.id.actionbar_title);
- if (title != null) {
- title.setText(text);
+ if (activity instanceof ActionBarActivity) {
+ final ActionBar actionBar = ((ActionBarActivity) activity).getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.setTitle(text);
+ }
}
}
- public static void showProgress(final Activity activity, final boolean show) {
+ public static void showProgress(final ActionBarActivity activity, final boolean show) {
if (activity == null) {
return;
}
- final ProgressBar progress = (ProgressBar) activity.findViewById(R.id.actionbar_progress);
- if (show) {
- progress.setVisibility(View.VISIBLE);
- } else {
- progress.setVisibility(View.GONE);
- }
+ activity.setSupportProgressBarIndeterminateVisibility(show);
+
}
public static void setTheme(final Activity activity) {
@@ -62,10 +52,10 @@ public final class ActivityMixin {
public static int getDialogTheme() {
// Light theme dialogs don't work on Android Api < 11
- if (Settings.isLightSkin() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+ // The compat theme should fix this
+ if (Settings.isLightSkin()) {
return R.style.popup_light;
}
-
return R.style.popup_dark;
}
@@ -98,7 +88,12 @@ public final class ActivityMixin {
}
public static void invalidateOptionsMenu(Activity activity) {
- Compatibility.invalidateOptionsMenu(activity);
+ if (activity instanceof ActionBarActivity) {
+ ((ActionBarActivity) activity).supportInvalidateOptionsMenu();
+ }
+ else {
+ ActivityCompat.invalidateOptionsMenu(activity);
+ }
}
/**
@@ -127,4 +122,27 @@ public final class ActivityMixin {
int newCursor = moveCursor ? start + completeText.length() : start;
editText.setSelection(newCursor);
}
+
+ 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;
+ }
}