Browse Source

Updated ActionBarSherlock to 4.3.1 (GitHub tag).

pull/11/head
Eric Kok 12 years ago
parent
commit
03ada10c8e
  1. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-hdpi/abs__dialog_full_holo_dark.9.png
  2. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-hdpi/abs__dialog_full_holo_light.9.png
  3. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-hdpi/abs__ic_commit_search_api_holo_dark.png
  4. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-hdpi/abs__ic_commit_search_api_holo_light.png
  5. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-hdpi/abs__ic_search.png
  6. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-hdpi/abs__toast_frame.9.png
  7. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-mdpi/abs__dialog_full_holo_dark.9.png
  8. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-mdpi/abs__dialog_full_holo_light.9.png
  9. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-mdpi/abs__ic_commit_search_api_holo_dark.png
  10. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-mdpi/abs__ic_commit_search_api_holo_light.png
  11. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-mdpi/abs__toast_frame.9.png
  12. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-xhdpi/abs__dialog_full_holo_dark.9.png
  13. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-xhdpi/abs__dialog_full_holo_light.9.png
  14. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-xhdpi/abs__ic_commit_search_api_holo_dark.png
  15. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-xhdpi/abs__ic_commit_search_api_holo_light.png
  16. BIN
      external/JakeWharton-ActionBarSherlock/library/res/drawable-xhdpi/abs__toast_frame.9.png
  17. 1
      external/JakeWharton-ActionBarSherlock/library/res/layout-xlarge/abs__screen_action_bar.xml
  18. 3
      external/JakeWharton-ActionBarSherlock/library/res/layout-xlarge/abs__screen_action_bar_overlay.xml
  19. 2
      external/JakeWharton-ActionBarSherlock/library/res/layout/abs__action_bar_tab_bar_view.xml
  20. 46
      external/JakeWharton-ActionBarSherlock/library/res/layout/abs__dialog_title_holo.xml
  21. 59
      external/JakeWharton-ActionBarSherlock/library/res/layout/abs__list_menu_item_layout.xml
  22. 3
      external/JakeWharton-ActionBarSherlock/library/res/layout/abs__screen_action_bar.xml
  23. 3
      external/JakeWharton-ActionBarSherlock/library/res/layout/abs__screen_action_bar_overlay.xml
  24. 2
      external/JakeWharton-ActionBarSherlock/library/res/layout/abs__simple_dropdown_hint.xml
  25. 2
      external/JakeWharton-ActionBarSherlock/library/res/values-large-mdpi-1024x600/abs__dimens.xml
  26. 29
      external/JakeWharton-ActionBarSherlock/library/res/values-large/abs__dimens.xml
  27. 2
      external/JakeWharton-ActionBarSherlock/library/res/values-sw600dp/abs__dimens.xml
  28. 5
      external/JakeWharton-ActionBarSherlock/library/res/values-v14/abs__themes.xml
  29. 2
      external/JakeWharton-ActionBarSherlock/library/res/values/abs__attrs.xml
  30. 3
      external/JakeWharton-ActionBarSherlock/library/res/values/abs__colors.xml
  31. 12
      external/JakeWharton-ActionBarSherlock/library/res/values/abs__dimens.xml
  32. 4
      external/JakeWharton-ActionBarSherlock/library/res/values/abs__strings.xml
  33. 56
      external/JakeWharton-ActionBarSherlock/library/res/values/abs__styles.xml
  34. 84
      external/JakeWharton-ActionBarSherlock/library/res/values/abs__themes.xml
  35. 21
      external/JakeWharton-ActionBarSherlock/library/src/android/support/v4/app/Watson.java
  36. 51
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/ActionBarSherlock.java
  37. 6
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockActivity.java
  38. 6
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockDialogFragment.java
  39. 6
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockExpandableListActivity.java
  40. 6
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockFragment.java
  41. 26
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockFragmentActivity.java
  42. 6
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockListActivity.java
  43. 6
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockListFragment.java
  44. 6
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockPreferenceActivity.java
  45. 154
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java
  46. 80
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/ActionBarSherlockNative.java
  47. 87
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/ResourcesCompat.java
  48. 7
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/app/ActionBarImpl.java
  49. 12
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/app/ActionBarWrapper.java
  50. 1
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/nineoldandroids/animation/ValueAnimator.java
  51. 3
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/view/menu/ActionMenuItemView.java
  52. 2
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/view/menu/MenuBuilder.java
  53. 21
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/view/menu/MenuWrapper.java
  54. 9
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java
  55. 87
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/ActionBarView.java
  56. 5
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/CapitalizingButton.java
  57. 64
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/FakeDialogPhoneWindow.java
  58. 12
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/IcsColorDrawable.java
  59. 150
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/IcsLinearLayout.java
  60. 17
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/IcsListPopupWindow.java
  61. 60
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/IcsToast.java
  62. 2
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.java
  63. 113
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/TabsLinearLayout.java
  64. 14
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/widget/ActivityChooserView.java
  65. 4
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/widget/SearchView.java
  66. 31
      external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/widget/SuggestionsAdapter.java

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-hdpi/abs__dialog_full_holo_dark.9.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-hdpi/abs__dialog_full_holo_light.9.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-hdpi/abs__ic_commit_search_api_holo_dark.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-hdpi/abs__ic_commit_search_api_holo_light.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-hdpi/abs__ic_search.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-hdpi/abs__toast_frame.9.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-mdpi/abs__dialog_full_holo_dark.9.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 882 B

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-mdpi/abs__dialog_full_holo_light.9.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1003 B

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-mdpi/abs__ic_commit_search_api_holo_dark.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 B

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-mdpi/abs__ic_commit_search_api_holo_light.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 B

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-mdpi/abs__toast_frame.9.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-xhdpi/abs__dialog_full_holo_dark.9.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-xhdpi/abs__dialog_full_holo_light.9.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-xhdpi/abs__ic_commit_search_api_holo_dark.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 703 B

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-xhdpi/abs__ic_commit_search_api_holo_light.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 B

BIN
external/JakeWharton-ActionBarSherlock/library/res/drawable-xhdpi/abs__toast_frame.9.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

1
external/JakeWharton-ActionBarSherlock/library/res/layout-xlarge/abs__screen_action_bar.xml vendored

@ -21,6 +21,7 @@ This is an optimized layout for a screen with the Action Bar enabled.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:orientation="vertical"
android:fitsSystemWindows="true" android:fitsSystemWindows="true"
android:splitMotionEvents="false"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent"> android:layout_height="fill_parent">
<com.actionbarsherlock.internal.widget.ActionBarContainer <com.actionbarsherlock.internal.widget.ActionBarContainer

3
external/JakeWharton-ActionBarSherlock/library/res/layout-xlarge/abs__screen_action_bar_overlay.xml vendored

@ -20,7 +20,8 @@ the Action Bar enabled overlaying application content.
--> -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:fitsSystemWindows="true"> android:fitsSystemWindows="true"
android:splitMotionEvents="false">
<com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout android:id="@+id/abs__content" <com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout android:id="@+id/abs__content"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" /> android:layout_height="fill_parent" />

2
external/JakeWharton-ActionBarSherlock/library/res/layout/abs__action_bar_tab_bar_view.xml vendored

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<com.actionbarsherlock.internal.widget.IcsLinearLayout <com.actionbarsherlock.internal.widget.TabsLinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
style="?attr/actionBarTabBarStyle" style="?attr/actionBarTabBarStyle"
/> />

46
external/JakeWharton-ActionBarSherlock/library/res/layout/abs__dialog_title_holo.xml vendored

@ -1,46 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2011, The Android Open Source Project
**
** 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.
*/
This is an optimized layout for a screen, with the minimum set of features
enabled.
-->
<com.actionbarsherlock.internal.widget.FakeDialogPhoneWindow xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:fitsSystemWindows="true">
<TextView android:id="@android:id/title" style="?android:attr/windowTitleStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="@dimen/abs__alert_dialog_title_height"
android:paddingLeft="16dip"
android:paddingRight="16dip"
android:gravity="center_vertical|left" />
<View android:id="@+id/abs__titleDivider"
android:layout_width="fill_parent"
android:layout_height="2dip"
android:background="@color/abs__holo_blue_light" />
<FrameLayout
android:layout_width="match_parent" android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:foreground="?attr/windowContentOverlay">
<FrameLayout android:id="@+id/abs__content"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</FrameLayout>
</com.actionbarsherlock.internal.widget.FakeDialogPhoneWindow>

59
external/JakeWharton-ActionBarSherlock/library/res/layout/abs__list_menu_item_layout.xml vendored

@ -1,59 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2007 The Android Open Source Project
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.
-->
<com.actionbarsherlock.internal.view.menu.ListMenuItemView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?attr/listPreferredItemHeightSmall">
<!-- Icon will be inserted here. -->
<!-- The title and summary have some gap between them, and this 'group' should be centered vertically. -->
<RelativeLayout
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="?attr/listPreferredItemPaddingLeft"
android:layout_marginRight="?attr/listPreferredItemPaddingRight"
android:duplicateParentState="true">
<TextView
android:id="@+id/abs__title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:textAppearance="?attr/textAppearanceListItemSmall"
android:singleLine="true"
android:duplicateParentState="true"
android:ellipsize="marquee"
android:fadingEdge="horizontal" />
<TextView
android:id="@+id/abs__shortcut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/abs__title"
android:layout_alignParentLeft="true"
android:textAppearance="?attr/textAppearanceSmall"
android:singleLine="true"
android:duplicateParentState="true" />
</RelativeLayout>
<!-- Checkbox, and/or radio button will be inserted here. -->
</com.actionbarsherlock.internal.view.menu.ListMenuItemView>

3
external/JakeWharton-ActionBarSherlock/library/res/layout/abs__screen_action_bar.xml vendored

@ -22,7 +22,8 @@ This is an optimized layout for a screen with the Action Bar enabled.
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical"
android:fitsSystemWindows="true"> android:fitsSystemWindows="true"
android:splitMotionEvents="false">
<com.actionbarsherlock.internal.widget.ActionBarContainer <com.actionbarsherlock.internal.widget.ActionBarContainer
android:id="@+id/abs__action_bar_container" android:id="@+id/abs__action_bar_container"
android:layout_width="fill_parent" android:layout_width="fill_parent"

3
external/JakeWharton-ActionBarSherlock/library/res/layout/abs__screen_action_bar_overlay.xml vendored

@ -22,7 +22,8 @@ the Action Bar enabled overlaying application content.
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fitsSystemWindows="true"> android:fitsSystemWindows="true"
android:splitMotionEvents="false">
<com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout android:id="@+id/abs__content" <com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout android:id="@+id/abs__content"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />

2
external/JakeWharton-ActionBarSherlock/library/res/layout/abs__simple_dropdown_hint.xml vendored

@ -19,7 +19,7 @@
--> -->
<TextView xmlns:android="http://schemas.android.com/apk/res/android" <TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1" android:id="@android:id/text1"
android:textAppearance="?android:attr/dropDownHintAppearance" android:textAppearance="?attr/dropDownHintAppearance"
android:singleLine="true" android:singleLine="true"
android:layout_marginLeft="3dip" android:layout_marginLeft="3dip"
android:layout_marginTop="3dip" android:layout_marginTop="3dip"

2
external/JakeWharton-ActionBarSherlock/library/res/values-large-mdpi-1024x600/abs__dimens.xml vendored

@ -32,5 +32,5 @@
<dimen name="abs__action_bar_subtitle_bottom_margin">9dip</dimen> <dimen name="abs__action_bar_subtitle_bottom_margin">9dip</dimen>
<!-- Minimum width for an action button in the menu area of an action bar --> <!-- Minimum width for an action button in the menu area of an action bar -->
<dimen name="action_button_min_width">64dip</dimen> <dimen name="abs__action_button_min_width">64dip</dimen>
</resources> </resources>

29
external/JakeWharton-ActionBarSherlock/library/res/values-large/abs__dimens.xml vendored

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/* //device/apps/common/assets/res/any/dimens.xml
**
** Copyright 2006, The Android Open Source Project
**
** 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.
*/
-->
<resources>
<!-- The platform's desired minimum size for a dialog's width when it
is along the major axis (that is the screen is landscape). This may
be either a fraction or a dimension. -->
<item type="dimen" name="abs__dialog_min_width_major">55%</item>
<!-- The platform's desired minimum size for a dialog's width when it
is along the minor axis (that is the screen is portrait). This may
be either a fraction or a dimension. -->
<item type="dimen" name="abs__dialog_min_width_minor">80%</item>
</resources>

2
external/JakeWharton-ActionBarSherlock/library/res/values-sw600dp/abs__dimens.xml vendored

@ -34,5 +34,5 @@
<integer name="abs__max_action_buttons">5</integer> <integer name="abs__max_action_buttons">5</integer>
<!-- Minimum width for an action button in the menu area of an action bar --> <!-- Minimum width for an action button in the menu area of an action bar -->
<dimen name="action_button_min_width">64dip</dimen> <dimen name="abs__action_button_min_width">64dip</dimen>
</resources> </resources>

5
external/JakeWharton-ActionBarSherlock/library/res/values-v14/abs__themes.xml vendored

@ -26,9 +26,4 @@
<item name="android:windowActionBar">false</item> <item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item> <item name="android:windowNoTitle">true</item>
</style> </style>
<style name="Theme.Sherlock.Dialog" parent="android:Theme.Holo.Dialog">
</style>
<style name="Theme.Sherlock.Light.Dialog" parent="android:Theme.Holo.Light.Dialog">
</style>
</resources> </resources>

2
external/JakeWharton-ActionBarSherlock/library/res/values/abs__attrs.xml vendored

@ -181,7 +181,7 @@
<!-- Drawable used as a background for activated items. --> <!-- Drawable used as a background for activated items. -->
<attr name="activatedBackgroundIndicator" format="reference" /> <attr name="activatedBackgroundIndicator" format="reference" />
<attr name="android:windowIsFloating" /> <attr name="dropDownHintAppearance" format="reference" />
</declare-styleable> </declare-styleable>

3
external/JakeWharton-ActionBarSherlock/library/res/values/abs__colors.xml vendored

@ -21,7 +21,4 @@
<color name="abs__bright_foreground_holo_light">@color/abs__background_holo_dark</color> <color name="abs__bright_foreground_holo_light">@color/abs__background_holo_dark</color>
<color name="abs__bright_foreground_disabled_holo_dark">#ff4c4c4c</color> <color name="abs__bright_foreground_disabled_holo_dark">#ff4c4c4c</color>
<color name="abs__bright_foreground_disabled_holo_light">#ffb2b2b2</color> <color name="abs__bright_foreground_disabled_holo_light">#ffb2b2b2</color>
<color name="abs__bright_foreground_inverse_holo_dark">@color/abs__bright_foreground_holo_light</color>
<color name="abs__bright_foreground_inverse_holo_light">@color/abs__bright_foreground_holo_dark</color>
<color name="abs__holo_blue_light">#ff33b5e5</color>
</resources> </resources>

12
external/JakeWharton-ActionBarSherlock/library/res/values/abs__dimens.xml vendored

@ -36,18 +36,6 @@
<!-- Minimum width for an action button in the menu area of an action bar --> <!-- Minimum width for an action button in the menu area of an action bar -->
<dimen name="abs__action_button_min_width">56dip</dimen> <dimen name="abs__action_button_min_width">56dip</dimen>
<!-- Dialog title height -->
<dimen name="abs__alert_dialog_title_height">64dip</dimen>
<!-- The platform's desired minimum size for a dialog's width when it
is along the major axis (that is the screen is landscape). This may
be either a fraction or a dimension. -->
<item type="dimen" name="abs__dialog_min_width_major">65%</item>
<!-- The platform's desired minimum size for a dialog's width when it
is along the minor axis (that is the screen is portrait). This may
be either a fraction or a dimension. -->
<item type="dimen" name="abs__dialog_min_width_minor">95%</item>
<!-- Text padding for dropdown items --> <!-- Text padding for dropdown items -->
<dimen name="abs__dropdownitem_text_padding_left">8dip</dimen> <dimen name="abs__dropdownitem_text_padding_left">8dip</dimen>

