From e3fea30abe9f9f16dbfa5e989e7058842b085b7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Wed, 12 Dec 2012 13:58:22 +0100 Subject: [PATCH] Update ActionBarSherlock --- .../ActionBarSherlock/AndroidManifest.xml | 4 +- APG/android-libs/ActionBarSherlock/build.xml | 41 +- .../libs/android-support-v4.jar | Bin 349252 -> 271754 bytes APG/android-libs/ActionBarSherlock/pom.xml | 15 +- .../ActionBarSherlock/proguard-project.txt | 20 + .../abs__ab_share_pack_holo_dark.9.png | Bin 2866 -> 2863 bytes .../abs__ab_share_pack_holo_light.9.png | Bin 2862 -> 2859 bytes .../drawable-hdpi/abs__ic_clear_disabled.png | Bin 0 -> 1774 bytes .../drawable-hdpi/abs__ic_clear_normal.png | Bin 0 -> 1945 bytes ...c_clear_search_api_disabled_holo_light.png | Bin 0 -> 1504 bytes .../abs__ic_clear_search_api_holo_light.png | Bin 0 -> 1540 bytes .../res/drawable-hdpi/abs__ic_go.png | Bin 0 -> 1415 bytes .../abs__ic_go_search_api_holo_light.png | Bin 0 -> 1252 bytes .../res/drawable-hdpi/abs__ic_search.png | Bin 0 -> 2280 bytes .../abs__ic_search_api_holo_light.png | Bin 0 -> 2271 bytes .../drawable-hdpi/abs__ic_voice_search.png | Bin 0 -> 2070 bytes .../abs__ic_voice_search_api_holo_light.png | Bin 0 -> 1833 bytes ...__textfield_search_default_holo_dark.9.png | Bin 0 -> 110 bytes ..._textfield_search_default_holo_light.9.png | Bin 0 -> 105 bytes ...field_search_right_default_holo_dark.9.png | Bin 0 -> 108 bytes ...ield_search_right_default_holo_light.9.png | Bin 0 -> 103 bytes ...ield_search_right_selected_holo_dark.9.png | Bin 0 -> 114 bytes ...eld_search_right_selected_holo_light.9.png | Bin 0 -> 111 bytes ..._textfield_search_selected_holo_dark.9.png | Bin 0 -> 114 bytes ...textfield_search_selected_holo_light.9.png | Bin 0 -> 112 bytes .../abs__ab_share_pack_holo_dark.9.png | Bin 2851 -> 2849 bytes .../abs__ab_share_pack_holo_light.9.png | Bin 122 -> 191 bytes .../drawable-mdpi/abs__ic_clear_disabled.png | Bin 0 -> 1775 bytes .../drawable-mdpi/abs__ic_clear_normal.png | Bin 0 -> 1869 bytes ...c_clear_search_api_disabled_holo_light.png | Bin 0 -> 740 bytes .../abs__ic_clear_search_api_holo_light.png | Bin 0 -> 743 bytes .../res/drawable-mdpi/abs__ic_go.png | Bin 0 -> 1538 bytes .../abs__ic_go_search_api_holo_light.png | Bin 0 -> 570 bytes .../res/drawable-mdpi/abs__ic_search.png | Bin 0 -> 2280 bytes .../abs__ic_search_api_holo_light.png | Bin 0 -> 1541 bytes .../drawable-mdpi/abs__ic_voice_search.png | Bin 0 -> 1937 bytes .../abs__ic_voice_search_api_holo_light.png | Bin 0 -> 794 bytes ...__textfield_search_default_holo_dark.9.png | Bin 0 -> 106 bytes ..._textfield_search_default_holo_light.9.png | Bin 0 -> 100 bytes ...field_search_right_default_holo_dark.9.png | Bin 0 -> 105 bytes ...ield_search_right_default_holo_light.9.png | Bin 0 -> 98 bytes ...ield_search_right_selected_holo_dark.9.png | Bin 0 -> 107 bytes ...eld_search_right_selected_holo_light.9.png | Bin 0 -> 107 bytes ..._textfield_search_selected_holo_dark.9.png | Bin 0 -> 109 bytes ...textfield_search_selected_holo_light.9.png | Bin 0 -> 109 bytes .../abs__ab_share_pack_holo_dark.9.png | Bin 2875 -> 2878 bytes .../abs__ab_share_pack_holo_light.9.png | Bin 2869 -> 2873 bytes .../drawable-xhdpi/abs__ic_clear_disabled.png | Bin 0 -> 2531 bytes ...c_clear_search_api_disabled_holo_light.png | Bin 0 -> 1315 bytes .../abs__ic_clear_search_api_holo_light.png | Bin 0 -> 1447 bytes .../res/drawable-xhdpi/abs__ic_go.png | Bin 0 -> 1983 bytes .../abs__ic_go_search_api_holo_light.png | Bin 0 -> 836 bytes .../res/drawable-xhdpi/abs__ic_search.png | Bin 0 -> 3784 bytes .../abs__ic_search_api_holo_light.png | Bin 0 -> 3037 bytes .../drawable-xhdpi/abs__ic_voice_search.png | Bin 0 -> 3053 bytes .../abs__ic_voice_search_api_holo_light.png | Bin 0 -> 1414 bytes ...__textfield_search_default_holo_dark.9.png | Bin 0 -> 126 bytes ..._textfield_search_default_holo_light.9.png | Bin 0 -> 126 bytes ...field_search_right_default_holo_dark.9.png | Bin 0 -> 125 bytes ...ield_search_right_default_holo_light.9.png | Bin 0 -> 127 bytes ...ield_search_right_selected_holo_dark.9.png | Bin 0 -> 128 bytes ...eld_search_right_selected_holo_light.9.png | Bin 0 -> 128 bytes ..._textfield_search_selected_holo_dark.9.png | Bin 0 -> 114 bytes ...textfield_search_selected_holo_light.9.png | Bin 0 -> 126 bytes .../res/drawable/abs__ic_clear.xml | 22 + .../res/drawable/abs__ic_clear_holo_light.xml | 22 + .../drawable/abs__search_dropdown_dark.xml | 22 + .../drawable/abs__search_dropdown_light.xml | 22 + .../abs__textfield_searchview_holo_dark.xml | 22 + .../abs__textfield_searchview_holo_light.xml | 22 + ...__textfield_searchview_right_holo_dark.xml | 22 + ..._textfield_searchview_right_holo_light.xml | 22 + .../res/layout/abs__activity_chooser_view.xml | 2 +- .../res/layout/abs__dialog_title_holo.xml | 2 +- .../abs__search_dropdown_item_icons_2line.xml | 89 + .../res/layout/abs__search_view.xml | 159 ++ .../res/layout/abs__simple_dropdown_hint.xml | 29 + .../res/values-v14/abs__styles.xml | 5 + .../res/values-v14/abs__themes.xml | 4 +- .../res/values/abs__attrs.xml | 58 +- .../res/values/abs__dimens.xml | 23 +- .../res/values/abs__strings.xml | 11 + .../res/values/abs__styles.xml | 28 + .../res/values/abs__themes.xml | 107 +- .../src/android/support/v4/app/Watson.java | 144 ++ .../actionbarsherlock/ActionBarSherlock.java | 5 +- .../com/actionbarsherlock/app/ActionBar.java | 9 + .../app/SherlockActivity.java | 11 + .../app/SherlockFragmentActivity.java | 17 +- .../app/SherlockListActivity.java | 11 + .../app/SherlockPreferenceActivity.java | 11 + .../internal/ActionBarSherlockCompat.java | 44 +- .../internal/ActionBarSherlockNative.java | 10 +- .../internal/app/ActionBarImpl.java | 6 +- .../internal/app/ActionBarWrapper.java | 14 +- .../widget/NineFrameLayout.java | 8 - .../widget/NineLinearLayout.java | 8 - .../view/menu/ActionMenuPresenter.java | 11 +- .../internal/view/menu/ActionMenuView.java | 3 + .../internal/view/menu/MenuItemWrapper.java | 22 +- .../internal/view/menu/MenuWrapper.java | 13 +- .../internal/widget/ActionBarContainer.java | 13 + .../internal/widget/CapitalizingTextView.java | 10 +- .../widget/CollapsibleActionViewWrapper.java | 30 + .../internal/widget/IcsColorDrawable.java | 41 + .../internal/widget/IcsLinearLayout.java | 154 +- .../widget/ScrollingTabContainerView.java | 1 + .../actionbarsherlock/view/MenuInflater.java | 41 +- .../widget/ActivityChooserModel.java | 31 +- .../widget/ActivityChooserView.java | 13 +- .../actionbarsherlock/widget/SearchView.java | 1811 +++++++++++++++++ .../widget/SuggestionsAdapter.java | 733 +++++++ .../internal/ManifestParsingTest.java | 8 +- 113 files changed, 3797 insertions(+), 209 deletions(-) create mode 100644 APG/android-libs/ActionBarSherlock/proguard-project.txt create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_clear_disabled.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_clear_normal.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_clear_search_api_disabled_holo_light.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_clear_search_api_holo_light.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_go.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_go_search_api_holo_light.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_search.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_search_api_holo_light.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_voice_search.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_voice_search_api_holo_light.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_default_holo_dark.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_default_holo_light.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_right_default_holo_dark.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_right_default_holo_light.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_right_selected_holo_dark.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_right_selected_holo_light.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_selected_holo_dark.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_selected_holo_light.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_clear_disabled.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_clear_normal.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_clear_search_api_disabled_holo_light.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_clear_search_api_holo_light.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_go.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_go_search_api_holo_light.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_search.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_search_api_holo_light.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_voice_search.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_voice_search_api_holo_light.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_default_holo_dark.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_default_holo_light.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_right_default_holo_dark.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_right_default_holo_light.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_right_selected_holo_dark.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_right_selected_holo_light.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_selected_holo_dark.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_selected_holo_light.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_clear_disabled.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_clear_search_api_disabled_holo_light.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_clear_search_api_holo_light.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_go.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_go_search_api_holo_light.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_search.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_search_api_holo_light.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_voice_search.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_voice_search_api_holo_light.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_default_holo_dark.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_default_holo_light.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_right_default_holo_dark.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_right_default_holo_light.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_right_selected_holo_dark.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_right_selected_holo_light.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_selected_holo_dark.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_selected_holo_light.9.png create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable/abs__ic_clear.xml create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable/abs__ic_clear_holo_light.xml create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable/abs__search_dropdown_dark.xml create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable/abs__search_dropdown_light.xml create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_holo_dark.xml create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_holo_light.xml create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_right_holo_dark.xml create mode 100644 APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_right_holo_light.xml create mode 100644 APG/android-libs/ActionBarSherlock/res/layout/abs__search_dropdown_item_icons_2line.xml create mode 100644 APG/android-libs/ActionBarSherlock/res/layout/abs__search_view.xml create mode 100644 APG/android-libs/ActionBarSherlock/res/layout/abs__simple_dropdown_hint.xml create mode 100644 APG/android-libs/ActionBarSherlock/src/android/support/v4/app/Watson.java create mode 100644 APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CollapsibleActionViewWrapper.java create mode 100644 APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsColorDrawable.java create mode 100644 APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/SearchView.java create mode 100644 APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/SuggestionsAdapter.java diff --git a/APG/android-libs/ActionBarSherlock/AndroidManifest.xml b/APG/android-libs/ActionBarSherlock/AndroidManifest.xml index c4a75f32c..7b8a84824 100644 --- a/APG/android-libs/ActionBarSherlock/AndroidManifest.xml +++ b/APG/android-libs/ActionBarSherlock/AndroidManifest.xml @@ -1,6 +1,6 @@ - + - + diff --git a/APG/android-libs/ActionBarSherlock/build.xml b/APG/android-libs/ActionBarSherlock/build.xml index 3948e7c6a..56bc65293 100644 --- a/APG/android-libs/ActionBarSherlock/build.xml +++ b/APG/android-libs/ActionBarSherlock/build.xml @@ -1,5 +1,5 @@ - + + + + + + + - - - + + 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 O?L$Me|0&D^n*RaLtuT53 delta 221203 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 z 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

#6_}sj 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

