From 887432b59967dd08c0f9d28e2aa2549af223d97d Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 5 Aug 2013 09:50:30 -0500 Subject: [PATCH] Removing third party cruft --- actionbarsherlock/plugins/README.md | 8 - .../plugins/maps/AndroidManifest.xml | 13 - actionbarsherlock/plugins/maps/README.md | 18 - actionbarsherlock/plugins/maps/checkstyle.xml | 115 -- actionbarsherlock/plugins/maps/pom.xml | 75 - .../plugins/maps/project.properties | 13 - .../support/v4/app/FragmentMapActivity.java | 1362 ----------------- actionbarsherlock/plugins/maps/update.py | 47 - actionbarsherlock/plugins/pom.xml | 22 - .../plugins/preference/AndroidManifest.xml | 13 - .../plugins/preference/README.md | 5 - .../plugins/preference/checkstyle.xml | 115 -- actionbarsherlock/plugins/preference/pom.xml | 69 - .../plugins/preference/project.properties | 13 - .../v4/app/SherlockPreferenceActivity.java | 1362 ----------------- greendroid/GDCatalog/AndroidManifest.xml | 67 - greendroid/GDCatalog/assets/LICENSE.txt | 56 - greendroid/GDCatalog/default.properties | 14 - greendroid/GDCatalog/res/color/link.xml | 34 - .../res/drawable-hdpi/action_bar_divider.png | Bin 996 -> 0 bytes .../GDCatalog/res/drawable-hdpi/class1.jpg | Bin 3289 -> 0 bytes .../GDCatalog/res/drawable-hdpi/class2.jpg | Bin 3592 -> 0 bytes .../GDCatalog/res/drawable-hdpi/class3.jpg | Bin 4182 -> 0 bytes .../GDCatalog/res/drawable-hdpi/class4.jpg | Bin 3453 -> 0 bytes .../GDCatalog/res/drawable-hdpi/class5.jpg | Bin 4182 -> 0 bytes .../greendroid_application_logo_alt.png | Bin 13128 -> 0 bytes .../greendroid_application_logo_normal.png | Bin 9303 -> 0 bytes .../res/drawable-hdpi/greendroid_logo.png | Bin 23929 -> 0 bytes .../res/drawable-hdpi/ic_action_bar_info.png | Bin 676 -> 0 bytes .../res/drawable-hdpi/ic_gdcatalog.png | Bin 4269 -> 0 bytes .../res/drawable-hdpi/ic_title_export_alt.png | Bin 1895 -> 0 bytes .../drawable-hdpi/ic_title_export_default.png | Bin 550 -> 0 bytes .../res/drawable-hdpi/separator_bg.9.png | Bin 250 -> 0 bytes .../res/drawable-mdpi/action_bar_divider.png | Bin 1054 -> 0 bytes .../GDCatalog/res/drawable-mdpi/class1.jpg | Bin 1943 -> 0 bytes .../GDCatalog/res/drawable-mdpi/class2.jpg | Bin 2031 -> 0 bytes .../GDCatalog/res/drawable-mdpi/class3.jpg | Bin 2420 -> 0 bytes .../GDCatalog/res/drawable-mdpi/class4.jpg | Bin 1957 -> 0 bytes .../GDCatalog/res/drawable-mdpi/class5.jpg | Bin 2294 -> 0 bytes .../greendroid_application_logo_alt.png | Bin 9637 -> 0 bytes .../greendroid_application_logo_normal.png | Bin 6876 -> 0 bytes .../res/drawable-mdpi/greendroid_logo.png | Bin 14805 -> 0 bytes .../res/drawable-mdpi/ic_action_bar_info.png | Bin 794 -> 0 bytes .../res/drawable-mdpi/ic_gdcatalog.png | Bin 2932 -> 0 bytes .../res/drawable-mdpi/ic_title_export_alt.png | Bin 1899 -> 0 bytes .../drawable-mdpi/ic_title_export_default.png | Bin 1275 -> 0 bytes .../res/drawable-mdpi/separator_bg.9.png | Bin 202 -> 0 bytes .../res/drawable/action_bar_background.xml | 29 - .../drawable/greendroid_application_logo.xml | 34 - .../res/drawable/ic_title_export.xml | 42 - greendroid/GDCatalog/res/layout/about.xml | 48 - .../res/layout/headed_text_item_view.xml | 32 - greendroid/GDCatalog/res/layout/image.xml | 71 - .../GDCatalog/res/layout/image_item_view.xml | 42 - greendroid/GDCatalog/res/layout/info.xml | 102 -- .../GDCatalog/res/layout/quick_action.xml | 47 - .../res/layout/segmented_controls.xml | 39 - greendroid/GDCatalog/res/layout/text.xml | 27 - greendroid/GDCatalog/res/layout/web_view.xml | 25 - .../GDCatalog/res/values-en/strings.xml | 60 - .../GDCatalog/res/values-fr/strings.xml | 50 - greendroid/GDCatalog/res/values/dimens.xml | 25 - greendroid/GDCatalog/res/values/ids.xml | 27 - greendroid/GDCatalog/res/values/strings.xml | 60 - greendroid/GDCatalog/res/values/styles.xml | 30 - greendroid/GDCatalog/res/values/themes.xml | 40 - greendroid/GDCatalog/res/xml/items.xml | 65 - .../android/gdcatalog/AboutActivity.java | 35 - .../android/gdcatalog/ActionBarActivity.java | 76 - .../gdcatalog/AsyncImageViewListActivity.java | 170 -- .../android/gdcatalog/BasicItemActivity.java | 88 -- .../android/gdcatalog/CatalogActivity.java | 77 - .../android/gdcatalog/CatalogApplication.java | 34 - .../android/gdcatalog/InfoTabActivity.java | 49 - .../gdcatalog/QuickActionActivity.java | 117 -- .../android/gdcatalog/SegmentedActivity.java | 85 - .../SimpleAsyncImageViewActivity.java | 49 - .../gdcatalog/TabbedActionBarActivity.java | 71 - .../gdcatalog/TweakedItemViewActivity.java | 523 ------- .../android/gdcatalog/WebContentActivity.java | 40 - .../android/gdcatalog/XmlItemActivity.java | 38 - .../gdcatalog/widget/HeadedTextItem.java | 37 - .../gdcatalog/widget/HeadedTextItemView.java | 62 - .../GreenDroid-GoogleAPIs/AndroidManifest.xml | 23 - .../GreenDroid-GoogleAPIs/default.properties | 13 - .../src/greendroid/app/GDMapActivity.java | 256 ---- 86 files changed, 6159 deletions(-) delete mode 100644 actionbarsherlock/plugins/README.md delete mode 100644 actionbarsherlock/plugins/maps/AndroidManifest.xml delete mode 100644 actionbarsherlock/plugins/maps/README.md delete mode 100644 actionbarsherlock/plugins/maps/checkstyle.xml delete mode 100644 actionbarsherlock/plugins/maps/pom.xml delete mode 100644 actionbarsherlock/plugins/maps/project.properties delete mode 100644 actionbarsherlock/plugins/maps/src/android/support/v4/app/FragmentMapActivity.java delete mode 100644 actionbarsherlock/plugins/maps/update.py delete mode 100644 actionbarsherlock/plugins/pom.xml delete mode 100644 actionbarsherlock/plugins/preference/AndroidManifest.xml delete mode 100644 actionbarsherlock/plugins/preference/README.md delete mode 100644 actionbarsherlock/plugins/preference/checkstyle.xml delete mode 100644 actionbarsherlock/plugins/preference/pom.xml delete mode 100644 actionbarsherlock/plugins/preference/project.properties delete mode 100644 actionbarsherlock/plugins/preference/src/android/support/v4/app/SherlockPreferenceActivity.java delete mode 100644 greendroid/GDCatalog/AndroidManifest.xml delete mode 100644 greendroid/GDCatalog/assets/LICENSE.txt delete mode 100644 greendroid/GDCatalog/default.properties delete mode 100644 greendroid/GDCatalog/res/color/link.xml delete mode 100755 greendroid/GDCatalog/res/drawable-hdpi/action_bar_divider.png delete mode 100644 greendroid/GDCatalog/res/drawable-hdpi/class1.jpg delete mode 100644 greendroid/GDCatalog/res/drawable-hdpi/class2.jpg delete mode 100644 greendroid/GDCatalog/res/drawable-hdpi/class3.jpg delete mode 100644 greendroid/GDCatalog/res/drawable-hdpi/class4.jpg delete mode 100644 greendroid/GDCatalog/res/drawable-hdpi/class5.jpg delete mode 100644 greendroid/GDCatalog/res/drawable-hdpi/greendroid_application_logo_alt.png delete mode 100644 greendroid/GDCatalog/res/drawable-hdpi/greendroid_application_logo_normal.png delete mode 100644 greendroid/GDCatalog/res/drawable-hdpi/greendroid_logo.png delete mode 100644 greendroid/GDCatalog/res/drawable-hdpi/ic_action_bar_info.png delete mode 100644 greendroid/GDCatalog/res/drawable-hdpi/ic_gdcatalog.png delete mode 100644 greendroid/GDCatalog/res/drawable-hdpi/ic_title_export_alt.png delete mode 100644 greendroid/GDCatalog/res/drawable-hdpi/ic_title_export_default.png delete mode 100644 greendroid/GDCatalog/res/drawable-hdpi/separator_bg.9.png delete mode 100755 greendroid/GDCatalog/res/drawable-mdpi/action_bar_divider.png delete mode 100644 greendroid/GDCatalog/res/drawable-mdpi/class1.jpg delete mode 100644 greendroid/GDCatalog/res/drawable-mdpi/class2.jpg delete mode 100644 greendroid/GDCatalog/res/drawable-mdpi/class3.jpg delete mode 100644 greendroid/GDCatalog/res/drawable-mdpi/class4.jpg delete mode 100644 greendroid/GDCatalog/res/drawable-mdpi/class5.jpg delete mode 100644 greendroid/GDCatalog/res/drawable-mdpi/greendroid_application_logo_alt.png delete mode 100644 greendroid/GDCatalog/res/drawable-mdpi/greendroid_application_logo_normal.png delete mode 100644 greendroid/GDCatalog/res/drawable-mdpi/greendroid_logo.png delete mode 100644 greendroid/GDCatalog/res/drawable-mdpi/ic_action_bar_info.png delete mode 100644 greendroid/GDCatalog/res/drawable-mdpi/ic_gdcatalog.png delete mode 100644 greendroid/GDCatalog/res/drawable-mdpi/ic_title_export_alt.png delete mode 100644 greendroid/GDCatalog/res/drawable-mdpi/ic_title_export_default.png delete mode 100644 greendroid/GDCatalog/res/drawable-mdpi/separator_bg.9.png delete mode 100644 greendroid/GDCatalog/res/drawable/action_bar_background.xml delete mode 100644 greendroid/GDCatalog/res/drawable/greendroid_application_logo.xml delete mode 100644 greendroid/GDCatalog/res/drawable/ic_title_export.xml delete mode 100644 greendroid/GDCatalog/res/layout/about.xml delete mode 100644 greendroid/GDCatalog/res/layout/headed_text_item_view.xml delete mode 100644 greendroid/GDCatalog/res/layout/image.xml delete mode 100644 greendroid/GDCatalog/res/layout/image_item_view.xml delete mode 100644 greendroid/GDCatalog/res/layout/info.xml delete mode 100644 greendroid/GDCatalog/res/layout/quick_action.xml delete mode 100644 greendroid/GDCatalog/res/layout/segmented_controls.xml delete mode 100644 greendroid/GDCatalog/res/layout/text.xml delete mode 100644 greendroid/GDCatalog/res/layout/web_view.xml delete mode 100644 greendroid/GDCatalog/res/values-en/strings.xml delete mode 100644 greendroid/GDCatalog/res/values-fr/strings.xml delete mode 100644 greendroid/GDCatalog/res/values/dimens.xml delete mode 100644 greendroid/GDCatalog/res/values/ids.xml delete mode 100644 greendroid/GDCatalog/res/values/strings.xml delete mode 100644 greendroid/GDCatalog/res/values/styles.xml delete mode 100644 greendroid/GDCatalog/res/values/themes.xml delete mode 100644 greendroid/GDCatalog/res/xml/items.xml delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/AboutActivity.java delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/ActionBarActivity.java delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/AsyncImageViewListActivity.java delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/BasicItemActivity.java delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/CatalogActivity.java delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/CatalogApplication.java delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/InfoTabActivity.java delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/QuickActionActivity.java delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/SegmentedActivity.java delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/SimpleAsyncImageViewActivity.java delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/TabbedActionBarActivity.java delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/TweakedItemViewActivity.java delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/WebContentActivity.java delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/XmlItemActivity.java delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/widget/HeadedTextItem.java delete mode 100644 greendroid/GDCatalog/src/com/cyrilmottier/android/gdcatalog/widget/HeadedTextItemView.java delete mode 100644 greendroid/GreenDroid-GoogleAPIs/AndroidManifest.xml delete mode 100644 greendroid/GreenDroid-GoogleAPIs/default.properties delete mode 100644 greendroid/GreenDroid-GoogleAPIs/src/greendroid/app/GDMapActivity.java diff --git a/actionbarsherlock/plugins/README.md b/actionbarsherlock/plugins/README.md deleted file mode 100644 index 6c241e520..000000000 --- a/actionbarsherlock/plugins/README.md +++ /dev/null @@ -1,8 +0,0 @@ -ActionBarSherlock Plugins -========================= - -Modules provided in this folder are plugins which add functionality to the -ActionBarSherlock library. - -The requirements for implementing each pluging are detailed in the `README.md` -file in each plugin folder. diff --git a/actionbarsherlock/plugins/maps/AndroidManifest.xml b/actionbarsherlock/plugins/maps/AndroidManifest.xml deleted file mode 100644 index 7b80ceee3..000000000 --- a/actionbarsherlock/plugins/maps/AndroidManifest.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - diff --git a/actionbarsherlock/plugins/maps/README.md b/actionbarsherlock/plugins/maps/README.md deleted file mode 100644 index a45dd1ffb..000000000 --- a/actionbarsherlock/plugins/maps/README.md +++ /dev/null @@ -1,18 +0,0 @@ -ActionBarSherlock Plugin: Maps -============================== - -This plugin provides support for the Google API `MapView` widget through an -additional base activity, `FragmentMapActivity`. Your application must adhere -to all of the regular requirements of implementing the [Google Map View][1]. - -By using `FragmentMapActivity` you are afforded the use of fragments, loaders, -and the action bar--including support for using a `MapView` within a fragment. -You can find examples of these implementations in the 'demos' sample. - - - - - - - - [1]: http://developer.android.com/resources/tutorials/views/hello-mapview.html diff --git a/actionbarsherlock/plugins/maps/checkstyle.xml b/actionbarsherlock/plugins/maps/checkstyle.xml deleted file mode 100644 index 91bcb9a52..000000000 --- a/actionbarsherlock/plugins/maps/checkstyle.xml +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/actionbarsherlock/plugins/maps/pom.xml b/actionbarsherlock/plugins/maps/pom.xml deleted file mode 100644 index 24169c0e9..000000000 --- a/actionbarsherlock/plugins/maps/pom.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - 4.0.0 - - com.actionbarsherlock - plugin-maps - Plugin: Maps - jar - - - com.actionbarsherlock - parent-plugins - 3.5.0 - ../pom.xml - - - - - android - android - provided - - - - com.google.android.maps - maps - provided - - - - com.actionbarsherlock - library - ${project.version} - provided - - - - - ${apk.prefix}-${project.artifactId}-${project.version} - src - - - - com.jayway.maven.plugins.android.generation2 - maven-android-plugin - true - - - - org.apache.maven.plugins - maven-javadoc-plugin - - true - - - - - org.apache.maven.plugins - maven-checkstyle-plugin - - ${project.basedir}/checkstyle.xml - - - - verify - - checkstyle - - - - - - - diff --git a/actionbarsherlock/plugins/maps/project.properties b/actionbarsherlock/plugins/maps/project.properties deleted file mode 100644 index e5171db54..000000000 --- a/actionbarsherlock/plugins/maps/project.properties +++ /dev/null @@ -1,13 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system use, -# "ant.properties", and override values to adapt the script to your -# project structure. - -android.library=true -# Project target. -target=Google Inc.:Google APIs:13 -android.library.reference.1=../../library diff --git a/actionbarsherlock/plugins/maps/src/android/support/v4/app/FragmentMapActivity.java b/actionbarsherlock/plugins/maps/src/android/support/v4/app/FragmentMapActivity.java deleted file mode 100644 index 6bfe29c66..000000000 --- a/actionbarsherlock/plugins/maps/src/android/support/v4/app/FragmentMapActivity.java +++ /dev/null @@ -1,1362 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * Copyright (C) 2011 Jake Wharton - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.support.v4.app; - -import java.io.FileDescriptor; -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.HashMap; -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.content.res.Configuration; -import android.content.res.TypedArray; -import android.os.Build; -import android.os.Bundle; -import android.os.Handler; -import com.google.android.maps.MapActivity; -import android.os.Message; -import android.os.Parcelable; -import android.support.v4.view.ActionMode; -import android.support.v4.view.Menu; -import android.support.v4.view.MenuItem; -import android.support.v4.view.Window; -import android.util.AttributeSet; -import android.util.Log; -import android.view.KeyEvent; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewGroup.LayoutParams; -import com.actionbarsherlock.R; -import com.actionbarsherlock.internal.app.ActionBarImpl; -import com.actionbarsherlock.internal.app.ActionBarWrapper; -import com.actionbarsherlock.internal.view.menu.MenuBuilder; -import com.actionbarsherlock.internal.view.menu.MenuInflaterImpl; -import com.actionbarsherlock.internal.view.menu.MenuInflaterWrapper; -import com.actionbarsherlock.internal.view.menu.MenuItemImpl; -import com.actionbarsherlock.internal.view.menu.MenuItemWrapper; -import com.actionbarsherlock.internal.view.menu.MenuPresenter; -import com.actionbarsherlock.internal.view.menu.MenuWrapper; -import com.actionbarsherlock.internal.widget.ActionBarView; - -/** - * Base class for activities that want to use the support-based - * {@link android.support.v4.app.Fragment}, - * {@link android.support.v4.content.Loader}, and - * {@link android.support.v4.app.ActionBar} APIs. - * - *