4
external/JakeWharton-ActionBarSherlock/library/res/values/abs__strings.xml vendored

@ -29,10 +29,6 @@
<!-- Title for a button to expand the list of activities in ActivityChooserView [CHAR LIMIT=25] --> <!-- Title for a button to expand the list of activities in ActivityChooserView [CHAR LIMIT=25] -->
<string name="abs__activity_chooser_view_see_all">See all...</string> <string name="abs__activity_chooser_view_see_all">See all...</string>
<!-- Title default for a dialog showing possible activities in ActivityChooserView [CHAR LIMIT=25] -->
<string name="abs__activity_chooser_view_dialog_title_default">Select activity</string>
<!-- Title for a dialog showing possible activities for sharing in ShareActionProvider [CHAR LIMIT=25] -->
<string name="abs__share_action_provider_share_with">Share with...</string>
<!-- Description of the shwoing of a popup window with activities to choose from. [CHAR LIMIT=NONE] --> <!-- Description of the shwoing of a popup window with activities to choose from. [CHAR LIMIT=NONE] -->
<string name="abs__activitychooserview_choose_application">Choose an application</string> <string name="abs__activitychooserview_choose_application">Choose an application</string>
<!-- Description of the choose target button in a ShareActionProvider (share UI). [CHAR LIMIT=NONE] --> <!-- Description of the choose target button in a ShareActionProvider (share UI). [CHAR LIMIT=NONE] -->

56
external/JakeWharton-ActionBarSherlock/library/res/values/abs__styles.xml vendored

@ -302,25 +302,6 @@
<style name="DialogWindowTitle.Sherlock" parent="Widget">
<item name="android:maxLines">1</item>
<item name="android:scrollHorizontally">true</item>
<item name="android:textAppearance">@style/TextAppearance.Sherlock.DialogWindowTitle</item>
<item name="android:minHeight">@dimen/abs__alert_dialog_title_height</item>
<item name="android:paddingLeft">16dip</item>
<item name="android:paddingRight">16dip</item>
</style>
<style name="DialogWindowTitle.Sherlock.Light" parent="Widget">
<item name="android:maxLines">1</item>
<item name="android:scrollHorizontally">true</item>
<item name="android:textAppearance">@style/TextAppearance.Sherlock.Light.DialogWindowTitle</item>
<item name="android:minHeight">@dimen/abs__alert_dialog_title_height</item>
<item name="android:paddingLeft">16dip</item>
<item name="android:paddingRight">16dip</item>
</style>
<style name="TextAppearance.Sherlock.Widget.ActionBar.Menu" parent="Widget"> <style name="TextAppearance.Sherlock.Widget.ActionBar.Menu" parent="Widget">
<item name="android:textSize">12sp</item> <item name="android:textSize">12sp</item>
<item name="android:textStyle">bold</item> <item name="android:textStyle">bold</item>
@ -387,15 +368,6 @@
<item name="android:textStyle">normal</item> <item name="android:textStyle">normal</item>
</style> </style>
<style name="TextAppearance.Sherlock.DialogWindowTitle" parent="Widget">
<item name="android:textSize">22sp</item>
<item name="android:textColor">@color/abs__holo_blue_light</item>
</style>
<style name="TextAppearance.Sherlock.Light.DialogWindowTitle" parent="Widget">
<item name="android:textSize">22sp</item>
<item name="android:textColor">@color/abs__holo_blue_light</item>
</style>
<style name="Sherlock.__TextAppearance.Small" parent="Widget"> <style name="Sherlock.__TextAppearance.Small" parent="Widget">
<item name="android:textSize">14sp</item> <item name="android:textSize">14sp</item>
<item name="android:textColor">?android:attr/textColorSecondary</item> <item name="android:textColor">?android:attr/textColorSecondary</item>
@ -409,4 +381,32 @@
<item name="android:textColor">?textColorPrimary</item> <item name="android:textColor">?textColorPrimary</item>
<item name="android:textSize">14sp</item> <item name="android:textSize">14sp</item>
</style> </style>
<style name="TextAppearance.Sherlock" parent="@android:style/TextAppearance"/>
<style name="TextAppearance.Sherlock.SearchResult">
<item name="android:textStyle">normal</item>
<item name="android:textColor">?android:attr/textColorPrimary</item>
<item name="android:textColorHint">?android:attr/textColorHint</item>
</style>
<style name="TextAppearance.Sherlock.SearchResult.Title">
<item name="android:textSize">18sp</item>
</style>
<style name="TextAppearance.Sherlock.SearchResult.Subtitle">
<item name="android:textSize">14sp</item>
<item name="android:textColor">?android:attr/textColorSecondary</item>
</style>
<style name="TextAppearance.Sherlock.Light.SearchResult" parent="TextAppearance.Sherlock.SearchResult"/>
<style name="TextAppearance.Sherlock.Light.SearchResult.Title">
<item name="android:textSize">18sp</item>
</style>
<style name="TextAppearance.Sherlock.Light.SearchResult.Subtitle">
<item name="android:textSize">14sp</item>
<item name="android:textColor">?android:attr/textColorSecondary</item>
</style>
</resources> </resources>

84
external/JakeWharton-ActionBarSherlock/library/res/values/abs__themes.xml vendored

@ -9,8 +9,6 @@
</style> </style>
<style name="Sherlock.__Theme.DarkActionBar" parent="Theme.Sherlock.Light"> <style name="Sherlock.__Theme.DarkActionBar" parent="Theme.Sherlock.Light">
</style> </style>
<style name="Sherlock.__Theme.Dialog" parent="android:Theme.Dialog">
</style>
<style name="Theme.Sherlock" parent="Sherlock.__Theme"> <style name="Theme.Sherlock" parent="Sherlock.__Theme">
<!-- Action bar styles (from Theme.Holo) --> <!-- Action bar styles (from Theme.Holo) -->
@ -62,6 +60,8 @@
<item name="textAppearanceSmall">@style/TextAppearance.Sherlock.Small</item> <item name="textAppearanceSmall">@style/TextAppearance.Sherlock.Small</item>
<item name="textAppearanceLargePopupMenu">@style/TextAppearance.Sherlock.Widget.PopupMenu.Large</item> <item name="textAppearanceLargePopupMenu">@style/TextAppearance.Sherlock.Widget.PopupMenu.Large</item>
<item name="textAppearanceSmallPopupMenu">@style/TextAppearance.Sherlock.Widget.PopupMenu.Small</item> <item name="textAppearanceSmallPopupMenu">@style/TextAppearance.Sherlock.Widget.PopupMenu.Small</item>
<item name="textAppearanceSearchResultTitle">@style/TextAppearance.Sherlock.SearchResult.Title</item>
<item name="textAppearanceSearchResultSubtitle">@style/TextAppearance.Sherlock.SearchResult.Subtitle</item>
<item name="popupMenuStyle">@style/Widget.Sherlock.PopupMenu</item> <item name="popupMenuStyle">@style/Widget.Sherlock.PopupMenu</item>
<!-- Internal --><item name="listPopupWindowStyle">@style/Widget.Sherlock.ListPopupWindow</item> <!-- Internal --><item name="listPopupWindowStyle">@style/Widget.Sherlock.ListPopupWindow</item>
@ -74,8 +74,12 @@
<item name="searchViewGoIcon">@drawable/abs__ic_go</item> <item name="searchViewGoIcon">@drawable/abs__ic_go</item>
<item name="searchViewVoiceIcon">@drawable/abs__ic_voice_search</item> <item name="searchViewVoiceIcon">@drawable/abs__ic_voice_search</item>
<item name="searchAutoCompleteTextView">@style/Widget.Sherlock.SearchAutoCompleteTextView</item> <item name="searchAutoCompleteTextView">@style/Widget.Sherlock.SearchAutoCompleteTextView</item>
<item name="android:dropDownHintAppearance">@style/TextAppearance.Sherlock.Widget.DropDownHint</item> <item name="dropDownHintAppearance">@style/TextAppearance.Sherlock.Widget.DropDownHint</item>
<item name="searchViewEditQuery">@drawable/abs__ic_commit_search_api_holo_dark</item>
<item name="searchViewEditQueryBackground">?selectableItemBackground</item>
<item name="searchResultListItemHeight">58dp</item>
<item name="windowNoTitle">false</item>
<item name="windowActionBar">true</item> <item name="windowActionBar">true</item>
<item name="windowActionModeOverlay">false</item> <item name="windowActionModeOverlay">false</item>
<item name="windowContentOverlay">@null</item> <item name="windowContentOverlay">@null</item>
@ -130,6 +134,8 @@
<item name="textAppearanceSmall">@style/TextAppearance.Sherlock.Light.Small</item> <item name="textAppearanceSmall">@style/TextAppearance.Sherlock.Light.Small</item>
<item name="textAppearanceLargePopupMenu">@style/TextAppearance.Sherlock.Light.Widget.PopupMenu.Large</item> <item name="textAppearanceLargePopupMenu">@style/TextAppearance.Sherlock.Light.Widget.PopupMenu.Large</item>
<item name="textAppearanceSmallPopupMenu">@style/TextAppearance.Sherlock.Light.Widget.PopupMenu.Small</item> <item name="textAppearanceSmallPopupMenu">@style/TextAppearance.Sherlock.Light.Widget.PopupMenu.Small</item>
<item name="textAppearanceSearchResultTitle">@style/TextAppearance.Sherlock.Light.SearchResult.Title</item>
<item name="textAppearanceSearchResultSubtitle">@style/TextAppearance.Sherlock.Light.SearchResult.Subtitle</item>
<item name="popupMenuStyle">@style/Widget.Sherlock.Light.PopupMenu</item> <item name="popupMenuStyle">@style/Widget.Sherlock.Light.PopupMenu</item>
<!-- Internal --><item name="listPopupWindowStyle">@style/Widget.Sherlock.Light.ListPopupWindow</item> <!-- Internal --><item name="listPopupWindowStyle">@style/Widget.Sherlock.Light.ListPopupWindow</item>
@ -142,8 +148,12 @@
<item name="searchViewGoIcon">@drawable/abs__ic_go_search_api_holo_light</item> <item name="searchViewGoIcon">@drawable/abs__ic_go_search_api_holo_light</item>
<item name="searchViewVoiceIcon">@drawable/abs__ic_voice_search_api_holo_light</item> <item name="searchViewVoiceIcon">@drawable/abs__ic_voice_search_api_holo_light</item>
<item name="searchAutoCompleteTextView">@style/Widget.Sherlock.Light.SearchAutoCompleteTextView</item> <item name="searchAutoCompleteTextView">@style/Widget.Sherlock.Light.SearchAutoCompleteTextView</item>
<item name="android:dropDownHintAppearance">@style/TextAppearance.Sherlock.Widget.DropDownHint</item> <item name="dropDownHintAppearance">@style/TextAppearance.Sherlock.Widget.DropDownHint</item>
<item name="searchViewEditQuery">@drawable/abs__ic_commit_search_api_holo_light</item>
<item name="searchViewEditQueryBackground">?selectableItemBackground</item>
<item name="searchResultListItemHeight">58dp</item>
<item name="windowNoTitle">false</item>
<item name="windowActionBar">true</item> <item name="windowActionBar">true</item>
<item name="windowActionModeOverlay">false</item> <item name="windowActionModeOverlay">false</item>
<item name="windowContentOverlay">@null</item> <item name="windowContentOverlay">@null</item>
@ -171,6 +181,18 @@
<item name="actionModePopupWindowStyle">@style/Widget.Sherlock.PopupWindow.ActionMode</item> <item name="actionModePopupWindowStyle">@style/Widget.Sherlock.PopupWindow.ActionMode</item>
<item name="actionModeShareDrawable">@drawable/abs__ic_menu_share_holo_dark</item> <item name="actionModeShareDrawable">@drawable/abs__ic_menu_share_holo_dark</item>
<!-- We want the dark action bar SearchView stuff -->
<item name="searchDropdownBackground">@drawable/abs__search_dropdown_dark</item>
<item name="searchViewTextField">@drawable/abs__textfield_searchview_holo_dark</item>
<item name="searchViewTextFieldRight">@drawable/abs__textfield_searchview_right_holo_dark</item>
<item name="searchViewCloseIcon">@drawable/abs__ic_clear</item>
<item name="searchViewSearchIcon">@drawable/abs__ic_search</item>
<item name="searchViewGoIcon">@drawable/abs__ic_go</item>
<item name="searchViewVoiceIcon">@drawable/abs__ic_voice_search</item>
<item name="searchAutoCompleteTextView">@style/Widget.Sherlock.SearchAutoCompleteTextView</item>
<item name="dropDownHintAppearance">@style/TextAppearance.Sherlock.Widget.DropDownHint</item>
<item name="searchViewEditQuery">@drawable/abs__ic_commit_search_api_holo_dark</item>
</style> </style>
@ -182,58 +204,4 @@
<item name="windowActionBar">false</item> <item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item> <item name="windowNoTitle">true</item>
</style> </style>
<style name="Theme.Sherlock.Dialog" parent="android:Theme">
<item name="android:windowFrame">@null</item>
<item name="android:windowTitleStyle">@style/DialogWindowTitle.Sherlock</item>
<item name="android:windowBackground">@drawable/abs__dialog_full_holo_dark</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowActionModeOverlay">true</item>
<item name="android:windowCloseOnTouchOutside">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimAmount">0.6</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:textColorPrimary">@color/abs__primary_text_holo_dark</item>
<item name="android:textColorPrimaryInverse">@color/abs__primary_text_holo_light</item>
<item name="windowMinWidthMajor">@dimen/abs__dialog_min_width_major</item>
<item name="windowMinWidthMinor">@dimen/abs__dialog_min_width_minor</item>
<item name="windowActionBar">false</item>
<item name="windowContentOverlay">@null</item>
</style>
<style name="Theme.Sherlock.Light.Dialog" parent="android:Theme.Light">
<item name="android:windowFrame">@null</item>
<item name="android:windowTitleStyle">@style/DialogWindowTitle.Sherlock.Light</item>
<item name="android:windowBackground">@drawable/abs__dialog_full_holo_light</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowActionModeOverlay">true</item>
<item name="android:windowCloseOnTouchOutside">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimAmount">0.6</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:textColorPrimary">@color/abs__primary_text_holo_light</item>
<item name="android:textColorPrimaryInverse">@color/abs__primary_text_holo_dark</item>
<item name="windowMinWidthMajor">@dimen/abs__dialog_min_width_major</item>
<item name="windowMinWidthMinor">@dimen/abs__dialog_min_width_minor</item>
<item name="windowActionBar">false</item>
<item name="windowContentOverlay">@null</item>
</style>
</resources> </resources>

21
external/JakeWharton-ActionBarSherlock/library/src/android/support/v4/app/Watson.java vendored