e^a*Ck-92BY&t!e4$EMepsdf(>bZe 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 G{gV2hbhz9 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 diff --git a/APG/android-libs/ActionBarSherlock/pom.xml b/APG/android-libs/ActionBarSherlock/pom.xml index 5373fb012..3b6ce40ce 100644 --- a/APG/android-libs/ActionBarSherlock/pom.xml +++ b/APG/android-libs/ActionBarSherlock/pom.xml @@ -3,15 +3,14 @@ 4.0.0 - com.actionbarsherlock - library + actionbarsherlock ActionBarSherlock apklib com.actionbarsherlock parent - 4.1.0 + 4.2.0 ../pom.xml @@ -26,11 +25,6 @@ support-v4 - - com.pivotallabs - robolectric - test - junit junit @@ -47,6 +41,9 @@ com.jayway.maven.plugins.android.generation2 android-maven-plugin true + + ignored + @@ -132,7 +129,7 @@ com.google.code.maven-replacer-plugin maven-replacer-plugin - [1.4.1,) + [1.4.0,) replace diff --git a/APG/android-libs/ActionBarSherlock/proguard-project.txt b/APG/android-libs/ActionBarSherlock/proguard-project.txt new file mode 100644 index 000000000..f2fe1559a --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_share_pack_holo_dark.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_share_pack_holo_dark.9.png index 6c1415772d03a71c0677f6e2461521bfae829ce9..81b87b86c959a98c478177270c979763831ebf66 100644 GIT binary patch delta 201 zcmdlawq8uJGr-TCmrII^fq{Y7)59eQNUH&{4hI{M@#746?E`GKoZ+91l{~)+v z@AAnL6~*fr*h@TpUD@xjF|%k3>Wf7F1*%WTfrdc+Tg(2sXU;2b znlwRs;rBZA@0|)aZxu)Wv1OS0=-a7tHeT)SbHW#Y?>rjpHv3+ftykiq7Ea+XiD|3b yS{I9``OMfL-^v^BdDY*7AE&~7avzuYM&%f;dWB?lFzskrs#+C?@71)kQ2 z|7)xMKaUm{^*oxPdhV#F$v!u=Gd+|Y{hB*ji8+G5*Zj!Mi>vDRWqTAHoAx!I zy0U}0Q1lZ|fGwM2(>>>p_t(l>DJeMv9rgb|GlTi&f-*motEYiBF?hQAxvX@#746?E`GKoZ+91l{~)+v z@AAnL6~*fr*h@TpUD@xjF|+7!7F&kr0M*BOx;TbJ9DaNKAa8?$0K>t<5fV#pONK4T zIKjHeINoHao%-u4L(aZ$4&ljzs|3__QBJ@?ecrqT6rZNYT*=~CUGr{SKCd~ uXNEzdJy&&+_bSE%E&~7avzuYM&%f;dWB?(V-oMA*md+$6fU|)TovBZ5mj+zQDC>5u2h$pBj>J&BM#x+9-0pB x!iQJ5E*9h6;QA#i@9%QMGzMv)vH$-wGpxu diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_clear_disabled.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_clear_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..d97c342d53690e6d286efbe5f37562747a49b96d GIT binary patch literal 1774 zcmVU8P*7-ZbZ>KLZ*U+lnSp_Ufq@}0xwybFAi#%#fq@|}KQEO56)-X|e7nZL z$iTqBa9P*U#mSX{G{Bl%P*lRez;J+pfx##xwK$o9f#C}S14DXwNkIt%17i#W1A|CX zc0maP17iUL1A|C*NRTrF17iyV0~1e4YDEbH0|SF|enDkXW_m`6f}y3QrGjHhep0GJ zaAk2xYHqQDXI^rCQ9*uDVo7QW0|Nup4h9AW240u^5(W3f%sd4n162kpgNVo|1qcff zJ_s=cNG>fZg9jx8g8+j9g8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCG zm^qSpA@ds+OO_6nTdaDlt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JW@PU zd4+f<@d@)yL(o<5icqT158+-B6_LH7;i6x}CW#w~Uy-Pgl#@Irl`kzV zeL|*8R$ca%T%Wv){2zs_iiJvgN^h0dsuZZ2sQy$tsNSU!s;Q*;LF<6_B%M@UD?LHI zSNcZ`78uqV#TeU~$eS{ozBIdFzSClfs*^S+dw;4dus<{M;#|MXC)T}S9v!D zcV!QCPhBq)ZyO(X-(bH4|NMaZz==UigLj2o41F2S6d@OB6%`R(5i>J(Puzn9wnW{e zu;hl6HK{k#IWjCVGqdJqU(99Cv(K+6*i`tgSi2;vbXD1#3jNBGs$DgVwO(~o>mN4i zHPtkqZIx>)Y(Ls5-Br|mx>vQYvH$Kwn@O`L|D75??eGkZnfg$5<;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e z{{R4h=>PzAFaQARU;qF*m;eA5Z<1fdMgRZyw(kRs!-6#o(LP%Wr3O<1=S3ZFo9z$bj(u70=3}tI#6DWj&F;Ob99q4>t z7t_JEGi|0s7bcyiT{LI@zd7fguOSTo_Tn%A3;+W_$om&@e+U59{C2xK>{t*000Isi zc-XLE_dt-QB?k*OY(G1$>uu7@#B2;ALf{;yd>Fer3 zxz>Q~gZLw#9*+Wwy1biLp*!&n>VXAqU0c|%HDJZ1jZ6!oDKES7+VWmrg9gjr1HUt9 z$&h=(yP22-u6mx^E9uZ+0pKCX;bJ-&1r%+uT+pDpXT$;nS`cq%Mnv${vs}4kKnFnO zP;ojL1*vOGZSwsAS`q0H5q$MLS1wr~GAT|cBOrBcX}?{*UqB~HsT)hjem%$S zQCYe=d4(eMUA?{!rJtE>6>2uC>s{nMUVQiovq!7(tSuZUVsBCpu612n+{HyeG&{C3 zg%Qx;Ym2+tg`4}D-D9)knmeH3*ac5hx88#8rcKL0fWiC005AajcYxmm08)I=nXx}} QjQ{`u07*qoM6N<$g6k0wDF6Tf literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_clear_normal.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_clear_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..33ad8d4b891b14d934e470b2222571ea859c77a6 GIT binary patch literal 1945 zcmV;K2WI$*P)U8P*7-ZbZ>KLZ*U+lnSp_Ufq@}0xwybFAi#%#fq@|}KQEO56)-X|e7nZL z$iTqBa9P*U#mSX{G{Bl%P*lRez;J+pfx##xwK$o9f#C}S14DXwNkIt%17i#W1A|CX zc0maP17iUL1A|C*NRTrF17iyV0~1e4YDEbH0|SF|enDkXW_m`6f}y3QrGjHhep0GJ zaAk2xYHqQDXI^rCQ9*uDVo7QW0|Nup4h9AW240u^5(W3f%sd4n162kpgNVo|1qcff zJ_s=cNG>fZg9jx8g8+j9g8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCG zm^qSpA@ds+OO_6nTdaDlt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JW@PU zd4+f<@d@)yL(o<5icqT158+-B6_LH7;i6x}CW#w~Uy-Pgl#@Irl`kzV zeL|*8R$ca%T%Wv){2zs_iiJvgN^h0dsuZZ2sQy$tsNSU!s;Q*;LF<6_B%M@UD?LHI zSNcZ`78uqV#TeU~$eS{ozBIdFzSClfs*^S+dw;4dus<{M;#|MXC)T}S9v!D zcV!QCPhBq)ZyO(X-(bH4|NMaZz==UigLj2o41F2S6d@OB6%`R(5i>J(Puzn9wnW{e zu;hl6HK{k#IWjCVGqdJqU(99Cv(K+6*i`tgSi2;vbXD1#3jNBGs$DgVwO(~o>mN4i zHPtkqZIx>)Y(Ls5-Br|mx>vQYvH$Kwn@O`L|D75??eGkZnfg$5<;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e z{{R4h=>PzAFaQARU;qF*m;eA5Z<1fdMgRZ<`$>NYxmjX{xd; z@m&{rFo*<6ia-&%?9S}Yj1NoMU6_?!qi=gB^D?>lzI)G{bI*)0`G1E*K~NAB1j^1w z0>tKJZeH2PwwY!w0t6BY3JN+p33SuQLYI(HkdcX#K*!j*7|BwgVB_Kabv%L#JBpC9 z;EQnJ<+1&B?8Szh`#X@?^XlV2b_Y-K5FTsACcc7-srF!J%cFRa5f;nX88so}^!n$z zoaNXjzHYk7GONT$qz7ti^`5C0{0Fct&sMz04AGszwAz7*v3&RHh^`S091pfpv3(b5 z_*4F8KwG3jHT04 zL)Y{;8%;+;M^cIuK77Jo4_dVE!}GH&5hG!l3Z``(DA*|D!7J6TwaW^Q$!{BPvBY1f zfE_QM@bQ{@gcj@j`1~x3tfQh^)q%AjL($PLWE_*Djkj1Kg2074d~6f{Nje^K7u;94 zsJv3$@rsafhDHP55kG-dHIPmFAA9=;s{MWcddV( zJFI2mtpvLr*Csj|Q8r$mAN(8x6+<_AKkZ*4LX3DO{@?b4Jsi2Lc%zUffeHejlb9+rq0PNT9OD z;u|vq-{=}^jSayj%5h_}ZkgGdzKgPOi{A&T+VkZWUN=qCxUcB??b4_oXFbpmY{r8l zAAy7`+*;!URqf8e1DIx-VoXo49%u+2!egDT);TPBON$juHQN2v;6f%oLvg2T=HjTH zV68;SR?~`g%UoVKaQk-bqv^ppmWX8HlM0b+kmj2@1ok$Lvua%nR#_xaD8_}Gdqhyt zw&OGA*(k-%DiJgiJLg#o1Tr!L6T|w0FfHFCBm_osWr=J^mg5%t6~${t-Jw00000NkvXXu0mjfxs7-r literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_clear_search_api_disabled_holo_light.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_clear_search_api_disabled_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..3edbd740858acce452a65675b594d87cd85c4cde GIT binary patch literal 1504 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%xRe+5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8nflaTYtD^x(vzwcwbv89=@ zo12R>knQRQ)9aa6T#}fVoC>oy6KF3~uNhvwR?bDKi6!|(A^G_^uoMuGkzbNuoRMFk z;2dnK;G3A7nFr#7q6gwzm(-%nveXo}qWoM1aQIqfVzJ-F(A>z`+0Dqw5#euVHw$9} zR|{85phuLTdQ->=Gku_A^g)RODY3wWfGH5fgeQF<2cCIS^ME;~2$(fE*e!Y)7?=b+ zT^vIyZoLURops1T#P^YM)`G6?uC=+kf7_B4{*@J9^x)duU6<$Tu^imLQtVB+#DuWI zKp&sr#e2ikRF+h_7hGg6C3|* z?e*8ufgcND|MEKid{9C;-~RZ9Bc^sP~EP3ND_zG5Dxwk6j&$wE~4;Qc*`ssan{ zzn`9=dZ&RsirvSfCP;`whUHEmQ}f9$MSB`#rfaa*Eq?H{s4_-JY+eJUGP9%1oq zJCJw4f2WB2si`MZ$~H#$*nP`3S@opI(pSE?i0N0@>$2Vb7oL|#u)gB_!dQ1$La5q` zDeOVQ4#QJ|EiB?JGJhRxA5Ld^&RpYp@TAicHpRs4(vR3C88QC9{5(weR))#4lPN-s z1=7=NbKU$Nr0Hgbao(RTxaH2IZ#(aDrMoH3_0umA{h;I6BI6;^&o0#XM(`ImzsjuT zTnrQ3)U=jJbp=fS?83{ F1OTcH9Pt1E literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_clear_search_api_holo_light.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_clear_search_api_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..90db01b5bcf1246d6a94e83930cac63c93a6cf83 GIT binary patch literal 1540 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 literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_search.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_search.png new file mode 100644 index 0000000000000000000000000000000000000000..4be72f108ba1a4f36da5c3a59b1ed08ddcf7cb8b GIT binary patch literal 2280 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 AsQ>@~ literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_voice_search_api_holo_light.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_voice_search_api_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..3481c982862cd524654e200187445a774446567f GIT binary patch literal 1833 zcmbVNX;2eq7~YUb1P`!K89?kB6p2E1Hz5g$1PR%s1`Ngo6*2bY*3mT(eCwGjDt30z@ADk&)ul!ycbSpXq2nas~26ecnniH=emg*g*#j@Uj16nB_N zi=DC%Hqg(A)tr+Y(ebG%LzlQPJO*&###LsqLlu9w;l%7DLh{2@p8E^+tOq!T_lW zAkrjQDugA;2orvi3RR;rF{(mPu~6K{@h+@VEmI|-Ny!?GN`oM%Mu|v7GKol|K~;>b z*7RYuHV1{-On9GN3uBkTDuptM`n_1Wio`LBAhQXgsILR`g#<-73JE)?GKxVRX0q7) zdw+ReMT_F3WiD>kkc1U{nP0i(9rjT~DpaX7!gS@^xK)~D5v)#TJVPYB*I4ua$r;2r z1NocdKh4s2#B`uveAD{O=FRZnHfCZ-W;Dvr_J%MMH(iS=vz?dnp7r*Q|0OM8=!_4l zs;ZL3zhAiUWdL6Q-YyURf{oFuq)uPWZD82qEi67Cysi1BvmZvMgw)Irq>e&MQ~pM`Lu=nbBxwasjL&Tsbadl%z!58�PUR2s z;--Gn6L-Y44d%`7eX(hACTrQSaf!p)CX^44OWKiL4CvZ6umi8K5;zZ2#*ykw_khy5-2;-x4w&2R z09{9x#xx})BvjJ}TI2cLeM%Juon}o2C0ni%oPP$#W_j{v7Fn&)Y4-+12-XAz2ixMp zdk-dG3-j7Z^7|(bZX9v*jq7?`Wn~?YeZGM=J3B9(I(X1G#M{BXSmw#wPX}s^Mx$a& zd* zptYy_ughebWX6!_=*!|<*LPvVhwlqoZlfEYtjvv>6wjfX3p_g?JMFdJ!co__^o#We zw=b#O^i`T}%SWdnY zptrVi4hONM1>8N+Q_^*Hw7fWo0bv~uaDGTec^ju?7ft7iw};GWFmT;t zmqkFIFYh$^o^;LBh6ZkJNGZ)@ubCQlP9ArdMLX{p^!g2)d{G45wZD$82#Akx7wY?a zz21Agb)mdb(PM7iyy?!^d2(dCvbWL2&n$1d$2oqkM7b5PX3wkWY%R=ajlH#S8mQ3! ge6yDA3jkPwzzE(HQ|OAY)&8HCR-J`5r{^yG7imhbuK)l5 literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_default_holo_dark.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_default_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..70c0e7396edf0237e8830748f2ee74dd505fc0ca GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~k!3HF)wbmE`DN|1u#}JM4$v^)8w`Z37Am6po z+v)2g(?*6L{Kh9|q|6ntUCgFX+;C&MOHPl_^o);w9EZO$F?5z?&pxrv{5Q}522WQ% Jmvv4FO#o+NBeVbj literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_default_holo_light.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_default_holo_light.9.png new file mode 100644 index 0000000000000000000000000000000000000000..36e71d85d08310865a37a38a5876dc78d4372af9 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~k!3HF)wbmE`DFaUz#}JM4$v^)8w`Z37Am6po z+v)2g(?*7d*QRRDn?J5#Tv6p96EC#Ua9@Rb%R>f+&Xuw+O+F;e0P1D%boFyt=akR{ E0I7Z;-v9sr literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_right_default_holo_dark.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_right_default_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..4be4af5fab3a09cce65144c747f24c6ade600359 GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~k!3HF)wbmE`DPvC;#}JM4$v^)8w`Z37Am6po z+v)2g(?$k`c>N1yj{}(xupO|Bb9m#eWaid)`oBujjyMLj^RWk-B)8T8wKI6S`njxg HN@xNA1NtG- literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_right_default_holo_light.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_right_default_holo_light.9.png new file mode 100644 index 0000000000000000000000000000000000000000..e72193f5921ec091dcbdb7a6da540c6ae62a0abf GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~k!3HF)wbmE`DLqdY#}JM4$v^)8w`Z37Am6po z+v)2g(?*5`F8a+MS1=|pKR7U*C#OeuU+2*R28QEj<(b@LKCA=kWbkzLb6Mw<&;$Tx C%ODE? literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_right_selected_holo_dark.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_right_selected_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..8f20b9d2673d84e22fe4f92da5c6fba5524bd7c9 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~k!3HF)wbmE`DN9cm#}JM4$v^)8w`Z37Am6po z+v)2g(?$k`;P+>Y&mX9;kTm#w#$Mr{KU16J0f(K87k2#dS899B%AjFfa`@;vsXm|~ N44$rjF6*2UngAGyC2#-$ literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_right_selected_holo_light.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_right_selected_holo_light.9.png new file mode 100644 index 0000000000000000000000000000000000000000..04f657e1db10e9694c00a2d0240c4dd96a062c37 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~k!3HF)wbmE`DKk$O#}JM4$q6$m+Zg$O@E^Uw z81lZJ?Gxk7s`Po4Y{w3tY?zt;Z*oT>n?b-q29KD3>Vk*AGBMnIke8aaIU*2f0)wZk KpUXO@geCxD+9O{8 literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_selected_holo_dark.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_selected_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..99309ef6d3e32a2d3303400aa061e0508a70f758 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~k!3HF)wbmE`DN9cm#}JM4$v^)8w`Z37Am6po z+v)2g(?*7dS92?$NlFNF3%qKd&uD!9kGjy}NRLj&jF%7WCrYdnXQ&Wp*=?oVF$ZV} NgQu&X%Q~loCII6IBdP!Z literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_selected_holo_light.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-hdpi/abs__textfield_search_selected_holo_light.9.png new file mode 100644 index 0000000000000000000000000000000000000000..9bde7fbdce15a1c2873eb0779ffc0617fd9b15c4 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~k!3HF)wbmE`DRWO3#}JM4$q6$m+Zg$O@E^Uw z81lZJ?bE^f8J_14%!p_Ru>Zp|qw<;kM2WLbT|5rH?EgED6zpZtm|hnx*$^-bXas|& LtDnm{r-UW|n`?NMQuIzW%m|4^W-tHAw1F8@9ba4#vIG&uK!1qTzI8UUfiIJrz;_~bN z|8I#%o;pz>de=itNJM!0!vc#*opFxlSr=EhYKZ+^KHarvaiK|;V61ME;#Ltk*2M`O h+nZJdEJ~ii&9HKdfLCDclW3sv44$rjF6*2UngAA~J(B6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0x&bx%dAc};RNPAX@&CU)vsGF` zLW6+HiGvcirX;Yjwf#TArg-~Q!*SOaMLT$v1pB32%9|AoJ!P9E*rq!!zUV*6af-O| kg%^uijDaRG{Qu9);CiX>x`6(Z*<~OBPgg&ebxsLQ04vEn$^ZZW diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_share_pack_holo_light.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_share_pack_holo_light.9.png index 8f10bd5222239e82e49c5120888fc9a07a324b42..2ed75a767a87ac573cb7306686035f2100459fb5 100644 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)n!3HFaZu8v$Qfx`y?k)`fL2$v|<&%LToCO|{ z#S9GG!XV7ZFl&wkP>{XE)7O>#4jVIz7XKNB(EC6kA5Ry@5Rc=@2?~6F)PwUxdYTwn zdMu8}YM6Xys1i$1bTr(^uv&TM3(=CrV!crU$Q6V-%Qg7n#gTe~DWM4fl0G)# literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|M^6{W5R22vKmPx>XSQNv;&5z| z@wwFK#IyY<~E UNZ9H+7ibuRr>mdKI;Vst0LZr`*8l(j diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_clear_disabled.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_clear_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..79228baed020ea1f69c5fbf3043146c74a59d03b GIT binary patch literal 1775 zcmZ`&dpy$%AO11QL^>23lHS+Qahb^>*U+$WtdYxHa+^y-k$aPsd4;5MiO5jLLT<~O z!w%X=DYs7Ucbc7(4Y4zF8STvZ@BQQbem>9ldA`r*dH(!nVKEM}(#p~R0LY?INLLZ7 zA3#b%v?pVmZUF#Dig4iqmVn0tK++UGAfRkviN)^KU^1~-H&?bA8v^|SN@bGDQgc#^ zQxE1eg5JtRs53JTH2ggLk=O|XLxY=b@0jnIOlGv#_@}oY9;F&FOMJ0zT_WRlYHFu8 ztofX%{rLz8bb)vSZ36~@@G>A!8p<`{A1!vE6HpJ&ihNN<;UYTRPLu(q#gc47TtbQV zS>&fwDwT|PB)Pt@jSjhv4!`!29Of58a! z{%dqZ416J%Rotu7ZJu@Uag;JcMi?Y^GW8_6f$aGo*L0H9*4^sNl@qc``~NaV&!G11 zBGW5N*@&8(1Oi9FFr+V3XDkaGo-8`McjK1I<egf4hdk}Uk;BP#>jXpx9hNjminTfOVLra)tO6o9~Zw& zW~ph=U|h{~m`PCqKTf6u3Qno^ zn{Mz?0t9bS2jg9CmZ-V2(#X%(5BE1C!gyT9a_qIKnctGDzL)*AuOP=)%eI^p>hjay z_oX%R=X)7#>rXlPoG+gKN;l<%XV#ZT%ExZq7YaduEFfnzv6pCc@E~}Ut1|!)VE}MD z4FGn8BIW=(kDuOrIG9rEthn&npa_-01}*(WliGG{fS2Ytqo z@+#}(_)oHST*a&hp%vnHo=JJ1wkrH4S3RN#PB`RYB_W^r%-H>QPU_doj&0bN!Kk1r z7oDl1&J*BHj7Imwd|ce%jk2vzrg9dag_RjFYnNU(-mj$tKU8Q}Ak9=ZerYAA#SV!X zd$j`Xtc3+663Q+7oEh*NTz-+$+K0BeZEXvk?AI8d|q4B<|?#MrvgbJGvTqo+Sj zYr>V==^NquW61f2BKD&5k70Pat#U3^fJjDI2uD6%dy_uwE1?|P`Fd7Buv#x1OMm#s zAh^JDa#6m`tPXCpy!M^KdfaLL$ghUWJLS~9JClDUEKTNN!S5{i@%TUe_I=OK75F6Z z=Fld!X8cQF#+705v?p$%c=|h-8qXTEADrUoK-5x*SoS}^_a?=X=VCn3ye;UTT_>%T zpRgQInr(Y1F75hi+cSH2kGT4CsQzfl5I+0Oww?KptEJQGG8OmGoh*NyE5EpVS=Qye z4cu#|91DSW-IuU-ZE}%k6ufG1h`J~L(eA7`?`R99UPa$|!RyP>D0?TX2T3@o!QB?{ zN!-)0D$c42#W;yy^XKV$`0)mI^J|YC^)$~|8xzJZgV4eVUB^%hwKm>wieG1W+Sb=& z2EsBiDz|Ya^gdlIA}NYmvgqCBrw+L%v$=4qe4I1J7C_qxpq`f$Su4;tX#2Qp-=cSi z2Xj86C)n3ETX@y4wl<#+ZMOl1nW?C*16Ua1CT(1Wa7MZ=EE>pP@* zb1emm>}!@OCu`QUV)T?PSu7b_P&JtoW8GA^@TAmZtq}h`Q#Zl*eXK1_X~;hmyt_go zY{}i7g*?Nr1W^G%+hLFmwgKe70m_6oQUCw| literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_clear_normal.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_clear_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..86944a879b986d941e6567d78fbac16c87ae9244 GIT binary patch literal 1869 zcmbVNc~H}M6fTFTAW9JhxeNgj51OPWje@pKfI5QEBA|d$+W@sTscjVKdVuS?9w2h9 zu!^p(ipSu+I*za)qKMZh4tTpGiYF)@D~E`is<``y;~$%us6_Qf>3EP7d8-+ zSuC3rZA?5JA2A(OQ+kfdV#CSM8yGZ;HF-*gL8aCaG%$}y)sn&B%ahe0pw$F}ae@dq z!XP8kwBcqWp)^OvsLeXHSOZQ80VZdl41u1YRX~P*0ck=rg27L`C^NTgLm=?Ugw_Rv zpPh=2hyrAkkpKi7I8Y4>VL*s*5FTG75={iSFakp`7ecs!hzR9zQ5XikJRqZH)TE#a zEcA;OvkC^&Xxe~6PXctnG=pit3hET2u2VQ z9~N<8VGzQE&zE61CKg~a1QT!t{T$!IN?{zwL_!$n$z%wEg-T!nU&6;R9*)6ME??M> zm6Ik~MXHH@T`i;g87m0=E*6y;2^CElV<>7te+5LPQ8Z;rqYQvdDF7l=YAtD5TdwDG zv>0L3E+#agMoJHS$}g(@hCVJsqzKOFTO4KL4hj`=LnW957mEdaK`0OWg4O(=oI#8; zkfk{OQ!M>kOa)q|UrV1^d~F_rWID#kv<4`i7|nFtQaL7x$+*=PcRNxkacMnTzT(!p zfRg6DJ1Y_~Z$G;tw~$ix*L@nh0_gy+q{K6=O-)U1ZBL7fiw9T#wcP7iz?I7*wg8n!aY@L* z%F1466IZ9xDGw&8Ca%%8-9N%k=5}B-gNg) zDs^~|+ru7gAfdUoeO*+YE(gj=-VB=VaaeB5#xy?WU;B+3~rnji3!zw~u|NB5xDgMA*Ab}CoKR1b4{ zl>=_SIAEWB^HRqqsb8t5;#}&X_CmjxL@oZX6x`u-Nm{2|`y?pbN5T8(*$@T`ZH%+J z9q+wi#oajjm>l)vpmE_mr&lY%70+^a$7TKT;qFtqhuwA!$jh%>ho3F4%BgGKv%2K0 z$HF4;&SJ>7KIHm~u<^wO_8Z;3y_c~N@r~v)LwjwHt(kkY;`G=_K|x(kncTb+Ti2eM z7yH!X-5fzxm)r79(!ZaTJ+c?A_7b`^xjVa7S5;ayZg6q=sKBA)LhBfI?7p4HG-EdX zGM##G-t1BC0PE-nz1YH|+GW>beOJO<&x4C?Y3_ohAr4Hb&I{K{y07O> zYq)siMdY38b0^FH-T7Vnp?+Dwy~?6uy>H4FYTQ}9{^zjW>fFu1k;Wnu$QYKv+~3MD zkL9@kLKD%Thtmq5^yY3(U$KE}2<_4f7b{3i<6pkgb<{dv;FI&fmd#{QXNuR<0GE-t|?<-_xFWf6rQD zvp1?(m;K#mK7kAc23PhCb9_I|Uwpe=_~P7`{<9hKeqT15)CmrGep&{}lJt6uiX0l6LDtGM?vvS&HSN)*I> zeOGt*EnBDP@;N{6y`LG()$~n&=KfpyvX&R-FPte;1xy60C9V-ADTyViR>?)FK#IZ0 zz|c_Fz)aW3GQ`l_%D~9V#8}q=$S`=EA9fW*LvDUbW?Cg~4U>%CWdb!wf@}!RPb(=; nEJ|f?Ovz75Rq)JBOiv9;O-!jQJeg_(RK(!v>gTe~DWM4f-EB1! literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_clear_search_api_holo_light.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_clear_search_api_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..15b86cbb21eb3bfb82d36aa9ce750906297a9225 GIT binary patch literal 743 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{0wkH`a%F)OQ-Tee`#-|*CiUbcIg;ND=p zYvDSd^|6iLOdqf$Xmz|*HxtvIt|l!1HU7>O^~bA&&;Fj*b;Hx}3d6&UEnVN=_&rrS zyUca-tl4jMo@$nFEpTFXzIjD+{<)ibKgss#-rp9f6_EGh??g@(2S&3=!i$ftp1=NR ze5Ls1tv8DvCnWJd(z*Zhh{1dQ0Dw1}N=Vgur< zo}V(7G@F#*B=UQaz!7tS(%x&E*VO)~n0V|`)7|K^f!Elpcvl1$gq+H{_D)QEMqY%8 z_vf1aTF*LU_FtRc+)-?b!3?Ao)T}9E5o1c=IR*74~B%^nkKn;>08-nxG qO3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%F?hQAxvXq8M>Z zk&z^%c%@bRQ#)+nOe){kHaX!!Ue%|-vcG@vo7s2MJqBDZfk5<_)|-ZFZPj9NlZ$EDG$w6h z^v#+%T(e!=j16si)bzU4HWV6_^stND&E;|5`nfYv$?gux?t!>a1t>hEvKg8)f3B--`qJ5Vc+(!(3AIVr zEf|cmkv%DM(IHdcJ}Sgr>#(5~Tn4TISAy%nrQvE?Laps69ZLLT!~WS0QV)l|q?Zr( z+%hOrq1e~am)EDre9b1+$FL^?hsoiT)~9EmS!B=eNVF1PP(kFFm`ljix)2F8;hG8d=#8;jP)h%8u`(ez=ZN9^bNjAY1@m$qMwqc*3 zT<9Z^7q-4S8p!6dM-010M=(>rk1eytHi>R-cR}tW4SUbF89%`nk>dMSnMgg-f@tvLl z8zJ1Aj<77hi)&@}=LO_3nTIUJfhLK?)MTgjijKG^e1tcvx@U?wd-4zBd{w~Rm8u&) z61IEoor<-v>QlY};sLy%=GMYsYZW#7TiibW&xJ?UJ`JsgWSk4`n=4tN;yWe=Mb9;n zrw!^kvCo<)%-&D;l)PgTvU~Z|j|VKn#)IlF_j=`rkH?YbC)&niUyM-$#5;BRtd~Vt zvDwmlW4up^P2AqKxmr=aNvNMq0%A$n_A&Ybf8s&n?eE2(zp1N=^sXKmlORRu-MwkG zqSrlb4;RY>`GT2~ewsriQ0>5-Cr@@n4LZ4_+db%Z)RR$pECx zV&kKm<~rTWsF|5CovUxbAuX%rMqUY#bK_3MXl`zRlnnCM)JOk#@Q|`yZle2b!xrs+ z?}@SMBoaxAn*F`n4c~I!tWN%NL;nce-(Ln9T2XV@wz0+fUe{x3EWBVphWolE&ZMpy zk=t+u)*ULX*vshr>?xS>+y1VFi$&0ZQQaET*YU40s&SgZh;!v@8ZAA*DJJ>D=a=0< zFKXQ=k&~NZZGoK2o`n~+R8w?*R>uuBc#s$EF{m0(={u8TU3kQEm9SfChYCn7J#=g4 z(PaFJU1FFZJS#?cN?VCdd62LmX1(Q&iCokv9@0&`0c7bz75vdTSAVg)Dte++U_U8a z)M|^@vmd{xiq;M1c-`XC1_k!;*hJ-2+0wh;$&M)lJC}axPr((&K~D-GVw^}ZK>;xo z8*&r{B7jDjnH@k`96(zW%`9zDXdCl`2T+hey^ru3{!bx1A}HkS<^L~SLob9t1%PwH KV``51)Bgpr>#?r@ literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_go_search_api_holo_light.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_go_search_api_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..8518498eb6c93e3d4f9f5c806362bf3117b17852 GIT binary patch literal 570 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 literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_default_holo_dark.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_default_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..081657ee7b828a74287d65d2f4644af9c7b55816 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CO!3HF4Hmy+sQih%`jv*44lYjjGZ_jMS*7QH1 z$Cu9~IqOiSz?8?{Eo||(vKg$oJDqvb4v1Q5NJR27d@z6V;avVV1E6LGPgg&ebxsLQ E0ED?8Qvd(} literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_default_holo_light.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_default_holo_light.9.png new file mode 100644 index 0000000000000000000000000000000000000000..3f312b465189caa47a7f8e4bc53c3222521e0bb1 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CO!3HF4Hmy+sQrey_jv*44lYjjGZ_jMS*7QH1 y$CppZQKez^S5>Et`mrVp3OWu(*tYT>W@HfhtG!C@Uj!>q8-u5-pUXO@geCyVL>!s` literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_right_default_holo_dark.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_right_default_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b086fae8738227fc0b4f05171ded25ec1503e49d GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CO!3HF4Hmy+sQU;zbjv*44lYjjGZ_jMS*7QH1 z$Cu9~IqOiSz{ak|8`Hl@9XRLoNT6Brf-|eO+cr*y`8p4HWnZ4T3DnEr>FVdQ&MBb@ E0JhyB4*&oF literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_right_default_holo_light.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_right_default_holo_light.9.png new file mode 100644 index 0000000000000000000000000000000000000000..73c336a77a9c908532b5b39098c22a878e0e87bf GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CO!3HF4Hmy+sQktGFjv*44lYjjGZ_jMS*7QH1 w$CppZQANR3w^={dWI;j4L5+C_+aEG8Z2O~g(C$e@C{PoFr>mdKI;Vst0EP1$iU0rr literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_right_selected_holo_dark.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_right_selected_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..726e0ff427cd175c9c3607e25352bd696a3152c1 GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CO!3HF4Hmy+sQbwLGjv*44lYjjGZ_jMS*7QH1 z$CppT@G}o{phONwVb}j=LshAN!kv;Qt~79nzL7Xt$zT{YC1>l7eH(zf89ZJ6T-G@y GGywpjU?4sK literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_right_selected_holo_light.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_right_selected_holo_light.9.png new file mode 100644 index 0000000000000000000000000000000000000000..726e0ff427cd175c9c3607e25352bd696a3152c1 GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CO!3HF4Hmy+sQbwLGjv*44lYjjGZ_jMS*7QH1 z$CppT@G}o{phONwVb}j=LshAN!kv;Qt~79nzL7Xt$zT{YC1>l7eH(zf89ZJ6T-G@y GGywpjU?4sK literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_selected_holo_dark.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_selected_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..1767c169eef03f3370b0f8e40f531dd481a9b82d GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CO!3HF4Hmy+sQYM}*jv*44lYjjGZ_jMS*7QH1 z$CppT@G}o{phONw%V+tnLd~`l!OqNzXB@V%srV-z^vGhE?K{(iZ(fQrP(OpGtDnm{ Hr-UW|vZo$& literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_selected_holo_light.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-mdpi/abs__textfield_search_selected_holo_light.9.png new file mode 100644 index 0000000000000000000000000000000000000000..1767c169eef03f3370b0f8e40f531dd481a9b82d GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CO!3HF4Hmy+sQYM}*jv*44lYjjGZ_jMS*7QH1 z$CppT@G}o{phONw%V+tnLd~`l!OqNzXB@V%srV-z^vGhE?K{(iZ(fQrP(OpGtDnm{ Hr-UW|vZo$& literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_share_pack_holo_dark.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_share_pack_holo_dark.9.png index 55099d49db309d03035101e55e64396b62af3054..9a70a5d1e3ad43f632287aff78d86289259099db 100644 GIT binary patch delta 216 zcmdljwogp4Gr-TCmrII^fq{Y7)59eQNE-pM6$cxT{FK9WXQNph7e8B)x4R3&e-K=- zclqRrisJPQ>?NMQuIzW%m|1j;4jJw90IDzWba4#HxcBzvMa}~XJPwY*yL`XPFa3N( zP%6W9<9D_RbABk^y7jwgqN$4KB$E{ycV8H-U+L_2$6tA#yq?*TS88&*Wpo8#V1kfJ zd1K3BRwgL;#O?9ZwC>yWCZOhLp;EPaXRkhg)72-Cb@!uf3(#@~Pgg&ebxsLQ0A;;P AOaK4? delta 215 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 WVgEmns=9(>1^{ytE8}V-6#hTCp0D=+ literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_clear_search_api_disabled_holo_light.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_clear_search_api_disabled_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..7fd7aeb2a63980f5c7459b96ae175b875f27add3 GIT binary patch literal 1315 zcmeAS@N?(olHy`uVBq!ia0vp^+91rq0wlddc6tLTrX+877l!}s{b%+Ad7K3vk;OpT z1B~5HX4`=T%L*LRfizez1K-K5QyCaov^`xMLp+YZo#ve{ohs5cKmXZmZ>G$w-JO@O z_$Dncy|l#DX=;KaYmSzf&V&g+I5)gx(wb5qs1h)7!mfsR25uDCBNMaEYi!b%Lx%#0Z>6%}_Ke;bM=$-hufo^&&725YD$vGBuUKV?<1 zW5r*8XXtLO5$#WZeo|;mb85TEyq_Keb3$U;>HYFK{YX}hy1N)ld|`iZ8c+f zaW}0jS<%V*aZgCBwd%4 z`mTTDHix9d^392b?Js?F`)aOklAwYhQ$?F@yb$ytH>J_Jb{Z~vrG;$w0s zy7gpFZTnjBVEMK z?u*UK{&)=cU7rs=ddas!yNA5%MN;fAeO3GpiZ3y(^OR`LtKE&RYG` z%T6M0Q((r64h>88-;=&fKXORn&)Y9<7j0ADM4op#Evb9DEVE3OxuAOMwTp8T79Bpj z^46Bw7ia(6t$e=h^6Gq+^)tU-Y>!_fu&_#YcJ0QCjvJ3m`|4emd(8LrvxuLIduy^w zKRn;Ob&-9_RrP6hYo5j|+EK9n+eN__H(s3nbj~C7+}RUuX{m{weGosZ*S#`Yezasg(E; z?-{fhY+_DS&eu;5`_fikR9#fupz-tEU2!F+6F=1F&8oh6DP7e>i}j<0lm5=$VtqvCS7PaJ&waLQ0xVeA<2r9FV_>h2sIGsVSbJsf1ID=TJ5=|I z&X8~@c`+{`NhyHi(Rj}}j=t-itc?USbMMp?m=EB?(?e-29Zxv`X9>CKeyCDB6UQN6rr@v)_sLiS3~Qp ztEzq2)O|!<>xiRNElR1gi&m6P`)xn$hne5Zy#N2rd-GvpEU{+CMPx+)0Kjn+5^l}o zg&!d#$jfNkdNdFGu4pqj;P63GZxgQ*_CY#Oc|`sUQ?}=CKZgE3#v~qpdI6&Bx^w_Q zunGk?wncWWW;l7-UI#@tQM0)~HL81;)HPu;pVQ0pgJQPrfpMpp=aU0}M<~a{2nw%n zU`-fLR8Od%K$J#9U{=UTI40i8@}fD@+Oa6N|E1RI6sbQ)pL!RfOePt0E*?-w>vc`F zFLoR~H8O{D0Fhbf&d=`-+1DWWi~EgA3{w%CBurf@x&z#)AS%CTjBJ;NXfEz(-q*!r&D zRZs9Vt%N#~h`fZ2dF&WAUxzdNEE zLcQ7z)<&U)d{TxG*7ZfZU%dui_e8AOG#Zu1*(e!@&OEmtgjVAmsh>Px!}hna+U*4u z-(P@*kBOd~_&ckM8!+$m47a*D-IZ(wJ}aDF{e;O>YW!u636JA2%GNI#9Kc(nk+Ttf zZ5oR_VO!WXDMZ#m`6;XjkCv`_D6eahzuUOoqFaafSiYTac<;TmC>LuaHD30rCoEXh zD5R1Oih#JsO2+Mq%9NFu7{5RCprvtcFS~~}?Jc*n#%9=R+B~=%4@*03!EPJP0MrnJ8N%7FfRW&1jKLlO`E6 z2Nzeo&ri0;XG#nsf-QzGDH@1K!SO+oQz;nwgfHIg%HhTbyKTOO$NB{~co(lFCB3>E zA&~-M`}RVuy48f;Y-C?8l|c;|{QHGA&~=s7pAt2h>u zaS=yuntEie>)yAC_-npL!3zTFzOgLKZ}$=3sW+~_Ul7!!J>-L1jXDCh?L;zNtpzrIp_ZRL}JEMXYA5@jiafE19#aIkmj zpOVnI=5TB*VZwzSHn(G2*x&nZOKW`I9?Av!cNOvbi#$Fwg7v#&)Ar=Xmc9st_ZL_3 z{@58B!k$KOp%D%6encJsnot-_4XUH2sc#F@HGpawXltoKc?EQiVmJC91DQf_cccHm zAysqDoo4|5*kD6(qXoG55dp>oiYrkGMRp+(t%)uKx-Xk($P)oj2rRtP1Q-4<4m6z) literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_go.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_go.png new file mode 100644 index 0000000000000000000000000000000000000000..1e2dcfa02057f16f9f89e31fada93991c4eb9ab6 GIT binary patch literal 1983 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 literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_search.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_search.png new file mode 100644 index 0000000000000000000000000000000000000000..998f91be9c4dff50a3ac354a3810a2afe39fe32b GIT binary patch literal 3784 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 Z$DPpsU&xgE;c;3340Mc9_1aGO{{Rgi%2xmY literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_search_api_holo_light.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_search_api_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..a4cdf1c7927896d70e6b9f6af2eaa64b1bb41707 GIT binary patch literal 3037 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 S!l#~*4goMWSah`&G3sAAl9aOm literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_default_holo_dark.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_default_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..8fdbbf3ad77a974f797c9b496f98d296495a45d7 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{e!3HEJoIX|yq+C5+978nDC;#~W-=0~Khvol7 z1H)I2CW)>m8aUV+M1MLNsm8aUV+8udAXlQhooEaFu)>JVsC;_i|1;&qn1z`CMwWxmD@8>XG@5j{z4 Z4Ch(42+t_Fa};PGgQu&X%Q~loCICWDCD8x? literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_right_default_holo_dark.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_right_default_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..98f4871bb52aa7c60414b62dc102a63025d14b86 GIT binary patch literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{e!3HEJoIX|yq+C2*978nDC;#~W-=0~Khvol7 z1H)I2CW)>m8aUVm(v1b%el;0fY!m7fYzsPhAkg_?o6!P}0Ord_0t$qVOiDg+P{Wat YL8LkPQkkjERiJqcp00i_>zopr0H|OnC;$Ke literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_right_default_holo_light.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_right_default_holo_light.9.png new file mode 100644 index 0000000000000000000000000000000000000000..733373ed38d92906a3f639124b60d39cfe3ea469 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{e!3HEJoIX|yq})7R978nDC;#~W-=0~Khvol7 z1H)I2CW)>m8aUVm(v20J8xM$gbsA4Oq2MIp#mnr@>uNTIF}6W!#;>-fvxg@opE#)D b$jGop@Lc3+&hjll6B#^R{an^LB{Ts5lN~2O literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_right_selected_holo_dark.9.png b/APG/android-libs/ActionBarSherlock/res/drawable-xhdpi/abs__textfield_search_right_selected_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..0c6bb036dbff7c452df0032fac9daaaf3ed36cff GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{e!3HEJoIX|yq})AS978nDC;#~W-=0~Khvol7 z1H)I2CW)>m8aUVm(v9t$CDZ2p!k(eA~|x?WSsfj bIFlKwHfSC=yJ^W9ppguou6{1-oD!Mm8aUVm(v9t$CDZ2p!k(eA~|x?WSsfj bIFlKwHfSC=yJ^W9ppguou6{1-oD!Mm8aUV)4xTaopEyItdE!^$Tn)$h3#7aBEDrH5l{lPKbU~WStl#0CqS)dY aj0`i|)DAxoJGT#LAcLo?pUXO@geCyp{V3}I literal 0 HcmV?d00001 diff --git a/APG/android-libs/ActionBarSherlock/res/drawable/abs__ic_clear.xml b/APG/android-libs/ActionBarSherlock/res/drawable/abs__ic_clear.xml new file mode 100644 index 000000000..a16f4b22e --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/res/drawable/abs__ic_clear.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/APG/android-libs/ActionBarSherlock/res/drawable/abs__ic_clear_holo_light.xml b/APG/android-libs/ActionBarSherlock/res/drawable/abs__ic_clear_holo_light.xml new file mode 100644 index 000000000..256de80fb --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/res/drawable/abs__ic_clear_holo_light.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/APG/android-libs/ActionBarSherlock/res/drawable/abs__search_dropdown_dark.xml b/APG/android-libs/ActionBarSherlock/res/drawable/abs__search_dropdown_dark.xml new file mode 100644 index 000000000..26284187a --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/res/drawable/abs__search_dropdown_dark.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/APG/android-libs/ActionBarSherlock/res/drawable/abs__search_dropdown_light.xml b/APG/android-libs/ActionBarSherlock/res/drawable/abs__search_dropdown_light.xml new file mode 100644 index 000000000..0d00c5878 --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/res/drawable/abs__search_dropdown_light.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_holo_dark.xml b/APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_holo_dark.xml new file mode 100644 index 000000000..b6d58c040 --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_holo_dark.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_holo_light.xml b/APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_holo_light.xml new file mode 100644 index 000000000..3d6acf808 --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_holo_light.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_right_holo_dark.xml b/APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_right_holo_dark.xml new file mode 100644 index 000000000..05ff4eda5 --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_right_holo_dark.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_right_holo_light.xml b/APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_right_holo_light.xml new file mode 100644 index 000000000..f6d61e57a --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/res/drawable/abs__textfield_searchview_right_holo_light.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/APG/android-libs/ActionBarSherlock/res/layout/abs__activity_chooser_view.xml b/APG/android-libs/ActionBarSherlock/res/layout/abs__activity_chooser_view.xml index 019d14ef4..6a0ac9ece 100644 --- a/APG/android-libs/ActionBarSherlock/res/layout/abs__activity_chooser_view.xml +++ b/APG/android-libs/ActionBarSherlock/res/layout/abs__activity_chooser_view.xml @@ -19,7 +19,7 @@ diff --git a/APG/android-libs/ActionBarSherlock/res/layout/abs__dialog_title_holo.xml b/APG/android-libs/ActionBarSherlock/res/layout/abs__dialog_title_holo.xml index 6402f28be..ab2b0ee6c 100644 --- a/APG/android-libs/ActionBarSherlock/res/layout/abs__dialog_title_holo.xml +++ b/APG/android-libs/ActionBarSherlock/res/layout/abs__dialog_title_holo.xml @@ -35,7 +35,7 @@ enabled. android:layout_height="2dip" android:background="@color/abs__holo_blue_light" /> diff --git a/APG/android-libs/ActionBarSherlock/res/layout/abs__search_dropdown_item_icons_2line.xml b/APG/android-libs/ActionBarSherlock/res/layout/abs__search_dropdown_item_icons_2line.xml new file mode 100644 index 000000000..e1d3dc49c --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/res/layout/abs__search_dropdown_item_icons_2line.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/APG/android-libs/ActionBarSherlock/res/layout/abs__search_view.xml b/APG/android-libs/ActionBarSherlock/res/layout/abs__search_view.xml new file mode 100644 index 000000000..6ba319121 --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/res/layout/abs__search_view.xml @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/APG/android-libs/ActionBarSherlock/res/layout/abs__simple_dropdown_hint.xml b/APG/android-libs/ActionBarSherlock/res/layout/abs__simple_dropdown_hint.xml new file mode 100644 index 000000000..8fc0eb12c --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/res/layout/abs__simple_dropdown_hint.xml @@ -0,0 +1,29 @@ + + + diff --git a/APG/android-libs/ActionBarSherlock/res/values-v14/abs__styles.xml b/APG/android-libs/ActionBarSherlock/res/values-v14/abs__styles.xml index f2aa64d2d..88a60dd92 100644 --- a/APG/android-libs/ActionBarSherlock/res/values-v14/abs__styles.xml +++ b/APG/android-libs/ActionBarSherlock/res/values-v14/abs__styles.xml @@ -85,6 +85,11 @@ + + + diff --git a/APG/android-libs/ActionBarSherlock/res/values-v14/abs__themes.xml b/APG/android-libs/ActionBarSherlock/res/values-v14/abs__themes.xml index ceb960737..5fac1ab58 100644 --- a/APG/android-libs/ActionBarSherlock/res/values-v14/abs__themes.xml +++ b/APG/android-libs/ActionBarSherlock/res/values-v14/abs__themes.xml @@ -10,10 +10,12 @@ ?android:attr/actionBarSize 48dp - + @style/Theme.Sherlock ?android:attr/dropDownListViewStyle + + ?android:attr/selectableItemBackground @@ -279,6 +280,28 @@ + + + + + + + + diff --git a/APG/android-libs/ActionBarSherlock/res/values/abs__themes.xml b/APG/android-libs/ActionBarSherlock/res/values/abs__themes.xml index 5300dedd6..634fa798b 100644 --- a/APG/android-libs/ActionBarSherlock/res/values/abs__themes.xml +++ b/APG/android-libs/ActionBarSherlock/res/values/abs__themes.xml @@ -11,7 +11,7 @@ - + - - + + - - - - - - - + + @@ -205,21 +218,21 @@ @null @android:style/Animation.Dialog stateUnspecified|adjustPan - + false true true true 0.6 - + @null - + @color/abs__primary_text_holo_light @color/abs__primary_text_holo_dark - + @dimen/abs__dialog_min_width_major @dimen/abs__dialog_min_width_minor - + false @null diff --git a/APG/android-libs/ActionBarSherlock/src/android/support/v4/app/Watson.java b/APG/android-libs/ActionBarSherlock/src/android/support/v4/app/Watson.java new file mode 100644 index 000000000..d93de4c6a --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/src/android/support/v4/app/Watson.java @@ -0,0 +1,144 @@ +package android.support.v4.app; + +import android.util.Log; +import android.view.View; +import android.view.Window; +import com.actionbarsherlock.ActionBarSherlock.OnCreatePanelMenuListener; +import com.actionbarsherlock.ActionBarSherlock.OnMenuItemSelectedListener; +import com.actionbarsherlock.ActionBarSherlock.OnPreparePanelListener; +import com.actionbarsherlock.view.Menu; +import com.actionbarsherlock.view.MenuInflater; +import com.actionbarsherlock.view.MenuItem; + +import java.util.ArrayList; + +/** I'm in ur package. Stealing ur variables. */ +public abstract class Watson extends FragmentActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener { + private static final boolean DEBUG = false; + private static final String TAG = "Watson"; + + /** Fragment interface for menu creation callback. */ + public interface OnCreateOptionsMenuListener { + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater); + } + /** Fragment interface for menu preparation callback. */ + public interface OnPrepareOptionsMenuListener { + public void onPrepareOptionsMenu(Menu menu); + } + /** Fragment interface for menu item selection callback. */ + public interface OnOptionsItemSelectedListener { + public boolean onOptionsItemSelected(MenuItem item); + } + + private ArrayList mCreatedMenus; + + + /////////////////////////////////////////////////////////////////////////// + // Sherlock menu handling + /////////////////////////////////////////////////////////////////////////// + + @Override + public boolean onCreatePanelMenu(int featureId, Menu menu) { + if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu); + + if (featureId == Window.FEATURE_OPTIONS_PANEL) { + boolean result = onCreateOptionsMenu(menu); + if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] activity create result: " + result); + + MenuInflater inflater = getSupportMenuInflater(); + boolean show = false; + ArrayList newMenus = null; + if (mFragments.mAdded != null) { + for (int i = 0; i < mFragments.mAdded.size(); i++) { + Fragment f = mFragments.mAdded.get(i); + if (f != null && !f.mHidden && f.mHasMenu && f.mMenuVisible && f instanceof OnCreateOptionsMenuListener) { + show = true; + ((OnCreateOptionsMenuListener)f).onCreateOptionsMenu(menu, inflater); + if (newMenus == null) { + newMenus = new ArrayList(); + } + newMenus.add(f); + } + } + } + + if (mCreatedMenus != null) { + for (int i = 0; i < mCreatedMenus.size(); i++) { + Fragment f = mCreatedMenus.get(i); + if (newMenus == null || !newMenus.contains(f)) { + f.onDestroyOptionsMenu(); + } + } + } + + mCreatedMenus = newMenus; + + if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] fragments create result: " + show); + result |= show; + + if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result); + return result; + } + return false; + } + + @Override + public boolean onPreparePanel(int featureId, View view, Menu menu) { + if (DEBUG) Log.d(TAG, "[onPreparePanel] featureId: " + featureId + ", view: " + view + " menu: " + menu); + + if (featureId == Window.FEATURE_OPTIONS_PANEL) { + boolean result = onPrepareOptionsMenu(menu); + if (DEBUG) Log.d(TAG, "[onPreparePanel] activity prepare result: " + result); + + boolean show = false; + if (mFragments.mAdded != null) { + for (int i = 0; i < mFragments.mAdded.size(); i++) { + Fragment f = mFragments.mAdded.get(i); + if (f != null && !f.mHidden && f.mHasMenu && f.mMenuVisible && f instanceof OnPrepareOptionsMenuListener) { + show = true; + ((OnPrepareOptionsMenuListener)f).onPrepareOptionsMenu(menu); + } + } + } + + if (DEBUG) Log.d(TAG, "[onPreparePanel] fragments prepare result: " + show); + result |= show; + + result &= menu.hasVisibleItems(); + if (DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result); + return result; + } + return false; + } + + @Override + public boolean onMenuItemSelected(int featureId, MenuItem item) { + if (DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item); + + if (featureId == Window.FEATURE_OPTIONS_PANEL) { + if (onOptionsItemSelected(item)) { + return true; + } + + if (mFragments.mAdded != null) { + for (int i = 0; i < mFragments.mAdded.size(); i++) { + Fragment f = mFragments.mAdded.get(i); + if (f != null && !f.mHidden && f.mHasMenu && f.mMenuVisible && f instanceof OnOptionsItemSelectedListener) { + if (((OnOptionsItemSelectedListener)f).onOptionsItemSelected(item)) { + return true; + } + } + } + } + } + return false; + } + + public abstract boolean onCreateOptionsMenu(Menu menu); + + public abstract boolean onPrepareOptionsMenu(Menu menu); + + public abstract boolean onOptionsItemSelected(MenuItem item); + + public abstract MenuInflater getSupportMenuInflater(); +} diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/ActionBarSherlock.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/ActionBarSherlock.java index 8340fb591..ab160f836 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/ActionBarSherlock.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/ActionBarSherlock.java @@ -537,6 +537,9 @@ public abstract class ActionBarSherlock { */ public void dispatchDestroy() {} + public void dispatchSaveInstanceState(Bundle outState) {} + + public void dispatchRestoreInstanceState(Bundle savedInstanceState) {} /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// @@ -769,7 +772,7 @@ public abstract class ActionBarSherlock { // Make sure that action views can get an appropriate theme. if (mMenuInflater == null) { if (getActionBar() != null) { - mMenuInflater = new MenuInflater(getThemedContext()); + mMenuInflater = new MenuInflater(getThemedContext(), mActivity); } else { mMenuInflater = new MenuInflater(mActivity); } diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/ActionBar.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/ActionBar.java index 2497d24ff..03755be2b 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/ActionBar.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/ActionBar.java @@ -17,6 +17,7 @@ package com.actionbarsherlock.app; import android.content.Context; +import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.support.v4.app.FragmentTransaction; import android.util.AttributeSet; @@ -895,6 +896,10 @@ public abstract class ActionBar { * @attr ref android.R.styleable#ActionBar_LayoutParams_layout_gravity */ public static class LayoutParams extends MarginLayoutParams { + private static final int[] ATTRS = new int[] { + android.R.attr.layout_gravity + }; + /** * Gravity for the view associated with these LayoutParams. * @@ -918,6 +923,10 @@ public abstract class ActionBar { public LayoutParams(Context c, AttributeSet attrs) { super(c, attrs); + + TypedArray a = c.obtainStyledAttributes(attrs, ATTRS); + gravity = a.getInt(0, -1); + a.recycle(); } public LayoutParams(int width, int height) { diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockActivity.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockActivity.java index 9cb57e95a..7b4543640 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockActivity.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockActivity.java @@ -116,6 +116,17 @@ public abstract class SherlockActivity extends Activity implements OnCreatePanel return super.dispatchKeyEvent(event); } + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + getSherlock().dispatchSaveInstanceState(outState); + } + + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + getSherlock().dispatchRestoreInstanceState(savedInstanceState); + } /////////////////////////////////////////////////////////////////////////// // Native menu handling diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragmentActivity.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragmentActivity.java index 5cd13ba7c..3d092f033 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragmentActivity.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragmentActivity.java @@ -2,7 +2,7 @@ package com.actionbarsherlock.app; import android.content.res.Configuration; import android.os.Bundle; -import android.support.v4.app._ActionBarSherlockTrojanHorse; +import android.support.v4.app.Watson; import android.util.Log; import android.view.KeyEvent; import android.view.View; @@ -17,8 +17,8 @@ import com.actionbarsherlock.view.MenuItem; import static com.actionbarsherlock.ActionBarSherlock.OnActionModeFinishedListener; import static com.actionbarsherlock.ActionBarSherlock.OnActionModeStartedListener; -/** @see {@link _ActionBarSherlockTrojanHorse} */ -public class SherlockFragmentActivity extends _ActionBarSherlockTrojanHorse implements OnActionModeStartedListener, OnActionModeFinishedListener { +/** @see {@link android.support.v4.app.Watson} */ +public class SherlockFragmentActivity extends Watson implements OnActionModeStartedListener, OnActionModeFinishedListener { private static final boolean DEBUG = false; private static final String TAG = "SherlockFragmentActivity"; @@ -122,6 +122,17 @@ public class SherlockFragmentActivity extends _ActionBarSherlockTrojanHorse impl return super.dispatchKeyEvent(event); } + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + getSherlock().dispatchSaveInstanceState(outState); + } + + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + getSherlock().dispatchRestoreInstanceState(savedInstanceState); + } /////////////////////////////////////////////////////////////////////////// // Native menu handling diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListActivity.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListActivity.java index 00c00fee5..aba6d85e8 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListActivity.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListActivity.java @@ -116,6 +116,17 @@ public abstract class SherlockListActivity extends ListActivity implements OnCre return super.dispatchKeyEvent(event); } + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + getSherlock().dispatchSaveInstanceState(outState); + } + + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + getSherlock().dispatchRestoreInstanceState(savedInstanceState); + } /////////////////////////////////////////////////////////////////////////// // Native menu handling diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockPreferenceActivity.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockPreferenceActivity.java index 4f80be515..bee72cb25 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockPreferenceActivity.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockPreferenceActivity.java @@ -116,6 +116,17 @@ public abstract class SherlockPreferenceActivity extends PreferenceActivity impl return super.dispatchKeyEvent(event); } + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + getSherlock().dispatchSaveInstanceState(outState); + } + + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + getSherlock().dispatchRestoreInstanceState(savedInstanceState); + } /////////////////////////////////////////////////////////////////////////// // Native menu handling diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java index 05353d28c..5e69275c7 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java @@ -52,6 +52,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu /** Window features which are enabled by default. */ protected static final int DEFAULT_FEATURES = 0; + static private final String PANELS_TAG = "sherlock:Panels"; public ActionBarSherlockCompat(Activity activity, int flags) { super(activity, flags); @@ -71,8 +72,6 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu private MenuBuilder mMenu; /** Map between native options items and sherlock items. */ protected HashMap mNativeItemMap; - /** Indication of a long-press on the hardware menu key. */ - private boolean mMenuKeyIsLongPress = false; /** Parent view of the window decoration (action bar, mode, etc.). */ private ViewGroup mDecor; @@ -293,7 +292,10 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu return false; } - return wActionBar.hideOverflowMenu(); + if (wActionBar != null) { + return wActionBar.hideOverflowMenu(); + } + return false; } @Override @@ -424,27 +426,8 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu } } - boolean result = false; - if (keyCode == KeyEvent.KEYCODE_MENU && isReservingOverflow()) { - if (event.getAction() == KeyEvent.ACTION_DOWN && event.isLongPress()) { - mMenuKeyIsLongPress = true; - } else if (event.getAction() == KeyEvent.ACTION_UP) { - if (!mMenuKeyIsLongPress) { - if (mActionMode == null && wActionBar != null) { - if (wActionBar.isOverflowMenuShowing()) { - wActionBar.hideOverflowMenu(); - } else { - wActionBar.showOverflowMenu(); - } - } - result = true; - } - mMenuKeyIsLongPress = false; - } - } - - if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning " + result); - return result; + if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning false"); + return false; } @Override @@ -452,6 +435,19 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu mIsDestroyed = true; } + @Override + public void dispatchSaveInstanceState(Bundle outState) { + if (mMenu != null) { + mMenuFrozenActionViewState = new Bundle(); + mMenu.saveActionViewStates(mMenuFrozenActionViewState); + } + outState.putParcelable(PANELS_TAG, mMenuFrozenActionViewState); + } + + @Override + public void dispatchRestoreInstanceState(Bundle savedInstanceState) { + mMenuFrozenActionViewState = savedInstanceState.getParcelable(PANELS_TAG); + } /////////////////////////////////////////////////////////////////////////// // Menu callback lifecycle and creation diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockNative.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockNative.java index 9afca185a..0824d3848 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockNative.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockNative.java @@ -208,7 +208,12 @@ public class ActionBarSherlockNative extends ActionBarSherlock { //is where we will set the new instance to mActionMode since we need //to pass it through to the sherlock callbacks and the call below //will not have returned yet to store its value. - mActivity.startActionMode(wrapped); + if (mActivity.startActionMode(wrapped) == null) { + mActionMode = null; + } + if (mActivity instanceof OnActionModeStartedListener && mActionMode != null) { + ((OnActionModeStartedListener)mActivity).onActionModeStarted(mActionMode); + } return mActionMode; } @@ -241,6 +246,9 @@ public class ActionBarSherlockNative extends ActionBarSherlock { @Override public void onDestroyActionMode(android.view.ActionMode mode) { mCallback.onDestroyActionMode(mActionMode); + if (mActivity instanceof OnActionModeFinishedListener) { + ((OnActionModeFinishedListener)mActivity).onActionModeFinished(mActionMode); + } } } diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarImpl.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarImpl.java index 6ae0402c0..d022a2465 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarImpl.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarImpl.java @@ -26,6 +26,7 @@ import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Handler; +import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.util.TypedValue; import android.view.ContextThemeWrapper; @@ -36,7 +37,6 @@ import android.view.accessibility.AccessibilityEvent; import android.widget.SpinnerAdapter; import com.actionbarsherlock.R; import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.app.SherlockFragmentActivity; import com.actionbarsherlock.internal.nineoldandroids.animation.Animator; import com.actionbarsherlock.internal.nineoldandroids.animation.AnimatorListenerAdapter; import com.actionbarsherlock.internal.nineoldandroids.animation.AnimatorSet; @@ -506,8 +506,8 @@ public class ActionBarImpl extends ActionBar { } FragmentTransaction trans = null; - if (mActivity instanceof SherlockFragmentActivity) { - trans = ((SherlockFragmentActivity)mActivity).getSupportFragmentManager().beginTransaction() + if (mActivity instanceof FragmentActivity) { + trans = ((FragmentActivity)mActivity).getSupportFragmentManager().beginTransaction() .disallowAddToBackStack(); } diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarWrapper.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarWrapper.java index e390ea428..840cb3d27 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarWrapper.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarWrapper.java @@ -6,12 +6,12 @@ import java.util.Set; import android.app.Activity; import android.content.Context; import android.graphics.drawable.Drawable; +import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.view.View; import android.widget.SpinnerAdapter; import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.app.SherlockFragmentActivity; public class ActionBarWrapper extends ActionBar implements android.app.ActionBar.OnNavigationListener, android.app.ActionBar.OnMenuVisibilityListener { private final Activity mActivity; @@ -319,8 +319,8 @@ public class ActionBarWrapper extends ActionBar implements android.app.ActionBar public void onTabReselected(android.app.ActionBar.Tab tab, android.app.FragmentTransaction ft) { if (mListener != null) { FragmentTransaction trans = null; - if (mActivity instanceof SherlockFragmentActivity) { - trans = ((SherlockFragmentActivity)mActivity).getSupportFragmentManager().beginTransaction() + if (mActivity instanceof FragmentActivity) { + trans = ((FragmentActivity)mActivity).getSupportFragmentManager().beginTransaction() .disallowAddToBackStack(); } @@ -336,8 +336,8 @@ public class ActionBarWrapper extends ActionBar implements android.app.ActionBar public void onTabSelected(android.app.ActionBar.Tab tab, android.app.FragmentTransaction ft) { if (mListener != null) { - if (mFragmentTransaction == null && mActivity instanceof SherlockFragmentActivity) { - mFragmentTransaction = ((SherlockFragmentActivity)mActivity).getSupportFragmentManager().beginTransaction() + if (mFragmentTransaction == null && mActivity instanceof FragmentActivity) { + mFragmentTransaction = ((FragmentActivity)mActivity).getSupportFragmentManager().beginTransaction() .disallowAddToBackStack(); } @@ -356,8 +356,8 @@ public class ActionBarWrapper extends ActionBar implements android.app.ActionBar public void onTabUnselected(android.app.ActionBar.Tab tab, android.app.FragmentTransaction ft) { if (mListener != null) { FragmentTransaction trans = null; - if (mActivity instanceof SherlockFragmentActivity) { - trans = ((SherlockFragmentActivity)mActivity).getSupportFragmentManager().beginTransaction() + if (mActivity instanceof FragmentActivity) { + trans = ((FragmentActivity)mActivity).getSupportFragmentManager().beginTransaction() .disallowAddToBackStack(); mFragmentTransaction = trans; } diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout.java index 2c428e907..953e3e844 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout.java @@ -9,18 +9,10 @@ import com.actionbarsherlock.internal.nineoldandroids.view.animation.AnimatorPro public class NineFrameLayout extends FrameLayout { private final AnimatorProxy mProxy; - public NineFrameLayout(Context context) { - super(context); - mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null; - } public NineFrameLayout(Context context, AttributeSet attrs) { super(context, attrs); mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null; } - public NineFrameLayout(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null; - } @Override public void setVisibility(int visibility) { diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineLinearLayout.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineLinearLayout.java index a670b1f64..1f381013a 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineLinearLayout.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineLinearLayout.java @@ -9,18 +9,10 @@ import com.actionbarsherlock.internal.nineoldandroids.view.animation.AnimatorPro public class NineLinearLayout extends LinearLayout { private final AnimatorProxy mProxy; - public NineLinearLayout(Context context) { - super(context); - mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null; - } public NineLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null; } - public NineLinearLayout(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null; - } @Override public void setVisibility(int visibility) { diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuPresenter.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuPresenter.java index 6f568c698..876a22c58 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuPresenter.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuPresenter.java @@ -23,7 +23,6 @@ import java.util.Set; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; -import android.content.res.TypedArray; import android.os.Build; import android.os.Parcel; import android.os.Parcelable; @@ -119,14 +118,6 @@ public class ActionMenuPresenter extends BaseMenuPresenter } public static boolean reserveOverflow(Context context) { - //Check for theme-forced overflow action item - TypedArray a = context.getTheme().obtainStyledAttributes(R.styleable.SherlockTheme); - boolean result = a.getBoolean(R.styleable.SherlockTheme_absForceOverflow, false); - a.recycle(); - if (result) { - return true; - } - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB); } else { @@ -621,6 +612,8 @@ public class ActionMenuPresenter extends BaseMenuPresenter for (View_OnAttachStateChangeListener listener : mListeners) { listener.onViewDetachedFromWindow(this); } + + if (mOverflowPopup != null) mOverflowPopup.dismiss(); } @Override diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuView.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuView.java index e090677a1..0e3b1ae0d 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuView.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuView.java @@ -520,6 +520,9 @@ public class ActionMenuView extends IcsLinearLayout implements MenuBuilder.ItemI //@Override protected boolean hasDividerBeforeChildAt(int childIndex) { + if (childIndex == 0) { + return false; + } final View childBefore = getChildAt(childIndex - 1); final View child = getChildAt(childIndex); boolean result = false; diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuItemWrapper.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuItemWrapper.java index 907a7aa04..aaf2997b7 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuItemWrapper.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuItemWrapper.java @@ -2,10 +2,12 @@ package com.actionbarsherlock.internal.view.menu; import android.content.Intent; import android.graphics.drawable.Drawable; -import android.view.View; import android.view.ContextMenu.ContextMenuInfo; +import android.view.View; import com.actionbarsherlock.internal.view.ActionProviderWrapper; +import com.actionbarsherlock.internal.widget.CollapsibleActionViewWrapper; import com.actionbarsherlock.view.ActionProvider; +import com.actionbarsherlock.view.CollapsibleActionView; import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.SubMenu; @@ -215,19 +217,35 @@ public class MenuItemWrapper implements MenuItem, android.view.MenuItem.OnMenuIt @Override public MenuItem setActionView(View view) { + if (view != null && view instanceof CollapsibleActionView) { + view = new CollapsibleActionViewWrapper(view); + } mNativeItem.setActionView(view); return this; } @Override public MenuItem setActionView(int resId) { + //Allow the native menu to inflate the resource mNativeItem.setActionView(resId); + if (resId != 0) { + //Get newly created view + View view = mNativeItem.getActionView(); + if (view instanceof CollapsibleActionView) { + //Wrap it and re-set it + mNativeItem.setActionView(new CollapsibleActionViewWrapper(view)); + } + } return this; } @Override public View getActionView() { - return mNativeItem.getActionView(); + View actionView = mNativeItem.getActionView(); + if (actionView instanceof CollapsibleActionViewWrapper) { + return ((CollapsibleActionViewWrapper)actionView).unwrap(); + } + return actionView; } @Override diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuWrapper.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuWrapper.java index 64fc4aeaa..3d4dd42fd 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuWrapper.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuWrapper.java @@ -79,10 +79,15 @@ public class MenuWrapper implements Menu { @Override public int addIntentOptions(int groupId, int itemId, int order, ComponentName caller, Intent[] specifics, Intent intent, int flags, MenuItem[] outSpecificItems) { - android.view.MenuItem[] nativeOutItems = new android.view.MenuItem[outSpecificItems.length]; - int result = mNativeMenu.addIntentOptions(groupId, itemId, order, caller, specifics, intent, flags, nativeOutItems); - for (int i = 0, length = outSpecificItems.length; i < length; i++) { - outSpecificItems[i] = new MenuItemWrapper(nativeOutItems[i]); + int result; + if (outSpecificItems != null) { + android.view.MenuItem[] nativeOutItems = new android.view.MenuItem[outSpecificItems.length]; + result = mNativeMenu.addIntentOptions(groupId, itemId, order, caller, specifics, intent, flags, nativeOutItems); + for (int i = 0, length = outSpecificItems.length; i < length; i++) { + outSpecificItems[i] = new MenuItemWrapper(nativeOutItems[i]); + } + } else { + result = mNativeMenu.addIntentOptions(groupId, itemId, order, caller, specifics, intent, flags, null); } return result; } diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java index 5e5aa2867..1d9c68b37 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java @@ -18,8 +18,11 @@ package com.actionbarsherlock.internal.widget; import android.content.Context; import android.content.res.TypedArray; +import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; +import android.os.Build; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; @@ -60,6 +63,16 @@ public class ActionBarContainer extends NineFrameLayout { mStackedBackground = a.getDrawable( R.styleable.SherlockActionBar_backgroundStacked); + //Fix for issue #379 + if (mStackedBackground instanceof ColorDrawable && Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { + Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); + 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) { mIsSplit = true; mSplitBackground = a.getDrawable( diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingTextView.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingTextView.java index 673ec554f..cae8b8aed 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingTextView.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingTextView.java @@ -1,12 +1,13 @@ package com.actionbarsherlock.internal.widget; -import java.util.Locale; import android.content.Context; import android.content.res.TypedArray; import android.os.Build; import android.util.AttributeSet; import android.widget.TextView; +import java.util.Locale; + public class CapitalizingTextView extends TextView { private static final boolean SANS_ICE_CREAM = Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH; private static final boolean IS_GINGERBREAD = Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD; @@ -33,7 +34,12 @@ public class CapitalizingTextView extends TextView { public void setTextCompat(CharSequence text) { if (SANS_ICE_CREAM && mAllCaps && text != null) { if (IS_GINGERBREAD) { - setText(text.toString().toUpperCase(Locale.ROOT)); + try { + setText(text.toString().toUpperCase(Locale.ROOT)); + } catch (NoSuchFieldError e) { + //Some manufacturer broke Locale.ROOT. See #572. + setText(text.toString().toUpperCase()); + } } else { setText(text.toString().toUpperCase()); } diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CollapsibleActionViewWrapper.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CollapsibleActionViewWrapper.java new file mode 100644 index 000000000..14f092c81 --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CollapsibleActionViewWrapper.java @@ -0,0 +1,30 @@ +package com.actionbarsherlock.internal.widget; + +import android.view.View; +import android.widget.FrameLayout; +import com.actionbarsherlock.view.CollapsibleActionView; + +/** + * Wraps an ABS collapsible action view in a native container that delegates the calls. + */ +public class CollapsibleActionViewWrapper extends FrameLayout implements android.view.CollapsibleActionView { + private final CollapsibleActionView child; + + public CollapsibleActionViewWrapper(View child) { + super(child.getContext()); + this.child = (CollapsibleActionView) child; + addView(child); + } + + @Override public void onActionViewExpanded() { + child.onActionViewExpanded(); + } + + @Override public void onActionViewCollapsed() { + child.onActionViewCollapsed(); + } + + public View unwrap() { + return getChildAt(0); + } +} diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsColorDrawable.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsColorDrawable.java new file mode 100644 index 000000000..a78b3f71b --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsColorDrawable.java @@ -0,0 +1,41 @@ +package com.actionbarsherlock.internal.widget; + +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.Paint; +import android.graphics.drawable.Drawable; + +/** + * A version of {@link android.graphics.drawable.ColorDrawable} that respects bounds. + */ +public class IcsColorDrawable extends Drawable { + private int color; + private final Paint paint = new Paint(); + + public IcsColorDrawable(int color) { + this.color = color; + } + + @Override public void draw(Canvas canvas) { + if ((color >>> 24) != 0) { + paint.setColor(color); + canvas.drawRect(getBounds(), paint); + } + } + + @Override + public void setAlpha(int alpha) { + if (alpha != (color >>> 24)) { + color = (color & 0x00FFFFFF) & (alpha << 24); + invalidateSelf(); + } + } + + @Override public void setColorFilter(ColorFilter colorFilter) { + //Ignored + } + + @Override public int getOpacity() { + return color >>> 24; + } +} diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsLinearLayout.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsLinearLayout.java index 1b4463a59..4947c41df 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsLinearLayout.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsLinearLayout.java @@ -6,6 +6,8 @@ import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.View; +import android.widget.LinearLayout; + import com.actionbarsherlock.internal.nineoldandroids.widget.NineLinearLayout; /** @@ -16,14 +18,16 @@ import com.actionbarsherlock.internal.nineoldandroids.widget.NineLinearLayout; * {@link android.widget.FrameLayout} so it can receive the margin. */ public class IcsLinearLayout extends NineLinearLayout { - private static final int[] LinearLayout = new int[] { + private static final int[] R_styleable_LinearLayout = new int[] { /* 0 */ android.R.attr.divider, - /* 1 */ android.R.attr.showDividers, - /* 2 */ android.R.attr.dividerPadding, + /* 1 */ android.R.attr.measureWithLargestChild, + /* 2 */ android.R.attr.showDividers, + /* 3 */ android.R.attr.dividerPadding, }; private static final int LinearLayout_divider = 0; - private static final int LinearLayout_showDividers = 1; - private static final int LinearLayout_dividerPadding = 2; + private static final int LinearLayout_measureWithLargestChild = 1; + private static final int LinearLayout_showDividers = 2; + private static final int LinearLayout_dividerPadding = 3; /** * Don't show any dividers. @@ -49,15 +53,17 @@ public class IcsLinearLayout extends NineLinearLayout { private int mShowDividers; private int mDividerPadding; + private boolean mUseLargestChild; public IcsLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); - TypedArray a = context.obtainStyledAttributes(attrs, /*com.android.internal.R.styleable.*/LinearLayout); + TypedArray a = context.obtainStyledAttributes(attrs, /*com.android.internal.R.styleable.*/R_styleable_LinearLayout); setDividerDrawable(a.getDrawable(/*com.android.internal.R.styleable.*/LinearLayout_divider)); mShowDividers = a.getInt(/*com.android.internal.R.styleable.*/LinearLayout_showDividers, SHOW_DIVIDER_NONE); mDividerPadding = a.getDimensionPixelSize(/*com.android.internal.R.styleable.*/LinearLayout_dividerPadding, 0); + mUseLargestChild = a.getBoolean(/*com.android.internal.R.styleable.*/LinearLayout_measureWithLargestChild, false); a.recycle(); } @@ -199,7 +205,7 @@ public class IcsLinearLayout extends NineLinearLayout { if (child == null) { bottom = getHeight() - getPaddingBottom() - mDividerHeight; } else { - final LayoutParams lp = (LayoutParams) child.getLayoutParams(); + //final LayoutParams lp = (LayoutParams) child.getLayoutParams(); bottom = child.getBottom()/* + lp.bottomMargin*/; } drawHorizontalDivider(canvas, bottom); @@ -226,7 +232,7 @@ public class IcsLinearLayout extends NineLinearLayout { if (child == null) { right = getWidth() - getPaddingRight() - mDividerWidth; } else { - final LayoutParams lp = (LayoutParams) child.getLayoutParams(); + //final LayoutParams lp = (LayoutParams) child.getLayoutParams(); right = child.getRight()/* + lp.rightMargin*/; } drawVerticalDivider(canvas, right); @@ -269,4 +275,136 @@ public class IcsLinearLayout extends NineLinearLayout { } 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); + } } diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.java index 1a532e06c..48fb5d8b4 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.java @@ -188,6 +188,7 @@ public class ScrollingTabContainerView extends NineHorizontalScrollView private IcsLinearLayout createTabLayout() { final IcsLinearLayout tabLayout = (IcsLinearLayout) LayoutInflater.from(getContext()) .inflate(R.layout.abs__action_bar_tab_bar_view, null); + tabLayout.setMeasureWithLargestChildEnabled(true); tabLayout.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT)); return tabLayout; diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/view/MenuInflater.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/view/MenuInflater.java index 969459749..5a0f40859 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/view/MenuInflater.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/view/MenuInflater.java @@ -67,6 +67,7 @@ public class MenuInflater { private final Object[] mActionProviderConstructorArguments; private Context mContext; + private Object mRealOwner; /** * Constructs a menu inflater. @@ -75,6 +76,20 @@ public class MenuInflater { */ public MenuInflater(Context context) { mContext = context; + mRealOwner = context; + mActionViewConstructorArguments = new Object[] {context}; + mActionProviderConstructorArguments = mActionViewConstructorArguments; + } + + /** + * Constructs a menu inflater. + * + * @see Activity#getMenuInflater() + * @hide + */ + public MenuInflater(Context context, Object realOwner) { + mContext = context; + mRealOwner = realOwner; mActionViewConstructorArguments = new Object[] {context}; mActionProviderConstructorArguments = mActionViewConstructorArguments; } @@ -192,12 +207,12 @@ public class MenuInflater { implements MenuItem.OnMenuItemClickListener { private static final Class[] PARAM_TYPES = new Class[] { MenuItem.class }; - private Context mContext; + private Object mRealOwner; private Method mMethod; - public InflatedOnMenuItemClickListener(Context context, String methodName) { - mContext = context; - Class c = context.getClass(); + public InflatedOnMenuItemClickListener(Object realOwner, String methodName) { + mRealOwner = realOwner; + Class c = realOwner.getClass(); try { mMethod = c.getMethod(methodName, PARAM_TYPES); } catch (Exception e) { @@ -212,9 +227,9 @@ public class MenuInflater { public boolean onMenuItemClick(MenuItem item) { try { if (mMethod.getReturnType() == Boolean.TYPE) { - return (Boolean) mMethod.invoke(mContext, item); + return (Boolean) mMethod.invoke(mRealOwner, item); } else { - mMethod.invoke(mContext, item); + mMethod.invoke(mRealOwner, item); return true; } } catch (Exception e) { @@ -358,8 +373,16 @@ public class MenuInflater { itemListenerMethodName = a.getString(R.styleable.SherlockMenuItem_android_onClick); itemActionViewLayout = a.getResourceId(R.styleable.SherlockMenuItem_android_actionLayout, 0); - itemActionViewClassName = a.getString(R.styleable.SherlockMenuItem_android_actionViewClass); - itemActionProviderClassName = a.getString(R.styleable.SherlockMenuItem_android_actionProviderClass); + + // itemActionViewClassName = a.getString(R.styleable.SherlockMenuItem_android_actionViewClass); + value = new TypedValue(); + a.getValue(R.styleable.SherlockMenuItem_android_actionViewClass, value); + itemActionViewClassName = value.type == TypedValue.TYPE_STRING ? value.string.toString() : null; + + // itemActionProviderClassName = a.getString(R.styleable.SherlockMenuItem_android_actionProviderClass); + value = new TypedValue(); + a.getValue(R.styleable.SherlockMenuItem_android_actionProviderClass, value); + itemActionProviderClassName = value.type == TypedValue.TYPE_STRING ? value.string.toString() : null; final boolean hasActionProvider = itemActionProviderClassName != null; if (hasActionProvider && itemActionViewLayout == 0 && itemActionViewClassName == null) { @@ -407,7 +430,7 @@ public class MenuInflater { + "be used within a restricted context"); } item.setOnMenuItemClickListener( - new InflatedOnMenuItemClickListener(mContext, itemListenerMethodName)); + new InflatedOnMenuItemClickListener(mRealOwner, itemListenerMethodName)); } if (itemCheckable >= 2) { diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserModel.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserModel.java index 379207471..d7f110fc6 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserModel.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserModel.java @@ -25,7 +25,6 @@ import android.os.Handler; import android.text.TextUtils; import android.util.Log; import android.util.Xml; - import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlSerializer; @@ -39,11 +38,11 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashSet; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.Executor; +import java.util.concurrent.Executors; /** *

@@ -562,33 +561,7 @@ class ActivityChooserModel extends DataSetObservable { } } - private static final SerialExecutor SERIAL_EXECUTOR = new SerialExecutor(); - - private static class SerialExecutor implements Executor { - final LinkedList mTasks = new LinkedList(); - Runnable mActive; - - public synchronized void execute(final Runnable r) { - mTasks.offer(new Runnable() { - public void run() { - try { - r.run(); - } finally { - scheduleNext(); - } - } - }); - if (mActive == null) { - scheduleNext(); - } - } - - protected synchronized void scheduleNext() { - if ((mActive = mTasks.poll()) != null) { - mActive.run(); - } - } - } + private static final Executor SERIAL_EXECUTOR = Executors.newSingleThreadExecutor(); /** * Persists the history data to the backing file if the latter diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserView.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserView.java index da13bc99f..e19ea9e9e 100644 --- a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserView.java +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserView.java @@ -405,7 +405,11 @@ class ActivityChooserView extends ViewGroup implements ActivityChooserModelClien super.onDetachedFromWindow(); ActivityChooserModel dataModel = mAdapter.getDataModel(); if (dataModel != null) { - dataModel.unregisterObserver(mModelDataSetOberver); + try { + dataModel.unregisterObserver(mModelDataSetOberver); + } catch (IllegalStateException e) { + //Oh, well... fixes issue #557 + } } ViewTreeObserver viewTreeObserver = getViewTreeObserver(); if (viewTreeObserver.isAlive()) { @@ -526,6 +530,7 @@ class ActivityChooserView extends ViewGroup implements ActivityChooserModelClien mActivityChooserContent.setBackgroundDrawable(mActivityChooserContentBackground); } else { mActivityChooserContent.setBackgroundDrawable(null); + mActivityChooserContent.setPadding(0, 0, 0, 0); } } @@ -648,7 +653,11 @@ class ActivityChooserView extends ViewGroup implements ActivityChooserModelClien public void setDataModel(ActivityChooserModel dataModel) { ActivityChooserModel oldDataModel = mAdapter.getDataModel(); if (oldDataModel != null && isShown()) { - oldDataModel.unregisterObserver(mModelDataSetOberver); + try { + oldDataModel.unregisterObserver(mModelDataSetOberver); + } catch (IllegalStateException e) { + //Oh, well... fixes issue #557 + } } mDataModel = dataModel; if (dataModel != null && isShown()) { diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/SearchView.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/SearchView.java new file mode 100644 index 000000000..c9e7897d4 --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/SearchView.java @@ -0,0 +1,1811 @@ +/* + * Copyright (C) 2010 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. + */ + +package com.actionbarsherlock.widget; + +import android.app.PendingIntent; +import android.app.SearchManager; +import android.app.SearchableInfo; +import android.content.ActivityNotFoundException; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.database.Cursor; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.os.ResultReceiver; +import android.speech.RecognizerIntent; +import android.support.v4.view.KeyEventCompat; +import android.support.v4.widget.CursorAdapter; +import android.text.Editable; +import android.text.InputType; +import android.text.Spannable; +import android.text.SpannableStringBuilder; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.text.style.ImageSpan; +import android.util.AttributeSet; +import android.util.Log; +import android.util.TypedValue; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewTreeObserver; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityNodeInfo; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.AdapterView.OnItemSelectedListener; +import android.widget.AutoCompleteTextView; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.TextView.OnEditorActionListener; +import com.actionbarsherlock.R; +import com.actionbarsherlock.view.CollapsibleActionView; + +import java.lang.reflect.Method; +import java.util.WeakHashMap; + +import static com.actionbarsherlock.widget.SuggestionsAdapter.getColumnString; + +/** + * A widget that provides a user interface for the user to enter a search query and submit a request + * to a search provider. Shows a list of query suggestions or results, if available, and allows the + * user to pick a suggestion or result to launch into. + * + *

+ * When the SearchView is used in an ActionBar as an action view for a collapsible menu item, it + * needs to be set to iconified by default using {@link #setIconifiedByDefault(boolean) + * setIconifiedByDefault(true)}. This is the default, so nothing needs to be done. + *

+ *

+ * If you want the search field to always be visible, then call setIconifiedByDefault(false). + *

+ * + *
+ * + * @see android.view.MenuItem#SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW + * @attr ref android.R.styleable#SearchView_iconifiedByDefault + * @attr ref android.R.styleable#SearchView_imeOptions + * @attr ref android.R.styleable#SearchView_inputType + * @attr ref android.R.styleable#SearchView_maxWidth + * @attr ref android.R.styleable#SearchView_queryHint + */ +public class SearchView extends LinearLayout implements CollapsibleActionView { + + private static final boolean DBG = false; + private static final String LOG_TAG = "SearchView"; + + /** + * Private constant for removing the microphone in the keyboard. + */ + private static final String IME_OPTION_NO_MICROPHONE = "nm"; + + private OnQueryTextListener mOnQueryChangeListener; + private OnCloseListener mOnCloseListener; + private OnFocusChangeListener mOnQueryTextFocusChangeListener; + private OnSuggestionListener mOnSuggestionListener; + private OnClickListener mOnSearchClickListener; + + private boolean mIconifiedByDefault; + private boolean mIconified; + private CursorAdapter mSuggestionsAdapter; + private View mSearchButton; + private View mSubmitButton; + private View mSearchPlate; + private View mSubmitArea; + private ImageView mCloseButton; + private View mSearchEditFrame; + private View mVoiceButton; + private SearchAutoComplete mQueryTextView; + private View mDropDownAnchor; + private ImageView mSearchHintIcon; + private boolean mSubmitButtonEnabled; + private CharSequence mQueryHint; + private boolean mQueryRefinement; + private boolean mClearingFocus; + private int mMaxWidth; + private boolean mVoiceButtonEnabled; + private CharSequence mOldQueryText; + private CharSequence mUserQuery; + private boolean mExpandedInActionView; + private int mCollapsedImeOptions; + + private SearchableInfo mSearchable; + private Bundle mAppSearchData; + + /* + * SearchView can be set expanded before the IME is ready to be shown during + * initial UI setup. The show operation is asynchronous to account for this. + */ + private Runnable mShowImeRunnable = new Runnable() { + public void run() { + InputMethodManager imm = (InputMethodManager) + getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + + if (imm != null) { + showSoftInputUnchecked(SearchView.this, imm, 0); + } + } + }; + + private Runnable mUpdateDrawableStateRunnable = new Runnable() { + public void run() { + updateFocusedState(); + } + }; + + private Runnable mReleaseCursorRunnable = new Runnable() { + public void run() { + if (mSuggestionsAdapter != null && mSuggestionsAdapter instanceof SuggestionsAdapter) { + mSuggestionsAdapter.changeCursor(null); + } + } + }; + + // For voice searching + private final Intent mVoiceWebSearchIntent; + private final Intent mVoiceAppSearchIntent; + + // A weak map of drawables we've gotten from other packages, so we don't load them + // more than once. + private final WeakHashMap mOutsideDrawablesCache = + new WeakHashMap(); + + /** + * Callbacks for changes to the query text. + */ + public interface OnQueryTextListener { + + /** + * Called when the user submits the query. This could be due to a key press on the + * keyboard or due to pressing a submit button. + * The listener can override the standard behavior by returning true + * to indicate that it has handled the submit request. Otherwise return false to + * let the SearchView handle the submission by launching any associated intent. + * + * @param query the query text that is to be submitted + * + * @return true if the query has been handled by the listener, false to let the + * SearchView perform the default action. + */ + boolean onQueryTextSubmit(String query); + + /** + * Called when the query text is changed by the user. + * + * @param newText the new content of the query text field. + * + * @return false if the SearchView should perform the default action of showing any + * suggestions if available, true if the action was handled by the listener. + */ + boolean onQueryTextChange(String newText); + } + + public interface OnCloseListener { + + /** + * The user is attempting to close the SearchView. + * + * @return true if the listener wants to override the default behavior of clearing the + * text field and dismissing it, false otherwise. + */ + boolean onClose(); + } + + /** + * Callback interface for selection events on suggestions. These callbacks + * are only relevant when a SearchableInfo has been specified by {@link #setSearchableInfo}. + */ + public interface OnSuggestionListener { + + /** + * Called when a suggestion was selected by navigating to it. + * @param position the absolute position in the list of suggestions. + * + * @return true if the listener handles the event and wants to override the default + * behavior of possibly rewriting the query based on the selected item, false otherwise. + */ + boolean onSuggestionSelect(int position); + + /** + * Called when a suggestion was clicked. + * @param position the absolute position of the clicked item in the list of suggestions. + * + * @return true if the listener handles the event and wants to override the default + * behavior of launching any intent or submitting a search query specified on that item. + * Return false otherwise. + */ + boolean onSuggestionClick(int position); + } + + public SearchView(Context context) { + this(context, null); + } + + public SearchView(Context context, AttributeSet attrs) { + super(context, attrs); + + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { + throw new IllegalStateException("SearchView is API 8+ only."); + } + + LayoutInflater inflater = (LayoutInflater) context + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + inflater.inflate(R.layout.abs__search_view, this, true); + + mSearchButton = findViewById(R.id.abs__search_button); + mQueryTextView = (SearchAutoComplete) findViewById(R.id.abs__search_src_text); + mQueryTextView.setSearchView(this); + + mSearchEditFrame = findViewById(R.id.abs__search_edit_frame); + mSearchPlate = findViewById(R.id.abs__search_plate); + mSubmitArea = findViewById(R.id.abs__submit_area); + mSubmitButton = findViewById(R.id.abs__search_go_btn); + mCloseButton = (ImageView) findViewById(R.id.abs__search_close_btn); + mVoiceButton = findViewById(R.id.abs__search_voice_btn); + mSearchHintIcon = (ImageView) findViewById(R.id.abs__search_mag_icon); + + mSearchButton.setOnClickListener(mOnClickListener); + mCloseButton.setOnClickListener(mOnClickListener); + mSubmitButton.setOnClickListener(mOnClickListener); + mVoiceButton.setOnClickListener(mOnClickListener); + mQueryTextView.setOnClickListener(mOnClickListener); + + mQueryTextView.addTextChangedListener(mTextWatcher); + mQueryTextView.setOnEditorActionListener(mOnEditorActionListener); + mQueryTextView.setOnItemClickListener(mOnItemClickListener); + mQueryTextView.setOnItemSelectedListener(mOnItemSelectedListener); + mQueryTextView.setOnKeyListener(mTextKeyListener); + // Inform any listener of focus changes + mQueryTextView.setOnFocusChangeListener(new OnFocusChangeListener() { + + public void onFocusChange(View v, boolean hasFocus) { + if (mOnQueryTextFocusChangeListener != null) { + mOnQueryTextFocusChangeListener.onFocusChange(SearchView.this, hasFocus); + } + } + }); + + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SherlockSearchView, 0, 0); + setIconifiedByDefault(a.getBoolean(R.styleable.SherlockSearchView_iconifiedByDefault, true)); + int maxWidth = a.getDimensionPixelSize(R.styleable.SherlockSearchView_android_maxWidth, -1); + if (maxWidth != -1) { + setMaxWidth(maxWidth); + } + CharSequence queryHint = a.getText(R.styleable.SherlockSearchView_queryHint); + if (!TextUtils.isEmpty(queryHint)) { + setQueryHint(queryHint); + } + int imeOptions = a.getInt(R.styleable.SherlockSearchView_android_imeOptions, -1); + if (imeOptions != -1) { + setImeOptions(imeOptions); + } + int inputType = a.getInt(R.styleable.SherlockSearchView_android_inputType, -1); + if (inputType != -1) { + setInputType(inputType); + } + + a.recycle(); + + boolean focusable = true; + + a = context.obtainStyledAttributes(attrs, R.styleable.SherlockView, 0, 0); + focusable = a.getBoolean(R.styleable.SherlockView_android_focusable, focusable); + a.recycle(); + setFocusable(focusable); + + // Save voice intent for later queries/launching + mVoiceWebSearchIntent = new Intent(RecognizerIntent.ACTION_WEB_SEARCH); + mVoiceWebSearchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mVoiceWebSearchIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, + RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH); + + mVoiceAppSearchIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); + mVoiceAppSearchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + + mDropDownAnchor = findViewById(mQueryTextView.getDropDownAnchor()); + if (mDropDownAnchor != null) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + mDropDownAnchor.addOnLayoutChangeListener(new OnLayoutChangeListener() { + @Override + public void onLayoutChange(View v, int left, int top, int right, int bottom, + int oldLeft, int oldTop, int oldRight, int oldBottom) { + adjustDropDownSizeAndPosition(); + } + }); + } else { + mDropDownAnchor.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + @Override public void onGlobalLayout() { + adjustDropDownSizeAndPosition(); + } + }); + } + } + + updateViewsVisibility(mIconifiedByDefault); + updateQueryHint(); + } + + /** + * Sets the SearchableInfo for this SearchView. Properties in the SearchableInfo are used + * to display labels, hints, suggestions, create intents for launching search results screens + * and controlling other affordances such as a voice button. + * + * @param searchable a SearchableInfo can be retrieved from the SearchManager, for a specific + * activity or a global search provider. + */ + public void setSearchableInfo(SearchableInfo searchable) { + mSearchable = searchable; + if (mSearchable != null) { + updateSearchAutoComplete(); + updateQueryHint(); + } + // Cache the voice search capability + mVoiceButtonEnabled = hasVoiceSearch(); + + if (mVoiceButtonEnabled) { + // Disable the microphone on the keyboard, as a mic is displayed near the text box + // TODO: use imeOptions to disable voice input when the new API will be available + mQueryTextView.setPrivateImeOptions(IME_OPTION_NO_MICROPHONE); + } + updateViewsVisibility(isIconified()); + } + + /** + * Sets the APP_DATA for legacy SearchDialog use. + * @param appSearchData bundle provided by the app when launching the search dialog + * @hide + */ + public void setAppSearchData(Bundle appSearchData) { + mAppSearchData = appSearchData; + } + + /** + * Sets the IME options on the query text field. + * + * @see TextView#setImeOptions(int) + * @param imeOptions the options to set on the query text field + * + * @attr ref android.R.styleable#SearchView_imeOptions + */ + public void setImeOptions(int imeOptions) { + mQueryTextView.setImeOptions(imeOptions); + } + + /** + * Returns the IME options set on the query text field. + * @return the ime options + * @see TextView#setImeOptions(int) + * + * @attr ref android.R.styleable#SearchView_imeOptions + */ + public int getImeOptions() { + return mQueryTextView.getImeOptions(); + } + + /** + * Sets the input type on the query text field. + * + * @see TextView#setInputType(int) + * @param inputType the input type to set on the query text field + * + * @attr ref android.R.styleable#SearchView_inputType + */ + public void setInputType(int inputType) { + mQueryTextView.setInputType(inputType); + } + + /** + * Returns the input type set on the query text field. + * @return the input type + * + * @attr ref android.R.styleable#SearchView_inputType + */ + public int getInputType() { + return mQueryTextView.getInputType(); + } + + /** @hide */ + @Override + public boolean requestFocus(int direction, Rect previouslyFocusedRect) { + // Don't accept focus if in the middle of clearing focus + if (mClearingFocus) return false; + // Check if SearchView is focusable. + if (!isFocusable()) return false; + // If it is not iconified, then give the focus to the text field + if (!isIconified()) { + boolean result = mQueryTextView.requestFocus(direction, previouslyFocusedRect); + if (result) { + updateViewsVisibility(false); + } + return result; + } else { + return super.requestFocus(direction, previouslyFocusedRect); + } + } + + /** @hide */ + @Override + public void clearFocus() { + mClearingFocus = true; + setImeVisibility(false); + super.clearFocus(); + mQueryTextView.clearFocus(); + mClearingFocus = false; + } + + /** + * Sets a listener for user actions within the SearchView. + * + * @param listener the listener object that receives callbacks when the user performs + * actions in the SearchView such as clicking on buttons or typing a query. + */ + public void setOnQueryTextListener(OnQueryTextListener listener) { + mOnQueryChangeListener = listener; + } + + /** + * Sets a listener to inform when the user closes the SearchView. + * + * @param listener the listener to call when the user closes the SearchView. + */ + public void setOnCloseListener(OnCloseListener listener) { + mOnCloseListener = listener; + } + + /** + * Sets a listener to inform when the focus of the query text field changes. + * + * @param listener the listener to inform of focus changes. + */ + public void setOnQueryTextFocusChangeListener(OnFocusChangeListener listener) { + mOnQueryTextFocusChangeListener = listener; + } + + /** + * Sets a listener to inform when a suggestion is focused or clicked. + * + * @param listener the listener to inform of suggestion selection events. + */ + public void setOnSuggestionListener(OnSuggestionListener listener) { + mOnSuggestionListener = listener; + } + + /** + * Sets a listener to inform when the search button is pressed. This is only + * relevant when the text field is not visible by default. Calling {@link #setIconified + * setIconified(false)} can also cause this listener to be informed. + * + * @param listener the listener to inform when the search button is clicked or + * the text field is programmatically de-iconified. + */ + public void setOnSearchClickListener(OnClickListener listener) { + mOnSearchClickListener = listener; + } + + /** + * Returns the query string currently in the text field. + * + * @return the query string + */ + public CharSequence getQuery() { + return mQueryTextView.getText(); + } + + /** + * Sets a query string in the text field and optionally submits the query as well. + * + * @param query the query string. This replaces any query text already present in the + * text field. + * @param submit whether to submit the query right now or only update the contents of + * text field. + */ + public void setQuery(CharSequence query, boolean submit) { + mQueryTextView.setText(query); + if (query != null) { + mQueryTextView.setSelection(mQueryTextView.length()); + mUserQuery = query; + } + + // If the query is not empty and submit is requested, submit the query + if (submit && !TextUtils.isEmpty(query)) { + onSubmitQuery(); + } + } + + /** + * Sets the hint text to display in the query text field. This overrides any hint specified + * in the SearchableInfo. + * + * @param hint the hint text to display + * + * @attr ref android.R.styleable#SearchView_queryHint + */ + public void setQueryHint(CharSequence hint) { + mQueryHint = hint; + updateQueryHint(); + } + + /** + * Gets the hint text to display in the query text field. + * @return the query hint text, if specified, null otherwise. + * + * @attr ref android.R.styleable#SearchView_queryHint + */ + public CharSequence getQueryHint() { + if (mQueryHint != null) { + return mQueryHint; + } else if (mSearchable != null) { + CharSequence hint = null; + int hintId = mSearchable.getHintId(); + if (hintId != 0) { + hint = getContext().getString(hintId); + } + return hint; + } + return null; + } + + /** + * Sets the default or resting state of the search field. If true, a single search icon is + * shown by default and expands to show the text field and other buttons when pressed. Also, + * if the default state is iconified, then it collapses to that state when the close button + * is pressed. Changes to this property will take effect immediately. + * + *

The default value is true.

+ * + * @param iconified whether the search field should be iconified by default + * + * @attr ref android.R.styleable#SearchView_iconifiedByDefault + */ + public void setIconifiedByDefault(boolean iconified) { + if (mIconifiedByDefault == iconified) return; + mIconifiedByDefault = iconified; + updateViewsVisibility(iconified); + updateQueryHint(); + } + + /** + * Returns the default iconified state of the search field. + * @return + * + * @attr ref android.R.styleable#SearchView_iconifiedByDefault + */ + public boolean isIconfiedByDefault() { + return mIconifiedByDefault; + } + + /** + * Iconifies or expands the SearchView. Any query text is cleared when iconified. This is + * a temporary state and does not override the default iconified state set by + * {@link #setIconifiedByDefault(boolean)}. If the default state is iconified, then + * a false here will only be valid until the user closes the field. And if the default + * state is expanded, then a true here will only clear the text field and not close it. + * + * @param iconify a true value will collapse the SearchView to an icon, while a false will + * expand it. + */ + public void setIconified(boolean iconify) { + if (iconify) { + onCloseClicked(); + } else { + onSearchClicked(); + } + } + + /** + * Returns the current iconified state of the SearchView. + * + * @return true if the SearchView is currently iconified, false if the search field is + * fully visible. + */ + public boolean isIconified() { + return mIconified; + } + + /** + * Enables showing a submit button when the query is non-empty. In cases where the SearchView + * is being used to filter the contents of the current activity and doesn't launch a separate + * results activity, then the submit button should be disabled. + * + * @param enabled true to show a submit button for submitting queries, false if a submit + * button is not required. + */ + public void setSubmitButtonEnabled(boolean enabled) { + mSubmitButtonEnabled = enabled; + updateViewsVisibility(isIconified()); + } + + /** + * Returns whether the submit button is enabled when necessary or never displayed. + * + * @return whether the submit button is enabled automatically when necessary + */ + public boolean isSubmitButtonEnabled() { + return mSubmitButtonEnabled; + } + + /** + * Specifies if a query refinement button should be displayed alongside each suggestion + * or if it should depend on the flags set in the individual items retrieved from the + * suggestions provider. Clicking on the query refinement button will replace the text + * in the query text field with the text from the suggestion. This flag only takes effect + * if a SearchableInfo has been specified with {@link #setSearchableInfo(SearchableInfo)} + * and not when using a custom adapter. + * + * @param enable true if all items should have a query refinement button, false if only + * those items that have a query refinement flag set should have the button. + * + * @see SearchManager#SUGGEST_COLUMN_FLAGS + * @see SearchManager#FLAG_QUERY_REFINEMENT + */ + public void setQueryRefinementEnabled(boolean enable) { + mQueryRefinement = enable; + if (mSuggestionsAdapter instanceof SuggestionsAdapter) { + ((SuggestionsAdapter) mSuggestionsAdapter).setQueryRefinement( + enable ? SuggestionsAdapter.REFINE_ALL : SuggestionsAdapter.REFINE_BY_ENTRY); + } + } + + /** + * Returns whether query refinement is enabled for all items or only specific ones. + * @return true if enabled for all items, false otherwise. + */ + public boolean isQueryRefinementEnabled() { + return mQueryRefinement; + } + + /** + * You can set a custom adapter if you wish. Otherwise the default adapter is used to + * display the suggestions from the suggestions provider associated with the SearchableInfo. + * + * @see #setSearchableInfo(SearchableInfo) + */ + public void setSuggestionsAdapter(CursorAdapter adapter) { + mSuggestionsAdapter = adapter; + + mQueryTextView.setAdapter(mSuggestionsAdapter); + } + + /** + * Returns the adapter used for suggestions, if any. + * @return the suggestions adapter + */ + public CursorAdapter getSuggestionsAdapter() { + return mSuggestionsAdapter; + } + + /** + * Makes the view at most this many pixels wide + * + * @attr ref android.R.styleable#SearchView_maxWidth + */ + public void setMaxWidth(int maxpixels) { + mMaxWidth = maxpixels; + + requestLayout(); + } + + /** + * Gets the specified maximum width in pixels, if set. Returns zero if + * no maximum width was specified. + * @return the maximum width of the view + * + * @attr ref android.R.styleable#SearchView_maxWidth + */ + public int getMaxWidth() { + return mMaxWidth; + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + // Let the standard measurements take effect in iconified state. + if (isIconified()) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + return; + } + + int widthMode = MeasureSpec.getMode(widthMeasureSpec); + int width = MeasureSpec.getSize(widthMeasureSpec); + + switch (widthMode) { + case MeasureSpec.AT_MOST: + // If there is an upper limit, don't exceed maximum width (explicit or implicit) + if (mMaxWidth > 0) { + width = Math.min(mMaxWidth, width); + } else { + width = Math.min(getPreferredWidth(), width); + } + break; + case MeasureSpec.EXACTLY: + // If an exact width is specified, still don't exceed any specified maximum width + if (mMaxWidth > 0) { + width = Math.min(mMaxWidth, width); + } + break; + case MeasureSpec.UNSPECIFIED: + // Use maximum width, if specified, else preferred width + width = mMaxWidth > 0 ? mMaxWidth : getPreferredWidth(); + break; + } + widthMode = MeasureSpec.EXACTLY; + super.onMeasure(MeasureSpec.makeMeasureSpec(width, widthMode), heightMeasureSpec); + } + + private int getPreferredWidth() { + return getContext().getResources() + .getDimensionPixelSize(R.dimen.abs__search_view_preferred_width); + } + + private void updateViewsVisibility(final boolean collapsed) { + mIconified = collapsed; + // Visibility of views that are visible when collapsed + final int visCollapsed = collapsed ? VISIBLE : GONE; + // Is there text in the query + final boolean hasText = !TextUtils.isEmpty(mQueryTextView.getText()); + + mSearchButton.setVisibility(visCollapsed); + updateSubmitButton(hasText); + mSearchEditFrame.setVisibility(collapsed ? GONE : VISIBLE); + mSearchHintIcon.setVisibility(mIconifiedByDefault ? GONE : VISIBLE); + updateCloseButton(); + updateVoiceButton(!hasText); + updateSubmitArea(); + } + + private boolean hasVoiceSearch() { + if (mSearchable != null && mSearchable.getVoiceSearchEnabled()) { + Intent testIntent = null; + if (mSearchable.getVoiceSearchLaunchWebSearch()) { + testIntent = mVoiceWebSearchIntent; + } else if (mSearchable.getVoiceSearchLaunchRecognizer()) { + testIntent = mVoiceAppSearchIntent; + } + if (testIntent != null) { + ResolveInfo ri = getContext().getPackageManager().resolveActivity(testIntent, + PackageManager.MATCH_DEFAULT_ONLY); + return ri != null; + } + } + return false; + } + + private boolean isSubmitAreaEnabled() { + return (mSubmitButtonEnabled || mVoiceButtonEnabled) && !isIconified(); + } + + private void updateSubmitButton(boolean hasText) { + int visibility = GONE; + if (mSubmitButtonEnabled && isSubmitAreaEnabled() && hasFocus() + && (hasText || !mVoiceButtonEnabled)) { + visibility = VISIBLE; + } + mSubmitButton.setVisibility(visibility); + } + + private void updateSubmitArea() { + int visibility = GONE; + if (isSubmitAreaEnabled() + && (mSubmitButton.getVisibility() == VISIBLE + || mVoiceButton.getVisibility() == VISIBLE)) { + visibility = VISIBLE; + } + mSubmitArea.setVisibility(visibility); + } + + private void updateCloseButton() { + final boolean hasText = !TextUtils.isEmpty(mQueryTextView.getText()); + // Should we show the close button? It is not shown if there's no focus, + // field is not iconified by default and there is no text in it. + final boolean showClose = hasText || (mIconifiedByDefault && !mExpandedInActionView); + mCloseButton.setVisibility(showClose ? VISIBLE : GONE); + mCloseButton.getDrawable().setState(hasText ? ENABLED_STATE_SET : EMPTY_STATE_SET); + } + + private void postUpdateFocusedState() { + post(mUpdateDrawableStateRunnable); + } + + private void updateFocusedState() { + boolean focused = mQueryTextView.hasFocus(); + mSearchPlate.getBackground().setState(focused ? FOCUSED_STATE_SET : EMPTY_STATE_SET); + mSubmitArea.getBackground().setState(focused ? FOCUSED_STATE_SET : EMPTY_STATE_SET); + invalidate(); + } + + @Override + protected void onDetachedFromWindow() { + removeCallbacks(mUpdateDrawableStateRunnable); + post(mReleaseCursorRunnable); + super.onDetachedFromWindow(); + } + + private void setImeVisibility(final boolean visible) { + if (visible) { + post(mShowImeRunnable); + } else { + removeCallbacks(mShowImeRunnable); + InputMethodManager imm = (InputMethodManager) + getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + + if (imm != null) { + imm.hideSoftInputFromWindow(getWindowToken(), 0); + } + } + } + + /** + * Called by the SuggestionsAdapter + * @hide + */ + /* package */void onQueryRefine(CharSequence queryText) { + setQuery(queryText); + } + + private final OnClickListener mOnClickListener = new OnClickListener() { + + public void onClick(View v) { + if (v == mSearchButton) { + onSearchClicked(); + } else if (v == mCloseButton) { + onCloseClicked(); + } else if (v == mSubmitButton) { + onSubmitQuery(); + } else if (v == mVoiceButton) { + onVoiceClicked(); + } else if (v == mQueryTextView) { + forceSuggestionQuery(); + } + } + }; + + /** + * Handles the key down event for dealing with action keys. + * + * @param keyCode This is the keycode of the typed key, and is the same value as + * found in the KeyEvent parameter. + * @param event The complete event record for the typed key + * + * @return true if the event was handled here, or false if not. + */ + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (mSearchable == null) { + return false; + } + + // if it's an action specified by the searchable activity, launch the + // entered query with the action key + // TODO SearchableInfo.ActionKeyInfo actionKey = mSearchable.findActionKey(keyCode); + // TODO if ((actionKey != null) && (actionKey.getQueryActionMsg() != null)) { + // TODO launchQuerySearch(keyCode, actionKey.getQueryActionMsg(), mQueryTextView.getText() + // TODO .toString()); + // TODO return true; + // TODO } + + return super.onKeyDown(keyCode, event); + } + + /** + * React to the user typing "enter" or other hardwired keys while typing in + * the search box. This handles these special keys while the edit box has + * focus. + */ + View.OnKeyListener mTextKeyListener = new View.OnKeyListener() { + public boolean onKey(View v, int keyCode, KeyEvent event) { + // guard against possible race conditions + if (mSearchable == null) { + return false; + } + + if (DBG) { + Log.d(LOG_TAG, "mTextListener.onKey(" + keyCode + "," + event + "), selection: " + + mQueryTextView.getListSelection()); + } + + // If a suggestion is selected, handle enter, search key, and action keys + // as presses on the selected suggestion + if (mQueryTextView.isPopupShowing() + && mQueryTextView.getListSelection() != ListView.INVALID_POSITION) { + return onSuggestionsKey(v, keyCode, event); + } + + // If there is text in the query box, handle enter, and action keys + // The search key is handled by the dialog's onKeyDown(). + if (!mQueryTextView.isEmpty() && KeyEventCompat.hasNoModifiers(event)) { + if (event.getAction() == KeyEvent.ACTION_UP) { + if (keyCode == KeyEvent.KEYCODE_ENTER) { + v.cancelLongPress(); + + // Launch as a regular search. + launchQuerySearch(KeyEvent.KEYCODE_UNKNOWN, null, mQueryTextView.getText() + .toString()); + return true; + } + } + if (event.getAction() == KeyEvent.ACTION_DOWN) { + // TODO SearchableInfo.ActionKeyInfo actionKey = mSearchable.findActionKey(keyCode); + // TODO if ((actionKey != null) && (actionKey.getQueryActionMsg() != null)) { + // TODO launchQuerySearch(keyCode, actionKey.getQueryActionMsg(), mQueryTextView + // TODO .getText().toString()); + // TODO return true; + // TODO } + } + } + return false; + } + }; + + /** + * React to the user typing while in the suggestions list. First, check for + * action keys. If not handled, try refocusing regular characters into the + * EditText. + */ + private boolean onSuggestionsKey(View v, int keyCode, KeyEvent event) { + // guard against possible race conditions (late arrival after dismiss) + if (mSearchable == null) { + return false; + } + if (mSuggestionsAdapter == null) { + return false; + } + if (event.getAction() == KeyEvent.ACTION_DOWN && KeyEventCompat.hasNoModifiers(event)) { + // First, check for enter or search (both of which we'll treat as a + // "click") + if (keyCode == KeyEvent.KEYCODE_ENTER || keyCode == KeyEvent.KEYCODE_SEARCH + || keyCode == KeyEvent.KEYCODE_TAB) { + int position = mQueryTextView.getListSelection(); + return onItemClicked(position, KeyEvent.KEYCODE_UNKNOWN, null); + } + + // Next, check for left/right moves, which we use to "return" the + // user to the edit view + if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT || keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) { + // give "focus" to text editor, with cursor at the beginning if + // left key, at end if right key + // TODO: Reverse left/right for right-to-left languages, e.g. + // Arabic + int selPoint = (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) ? 0 : mQueryTextView + .length(); + mQueryTextView.setSelection(selPoint); + mQueryTextView.setListSelection(0); + mQueryTextView.clearListSelection(); + ensureImeVisible(mQueryTextView, true); + + return true; + } + + // Next, check for an "up and out" move + if (keyCode == KeyEvent.KEYCODE_DPAD_UP && 0 == mQueryTextView.getListSelection()) { + // TODO: restoreUserQuery(); + // let ACTV complete the move + return false; + } + + // Next, check for an "action key" + // TODO SearchableInfo.ActionKeyInfo actionKey = mSearchable.findActionKey(keyCode); + // TODO if ((actionKey != null) + // TODO && ((actionKey.getSuggestActionMsg() != null) || (actionKey + // TODO .getSuggestActionMsgColumn() != null))) { + // TODO // launch suggestion using action key column + // TODO int position = mQueryTextView.getListSelection(); + // TODO if (position != ListView.INVALID_POSITION) { + // TODO Cursor c = mSuggestionsAdapter.getCursor(); + // TODO if (c.moveToPosition(position)) { + // TODO final String actionMsg = getActionKeyMessage(c, actionKey); + // TODO if (actionMsg != null && (actionMsg.length() > 0)) { + // TODO return onItemClicked(position, keyCode, actionMsg); + // TODO } + // TODO } + // TODO } + // TODO } + } + return false; + } + + /** + * For a given suggestion and a given cursor row, get the action message. If + * not provided by the specific row/column, also check for a single + * definition (for the action key). + * + * @param c The cursor providing suggestions + * @param actionKey The actionkey record being examined + * + * @return Returns a string, or null if no action key message for this + * suggestion + */ + // TODO private static String getActionKeyMessage(Cursor c, SearchableInfo.ActionKeyInfo actionKey) { + // TODO String result = null; + // TODO // check first in the cursor data, for a suggestion-specific message + // TODO final String column = actionKey.getSuggestActionMsgColumn(); + // TODO if (column != null) { + // TODO result = SuggestionsAdapter.getColumnString(c, column); + // TODO } + // TODO // If the cursor didn't give us a message, see if there's a single + // TODO // message defined + // TODO // for the actionkey (for all suggestions) + // TODO if (result == null) { + // TODO result = actionKey.getSuggestActionMsg(); + // TODO } + // TODO return result; + // TODO } + + private int getSearchIconId() { + TypedValue outValue = new TypedValue(); + getContext().getTheme().resolveAttribute(R.attr.searchViewSearchIcon, + outValue, true); + return outValue.resourceId; + } + + private CharSequence getDecoratedHint(CharSequence hintText) { + // If the field is always expanded, then don't add the search icon to the hint + if (!mIconifiedByDefault) return hintText; + + SpannableStringBuilder ssb = new SpannableStringBuilder(" "); // for the icon + ssb.append(hintText); + Drawable searchIcon = getContext().getResources().getDrawable(getSearchIconId()); + int textSize = (int) (mQueryTextView.getTextSize() * 1.25); + searchIcon.setBounds(0, 0, textSize, textSize); + ssb.setSpan(new ImageSpan(searchIcon), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + return ssb; + } + + private void updateQueryHint() { + if (mQueryHint != null) { + mQueryTextView.setHint(getDecoratedHint(mQueryHint)); + } else if (mSearchable != null) { + CharSequence hint = null; + int hintId = mSearchable.getHintId(); + if (hintId != 0) { + hint = getContext().getString(hintId); + } + if (hint != null) { + mQueryTextView.setHint(getDecoratedHint(hint)); + } + } else { + mQueryTextView.setHint(getDecoratedHint("")); + } + } + + /** + * Updates the auto-complete text view. + */ + private void updateSearchAutoComplete() { + // TODO mQueryTextView.setDropDownAnimationStyle(0); // no animation + mQueryTextView.setThreshold(mSearchable.getSuggestThreshold()); + mQueryTextView.setImeOptions(mSearchable.getImeOptions()); + int inputType = mSearchable.getInputType(); + // We only touch this if the input type is set up for text (which it almost certainly + // should be, in the case of search!) + if ((inputType & InputType.TYPE_MASK_CLASS) == InputType.TYPE_CLASS_TEXT) { + // The existence of a suggestions authority is the proxy for "suggestions + // are available here" + inputType &= ~InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE; + if (mSearchable.getSuggestAuthority() != null) { + inputType |= InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE; + // TYPE_TEXT_FLAG_AUTO_COMPLETE means that the text editor is performing + // auto-completion based on its own semantics, which it will present to the user + // as they type. This generally means that the input method should not show its + // own candidates, and the spell checker should not be in action. The text editor + // supplies its candidates by calling InputMethodManager.displayCompletions(), + // which in turn will call InputMethodSession.displayCompletions(). + inputType |= InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS; + } + } + mQueryTextView.setInputType(inputType); + if (mSuggestionsAdapter != null) { + mSuggestionsAdapter.changeCursor(null); + } + // attach the suggestions adapter, if suggestions are available + // The existence of a suggestions authority is the proxy for "suggestions available here" + if (mSearchable.getSuggestAuthority() != null) { + mSuggestionsAdapter = new SuggestionsAdapter(getContext(), + this, mSearchable, mOutsideDrawablesCache); + mQueryTextView.setAdapter(mSuggestionsAdapter); + ((SuggestionsAdapter) mSuggestionsAdapter).setQueryRefinement( + mQueryRefinement ? SuggestionsAdapter.REFINE_ALL + : SuggestionsAdapter.REFINE_BY_ENTRY); + } + } + + /** + * Update the visibility of the voice button. There are actually two voice search modes, + * either of which will activate the button. + * @param empty whether the search query text field is empty. If it is, then the other + * criteria apply to make the voice button visible. + */ + private void updateVoiceButton(boolean empty) { + int visibility = GONE; + if (mVoiceButtonEnabled && !isIconified() && empty) { + visibility = VISIBLE; + mSubmitButton.setVisibility(GONE); + } + mVoiceButton.setVisibility(visibility); + } + + private final OnEditorActionListener mOnEditorActionListener = new OnEditorActionListener() { + + /** + * Called when the input method default action key is pressed. + */ + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + onSubmitQuery(); + return true; + } + }; + + private void onTextChanged(CharSequence newText) { + CharSequence text = mQueryTextView.getText(); + mUserQuery = text; + boolean hasText = !TextUtils.isEmpty(text); + updateSubmitButton(hasText); + updateVoiceButton(!hasText); + updateCloseButton(); + updateSubmitArea(); + if (mOnQueryChangeListener != null && !TextUtils.equals(newText, mOldQueryText)) { + mOnQueryChangeListener.onQueryTextChange(newText.toString()); + } + mOldQueryText = newText.toString(); + } + + private void onSubmitQuery() { + CharSequence query = mQueryTextView.getText(); + if (query != null && TextUtils.getTrimmedLength(query) > 0) { + if (mOnQueryChangeListener == null + || !mOnQueryChangeListener.onQueryTextSubmit(query.toString())) { + if (mSearchable != null) { + launchQuerySearch(KeyEvent.KEYCODE_UNKNOWN, null, query.toString()); + setImeVisibility(false); + } + dismissSuggestions(); + } + } + } + + private void dismissSuggestions() { + mQueryTextView.dismissDropDown(); + } + + private void onCloseClicked() { + CharSequence text = mQueryTextView.getText(); + if (TextUtils.isEmpty(text)) { + if (mIconifiedByDefault) { + // If the app doesn't override the close behavior + if (mOnCloseListener == null || !mOnCloseListener.onClose()) { + // hide the keyboard and remove focus + clearFocus(); + // collapse the search field + updateViewsVisibility(true); + } + } + } else { + mQueryTextView.setText(""); + mQueryTextView.requestFocus(); + setImeVisibility(true); + } + + } + + private void onSearchClicked() { + updateViewsVisibility(false); + mQueryTextView.requestFocus(); + setImeVisibility(true); + if (mOnSearchClickListener != null) { + mOnSearchClickListener.onClick(this); + } + } + + private void onVoiceClicked() { + // guard against possible race conditions + if (mSearchable == null) { + return; + } + SearchableInfo searchable = mSearchable; + try { + if (searchable.getVoiceSearchLaunchWebSearch()) { + Intent webSearchIntent = createVoiceWebSearchIntent(mVoiceWebSearchIntent, + searchable); + getContext().startActivity(webSearchIntent); + } else if (searchable.getVoiceSearchLaunchRecognizer()) { + Intent appSearchIntent = createVoiceAppSearchIntent(mVoiceAppSearchIntent, + searchable); + getContext().startActivity(appSearchIntent); + } + } catch (ActivityNotFoundException e) { + // Should not happen, since we check the availability of + // voice search before showing the button. But just in case... + Log.w(LOG_TAG, "Could not find voice search activity"); + } + } + + void onTextFocusChanged() { + updateViewsVisibility(isIconified()); + // Delayed update to make sure that the focus has settled down and window focus changes + // don't affect it. A synchronous update was not working. + postUpdateFocusedState(); + if (mQueryTextView.hasFocus()) { + forceSuggestionQuery(); + } + } + + @Override + public void onWindowFocusChanged(boolean hasWindowFocus) { + super.onWindowFocusChanged(hasWindowFocus); + + postUpdateFocusedState(); + } + + /** + * {@inheritDoc} + */ + @Override + public void onActionViewCollapsed() { + clearFocus(); + updateViewsVisibility(true); + mQueryTextView.setImeOptions(mCollapsedImeOptions); + mExpandedInActionView = false; + } + + /** + * {@inheritDoc} + */ + @Override + public void onActionViewExpanded() { + if (mExpandedInActionView) return; + + mExpandedInActionView = true; + mCollapsedImeOptions = mQueryTextView.getImeOptions(); + mQueryTextView.setImeOptions(mCollapsedImeOptions | EditorInfo.IME_FLAG_NO_FULLSCREEN); + mQueryTextView.setText(""); + setIconified(false); + } + + @Override + public void onInitializeAccessibilityEvent(AccessibilityEvent event) { + super.onInitializeAccessibilityEvent(event); + event.setClassName(SearchView.class.getName()); + } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setClassName(SearchView.class.getName()); + } + + private void adjustDropDownSizeAndPosition() { + if (mDropDownAnchor.getWidth() > 1) { + Resources res = getContext().getResources(); + int anchorPadding = mSearchPlate.getPaddingLeft(); + Rect dropDownPadding = new Rect(); + int iconOffset = mIconifiedByDefault + ? res.getDimensionPixelSize(R.dimen.abs__dropdownitem_icon_width) + + res.getDimensionPixelSize(R.dimen.abs__dropdownitem_text_padding_left) + : 0; + mQueryTextView.getDropDownBackground().getPadding(dropDownPadding); + mQueryTextView.setDropDownHorizontalOffset(-(dropDownPadding.left + iconOffset) + + anchorPadding); + mQueryTextView.setDropDownWidth(mDropDownAnchor.getWidth() + dropDownPadding.left + + dropDownPadding.right + iconOffset - (anchorPadding)); + } + } + + private boolean onItemClicked(int position, int actionKey, String actionMsg) { + if (mOnSuggestionListener == null + || !mOnSuggestionListener.onSuggestionClick(position)) { + launchSuggestion(position, KeyEvent.KEYCODE_UNKNOWN, null); + setImeVisibility(false); + dismissSuggestions(); + return true; + } + return false; + } + + private boolean onItemSelected(int position) { + if (mOnSuggestionListener == null + || !mOnSuggestionListener.onSuggestionSelect(position)) { + rewriteQueryFromSuggestion(position); + return true; + } + return false; + } + + private final OnItemClickListener mOnItemClickListener = new OnItemClickListener() { + + /** + * Implements OnItemClickListener + */ + public void onItemClick(AdapterView parent, View view, int position, long id) { + if (DBG) Log.d(LOG_TAG, "onItemClick() position " + position); + onItemClicked(position, KeyEvent.KEYCODE_UNKNOWN, null); + } + }; + + private final OnItemSelectedListener mOnItemSelectedListener = new OnItemSelectedListener() { + + /** + * Implements OnItemSelectedListener + */ + public void onItemSelected(AdapterView parent, View view, int position, long id) { + if (DBG) Log.d(LOG_TAG, "onItemSelected() position " + position); + SearchView.this.onItemSelected(position); + } + + /** + * Implements OnItemSelectedListener + */ + public void onNothingSelected(AdapterView parent) { + if (DBG) + Log.d(LOG_TAG, "onNothingSelected()"); + } + }; + + /** + * Query rewriting. + */ + private void rewriteQueryFromSuggestion(int position) { + CharSequence oldQuery = mQueryTextView.getText(); + Cursor c = mSuggestionsAdapter.getCursor(); + if (c == null) { + return; + } + if (c.moveToPosition(position)) { + // Get the new query from the suggestion. + CharSequence newQuery = mSuggestionsAdapter.convertToString(c); + if (newQuery != null) { + // The suggestion rewrites the query. + // Update the text field, without getting new suggestions. + setQuery(newQuery); + } else { + // The suggestion does not rewrite the query, restore the user's query. + setQuery(oldQuery); + } + } else { + // We got a bad position, restore the user's query. + setQuery(oldQuery); + } + } + + /** + * Launches an intent based on a suggestion. + * + * @param position The index of the suggestion to create the intent from. + * @param actionKey The key code of the action key that was pressed, + * or {@link KeyEvent#KEYCODE_UNKNOWN} if none. + * @param actionMsg The message for the action key that was pressed, + * or null if none. + * @return true if a successful launch, false if could not (e.g. bad position). + */ + private boolean launchSuggestion(int position, int actionKey, String actionMsg) { + Cursor c = mSuggestionsAdapter.getCursor(); + if ((c != null) && c.moveToPosition(position)) { + + Intent intent = createIntentFromSuggestion(c, actionKey, actionMsg); + + // launch the intent + launchIntent(intent); + + return true; + } + return false; + } + + /** + * Launches an intent, including any special intent handling. + */ + private void launchIntent(Intent intent) { + if (intent == null) { + return; + } + try { + // If the intent was created from a suggestion, it will always have an explicit + // component here. + getContext().startActivity(intent); + } catch (RuntimeException ex) { + Log.e(LOG_TAG, "Failed launch activity: " + intent, ex); + } + } + + /** + * Sets the text in the query box, without updating the suggestions. + */ + private void setQuery(CharSequence query) { + setText(mQueryTextView, query, true); + // Move the cursor to the end + mQueryTextView.setSelection(TextUtils.isEmpty(query) ? 0 : query.length()); + } + + private void launchQuerySearch(int actionKey, String actionMsg, String query) { + String action = Intent.ACTION_SEARCH; + Intent intent = createIntent(action, null, null, query, actionKey, actionMsg); + getContext().startActivity(intent); + } + + /** + * Constructs an intent from the given information and the search dialog state. + * + * @param action Intent action. + * @param data Intent data, or null. + * @param extraData Data for {@link SearchManager#EXTRA_DATA_KEY} or null. + * @param query Intent query, or null. + * @param actionKey The key code of the action key that was pressed, + * or {@link KeyEvent#KEYCODE_UNKNOWN} if none. + * @param actionMsg The message for the action key that was pressed, + * or null if none. + * @return The intent. + */ + private Intent createIntent(String action, Uri data, String extraData, String query, + int actionKey, String actionMsg) { + // Now build the Intent + Intent intent = new Intent(action); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + // We need CLEAR_TOP to avoid reusing an old task that has other activities + // on top of the one we want. We don't want to do this in in-app search though, + // as it can be destructive to the activity stack. + if (data != null) { + intent.setData(data); + } + intent.putExtra(SearchManager.USER_QUERY, mUserQuery); + if (query != null) { + intent.putExtra(SearchManager.QUERY, query); + } + if (extraData != null) { + intent.putExtra(SearchManager.EXTRA_DATA_KEY, extraData); + } + if (mAppSearchData != null) { + intent.putExtra(SearchManager.APP_DATA, mAppSearchData); + } + if (actionKey != KeyEvent.KEYCODE_UNKNOWN) { + intent.putExtra(SearchManager.ACTION_KEY, actionKey); + intent.putExtra(SearchManager.ACTION_MSG, actionMsg); + } + intent.setComponent(mSearchable.getSearchActivity()); + return intent; + } + + /** + * Create and return an Intent that can launch the voice search activity for web search. + */ + private Intent createVoiceWebSearchIntent(Intent baseIntent, SearchableInfo searchable) { + Intent voiceIntent = new Intent(baseIntent); + ComponentName searchActivity = searchable.getSearchActivity(); + voiceIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, searchActivity == null ? null + : searchActivity.flattenToShortString()); + return voiceIntent; + } + + /** + * Create and return an Intent that can launch the voice search activity, perform a specific + * voice transcription, and forward the results to the searchable activity. + * + * @param baseIntent The voice app search intent to start from + * @return A completely-configured intent ready to send to the voice search activity + */ + private Intent createVoiceAppSearchIntent(Intent baseIntent, SearchableInfo searchable) { + ComponentName searchActivity = searchable.getSearchActivity(); + + // create the necessary intent to set up a search-and-forward operation + // in the voice search system. We have to keep the bundle separate, + // because it becomes immutable once it enters the PendingIntent + Intent queryIntent = new Intent(Intent.ACTION_SEARCH); + queryIntent.setComponent(searchActivity); + PendingIntent pending = PendingIntent.getActivity(getContext(), 0, queryIntent, + PendingIntent.FLAG_ONE_SHOT); + + // Now set up the bundle that will be inserted into the pending intent + // when it's time to do the search. We always build it here (even if empty) + // because the voice search activity will always need to insert "QUERY" into + // it anyway. + Bundle queryExtras = new Bundle(); + + // Now build the intent to launch the voice search. Add all necessary + // extras to launch the voice recognizer, and then all the necessary extras + // to forward the results to the searchable activity + Intent voiceIntent = new Intent(baseIntent); + + // Add all of the configuration options supplied by the searchable's metadata + String languageModel = RecognizerIntent.LANGUAGE_MODEL_FREE_FORM; + String prompt = null; + String language = null; + int maxResults = 1; + + Resources resources = getResources(); + if (searchable.getVoiceLanguageModeId() != 0) { + languageModel = resources.getString(searchable.getVoiceLanguageModeId()); + } + if (searchable.getVoicePromptTextId() != 0) { + prompt = resources.getString(searchable.getVoicePromptTextId()); + } + if (searchable.getVoiceLanguageId() != 0) { + language = resources.getString(searchable.getVoiceLanguageId()); + } + if (searchable.getVoiceMaxResults() != 0) { + maxResults = searchable.getVoiceMaxResults(); + } + voiceIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, languageModel); + voiceIntent.putExtra(RecognizerIntent.EXTRA_PROMPT, prompt); + voiceIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, language); + voiceIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, maxResults); + voiceIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, searchActivity == null ? null + : searchActivity.flattenToShortString()); + + // Add the values that configure forwarding the results + voiceIntent.putExtra(RecognizerIntent.EXTRA_RESULTS_PENDINGINTENT, pending); + voiceIntent.putExtra(RecognizerIntent.EXTRA_RESULTS_PENDINGINTENT_BUNDLE, queryExtras); + + return voiceIntent; + } + + /** + * When a particular suggestion has been selected, perform the various lookups required + * to use the suggestion. This includes checking the cursor for suggestion-specific data, + * and/or falling back to the XML for defaults; It also creates REST style Uri data when + * the suggestion includes a data id. + * + * @param c The suggestions cursor, moved to the row of the user's selection + * @param actionKey The key code of the action key that was pressed, + * or {@link KeyEvent#KEYCODE_UNKNOWN} if none. + * @param actionMsg The message for the action key that was pressed, + * or null if none. + * @return An intent for the suggestion at the cursor's position. + */ + private Intent createIntentFromSuggestion(Cursor c, int actionKey, String actionMsg) { + try { + // use specific action if supplied, or default action if supplied, or fixed default + String action = getColumnString(c, SearchManager.SUGGEST_COLUMN_INTENT_ACTION); + + if (action == null) { + action = mSearchable.getSuggestIntentAction(); + } + if (action == null) { + action = Intent.ACTION_SEARCH; + } + + // use specific data if supplied, or default data if supplied + String data = getColumnString(c, SearchManager.SUGGEST_COLUMN_INTENT_DATA); + if (data == null) { + data = mSearchable.getSuggestIntentData(); + } + // then, if an ID was provided, append it. + if (data != null) { + String id = getColumnString(c, SearchManager.SUGGEST_COLUMN_INTENT_DATA_ID); + if (id != null) { + data = data + "/" + Uri.encode(id); + } + } + Uri dataUri = (data == null) ? null : Uri.parse(data); + + String query = getColumnString(c, SearchManager.SUGGEST_COLUMN_QUERY); + String extraData = getColumnString(c, SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA); + + return createIntent(action, dataUri, extraData, query, actionKey, actionMsg); + } catch (RuntimeException e ) { + int rowNum; + try { // be really paranoid now + rowNum = c.getPosition(); + } catch (RuntimeException e2 ) { + rowNum = -1; + } + Log.w(LOG_TAG, "Search suggestions cursor at row " + rowNum + + " returned exception.", e); + return null; + } + } + + private void forceSuggestionQuery() { + try { + Method before = SearchAutoComplete.class.getMethod("doBeforeTextChanged"); + Method after = SearchAutoComplete.class.getMethod("doAfterTextChanged"); + before.setAccessible(true); + after.setAccessible(true); + before.invoke(mQueryTextView); + after.invoke(mQueryTextView); + } catch (Exception e) { + // Oh well... + } + } + + static boolean isLandscapeMode(Context context) { + return context.getResources().getConfiguration().orientation + == Configuration.ORIENTATION_LANDSCAPE; + } + + /** + * Callback to watch the text field for empty/non-empty + */ + private TextWatcher mTextWatcher = new TextWatcher() { + + public void beforeTextChanged(CharSequence s, int start, int before, int after) { } + + public void onTextChanged(CharSequence s, int start, + int before, int after) { + SearchView.this.onTextChanged(s); + } + + public void afterTextChanged(Editable s) { + } + }; + + /** + * Local subclass for AutoCompleteTextView. + * @hide + */ + public static class SearchAutoComplete extends AutoCompleteTextView { + + private int mThreshold; + private SearchView mSearchView; + + public SearchAutoComplete(Context context) { + super(context); + mThreshold = getThreshold(); + } + + public SearchAutoComplete(Context context, AttributeSet attrs) { + super(context, attrs); + mThreshold = getThreshold(); + } + + public SearchAutoComplete(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + mThreshold = getThreshold(); + } + + void setSearchView(SearchView searchView) { + mSearchView = searchView; + } + + @Override + public void setThreshold(int threshold) { + super.setThreshold(threshold); + mThreshold = threshold; + } + + /** + * Returns true if the text field is empty, or contains only whitespace. + */ + private boolean isEmpty() { + return TextUtils.getTrimmedLength(getText()) == 0; + } + + /** + * We override this method to avoid replacing the query box text when a + * suggestion is clicked. + */ + @Override + protected void replaceText(CharSequence text) { + } + + /** + * We override this method to avoid an extra onItemClick being called on + * the drop-down's OnItemClickListener by + * {@link AutoCompleteTextView#onKeyUp(int, KeyEvent)} when an item is + * clicked with the trackball. + */ + @Override + public void performCompletion() { + } + + /** + * We override this method to be sure and show the soft keyboard if + * appropriate when the TextView has focus. + */ + @Override + public void onWindowFocusChanged(boolean hasWindowFocus) { + super.onWindowFocusChanged(hasWindowFocus); + + if (hasWindowFocus && mSearchView.hasFocus() && getVisibility() == VISIBLE) { + InputMethodManager inputManager = (InputMethodManager) getContext() + .getSystemService(Context.INPUT_METHOD_SERVICE); + inputManager.showSoftInput(this, 0); + // If in landscape mode, then make sure that + // the ime is in front of the dropdown. + if (isLandscapeMode(getContext())) { + ensureImeVisible(this, true); + } + } + } + + @Override + protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { + super.onFocusChanged(focused, direction, previouslyFocusedRect); + mSearchView.onTextFocusChanged(); + } + + /** + * We override this method so that we can allow a threshold of zero, + * which ACTV does not. + */ + @Override + public boolean enoughToFilter() { + return mThreshold <= 0 || super.enoughToFilter(); + } + + @Override + public boolean onKeyPreIme(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK) { + // special case for the back key, we do not even try to send it + // to the drop down list but instead, consume it immediately + if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) { + KeyEvent.DispatcherState state = getKeyDispatcherState(); + if (state != null) { + state.startTracking(event, this); + } + return true; + } else if (event.getAction() == KeyEvent.ACTION_UP) { + KeyEvent.DispatcherState state = getKeyDispatcherState(); + if (state != null) { + state.handleUpEvent(event); + } + if (event.isTracking() && !event.isCanceled()) { + mSearchView.clearFocus(); + mSearchView.setImeVisibility(false); + return true; + } + } + } + return super.onKeyPreIme(keyCode, event); + } + + } + + private static void ensureImeVisible(AutoCompleteTextView view, boolean visible) { + try { + Method method = AutoCompleteTextView.class.getMethod("ensureImeVisible", boolean.class); + method.setAccessible(true); + method.invoke(view, visible); + } catch (Exception e) { + //Oh well... + } + } + + private static void showSoftInputUnchecked(View view, InputMethodManager imm, int flags) { + try { + Method method = imm.getClass().getMethod("showSoftInputUnchecked", int.class, ResultReceiver.class); + method.setAccessible(true); + method.invoke(imm, flags, null); + } catch (Exception e) { + //Fallback to public API which hopefully does mostly the same thing + imm.showSoftInput(view, flags); + } + } + + private static void setText(AutoCompleteTextView view, CharSequence text, boolean filter) { + try { + Method method = AutoCompleteTextView.class.getMethod("setText", CharSequence.class, boolean.class); + method.setAccessible(true); + method.invoke(view, text, filter); + } catch (Exception e) { + //Fallback to public API which hopefully does mostly the same thing + view.setText(text); + } + } +} diff --git a/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/SuggestionsAdapter.java b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/SuggestionsAdapter.java new file mode 100644 index 000000000..bd5cbd718 --- /dev/null +++ b/APG/android-libs/ActionBarSherlock/src/com/actionbarsherlock/widget/SuggestionsAdapter.java @@ -0,0 +1,733 @@ +/* + * Copyright (C) 2009 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. + */ + +package com.actionbarsherlock.widget; + +import android.app.SearchManager; +import android.app.SearchableInfo; +import android.content.ComponentName; +import android.content.ContentResolver; +import android.content.Context; +import android.content.pm.ActivityInfo; +import android.content.pm.PackageManager; +import android.content.pm.PackageManager.NameNotFoundException; +import android.content.res.ColorStateList; +import android.content.res.Resources; +import android.database.Cursor; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.os.Bundle; +import android.support.v4.widget.ResourceCursorAdapter; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.TextUtils; +import android.text.style.TextAppearanceSpan; +import android.util.Log; +import android.util.TypedValue; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; +import com.actionbarsherlock.R; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; +import java.util.WeakHashMap; + +/** + * Provides the contents for the suggestion drop-down list. + * + * @hide + */ +class SuggestionsAdapter extends ResourceCursorAdapter implements OnClickListener { + + private static final boolean DBG = false; + private static final String LOG_TAG = "SuggestionsAdapter"; + private static final int QUERY_LIMIT = 50; + + static final int REFINE_NONE = 0; + static final int REFINE_BY_ENTRY = 1; + static final int REFINE_ALL = 2; + + private SearchManager mSearchManager; + private SearchView mSearchView; + private Context mProviderContext; + private WeakHashMap mOutsideDrawablesCache; + private boolean mClosed = false; + private int mQueryRefinement = REFINE_BY_ENTRY; + + // URL color + private ColorStateList mUrlColor; + + static final int INVALID_INDEX = -1; + + // Cached column indexes, updated when the cursor changes. + private int mText1Col = INVALID_INDEX; + private int mText2Col = INVALID_INDEX; + private int mText2UrlCol = INVALID_INDEX; + private int mIconName1Col = INVALID_INDEX; + private int mIconName2Col = INVALID_INDEX; + private int mFlagsCol = INVALID_INDEX; + + // private final Runnable mStartSpinnerRunnable; + // private final Runnable mStopSpinnerRunnable; + + /** + * The amount of time we delay in the filter when the user presses the delete key. + */ + //private static final long DELETE_KEY_POST_DELAY = 500L; + + public SuggestionsAdapter(Context context, SearchView searchView, + SearchableInfo mSearchable, WeakHashMap outsideDrawablesCache) { + super(context, + R.layout.abs__search_dropdown_item_icons_2line, + null, // no initial cursor + true); // auto-requery + mSearchManager = (SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE); + mProviderContext = mContext; + mSearchView = searchView; + + mOutsideDrawablesCache = outsideDrawablesCache; + + // mStartSpinnerRunnable = new Runnable() { + // public void run() { + // // mSearchView.setWorking(true); // TODO: + // } + // }; + // + // mStopSpinnerRunnable = new Runnable() { + // public void run() { + // // mSearchView.setWorking(false); // TODO: + // } + // }; + + // delay 500ms when deleting +// TODO getFilter().setDelayer(new Filter.Delayer() { +// +// private int mPreviousLength = 0; +// +// public long getPostingDelay(CharSequence constraint) { +// if (constraint == null) return 0; +// +// long delay = constraint.length() < mPreviousLength ? DELETE_KEY_POST_DELAY : 0; +// mPreviousLength = constraint.length(); +// return delay; +// } +// }); + } + + /** + * Enables query refinement for all suggestions. This means that an additional icon + * will be shown for each entry. When clicked, the suggested text on that line will be + * copied to the query text field. + *

+ * + * @param refineWhat which queries to refine. Possible values are {@link #REFINE_NONE}, + * {@link #REFINE_BY_ENTRY}, and {@link #REFINE_ALL}. + */ + public void setQueryRefinement(int refineWhat) { + mQueryRefinement = refineWhat; + } + + /** + * Returns the current query refinement preference. + * @return value of query refinement preference + */ + public int getQueryRefinement() { + return mQueryRefinement; + } + + /** + * Overridden to always return false, since we cannot be sure that + * suggestion sources return stable IDs. + */ + @Override + public boolean hasStableIds() { + return false; + } + + /** + * Use the search suggestions provider to obtain a live cursor. This will be called + * in a worker thread, so it's OK if the query is slow (e.g. round trip for suggestions). + * The results will be processed in the UI thread and changeCursor() will be called. + */ + @Override + public Cursor runQueryOnBackgroundThread(CharSequence constraint) { + if (DBG) Log.d(LOG_TAG, "runQueryOnBackgroundThread(" + constraint + ")"); + String query = (constraint == null) ? "" : constraint.toString(); + /** + * for in app search we show the progress spinner until the cursor is returned with + * the results. + */ + Cursor cursor = null; + if (mSearchView.getVisibility() != View.VISIBLE + || mSearchView.getWindowVisibility() != View.VISIBLE) { + return null; + } + //mSearchView.getWindow().getDecorView().post(mStartSpinnerRunnable); // TODO: + try { + cursor = getSuggestions(query, QUERY_LIMIT); + // trigger fill window so the spinner stays up until the results are copied over and + // closer to being ready + if (cursor != null) { + cursor.getCount(); + return cursor; + } + } catch (RuntimeException e) { + Log.w(LOG_TAG, "Search suggestions query threw an exception.", e); + } + // If cursor is null or an exception was thrown, stop the spinner and return null. + // changeCursor doesn't get called if cursor is null + // mSearchView.getWindow().getDecorView().post(mStopSpinnerRunnable); // TODO: + return null; + } + + public Cursor getSuggestions(String query, int limit) { + Uri.Builder uriBuilder = new Uri.Builder() + .scheme(ContentResolver.SCHEME_CONTENT) + .query("") // TODO: Remove, workaround for a bug in Uri.writeToParcel() + .fragment(""); // TODO: Remove, workaround for a bug in Uri.writeToParcel() + + // append standard suggestion query path + uriBuilder.appendPath(SearchManager.SUGGEST_URI_PATH_QUERY); + + // inject query, either as selection args or inline + uriBuilder.appendPath(query); + + if (limit > 0) { + uriBuilder.appendQueryParameter(SearchManager.SUGGEST_PARAMETER_LIMIT, String.valueOf(limit)); + } + + Uri uri = uriBuilder.build(); + + // finally, make the query + return mContext.getContentResolver().query(uri, null, null, null, null); + } + + public void close() { + if (DBG) Log.d(LOG_TAG, "close()"); + changeCursor(null); + mClosed = true; + } + + @Override + public void notifyDataSetChanged() { + if (DBG) Log.d(LOG_TAG, "notifyDataSetChanged"); + super.notifyDataSetChanged(); + + // mSearchView.onDataSetChanged(); // TODO: + + updateSpinnerState(getCursor()); + } + + @Override + public void notifyDataSetInvalidated() { + if (DBG) Log.d(LOG_TAG, "notifyDataSetInvalidated"); + super.notifyDataSetInvalidated(); + + updateSpinnerState(getCursor()); + } + + private void updateSpinnerState(Cursor cursor) { + Bundle extras = cursor != null ? cursor.getExtras() : null; + if (DBG) { + Log.d(LOG_TAG, "updateSpinnerState - extra = " + + (extras != null + ? extras.getBoolean(SearchManager.CURSOR_EXTRA_KEY_IN_PROGRESS) + : null)); + } + // Check if the Cursor indicates that the query is not complete and show the spinner + if (extras != null + && extras.getBoolean(SearchManager.CURSOR_EXTRA_KEY_IN_PROGRESS)) { + // mSearchView.getWindow().getDecorView().post(mStartSpinnerRunnable); // TODO: + return; + } + // If cursor is null or is done, stop the spinner + // mSearchView.getWindow().getDecorView().post(mStopSpinnerRunnable); // TODO: + } + + /** + * Cache columns. + */ + @Override + public void changeCursor(Cursor c) { + if (DBG) Log.d(LOG_TAG, "changeCursor(" + c + ")"); + + if (mClosed) { + Log.w(LOG_TAG, "Tried to change cursor after adapter was closed."); + if (c != null) c.close(); + return; + } + + try { + super.changeCursor(c); + + if (c != null) { + mText1Col = c.getColumnIndex(SearchManager.SUGGEST_COLUMN_TEXT_1); + mText2Col = c.getColumnIndex(SearchManager.SUGGEST_COLUMN_TEXT_2); + mText2UrlCol = c.getColumnIndex(SearchManager.SUGGEST_COLUMN_TEXT_2_URL); + mIconName1Col = c.getColumnIndex(SearchManager.SUGGEST_COLUMN_ICON_1); + mIconName2Col = c.getColumnIndex(SearchManager.SUGGEST_COLUMN_ICON_2); + mFlagsCol = c.getColumnIndex(SearchManager.SUGGEST_COLUMN_FLAGS); + } + } catch (Exception e) { + Log.e(LOG_TAG, "error changing cursor and caching columns", e); + } + } + + /** + * Tags the view with cached child view look-ups. + */ + @Override + public View newView(Context context, Cursor cursor, ViewGroup parent) { + View v = super.newView(context, cursor, parent); + v.setTag(new ChildViewCache(v)); + return v; + } + + /** + * Cache of the child views of drop-drown list items, to avoid looking up the children + * each time the contents of a list item are changed. + */ + private final static class ChildViewCache { + public final TextView mText1; + public final TextView mText2; + public final ImageView mIcon1; + public final ImageView mIcon2; + public final ImageView mIconRefine; + + public ChildViewCache(View v) { + mText1 = (TextView) v.findViewById(android.R.id.text1); + mText2 = (TextView) v.findViewById(android.R.id.text2); + mIcon1 = (ImageView) v.findViewById(android.R.id.icon1); + mIcon2 = (ImageView) v.findViewById(android.R.id.icon2); + mIconRefine = (ImageView) v.findViewById(R.id.edit_query); + } + } + + @Override + public void bindView(View view, Context context, Cursor cursor) { + ChildViewCache views = (ChildViewCache) view.getTag(); + + int flags = 0; + if (mFlagsCol != INVALID_INDEX) { + flags = cursor.getInt(mFlagsCol); + } + if (views.mText1 != null) { + String text1 = getStringOrNull(cursor, mText1Col); + setViewText(views.mText1, text1); + } + if (views.mText2 != null) { + // First check TEXT_2_URL + CharSequence text2 = getStringOrNull(cursor, mText2UrlCol); + if (text2 != null) { + text2 = formatUrl(text2); + } else { + text2 = getStringOrNull(cursor, mText2Col); + } + + // If no second line of text is indicated, allow the first line of text + // to be up to two lines if it wants to be. + if (TextUtils.isEmpty(text2)) { + if (views.mText1 != null) { + views.mText1.setSingleLine(false); + views.mText1.setMaxLines(2); + } + } else { + if (views.mText1 != null) { + views.mText1.setSingleLine(true); + views.mText1.setMaxLines(1); + } + } + setViewText(views.mText2, text2); + } + + if (views.mIcon1 != null) { + setViewDrawable(views.mIcon1, getIcon1(cursor), View.INVISIBLE); + } + if (views.mIcon2 != null) { + setViewDrawable(views.mIcon2, getIcon2(cursor), View.GONE); + } + if (mQueryRefinement == REFINE_ALL + || (mQueryRefinement == REFINE_BY_ENTRY + && (flags & SearchManager.FLAG_QUERY_REFINEMENT) != 0)) { + views.mIconRefine.setVisibility(View.VISIBLE); + views.mIconRefine.setTag(views.mText1.getText()); + views.mIconRefine.setOnClickListener(this); + } else { + views.mIconRefine.setVisibility(View.GONE); + } + } + + public void onClick(View v) { + Object tag = v.getTag(); + if (tag instanceof CharSequence) { + mSearchView.onQueryRefine((CharSequence) tag); + } + } + + private CharSequence formatUrl(CharSequence url) { + if (mUrlColor == null) { + // Lazily get the URL color from the current theme. + TypedValue colorValue = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.textColorSearchUrl, colorValue, true); + mUrlColor = mContext.getResources().getColorStateList(colorValue.resourceId); + } + + SpannableString text = new SpannableString(url); + text.setSpan(new TextAppearanceSpan(null, 0, 0, mUrlColor, null), + 0, url.length(), + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + return text; + } + + private void setViewText(TextView v, CharSequence text) { + // Set the text even if it's null, since we need to clear any previous text. + v.setText(text); + + if (TextUtils.isEmpty(text)) { + v.setVisibility(View.GONE); + } else { + v.setVisibility(View.VISIBLE); + } + } + + private Drawable getIcon1(Cursor cursor) { + if (mIconName1Col == INVALID_INDEX) { + return null; + } + String value = cursor.getString(mIconName1Col); + Drawable drawable = getDrawableFromResourceValue(value); + if (drawable != null) { + return drawable; + } + return getDefaultIcon1(cursor); + } + + private Drawable getIcon2(Cursor cursor) { + if (mIconName2Col == INVALID_INDEX) { + return null; + } + String value = cursor.getString(mIconName2Col); + return getDrawableFromResourceValue(value); + } + + /** + * Sets the drawable in an image view, makes sure the view is only visible if there + * is a drawable. + */ + private void setViewDrawable(ImageView v, Drawable drawable, int nullVisibility) { + // Set the icon even if the drawable is null, since we need to clear any + // previous icon. + v.setImageDrawable(drawable); + + if (drawable == null) { + v.setVisibility(nullVisibility); + } else { + v.setVisibility(View.VISIBLE); + + // This is a hack to get any animated drawables (like a 'working' spinner) + // to animate. You have to setVisible true on an AnimationDrawable to get + // it to start animating, but it must first have been false or else the + // call to setVisible will be ineffective. We need to clear up the story + // about animated drawables in the future, see http://b/1878430. + drawable.setVisible(false, false); + drawable.setVisible(true, false); + } + } + + /** + * Gets the text to show in the query field when a suggestion is selected. + * + * @param cursor The Cursor to read the suggestion data from. The Cursor should already + * be moved to the suggestion that is to be read from. + * @return The text to show, or null if the query should not be + * changed when selecting this suggestion. + */ + @Override + public CharSequence convertToString(Cursor cursor) { + if (cursor == null) { + return null; + } + + String query = getColumnString(cursor, SearchManager.SUGGEST_COLUMN_QUERY); + if (query != null) { + return query; + } + + return null; + } + + /** + * This method is overridden purely to provide a bit of protection against + * flaky content providers. + * + * @see android.widget.ListAdapter#getView(int, View, ViewGroup) + */ + @Override + public View getView(int position, View convertView, ViewGroup parent) { + try { + return super.getView(position, convertView, parent); + } catch (RuntimeException e) { + Log.w(LOG_TAG, "Search suggestions cursor threw exception.", e); + // Put exception string in item title + View v = newView(mContext, mCursor, parent); + if (v != null) { + ChildViewCache views = (ChildViewCache) v.getTag(); + TextView tv = views.mText1; + tv.setText(e.toString()); + } + return v; + } + } + + /** + * Gets a drawable given a value provided by a suggestion provider. + * + * This value could be just the string value of a resource id + * (e.g., "2130837524"), in which case we will try to retrieve a drawable from + * the provider's resources. If the value is not an integer, it is + * treated as a Uri and opened with + * {@link ContentResolver#openOutputStream(android.net.Uri, String)}. + * + * All resources and URIs are read using the suggestion provider's context. + * + * If the string is not formatted as expected, or no drawable can be found for + * the provided value, this method returns null. + * + * @param drawableId a string like "2130837524", + * "android.resource://com.android.alarmclock/2130837524", + * or "content://contacts/photos/253". + * @return a Drawable, or null if none found + */ + private Drawable getDrawableFromResourceValue(String drawableId) { + if (drawableId == null || drawableId.length() == 0 || "0".equals(drawableId)) { + return null; + } + try { + // First, see if it's just an integer + int resourceId = Integer.parseInt(drawableId); + // It's an int, look for it in the cache + String drawableUri = ContentResolver.SCHEME_ANDROID_RESOURCE + + "://" + mProviderContext.getPackageName() + "/" + resourceId; + // Must use URI as cache key, since ints are app-specific + Drawable drawable = checkIconCache(drawableUri); + if (drawable != null) { + return drawable; + } + // Not cached, find it by resource ID + drawable = mProviderContext.getResources().getDrawable(resourceId); + // Stick it in the cache, using the URI as key + storeInIconCache(drawableUri, drawable); + return drawable; + } catch (NumberFormatException nfe) { + // It's not an integer, use it as a URI + Drawable drawable = checkIconCache(drawableId); + if (drawable != null) { + return drawable; + } + Uri uri = Uri.parse(drawableId); + drawable = getDrawable(uri); + storeInIconCache(drawableId, drawable); + return drawable; + } catch (Resources.NotFoundException nfe) { + // It was an integer, but it couldn't be found, bail out + Log.w(LOG_TAG, "Icon resource not found: " + drawableId); + return null; + } + } + + /** + * Gets a drawable by URI, without using the cache. + * + * @return A drawable, or {@code null} if the drawable could not be loaded. + */ + private Drawable getDrawable(Uri uri) { + try { + String scheme = uri.getScheme(); + if (ContentResolver.SCHEME_ANDROID_RESOURCE.equals(scheme)) { + // Load drawables through Resources, to get the source density information + try { + return getTheDrawable(uri); + } catch (Resources.NotFoundException ex) { + throw new FileNotFoundException("Resource does not exist: " + uri); + } + } else { + // Let the ContentResolver handle content and file URIs. + InputStream stream = mProviderContext.getContentResolver().openInputStream(uri); + if (stream == null) { + throw new FileNotFoundException("Failed to open " + uri); + } + try { + return Drawable.createFromStream(stream, null); + } finally { + try { + stream.close(); + } catch (IOException ex) { + Log.e(LOG_TAG, "Error closing icon stream for " + uri, ex); + } + } + } + } catch (FileNotFoundException fnfe) { + Log.w(LOG_TAG, "Icon not found: " + uri + ", " + fnfe.getMessage()); + return null; + } + } + + public Drawable getTheDrawable(Uri uri) throws FileNotFoundException { + String authority = uri.getAuthority(); + Resources r; + if (TextUtils.isEmpty(authority)) { + throw new FileNotFoundException("No authority: " + uri); + } else { + try { + r = mContext.getPackageManager().getResourcesForApplication(authority); + } catch (NameNotFoundException ex) { + throw new FileNotFoundException("No package found for authority: " + uri); + } + } + List path = uri.getPathSegments(); + if (path == null) { + throw new FileNotFoundException("No path: " + uri); + } + int len = path.size(); + int id; + if (len == 1) { + try { + id = Integer.parseInt(path.get(0)); + } catch (NumberFormatException e) { + throw new FileNotFoundException("Single path segment is not a resource ID: " + uri); + } + } else if (len == 2) { + id = r.getIdentifier(path.get(1), path.get(0), authority); + } else { + throw new FileNotFoundException("More than two path segments: " + uri); + } + if (id == 0) { + throw new FileNotFoundException("No resource found for: " + uri); + } + return r.getDrawable(id); + } + + private Drawable checkIconCache(String resourceUri) { + Drawable.ConstantState cached = mOutsideDrawablesCache.get(resourceUri); + if (cached == null) { + return null; + } + if (DBG) Log.d(LOG_TAG, "Found icon in cache: " + resourceUri); + return cached.newDrawable(); + } + + private void storeInIconCache(String resourceUri, Drawable drawable) { + if (drawable != null) { + mOutsideDrawablesCache.put(resourceUri, drawable.getConstantState()); + } + } + + /** + * Gets the left-hand side icon that will be used for the current suggestion + * if the suggestion contains an icon column but no icon or a broken icon. + * + * @param cursor A cursor positioned at the current suggestion. + * @return A non-null drawable. + */ + private Drawable getDefaultIcon1(Cursor cursor) { + // Fall back to a default icon + return mContext.getPackageManager().getDefaultActivityIcon(); + } + + /** + * Gets the activity or application icon for an activity. + * Uses the local icon cache for fast repeated lookups. + * + * @param component Name of an activity. + * @return A drawable, or {@code null} if neither the activity nor the application + * has an icon set. + */ + private Drawable getActivityIconWithCache(ComponentName component) { + // First check the icon cache + String componentIconKey = component.flattenToShortString(); + // Using containsKey() since we also store null values. + if (mOutsideDrawablesCache.containsKey(componentIconKey)) { + Drawable.ConstantState cached = mOutsideDrawablesCache.get(componentIconKey); + return cached == null ? null : cached.newDrawable(mProviderContext.getResources()); + } + // Then try the activity or application icon + Drawable drawable = getActivityIcon(component); + // Stick it in the cache so we don't do this lookup again. + Drawable.ConstantState toCache = drawable == null ? null : drawable.getConstantState(); + mOutsideDrawablesCache.put(componentIconKey, toCache); + return drawable; + } + + /** + * Gets the activity or application icon for an activity. + * + * @param component Name of an activity. + * @return A drawable, or {@code null} if neither the acitivy or the application + * have an icon set. + */ + private Drawable getActivityIcon(ComponentName component) { + PackageManager pm = mContext.getPackageManager(); + final ActivityInfo activityInfo; + try { + activityInfo = pm.getActivityInfo(component, PackageManager.GET_META_DATA); + } catch (NameNotFoundException ex) { + Log.w(LOG_TAG, ex.toString()); + return null; + } + int iconId = activityInfo.getIconResource(); + if (iconId == 0) return null; + String pkg = component.getPackageName(); + Drawable drawable = pm.getDrawable(pkg, iconId, activityInfo.applicationInfo); + if (drawable == null) { + Log.w(LOG_TAG, "Invalid icon resource " + iconId + " for " + + component.flattenToShortString()); + return null; + } + return drawable; + } + + /** + * Gets the value of a string column by name. + * + * @param cursor Cursor to read the value from. + * @param columnName The name of the column to read. + * @return The value of the given column, or null + * if the cursor does not contain the given column. + */ + public static String getColumnString(Cursor cursor, String columnName) { + int col = cursor.getColumnIndex(columnName); + return getStringOrNull(cursor, col); + } + + private static String getStringOrNull(Cursor cursor, int col) { + if (col == INVALID_INDEX) { + return null; + } + try { + return cursor.getString(col); + } catch (Exception e) { + Log.e(LOG_TAG, + "unexpected error retrieving valid column from cursor, " + + "did the remote process die?", e); + return null; + } + } +} diff --git a/APG/android-libs/ActionBarSherlock/test/com/actionbarsherlock/internal/ManifestParsingTest.java b/APG/android-libs/ActionBarSherlock/test/com/actionbarsherlock/internal/ManifestParsingTest.java index 1314248a4..47475c574 100644 --- a/APG/android-libs/ActionBarSherlock/test/com/actionbarsherlock/internal/ManifestParsingTest.java +++ b/APG/android-libs/ActionBarSherlock/test/com/actionbarsherlock/internal/ManifestParsingTest.java @@ -1,13 +1,11 @@ package com.actionbarsherlock.internal; +import org.junit.Test; + +import static com.actionbarsherlock.internal.ActionBarSherlockCompat.cleanActivityName; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; -import static com.actionbarsherlock.internal.ActionBarSherlockCompat.cleanActivityName; -import com.xtremelabs.robolectric.RobolectricTestRunner; -import org.junit.Test; -import org.junit.runner.RunWith; -@RunWith(RobolectricTestRunner.class) public class ManifestParsingTest { @Test public void testFullyQualifiedClassName() {