When using this class as opposed to new platform's built-in fragment - * and loader support, you must use the {@link #getSupportFragmentManager()} - * and {@link #getSupportLoaderManager()} methods respectively to access - * those features. - * - *

Known limitations:

- *
    - *
  • When using the <fragment> tag, this implementation can not - * use the parent view's ID as the new fragment's ID. You must explicitly - * specify an ID (or tag) in the <fragment>.

    - *
  • Prior to Honeycomb (3.0), an activity's state was saved before pausing. - * Fragments are a significant amount of new state, and dynamic enough that one - * often wants them to change between pausing and stopping. These classes - * throw an exception if you try to change the fragment state after it has been - * saved, to avoid accidental loss of UI state. However this is too restrictive - * prior to Honeycomb, where the state is saved before pausing. To address this, - * when running on platforms prior to Honeycomb an exception will not be thrown - * if you change fragments between the state save and the activity being stopped. - * This means that in some cases if the activity is restored from its last saved - * state, this may be a snapshot slightly before what the user last saw.

    - *
- */ -public abstract class FragmentMapActivity extends MapActivity implements SupportActivity { - private static final String TAG = "FragmentMapActivity"; - private static final boolean DEBUG = false; - - private static final String FRAGMENTS_TAG = "android:support:fragments"; - - static final boolean IS_HONEYCOMB = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB; - - static final int MSG_REALLY_STOPPED = 1; - static final int MSG_RESUME_PENDING = 2; - - final SupportActivity.InternalCallbacks mInternalCallbacks = new SupportActivity.InternalCallbacks() { - @Override - void invalidateSupportFragmentIndex(int index) { - FragmentMapActivity.this.invalidateSupportFragmentIndex(index); - } - - @Override - LoaderManagerImpl getLoaderManager(int index, boolean started, boolean create) { - return FragmentMapActivity.this.getLoaderManager(index, started, create); - } - - @Override - Handler getHandler() { - return mHandler; - } - - @Override - FragmentManagerImpl getFragments() { - return mFragments; - } - - @Override - boolean getRetaining() { - return mRetaining; - } - }; - - final Handler mHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MSG_REALLY_STOPPED: - if (mStopped) { - doReallyStop(false); - } - break; - case MSG_RESUME_PENDING: - mFragments.dispatchResume(); - mFragments.execPendingActions(); - break; - default: - super.handleMessage(msg); - } - } - }; - final FragmentManagerImpl mFragments = new FragmentManagerImpl(); - - ViewGroup mDecor; - ViewGroup mContentParent; - ActionBar mActionBar; - ActionBarView mActionBarView; - long mWindowFlags = 0; - - android.view.MenuInflater mMenuInflater; - - MenuBuilder mSupportMenu; - final MenuBuilder.Callback mSupportMenuCallback = new MenuBuilder.Callback() { - @Override - public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item) { - return FragmentMapActivity.this.onMenuItemSelected(Window.FEATURE_OPTIONS_PANEL, item); - } - - @Override - public void onMenuModeChange(MenuBuilder menu) { - // No-op - } - }; - private final MenuPresenter.Callback mMenuPresenterCallback = new MenuPresenter.Callback() { - @Override - public boolean onOpenSubMenu(MenuBuilder subMenu) { - return false; - } - - @Override - public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { - } - }; - - /** Map between native options items and sherlock items (pre-3.0 only). */ - private HashMap mNativeItemMap; - /** Native menu item callback which proxies to our callback. */ - private final android.view.MenuItem.OnMenuItemClickListener mNativeItemListener = new android.view.MenuItem.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(android.view.MenuItem item) { - if (DEBUG) Log.d(TAG, "[mNativeItemListener.onMenuItemClick] item: " + item); - - final MenuItemImpl sherlockItem = mNativeItemMap.get(item); - if (sherlockItem != null) { - sherlockItem.invoke(); - } else { - Log.e(TAG, "Options item \"" + item + "\" not found in mapping"); - } - - return true; //Do not allow continuation of native handling - } - }; - - boolean mCreated; - boolean mResumed; - boolean mStopped; - boolean mReallyStopped; - boolean mRetaining; - - boolean mOptionsMenuInvalidated; - boolean mOptionsMenuCreateResult; - - boolean mCheckedForLoaderManager; - boolean mLoadersStarted; - HCSparseArray mAllLoaderManagers; - LoaderManagerImpl mLoaderManager; - - static final class NonConfigurationInstances { - Object activity; - Object custom; - HashMap children; - ArrayList fragments; - HCSparseArray loaders; - } - - static class FragmentTag { - public static final int[] Fragment = { - 0x01010003, 0x010100d0, 0x010100d1 - }; - public static final int Fragment_id = 1; - public static final int Fragment_name = 0; - public static final int Fragment_tag = 2; - } - - - - - - @Override - public SupportActivity.InternalCallbacks getInternalCallbacks() { - return mInternalCallbacks; - } - - @Override - public Activity asActivity() { - return this; - } - - private void initActionBar() { - if (DEBUG) Log.d(TAG, "[initActionBar]"); - - // Initializing the window decor can change window feature flags. - // Make sure that we have the correct set before performing the test below. - if (mDecor == null) { - installDecor(); - } - - if ((mActionBar != null) || !hasFeature(Window.FEATURE_ACTION_BAR) || isChild()) { - return; - } - - if (IS_HONEYCOMB) { - mActionBar = ActionBarWrapper.createFor(this); - } else { - mActionBar = new ActionBarImpl(this); - } - } - - private void installDecor() { - if (DEBUG) Log.d(TAG, "[installDecor]"); - - if (mDecor == null) { - if (IS_HONEYCOMB) { - mDecor = (ViewGroup)getWindow().getDecorView(); - } else { - mDecor = (ViewGroup)getWindow().getDecorView().findViewById(android.R.id.content); - } - } - if (mContentParent == null) { - if (IS_HONEYCOMB) { - mContentParent = (ViewGroup)mDecor.findViewById(android.R.id.content); - } else { - mContentParent = generateLayout(); - mActionBarView = (ActionBarView)mDecor.findViewById(R.id.abs__action_bar); - if (mActionBarView != null) { - if (mActionBarView.getTitle() == null) { - mActionBarView.setTitle(getTitle()); - } - if (hasFeature(Window.FEATURE_INDETERMINATE_PROGRESS)) { - mActionBarView.initIndeterminateProgress(); - } - } - - // Post the panel invalidate for later; avoid application onCreateOptionsMenu - // being called in the middle of onCreate or similar. - mDecor.post(new Runnable() { - @Override - public void run() { - //Invalidate if the panel menu hasn't been created before this. - if (mSupportMenu == null) { - invalidateOptionsMenu(); - } - } - }); - } - } - } - - private ViewGroup generateLayout() { - if (DEBUG) Log.d(TAG, "[generateLayout]"); - - // Apply data from current theme. - - TypedArray a = getTheme().obtainStyledAttributes(R.styleable.SherlockTheme); - - if (a.getBoolean(R.styleable.SherlockTheme_windowNoTitle, false)) { - requestWindowFeature(Window.FEATURE_NO_TITLE); - } else if (a.getBoolean(R.styleable.SherlockTheme_windowActionBar, false)) { - // Don't allow an action bar if there is no title. - requestWindowFeature(Window.FEATURE_ACTION_BAR); - } - - if (a.getBoolean(R.styleable.SherlockTheme_windowActionBarOverlay, false)) { - requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); - } - - if (a.getBoolean(R.styleable.SherlockTheme_windowActionModeOverlay, false)) { - requestWindowFeature(Window.FEATURE_ACTION_MODE_OVERLAY); - } - - a.recycle(); - - int layoutResource; - if (hasFeature(Window.FEATURE_ACTION_BAR)) { - if (hasFeature(Window.FEATURE_ACTION_BAR_OVERLAY)) { - layoutResource = R.layout.abs__screen_action_bar_overlay; - } else { - layoutResource = R.layout.abs__screen_action_bar; - } - //} else if (hasFeature(Window.FEATURE_ACTION_MODE_OVERLAY)) { - // layoutResource = R.layout.abs__screen_simple_overlay_action_mode; - } else { - layoutResource = R.layout.abs__screen_simple; - } - - View in = getLayoutInflater().inflate(layoutResource, null); - mDecor.addView(in, new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - - ViewGroup contentParent = (ViewGroup)mDecor.findViewById(R.id.abs__content); - if (contentParent == null) { - throw new RuntimeException("Couldn't find content container view"); - } - - //Make our new child the true content view (for fragments). VERY VOLATILE! - mDecor.setId(View.NO_ID); - contentParent.setId(android.R.id.content); - - return contentParent; - } - - private boolean hasFeature(long featureId) { - if (IS_HONEYCOMB) { - return getWindow().hasFeature((int)featureId); - } - return (mWindowFlags & (1 << featureId)) != 0; - } - - // ------------------------------------------------------------------------ - // HOOKS INTO ACTIVITY - // ------------------------------------------------------------------------ - - /** - * Enable extended window features. - * - * @param featureId The desired feature as defined in - * {@link android.support.v4.view.Window}. - * @return Returns {@code true} if the requested feature is supported and - * now enabled. - */ - @Override - public boolean requestWindowFeature(long featureId) { - if (!IS_HONEYCOMB) { - switch ((int)featureId) { - case (int)Window.FEATURE_ACTION_BAR: - case (int)Window.FEATURE_ACTION_BAR_OVERLAY: - case (int)Window.FEATURE_ACTION_MODE_OVERLAY: - case (int)Window.FEATURE_INDETERMINATE_PROGRESS: - mWindowFlags |= (1 << featureId); - return true; - } - } - return super.requestWindowFeature((int)featureId); - } - - @Override - public android.view.MenuInflater getMenuInflater() { - if (DEBUG) Log.d(TAG, "[getMenuInflater]"); - - if (mMenuInflater == null) { - initActionBar(); - } - if (IS_HONEYCOMB) { - if (DEBUG) Log.d(TAG, "getMenuInflater(): Wrapping native inflater."); - - //Wrap the native inflater so it can unwrap the native menu first - mMenuInflater = new MenuInflaterWrapper(this, super.getMenuInflater()); - } else { - if (DEBUG) Log.d(TAG, "getMenuInflater(): Returning support inflater."); - - //Use our custom menu inflater - mMenuInflater = new MenuInflaterImpl(this, super.getMenuInflater()); - } - - return mMenuInflater; - } - - @Override - public void setContentView(int layoutResId) { - if (DEBUG) Log.d(TAG, "[setContentView] layoutResId: " + layoutResId); - - if (mContentParent == null) { - installDecor(); - } else { - mContentParent.removeAllViews(); - } - getLayoutInflater().inflate(layoutResId, mContentParent); - - android.view.Window.Callback callback = getWindow().getCallback(); - if (callback != null) { - callback.onContentChanged(); - } - initActionBar(); - } - - @Override - public void setContentView(View view, LayoutParams params) { - if (DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params); - - if (mContentParent == null) { - installDecor(); - } else { - mContentParent.removeAllViews(); - } - mContentParent.addView(view, params); - - android.view.Window.Callback callback = getWindow().getCallback(); - if (callback != null) { - callback.onContentChanged(); - } - - initActionBar(); - } - - @Override - public void setContentView(View view) { - if (DEBUG) Log.d(TAG, "[setContentView] view: " + view); - - setContentView(view, new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - } - - @Override - public void addContentView(View view, ViewGroup.LayoutParams params) { - if (DEBUG) Log.d(TAG, "[addContentView] view: " + view + ", params: " + params); - - if (mContentParent == null) { - installDecor(); - } - mContentParent.addView(view, params); - - initActionBar(); - } - - @Override - public void setTitle(CharSequence title) { - if (IS_HONEYCOMB || (mActionBar == null)) { - super.setTitle(title); - } else { - getSupportActionBar().setTitle(title); - } - } - - @Override - public void setTitle(int titleId) { - if (IS_HONEYCOMB || (mActionBar == null)) { - super.setTitle(titleId); - } else { - getSupportActionBar().setTitle(titleId); - } - } - - /** - * Dispatch incoming result to the correct fragment. - */ - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - int index = requestCode>>16; - if (index != 0) { - index--; - if (mFragments.mActive == null || index < 0 || index >= mFragments.mActive.size()) { - Log.w(TAG, "Activity result fragment index out of range: 0x" - + Integer.toHexString(requestCode)); - return; - } - Fragment frag = mFragments.mActive.get(index); - if (frag == null) { - Log.w(TAG, "Activity result no fragment exists for index: 0x" - + Integer.toHexString(requestCode)); - } else { - frag.onActivityResult(requestCode&0xffff, resultCode, data); - } - return; - } - - super.onActivityResult(requestCode, resultCode, data); - } - - /** - * Take care of popping the fragment back stack or finishing the activity - * as appropriate. - */ - @Override - public void onBackPressed() { - if (!mFragments.popBackStackImmediate()) { - finish(); - } - } - - /** - * Dispatch configuration change to all fragments. - */ - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - mFragments.dispatchConfigurationChanged(newConfig); - } - - /** - * Perform initialization of all fragments and loaders. - */ - @Override - protected void onCreate(Bundle savedInstanceState) { - mFragments.attachActivity(this); - // Old versions of the platform didn't do this! - if (getLayoutInflater().getFactory() == null) { - getLayoutInflater().setFactory(this); - } - - super.onCreate(savedInstanceState); - - NonConfigurationInstances nc = (NonConfigurationInstances) - getLastNonConfigurationInstance(); - if (nc != null) { - mAllLoaderManagers = nc.loaders; - } - if (savedInstanceState != null) { - Parcelable p = savedInstanceState.getParcelable(FRAGMENTS_TAG); - mFragments.restoreAllState(p, nc != null ? nc.fragments : null); - } - mFragments.dispatchCreate(); - } - - /** - *

Initialize the contents of the Activity's standard options menu. You - * should place your menu items in to menu.

- * - *

The default implementation populates the menu with standard system - * menu items. These are placed in the {@link Menu.CATEGORY_SYSTEM} group - * so that they will be correctly ordered with application-defined menu - * items. Deriving classes should always call through to the base - * implementation.

- * - *

You can safely hold on to menu (and any items created from it), - * making modifications to it as desired, until the next time - * {@code onCreateOptionsMenu()} is called.

- * - *

When you add items to the menu, you can implement the Activity's - * {@link #onOptionsItemSelected(MenuItem)} method to handle them - * there.

- * - * @param menu The options menu in which you place your items. - * @return You must return true for the menu to be displayed; if you return - * false it will not be shown. - */ - @Override - public boolean onCreateOptionsMenu(Menu menu) { - if (DEBUG) Log.d(TAG, "onCreateOptionsMenu(Menu): Returning true"); - return true; - } - - @Override - public final boolean onCreateOptionsMenu(android.view.Menu menu) { - // Prior to Honeycomb, the framework can't invalidate the options - // menu, so we must always say we have one in case the app later - // invalidates it and needs to have it shown. - boolean result = true; - - if (IS_HONEYCOMB) { - if (DEBUG) Log.d(TAG, "onCreateOptionsMenu(android.view.Menu): Calling support method with wrapped native menu."); - MenuWrapper wrapped = new MenuWrapper(menu); - result = onCreateOptionsMenu(wrapped); - result |= mFragments.dispatchCreateOptionsMenu(wrapped, getMenuInflater()); - } - - if (DEBUG) Log.d(TAG, "onCreateOptionsMenu(android.view.Menu): Returning " + result); - return result; - } - - private boolean dispatchCreateOptionsMenu() { - if (DEBUG) Log.d(TAG, "[dispatchCreateOptionsMenu]"); - - boolean result = onCreateOptionsMenu(mSupportMenu); - result |= mFragments.dispatchCreateOptionsMenu(mSupportMenu, getMenuInflater()); - return result; - } - - /** - * Add support for inflating the <fragment> tag. - */ - @Override - public View onCreateView(String name, Context context, AttributeSet attrs) { - if (!"fragment".equals(name)) { - return super.onCreateView(name, context, attrs); - } - - String fname = attrs.getAttributeValue(null, "class"); - TypedArray a = context.obtainStyledAttributes(attrs, FragmentTag.Fragment); - if (fname == null) { - fname = a.getString(FragmentTag.Fragment_name); - } - int id = a.getResourceId(FragmentTag.Fragment_id, View.NO_ID); - String tag = a.getString(FragmentTag.Fragment_tag); - a.recycle(); - - View parent = null; // NOTE: no way to get parent pre-Honeycomb. - int containerId = parent != null ? parent.getId() : 0; - if (containerId == View.NO_ID && id == View.NO_ID && tag == null) { - throw new IllegalArgumentException(attrs.getPositionDescription() - + ": Must specify unique android:id, android:tag, or have a parent with an id for " + fname); - } - - // If we restored from a previous state, we may already have - // instantiated this fragment from the state and should use - // that instance instead of making a new one. - Fragment fragment = id != View.NO_ID ? mFragments.findFragmentById(id) : null; - if (fragment == null && tag != null) { - fragment = mFragments.findFragmentByTag(tag); - } - if (fragment == null && containerId != View.NO_ID) { - fragment = mFragments.findFragmentById(containerId); - } - - if (FragmentManagerImpl.DEBUG) Log.v(TAG, "onCreateView: id=0x" - + Integer.toHexString(id) + " fname=" + fname - + " existing=" + fragment); - if (fragment == null) { - fragment = Fragment.instantiate(this, fname); - fragment.mFromLayout = true; - fragment.mFragmentId = id != 0 ? id : containerId; - fragment.mContainerId = containerId; - fragment.mTag = tag; - fragment.mInLayout = true; - fragment.mFragmentManager = mFragments; - fragment.onInflate(this, attrs, fragment.mSavedFragmentState); - mFragments.addFragment(fragment, true); - - } else if (fragment.mInLayout) { - // A fragment already exists and it is not one we restored from - // previous state. - throw new IllegalArgumentException(attrs.getPositionDescription() - + ": Duplicate id 0x" + Integer.toHexString(id) - + ", tag " + tag + ", or parent id 0x" + Integer.toHexString(containerId) - + " with another fragment for " + fname); - } else { - // This fragment was retained from a previous instance; get it - // going now. - fragment.mInLayout = true; - // If this fragment is newly instantiated (either right now, or - // from last saved state), then give it the attributes to - // initialize itself. - if (!fragment.mRetaining) { - fragment.onInflate(this, attrs, fragment.mSavedFragmentState); - } - mFragments.moveToState(fragment); - } - - if (fragment.mView == null) { - throw new IllegalStateException("Fragment " + fname - + " did not create a view."); - } - if (id != 0) { - fragment.mView.setId(id); - } - if (fragment.mView.getTag() == null) { - fragment.mView.setTag(tag); - } - return fragment.mView; - } - - @Override - public void invalidateOptionsMenu() { - if (DEBUG) Log.d(TAG, "[invalidateOptionsMenu]"); - - if (IS_HONEYCOMB) { - HoneycombInvalidateOptionsMenu.invoke(this); - return; - } - - if (mSupportMenu == null) { - mSupportMenu = new MenuBuilder(this); - mSupportMenu.setCallback(mSupportMenuCallback); - } - - mSupportMenu.stopDispatchingItemsChanged(); - mSupportMenu.clear(); - - if (!dispatchCreateOptionsMenu()) { - if (mActionBar != null) { - ((ActionBarImpl)mActionBar).setMenu(null, mMenuPresenterCallback); - } - return; - } - - if (!dispatchPrepareOptionsMenu()) { - if (mActionBar != null) { - ((ActionBarImpl)mActionBar).setMenu(null, mMenuPresenterCallback); - } - mSupportMenu.startDispatchingItemsChanged(); - return; - } - - mSupportMenu.startDispatchingItemsChanged(); - - if (mActionBar != null) { - ((ActionBarImpl)mActionBar).setMenu(mSupportMenu, mMenuPresenterCallback); - } - } - - private static final class HoneycombInvalidateOptionsMenu { - static void invoke(Activity activity) { - activity.getWindow().invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL); - } - } - - /** - * Destroy all fragments and loaders. - */ - @Override - protected void onDestroy() { - super.onDestroy(); - - doReallyStop(false); - - mFragments.dispatchDestroy(); - if (mLoaderManager != null) { - mLoaderManager.doDestroy(); - } - } - - /** - * Take care of calling onBackPressed() for pre-Eclair platforms. - */ - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (android.os.Build.VERSION.SDK_INT < 5 /* ECLAIR */ - && keyCode == KeyEvent.KEYCODE_BACK - && event.getRepeatCount() == 0) { - // Take care of calling this method on earlier versions of - // the platform where it doesn't exist. - onBackPressed(); - return true; - } - - return super.onKeyDown(keyCode, event); - } - - /** - * Dispatch onLowMemory() to all fragments. - */ - @Override - public void onLowMemory() { - super.onLowMemory(); - mFragments.dispatchLowMemory(); - } - - /** - * Dispatch context and options menu to fragments. - */ - @Override - public final boolean onMenuItemSelected(int featureId, android.view.MenuItem item) { - if (super.onMenuItemSelected(featureId, item)) { - return true; - } - - switch (featureId) { - case Window.FEATURE_OPTIONS_PANEL: - return mFragments.dispatchOptionsItemSelected(new MenuItemWrapper(item)); - - case Window.FEATURE_CONTEXT_MENU: - return mFragments.dispatchContextItemSelected(new MenuItemWrapper(item)); - - default: - return false; - } - } - - @Override - public boolean onMenuItemSelected(int featureId, MenuItem item) { - if (onOptionsItemSelected(item)) { - return true; - } - - switch (featureId) { - case Window.FEATURE_OPTIONS_PANEL: - return mFragments.dispatchOptionsItemSelected(item); - - case Window.FEATURE_CONTEXT_MENU: - return mFragments.dispatchContextItemSelected(item); - - default: - return false; - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - return super.onOptionsItemSelected(item); - } - - @Override - public final boolean onOptionsItemSelected(android.view.MenuItem item) { - return onOptionsItemSelected(new MenuItemWrapper(item)); - } - - /** - * Call onOptionsMenuClosed() on fragments. - */ - @Override - public void onPanelClosed(int featureId, android.view.Menu menu) { - switch (featureId) { - case Window.FEATURE_OPTIONS_PANEL: - mFragments.dispatchOptionsMenuClosed(new MenuWrapper(menu)); - - if (!IS_HONEYCOMB && (getSupportActionBar() != null)) { - if (DEBUG) Log.d(TAG, "onPanelClosed(int, android.view.Menu): Dispatch menu visibility false to custom action bar."); - ((ActionBarImpl)mActionBar).onMenuVisibilityChanged(false); - } - break; - } - super.onPanelClosed(featureId, menu); - } - - /** - * Dispatch onPause() to fragments. - */ - @Override - protected void onPause() { - super.onPause(); - mResumed = false; - if (mHandler.hasMessages(MSG_RESUME_PENDING)) { - mHandler.removeMessages(MSG_RESUME_PENDING); - mFragments.dispatchResume(); - } - mFragments.dispatchPause(); - } - - /** - * Dispatch onResume() to fragments. - */ - @Override - protected void onResume() { - super.onResume(); - mHandler.sendEmptyMessage(MSG_RESUME_PENDING); - mResumed = true; - mFragments.execPendingActions(); - } - - /** - * Dispatch onResume() to fragments. - */ - @Override - protected void onPostResume() { - super.onPostResume(); - mHandler.removeMessages(MSG_RESUME_PENDING); - mFragments.dispatchResume(); - mFragments.execPendingActions(); - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - return true; - } - - @Override - public final boolean onPrepareOptionsMenu(android.view.Menu menu) { - if (IS_HONEYCOMB) { - if (DEBUG) Log.d(TAG, "onPrepareOptionsMenu(android.view.Menu): Calling support method with wrapped native menu."); - final MenuWrapper wrappedMenu = new MenuWrapper(menu); - boolean result = onPrepareOptionsMenu(wrappedMenu); - if (result) { - if (DEBUG) Log.d(TAG, "onPrepareOptionsMenu(android.view.Menu): Dispatching fragment method with wrapped native menu."); - mFragments.dispatchPrepareOptionsMenu(wrappedMenu); - } - return result; - } - - if (!dispatchPrepareOptionsMenu()) { - return false; - } - - if (mNativeItemMap == null) { - mNativeItemMap = new HashMap(); - } else { - mNativeItemMap.clear(); - } - - if (mSupportMenu != null) { - return mSupportMenu.bindOverflowToNative(menu, mNativeItemListener, mNativeItemMap); - } - return false; - } - - private boolean dispatchPrepareOptionsMenu() { - if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu]"); - - if (onPrepareOptionsMenu(mSupportMenu)) { - mFragments.dispatchPrepareOptionsMenu(mSupportMenu); - return true; - } - return false; - } - - /** - * Cause this Activity to be recreated with a new instance. This results in - * essentially the same flow as when the Activity is created due to a - * configuration change -- the current instance will go through its - * lifecycle to onDestroy() and a new instance then created after it. - */ - @Override - public void recreate() { - //This SUCKS! Figure out a way to call the super method and support Android 1.6 - /* - if (IS_HONEYCOMB) { - super.recreate(); - } else { - */ - final Intent intent = getIntent(); - intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); - - startActivity(intent); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) { - OverridePendingTransition.invoke(this); - } - - finish(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) { - OverridePendingTransition.invoke(this); - } - /* - } - */ - } - - private static final class OverridePendingTransition { - static void invoke(Activity activity) { - activity.overridePendingTransition(0, 0); - } - } - - /** - * Retain all appropriate fragment and loader state. You can NOT - * override this yourself! Use {@link #onRetainCustomNonConfigurationInstance()} - * if you want to retain your own state. - */ - @Override - public final Object onRetainNonConfigurationInstance() { - if (mStopped) { - doReallyStop(true); - } - - Object custom = onRetainCustomNonConfigurationInstance(); - - ArrayList fragments = mFragments.retainNonConfig(); - boolean retainLoaders = false; - if (mAllLoaderManagers != null) { - // prune out any loader managers that were already stopped and so - // have nothing useful to retain. - for (int i=mAllLoaderManagers.size()-1; i>=0; i--) { - LoaderManagerImpl lm = mAllLoaderManagers.valueAt(i); - if (lm.mRetaining) { - retainLoaders = true; - } else { - lm.doDestroy(); - mAllLoaderManagers.removeAt(i); - } - } - } - if (fragments == null && !retainLoaders && custom == null) { - return null; - } - - NonConfigurationInstances nci = new NonConfigurationInstances(); - nci.activity = null; - nci.custom = custom; - nci.children = null; - nci.fragments = fragments; - nci.loaders = mAllLoaderManagers; - return nci; - } - - /** - * Save all appropriate fragment state. - */ - @Override - protected void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - Parcelable p = mFragments.saveAllState(); - if (p != null) { - outState.putParcelable(FRAGMENTS_TAG, p); - } - } - - /** - * Dispatch onStart() to all fragments. Ensure any created loaders are - * now started. - */ - @Override - protected void onStart() { - super.onStart(); - - mStopped = false; - mReallyStopped = false; - mHandler.removeMessages(MSG_REALLY_STOPPED); - - if (!mCreated) { - mCreated = true; - mFragments.dispatchActivityCreated(); - } - - mFragments.noteStateNotSaved(); - mFragments.execPendingActions(); - - if (!mLoadersStarted) { - mLoadersStarted = true; - if (mLoaderManager != null) { - mLoaderManager.doStart(); - } else if (!mCheckedForLoaderManager) { - mLoaderManager = getLoaderManager(-1, mLoadersStarted, false); - } - mCheckedForLoaderManager = true; - } - // NOTE: HC onStart goes here. - - mFragments.dispatchStart(); - if (mAllLoaderManagers != null) { - for (int i=mAllLoaderManagers.size()-1; i>=0; i--) { - LoaderManagerImpl lm = mAllLoaderManagers.valueAt(i); - lm.finishRetain(); - lm.doReportStart(); - } - } - } - - /** - * Dispatch onStop() to all fragments. Ensure all loaders are stopped. - */ - @Override - protected void onStop() { - super.onStop(); - - mStopped = true; - mHandler.sendEmptyMessage(MSG_REALLY_STOPPED); - - mFragments.dispatchStop(); - } - - /** - *

Sets the visibility of the indeterminate progress bar in the - * title.

- * - *

In order for the progress bar to be shown, the feature must be - * requested via {@link #requestWindowFeature(long)}.

- * - *

This method must be used instead of - * {@link #setProgressBarIndeterminateVisibility(boolean)} for - * ActionBarSherlock. Pass {@link Boolean.TRUE} or - * {@link Boolean.FALSE} to ensure the appropriate one is called.

- * - * @param visible Whether to show the progress bars in the title. - */ - @Override - public void setProgressBarIndeterminateVisibility(Boolean visible) { - if (IS_HONEYCOMB || (mActionBar == null)) { - super.setProgressBarIndeterminateVisibility(visible); - } else { - mActionBarView.setProgressBarIndeterminateVisibility(visible); - } - } - - // ------------------------------------------------------------------------ - // NEW METHODS - // ------------------------------------------------------------------------ - - /** - * Use this instead of {@link #onRetainNonConfigurationInstance()}. - * Retrieve later with {@link #getLastCustomNonConfigurationInstance()}. - */ - public Object onRetainCustomNonConfigurationInstance() { - return null; - } - - /** - * Return the value previously returned from - * {@link #onRetainCustomNonConfigurationInstance()}. - */ - public Object getLastCustomNonConfigurationInstance() { - NonConfigurationInstances nc = (NonConfigurationInstances) - getLastNonConfigurationInstance(); - return nc != null ? nc.custom : null; - } - - /** - * @deprecated Use {@link invalidateOptionsMenu}. - */ - @Deprecated - void supportInvalidateOptionsMenu() { - invalidateOptionsMenu(); - } - - /** - * Print the Activity's state into the given stream. This gets invoked if - * you run "adb shell dumpsys activity ". - * - * @param prefix Desired prefix to prepend at each line of output. - * @param fd The raw file descriptor that the dump is being sent to. - * @param writer The PrintWriter to which you should dump your state. This will be - * closed for you after you return. - * @param args additional arguments to the dump request. - */ - @Override - public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { - if (IS_HONEYCOMB) { - //This can only work if we can call the super-class impl. :/ - //ActivityCompatHoneycomb.dump(this, prefix, fd, writer, args); - } - writer.print(prefix); writer.print("Local FragmentActivity "); - writer.print(Integer.toHexString(System.identityHashCode(this))); - writer.println(" State:"); - String innerPrefix = prefix + " "; - writer.print(innerPrefix); writer.print("mCreated="); - writer.print(mCreated); writer.print("mResumed="); - writer.print(mResumed); writer.print(" mStopped="); - writer.print(mStopped); writer.print(" mReallyStopped="); - writer.println(mReallyStopped); - writer.print(innerPrefix); writer.print("mLoadersStarted="); - writer.println(mLoadersStarted); - if (mLoaderManager != null) { - writer.print(prefix); writer.print("Loader Manager "); - writer.print(Integer.toHexString(System.identityHashCode(mLoaderManager))); - writer.println(":"); - mLoaderManager.dump(prefix + " ", fd, writer, args); - } - mFragments.dump(prefix, fd, writer, args); - } - - void doReallyStop(boolean retaining) { - if (!mReallyStopped) { - mReallyStopped = true; - mRetaining = retaining; - mHandler.removeMessages(MSG_REALLY_STOPPED); - onReallyStop(); - } - } - - /** - * Pre-HC, we didn't have a way to determine whether an activity was - * being stopped for a config change or not until we saw - * onRetainNonConfigurationInstance() called after onStop(). However - * we need to know this, to know whether to retain fragments. This will - * tell us what we need to know. - */ - void onReallyStop() { - if (mLoadersStarted) { - mLoadersStarted = false; - if (mLoaderManager != null) { - if (!mRetaining) { - mLoaderManager.doStop(); - } else { - mLoaderManager.doRetain(); - } - } - } - - mFragments.dispatchReallyStop(); - } - - // ------------------------------------------------------------------------ - // ACTION BAR AND ACTION MODE SUPPORT - // ------------------------------------------------------------------------ - - /** - * Retrieve a reference to this activity's action bar handler. - * - * @return The handler for the appropriate action bar, or null. - */ - @Override - public ActionBar getSupportActionBar() { - initActionBar(); - return mActionBar; - } - - /** - * Notifies the activity that an action mode has finished. Activity - * subclasses overriding this method should call the superclass - * implementation. - * - * @param mode The action mode that just finished. - */ - @Override - public void onActionModeFinished(ActionMode mode) { - } - - /** - * Notifies the Activity that an action mode has been started. Activity - * subclasses overriding this method should call the superclass - * implementation. - * - * @param mode The new action mode. - */ - @Override - public void onActionModeStarted(ActionMode mode) { - } - - /** - *

Give the Activity a chance to control the UI for an action mode - * requested by the system.

- * - *

Note: If you are looking for a notification callback that an action - * mode has been started for this activity, see - * {@link #onActionModeStarted(ActionMode)}.

- * - * @param callback The callback that should control the new action mode - * @return The new action mode, or null if the activity does not want to - * provide special handling for this action mode. (It will be handled by the - * system.) - */ - @Override - public ActionMode onWindowStartingActionMode(ActionMode.Callback callback) { - return null; - } - - /** - * Start an action mode. - * - * @param callback Callback that will manage lifecycle events for this - * context mode - * @return The ContextMode that was started, or null if it was cancelled - * @see android.support.v4.view.ActionMode - */ - @Override - public final ActionMode startActionMode(final ActionMode.Callback callback) { - //Give the activity override a chance to handle the action mode - ActionMode actionMode = onWindowStartingActionMode(callback); - - if (actionMode == null) { - //If the activity did not handle, send to action bar for platform- - //specific implementation - actionMode = mActionBar.startActionMode(callback); - } - if (actionMode != null) { - //Send the activity callback that our action mode was started - onActionModeStarted(actionMode); - } - - //Return to the caller - return actionMode; - } - - // ------------------------------------------------------------------------ - // FRAGMENT SUPPORT - // ------------------------------------------------------------------------ - - /** - * Called when a fragment is attached to the activity. - */ - @Override - public void onAttachFragment(Fragment fragment) { - } - - /** - * Return the FragmentManager for interacting with fragments associated - * with this activity. - */ - @Override - public FragmentManager getSupportFragmentManager() { - //PLEASE let no one be dumb enough to call this too soon... - initActionBar(); - return mFragments; - } - - /** - * Modifies the standard behavior to allow results to be delivered to fragments. - * This imposes a restriction that requestCode be <= 0xffff. - */ - @Override - public void startActivityForResult(Intent intent, int requestCode) { - if (requestCode != -1 && (requestCode&0xffff0000) != 0) { - throw new IllegalArgumentException("Can only use lower 16 bits for requestCode"); - } - super.startActivityForResult(intent, requestCode); - } - - /** - * Called by Fragment.startActivityForResult() to implement its behavior. - */ - @Override - public void startActivityFromFragment(Fragment fragment, Intent intent, - int requestCode) { - if (requestCode == -1) { - super.startActivityForResult(intent, -1); - return; - } - if ((requestCode&0xffff0000) != 0) { - throw new IllegalArgumentException("Can only use lower 16 bits for requestCode"); - } - super.startActivityForResult(intent, ((fragment.mIndex+1)<<16) + (requestCode&0xffff)); - } - - void invalidateSupportFragmentIndex(int index) { - //Log.v(TAG, "invalidateFragmentIndex: index=" + index); - if (mAllLoaderManagers != null) { - LoaderManagerImpl lm = mAllLoaderManagers.get(index); - if (lm != null && !lm.mRetaining) { - lm.doDestroy(); - mAllLoaderManagers.remove(index); - } - } - } - - // ------------------------------------------------------------------------ - // LOADER SUPPORT - // ------------------------------------------------------------------------ - - /** - * Return the LoaderManager for this fragment, creating it if needed. - */ - @Override - public LoaderManager getSupportLoaderManager() { - if (mLoaderManager != null) { - return mLoaderManager; - } - mCheckedForLoaderManager = true; - mLoaderManager = getLoaderManager(-1, mLoadersStarted, true); - return mLoaderManager; - } - - LoaderManagerImpl getLoaderManager(int index, boolean started, boolean create) { - if (mAllLoaderManagers == null) { - mAllLoaderManagers = new HCSparseArray(); - } - LoaderManagerImpl lm = mAllLoaderManagers.get(index); - if (lm == null) { - if (create) { - lm = new LoaderManagerImpl(this, started); - mAllLoaderManagers.put(index, lm); - } - } else { - lm.updateActivity(this); - } - return lm; - } -} diff --git a/actionbarsherlock/plugins/maps/update.py b/actionbarsherlock/plugins/maps/update.py deleted file mode 100644 index c3781c3a8..000000000 --- a/actionbarsherlock/plugins/maps/update.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python - -import os -import re - -dir_maps_base = os.path.dirname(os.path.realpath(__file__)) -dir_repo_base = os.path.dirname(os.path.dirname(dir_maps_base)) -dir_lib_base = os.path.join(dir_repo_base, 'library') - -path_to_source_activity = 'src/android/support/v4/app/FragmentActivity.java'.split('/') -path_to_dest_activity = 'src/android/support/v4/app/FragmentMapActivity.java'.split('/') - -file_source = os.path.join(dir_lib_base , *path_to_source_activity) -file_dest = os.path.join(dir_maps_base, *path_to_dest_activity) - -# Read in entire source file -code = None -with open(file_source) as f: - code = f.read() - - -code = code.split('\n') - -# Add MapActivity import -code.insert(31, 'import com.google.android.maps.MapActivity;') - -code = '\n'.join(code) - -# Class declaration -code = code.replace('class FragmentActivity extends Activity', 'abstract class FragmentMapActivity extends MapActivity') - -# TAG variable content -code = code.replace('"FragmentActivity"', '"FragmentMapActivity"') - -# Update inner class references -code = code.replace('FragmentActivity.this', 'FragmentMapActivity.this') - -# Class constructor -code = code.replace('FragmentActivity()', 'FragmentMapActivity()') - -# Javadoc -code = code.replace('Fragment, and Loader APIs.', 'Fragment, Loader, and Google Map APIs.') - - -# Exit stage left -with open(file_dest, 'w') as f: - f.write(code) diff --git a/actionbarsherlock/plugins/pom.xml b/actionbarsherlock/plugins/pom.xml deleted file mode 100644 index f5ea7faee..000000000 --- a/actionbarsherlock/plugins/pom.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - 4.0.0 - - com.actionbarsherlock - parent-plugins - Plugins (Parent) - pom - - - com.actionbarsherlock - parent - 3.5.0 - ../pom.xml - - - - maps - preference - - diff --git a/actionbarsherlock/plugins/preference/AndroidManifest.xml b/actionbarsherlock/plugins/preference/AndroidManifest.xml deleted file mode 100644 index 7b80ceee3..000000000 --- a/actionbarsherlock/plugins/preference/AndroidManifest.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - diff --git a/actionbarsherlock/plugins/preference/README.md b/actionbarsherlock/plugins/preference/README.md deleted file mode 100644 index 256445d04..000000000 --- a/actionbarsherlock/plugins/preference/README.md +++ /dev/null @@ -1,5 +0,0 @@ -ActionBarSherlock Plugin: Preference -==================================== - -This plugin provides support for an action bar enhanced preference screen -through an additional base activity, `SherlockPreferenceActivity`. diff --git a/actionbarsherlock/plugins/preference/checkstyle.xml b/actionbarsherlock/plugins/preference/checkstyle.xml deleted file mode 100644 index 91bcb9a52..000000000 --- a/actionbarsherlock/plugins/preference/checkstyle.xml +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/actionbarsherlock/plugins/preference/pom.xml b/actionbarsherlock/plugins/preference/pom.xml deleted file mode 100644 index 0f14dddbf..000000000 --- a/actionbarsherlock/plugins/preference/pom.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - 4.0.0 - - com.actionbarsherlock - plugin-preference - Plugin: Preference - jar - - - com.actionbarsherlock - parent-plugins - 3.5.0 - ../pom.xml - - - - - android - android - provided - - - - com.actionbarsherlock - library - ${project.version} - provided - - - - - ${apk.prefix}-${project.artifactId}-${project.version} - src - - - - com.jayway.maven.plugins.android.generation2 - maven-android-plugin - true - - - - org.apache.maven.plugins - maven-javadoc-plugin - - true - - - - - org.apache.maven.plugins - maven-checkstyle-plugin - - ${project.basedir}/checkstyle.xml - - - - verify - - checkstyle - - - - - - - diff --git a/actionbarsherlock/plugins/preference/project.properties b/actionbarsherlock/plugins/preference/project.properties deleted file mode 100644 index c632419fc..000000000 --- a/actionbarsherlock/plugins/preference/project.properties +++ /dev/null @@ -1,13 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system use, -# "ant.properties", and override values to adapt the script to your -# project structure. - -android.library=true -# Project target. -target=android-13 -android.library.reference.1=../../library diff --git a/actionbarsherlock/plugins/preference/src/android/support/v4/app/SherlockPreferenceActivity.java b/actionbarsherlock/plugins/preference/src/android/support/v4/app/SherlockPreferenceActivity.java deleted file mode 100644 index a3c4e4ce8..000000000 --- a/actionbarsherlock/plugins/preference/src/android/support/v4/app/SherlockPreferenceActivity.java +++ /dev/null @@ -1,1362 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * Copyright (C) 2011 Jake Wharton - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.support.v4.app; - -import java.io.FileDescriptor; -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.HashMap; -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.content.res.Configuration; -import android.content.res.TypedArray; -import android.os.Build; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.os.Parcelable; -import android.preference.PreferenceActivity; -import android.support.v4.view.ActionMode; -import android.support.v4.view.Menu; -import android.support.v4.view.MenuItem; -import android.support.v4.view.Window; -import android.util.AttributeSet; -import android.util.Log; -import android.view.KeyEvent; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewGroup.LayoutParams; -import com.actionbarsherlock.R; -import com.actionbarsherlock.internal.app.ActionBarImpl; -import com.actionbarsherlock.internal.app.ActionBarWrapper; -import com.actionbarsherlock.internal.view.menu.MenuBuilder; -import com.actionbarsherlock.internal.view.menu.MenuInflaterImpl; -import com.actionbarsherlock.internal.view.menu.MenuInflaterWrapper; -import com.actionbarsherlock.internal.view.menu.MenuItemImpl; -import com.actionbarsherlock.internal.view.menu.MenuItemWrapper; -import com.actionbarsherlock.internal.view.menu.MenuPresenter; -import com.actionbarsherlock.internal.view.menu.MenuWrapper; -import com.actionbarsherlock.internal.widget.ActionBarView; - -/** - * Base class for activities that want to use the support-based - * {@link android.support.v4.app.Fragment}, - * {@link android.support.v4.content.Loader}, - * {@link android.support.v4.app.ActionBar}, and Preference APIs. - * - *

When using this class as opposed to new platform's built-in fragment - * and loader support, you must use the {@link #getSupportFragmentManager()} - * and {@link #getSupportLoaderManager()} methods respectively to access - * those features. - * - *

Known limitations:

- *
    - *
  • When using the <fragment> tag, this implementation can not - * use the parent view's ID as the new fragment's ID. You must explicitly - * specify an ID (or tag) in the <fragment>.

    - *
  • Prior to Honeycomb (3.0), an activity's state was saved before pausing. - * Fragments are a significant amount of new state, and dynamic enough that one - * often wants them to change between pausing and stopping. These classes - * throw an exception if you try to change the fragment state after it has been - * saved, to avoid accidental loss of UI state. However this is too restrictive - * prior to Honeycomb, where the state is saved before pausing. To address this, - * when running on platforms prior to Honeycomb an exception will not be thrown - * if you change fragments between the state save and the activity being stopped. - * This means that in some cases if the activity is restored from its last saved - * state, this may be a snapshot slightly before what the user last saw.

    - *
- */ -public abstract class SherlockPreferenceActivity extends PreferenceActivity implements SupportActivity { - private static final String TAG = "SherlockPreferenceActivity"; - private static final boolean DEBUG = false; - - private static final String FRAGMENTS_TAG = "android:support:fragments"; - - static final boolean IS_HONEYCOMB = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB; - - static final int MSG_REALLY_STOPPED = 1; - static final int MSG_RESUME_PENDING = 2; - - final SupportActivity.InternalCallbacks mInternalCallbacks = new SupportActivity.InternalCallbacks() { - @Override - void invalidateSupportFragmentIndex(int index) { - SherlockPreferenceActivity.this.invalidateSupportFragmentIndex(index); - } - - @Override - LoaderManagerImpl getLoaderManager(int index, boolean started, boolean create) { - return SherlockPreferenceActivity.this.getLoaderManager(index, started, create); - } - - @Override - Handler getHandler() { - return mHandler; - } - - @Override - FragmentManagerImpl getFragments() { - return mFragments; - } - - @Override - boolean getRetaining() { - return mRetaining; - } - }; - - final Handler mHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MSG_REALLY_STOPPED: - if (mStopped) { - doReallyStop(false); - } - break; - case MSG_RESUME_PENDING: - mFragments.dispatchResume(); - mFragments.execPendingActions(); - break; - default: - super.handleMessage(msg); - } - } - }; - final FragmentManagerImpl mFragments = new FragmentManagerImpl(); - - ViewGroup mDecor; - ViewGroup mContentParent; - ActionBar mActionBar; - ActionBarView mActionBarView; - long mWindowFlags = 0; - - android.view.MenuInflater mMenuInflater; - - MenuBuilder mSupportMenu; - final MenuBuilder.Callback mSupportMenuCallback = new MenuBuilder.Callback() { - @Override - public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item) { - return SherlockPreferenceActivity.this.onMenuItemSelected(Window.FEATURE_OPTIONS_PANEL, item); - } - - @Override - public void onMenuModeChange(MenuBuilder menu) { - // No-op - } - }; - private final MenuPresenter.Callback mMenuPresenterCallback = new MenuPresenter.Callback() { - @Override - public boolean onOpenSubMenu(MenuBuilder subMenu) { - return false; - } - - @Override - public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { - } - }; - - /** Map between native options items and sherlock items (pre-3.0 only). */ - private HashMap mNativeItemMap; - /** Native menu item callback which proxies to our callback. */ - private final android.view.MenuItem.OnMenuItemClickListener mNativeItemListener = new android.view.MenuItem.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(android.view.MenuItem item) { - if (DEBUG) Log.d(TAG, "[mNativeItemListener.onMenuItemClick] item: " + item); - - final MenuItemImpl sherlockItem = mNativeItemMap.get(item); - if (sherlockItem != null) { - sherlockItem.invoke(); - } else { - Log.e(TAG, "Options item \"" + item + "\" not found in mapping"); - } - - return true; //Do not allow continuation of native handling - } - }; - - boolean mCreated; - boolean mResumed; - boolean mStopped; - boolean mReallyStopped; - boolean mRetaining; - - boolean mOptionsMenuInvalidated; - boolean mOptionsMenuCreateResult; - - boolean mCheckedForLoaderManager; - boolean mLoadersStarted; - HCSparseArray mAllLoaderManagers; - LoaderManagerImpl mLoaderManager; - - static final class NonConfigurationInstances { - Object activity; - Object custom; - HashMap children; - ArrayList fragments; - HCSparseArray loaders; - } - - static class FragmentTag { - public static final int[] Fragment = { - 0x01010003, 0x010100d0, 0x010100d1 - }; - public static final int Fragment_id = 1; - public static final int Fragment_name = 0; - public static final int Fragment_tag = 2; - } - - - - - - @Override - public SupportActivity.InternalCallbacks getInternalCallbacks() { - return mInternalCallbacks; - } - - @Override - public Activity asActivity() { - return this; - } - - private void initActionBar() { - if (DEBUG) Log.d(TAG, "[initActionBar]"); - - // Initializing the window decor can change window feature flags. - // Make sure that we have the correct set before performing the test below. - if (mDecor == null) { - installDecor(); - } - - if ((mActionBar != null) || !hasFeature(Window.FEATURE_ACTION_BAR) || isChild()) { - return; - } - - if (IS_HONEYCOMB) { - mActionBar = ActionBarWrapper.createFor(this); - } else { - mActionBar = new ActionBarImpl(this); - } - } - - private void installDecor() { - if (DEBUG) Log.d(TAG, "[installDecor]"); - - if (mDecor == null) { - if (IS_HONEYCOMB) { - mDecor = (ViewGroup)getWindow().getDecorView(); - } else { - mDecor = (ViewGroup)getWindow().getDecorView().findViewById(android.R.id.content); - } - } - if (mContentParent == null) { - if (IS_HONEYCOMB) { - mContentParent = (ViewGroup)mDecor.findViewById(android.R.id.content); - } else { - mContentParent = generateLayout(); - mActionBarView = (ActionBarView)mDecor.findViewById(R.id.abs__action_bar); - if (mActionBarView != null) { - if (mActionBarView.getTitle() == null) { - mActionBarView.setTitle(getTitle()); - } - if (hasFeature(Window.FEATURE_INDETERMINATE_PROGRESS)) { - mActionBarView.initIndeterminateProgress(); - } - } - - // Post the panel invalidate for later; avoid application onCreateOptionsMenu - // being called in the middle of onCreate or similar. - mDecor.post(new Runnable() { - @Override - public void run() { - //Invalidate if the panel menu hasn't been created before this. - if (mSupportMenu == null) { - invalidateOptionsMenu(); - } - } - }); - } - } - } - - private ViewGroup generateLayout() { - if (DEBUG) Log.d(TAG, "[generateLayout]"); - - // Apply data from current theme. - - TypedArray a = getTheme().obtainStyledAttributes(R.styleable.SherlockTheme); - - if (a.getBoolean(R.styleable.SherlockTheme_windowNoTitle, false)) { - requestWindowFeature(Window.FEATURE_NO_TITLE); - } else if (a.getBoolean(R.styleable.SherlockTheme_windowActionBar, false)) { - // Don't allow an action bar if there is no title. - requestWindowFeature(Window.FEATURE_ACTION_BAR); - } - - if (a.getBoolean(R.styleable.SherlockTheme_windowActionBarOverlay, false)) { - requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); - } - - if (a.getBoolean(R.styleable.SherlockTheme_windowActionModeOverlay, false)) { - requestWindowFeature(Window.FEATURE_ACTION_MODE_OVERLAY); - } - - a.recycle(); - - int layoutResource; - if (hasFeature(Window.FEATURE_ACTION_BAR)) { - if (hasFeature(Window.FEATURE_ACTION_BAR_OVERLAY)) { - layoutResource = R.layout.abs__screen_action_bar_overlay; - } else { - layoutResource = R.layout.abs__screen_action_bar; - } - //} else if (hasFeature(Window.FEATURE_ACTION_MODE_OVERLAY)) { - // layoutResource = R.layout.abs__screen_simple_overlay_action_mode; - } else { - layoutResource = R.layout.abs__screen_simple; - } - - View in = getLayoutInflater().inflate(layoutResource, null); - mDecor.addView(in, new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - - ViewGroup contentParent = (ViewGroup)mDecor.findViewById(R.id.abs__content); - if (contentParent == null) { - throw new RuntimeException("Couldn't find content container view"); - } - - //Make our new child the true content view (for fragments). VERY VOLATILE! - mDecor.setId(View.NO_ID); - contentParent.setId(android.R.id.content); - - return contentParent; - } - - private boolean hasFeature(long featureId) { - if (IS_HONEYCOMB) { - return getWindow().hasFeature((int)featureId); - } - return (mWindowFlags & (1 << featureId)) != 0; - } - - // ------------------------------------------------------------------------ - // HOOKS INTO ACTIVITY - // ------------------------------------------------------------------------ - - /** - * Enable extended window features. - * - * @param featureId The desired feature as defined in - * {@link android.support.v4.view.Window}. - * @return Returns {@code true} if the requested feature is supported and - * now enabled. - */ - @Override - public boolean requestWindowFeature(long featureId) { - if (!IS_HONEYCOMB) { - switch ((int)featureId) { - case (int)Window.FEATURE_ACTION_BAR: - case (int)Window.FEATURE_ACTION_BAR_OVERLAY: - case (int)Window.FEATURE_ACTION_MODE_OVERLAY: - case (int)Window.FEATURE_INDETERMINATE_PROGRESS: - mWindowFlags |= (1 << featureId); - return true; - } - } - return super.requestWindowFeature((int)featureId); - } - - @Override - public android.view.MenuInflater getMenuInflater() { - if (DEBUG) Log.d(TAG, "[getMenuInflater]"); - - if (mMenuInflater == null) { - initActionBar(); - } - if (IS_HONEYCOMB) { - if (DEBUG) Log.d(TAG, "getMenuInflater(): Wrapping native inflater."); - - //Wrap the native inflater so it can unwrap the native menu first - mMenuInflater = new MenuInflaterWrapper(this, super.getMenuInflater()); - } else { - if (DEBUG) Log.d(TAG, "getMenuInflater(): Returning support inflater."); - - //Use our custom menu inflater - mMenuInflater = new MenuInflaterImpl(this, super.getMenuInflater()); - } - - return mMenuInflater; - } - - @Override - public void setContentView(int layoutResId) { - if (DEBUG) Log.d(TAG, "[setContentView] layoutResId: " + layoutResId); - - if (mContentParent == null) { - installDecor(); - } else { - mContentParent.removeAllViews(); - } - getLayoutInflater().inflate(layoutResId, mContentParent); - - android.view.Window.Callback callback = getWindow().getCallback(); - if (callback != null) { - callback.onContentChanged(); - } - initActionBar(); - } - - @Override - public void setContentView(View view, LayoutParams params) { - if (DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params); - - if (mContentParent == null) { - installDecor(); - } else { - mContentParent.removeAllViews(); - } - mContentParent.addView(view, params); - - android.view.Window.Callback callback = getWindow().getCallback(); - if (callback != null) { - callback.onContentChanged(); - } - - initActionBar(); - } - - @Override - public void setContentView(View view) { - if (DEBUG) Log.d(TAG, "[setContentView] view: " + view); - - setContentView(view, new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - } - - @Override - public void addContentView(View view, ViewGroup.LayoutParams params) { - if (DEBUG) Log.d(TAG, "[addContentView] view: " + view + ", params: " + params); - - if (mContentParent == null) { - installDecor(); - } - mContentParent.addView(view, params); - - initActionBar(); - } - - @Override - public void setTitle(CharSequence title) { - if (IS_HONEYCOMB || (mActionBar == null)) { - super.setTitle(title); - } else { - getSupportActionBar().setTitle(title); - } - } - - @Override - public void setTitle(int titleId) { - if (IS_HONEYCOMB || (mActionBar == null)) { - super.setTitle(titleId); - } else { - getSupportActionBar().setTitle(titleId); - } - } - - /** - * Dispatch incoming result to the correct fragment. - */ - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - int index = requestCode>>16; - if (index != 0) { - index--; - if (mFragments.mActive == null || index < 0 || index >= mFragments.mActive.size()) { - Log.w(TAG, "Activity result fragment index out of range: 0x" - + Integer.toHexString(requestCode)); - return; - } - Fragment frag = mFragments.mActive.get(index); - if (frag == null) { - Log.w(TAG, "Activity result no fragment exists for index: 0x" - + Integer.toHexString(requestCode)); - } else { - frag.onActivityResult(requestCode&0xffff, resultCode, data); - } - return; - } - - super.onActivityResult(requestCode, resultCode, data); - } - - /** - * Take care of popping the fragment back stack or finishing the activity - * as appropriate. - */ - @Override - public void onBackPressed() { - if (!mFragments.popBackStackImmediate()) { - finish(); - } - } - - /** - * Dispatch configuration change to all fragments. - */ - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - mFragments.dispatchConfigurationChanged(newConfig); - } - - /** - * Perform initialization of all fragments and loaders. - */ - @Override - protected void onCreate(Bundle savedInstanceState) { - mFragments.attachActivity(this); - // Old versions of the platform didn't do this! - if (getLayoutInflater().getFactory() == null) { - getLayoutInflater().setFactory(this); - } - - super.onCreate(savedInstanceState); - - NonConfigurationInstances nc = (NonConfigurationInstances) - getLastNonConfigurationInstance(); - if (nc != null) { - mAllLoaderManagers = nc.loaders; - } - if (savedInstanceState != null) { - Parcelable p = savedInstanceState.getParcelable(FRAGMENTS_TAG); - mFragments.restoreAllState(p, nc != null ? nc.fragments : null); - } - mFragments.dispatchCreate(); - } - - /** - *

Initialize the contents of the Activity's standard options menu. You - * should place your menu items in to menu.

- * - *

The default implementation populates the menu with standard system - * menu items. These are placed in the {@link Menu.CATEGORY_SYSTEM} group - * so that they will be correctly ordered with application-defined menu - * items. Deriving classes should always call through to the base - * implementation.

- * - *

You can safely hold on to menu (and any items created from it), - * making modifications to it as desired, until the next time - * {@code onCreateOptionsMenu()} is called.

- * - *

When you add items to the menu, you can implement the Activity's - * {@link #onOptionsItemSelected(MenuItem)} method to handle them - * there.

- * - * @param menu The options menu in which you place your items. - * @return You must return true for the menu to be displayed; if you return - * false it will not be shown. - */ - @Override - public boolean onCreateOptionsMenu(Menu menu) { - if (DEBUG) Log.d(TAG, "onCreateOptionsMenu(Menu): Returning true"); - return true; - } - - @Override - public final boolean onCreateOptionsMenu(android.view.Menu menu) { - // Prior to Honeycomb, the framework can't invalidate the options - // menu, so we must always say we have one in case the app later - // invalidates it and needs to have it shown. - boolean result = true; - - if (IS_HONEYCOMB) { - if (DEBUG) Log.d(TAG, "onCreateOptionsMenu(android.view.Menu): Calling support method with wrapped native menu."); - MenuWrapper wrapped = new MenuWrapper(menu); - result = onCreateOptionsMenu(wrapped); - result |= mFragments.dispatchCreateOptionsMenu(wrapped, getMenuInflater()); - } - - if (DEBUG) Log.d(TAG, "onCreateOptionsMenu(android.view.Menu): Returning " + result); - return result; - } - - private boolean dispatchCreateOptionsMenu() { - if (DEBUG) Log.d(TAG, "[dispatchCreateOptionsMenu]"); - - boolean result = onCreateOptionsMenu(mSupportMenu); - result |= mFragments.dispatchCreateOptionsMenu(mSupportMenu, getMenuInflater()); - return result; - } - - /** - * Add support for inflating the <fragment> tag. - */ - @Override - public View onCreateView(String name, Context context, AttributeSet attrs) { - if (!"fragment".equals(name)) { - return super.onCreateView(name, context, attrs); - } - - String fname = attrs.getAttributeValue(null, "class"); - TypedArray a = context.obtainStyledAttributes(attrs, FragmentTag.Fragment); - if (fname == null) { - fname = a.getString(FragmentTag.Fragment_name); - } - int id = a.getResourceId(FragmentTag.Fragment_id, View.NO_ID); - String tag = a.getString(FragmentTag.Fragment_tag); - a.recycle(); - - View parent = null; // NOTE: no way to get parent pre-Honeycomb. - int containerId = parent != null ? parent.getId() : 0; - if (containerId == View.NO_ID && id == View.NO_ID && tag == null) { - throw new IllegalArgumentException(attrs.getPositionDescription() - + ": Must specify unique android:id, android:tag, or have a parent with an id for " + fname); - } - - // If we restored from a previous state, we may already have - // instantiated this fragment from the state and should use - // that instance instead of making a new one. - Fragment fragment = id != View.NO_ID ? mFragments.findFragmentById(id) : null; - if (fragment == null && tag != null) { - fragment = mFragments.findFragmentByTag(tag); - } - if (fragment == null && containerId != View.NO_ID) { - fragment = mFragments.findFragmentById(containerId); - } - - if (FragmentManagerImpl.DEBUG) Log.v(TAG, "onCreateView: id=0x" - + Integer.toHexString(id) + " fname=" + fname - + " existing=" + fragment); - if (fragment == null) { - fragment = Fragment.instantiate(this, fname); - fragment.mFromLayout = true; - fragment.mFragmentId = id != 0 ? id : containerId; - fragment.mContainerId = containerId; - fragment.mTag = tag; - fragment.mInLayout = true; - fragment.mFragmentManager = mFragments; - fragment.onInflate(this, attrs, fragment.mSavedFragmentState); - mFragments.addFragment(fragment, true); - - } else if (fragment.mInLayout) { - // A fragment already exists and it is not one we restored from - // previous state. - throw new IllegalArgumentException(attrs.getPositionDescription() - + ": Duplicate id 0x" + Integer.toHexString(id) - + ", tag " + tag + ", or parent id 0x" + Integer.toHexString(containerId) - + " with another fragment for " + fname); - } else { - // This fragment was retained from a previous instance; get it - // going now. - fragment.mInLayout = true; - // If this fragment is newly instantiated (either right now, or - // from last saved state), then give it the attributes to - // initialize itself. - if (!fragment.mRetaining) { - fragment.onInflate(this, attrs, fragment.mSavedFragmentState); - } - mFragments.moveToState(fragment); - } - - if (fragment.mView == null) { - throw new IllegalStateException("Fragment " + fname - + " did not create a view."); - } - if (id != 0) { - fragment.mView.setId(id); - } - if (fragment.mView.getTag() == null) { - fragment.mView.setTag(tag); - } - return fragment.mView; - } - - @Override - public void invalidateOptionsMenu() { - if (DEBUG) Log.d(TAG, "[invalidateOptionsMenu]"); - - if (IS_HONEYCOMB) { - HoneycombInvalidateOptionsMenu.invoke(this); - return; - } - - if (mSupportMenu == null) { - mSupportMenu = new MenuBuilder(this); - mSupportMenu.setCallback(mSupportMenuCallback); - } - - mSupportMenu.stopDispatchingItemsChanged(); - mSupportMenu.clear(); - - if (!dispatchCreateOptionsMenu()) { - if (mActionBar != null) { - ((ActionBarImpl)mActionBar).setMenu(null, mMenuPresenterCallback); - } - return; - } - - if (!dispatchPrepareOptionsMenu()) { - if (mActionBar != null) { - ((ActionBarImpl)mActionBar).setMenu(null, mMenuPresenterCallback); - } - mSupportMenu.startDispatchingItemsChanged(); - return; - } - - mSupportMenu.startDispatchingItemsChanged(); - - if (mActionBar != null) { - ((ActionBarImpl)mActionBar).setMenu(mSupportMenu, mMenuPresenterCallback); - } - } - - private static final class HoneycombInvalidateOptionsMenu { - static void invoke(Activity activity) { - activity.getWindow().invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL); - } - } - - /** - * Destroy all fragments and loaders. - */ - @Override - protected void onDestroy() { - super.onDestroy(); - - doReallyStop(false); - - mFragments.dispatchDestroy(); - if (mLoaderManager != null) { - mLoaderManager.doDestroy(); - } - } - - /** - * Take care of calling onBackPressed() for pre-Eclair platforms. - */ - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (android.os.Build.VERSION.SDK_INT < 5 /* ECLAIR */ - && keyCode == KeyEvent.KEYCODE_BACK - && event.getRepeatCount() == 0) { - // Take care of calling this method on earlier versions of - // the platform where it doesn't exist. - onBackPressed(); - return true; - } - - return super.onKeyDown(keyCode, event); - } - - /** - * Dispatch onLowMemory() to all fragments. - */ - @Override - public void onLowMemory() { - super.onLowMemory(); - mFragments.dispatchLowMemory(); - } - - /** - * Dispatch context and options menu to fragments. - */ - @Override - public final boolean onMenuItemSelected(int featureId, android.view.MenuItem item) { - if (super.onMenuItemSelected(featureId, item)) { - return true; - } - - switch (featureId) { - case Window.FEATURE_OPTIONS_PANEL: - return mFragments.dispatchOptionsItemSelected(new MenuItemWrapper(item)); - - case Window.FEATURE_CONTEXT_MENU: - return mFragments.dispatchContextItemSelected(new MenuItemWrapper(item)); - - default: - return false; - } - } - - @Override - public boolean onMenuItemSelected(int featureId, MenuItem item) { - if (onOptionsItemSelected(item)) { - return true; - } - - switch (featureId) { - case Window.FEATURE_OPTIONS_PANEL: - return mFragments.dispatchOptionsItemSelected(item); - - case Window.FEATURE_CONTEXT_MENU: - return mFragments.dispatchContextItemSelected(item); - - default: - return false; - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - return super.onOptionsItemSelected(item); - } - - @Override - public final boolean onOptionsItemSelected(android.view.MenuItem item) { - return onOptionsItemSelected(new MenuItemWrapper(item)); - } - - /** - * Call onOptionsMenuClosed() on fragments. - */ - @Override - public void onPanelClosed(int featureId, android.view.Menu menu) { - switch (featureId) { - case Window.FEATURE_OPTIONS_PANEL: - mFragments.dispatchOptionsMenuClosed(new MenuWrapper(menu)); - - if (!IS_HONEYCOMB && (getSupportActionBar() != null)) { - if (DEBUG) Log.d(TAG, "onPanelClosed(int, android.view.Menu): Dispatch menu visibility false to custom action bar."); - ((ActionBarImpl)mActionBar).onMenuVisibilityChanged(false); - } - break; - } - super.onPanelClosed(featureId, menu); - } - - /** - * Dispatch onPause() to fragments. - */ - @Override - protected void onPause() { - super.onPause(); - mResumed = false; - if (mHandler.hasMessages(MSG_RESUME_PENDING)) { - mHandler.removeMessages(MSG_RESUME_PENDING); - mFragments.dispatchResume(); - } - mFragments.dispatchPause(); - } - - /** - * Dispatch onResume() to fragments. - */ - @Override - protected void onResume() { - super.onResume(); - mHandler.sendEmptyMessage(MSG_RESUME_PENDING); - mResumed = true; - mFragments.execPendingActions(); - } - - /** - * Dispatch onResume() to fragments. - */ - @Override - protected void onPostResume() { - super.onPostResume(); - mHandler.removeMessages(MSG_RESUME_PENDING); - mFragments.dispatchResume(); - mFragments.execPendingActions(); - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - return true; - } - - @Override - public final boolean onPrepareOptionsMenu(android.view.Menu menu) { - if (IS_HONEYCOMB) { - if (DEBUG) Log.d(TAG, "onPrepareOptionsMenu(android.view.Menu): Calling support method with wrapped native menu."); - final MenuWrapper wrappedMenu = new MenuWrapper(menu); - boolean result = onPrepareOptionsMenu(wrappedMenu); - if (result) { - if (DEBUG) Log.d(TAG, "onPrepareOptionsMenu(android.view.Menu): Dispatching fragment method with wrapped native menu."); - mFragments.dispatchPrepareOptionsMenu(wrappedMenu); - } - return result; - } - - if (!dispatchPrepareOptionsMenu()) { - return false; - } - - if (mNativeItemMap == null) { - mNativeItemMap = new HashMap(); - } else { - mNativeItemMap.clear(); - } - - if (mSupportMenu != null) { - return mSupportMenu.bindOverflowToNative(menu, mNativeItemListener, mNativeItemMap); - } - return false; - } - - private boolean dispatchPrepareOptionsMenu() { - if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu]"); - - if (onPrepareOptionsMenu(mSupportMenu)) { - mFragments.dispatchPrepareOptionsMenu(mSupportMenu); - return true; - } - return false; - } - - /** - * Cause this Activity to be recreated with a new instance. This results in - * essentially the same flow as when the Activity is created due to a - * configuration change -- the current instance will go through its - * lifecycle to onDestroy() and a new instance then created after it. - */ - @Override - public void recreate() { - //This SUCKS! Figure out a way to call the super method and support Android 1.6 - /* - if (IS_HONEYCOMB) { - super.recreate(); - } else { - */ - final Intent intent = getIntent(); - intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); - - startActivity(intent); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) { - OverridePendingTransition.invoke(this); - } - - finish(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) { - OverridePendingTransition.invoke(this); - } - /* - } - */ - } - - private static final class OverridePendingTransition { - static void invoke(Activity activity) { - activity.overridePendingTransition(0, 0); - } - } - - /** - * Retain all appropriate fragment and loader state. You can NOT - * override this yourself! Use {@link #onRetainCustomNonConfigurationInstance()} - * if you want to retain your own state. - */ - @Override - public final Object onRetainNonConfigurationInstance() { - if (mStopped) { - doReallyStop(true); - } - - Object custom = onRetainCustomNonConfigurationInstance(); - - ArrayList fragments = mFragments.retainNonConfig(); - boolean retainLoaders = false; - if (mAllLoaderManagers != null) { - // prune out any loader managers that were already stopped and so - // have nothing useful to retain. - for (int i=mAllLoaderManagers.size()-1; i>=0; i--) { - LoaderManagerImpl lm = mAllLoaderManagers.valueAt(i); - if (lm.mRetaining) { - retainLoaders = true; - } else { - lm.doDestroy(); - mAllLoaderManagers.removeAt(i); - } - } - } - if (fragments == null && !retainLoaders && custom == null) { - return null; - } - - NonConfigurationInstances nci = new NonConfigurationInstances(); - nci.activity = null; - nci.custom = custom; - nci.children = null; - nci.fragments = fragments; - nci.loaders = mAllLoaderManagers; - return nci; - } - - /** - * Save all appropriate fragment state. - */ - @Override - protected void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - Parcelable p = mFragments.saveAllState(); - if (p != null) { - outState.putParcelable(FRAGMENTS_TAG, p); - } - } - - /** - * Dispatch onStart() to all fragments. Ensure any created loaders are - * now started. - */ - @Override - protected void onStart() { - super.onStart(); - - mStopped = false; - mReallyStopped = false; - mHandler.removeMessages(MSG_REALLY_STOPPED); - - if (!mCreated) { - mCreated = true; - mFragments.dispatchActivityCreated(); - } - - mFragments.noteStateNotSaved(); - mFragments.execPendingActions(); - - if (!mLoadersStarted) { - mLoadersStarted = true; - if (mLoaderManager != null) { - mLoaderManager.doStart(); - } else if (!mCheckedForLoaderManager) { - mLoaderManager = getLoaderManager(-1, mLoadersStarted, false); - } - mCheckedForLoaderManager = true; - } - // NOTE: HC onStart goes here. - - mFragments.dispatchStart(); - if (mAllLoaderManagers != null) { - for (int i=mAllLoaderManagers.size()-1; i>=0; i--) { - LoaderManagerImpl lm = mAllLoaderManagers.valueAt(i); - lm.finishRetain(); - lm.doReportStart(); - } - } - } - - /** - * Dispatch onStop() to all fragments. Ensure all loaders are stopped. - */ - @Override - protected void onStop() { - super.onStop(); - - mStopped = true; - mHandler.sendEmptyMessage(MSG_REALLY_STOPPED); - - mFragments.dispatchStop(); - } - - /** - *

Sets the visibility of the indeterminate progress bar in the - * title.

- * - *

In order for the progress bar to be shown, the feature must be - * requested via {@link #requestWindowFeature(long)}.

- * - *

This method must be used instead of - * {@link #setProgressBarIndeterminateVisibility(boolean)} for - * ActionBarSherlock. Pass {@link Boolean.TRUE} or - * {@link Boolean.FALSE} to ensure the appropriate one is called.

- * - * @param visible Whether to show the progress bars in the title. - */ - @Override - public void setProgressBarIndeterminateVisibility(Boolean visible) { - if (IS_HONEYCOMB || (mActionBar == null)) { - super.setProgressBarIndeterminateVisibility(visible); - } else { - mActionBarView.setProgressBarIndeterminateVisibility(visible); - } - } - - // ------------------------------------------------------------------------ - // NEW METHODS - // ------------------------------------------------------------------------ - - /** - * Use this instead of {@link #onRetainNonConfigurationInstance()}. - * Retrieve later with {@link #getLastCustomNonConfigurationInstance()}. - */ - public Object onRetainCustomNonConfigurationInstance() { - return null; - } - - /** - * Return the value previously returned from - * {@link #onRetainCustomNonConfigurationInstance()}. - */ - public Object getLastCustomNonConfigurationInstance() { - NonConfigurationInstances nc = (NonConfigurationInstances) - getLastNonConfigurationInstance(); - return nc != null ? nc.custom : null; - } - - /** - * @deprecated Use {@link invalidateOptionsMenu}. - */ - @Deprecated - void supportInvalidateOptionsMenu() { - invalidateOptionsMenu(); - } - - /** - * Print the Activity's state into the given stream. This gets invoked if - * you run "adb shell dumpsys activity ". - * - * @param prefix Desired prefix to prepend at each line of output. - * @param fd The raw file descriptor that the dump is being sent to. - * @param writer The PrintWriter to which you should dump your state. This will be - * closed for you after you return. - * @param args additional arguments to the dump request. - */ - @Override - public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { - if (IS_HONEYCOMB) { - //This can only work if we can call the super-class impl. :/ - //ActivityCompatHoneycomb.dump(this, prefix, fd, writer, args); - } - writer.print(prefix); writer.print("Local FragmentActivity "); - writer.print(Integer.toHexString(System.identityHashCode(this))); - writer.println(" State:"); - String innerPrefix = prefix + " "; - writer.print(innerPrefix); writer.print("mCreated="); - writer.print(mCreated); writer.print("mResumed="); - writer.print(mResumed); writer.print(" mStopped="); - writer.print(mStopped); writer.print(" mReallyStopped="); - writer.println(mReallyStopped); - writer.print(innerPrefix); writer.print("mLoadersStarted="); - writer.println(mLoadersStarted); - if (mLoaderManager != null) { - writer.print(prefix); writer.print("Loader Manager "); - writer.print(Integer.toHexString(System.identityHashCode(mLoaderManager))); - writer.println(":"); - mLoaderManager.dump(prefix + " ", fd, writer, args); - } - mFragments.dump(prefix, fd, writer, args); - } - - void doReallyStop(boolean retaining) { - if (!mReallyStopped) { - mReallyStopped = true; - mRetaining = retaining; - mHandler.removeMessages(MSG_REALLY_STOPPED); - onReallyStop(); - } - } - - /** - * Pre-HC, we didn't have a way to determine whether an activity was - * being stopped for a config change or not until we saw - * onRetainNonConfigurationInstance() called after onStop(). However - * we need to know this, to know whether to retain fragments. This will - * tell us what we need to know. - */ - void onReallyStop() { - if (mLoadersStarted) { - mLoadersStarted = false; - if (mLoaderManager != null) { - if (!mRetaining) { - mLoaderManager.doStop(); - } else { - mLoaderManager.doRetain(); - } - } - } - - mFragments.dispatchReallyStop(); - } - - // ------------------------------------------------------------------------ - // ACTION BAR AND ACTION MODE SUPPORT - // ------------------------------------------------------------------------ - - /** - * Retrieve a reference to this activity's action bar handler. - * - * @return The handler for the appropriate action bar, or null. - */ - @Override - public ActionBar getSupportActionBar() { - initActionBar(); - return mActionBar; - } - - /** - * Notifies the activity that an action mode has finished. Activity - * subclasses overriding this method should call the superclass - * implementation. - * - * @param mode The action mode that just finished. - */ - @Override - public void onActionModeFinished(ActionMode mode) { - } - - /** - * Notifies the Activity that an action mode has been started. Activity - * subclasses overriding this method should call the superclass - * implementation. - * - * @param mode The new action mode. - */ - @Override - public void onActionModeStarted(ActionMode mode) { - } - - /** - *

Give the Activity a chance to control the UI for an action mode - * requested by the system.

- * - *

Note: If you are looking for a notification callback that an action - * mode has been started for this activity, see - * {@link #onActionModeStarted(ActionMode)}.

- * - * @param callback The callback that should control the new action mode - * @return The new action mode, or null if the activity does not want to - * provide special handling for this action mode. (It will be handled by the - * system.) - */ - @Override - public ActionMode onWindowStartingActionMode(ActionMode.Callback callback) { - return null; - } - - /** - * Start an action mode. - * - * @param callback Callback that will manage lifecycle events for this - * context mode - * @return The ContextMode that was started, or null if it was cancelled - * @see android.support.v4.view.ActionMode - */ - @Override - public final ActionMode startActionMode(final ActionMode.Callback callback) { - //Give the activity override a chance to handle the action mode - ActionMode actionMode = onWindowStartingActionMode(callback); - - if (actionMode == null) { - //If the activity did not handle, send to action bar for platform- - //specific implementation - actionMode = mActionBar.startActionMode(callback); - } - if (actionMode != null) { - //Send the activity callback that our action mode was started - onActionModeStarted(actionMode); - } - - //Return to the caller - return actionMode; - } - - // ------------------------------------------------------------------------ - // FRAGMENT SUPPORT - // ------------------------------------------------------------------------ - - /** - * Called when a fragment is attached to the activity. - */ - @Override - public void onAttachFragment(Fragment fragment) { - } - - /** - * Return the FragmentManager for interacting with fragments associated - * with this activity. - */ - @Override - public FragmentManager getSupportFragmentManager() { - //PLEASE let no one be dumb enough to call this too soon... - initActionBar(); - return mFragments; - } - - /** - * Modifies the standard behavior to allow results to be delivered to fragments. - * This imposes a restriction that requestCode be <= 0xffff. - */ - @Override - public void startActivityForResult(Intent intent, int requestCode) { - if (requestCode != -1 && (requestCode&0xffff0000) != 0) { - throw new IllegalArgumentException("Can only use lower 16 bits for requestCode"); - } - super.startActivityForResult(intent, requestCode); - } - - /** - * Called by Fragment.startActivityForResult() to implement its behavior. - */ - @Override - public void startActivityFromFragment(Fragment fragment, Intent intent, - int requestCode) { - if (requestCode == -1) { - super.startActivityForResult(intent, -1); - return; - } - if ((requestCode&0xffff0000) != 0) { - throw new IllegalArgumentException("Can only use lower 16 bits for requestCode"); - } - super.startActivityForResult(intent, ((fragment.mIndex+1)<<16) + (requestCode&0xffff)); - } - - void invalidateSupportFragmentIndex(int index) { - //Log.v(TAG, "invalidateFragmentIndex: index=" + index); - if (mAllLoaderManagers != null) { - LoaderManagerImpl lm = mAllLoaderManagers.get(index); - if (lm != null && !lm.mRetaining) { - lm.doDestroy(); - mAllLoaderManagers.remove(index); - } - } - } - - // ------------------------------------------------------------------------ - // LOADER SUPPORT - // ------------------------------------------------------------------------ - - /** - * Return the LoaderManager for this fragment, creating it if needed. - */ - @Override - public LoaderManager getSupportLoaderManager() { - if (mLoaderManager != null) { - return mLoaderManager; - } - mCheckedForLoaderManager = true; - mLoaderManager = getLoaderManager(-1, mLoadersStarted, true); - return mLoaderManager; - } - - LoaderManagerImpl getLoaderManager(int index, boolean started, boolean create) { - if (mAllLoaderManagers == null) { - mAllLoaderManagers = new HCSparseArray(); - } - LoaderManagerImpl lm = mAllLoaderManagers.get(index); - if (lm == null) { - if (create) { - lm = new LoaderManagerImpl(this, started); - mAllLoaderManagers.put(index, lm); - } - } else { - lm.updateActivity(this); - } - return lm; - } -} diff --git a/greendroid/GDCatalog/AndroidManifest.xml b/greendroid/GDCatalog/AndroidManifest.xml deleted file mode 100644 index 3fcfeda7e..000000000 --- a/greendroid/GDCatalog/AndroidManifest.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/greendroid/GDCatalog/assets/LICENSE.txt b/greendroid/GDCatalog/assets/LICENSE.txt deleted file mode 100644 index b7dafce6b..000000000 --- a/greendroid/GDCatalog/assets/LICENSE.txt +++ /dev/null @@ -1,56 +0,0 @@ - -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - - 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and - - 2. You must cause any modified files to carry prominent notices stating that You changed the files; and - - 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - - 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. - -You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS diff --git a/greendroid/GDCatalog/default.properties b/greendroid/GDCatalog/default.properties deleted file mode 100644 index 2dde05127..000000000 --- a/greendroid/GDCatalog/default.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system use, -# "build.properties", and override values to adapt the script to your -# project structure. - -# Indicates whether an apk should be generated for each density. -split.density=false -# Project target. -target=android-8 -android.library.reference.1=../GreenDroid diff --git a/greendroid/GDCatalog/res/color/link.xml b/greendroid/GDCatalog/res/color/link.xml deleted file mode 100644 index d4f7ea0cf..000000000 --- a/greendroid/GDCatalog/res/color/link.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - diff --git a/greendroid/GDCatalog/res/drawable-hdpi/action_bar_divider.png b/greendroid/GDCatalog/res/drawable-hdpi/action_bar_divider.png deleted file mode 100755 index 249f7f3578c5d62f913ad96ed3c02ae031aa001d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 996 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 diff --git a/greendroid/GDCatalog/res/drawable-hdpi/class2.jpg b/greendroid/GDCatalog/res/drawable-hdpi/class2.jpg deleted file mode 100644 index b2930a386065ea488fbb60bf93109818e2f8162a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3592 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 diff --git a/greendroid/GDCatalog/res/drawable-hdpi/class3.jpg b/greendroid/GDCatalog/res/drawable-hdpi/class3.jpg deleted file mode 100644 index 779b4835ea6bed993a558c8df095798eb4471fcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4182 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 diff --git a/greendroid/GDCatalog/res/drawable-hdpi/class4.jpg b/greendroid/GDCatalog/res/drawable-hdpi/class4.jpg deleted file mode 100644 index 7845de7c643a3177619c0e6b8bdefd71a40e62a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3453 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 diff --git a/greendroid/GDCatalog/res/drawable-hdpi/class5.jpg b/greendroid/GDCatalog/res/drawable-hdpi/class5.jpg deleted file mode 100644 index 08f0817bc6657330847e62ce3a027e888fd01389..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4182 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 diff --git a/greendroid/GDCatalog/res/drawable-hdpi/greendroid_application_logo_alt.png b/greendroid/GDCatalog/res/drawable-hdpi/greendroid_application_logo_alt.png deleted file mode 100644 index de9d22867d4b73483f71fcbf545f2b2275ee878e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13128 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 FV1mDp>o))Z diff --git a/greendroid/GDCatalog/res/drawable-hdpi/greendroid_logo.png b/greendroid/GDCatalog/res/drawable-hdpi/greendroid_logo.png deleted file mode 100644 index fc5cb0de16e51ace312a6eb17c250d873b41b48c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23929 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 AjQ{`u diff --git a/greendroid/GDCatalog/res/drawable-hdpi/ic_action_bar_info.png b/greendroid/GDCatalog/res/drawable-hdpi/ic_action_bar_info.png deleted file mode 100644 index 59ec7e07813b3172afb5ddc62b58af42a8990444..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)PcRjj#16@=!OrPgL4%~wZqhzJR?{oaUIjUOzMFJ@-4URz7MwA^@_Df3wBo(&= zUWLM}yn_|r1;VymM9q$0u39A;n z!@>|q3e$Rp3#2{&#`$;aT9SUNI;WYai<8bSIAPxgSOz=7Q&BXC<5t@qxu=<*13OVS zm@g$3cX)QPI{j)1{9&pJ(@ON~ED)1BxLD zEb;`TpX%^3Z)ox%3Cz=7BErK$k$&WbJKm~{W&?Z+L^cKD)VQ1UBQHCJ zNB(DU2F}?&hjQfa>7uEFNR?m9K9rr=Aj(d|RJb3zEZkMU*&qvd>($2rC^%ew6!<$= zS09Gg8&=d3am(e=AQQj&@~GzacFPZefnL8E{X6Quz<;(s0R{l^h%O0#Vo^5$0000< KMNUMnLSTYxkuN#` diff --git a/greendroid/GDCatalog/res/drawable-hdpi/ic_gdcatalog.png b/greendroid/GDCatalog/res/drawable-hdpi/ic_gdcatalog.png deleted file mode 100644 index 1b21d0f5c4df68c942c1540f4ea2b05b2949ee5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4269 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 P00000NkvXXu0mjfed9Rj diff --git a/greendroid/GDCatalog/res/drawable-hdpi/ic_title_export_alt.png b/greendroid/GDCatalog/res/drawable-hdpi/ic_title_export_alt.png deleted file mode 100644 index b55e41def7dcf5d1bf8dc147a27ac5ce1c5b94ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1895 zcmaJ?c~BEq98Lr*M)3d~0c+g`qzsT`6ONEbq>vB^keGxZp{Nj&1p+1;lH~}44kDl^ z5k)~z5dlS^)T4+*L_{vZ!2=a9JnB_S(Rfe~L}@n)+CNHnX7|0{oA3L6=bO#t^OjoR z>~I(i#)1>T5~8b<@im`{e)Gok3UskW{KZHJ9D}4t)DXs321i2xMfDxiQ636QE-t<=y{8Te1SbaZb#CgFik5F~+t z{~VN<%LkaS8Uj3sAVCUxf`BKPNOp6lQmL*01tfzckU}C;2xKbVjY0=OVEnl_k~&vd>n$P=p<4~N(wQ>jR>n_Nn{$0X4Ifi2q=P}(JB#1DnY5SpHN^y8mU^Y zLgcU#Fe*x-;Ut8CMENCPLSrD)?~?2WEebfy}TAh22l!>cE%$d7{&SQ7`U0A`2>z?DelN~8S= z&*joNN(~}WN+Ax5fkzdHa=DD|=jBdiyR*oCpa)1Mv)F!~eiSCt!`Gj}20;o9oZzxx zX_5j`A`@KMS1x5zu5lC;D%3LzQp=Me8Cwl2fKMsY<&(z3WKXI$&Xr9b3pgp4ga$)0 zHuhhQo;X6M$GH76wy5!C@F68S?P_$aJxp1z(c99`Vfl(uZ$A|W1zQQMOG_^DZ_91% z_E{e)b6%d8iR~!XgPp}T9)ez*M}G74*xZ+OU~hK9Jjc$hn{wxSwwv{C+!Y`zck#vQ zYDK0d=a-t|N_o?VhrRhGIhRDmSRJXPXK3hD!@;*2!TN^`Prq|(sX@x@Z&>mgiN86tr*81;_ zYa6ho_G>+ex}ztnOiVkh&q854601y!c`;AeTCrjkts!=gNlSY0e6ERDAV|LZV0loO zBG0@8o9p_L4Qcax-0r@2Y_HOWuL#!;Rd{z^t8c*d!e!g73X=5JxN?3J{lc9lL6W86 z?u)Sl1K|m$sjlaA)tV|NYn=G9^LI~k7Nz*-=nJYgH0uQ!n|j`XPiiq<)m>E!1K*w# zRgONJ8QSi0!#RV;t#rxkZ_TkXTkf#(d|D7DGv4rSeFe_Nt|;-qd2j!ah+i-^rbkT@ zHnU@NKR8(Si3aAcx$$^g)F7vZQy5-!)w6gNhfj!qbz;`3f!o6dC|>5;DY8IlcOrdg zff_z^Mf1>eN0V;(j>i2b2INxUnN0!9+&YgZz2C*RoNH)!J7~9tQ(Bw8b9Bk8zV&4b z7KdiP**#_UqAlR?gKi+!Fvq?eNqW=%Zus=G56!I%6XJ%5lAELD;pS}}A^iq0ZV=cT zt=F#>V5byYO%wQE?U{x+Sw4(wt?vcr*?uT^+J1bh&z}3j=WDi|=JjMuFVS~3pG|9< z@#m^_(<2FXKV}S9=;DXX9A;T&9uEq6q>LUr7V35H#^4=`%?iWFZ}Ij+HNgubXESZ; zzr{8{&%;R7m30;c-OcsFH@kEGipiLa>yF^^*W28SvT5OZB8+B8J!(j z=s*tkao?83hkn1g!kfB%(cEkrwEsFW$1J~UL@KP<#3+%@X?hcZRV{LAD^Vr#1m<(i zik_V;u1c!tk1=aGEY9NI?C71drR#VE_QjF_FPfmE?PGGQE}#324KBOF%ja5V7E~G7 zy{f3MhFnO<_1$V1yf<^Lm*d4tLsy)F%6HA!mlrBd)|$EmI)#rAmNl(ka3nkY)~@uo z@8#@SWBl*WHac||b$tW^`gJwxh>$<*4z<5-i^p%-o1E3UGGj5b(Y2C3aBAU) z%IU!v?ntlll+&{H{GKee|;Q( K9_z4QROUaa?)FCj diff --git a/greendroid/GDCatalog/res/drawable-hdpi/ic_title_export_default.png b/greendroid/GDCatalog/res/drawable-hdpi/ic_title_export_default.png deleted file mode 100644 index b86014d5fbecf46e7423fa05da06a141d09ad6b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 550 zcmV+>0@?kEP)5kl0#x43{sm<&rVYa8D@J^!-2#`@lOIxcx(Vv<_QeuZYMK6qxcaSX5XQw z1J{#b_EvhP!9iclJO$z`63k7ZhU3U-EF=K&H#{}SH>9eLDwrHi($F^DJtT*L*j-4C o1*&1j(IMbb2aY-rKL7|Y0DH8*og#MLCjbBd07*qoM6N<$f~e!y8~^|S diff --git a/greendroid/GDCatalog/res/drawable-hdpi/separator_bg.9.png b/greendroid/GDCatalog/res/drawable-hdpi/separator_bg.9.png deleted file mode 100644 index 955a61c3a6ed5909e38906a5f88cd7fce0a588dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^JV30@!3HF)0_JRxf`0 zYRQzTYjiw?vQ;~$ZV5ZJ>gs&!Us6eL9)2-6b8^q}_Y(E9kJ+2`&hKd7Ke6ecc#y#l z7cREyB?%uIMR@K3Mffx&_9(J8hXX~LM0mD&9872y;h6`N5Dqe^04mJ}N;HV@yaS5J z1{v&dDtbNHSqG@@9}-#@9(=k6z^|t zYHuP4qB%AoCh%U57u|RO|K|pm-{Gwd^`%h~j-tG50V1Tr5kSUtIRg?vR;R|_gC2s| zM`@`vN=t)+0(H0SVB7`W#B74-=`EPDk^_hw0U6B*QrjRI2wp*;5d(fDVvM7W6U0779VCq$}XFbInj>34(G#YB#8~G(<+A1xTNp zr4_cDCA&E{=RL>sd>83qIhJ8P4CkRaUhsMZmLOYQItpE1PW3((%lqvvnp%Y zl_^9lAR}m{ zARMbyaVQHBw6oA8BS{}A$%v{Y$zZm1}UuI)-+WJdwm|!#|NSjmghJz z8VGqK(I_7X`}r_`F6yapMW{^Zz(5tQy2lOG}lXd(g?#IMXs_=R4V_j46 zLQ7P3(PzcOt&dwyHWuTb=;fW(uIImt_4lsIH(_Sy@}~dJ(s1L}!G;4PPn#0g^ma A5&!@I diff --git a/greendroid/GDCatalog/res/drawable-mdpi/class1.jpg b/greendroid/GDCatalog/res/drawable-mdpi/class1.jpg deleted file mode 100644 index de3daa04c7192449497282b4c9650366373a42cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1943 zcmY+A2{hE}8^?dYS&gyHm|?C$SxQJ_$eMjC`;z5O*6xs_=f%F;~= zV(KQMp0x-NtPR#|8(y?o&Wv3=REKGJkR%g&iB0BG42~c#M1nPIRHWcfWkWf zcNxH#M*R{L3xEI&004X5Xax{5qJ*9H1t_h&3CNuQQUJ&gpu86p#;Z^m9QGYJ0{%A$ z1QN-IL?Tcqetr~6;J<)SC=?EZqYwy`AR2`h6c*wkEd00V-%H@1?!Uet9k&(0@Bt)% z1O+hw1Oq}bAh!c3;{`;5Ag}%agzyp}p?n|!!l3`Z0RaS(?|W(y00Khb5GWju`o{%A zpcojiUlj{?Kp6RmQj=sz$gCTVvbdUoh-5W&(~~Y3-jDJ05Pm-7zZPBwDD1lhVdUT= ziljOwW!)H%A)V$KKGm!mJDtSyP2YSvC~Jb_jspU`AUr(=FaSQgiv*-$A!(PK?2X6( zO0HkwMRp`~58#$v-#qfwChD0fgVPzgV|IURHZ3E`#fp8CcHOx}MFRACpk+>Eaf?5Q>>bBeC2zoaZjeV{b^tN+HPbPT@c13KW( z!ls~SubUVVN8NDe*s?BAZ6W?|53J6+35J`FB0EAl@xcd)t7J zm{aR4S@`HYUuP2QBtbcugzf$rGv!0G20|Ebud&XXqhkAU{W0CIp44~EPj1)azcX|%7*m=h(s*U|uX-;+sC;QfUBb?SoRm5NTh~5M0?uJA{!SNKbkIy#$ngZ?67aFW5 zRKrsyydgAvTzIT#_wFSwP*T6UHafZ!_T|fNe%`T{gKN?(;jHKDNY+l=#|@R4$1RS% zTtGP?Ms1V}c)j85Y<{xV0^vomKkY{TB3VGOeFOTvEHm6Jw9xZ=RsDP(E~uTtelw%T zjv+{1?CN_~apYE`4YQ0^b%w9^syU|Fr`FWCe`MmL5!rXe=_jnIX|^R)@kq}Q$M#xP z!5MScK+6Fe>%&j_^sDyN^%=Mf2J`nW+SuhUG>SU8EU5%pRI74EGVe_e1UQIq=I^~? zMO80LE}Z#f@=j;3`!~^25=Ti1u1mEI|1y`g@HlZrlP!gH))+avMjT$F+C`)GeZ>~U zBUbe`!>FGC(c^*pa!T)8SZ3u(+lt*WWJ=$yb1fZ?QzwYuZZPNwN>5ZiVaAw9uCZpu zp&xZb4{vmwbv2%oY(LCEt6>RAGqt1mgOwpg9+h5}{qD=8g0>cshte3uiO4(WE(;PB zJ(mv)UE3@gv)Mh6ve<=Zq>S4JE(dNZtF7ylD7&TaFOv%xM?A}gtOa++a2V4etUV3c zRn0Z8awRf}QKn<5Xn95ht3y+lc%?_AQPR8lM(o>A}paKS`-#y>3bD*b0AUHB)y94GLVw&oOzgv#M3$mZ;Sip zrbBb+Thm3ZKJ@GDXU{3C>kp)MhGv&mu_%7k0eCE#%*SlKAYc;UBlloRmZ`N+chpzo zl&(rpOS^iq`2Ym&m3a(F?#%CQ#r+9Bwha&E8%^ixGwwZn*_|F16yc(5yZ*)=xwE$*z8)# zq|_VBkHT>skHv!7>2@uWhDJ1IXO}#nH|3_Vp8+Z;lt)U@l{63bCf0cL=lXgdR}AD+ z*N(jc!NSsVP13!}?Iw59HVuvnYfoIx$A-Hqe%QNO*U|REaRNT3ae2qmP;MmmpkOdV zw&cV$R=En|RJTuhqG_0*KW0*#d8)v&{5GX@P)e}b(VLz_P)a8*dGb4}UNVzB_8{Bd iWn6lu4Xt@d?y1}TEtI@~Nb)h6WVa!dNGcZ1W&aOuO(&NC diff --git a/greendroid/GDCatalog/res/drawable-mdpi/class2.jpg b/greendroid/GDCatalog/res/drawable-mdpi/class2.jpg deleted file mode 100644 index 0e0350a2cdfb0982431d9850c1e87466954e33e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2031 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 Wj5q7KoN(DG>JV8X6n{{Sq!fgwT$L!gi!fWn}E z0tOQm6%!SO!QtZKaQN27^oNg71=$k`zKp>d&J8huwdvf4}=j?X&?1 zF+dm41%nWP2m%B~fOa~7I^lpYFi6OMLj(+kiHZRr2pl9N5%Aysj|dW`AYvk5xHRx% z9uQbmO#H6`kZ>CW6b9@OMd{#W+<1y1XuZ9*!Md_EgMDI&+0O`c_X}6`G0OH12;tue zHxc#`{j0T50tg67XAcyHx7C$#3r@@~R}>}CL-dw-4=7aqy>>|)v@C7k{+)4Pw{TPu z1Q-GQ3=jgMmA7o?4&FOO4Uul3cQM9nI-F~@COYz_o7XD_g1cfuI9Yk)k#HyS4ep39 zdTwF((0TvrSOx1RE>tUL^$U3wZ2GAOWP2G6Lc7OSy*Bx-!PMc861&F0tJ+}*|dY2+AbIP zsAY8pjT&mG;-&@=`%(%Dnr1gmAMJx~sHZ)LbKZ2sqV^n$WaUmX^d-b7w2U;8ckuI6 zpTeq;+C|QFm7e@;1F#1Vo~$`NrW50!EAJMVZOmndA1FT&8*OjJq^~v|{=&6s()-qJ zd7ZkDDKSXuvFC(+45Nt1k@uhJzv`2I?iwR+Do4=XT4InXcT5DkR*yH5fTbd5vT{$G z;Z#iE@+KgaQ^@pIE9(OvzQ^f1uDT}>J{4XEd$ z8mci`O1~7-+v?u*OjPad=RfkxU5kZxz?BIbj9Zi9y9k_0lUIlkXDUVe@|SYPg~jfP#4Zu&EhCET(2-#1W?Xw>?LwCBjph2tsaLop8h_M1(&5qI{_ z%b(-3IqXumu*zOB$;GqIX58zcuS`HB;uccBy=3NkU~xcMZC@ngK7*VxUy9SZnYW%4 zaMJ%Sw$H?(K_}faNgFja1}P42f7=x-NN1In{ZT~CSQs;ttQQxr#C`&+X^>CYQbs$% z&mIqV{&iAv*D!u8fQJT+YFj+dTKD>$zCHZGJ|u%=o5 zt2_xM-+in}mdN^eH|-`LBgokte)0X=A!As@kh%Q1`jMeP-_u0!s}J94abojlxIKEF zA)m;;uQvwyvC8Mg!8a6P0%G)-ei8a7vn$j77n#`Em6z)tBa#mE7+DTw7E0qpNp4@Y zed79Q&ZX)D{5pIy?7~e zS;ImSpD|1-a%gK-N5fxqYkjG0iafA++I!NGwLJgSL%ZGggDPGV<#(-2tqf=0Z}5CM zFZXDf4Mi6=6>g59{HBTWVD=Ac=Z%?@L}t&%snFRMp41|o?!SJ4n&-D&IufWEbi&Gi zAy}0h0BWoTLPuQcwu}yTYX&yG)c>Y=-HJHGC1S)MLq5;=s2m@TkBZD#|^?r2PIttgI*6uxF#9})VyVKu}mY;N-A;H zPwxG8_V7V(Y+Q;V^rORBSIs`NuH;k>ljk&^n`I&nl;p6L%LaV(up$d;N%EEuZo;LW z&r@<#mcG1lhX%z?Th?w`JfFJ2+o%OH55y>EtgXCj6zE{MtZ*8+XXl)81ez(kx*m4pDz=7ryO^qh9as28>5Wx_ zMYX-s4XTA9sa0V)-J)4VW?qs0tIB`g+jKcsIBiPk?EsYctxsIikAjeIb!e{U(7 zZ?Ik;@o-^GgcQ$kn}4cx!qxO!EU#lFe8mOyY;xBt;MwHiOb^D2&$f@_&e;C|D`63S diff --git a/greendroid/GDCatalog/res/drawable-mdpi/class4.jpg b/greendroid/GDCatalog/res/drawable-mdpi/class4.jpg deleted file mode 100644 index dc260f38c3f6a933eec2d0d9d6724f880fcf9401..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1957 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 a(@*8%q3KcapC(F-b*xe@DnD%79R4p(#ol57 diff --git a/greendroid/GDCatalog/res/drawable-mdpi/greendroid_application_logo_alt.png b/greendroid/GDCatalog/res/drawable-mdpi/greendroid_application_logo_alt.png deleted file mode 100644 index 046e350f5ca1f02df9759fc020116a6e19b44401..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9637 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 diff --git a/greendroid/GDCatalog/res/drawable-mdpi/ic_action_bar_info.png b/greendroid/GDCatalog/res/drawable-mdpi/ic_action_bar_info.png deleted file mode 100644 index 8318a3dc7c09ee2e7afe48cdb7d0bc15695f40f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 794 zcmV+#1LgdQP)1OjfRZJ<0W}Z3zNx&j7Fo` zx6kLh42Qq3P_l@GR;xXZ=P|}qW#A@~OeRSn5OBi5y)_lhpwsE@#^Z5uKA)#6L-_rE z6CC=+BkU948UU?+z^Bk;GTp4zYIJ3lN(IyQ9_8kb=0fhF@Ks{5m=43jtIX^5>Va{W zBIF5{5vwdfbEixuyD=~OuR>_I+Xx$$3Z){>0p0=L1MaLS?Col`%5bKBCX>OX*kO`_ z2W6Mbb%N6}u~PGvTmjX0goR|2dPL=cwOZnt}%_dSD-od>2b|3KHoXf$R$9uK_{ zE0xOIlnhJH3G`F=US_k|4c;!l;gQE#_1$LiDBlcueRN8-!YrbJ?azF z@ApYMohGSNY75-?nd8QNY()Tc^$(8yp21+an#<)#p-@=ehz}5rMh(z%o~=>D*u1ac zOU)&Zci2x|ouh$a@_9mq9 zDX5#Xu(io%GREWs;4SOgKS7mBXW>|!LDm|0!r?Hf*Xt|!pfQj{BC#}!F#qk4`dfej Y0EQVnI!dG?-T(jq07*qoM6N<$f>ecfegFUf diff --git a/greendroid/GDCatalog/res/drawable-mdpi/ic_gdcatalog.png b/greendroid/GDCatalog/res/drawable-mdpi/ic_gdcatalog.png deleted file mode 100644 index 6538176a9ff8c63a7264643849e1b739025276b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2932 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 S-LTK{`-_Q8;5M>T^Zx<()dF(> diff --git a/greendroid/GDCatalog/res/drawable-mdpi/ic_title_export_default.png b/greendroid/GDCatalog/res/drawable-mdpi/ic_title_export_default.png deleted file mode 100644 index 06797e08fb9c2b44f5d196e46bd0110647d7342e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1275 zcmeAS@N?(olHy`uVBq!ia0vp^(jd&i1|)m0dc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L-^Aq1JP;qO z-q+X4Gq1QLF)umQ)5TT^Xo6m5W{Q=wql=ljv5~WrfvJI^p^KZ7nUj&Tv#F!2k(+^m zk);7luSMv>2~2MaLaz%>y`ZF!TL84#CABECEH%ZgC_h&L>}9J=EN*eKFfn&C zaWThf9#n4%7Pmn4THw^H4|I$^C}NQ!8YToxJs>7L*#bH6grAxROzlO$WNq=LEt-LW zG2he0F{I+woooBOnGHn_d|am0A?C`mwN#+=!pVaN9oNjBBeF1nrLaKopld0qlXBPx57R|af$sw}sxa}s#?8zaI1=4sQAAV6D`pY`%>&uJH zjN&Ih-Qe2suf;Ux*M0R^mFlB*t8RUDp0cs!?FKDzL;t^f_WQp&e)o~oY>NZ3&n{eu zdgZ+S)(X4VhbP`YF*A+vG1u!A3)iUzeawsgl{rVs>ks2zv)p8UMY5#6wx`8XQrbYpk*BMl%Q~loCIH)}&BXu! diff --git a/greendroid/GDCatalog/res/drawable-mdpi/separator_bg.9.png b/greendroid/GDCatalog/res/drawable-mdpi/separator_bg.9.png deleted file mode 100644 index 4b0ca506248864ff390689cf789314d4bf21c78c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eX!3HEfmgOA*QWHI0978H@O`USFttnB0ZU5?b zR!T~XnmcYZM<^*x^f-0z;{L-%-wLWEo~7J7T;8+a_i?lDWA#T5&4Uao6j__qfs_Jk zvvrWc4j@k(NCA1qK?W8;o^p`E4>vA0_9Y1)T19xic^ph=7vb3kq?$!|t^p~a;4~oB mD8lm$NVSRlv)!X - - - - - - - diff --git a/greendroid/GDCatalog/res/drawable/greendroid_application_logo.xml b/greendroid/GDCatalog/res/drawable/greendroid_application_logo.xml deleted file mode 100644 index ac8c0a9f1..000000000 --- a/greendroid/GDCatalog/res/drawable/greendroid_application_logo.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - diff --git a/greendroid/GDCatalog/res/drawable/ic_title_export.xml b/greendroid/GDCatalog/res/drawable/ic_title_export.xml deleted file mode 100644 index ed09bb102..000000000 --- a/greendroid/GDCatalog/res/drawable/ic_title_export.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - diff --git a/greendroid/GDCatalog/res/layout/about.xml b/greendroid/GDCatalog/res/layout/about.xml deleted file mode 100644 index 18cf228a1..000000000 --- a/greendroid/GDCatalog/res/layout/about.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - diff --git a/greendroid/GDCatalog/res/layout/headed_text_item_view.xml b/greendroid/GDCatalog/res/layout/headed_text_item_view.xml deleted file mode 100644 index 3c7cb9a88..000000000 --- a/greendroid/GDCatalog/res/layout/headed_text_item_view.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/greendroid/GDCatalog/res/layout/image.xml b/greendroid/GDCatalog/res/layout/image.xml deleted file mode 100644 index 53c60b197..000000000 --- a/greendroid/GDCatalog/res/layout/image.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - -