diff options
Diffstat (limited to 'main/src/cgeo/geocaching/activity')
6 files changed, 125 insertions, 38 deletions
diff --git a/main/src/cgeo/geocaching/activity/AbstractActionBarActivity.java b/main/src/cgeo/geocaching/activity/AbstractActionBarActivity.java new file mode 100644 index 0000000..63100b8 --- /dev/null +++ b/main/src/cgeo/geocaching/activity/AbstractActionBarActivity.java @@ -0,0 +1,34 @@ +package cgeo.geocaching.activity; + +import android.os.Bundle; + +/** + * Classes actually having an ActionBar (as opposed to the Dialog activities) + */ +public class AbstractActionBarActivity extends AbstractActivity { + @Override + protected void onCreate(Bundle savedInstanceState, int resourceLayoutID) { + super.onCreate(savedInstanceState, resourceLayoutID); + initUpAction(); + showProgress(false); + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + initUpAction(); + showProgress(false); + } + + @Override + protected void onCreate(Bundle savedInstanceState, int resourceLayoutID, boolean useDialogTheme) { + super.onCreate(savedInstanceState, resourceLayoutID, useDialogTheme); + initUpAction(); + showProgress(false); + } + + private void initUpAction() + { + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + } +} diff --git a/main/src/cgeo/geocaching/activity/AbstractActivity.java b/main/src/cgeo/geocaching/activity/AbstractActivity.java index 542dd05..42eb825 100644 --- a/main/src/cgeo/geocaching/activity/AbstractActivity.java +++ b/main/src/cgeo/geocaching/activity/AbstractActivity.java @@ -13,20 +13,22 @@ import cgeo.geocaching.utils.TranslationUtils; import org.apache.commons.lang3.StringUtils; +import rx.Subscription; +import rx.subscriptions.Subscriptions; + import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; -import android.support.v4.app.FragmentActivity; +import android.support.v7.app.ActionBarActivity; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; +import android.view.Window; import android.widget.EditText; -import rx.Subscription; -import rx.subscriptions.Subscriptions; import java.util.Locale; -public abstract class AbstractActivity extends FragmentActivity implements IAbstractActivity { +public abstract class AbstractActivity extends ActionBarActivity implements IAbstractActivity { protected CgeoApplication app = null; protected Resources res = null; @@ -43,11 +45,7 @@ public abstract class AbstractActivity extends FragmentActivity implements IAbst @Override final public void goHome(final View view) { - ActivityMixin.goHome(this); - } - - final protected void setTitle(final String title) { - ActivityMixin.setTitle(this, title); + ActivityMixin.navigateToMain(this); } final protected void showProgress(final boolean show) { @@ -71,7 +69,19 @@ public abstract class AbstractActivity extends FragmentActivity implements IAbst @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); + initializeCommonFields(); + + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getItemId()== android.R.id.home) { + ActivityMixin.navigateToMain(this); + return true; + } + return super.onOptionsItemSelected(item); } public void onResume(final Subscription resumeSubscription) { diff --git a/main/src/cgeo/geocaching/activity/AbstractListActivity.java b/main/src/cgeo/geocaching/activity/AbstractListActivity.java index a5d5c14..eaa8a96 100644 --- a/main/src/cgeo/geocaching/activity/AbstractListActivity.java +++ b/main/src/cgeo/geocaching/activity/AbstractListActivity.java @@ -4,10 +4,11 @@ import cgeo.geocaching.CgeoApplication; import android.content.res.Resources; import android.os.Bundle; -import android.support.v4.app.FragmentListActivity; +import android.view.MenuItem; import android.view.View; +import android.view.Window; -public abstract class AbstractListActivity extends FragmentListActivity implements +public abstract class AbstractListActivity extends ActionBarListActivity implements IAbstractActivity { private boolean keepScreenOn = false; @@ -25,7 +26,7 @@ public abstract class AbstractListActivity extends FragmentListActivity implemen @Override final public void goHome(View view) { - ActivityMixin.goHome(this); + ActivityMixin.navigateToMain(this); } final public void showProgress(final boolean show) { @@ -40,7 +41,7 @@ public abstract class AbstractListActivity extends FragmentListActivity implemen public final void showToast(String text) { ActivityMixin.showToast(this, text); } - + @Override public final void showShortToast(String text) { ActivityMixin.showShortToast(this, text); @@ -49,7 +50,24 @@ public abstract class AbstractListActivity extends FragmentListActivity implemen @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); + initializeCommonFields(); + 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 super.onOptionsItemSelected(item); } private void initializeCommonFields() { diff --git a/main/src/cgeo/geocaching/activity/AbstractViewPagerActivity.java b/main/src/cgeo/geocaching/activity/AbstractViewPagerActivity.java index 6e2900d..e98c935 100644 --- a/main/src/cgeo/geocaching/activity/AbstractViewPagerActivity.java +++ b/main/src/cgeo/geocaching/activity/AbstractViewPagerActivity.java @@ -30,7 +30,7 @@ import java.util.Map; * Enum listing all available pages of this activity. The pages available at a certain point of time are * defined by overriding {@link #getOrderedPages()}. */ -public abstract class AbstractViewPagerActivity<Page extends Enum<Page>> extends AbstractActivity { +public abstract class AbstractViewPagerActivity<Page extends Enum<Page>> extends AbstractActionBarActivity { /** * A {@link List} of all available pages. diff --git a/main/src/cgeo/geocaching/activity/ActionBarListActivity.java b/main/src/cgeo/geocaching/activity/ActionBarListActivity.java new file mode 100644 index 0000000..07c7ec3 --- /dev/null +++ b/main/src/cgeo/geocaching/activity/ActionBarListActivity.java @@ -0,0 +1,34 @@ +package cgeo.geocaching.activity; + +import android.support.v7.app.ActionBarActivity; +import android.widget.HeaderViewListAdapter; +import android.widget.ListAdapter; +import android.widget.ListView; + +/** + * Compatbility Class until cgeo switches from ListActivities to ListFragments + */ +public class ActionBarListActivity extends ActionBarActivity { + + private ListView mListView; + protected ListView getListView() { + if (mListView == null) { + mListView = (ListView) findViewById(android.R.id.list); + } + return mListView; + } + + protected void setListAdapter(ListAdapter adapter) { + getListView().setAdapter(adapter); + } + + protected ListAdapter getListAdapter() { + ListAdapter adapter = getListView().getAdapter(); + if (adapter instanceof HeaderViewListAdapter) { + return ((HeaderViewListAdapter)adapter).getWrappedAdapter(); + } + return adapter; + } +} + + diff --git a/main/src/cgeo/geocaching/activity/ActivityMixin.java b/main/src/cgeo/geocaching/activity/ActivityMixin.java index bfd45da..c43e1bd 100644 --- a/main/src/cgeo/geocaching/activity/ActivityMixin.java +++ b/main/src/cgeo/geocaching/activity/ActivityMixin.java @@ -9,47 +9,33 @@ import org.apache.commons.lang3.StringUtils; import android.app.Activity; import android.content.Intent; -import android.os.Build; +import android.support.v4.app.NavUtils; +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 (((ActionBarActivity) activity).getSupportActionBar() != null) { + ((ActionBarActivity) activity).getSupportActionBar().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 +48,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; } @@ -127,4 +113,9 @@ public final class ActivityMixin { int newCursor = moveCursor ? start + completeText.length() : start; editText.setSelection(newCursor); } + + public static void navigateToMain(Activity activity) { + final Intent main = new Intent(activity, MainActivity.class); + NavUtils.navigateUpTo(activity, main); + } } |