@ -6,15 +6,14 @@ import android.view.Window;
import com.actionbarsherlock.ActionBarSherlock.OnCreatePanelMenuListener; import com.actionbarsherlock.ActionBarSherlock.OnCreatePanelMenuListener;
import com.actionbarsherlock.ActionBarSherlock.OnMenuItemSelectedListener; import com.actionbarsherlock.ActionBarSherlock.OnMenuItemSelectedListener;
import com.actionbarsherlock.ActionBarSherlock.OnPreparePanelListener; import com.actionbarsherlock.ActionBarSherlock.OnPreparePanelListener;
import com.actionbarsherlock.BuildConfig;
import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.MenuItem;
import java.util.ArrayList; import java.util.ArrayList;
/** I'm in ur package. Stealing ur variables. */ /** I'm in ur package. Stealing ur variables. */
public abstract class Watson extends FragmentActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener { public abstract class Watson extends FragmentActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener {
private static final boolean DEBUG = false;
private static final String TAG = "Watson"; private static final String TAG = "Watson";
/** Fragment interface for menu creation callback. */ /** Fragment interface for menu creation callback. */
@ -39,11 +38,11 @@ public abstract class Watson extends FragmentActivity implements OnCreatePanelMe
@Override @Override
public boolean onCreatePanelMenu(int featureId, Menu menu) { public boolean onCreatePanelMenu(int featureId, Menu menu) {
if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu); if (BuildConfig.DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu);
if (featureId == Window.FEATURE_OPTIONS_PANEL) { if (featureId == Window.FEATURE_OPTIONS_PANEL) {
boolean result = onCreateOptionsMenu(menu); boolean result = onCreateOptionsMenu(menu);
if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] activity create result: " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[onCreatePanelMenu] activity create result: " + result);
MenuInflater inflater = getSupportMenuInflater(); MenuInflater inflater = getSupportMenuInflater();
boolean show = false; boolean show = false;
@ -73,10 +72,10 @@ public abstract class Watson extends FragmentActivity implements OnCreatePanelMe
mCreatedMenus = newMenus; mCreatedMenus = newMenus;
if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] fragments create result: " + show); if (BuildConfig.DEBUG) Log.d(TAG, "[onCreatePanelMenu] fragments create result: " + show);
result |= show; result |= show;
if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result);
return result; return result;
} }
return false; return false;
@ -84,11 +83,11 @@ public abstract class Watson extends FragmentActivity implements OnCreatePanelMe
@Override @Override
public boolean onPreparePanel(int featureId, View view, Menu menu) { public boolean onPreparePanel(int featureId, View view, Menu menu) {
if (DEBUG) Log.d(TAG, "[onPreparePanel] featureId: " + featureId + ", view: " + view + " menu: " + menu); if (BuildConfig.DEBUG) Log.d(TAG, "[onPreparePanel] featureId: " + featureId + ", view: " + view + " menu: " + menu);
if (featureId == Window.FEATURE_OPTIONS_PANEL) { if (featureId == Window.FEATURE_OPTIONS_PANEL) {
boolean result = onPrepareOptionsMenu(menu); boolean result = onPrepareOptionsMenu(menu);
if (DEBUG) Log.d(TAG, "[onPreparePanel] activity prepare result: " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[onPreparePanel] activity prepare result: " + result);
boolean show = false; boolean show = false;
if (mFragments.mAdded != null) { if (mFragments.mAdded != null) {
@ -101,11 +100,11 @@ public abstract class Watson extends FragmentActivity implements OnCreatePanelMe
} }
} }
if (DEBUG) Log.d(TAG, "[onPreparePanel] fragments prepare result: " + show); if (BuildConfig.DEBUG) Log.d(TAG, "[onPreparePanel] fragments prepare result: " + show);
result |= show; result |= show;
result &= menu.hasVisibleItems(); result &= menu.hasVisibleItems();
if (DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result);
return result; return result;
} }
return false; return false;
@ -113,7 +112,7 @@ public abstract class Watson extends FragmentActivity implements OnCreatePanelMe
@Override @Override
public boolean onMenuItemSelected(int featureId, MenuItem item) { public boolean onMenuItemSelected(int featureId, MenuItem item) {
if (DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item); if (BuildConfig.DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item);
if (featureId == Window.FEATURE_OPTIONS_PANEL) { if (featureId == Window.FEATURE_OPTIONS_PANEL) {
if (onOptionsItemSelected(item)) { if (onOptionsItemSelected(item)) {

51
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/ActionBarSherlock.java vendored

@ -1,14 +1,5 @@
package com.actionbarsherlock; package com.actionbarsherlock;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Iterator;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.res.Configuration; import android.content.res.Configuration;
@ -27,6 +18,16 @@ import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.MenuItem;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Iterator;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
/** /**
* <p>Helper for implementing the action bar design pattern across all versions * <p>Helper for implementing the action bar design pattern across all versions
@ -40,7 +41,6 @@ import com.actionbarsherlock.view.MenuItem;
*/ */
public abstract class ActionBarSherlock { public abstract class ActionBarSherlock {
protected static final String TAG = "ActionBarSherlock"; protected static final String TAG = "ActionBarSherlock";
protected static final boolean DEBUG = false;
private static final Class<?>[] CONSTRUCTOR_ARGS = new Class[] { Activity.class, int.class }; private static final Class<?>[] CONSTRUCTOR_ARGS = new Class[] { Activity.class, int.class };
private static final HashMap<Implementation, Class<? extends ActionBarSherlock>> IMPLEMENTATIONS = private static final HashMap<Implementation, Class<? extends ActionBarSherlock>> IMPLEMENTATIONS =
@ -122,12 +122,12 @@ public abstract class ActionBarSherlock {
if (!implementationClass.isAnnotationPresent(Implementation.class)) { if (!implementationClass.isAnnotationPresent(Implementation.class)) {
throw new IllegalArgumentException("Class " + implementationClass.getSimpleName() + " is not annotated with @Implementation"); throw new IllegalArgumentException("Class " + implementationClass.getSimpleName() + " is not annotated with @Implementation");
} else if (IMPLEMENTATIONS.containsValue(implementationClass)) { } else if (IMPLEMENTATIONS.containsValue(implementationClass)) {
if (DEBUG) Log.w(TAG, "Class " + implementationClass.getSimpleName() + " already registered"); if (BuildConfig.DEBUG) Log.w(TAG, "Class " + implementationClass.getSimpleName() + " already registered");
return; return;
} }
Implementation impl = implementationClass.getAnnotation(Implementation.class); Implementation impl = implementationClass.getAnnotation(Implementation.class);
if (DEBUG) Log.i(TAG, "Registering " + implementationClass.getSimpleName() + " with qualifier " + impl); if (BuildConfig.DEBUG) Log.i(TAG, "Registering " + implementationClass.getSimpleName() + " with qualifier " + impl);
IMPLEMENTATIONS.put(impl, implementationClass); IMPLEMENTATIONS.put(impl, implementationClass);
} }
@ -223,7 +223,7 @@ public abstract class ActionBarSherlock {
throw new IllegalStateException("No implementations match configuration."); throw new IllegalStateException("No implementations match configuration.");
} }
Class<? extends ActionBarSherlock> impl = impls.values().iterator().next(); Class<? extends ActionBarSherlock> impl = impls.values().iterator().next();
if (DEBUG) Log.i(TAG, "Using implementation: " + impl.getSimpleName()); if (BuildConfig.DEBUG) Log.i(TAG, "Using implementation: " + impl.getSimpleName());
try { try {
Constructor<? extends ActionBarSherlock> ctor = impl.getConstructor(CONSTRUCTOR_ARGS); Constructor<? extends ActionBarSherlock> ctor = impl.getConstructor(CONSTRUCTOR_ARGS);
@ -253,7 +253,7 @@ public abstract class ActionBarSherlock {
protected ActionBarSherlock(Activity activity, int flags) { protected ActionBarSherlock(Activity activity, int flags) {
if (DEBUG) Log.d(TAG, "[<ctor>] activity: " + activity + ", flags: " + flags); if (BuildConfig.DEBUG) Log.d(TAG, "[<ctor>] activity: " + activity + ", flags: " + flags);
mActivity = activity; mActivity = activity;
mIsDelegate = (flags & FLAG_DELEGATE) != 0; mIsDelegate = (flags & FLAG_DELEGATE) != 0;
@ -551,7 +551,7 @@ public abstract class ActionBarSherlock {
* @return {@code true} if menu creation should proceed. * @return {@code true} if menu creation should proceed.
*/ */
protected final boolean callbackCreateOptionsMenu(Menu menu) { protected final boolean callbackCreateOptionsMenu(Menu menu) {
if (DEBUG) Log.d(TAG, "[callbackCreateOptionsMenu] menu: " + menu); if (BuildConfig.DEBUG) Log.d(TAG, "[callbackCreateOptionsMenu] menu: " + menu);
boolean result = true; boolean result = true;
if (mActivity instanceof OnCreatePanelMenuListener) { if (mActivity instanceof OnCreatePanelMenuListener) {
@ -562,7 +562,7 @@ public abstract class ActionBarSherlock {
result = listener.onCreateOptionsMenu(menu); result = listener.onCreateOptionsMenu(menu);
} }
if (DEBUG) Log.d(TAG, "[callbackCreateOptionsMenu] returning " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[callbackCreateOptionsMenu] returning " + result);
return result; return result;
} }
@ -572,7 +572,7 @@ public abstract class ActionBarSherlock {
* @return {@code true} if menu preparation should proceed. * @return {@code true} if menu preparation should proceed.
*/ */
protected final boolean callbackPrepareOptionsMenu(Menu menu) { protected final boolean callbackPrepareOptionsMenu(Menu menu) {
if (DEBUG) Log.d(TAG, "[callbackPrepareOptionsMenu] menu: " + menu); if (BuildConfig.DEBUG) Log.d(TAG, "[callbackPrepareOptionsMenu] menu: " + menu);
boolean result = true; boolean result = true;
if (mActivity instanceof OnPreparePanelListener) { if (mActivity instanceof OnPreparePanelListener) {
@ -583,7 +583,7 @@ public abstract class ActionBarSherlock {
result = listener.onPrepareOptionsMenu(menu); result = listener.onPrepareOptionsMenu(menu);
} }
if (DEBUG) Log.d(TAG, "[callbackPrepareOptionsMenu] returning " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[callbackPrepareOptionsMenu] returning " + result);
return result; return result;
} }
@ -595,7 +595,7 @@ public abstract class ActionBarSherlock {
* @return {@code true} if the item selection was handled in the callback. * @return {@code true} if the item selection was handled in the callback.
*/ */
protected final boolean callbackOptionsItemSelected(MenuItem item) { protected final boolean callbackOptionsItemSelected(MenuItem item) {
if (DEBUG) Log.d(TAG, "[callbackOptionsItemSelected] item: " + item.getTitleCondensed()); if (BuildConfig.DEBUG) Log.d(TAG, "[callbackOptionsItemSelected] item: " + item.getTitleCondensed());
boolean result = false; boolean result = false;
if (mActivity instanceof OnMenuItemSelectedListener) { if (mActivity instanceof OnMenuItemSelectedListener) {
@ -606,7 +606,7 @@ public abstract class ActionBarSherlock {
result = listener.onOptionsItemSelected(item); result = listener.onOptionsItemSelected(item);
} }
if (DEBUG) Log.d(TAG, "[callbackOptionsItemSelected] returning " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[callbackOptionsItemSelected] returning " + result);
return result; return result;
} }
@ -666,7 +666,7 @@ public abstract class ActionBarSherlock {
* @param view The desired content to display. * @param view The desired content to display.
*/ */
public void setContentView(View view) { public void setContentView(View view) {
if (DEBUG) Log.d(TAG, "[setContentView] view: " + view); if (BuildConfig.DEBUG) Log.d(TAG, "[setContentView] view: " + view);
setContentView(view, new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)); setContentView(view, new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT));
} }
@ -698,7 +698,7 @@ public abstract class ActionBarSherlock {
* Change the title associated with this activity. * Change the title associated with this activity.
*/ */
public void setTitle(int resId) { public void setTitle(int resId) {
if (DEBUG) Log.d(TAG, "[setTitle] resId: " + resId); if (BuildConfig.DEBUG) Log.d(TAG, "[setTitle] resId: " + resId);
setTitle(mActivity.getString(resId)); setTitle(mActivity.getString(resId));
} }
@ -767,7 +767,7 @@ public abstract class ActionBarSherlock {
* @return Menu inflater instance. * @return Menu inflater instance.
*/ */
public MenuInflater getMenuInflater() { public MenuInflater getMenuInflater() {
if (DEBUG) Log.d(TAG, "[getMenuInflater]"); if (BuildConfig.DEBUG) Log.d(TAG, "[getMenuInflater]");
// Make sure that action views can get an appropriate theme. // Make sure that action views can get an appropriate theme.
if (mMenuInflater == null) { if (mMenuInflater == null) {
@ -791,4 +791,9 @@ public abstract class ActionBarSherlock {
* @see ActionMode * @see ActionMode
*/ */
public abstract ActionMode startActionMode(ActionMode.Callback callback); public abstract ActionMode startActionMode(ActionMode.Callback callback);
/**
* Ensure that the action bar is attached.
*/
public void ensureActionBar() {}
} }

6
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockActivity.java vendored

@ -243,6 +243,12 @@ public abstract class SherlockActivity extends Activity implements OnCreatePanel
getSherlock().requestFeature((int)featureId); getSherlock().requestFeature((int)featureId);
} }
@Override
public View findViewById(int id) {
getSherlock().ensureActionBar();
return super.findViewById(id);
}
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// Progress Indication // Progress Indication

6
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockDialogFragment.java vendored

@ -8,9 +8,9 @@ import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.MenuItem;
import static com.actionbarsherlock.app.SherlockFragmentActivity.OnCreateOptionsMenuListener; import static android.support.v4.app.Watson.OnCreateOptionsMenuListener;
import static com.actionbarsherlock.app.SherlockFragmentActivity.OnOptionsItemSelectedListener; import static android.support.v4.app.Watson.OnOptionsItemSelectedListener;
import static com.actionbarsherlock.app.SherlockFragmentActivity.OnPrepareOptionsMenuListener; import static android.support.v4.app.Watson.OnPrepareOptionsMenuListener;
public class SherlockDialogFragment extends DialogFragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener { public class SherlockDialogFragment extends DialogFragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener {
private SherlockFragmentActivity mActivity; private SherlockFragmentActivity mActivity;

6
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockExpandableListActivity.java vendored

@ -232,6 +232,12 @@ public abstract class SherlockExpandableListActivity extends ExpandableListActiv
getSherlock().requestFeature((int)featureId); getSherlock().requestFeature((int)featureId);
} }
@Override
public View findViewById(int id) {
getSherlock().ensureActionBar();
return super.findViewById(id);
}
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// Progress Indication // Progress Indication

6
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockFragment.java vendored

@ -8,9 +8,9 @@ import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.MenuItem;
import static com.actionbarsherlock.app.SherlockFragmentActivity.OnCreateOptionsMenuListener; import static android.support.v4.app.Watson.OnCreateOptionsMenuListener;
import static com.actionbarsherlock.app.SherlockFragmentActivity.OnOptionsItemSelectedListener; import static android.support.v4.app.Watson.OnOptionsItemSelectedListener;
import static com.actionbarsherlock.app.SherlockFragmentActivity.OnPrepareOptionsMenuListener; import static android.support.v4.app.Watson.OnPrepareOptionsMenuListener;
public class SherlockFragment extends Fragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener { public class SherlockFragment extends Fragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener {
private SherlockFragmentActivity mActivity; private SherlockFragmentActivity mActivity;

26
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockFragmentActivity.java vendored

@ -9,6 +9,7 @@ import android.view.View;
import android.view.ViewGroup.LayoutParams; import android.view.ViewGroup.LayoutParams;
import android.view.Window; import android.view.Window;
import com.actionbarsherlock.ActionBarSherlock; import com.actionbarsherlock.ActionBarSherlock;
import com.actionbarsherlock.BuildConfig;
import com.actionbarsherlock.view.ActionMode; import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuInflater;
@ -19,7 +20,6 @@ import static com.actionbarsherlock.ActionBarSherlock.OnActionModeStartedListene
/** @see {@link android.support.v4.app.Watson} */ /** @see {@link android.support.v4.app.Watson} */
public class SherlockFragmentActivity extends Watson implements OnActionModeStartedListener, OnActionModeFinishedListener { public class SherlockFragmentActivity extends Watson implements OnActionModeStartedListener, OnActionModeFinishedListener {
private static final boolean DEBUG = false;
private static final String TAG = "SherlockFragmentActivity"; private static final String TAG = "SherlockFragmentActivity";
private ActionBarSherlock mSherlock; private ActionBarSherlock mSherlock;
@ -139,33 +139,33 @@ public class SherlockFragmentActivity extends Watson implements OnActionModeStar
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
public MenuInflater getSupportMenuInflater() { public MenuInflater getSupportMenuInflater() {
if (DEBUG) Log.d(TAG, "[getSupportMenuInflater]"); if (BuildConfig.DEBUG) Log.d(TAG, "[getSupportMenuInflater]");
return getSherlock().getMenuInflater(); return getSherlock().getMenuInflater();
} }
public void invalidateOptionsMenu() { public void invalidateOptionsMenu() {
if (DEBUG) Log.d(TAG, "[invalidateOptionsMenu]"); if (BuildConfig.DEBUG) Log.d(TAG, "[invalidateOptionsMenu]");
getSherlock().dispatchInvalidateOptionsMenu(); getSherlock().dispatchInvalidateOptionsMenu();
} }
public void supportInvalidateOptionsMenu() { public void supportInvalidateOptionsMenu() {
if (DEBUG) Log.d(TAG, "[supportInvalidateOptionsMenu]"); if (BuildConfig.DEBUG) Log.d(TAG, "[supportInvalidateOptionsMenu]");
invalidateOptionsMenu(); invalidateOptionsMenu();
} }
@Override @Override
public final boolean onCreatePanelMenu(int featureId, android.view.Menu menu) { public final boolean onCreatePanelMenu(int featureId, android.view.Menu menu) {
if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu); if (BuildConfig.DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu);
if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeCreate) { if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeCreate) {
mIgnoreNativeCreate = true; mIgnoreNativeCreate = true;
boolean result = getSherlock().dispatchCreateOptionsMenu(menu); boolean result = getSherlock().dispatchCreateOptionsMenu(menu);
mIgnoreNativeCreate = false; mIgnoreNativeCreate = false;
if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result);
return result; return result;
} }
return super.onCreatePanelMenu(featureId, menu); return super.onCreatePanelMenu(featureId, menu);
@ -178,14 +178,14 @@ public class SherlockFragmentActivity extends Watson implements OnActionModeStar
@Override @Override
public final boolean onPreparePanel(int featureId, View view, android.view.Menu menu) { public final boolean onPreparePanel(int featureId, View view, android.view.Menu menu) {
if (DEBUG) Log.d(TAG, "[onPreparePanel] featureId: " + featureId + ", view: " + view + ", menu: " + menu); if (BuildConfig.DEBUG) Log.d(TAG, "[onPreparePanel] featureId: " + featureId + ", view: " + view + ", menu: " + menu);
if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativePrepare) { if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativePrepare) {
mIgnoreNativePrepare = true; mIgnoreNativePrepare = true;
boolean result = getSherlock().dispatchPrepareOptionsMenu(menu); boolean result = getSherlock().dispatchPrepareOptionsMenu(menu);
mIgnoreNativePrepare = false; mIgnoreNativePrepare = false;
if (DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result);
return result; return result;
} }
return super.onPreparePanel(featureId, view, menu); return super.onPreparePanel(featureId, view, menu);
@ -198,14 +198,14 @@ public class SherlockFragmentActivity extends Watson implements OnActionModeStar
@Override @Override
public final boolean onMenuItemSelected(int featureId, android.view.MenuItem item) { public final boolean onMenuItemSelected(int featureId, android.view.MenuItem item) {
if (DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item); if (BuildConfig.DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item);
if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeSelected) { if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeSelected) {
mIgnoreNativeSelected = true; mIgnoreNativeSelected = true;
boolean result = getSherlock().dispatchOptionsItemSelected(item); boolean result = getSherlock().dispatchOptionsItemSelected(item);
mIgnoreNativeSelected = false; mIgnoreNativeSelected = false;
if (DEBUG) Log.d(TAG, "[onMenuItemSelected] returning " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[onMenuItemSelected] returning " + result);
return result; return result;
} }
return super.onMenuItemSelected(featureId, item); return super.onMenuItemSelected(featureId, item);
@ -276,6 +276,12 @@ public class SherlockFragmentActivity extends Watson implements OnActionModeStar
getSherlock().requestFeature((int)featureId); getSherlock().requestFeature((int)featureId);
} }
@Override
public View findViewById(int id) {
getSherlock().ensureActionBar();
return super.findViewById(id);
}
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// Progress Indication // Progress Indication

6
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockListActivity.java vendored

@ -243,6 +243,12 @@ public abstract class SherlockListActivity extends ListActivity implements OnCre
getSherlock().requestFeature((int)featureId); getSherlock().requestFeature((int)featureId);
} }
@Override
public View findViewById(int id) {
getSherlock().ensureActionBar();
return super.findViewById(id);
}
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// Progress Indication // Progress Indication

6
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockListFragment.java vendored

@ -8,9 +8,9 @@ import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.MenuItem;
import static com.actionbarsherlock.app.SherlockFragmentActivity.OnCreateOptionsMenuListener; import static android.support.v4.app.Watson.OnCreateOptionsMenuListener;
import static com.actionbarsherlock.app.SherlockFragmentActivity.OnOptionsItemSelectedListener; import static android.support.v4.app.Watson.OnOptionsItemSelectedListener;
import static com.actionbarsherlock.app.SherlockFragmentActivity.OnPrepareOptionsMenuListener; import static android.support.v4.app.Watson.OnPrepareOptionsMenuListener;
public class SherlockListFragment extends ListFragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener { public class SherlockListFragment extends ListFragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener {
private SherlockFragmentActivity mActivity; private SherlockFragmentActivity mActivity;

6
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/app/SherlockPreferenceActivity.java vendored

@ -243,6 +243,12 @@ public abstract class SherlockPreferenceActivity extends PreferenceActivity impl
getSherlock().requestFeature((int)featureId); getSherlock().requestFeature((int)featureId);
} }
@Override
public View findViewById(int id) {
getSherlock().ensureActionBar();
return super.findViewById(id);
}
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// Progress Indication // Progress Indication

154
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java vendored

@ -1,11 +1,5 @@
package com.actionbarsherlock.internal; package com.actionbarsherlock.internal;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoolean;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
@ -28,9 +22,8 @@ import android.view.Window;
import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityEvent;
import android.view.animation.Animation; import android.view.animation.Animation;
import android.view.animation.AnimationUtils; import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
import android.widget.TextView;
import com.actionbarsherlock.ActionBarSherlock; import com.actionbarsherlock.ActionBarSherlock;
import com.actionbarsherlock.BuildConfig;
import com.actionbarsherlock.R; import com.actionbarsherlock.R;
import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.internal.app.ActionBarImpl; import com.actionbarsherlock.internal.app.ActionBarImpl;
@ -46,6 +39,13 @@ import com.actionbarsherlock.internal.widget.IcsProgressBar;
import com.actionbarsherlock.view.ActionMode; import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.MenuItem;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoolean;
@ActionBarSherlock.Implementation(api = 7) @ActionBarSherlock.Implementation(api = 7)
public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBuilder.Callback, com.actionbarsherlock.view.Window.Callback, MenuPresenter.Callback, android.view.MenuItem.OnMenuItemClickListener { public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBuilder.Callback, com.actionbarsherlock.view.Window.Callback, MenuPresenter.Callback, android.view.MenuItem.OnMenuItemClickListener {
@ -108,13 +108,6 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
/** Parent view in which the context action bar is displayed. */ /** Parent view in which the context action bar is displayed. */
private ActionBarContextView mActionModeView; private ActionBarContextView mActionModeView;
/** Title view used with dialogs. */
private TextView mTitleView;
/** Current activity title. */
private CharSequence mTitle = null;
/** Whether or not this "activity" is floating (i.e., a dialog) */
private boolean mIsFloating;
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
@ -123,14 +116,14 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public ActionBar getActionBar() { public ActionBar getActionBar() {
if (DEBUG) Log.d(TAG, "[getActionBar]"); if (BuildConfig.DEBUG) Log.d(TAG, "[getActionBar]");
initActionBar(); initActionBar();
return aActionBar; return aActionBar;
} }
private void initActionBar() { private void initActionBar() {
if (DEBUG) Log.d(TAG, "[initActionBar]"); if (BuildConfig.DEBUG) Log.d(TAG, "[initActionBar]");
// Initializing the window decor can change window feature flags. // Initializing the window decor can change window feature flags.
// Make sure that we have the correct set before performing the test below. // Make sure that we have the correct set before performing the test below.
@ -157,14 +150,14 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void setTitle(CharSequence title) { public void setTitle(CharSequence title) {
if (DEBUG) Log.d(TAG, "[setTitle] title: " + title); if (BuildConfig.DEBUG) Log.d(TAG, "[setTitle] title: " + title);
dispatchTitleChanged(title, 0); dispatchTitleChanged(title, 0);
} }
@Override @Override
public ActionMode startActionMode(ActionMode.Callback callback) { public ActionMode startActionMode(ActionMode.Callback callback) {
if (DEBUG) Log.d(TAG, "[startActionMode] callback: " + callback); if (BuildConfig.DEBUG) Log.d(TAG, "[startActionMode] callback: " + callback);
if (mActionMode != null) { if (mActionMode != null) {
mActionMode.finish(); mActionMode.finish();
@ -215,7 +208,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void dispatchConfigurationChanged(Configuration newConfig) { public void dispatchConfigurationChanged(Configuration newConfig) {
if (DEBUG) Log.d(TAG, "[dispatchConfigurationChanged] newConfig: " + newConfig); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchConfigurationChanged] newConfig: " + newConfig);
if (aActionBar != null) { if (aActionBar != null) {
aActionBar.onConfigurationChanged(newConfig); aActionBar.onConfigurationChanged(newConfig);
@ -224,7 +217,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void dispatchPostResume() { public void dispatchPostResume() {
if (DEBUG) Log.d(TAG, "[dispatchPostResume]"); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchPostResume]");
if (aActionBar != null) { if (aActionBar != null) {
aActionBar.setShowHideAnimationEnabled(true); aActionBar.setShowHideAnimationEnabled(true);
@ -233,7 +226,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void dispatchPause() { public void dispatchPause() {
if (DEBUG) Log.d(TAG, "[dispatchPause]"); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchPause]");
if (wActionBar != null && wActionBar.isOverflowMenuShowing()) { if (wActionBar != null && wActionBar.isOverflowMenuShowing()) {
wActionBar.hideOverflowMenu(); wActionBar.hideOverflowMenu();
@ -242,7 +235,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void dispatchStop() { public void dispatchStop() {
if (DEBUG) Log.d(TAG, "[dispatchStop]"); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchStop]");
if (aActionBar != null) { if (aActionBar != null) {
aActionBar.setShowHideAnimationEnabled(false); aActionBar.setShowHideAnimationEnabled(false);
@ -251,7 +244,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void dispatchInvalidateOptionsMenu() { public void dispatchInvalidateOptionsMenu() {
if (DEBUG) Log.d(TAG, "[dispatchInvalidateOptionsMenu]"); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchInvalidateOptionsMenu]");
Bundle savedActionViewStates = null; Bundle savedActionViewStates = null;
if (mMenu != null) { if (mMenu != null) {
@ -275,7 +268,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public boolean dispatchOpenOptionsMenu() { public boolean dispatchOpenOptionsMenu() {
if (DEBUG) Log.d(TAG, "[dispatchOpenOptionsMenu]"); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchOpenOptionsMenu]");
if (!isReservingOverflow()) { if (!isReservingOverflow()) {
return false; return false;
@ -286,7 +279,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public boolean dispatchCloseOptionsMenu() { public boolean dispatchCloseOptionsMenu() {
if (DEBUG) Log.d(TAG, "[dispatchCloseOptionsMenu]"); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchCloseOptionsMenu]");
if (!isReservingOverflow()) { if (!isReservingOverflow()) {
return false; return false;
@ -300,7 +293,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void dispatchPostCreate(Bundle savedInstanceState) { public void dispatchPostCreate(Bundle savedInstanceState) {
if (DEBUG) Log.d(TAG, "[dispatchOnPostCreate]"); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchOnPostCreate]");
if (mIsDelegate) { if (mIsDelegate) {
mIsTitleReady = true; mIsTitleReady = true;
@ -313,7 +306,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public boolean dispatchCreateOptionsMenu(android.view.Menu menu) { public boolean dispatchCreateOptionsMenu(android.view.Menu menu) {
if (DEBUG) { if (BuildConfig.DEBUG) {
Log.d(TAG, "[dispatchCreateOptionsMenu] android.view.Menu: " + menu); Log.d(TAG, "[dispatchCreateOptionsMenu] android.view.Menu: " + menu);
Log.d(TAG, "[dispatchCreateOptionsMenu] returning true"); Log.d(TAG, "[dispatchCreateOptionsMenu] returning true");
} }
@ -322,7 +315,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public boolean dispatchPrepareOptionsMenu(android.view.Menu menu) { public boolean dispatchPrepareOptionsMenu(android.view.Menu menu) {
if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] android.view.Menu: " + menu); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] android.view.Menu: " + menu);
if (mActionMode != null) { if (mActionMode != null) {
return false; return false;
@ -348,7 +341,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
} }
boolean result = mMenu.bindNativeOverflow(menu, this, mNativeItemMap); boolean result = mMenu.bindNativeOverflow(menu, this, mNativeItemMap);
if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] returning " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] returning " + result);
return result; return result;
} }
@ -359,7 +352,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public boolean dispatchMenuOpened(int featureId, android.view.Menu menu) { public boolean dispatchMenuOpened(int featureId, android.view.Menu menu) {
if (DEBUG) Log.d(TAG, "[dispatchMenuOpened] featureId: " + featureId + ", menu: " + menu); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchMenuOpened] featureId: " + featureId + ", menu: " + menu);
if (featureId == Window.FEATURE_ACTION_BAR || featureId == Window.FEATURE_OPTIONS_PANEL) { if (featureId == Window.FEATURE_ACTION_BAR || featureId == Window.FEATURE_OPTIONS_PANEL) {
if (aActionBar != null) { if (aActionBar != null) {
@ -373,7 +366,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void dispatchPanelClosed(int featureId, android.view.Menu menu){ public void dispatchPanelClosed(int featureId, android.view.Menu menu){
if (DEBUG) Log.d(TAG, "[dispatchPanelClosed] featureId: " + featureId + ", menu: " + menu); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchPanelClosed] featureId: " + featureId + ", menu: " + menu);
if (featureId == Window.FEATURE_ACTION_BAR || featureId == Window.FEATURE_OPTIONS_PANEL) { if (featureId == Window.FEATURE_ACTION_BAR || featureId == Window.FEATURE_OPTIONS_PANEL) {
if (aActionBar != null) { if (aActionBar != null) {
@ -384,22 +377,16 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void dispatchTitleChanged(CharSequence title, int color) { public void dispatchTitleChanged(CharSequence title, int color) {
if (DEBUG) Log.d(TAG, "[dispatchTitleChanged] title: " + title + ", color: " + color); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchTitleChanged] title: " + title + ", color: " + color);
if (!mIsDelegate || mIsTitleReady) { if ((!mIsDelegate || mIsTitleReady) && (wActionBar != null)) {
if (mTitleView != null) {
mTitleView.setText(title);
} else if (wActionBar != null) {
wActionBar.setWindowTitle(title); wActionBar.setWindowTitle(title);
} }
} }
mTitle = title;
}
@Override @Override
public boolean dispatchKeyEvent(KeyEvent event) { public boolean dispatchKeyEvent(KeyEvent event) {
if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] event: " + event); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchKeyEvent] event: " + event);
final int keyCode = event.getKeyCode(); final int keyCode = event.getKeyCode();
@ -412,7 +399,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
if (action == KeyEvent.ACTION_UP) { if (action == KeyEvent.ACTION_UP) {
mActionMode.finish(); mActionMode.finish();
} }
if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning true"); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning true");
return true; return true;
} }
@ -421,12 +408,12 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
if (action == KeyEvent.ACTION_UP) { if (action == KeyEvent.ACTION_UP) {
wActionBar.collapseActionView(); wActionBar.collapseActionView();
} }
if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning true"); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning true");
return true; return true;
} }
} }
if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning false"); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning false");
return false; return false;
} }
@ -596,7 +583,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public boolean onMenuItemClick(android.view.MenuItem item) { public boolean onMenuItemClick(android.view.MenuItem item) {
if (DEBUG) Log.d(TAG, "[mNativeItemListener.onMenuItemClick] item: " + item); if (BuildConfig.DEBUG) Log.d(TAG, "[mNativeItemListener.onMenuItemClick] item: " + item);
final MenuItemImpl sherlockItem = mNativeItemMap.get(item); final MenuItemImpl sherlockItem = mNativeItemMap.get(item);
if (sherlockItem != null) { if (sherlockItem != null) {
@ -620,7 +607,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void setProgressBarVisibility(boolean visible) { public void setProgressBarVisibility(boolean visible) {
if (DEBUG) Log.d(TAG, "[setProgressBarVisibility] visible: " + visible); if (BuildConfig.DEBUG) Log.d(TAG, "[setProgressBarVisibility] visible: " + visible);
setFeatureInt(Window.FEATURE_PROGRESS, visible ? Window.PROGRESS_VISIBILITY_ON : setFeatureInt(Window.FEATURE_PROGRESS, visible ? Window.PROGRESS_VISIBILITY_ON :
Window.PROGRESS_VISIBILITY_OFF); Window.PROGRESS_VISIBILITY_OFF);
@ -628,7 +615,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void setProgressBarIndeterminateVisibility(boolean visible) { public void setProgressBarIndeterminateVisibility(boolean visible) {
if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminateVisibility] visible: " + visible); if (BuildConfig.DEBUG) Log.d(TAG, "[setProgressBarIndeterminateVisibility] visible: " + visible);
setFeatureInt(Window.FEATURE_INDETERMINATE_PROGRESS, setFeatureInt(Window.FEATURE_INDETERMINATE_PROGRESS,
visible ? Window.PROGRESS_VISIBILITY_ON : Window.PROGRESS_VISIBILITY_OFF); visible ? Window.PROGRESS_VISIBILITY_ON : Window.PROGRESS_VISIBILITY_OFF);
@ -636,7 +623,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void setProgressBarIndeterminate(boolean indeterminate) { public void setProgressBarIndeterminate(boolean indeterminate) {
if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminate] indeterminate: " + indeterminate); if (BuildConfig.DEBUG) Log.d(TAG, "[setProgressBarIndeterminate] indeterminate: " + indeterminate);
setFeatureInt(Window.FEATURE_PROGRESS, setFeatureInt(Window.FEATURE_PROGRESS,
indeterminate ? Window.PROGRESS_INDETERMINATE_ON : Window.PROGRESS_INDETERMINATE_OFF); indeterminate ? Window.PROGRESS_INDETERMINATE_ON : Window.PROGRESS_INDETERMINATE_OFF);
@ -644,14 +631,14 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void setProgress(int progress) { public void setProgress(int progress) {
if (DEBUG) Log.d(TAG, "[setProgress] progress: " + progress); if (BuildConfig.DEBUG) Log.d(TAG, "[setProgress] progress: " + progress);
setFeatureInt(Window.FEATURE_PROGRESS, progress + Window.PROGRESS_START); setFeatureInt(Window.FEATURE_PROGRESS, progress + Window.PROGRESS_START);
} }
@Override @Override
public void setSecondaryProgress(int secondaryProgress) { public void setSecondaryProgress(int secondaryProgress) {
if (DEBUG) Log.d(TAG, "[setSecondaryProgress] secondaryProgress: " + secondaryProgress); if (BuildConfig.DEBUG) Log.d(TAG, "[setSecondaryProgress] secondaryProgress: " + secondaryProgress);
setFeatureInt(Window.FEATURE_PROGRESS, setFeatureInt(Window.FEATURE_PROGRESS,
secondaryProgress + Window.PROGRESS_SECONDARY_START); secondaryProgress + Window.PROGRESS_SECONDARY_START);
@ -790,23 +777,23 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
private int getFeatures() { private int getFeatures() {
if (DEBUG) Log.d(TAG, "[getFeatures] returning " + mFeatures); if (BuildConfig.DEBUG) Log.d(TAG, "[getFeatures] returning " + mFeatures);
return mFeatures; return mFeatures;
} }
@Override @Override
public boolean hasFeature(int featureId) { public boolean hasFeature(int featureId) {
if (DEBUG) Log.d(TAG, "[hasFeature] featureId: " + featureId); if (BuildConfig.DEBUG) Log.d(TAG, "[hasFeature] featureId: " + featureId);
boolean result = (mFeatures & (1 << featureId)) != 0; boolean result = (mFeatures & (1 << featureId)) != 0;
if (DEBUG) Log.d(TAG, "[hasFeature] returning " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[hasFeature] returning " + result);
return result; return result;
} }
@Override @Override
public boolean requestFeature(int featureId) { public boolean requestFeature(int featureId) {
if (DEBUG) Log.d(TAG, "[requestFeature] featureId: " + featureId); if (BuildConfig.DEBUG) Log.d(TAG, "[requestFeature] featureId: " + featureId);
if (mContentParent != null) { if (mContentParent != null) {
throw new AndroidRuntimeException("requestFeature() must be called before adding content"); throw new AndroidRuntimeException("requestFeature() must be called before adding content");
@ -829,21 +816,21 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void setUiOptions(int uiOptions) { public void setUiOptions(int uiOptions) {
if (DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions); if (BuildConfig.DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions);
mUiOptions = uiOptions; mUiOptions = uiOptions;
} }
@Override @Override
public void setUiOptions(int uiOptions, int mask) { public void setUiOptions(int uiOptions, int mask) {
if (DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions + ", mask: " + mask); if (BuildConfig.DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions + ", mask: " + mask);
mUiOptions = (mUiOptions & ~mask) | (uiOptions & mask); mUiOptions = (mUiOptions & ~mask) | (uiOptions & mask);
} }
@Override @Override
public void setContentView(int layoutResId) { public void setContentView(int layoutResId) {
if (DEBUG) Log.d(TAG, "[setContentView] layoutResId: " + layoutResId); if (BuildConfig.DEBUG) Log.d(TAG, "[setContentView] layoutResId: " + layoutResId);
if (mContentParent == null) { if (mContentParent == null) {
installDecor(); installDecor();
@ -862,7 +849,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void setContentView(View view, ViewGroup.LayoutParams params) { public void setContentView(View view, ViewGroup.LayoutParams params) {
if (DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params); if (BuildConfig.DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params);
if (mContentParent == null) { if (mContentParent == null) {
installDecor(); installDecor();
@ -881,7 +868,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override @Override
public void addContentView(View view, ViewGroup.LayoutParams params) { public void addContentView(View view, ViewGroup.LayoutParams params) {
if (DEBUG) Log.d(TAG, "[addContentView] view: " + view + ", params: " + params); if (BuildConfig.DEBUG) Log.d(TAG, "[addContentView] view: " + view + ", params: " + params);
if (mContentParent == null) { if (mContentParent == null) {
installDecor(); installDecor();
@ -892,7 +879,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
} }
private void installDecor() { private void installDecor() {
if (DEBUG) Log.d(TAG, "[installDecor]"); if (BuildConfig.DEBUG) Log.d(TAG, "[installDecor]");
if (mDecor == null) { if (mDecor == null) {
mDecor = (ViewGroup)mActivity.getWindow().getDecorView().findViewById(android.R.id.content); mDecor = (ViewGroup)mActivity.getWindow().getDecorView().findViewById(android.R.id.content);
@ -921,17 +908,6 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
} }
} }
mTitleView = (TextView)mDecor.findViewById(android.R.id.title);
if (mTitleView != null) {
if (hasFeature(Window.FEATURE_NO_TITLE)) {
mTitleView.setVisibility(View.GONE);
if (mContentParent instanceof FrameLayout) {
((FrameLayout)mContentParent).setForeground(null);
}
} else {
mTitleView.setText(mTitle);
}
} else {
wActionBar = (ActionBarView)mDecor.findViewById(R.id.abs__action_bar); wActionBar = (ActionBarView)mDecor.findViewById(R.id.abs__action_bar);
if (wActionBar != null) { if (wActionBar != null) {
wActionBar.setWindowCallback(this); wActionBar.setWindowCallback(this);
@ -988,17 +964,14 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
} }
} }
} }
}
private ViewGroup generateLayout() { private ViewGroup generateLayout() {
if (DEBUG) Log.d(TAG, "[generateLayout]"); if (BuildConfig.DEBUG) Log.d(TAG, "[generateLayout]");
// Apply data from current theme. // Apply data from current theme.
TypedArray a = mActivity.getTheme().obtainStyledAttributes(R.styleable.SherlockTheme); TypedArray a = mActivity.getTheme().obtainStyledAttributes(R.styleable.SherlockTheme);
mIsFloating = a.getBoolean(R.styleable.SherlockTheme_android_windowIsFloating, false);
if (!a.hasValue(R.styleable.SherlockTheme_windowActionBar)) { if (!a.hasValue(R.styleable.SherlockTheme_windowActionBar)) {
throw new IllegalStateException("You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative."); throw new IllegalStateException("You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative.");
} }
@ -1022,26 +995,18 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
int layoutResource; int layoutResource;
if (!hasFeature(Window.FEATURE_NO_TITLE)) { if (!hasFeature(Window.FEATURE_NO_TITLE)) {
if (mIsFloating) {
//Trash original dialog LinearLayout
mDecor = (ViewGroup)mDecor.getParent();
mDecor.removeAllViews();
layoutResource = R.layout.abs__dialog_title_holo;
} else {
if (hasFeature(Window.FEATURE_ACTION_BAR_OVERLAY)) { if (hasFeature(Window.FEATURE_ACTION_BAR_OVERLAY)) {
layoutResource = R.layout.abs__screen_action_bar_overlay; layoutResource = R.layout.abs__screen_action_bar_overlay;
} else { } else {
layoutResource = R.layout.abs__screen_action_bar; layoutResource = R.layout.abs__screen_action_bar;
} }
}
} else if (hasFeature(Window.FEATURE_ACTION_MODE_OVERLAY) && !hasFeature(Window.FEATURE_NO_TITLE)) { } else if (hasFeature(Window.FEATURE_ACTION_MODE_OVERLAY) && !hasFeature(Window.FEATURE_NO_TITLE)) {
layoutResource = R.layout.abs__screen_simple_overlay_action_mode; layoutResource = R.layout.abs__screen_simple_overlay_action_mode;
} else { } else {
layoutResource = R.layout.abs__screen_simple; layoutResource = R.layout.abs__screen_simple;
} }
if (DEBUG) Log.d(TAG, "[generateLayout] using screen XML " + mActivity.getResources().getString(layoutResource)); if (BuildConfig.DEBUG) Log.d(TAG, "[generateLayout] using screen XML " + mActivity.getResources().getString(layoutResource));
View in = mActivity.getLayoutInflater().inflate(layoutResource, null); View in = mActivity.getLayoutInflater().inflate(layoutResource, null);
mDecor.addView(in, new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)); mDecor.addView(in, new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT));
@ -1086,7 +1051,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
int uiOptions = 0; int uiOptions = 0;
try { try {
final String thisPackage = activity.getClass().getName(); final String thisPackage = activity.getClass().getName();
if (DEBUG) Log.i(TAG, "Parsing AndroidManifest.xml for " + thisPackage); if (BuildConfig.DEBUG) Log.i(TAG, "Parsing AndroidManifest.xml for " + thisPackage);
final String packageName = activity.getApplicationInfo().packageName; final String packageName = activity.getApplicationInfo().packageName;
final AssetManager am = activity.createPackageContext(packageName, 0).getAssets(); final AssetManager am = activity.createPackageContext(packageName, 0).getAssets();
@ -1099,10 +1064,10 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
if ("application".equals(name)) { if ("application".equals(name)) {
//Check if the <application> has the attribute //Check if the <application> has the attribute
if (DEBUG) Log.d(TAG, "Got <application>"); if (BuildConfig.DEBUG) Log.d(TAG, "Got <application>");
for (int i = xml.getAttributeCount() - 1; i >= 0; i--) { for (int i = xml.getAttributeCount() - 1; i >= 0; i--) {
if (DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i)); if (BuildConfig.DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i));
if ("uiOptions".equals(xml.getAttributeName(i))) { if ("uiOptions".equals(xml.getAttributeName(i))) {
uiOptions = xml.getAttributeIntValue(i, 0); uiOptions = xml.getAttributeIntValue(i, 0);
@ -1111,13 +1076,13 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
} }
} else if ("activity".equals(name)) { } else if ("activity".equals(name)) {
//Check if the <activity> is us and has the attribute //Check if the <activity> is us and has the attribute
if (DEBUG) Log.d(TAG, "Got <activity>"); if (BuildConfig.DEBUG) Log.d(TAG, "Got <activity>");
Integer activityUiOptions = null; Integer activityUiOptions = null;
String activityPackage = null; String activityPackage = null;
boolean isOurActivity = false; boolean isOurActivity = false;
for (int i = xml.getAttributeCount() - 1; i >= 0; i--) { for (int i = xml.getAttributeCount() - 1; i >= 0; i--) {
if (DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i)); if (BuildConfig.DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i));
//We need both uiOptions and name attributes //We need both uiOptions and name attributes
String attrName = xml.getAttributeName(i); String attrName = xml.getAttributeName(i);
@ -1149,7 +1114,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
if (DEBUG) Log.i(TAG, "Returning " + Integer.toHexString(uiOptions)); if (BuildConfig.DEBUG) Log.i(TAG, "Returning " + Integer.toHexString(uiOptions));
return uiOptions; return uiOptions;
} }
@ -1200,4 +1165,13 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
mActionMode = null; mActionMode = null;
} }
} }
@Override
public void ensureActionBar() {
if (BuildConfig.DEBUG) Log.d(TAG, "[ensureActionBar]");
if (mDecor == null) {
initActionBar();
}
}
} }

80
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/ActionBarSherlockNative.java vendored

@ -1,19 +1,22 @@
package com.actionbarsherlock.internal; package com.actionbarsherlock.internal;
import com.actionbarsherlock.ActionBarSherlock;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.internal.app.ActionBarWrapper;
import com.actionbarsherlock.internal.view.menu.MenuWrapper;
import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.MenuInflater;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.util.Log; import android.util.Log;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.ContextThemeWrapper; import android.view.ContextThemeWrapper;
import android.view.View; import android.view.View;
import android.view.Window;
import android.view.ViewGroup.LayoutParams; import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import com.actionbarsherlock.ActionBarSherlock;
import com.actionbarsherlock.BuildConfig;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.internal.app.ActionBarWrapper;
import com.actionbarsherlock.internal.view.menu.MenuItemWrapper;
import com.actionbarsherlock.internal.view.menu.MenuWrapper;
import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
@ActionBarSherlock.Implementation(api = 14) @ActionBarSherlock.Implementation(api = 14)
public class ActionBarSherlockNative extends ActionBarSherlock { public class ActionBarSherlockNative extends ActionBarSherlock {
@ -28,7 +31,7 @@ public class ActionBarSherlockNative extends ActionBarSherlock {
@Override @Override
public ActionBar getActionBar() { public ActionBar getActionBar() {
if (DEBUG) Log.d(TAG, "[getActionBar]"); if (BuildConfig.DEBUG) Log.d(TAG, "[getActionBar]");
initActionBar(); initActionBar();
return mActionBar; return mActionBar;
@ -44,77 +47,89 @@ public class ActionBarSherlockNative extends ActionBarSherlock {
@Override @Override
public void dispatchInvalidateOptionsMenu() { public void dispatchInvalidateOptionsMenu() {
if (DEBUG) Log.d(TAG, "[dispatchInvalidateOptionsMenu]"); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchInvalidateOptionsMenu]");
mActivity.getWindow().invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL); mActivity.getWindow().invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL);
if (mMenu != null) mMenu.invalidate();
} }
@Override @Override
public boolean dispatchCreateOptionsMenu(android.view.Menu menu) { public boolean dispatchCreateOptionsMenu(android.view.Menu menu) {
if (DEBUG) Log.d(TAG, "[dispatchCreateOptionsMenu] menu: " + menu); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchCreateOptionsMenu] menu: " + menu);
if (mMenu == null || menu != mMenu.unwrap()) { if (mMenu == null || menu != mMenu.unwrap()) {
mMenu = new MenuWrapper(menu); mMenu = new MenuWrapper(menu);
} }
final boolean result = callbackCreateOptionsMenu(mMenu); final boolean result = callbackCreateOptionsMenu(mMenu);
if (DEBUG) Log.d(TAG, "[dispatchCreateOptionsMenu] returning " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchCreateOptionsMenu] returning " + result);
return result; return result;
} }
@Override @Override
public boolean dispatchPrepareOptionsMenu(android.view.Menu menu) { public boolean dispatchPrepareOptionsMenu(android.view.Menu menu) {
if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] menu: " + menu); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] menu: " + menu);
final boolean result = callbackPrepareOptionsMenu(mMenu); final boolean result = callbackPrepareOptionsMenu(mMenu);
if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] returning " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] returning " + result);
return result; return result;
} }
@Override @Override
public boolean dispatchOptionsItemSelected(android.view.MenuItem item) { public boolean dispatchOptionsItemSelected(android.view.MenuItem item) {
if (DEBUG) Log.d(TAG, "[dispatchOptionsItemSelected] item: " + item.getTitleCondensed()); if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchOptionsItemSelected] item: " + item.getTitleCondensed());
final boolean result = callbackOptionsItemSelected(mMenu.findItem(item)); MenuItem wrapped;
if (DEBUG) Log.d(TAG, "[dispatchOptionsItemSelected] returning " + result); if (mMenu == null) {
if (item.getItemId() != android.R.id.home) {
throw new IllegalStateException("Non-home action item clicked before onCreateOptionsMenu with ID " + item.getItemId());
}
// Create a throw-away wrapper for now.
wrapped = new MenuItemWrapper(item);
} else {
wrapped = mMenu.findItem(item);
}
final boolean result = callbackOptionsItemSelected(wrapped);
if (BuildConfig.DEBUG) Log.d(TAG, "[dispatchOptionsItemSelected] returning " + result);
return result; return result;
} }
@Override @Override
public boolean hasFeature(int feature) { public boolean hasFeature(int feature) {
if (DEBUG) Log.d(TAG, "[hasFeature] feature: " + feature); if (BuildConfig.DEBUG) Log.d(TAG, "[hasFeature] feature: " + feature);
final boolean result = mActivity.getWindow().hasFeature(feature); final boolean result = mActivity.getWindow().hasFeature(feature);
if (DEBUG) Log.d(TAG, "[hasFeature] returning " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[hasFeature] returning " + result);
return result; return result;
} }
@Override @Override
public boolean requestFeature(int featureId) { public boolean requestFeature(int featureId) {
if (DEBUG) Log.d(TAG, "[requestFeature] featureId: " + featureId); if (BuildConfig.DEBUG) Log.d(TAG, "[requestFeature] featureId: " + featureId);
final boolean result = mActivity.getWindow().requestFeature(featureId); final boolean result = mActivity.getWindow().requestFeature(featureId);
if (DEBUG) Log.d(TAG, "[requestFeature] returning " + result); if (BuildConfig.DEBUG) Log.d(TAG, "[requestFeature] returning " + result);
return result; return result;
} }
@Override @Override
public void setUiOptions(int uiOptions) { public void setUiOptions(int uiOptions) {
if (DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions); if (BuildConfig.DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions);
mActivity.getWindow().setUiOptions(uiOptions); mActivity.getWindow().setUiOptions(uiOptions);
} }
@Override @Override
public void setUiOptions(int uiOptions, int mask) { public void setUiOptions(int uiOptions, int mask) {
if (DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions + ", mask: " + mask); if (BuildConfig.DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions + ", mask: " + mask);
mActivity.getWindow().setUiOptions(uiOptions, mask); mActivity.getWindow().setUiOptions(uiOptions, mask);
} }
@Override @Override
public void setContentView(int layoutResId) { public void setContentView(int layoutResId) {
if (DEBUG) Log.d(TAG, "[setContentView] layoutResId: " + layoutResId); if (BuildConfig.DEBUG) Log.d(TAG, "[setContentView] layoutResId: " + layoutResId);
mActivity.getWindow().setContentView(layoutResId); mActivity.getWindow().setContentView(layoutResId);
initActionBar(); initActionBar();
@ -122,7 +137,7 @@ public class ActionBarSherlockNative extends ActionBarSherlock {
@Override @Override
public void setContentView(View view, LayoutParams params) { public void setContentView(View view, LayoutParams params) {
if (DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params); if (BuildConfig.DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params);
mActivity.getWindow().setContentView(view, params); mActivity.getWindow().setContentView(view, params);
initActionBar(); initActionBar();
@ -130,7 +145,7 @@ public class ActionBarSherlockNative extends ActionBarSherlock {
@Override @Override
public void addContentView(View view, LayoutParams params) { public void addContentView(View view, LayoutParams params) {
if (DEBUG) Log.d(TAG, "[addContentView] view: " + view + ", params: " + params); if (BuildConfig.DEBUG) Log.d(TAG, "[addContentView] view: " + view + ", params: " + params);
mActivity.getWindow().addContentView(view, params); mActivity.getWindow().addContentView(view, params);
initActionBar(); initActionBar();
@ -138,42 +153,42 @@ public class ActionBarSherlockNative extends ActionBarSherlock {
@Override @Override
public void setTitle(CharSequence title) { public void setTitle(CharSequence title) {
if (DEBUG) Log.d(TAG, "[setTitle] title: " + title); if (BuildConfig.DEBUG) Log.d(TAG, "[setTitle] title: " + title);
mActivity.getWindow().setTitle(title); mActivity.getWindow().setTitle(title);
} }
@Override @Override
public void setProgressBarVisibility(boolean visible) { public void setProgressBarVisibility(boolean visible) {
if (DEBUG) Log.d(TAG, "[setProgressBarVisibility] visible: " + visible); if (BuildConfig.DEBUG) Log.d(TAG, "[setProgressBarVisibility] visible: " + visible);
mActivity.setProgressBarVisibility(visible); mActivity.setProgressBarVisibility(visible);
} }
@Override @Override
public void setProgressBarIndeterminateVisibility(boolean visible) { public void setProgressBarIndeterminateVisibility(boolean visible) {
if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminateVisibility] visible: " + visible); if (BuildConfig.DEBUG) Log.d(TAG, "[setProgressBarIndeterminateVisibility] visible: " + visible);
mActivity.setProgressBarIndeterminateVisibility(visible); mActivity.setProgressBarIndeterminateVisibility(visible);
} }
@Override @Override
public void setProgressBarIndeterminate(boolean indeterminate) { public void setProgressBarIndeterminate(boolean indeterminate) {
if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminate] indeterminate: " + indeterminate); if (BuildConfig.DEBUG) Log.d(TAG, "[setProgressBarIndeterminate] indeterminate: " + indeterminate);
mActivity.setProgressBarIndeterminate(indeterminate); mActivity.setProgressBarIndeterminate(indeterminate);
} }
@Override @Override
public void setProgress(int progress) { public void setProgress(int progress) {
if (DEBUG) Log.d(TAG, "[setProgress] progress: " + progress); if (BuildConfig.DEBUG) Log.d(TAG, "[setProgress] progress: " + progress);
mActivity.setProgress(progress); mActivity.setProgress(progress);
} }
@Override @Override
public void setSecondaryProgress(int secondaryProgress) { public void setSecondaryProgress(int secondaryProgress) {
if (DEBUG) Log.d(TAG, "[setSecondaryProgress] secondaryProgress: " + secondaryProgress); if (BuildConfig.DEBUG) Log.d(TAG, "[setSecondaryProgress] secondaryProgress: " + secondaryProgress);
mActivity.setSecondaryProgress(secondaryProgress); mActivity.setSecondaryProgress(secondaryProgress);
} }
@ -194,7 +209,7 @@ public class ActionBarSherlockNative extends ActionBarSherlock {
@Override @Override
public ActionMode startActionMode(com.actionbarsherlock.view.ActionMode.Callback callback) { public ActionMode startActionMode(com.actionbarsherlock.view.ActionMode.Callback callback) {
if (DEBUG) Log.d(TAG, "[startActionMode] callback: " + callback); if (BuildConfig.DEBUG) Log.d(TAG, "[startActionMode] callback: " + callback);
if (mActionMode != null) { if (mActionMode != null) {
mActionMode.finish(); mActionMode.finish();
@ -288,6 +303,7 @@ public class ActionBarSherlockNative extends ActionBarSherlock {
@Override @Override
public void invalidate() { public void invalidate() {
mActionMode.invalidate(); mActionMode.invalidate();
if (mMenu != null) mMenu.invalidate();
} }
@Override @Override

87
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/ResourcesCompat.java vendored

@ -1,11 +1,19 @@
package com.actionbarsherlock.internal; package com.actionbarsherlock.internal;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.res.AssetManager;
import android.content.res.XmlResourceParser;
import android.os.Build; import android.os.Build;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Log;
import com.actionbarsherlock.BuildConfig;
import com.actionbarsherlock.R; import com.actionbarsherlock.R;
import org.xmlpull.v1.XmlPullParser;
public final class ResourcesCompat { public final class ResourcesCompat {
private static final String TAG = "ResourcesCompat";
//No instances //No instances
private ResourcesCompat() {} private ResourcesCompat() {}
@ -92,4 +100,83 @@ public final class ResourcesCompat {
throw new IllegalArgumentException("Unknown integer resource ID " + id); throw new IllegalArgumentException("Unknown integer resource ID " + id);
} }
/**
* Attempt to programmatically load the logo from the manifest file of an
* activity by using an XML pull parser. This should allow us to read the
* logo attribute regardless of the platform it is being run on.
*
* @param activity Activity instance.
* @return Logo resource ID.
*/
public static int loadLogoFromManifest(Activity activity) {
int logo = 0;
try {
final String thisPackage = activity.getClass().getName();
if (BuildConfig.DEBUG) Log.i(TAG, "Parsing AndroidManifest.xml for " + thisPackage);
final String packageName = activity.getApplicationInfo().packageName;
final AssetManager am = activity.createPackageContext(packageName, 0).getAssets();
final XmlResourceParser xml = am.openXmlResourceParser("AndroidManifest.xml");
int eventType = xml.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
String name = xml.getName();
if ("application".equals(name)) {
//Check if the <application> has the attribute
if (BuildConfig.DEBUG) Log.d(TAG, "Got <application>");
for (int i = xml.getAttributeCount() - 1; i >= 0; i--) {
if (BuildConfig.DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i));
if ("logo".equals(xml.getAttributeName(i))) {
logo = xml.getAttributeResourceValue(i, 0);
break; //out of for loop
}
}
} else if ("activity".equals(name)) {
//Check if the <activity> is us and has the attribute
if (BuildConfig.DEBUG) Log.d(TAG, "Got <activity>");
Integer activityLogo = null;
String activityPackage = null;
boolean isOurActivity = false;
for (int i = xml.getAttributeCount() - 1; i >= 0; i--) {
if (BuildConfig.DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i));
//We need both uiOptions and name attributes
String attrName = xml.getAttributeName(i);
if ("logo".equals(attrName)) {
activityLogo = xml.getAttributeResourceValue(i, 0);
} else if ("name".equals(attrName)) {
activityPackage = ActionBarSherlockCompat.cleanActivityName(packageName, xml.getAttributeValue(i));
if (!thisPackage.equals(activityPackage)) {
break; //on to the next
}
isOurActivity = true;
}
//Make sure we have both attributes before processing
if ((activityLogo != null) && (activityPackage != null)) {
//Our activity, logo specified, override with our value
logo = activityLogo.intValue();
}
}
if (isOurActivity) {
//If we matched our activity but it had no logo don't
//do any more processing of the manifest
break;
}
}
}
eventType = xml.nextToken();
}
} catch (Exception e) {
e.printStackTrace();
}
if (BuildConfig.DEBUG) Log.i(TAG, "Returning " + Integer.toHexString(logo));
return logo;
}
} }

7
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/app/ActionBarImpl.java vendored

@ -170,7 +170,12 @@ public class ActionBarImpl extends ActionBar {
// Older apps get the home button interaction enabled by default. // Older apps get the home button interaction enabled by default.
// Newer apps need to enable it explicitly. // Newer apps need to enable it explicitly.
setHomeButtonEnabled(mContext.getApplicationInfo().targetSdkVersion < 14); boolean homeButtonEnabled = mContext.getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.ICE_CREAM_SANDWICH;
// If the homeAsUp display option is set, always enable the home button.
homeButtonEnabled |= (mActionView.getDisplayOptions() & ActionBar.DISPLAY_HOME_AS_UP) != 0;
setHomeButtonEnabled(homeButtonEnabled);
setHasEmbeddedTabs(getResources_getBoolean(mContext, setHasEmbeddedTabs(getResources_getBoolean(mContext,
R.bool.abs__action_bar_embed_tabs)); R.bool.abs__action_bar_embed_tabs));

12
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/app/ActionBarWrapper.java vendored

@ -26,6 +26,10 @@ public class ActionBarWrapper extends ActionBar implements android.app.ActionBar
mActionBar = activity.getActionBar(); mActionBar = activity.getActionBar();
if (mActionBar != null) { if (mActionBar != null) {
mActionBar.addOnMenuVisibilityListener(this); mActionBar.addOnMenuVisibilityListener(this);
// Fixes issue #746
int displayOptions = mActionBar.getDisplayOptions();
mActionBar.setHomeButtonEnabled((displayOptions & DISPLAY_HOME_AS_UP) != 0);
} }
} }
@ -132,11 +136,19 @@ public class ActionBarWrapper extends ActionBar implements android.app.ActionBar
@Override @Override
public void setDisplayOptions(int options) { public void setDisplayOptions(int options) {
mActionBar.setDisplayOptions(options); mActionBar.setDisplayOptions(options);
// Fixes issue #746
mActionBar.setHomeButtonEnabled((options & DISPLAY_HOME_AS_UP) != 0);
} }
@Override @Override
public void setDisplayOptions(int options, int mask) { public void setDisplayOptions(int options, int mask) {
mActionBar.setDisplayOptions(options, mask); mActionBar.setDisplayOptions(options, mask);
// Fixes issue #746
if ((mask & DISPLAY_HOME_AS_UP) != 0) {
mActionBar.setHomeButtonEnabled((options & DISPLAY_HOME_AS_UP) != 0);
}
} }
@Override @Override

1
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/nineoldandroids/animation/ValueAnimator.java vendored

@ -582,6 +582,7 @@ public class ValueAnimator extends Animator {
* active animations to process. * active animations to process.
*/ */
@Override @Override
@SuppressWarnings("fallthrough")
public void handleMessage(Message msg) { public void handleMessage(Message msg) {
boolean callAgain = true; boolean callAgain = true;
ArrayList<ValueAnimator> animations = sAnimations.get(); ArrayList<ValueAnimator> animations = sAnimations.get();

3
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/view/menu/ActionMenuItemView.java vendored

@ -37,6 +37,7 @@ import com.actionbarsherlock.R;
import com.actionbarsherlock.internal.view.View_HasStateListenerSupport; import com.actionbarsherlock.internal.view.View_HasStateListenerSupport;
import com.actionbarsherlock.internal.view.View_OnAttachStateChangeListener; import com.actionbarsherlock.internal.view.View_OnAttachStateChangeListener;
import com.actionbarsherlock.internal.widget.CapitalizingButton; import com.actionbarsherlock.internal.widget.CapitalizingButton;
import com.actionbarsherlock.internal.widget.IcsToast;
import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoolean; import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoolean;
@ -263,7 +264,7 @@ public class ActionMenuItemView extends LinearLayout
final int midy = screenPos[1] + height / 2; final int midy = screenPos[1] + height / 2;
final int screenWidth = context.getResources().getDisplayMetrics().widthPixels; final int screenWidth = context.getResources().getDisplayMetrics().widthPixels;
Toast cheatSheet = Toast.makeText(context, mItemData.getTitle(), Toast.LENGTH_SHORT); Toast cheatSheet = IcsToast.makeText(context, mItemData.getTitle(), IcsToast.LENGTH_SHORT);
if (midy < displayFrame.height()) { if (midy < displayFrame.height()) {
// Show along the top; follow action buttons // Show along the top; follow action buttons
cheatSheet.setGravity(Gravity.TOP | Gravity.RIGHT, cheatSheet.setGravity(Gravity.TOP | Gravity.RIGHT,

2
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/view/menu/MenuBuilder.java vendored

@ -355,7 +355,7 @@ public class MenuBuilder implements Menu {
getActionViewStatesKey()); getActionViewStatesKey());
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB && viewStates == null) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB && viewStates == null) {
// Fixes Issue #652 with sdk <= 2.3.6 //Fixes Issue #652 with sdk <= 2.3.6
return; return;
} }

21
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/view/menu/MenuWrapper.java vendored

@ -94,11 +94,18 @@ public class MenuWrapper implements Menu {
@Override @Override
public void removeItem(int id) { public void removeItem(int id) {
mNativeMap.remove(mNativeMenu.findItem(id));
mNativeMenu.removeItem(id); mNativeMenu.removeItem(id);
} }
@Override @Override
public void removeGroup(int groupId) { public void removeGroup(int groupId) {
for (int i = 0; i < mNativeMenu.size(); i++) {
final android.view.MenuItem item = mNativeMenu.getItem(i);
if (item.getGroupId() == groupId) {
mNativeMap.remove(item);
}
}
mNativeMenu.removeGroup(groupId); mNativeMenu.removeGroup(groupId);
} }
@ -108,6 +115,20 @@ public class MenuWrapper implements Menu {
mNativeMenu.clear(); mNativeMenu.clear();
} }
public void invalidate() {
if (mNativeMap.isEmpty()) return;
final WeakHashMap<android.view.MenuItem, MenuItem> menuMapCopy = new WeakHashMap<android.view.MenuItem, MenuItem>(mNativeMap.size());
for (int i = 0; i < mNativeMenu.size(); i++) {
final android.view.MenuItem item = mNativeMenu.getItem(i);
menuMapCopy.put(item, mNativeMap.get(item));
}
mNativeMap.clear();
mNativeMap.putAll(menuMapCopy);
}
@Override @Override
public void setGroupCheckable(int group, boolean checkable, boolean exclusive) { public void setGroupCheckable(int group, boolean checkable, boolean exclusive) {
mNativeMenu.setGroupCheckable(group, checkable, exclusive); mNativeMenu.setGroupCheckable(group, checkable, exclusive);

9
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java vendored

@ -18,7 +18,6 @@ package com.actionbarsherlock.internal.widget;
import android.content.Context; import android.content.Context;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
@ -27,7 +26,6 @@ import android.util.AttributeSet;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.actionbarsherlock.R; import com.actionbarsherlock.R;
import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout; import com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout;
@ -65,12 +63,7 @@ public class ActionBarContainer extends NineFrameLayout {
//Fix for issue #379 //Fix for issue #379
if (mStackedBackground instanceof ColorDrawable && Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { if (mStackedBackground instanceof ColorDrawable && Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); mStackedBackground = new IcsColorDrawable((ColorDrawable) mStackedBackground);
Canvas c = new Canvas(bitmap);
mStackedBackground.draw(c);
int color = bitmap.getPixel(0, 0);
bitmap.recycle();
mStackedBackground = new IcsColorDrawable(color);
} }
if (getId() == R.id.abs__split_action_bar) { if (getId() == R.id.abs__split_action_bar) {

87
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/ActionBarView.java vendored

@ -16,16 +16,14 @@
package com.actionbarsherlock.internal.widget; package com.actionbarsherlock.internal.widget;
import org.xmlpull.v1.XmlPullParser; import com.actionbarsherlock.internal.ResourcesCompat;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.AssetManager;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Build; import android.os.Build;
import android.os.Parcel; import android.os.Parcel;
@ -49,7 +47,6 @@ import android.widget.TextView;
import com.actionbarsherlock.R; import com.actionbarsherlock.R;
import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.OnNavigationListener; import com.actionbarsherlock.app.ActionBar.OnNavigationListener;
import com.actionbarsherlock.internal.ActionBarSherlockCompat;
import com.actionbarsherlock.internal.view.menu.ActionMenuItem; import com.actionbarsherlock.internal.view.menu.ActionMenuItem;
import com.actionbarsherlock.internal.view.menu.ActionMenuPresenter; import com.actionbarsherlock.internal.view.menu.ActionMenuPresenter;
import com.actionbarsherlock.internal.view.menu.ActionMenuView; import com.actionbarsherlock.internal.view.menu.ActionMenuView;
@ -70,7 +67,6 @@ import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoo
*/ */
public class ActionBarView extends AbsActionBarView { public class ActionBarView extends AbsActionBarView {
private static final String TAG = "ActionBarView"; private static final String TAG = "ActionBarView";
private static final boolean DEBUG = false;
/** /**
* Display options applied by default * Display options applied by default
@ -190,7 +186,7 @@ public class ActionBarView extends AbsActionBarView {
if (context instanceof Activity) { if (context instanceof Activity) {
//Even though native methods existed in API 9 and 10 they don't work //Even though native methods existed in API 9 and 10 they don't work
//so just parse the manifest to look for the logo pre-Honeycomb //so just parse the manifest to look for the logo pre-Honeycomb
final int resId = loadLogoFromManifest((Activity) context); final int resId = ResourcesCompat.loadLogoFromManifest((Activity) context);
if (resId != 0) { if (resId != 0) {
mLogo = context.getResources().getDrawable(resId); mLogo = context.getResources().getDrawable(resId);
} }
@ -265,85 +261,6 @@ public class ActionBarView extends AbsActionBarView {
mHomeLayout.setFocusable(true); mHomeLayout.setFocusable(true);
} }
/**
* Attempt to programmatically load the logo from the manifest file of an
* activity by using an XML pull parser. This should allow us to read the
* logo attribute regardless of the platform it is being run on.
*
* @param activity Activity instance.
* @return Logo resource ID.
*/
private static int loadLogoFromManifest(Activity activity) {
int logo = 0;
try {
final String thisPackage = activity.getClass().getName();
if (DEBUG) Log.i(TAG, "Parsing AndroidManifest.xml for " + thisPackage);
final String packageName = activity.getApplicationInfo().packageName;
final AssetManager am = activity.createPackageContext(packageName, 0).getAssets();
final XmlResourceParser xml = am.openXmlResourceParser("AndroidManifest.xml");
int eventType = xml.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
String name = xml.getName();
if ("application".equals(name)) {
//Check if the <application> has the attribute
if (DEBUG) Log.d(TAG, "Got <application>");
for (int i = xml.getAttributeCount() - 1; i >= 0; i--) {
if (DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i));
if ("logo".equals(xml.getAttributeName(i))) {
logo = xml.getAttributeResourceValue(i, 0);
break; //out of for loop
}
}
} else if ("activity".equals(name)) {
//Check if the <activity> is us and has the attribute
if (DEBUG) Log.d(TAG, "Got <activity>");
Integer activityLogo = null;
String activityPackage = null;
boolean isOurActivity = false;
for (int i = xml.getAttributeCount() - 1; i >= 0; i--) {
if (DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i));
//We need both uiOptions and name attributes
String attrName = xml.getAttributeName(i);
if ("logo".equals(attrName)) {
activityLogo = xml.getAttributeResourceValue(i, 0);
} else if ("name".equals(attrName)) {
activityPackage = ActionBarSherlockCompat.cleanActivityName(packageName, xml.getAttributeValue(i));
if (!thisPackage.equals(activityPackage)) {
break; //on to the next
}
isOurActivity = true;
}
//Make sure we have both attributes before processing
if ((activityLogo != null) && (activityPackage != null)) {
//Our activity, logo specified, override with our value
logo = activityLogo.intValue();
}
}
if (isOurActivity) {
//If we matched our activity but it had no logo don't
//do any more processing of the manifest
break;
}
}
}
eventType = xml.nextToken();
}
} catch (Exception e) {
e.printStackTrace();
}
if (DEBUG) Log.i(TAG, "Returning " + Integer.toHexString(logo));
return logo;
}
/* /*
* Must be public so we can dispatch pre-2.2 via ActionBarImpl. * Must be public so we can dispatch pre-2.2 via ActionBarImpl.
*/ */

5
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/CapitalizingButton.java vendored

@ -29,7 +29,12 @@ public class CapitalizingButton extends Button {
public void setTextCompat(CharSequence text) { public void setTextCompat(CharSequence text) {
if (SANS_ICE_CREAM && mAllCaps && text != null) { if (SANS_ICE_CREAM && mAllCaps && text != null) {
if (IS_GINGERBREAD) { if (IS_GINGERBREAD) {
try {
setText(text.toString().toUpperCase(Locale.ROOT)); setText(text.toString().toUpperCase(Locale.ROOT));
} catch (NoSuchFieldError e) {
//Some manufacturer broke Locale.ROOT. See #572.
setText(text.toString().toUpperCase());
}
} else { } else {
setText(text.toString().toUpperCase()); setText(text.toString().toUpperCase());
} }

64
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/FakeDialogPhoneWindow.java vendored

@ -1,64 +0,0 @@
package com.actionbarsherlock.internal.widget;
import static android.view.View.MeasureSpec.EXACTLY;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.widget.LinearLayout;
import com.actionbarsherlock.R;
public class FakeDialogPhoneWindow extends LinearLayout {
final TypedValue mMinWidthMajor = new TypedValue();
final TypedValue mMinWidthMinor = new TypedValue();
public FakeDialogPhoneWindow(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SherlockTheme);
a.getValue(R.styleable.SherlockTheme_windowMinWidthMajor, mMinWidthMajor);
a.getValue(R.styleable.SherlockTheme_windowMinWidthMinor, mMinWidthMinor);
a.recycle();
}
/* Stolen from PhoneWindow */
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
final boolean isPortrait = metrics.widthPixels < metrics.heightPixels;
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = getMeasuredWidth();
boolean measure = false;
widthMeasureSpec = MeasureSpec.makeMeasureSpec(width, EXACTLY);
final TypedValue tv = isPortrait ? mMinWidthMinor : mMinWidthMajor;
if (tv.type != TypedValue.TYPE_NULL) {
final int min;
if (tv.type == TypedValue.TYPE_DIMENSION) {
min = (int)tv.getDimension(metrics);
} else if (tv.type == TypedValue.TYPE_FRACTION) {
min = (int)tv.getFraction(metrics.widthPixels, metrics.widthPixels);
} else {
min = 0;
}
if (width < min) {
widthMeasureSpec = MeasureSpec.makeMeasureSpec(min, EXACTLY);
measure = true;
}
}
// TODO: Support height?
if (measure) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
}

12
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/IcsColorDrawable.java vendored

@ -1,8 +1,10 @@
package com.actionbarsherlock.internal.widget; package com.actionbarsherlock.internal.widget;
import android.graphics.Bitmap;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.ColorFilter; import android.graphics.ColorFilter;
import android.graphics.Paint; import android.graphics.Paint;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
/** /**
@ -12,6 +14,14 @@ public class IcsColorDrawable extends Drawable {
private int color; private int color;
private final Paint paint = new Paint(); private final Paint paint = new Paint();
public IcsColorDrawable(ColorDrawable drawable) {
Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bitmap);
drawable.draw(c);
this.color = bitmap.getPixel(0, 0);
bitmap.recycle();
}
public IcsColorDrawable(int color) { public IcsColorDrawable(int color) {
this.color = color; this.color = color;
} }
@ -26,7 +36,7 @@ public class IcsColorDrawable extends Drawable {
@Override @Override
public void setAlpha(int alpha) { public void setAlpha(int alpha) {
if (alpha != (color >>> 24)) { if (alpha != (color >>> 24)) {
color = (color & 0x00FFFFFF) & (alpha << 24); color = (color & 0x00FFFFFF) | (alpha << 24);
invalidateSelf(); invalidateSelf();
} }
} }

150
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/IcsLinearLayout.java vendored

@ -3,10 +3,11 @@ package com.actionbarsherlock.internal.widget;
import android.content.Context; import android.content.Context;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Build;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
import android.widget.LinearLayout;
import com.actionbarsherlock.internal.nineoldandroids.widget.NineLinearLayout; import com.actionbarsherlock.internal.nineoldandroids.widget.NineLinearLayout;
@ -20,14 +21,12 @@ import com.actionbarsherlock.internal.nineoldandroids.widget.NineLinearLayout;
public class IcsLinearLayout extends NineLinearLayout { public class IcsLinearLayout extends NineLinearLayout {
private static final int[] R_styleable_LinearLayout = new int[] { private static final int[] R_styleable_LinearLayout = new int[] {
/* 0 */ android.R.attr.divider, /* 0 */ android.R.attr.divider,
/* 1 */ android.R.attr.measureWithLargestChild,
/* 2 */ android.R.attr.showDividers, /* 2 */ android.R.attr.showDividers,
/* 3 */ android.R.attr.dividerPadding, /* 3 */ android.R.attr.dividerPadding,
}; };
private static final int LinearLayout_divider = 0; private static final int LinearLayout_divider = 0;
private static final int LinearLayout_measureWithLargestChild = 1; private static final int LinearLayout_showDividers = 1;
private static final int LinearLayout_showDividers = 2; private static final int LinearLayout_dividerPadding = 2;
private static final int LinearLayout_dividerPadding = 3;
/** /**
* Don't show any dividers. * Don't show any dividers.
@ -53,8 +52,6 @@ public class IcsLinearLayout extends NineLinearLayout {
private int mShowDividers; private int mShowDividers;
private int mDividerPadding; private int mDividerPadding;
private boolean mUseLargestChild;
public IcsLinearLayout(Context context, AttributeSet attrs) { public IcsLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
@ -63,7 +60,6 @@ public class IcsLinearLayout extends NineLinearLayout {
setDividerDrawable(a.getDrawable(/*com.android.internal.R.styleable.*/LinearLayout_divider)); setDividerDrawable(a.getDrawable(/*com.android.internal.R.styleable.*/LinearLayout_divider));
mShowDividers = a.getInt(/*com.android.internal.R.styleable.*/LinearLayout_showDividers, SHOW_DIVIDER_NONE); mShowDividers = a.getInt(/*com.android.internal.R.styleable.*/LinearLayout_showDividers, SHOW_DIVIDER_NONE);
mDividerPadding = a.getDimensionPixelSize(/*com.android.internal.R.styleable.*/LinearLayout_dividerPadding, 0); mDividerPadding = a.getDimensionPixelSize(/*com.android.internal.R.styleable.*/LinearLayout_dividerPadding, 0);
mUseLargestChild = a.getBoolean(/*com.android.internal.R.styleable.*/LinearLayout_measureWithLargestChild, false);
a.recycle(); a.recycle();
} }
@ -100,6 +96,12 @@ public class IcsLinearLayout extends NineLinearLayout {
if (divider == mDivider) { if (divider == mDivider) {
return; return;
} }
//Fix for issue #379
if (divider instanceof ColorDrawable && Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
divider = new IcsColorDrawable((ColorDrawable) divider);
}
mDivider = divider; mDivider = divider;
if (divider != null) { if (divider != null) {
mDividerWidth = divider.getIntrinsicWidth(); mDividerWidth = divider.getIntrinsicWidth();
@ -275,136 +277,4 @@ public class IcsLinearLayout extends NineLinearLayout {
} }
return false; return false;
} }
/**
* When true, all children with a weight will be considered having
* the minimum size of the largest child. If false, all children are
* measured normally.
*
* @return True to measure children with a weight using the minimum
* size of the largest child, false otherwise.
*
* @attr ref android.R.styleable#LinearLayout_measureWithLargestChild
*/
public boolean isMeasureWithLargestChildEnabled() {
return mUseLargestChild;
}
/**
* When set to true, all children with a weight will be considered having
* the minimum size of the largest child. If false, all children are
* measured normally.
*
* Disabled by default.
*
* @param enabled True to measure children with a weight using the
* minimum size of the largest child, false otherwise.
*
* @attr ref android.R.styleable#LinearLayout_measureWithLargestChild
*/
public void setMeasureWithLargestChildEnabled(boolean enabled) {
mUseLargestChild = enabled;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (mUseLargestChild) {
final int orientation = getOrientation();
switch (orientation) {
case HORIZONTAL:
useLargestChildHorizontal();
break;
case VERTICAL:
useLargestChildVertical();
break;
}
}
}
private void useLargestChildHorizontal() {
final int childCount = getChildCount();
// Find largest child width
int largestChildWidth = 0;
for (int i = 0; i < childCount; i++) {
final View child = getChildAt(i);
largestChildWidth = Math.max(child.getMeasuredWidth(), largestChildWidth);
}
int totalWidth = 0;
// Re-measure childs
for (int i = 0; i < childCount; i++) {
final View child = getChildAt(i);
if (child == null || child.getVisibility() == View.GONE) {
continue;
}
final LinearLayout.LayoutParams lp =
(LinearLayout.LayoutParams) child.getLayoutParams();
float childExtra = lp.weight;
if (childExtra > 0) {
child.measure(
MeasureSpec.makeMeasureSpec(largestChildWidth,
MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(child.getMeasuredHeight(),
MeasureSpec.EXACTLY));
totalWidth += largestChildWidth;
} else {
totalWidth += child.getMeasuredWidth();
}
totalWidth += lp.leftMargin + lp.rightMargin;
}
totalWidth += getPaddingLeft() + getPaddingRight();
setMeasuredDimension(totalWidth, getMeasuredHeight());
}
private void useLargestChildVertical() {
final int childCount = getChildCount();
// Find largest child width
int largestChildHeight = 0;
for (int i = 0; i < childCount; i++) {
final View child = getChildAt(i);
largestChildHeight = Math.max(child.getMeasuredHeight(), largestChildHeight);
}
int totalHeight = 0;
// Re-measure childs
for (int i = 0; i < childCount; i++) {
final View child = getChildAt(i);
if (child == null || child.getVisibility() == View.GONE) {
continue;
}
final LinearLayout.LayoutParams lp =
(LinearLayout.LayoutParams) child.getLayoutParams();
float childExtra = lp.weight;
if (childExtra > 0) {
child.measure(
MeasureSpec.makeMeasureSpec(child.getMeasuredWidth(),
MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(largestChildHeight,
MeasureSpec.EXACTLY));
totalHeight += largestChildHeight;
} else {
totalHeight += child.getMeasuredHeight();
}
totalHeight += lp.leftMargin + lp.rightMargin;
}
totalHeight += getPaddingLeft() + getPaddingRight();
setMeasuredDimension(getMeasuredWidth(), totalHeight);
}
} }

17
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/IcsListPopupWindow.java vendored

@ -258,6 +258,23 @@ public class IcsListPopupWindow {
mPopup.setInputMethodMode(mode); mPopup.setInputMethodMode(mode);
} }
/**
* Set the selected position of the list.
* Only valid when {@link #isShowing()} == {@code true}.
*
* @param position List position to set as selected.
*/
public void setSelection(int position) {
DropDownListView list = mDropDownList;
if (isShowing() && list != null) {
list.mListSelectionHidden = false;
list.setSelection(position);
if (list.getChoiceMode() != ListView.CHOICE_MODE_NONE) {
list.setItemChecked(position, true);
}
}
}
public void clearListSelection() { public void clearListSelection() {
final DropDownListView list = mDropDownList; final DropDownListView list = mDropDownList;
if (list != null) { if (list != null) {

60
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/IcsToast.java vendored

@ -0,0 +1,60 @@
package com.actionbarsherlock.internal.widget;
import android.content.Context;
import android.util.Log;
import android.view.Gravity;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.widget.TextView;
import android.widget.Toast;
import com.actionbarsherlock.R;
public class IcsToast extends Toast {
public static final int LENGTH_LONG = Toast.LENGTH_LONG;
public static final int LENGTH_SHORT = Toast.LENGTH_SHORT;
private static final String TAG = "Toast";
public static Toast makeText(Context context, CharSequence s, int duration) {
if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) {
return Toast.makeText(context, s, duration);
}
IcsToast toast = new IcsToast(context);
toast.setDuration(duration);
TextView view = new TextView(context);
view.setText(s);
// Original AOSP using reference on @android:color/bright_foreground_dark
// bright_foreground_dark - reference on @android:color/background_light
// background_light - 0xffffffff
view.setTextColor(0xffffffff);
view.setGravity(Gravity.CENTER);
view.setBackgroundResource(R.drawable.abs__toast_frame);
toast.setView(view);
return toast;
}
public static Toast makeText(Context context, int resId, int duration) {
return makeText(context, context.getResources().getString(resId), duration);
}
public IcsToast(Context context) {
super(context);
}
@Override
public void setText(CharSequence s) {
if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) {
super.setText(s);
return;
}
if (getView() == null) {
return;
}
try {
((TextView) getView()).setText(s);
} catch (ClassCastException e) {
Log.e(TAG, "This Toast was not created with IcsToast.makeText", e);
}
}
}

2
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.java vendored

@ -186,7 +186,7 @@ public class ScrollingTabContainerView extends NineHorizontalScrollView
} }
private IcsLinearLayout createTabLayout() { private IcsLinearLayout createTabLayout() {
final IcsLinearLayout tabLayout = (IcsLinearLayout) LayoutInflater.from(getContext()) final TabsLinearLayout tabLayout = (TabsLinearLayout) LayoutInflater.from(getContext())
.inflate(R.layout.abs__action_bar_tab_bar_view, null); .inflate(R.layout.abs__action_bar_tab_bar_view, null);
tabLayout.setMeasureWithLargestChildEnabled(true); tabLayout.setMeasureWithLargestChildEnabled(true);
tabLayout.setLayoutParams(new LinearLayout.LayoutParams( tabLayout.setLayoutParams(new LinearLayout.LayoutParams(

113
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/internal/widget/TabsLinearLayout.java vendored

@ -0,0 +1,113 @@
package com.actionbarsherlock.internal.widget;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
public class TabsLinearLayout extends IcsLinearLayout {
private static final int[] R_styleable_LinearLayout = new int[] {
/* 0 */ android.R.attr.measureWithLargestChild,
};
private static final int LinearLayout_measureWithLargestChild = 0;
private boolean mUseLargestChild;
public TabsLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs, /*com.android.internal.R.styleable.*/R_styleable_LinearLayout);
mUseLargestChild = a.getBoolean(/*com.android.internal.R.styleable.*/LinearLayout_measureWithLargestChild, false);
a.recycle();
}
/**
* When true, all children with a weight will be considered having
* the minimum size of the largest child. If false, all children are
* measured normally.
*
* @return True to measure children with a weight using the minimum
* size of the largest child, false otherwise.
*
* @attr ref android.R.styleable#LinearLayout_measureWithLargestChild
*/
public boolean isMeasureWithLargestChildEnabled() {
return mUseLargestChild;
}
/**
* When set to true, all children with a weight will be considered having
* the minimum size of the largest child. If false, all children are
* measured normally.
*
* Disabled by default.
*
* @param enabled True to measure children with a weight using the
* minimum size of the largest child, false otherwise.
*
* @attr ref android.R.styleable#LinearLayout_measureWithLargestChild
*/
public void setMeasureWithLargestChildEnabled(boolean enabled) {
mUseLargestChild = enabled;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
final int childCount = getChildCount();
if (childCount <= 2) return;
final int mode = MeasureSpec.getMode(widthMeasureSpec);
if (mUseLargestChild && mode == MeasureSpec.UNSPECIFIED) {
final int orientation = getOrientation();
if (orientation == HORIZONTAL) {
useLargestChildHorizontal();
}
}
}
private void useLargestChildHorizontal() {
final int childCount = getChildCount();
// Find largest child width
int largestChildWidth = 0;
for (int i = 0; i < childCount; i++) {
final View child = getChildAt(i);
largestChildWidth = Math.max(child.getMeasuredWidth(), largestChildWidth);
}
int totalWidth = 0;
// Re-measure childs
for (int i = 0; i < childCount; i++) {
final View child = getChildAt(i);
if (child == null || child.getVisibility() == View.GONE) {
continue;
}
final LinearLayout.LayoutParams lp =
(LinearLayout.LayoutParams) child.getLayoutParams();
float childExtra = lp.weight;
if (childExtra > 0) {
child.measure(
MeasureSpec.makeMeasureSpec(largestChildWidth,
MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(child.getMeasuredHeight(),
MeasureSpec.EXACTLY));
totalWidth += largestChildWidth;
} else {
totalWidth += child.getMeasuredWidth();
}
totalWidth += lp.leftMargin + lp.rightMargin;
}
totalWidth += getPaddingLeft() + getPaddingRight();
setMeasuredDimension(totalWidth, getMeasuredHeight());
}
}

14
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/widget/ActivityChooserView.java vendored

@ -395,7 +395,11 @@ class ActivityChooserView extends ViewGroup implements ActivityChooserModelClien
super.onAttachedToWindow(); super.onAttachedToWindow();
ActivityChooserModel dataModel = mAdapter.getDataModel(); ActivityChooserModel dataModel = mAdapter.getDataModel();
if (dataModel != null) { if (dataModel != null) {
try {
dataModel.registerObserver(mModelDataSetOberver); dataModel.registerObserver(mModelDataSetOberver);
} catch (IllegalStateException e) {
// Related to #557.
}
} }
mIsAttachedToWindow = true; mIsAttachedToWindow = true;
} }
@ -522,6 +526,9 @@ class ActivityChooserView extends ViewGroup implements ActivityChooserModelClien
mDefaultActionButtonContentDescription, label); mDefaultActionButtonContentDescription, label);
mDefaultActivityButton.setContentDescription(contentDescription); mDefaultActivityButton.setContentDescription(contentDescription);
} }
// Work-around for #415.
mAdapter.setShowDefaultActivity(false, false);
} else { } else {
mDefaultActivityButton.setVisibility(View.GONE); mDefaultActivityButton.setVisibility(View.GONE);
} }
@ -644,7 +651,8 @@ class ActivityChooserView extends ViewGroup implements ActivityChooserModelClien
private int mMaxActivityCount = MAX_ACTIVITY_COUNT_DEFAULT; private int mMaxActivityCount = MAX_ACTIVITY_COUNT_DEFAULT;
private boolean mShowDefaultActivity; // Work-around for #415.
private boolean mShowDefaultActivity = true;
private boolean mHighlightDefaultActivity; private boolean mHighlightDefaultActivity;
@ -661,7 +669,11 @@ class ActivityChooserView extends ViewGroup implements ActivityChooserModelClien
} }
mDataModel = dataModel; mDataModel = dataModel;
if (dataModel != null && isShown()) { if (dataModel != null && isShown()) {
try {
dataModel.registerObserver(mModelDataSetOberver); dataModel.registerObserver(mModelDataSetOberver);
} catch (IllegalStateException e) {
// Related to #557.
}
} }
notifyDataSetChanged(); notifyDataSetChanged();
} }

4
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/widget/SearchView.java vendored

@ -1623,8 +1623,8 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
private void forceSuggestionQuery() { private void forceSuggestionQuery() {
try { try {
Method before = SearchAutoComplete.class.getMethod("doBeforeTextChanged"); Method before = AutoCompleteTextView.class.getDeclaredMethod("doBeforeTextChanged");
Method after = SearchAutoComplete.class.getMethod("doAfterTextChanged"); Method after = AutoCompleteTextView.class.getDeclaredMethod("doAfterTextChanged");
before.setAccessible(true); before.setAccessible(true);
after.setAccessible(true); after.setAccessible(true);
before.invoke(mQueryTextView); before.invoke(mQueryTextView);

31
external/JakeWharton-ActionBarSherlock/library/src/com/actionbarsherlock/widget/SuggestionsAdapter.java vendored

@ -66,6 +66,7 @@ class SuggestionsAdapter extends ResourceCursorAdapter implements OnClickListene
static final int REFINE_ALL = 2; static final int REFINE_ALL = 2;
private SearchManager mSearchManager; private SearchManager mSearchManager;
private SearchableInfo mSearchable;
private SearchView mSearchView; private SearchView mSearchView;
private Context mProviderContext; private Context mProviderContext;
private WeakHashMap<String, Drawable.ConstantState> mOutsideDrawablesCache; private WeakHashMap<String, Drawable.ConstantState> mOutsideDrawablesCache;
@ -94,12 +95,13 @@ class SuggestionsAdapter extends ResourceCursorAdapter implements OnClickListene
//private static final long DELETE_KEY_POST_DELAY = 500L; //private static final long DELETE_KEY_POST_DELAY = 500L;
public SuggestionsAdapter(Context context, SearchView searchView, public SuggestionsAdapter(Context context, SearchView searchView,
SearchableInfo mSearchable, WeakHashMap<String, Drawable.ConstantState> outsideDrawablesCache) { SearchableInfo searchable, WeakHashMap<String, Drawable.ConstantState> outsideDrawablesCache) {
super(context, super(context,
R.layout.abs__search_dropdown_item_icons_2line, R.layout.abs__search_dropdown_item_icons_2line,
null, // no initial cursor null, // no initial cursor
true); // auto-requery true); // auto-requery
mSearchManager = (SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE); mSearchManager = (SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE);
mSearchable = searchable;
mProviderContext = mContext; mProviderContext = mContext;
mSearchView = searchView; mSearchView = searchView;
@ -199,25 +201,48 @@ class SuggestionsAdapter extends ResourceCursorAdapter implements OnClickListene
} }
public Cursor getSuggestions(String query, int limit) { public Cursor getSuggestions(String query, int limit) {
if (mSearchable == null) {
return null;
}
String authority = mSearchable.getSuggestAuthority();
if (authority == null) {
return null;
}
Uri.Builder uriBuilder = new Uri.Builder() Uri.Builder uriBuilder = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT) .scheme(ContentResolver.SCHEME_CONTENT)
.authority(authority)
.query("") // TODO: Remove, workaround for a bug in Uri.writeToParcel() .query("") // TODO: Remove, workaround for a bug in Uri.writeToParcel()
.fragment(""); // TODO: Remove, workaround for a bug in Uri.writeToParcel() .fragment(""); // TODO: Remove, workaround for a bug in Uri.writeToParcel()
// if content path provided, insert it now
final String contentPath = mSearchable.getSuggestPath();
if (contentPath != null) {
uriBuilder.appendEncodedPath(contentPath);
}
// append standard suggestion query path // append standard suggestion query path
uriBuilder.appendPath(SearchManager.SUGGEST_URI_PATH_QUERY); uriBuilder.appendPath(SearchManager.SUGGEST_URI_PATH_QUERY);
// get the query selection, may be null
String selection = mSearchable.getSuggestSelection();
// inject query, either as selection args or inline // inject query, either as selection args or inline
String[] selArgs = null;
if (selection != null) { // use selection if provided
selArgs = new String[] { query };
} else { // no selection, use REST pattern
uriBuilder.appendPath(query); uriBuilder.appendPath(query);
}
if (limit > 0) { if (limit > 0) {
uriBuilder.appendQueryParameter(SearchManager.SUGGEST_PARAMETER_LIMIT, String.valueOf(limit)); uriBuilder.appendQueryParameter("limit", String.valueOf(limit));
} }
Uri uri = uriBuilder.build(); Uri uri = uriBuilder.build();
// finally, make the query // finally, make the query
return mContext.getContentResolver().query(uri, null, null, null, null); return mContext.getContentResolver().query(uri, null, selection, selArgs, null);
} }
public void close() { public void close() {

Loading…
Cancel
Save