From 3a313f3fb384a896b1940fb29987c518d5e5c9dd Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Fri, 25 Jan 2013 03:00:36 +0530 Subject: [PATCH] Mavenized (almost) everything - Transcode feature removed --- .gitignore | 16 - .project | 35 - commons-it/AndroidManifest.xml | 13 + commons-it/commons-it.iml | 71 + commons-it/pom.xml | 102 ++ commons-it/res/drawable-hdpi/icon.png | Bin 0 -> 4147 bytes commons-it/res/drawable-ldpi/icon.png | Bin 0 -> 1723 bytes commons-it/res/drawable-mdpi/icon.png | Bin 0 -> 2574 bytes commons-it/res/layout/main.xml | 12 + commons-it/res/values/strings.xml | 5 + commons-parent.iml | 14 + .../AndroidManifest.xml | 0 commons/androlog/androlog.properties | 19 + commons/assets/fontconfig/fonts.conf | 126 ++ .../fontconfig/fonts/truetype/Ubuntu-R.ttf | Bin 0 -> 353824 bytes commons/commons.iml | 63 + commons/default.properties | 3 + {jni => commons/jni}/Android.mk | 0 {jni => commons/jni}/README.gst-sdk | 0 commons/jni/gst-build/gstreamer_android.c | 308 ++++ commons/jni/gst-build/gstreamer_android.o | Bin 0 -> 8188 bytes commons/jni/src/com/gst_sdk/GStreamer.java | 7 + {jni => commons/jni}/transcode.c | 0 commons/pom.xml | 182 ++ .../res}/drawable-hdpi/commons_logo_large.png | Bin .../res}/drawable-hdpi/ic_action_search.png | Bin .../res}/drawable-hdpi/ic_launcher.png | Bin commons/res/drawable-hdpi/icon.png | Bin 0 -> 6094 bytes .../res}/drawable-ldpi/ic_launcher.png | Bin commons/res/drawable-ldpi/icon.png | Bin 0 -> 2750 bytes .../res}/drawable-mdpi/ic_action_search.png | Bin .../res}/drawable-mdpi/ic_launcher.png | Bin commons/res/drawable-mdpi/icon.png | Bin 0 -> 3720 bytes .../res}/drawable-xhdpi/ic_action_search.png | Bin .../res}/drawable-xhdpi/ic_launcher.png | Bin .../res}/drawable/action_bar_translucent.xml | 0 .../res}/drawable/actionbar_top_shadow.xml | 0 {res => commons/res}/drawable/ic_download.png | Bin .../share_overlay_background_gradient.xml | 0 .../res}/layout/activity_login.xml | 0 .../res}/layout/activity_share.xml | 0 .../res}/layout/layout_upload_progress.xml | 0 {res => commons/res}/layout/login.xml | 0 {res => commons/res}/menu/activity_login.xml | 0 {res => commons/res}/menu/activity_share.xml | 0 {res => commons/res}/values-v11/styles.xml | 0 {res => commons/res}/values-v14/styles.xml | 0 {res => commons/res}/values-v9/styles.xml | 0 {res => commons/res}/values/strings.xml | 0 {res => commons/res}/values/styles.xml | 0 {res => commons/res}/values/theme.xml | 0 {res => commons/res}/xml/authenticator.xml | 0 commons/src/com/gstreamer/GStreamer.java | 60 + .../wikimedia/commons/CommonsApplication.java | 8 - .../wikimedia/commons/ImageLoaderTask.java | 0 .../org/wikimedia/commons/ShareActivity.java | 0 .../org/wikimedia/commons/UploadService.java | 62 +- .../commons/auth/AuthenticatedActivity.java | 0 .../wikimedia/commons/auth/LoginActivity.java | 0 .../auth/WikiAccountAuthenticator.java | 0 .../auth/WikiAccountAuthenticatorService.java | 0 .../org/wikimedia/commons/media/Media.java | 0 commons/src/main/native/Android.mk | 22 + commons/src/main/native/README.gst-sdk | 8 + .../main/native/gst-build/gstreamer_android.c | 308 ++++ .../main/native/gst-build/gstreamer_android.o | Bin 0 -> 8188 bytes .../native/src/com/gst_sdk/GStreamer.java | 7 + commons/src/main/native/transcode.c | 148 ++ ic_launcher-web.png | Bin 37099 -> 0 bytes libs/ActionBarSherlock/.classpath | 8 - libs/ActionBarSherlock/.project | 33 - libs/ActionBarSherlock/AndroidManifest.xml | 6 - libs/ActionBarSherlock/README.md | 15 - libs/ActionBarSherlock/build.xml | 92 - .../libs/android-support-v4.jar | Bin 271754 -> 0 bytes libs/ActionBarSherlock/pom.xml | 151 -- libs/ActionBarSherlock/proguard-project.txt | 20 - libs/ActionBarSherlock/project.properties | 12 - ...s__primary_text_disable_only_holo_dark.xml | 20 - ...__primary_text_disable_only_holo_light.xml | 21 - .../res/color/abs__primary_text_holo_dark.xml | 24 - .../color/abs__primary_text_holo_light.xml | 26 - .../abs__ab_bottom_solid_dark_holo.9.png | Bin 144 -> 0 bytes .../abs__ab_bottom_solid_inverse_holo.9.png | Bin 138 -> 0 bytes .../abs__ab_bottom_solid_light_holo.9.png | Bin 144 -> 0 bytes ...abs__ab_bottom_transparent_dark_holo.9.png | Bin 135 -> 0 bytes ...bs__ab_bottom_transparent_light_holo.9.png | Bin 134 -> 0 bytes .../abs__ab_share_pack_holo_dark.9.png | Bin 156 -> 0 bytes .../abs__ab_share_pack_holo_light.9.png | Bin 156 -> 0 bytes .../abs__ab_solid_dark_holo.9.png | Bin 146 -> 0 bytes .../abs__ab_solid_light_holo.9.png | Bin 145 -> 0 bytes .../abs__ab_solid_shadow_holo.9.png | Bin 192 -> 0 bytes .../abs__ab_stacked_solid_dark_holo.9.png | Bin 146 -> 0 bytes .../abs__ab_stacked_solid_light_holo.9.png | Bin 146 -> 0 bytes ...bs__ab_stacked_transparent_dark_holo.9.png | Bin 139 -> 0 bytes ...s__ab_stacked_transparent_light_holo.9.png | Bin 133 -> 0 bytes .../abs__ab_transparent_dark_holo.9.png | Bin 155 -> 0 bytes .../abs__ab_transparent_light_holo.9.png | Bin 145 -> 0 bytes .../abs__btn_cab_done_default_holo_dark.9.png | Bin 104 -> 0 bytes ...abs__btn_cab_done_default_holo_light.9.png | Bin 102 -> 0 bytes .../abs__btn_cab_done_focused_holo_dark.9.png | Bin 112 -> 0 bytes ...abs__btn_cab_done_focused_holo_light.9.png | Bin 108 -> 0 bytes .../abs__btn_cab_done_pressed_holo_dark.9.png | Bin 110 -> 0 bytes ...abs__btn_cab_done_pressed_holo_light.9.png | Bin 108 -> 0 bytes ...abs__cab_background_bottom_holo_dark.9.png | Bin 148 -> 0 bytes ...bs__cab_background_bottom_holo_light.9.png | Bin 145 -> 0 bytes .../abs__cab_background_top_holo_dark.9.png | Bin 147 -> 0 bytes .../abs__cab_background_top_holo_light.9.png | Bin 147 -> 0 bytes .../abs__dialog_full_holo_dark.9.png | Bin 1414 -> 0 bytes .../abs__dialog_full_holo_light.9.png | Bin 1537 -> 0 bytes .../abs__ic_ab_back_holo_dark.png | Bin 545 -> 0 bytes .../abs__ic_ab_back_holo_light.png | Bin 432 -> 0 bytes .../abs__ic_cab_done_holo_dark.png | Bin 713 -> 0 bytes .../abs__ic_cab_done_holo_light.png | Bin 592 -> 0 bytes ..._ic_menu_moreoverflow_normal_holo_dark.png | Bin 121 -> 0 bytes ...ic_menu_moreoverflow_normal_holo_light.png | Bin 131 -> 0 bytes .../abs__ic_menu_share_holo_dark.png | Bin 467 -> 0 bytes .../abs__ic_menu_share_holo_light.png | Bin 505 -> 0 bytes .../abs__list_activated_holo.9.png | Bin 135 -> 0 bytes .../abs__list_divider_holo_dark.9.png | Bin 78 -> 0 bytes .../abs__list_divider_holo_light.9.png | Bin 76 -> 0 bytes .../abs__list_focused_holo.9.png | Bin 135 -> 0 bytes .../abs__list_longpressed_holo.9.png | Bin 135 -> 0 bytes .../abs__list_pressed_holo_dark.9.png | Bin 135 -> 0 bytes .../abs__list_pressed_holo_light.9.png | Bin 135 -> 0 bytes ...bs__list_selector_disabled_holo_dark.9.png | Bin 152 -> 0 bytes ...s__list_selector_disabled_holo_light.9.png | Bin 152 -> 0 bytes .../abs__menu_dropdown_panel_holo_dark.9.png | Bin 922 -> 0 bytes .../abs__menu_dropdown_panel_holo_light.9.png | Bin 1061 -> 0 bytes .../abs__progress_bg_holo_dark.9.png | Bin 154 -> 0 bytes .../abs__progress_bg_holo_light.9.png | Bin 154 -> 0 bytes .../abs__progress_primary_holo_dark.9.png | Bin 917 -> 0 bytes .../abs__progress_primary_holo_light.9.png | Bin 917 -> 0 bytes .../abs__progress_secondary_holo_dark.9.png | Bin 154 -> 0 bytes .../abs__progress_secondary_holo_light.9.png | Bin 154 -> 0 bytes .../abs__spinner_48_inner_holo.png | Bin 1793 -> 0 bytes .../abs__spinner_48_outer_holo.png | Bin 1811 -> 0 bytes .../abs__spinner_ab_default_holo_dark.9.png | Bin 277 -> 0 bytes .../abs__spinner_ab_default_holo_light.9.png | Bin 277 -> 0 bytes .../abs__spinner_ab_disabled_holo_dark.9.png | Bin 262 -> 0 bytes .../abs__spinner_ab_disabled_holo_light.9.png | Bin 262 -> 0 bytes .../abs__spinner_ab_focused_holo_dark.9.png | Bin 387 -> 0 bytes .../abs__spinner_ab_focused_holo_light.9.png | Bin 387 -> 0 bytes .../abs__spinner_ab_pressed_holo_dark.9.png | Bin 350 -> 0 bytes .../abs__spinner_ab_pressed_holo_light.9.png | Bin 350 -> 0 bytes .../abs__tab_selected_focused_holo.9.png | Bin 137 -> 0 bytes .../abs__tab_selected_holo.9.png | Bin 126 -> 0 bytes .../abs__tab_selected_pressed_holo.9.png | Bin 137 -> 0 bytes .../abs__tab_unselected_pressed_holo.9.png | Bin 138 -> 0 bytes .../abs__ab_bottom_solid_dark_holo.9.png | Bin 134 -> 0 bytes .../abs__ab_bottom_solid_inverse_holo.9.png | Bin 129 -> 0 bytes .../abs__ab_bottom_solid_light_holo.9.png | Bin 134 -> 0 bytes ...abs__ab_bottom_transparent_dark_holo.9.png | Bin 123 -> 0 bytes ...bs__ab_bottom_transparent_light_holo.9.png | Bin 123 -> 0 bytes .../abs__ab_share_pack_holo_dark.9.png | Bin 153 -> 0 bytes .../abs__ab_share_pack_holo_light.9.png | Bin 122 -> 0 bytes .../abs__ab_solid_dark_holo.9.png | Bin 133 -> 0 bytes .../abs__ab_solid_light_holo.9.png | Bin 133 -> 0 bytes .../abs__ab_solid_shadow_holo.9.png | Bin 168 -> 0 bytes .../abs__ab_stacked_solid_dark_holo.9.png | Bin 134 -> 0 bytes .../abs__ab_stacked_solid_light_holo.9.png | Bin 133 -> 0 bytes ...bs__ab_stacked_transparent_dark_holo.9.png | Bin 127 -> 0 bytes ...s__ab_stacked_transparent_light_holo.9.png | Bin 123 -> 0 bytes .../abs__ab_transparent_dark_holo.9.png | Bin 139 -> 0 bytes .../abs__ab_transparent_light_holo.9.png | Bin 133 -> 0 bytes .../abs__btn_cab_done_default_holo_dark.9.png | Bin 101 -> 0 bytes ...abs__btn_cab_done_default_holo_light.9.png | Bin 99 -> 0 bytes .../abs__btn_cab_done_focused_holo_dark.9.png | Bin 109 -> 0 bytes ...abs__btn_cab_done_focused_holo_light.9.png | Bin 105 -> 0 bytes .../abs__btn_cab_done_pressed_holo_dark.9.png | Bin 107 -> 0 bytes ...abs__btn_cab_done_pressed_holo_light.9.png | Bin 105 -> 0 bytes ...abs__cab_background_bottom_holo_dark.9.png | Bin 127 -> 0 bytes ...bs__cab_background_bottom_holo_light.9.png | Bin 124 -> 0 bytes .../abs__cab_background_top_holo_dark.9.png | Bin 130 -> 0 bytes .../abs__cab_background_top_holo_light.9.png | Bin 128 -> 0 bytes .../abs__dialog_full_holo_dark.9.png | Bin 882 -> 0 bytes .../abs__dialog_full_holo_light.9.png | Bin 1003 -> 0 bytes .../abs__ic_ab_back_holo_dark.png | Bin 375 -> 0 bytes .../abs__ic_ab_back_holo_light.png | Bin 308 -> 0 bytes .../abs__ic_cab_done_holo_dark.png | Bin 530 -> 0 bytes .../abs__ic_cab_done_holo_light.png | Bin 446 -> 0 bytes ..._ic_menu_moreoverflow_normal_holo_dark.png | Bin 119 -> 0 bytes ...ic_menu_moreoverflow_normal_holo_light.png | Bin 130 -> 0 bytes .../abs__ic_menu_share_holo_dark.png | Bin 332 -> 0 bytes .../abs__ic_menu_share_holo_light.png | Bin 355 -> 0 bytes .../abs__list_activated_holo.9.png | Bin 131 -> 0 bytes .../abs__list_divider_holo_dark.9.png | Bin 78 -> 0 bytes .../abs__list_divider_holo_light.9.png | Bin 76 -> 0 bytes .../abs__list_focused_holo.9.png | Bin 131 -> 0 bytes .../abs__list_longpressed_holo.9.png | Bin 131 -> 0 bytes .../abs__list_pressed_holo_dark.9.png | Bin 131 -> 0 bytes .../abs__list_pressed_holo_light.9.png | Bin 131 -> 0 bytes ...bs__list_selector_disabled_holo_dark.9.png | Bin 147 -> 0 bytes ...s__list_selector_disabled_holo_light.9.png | Bin 147 -> 0 bytes .../abs__menu_dropdown_panel_holo_dark.9.png | Bin 651 -> 0 bytes .../abs__menu_dropdown_panel_holo_light.9.png | Bin 720 -> 0 bytes .../abs__progress_bg_holo_dark.9.png | Bin 138 -> 0 bytes .../abs__progress_bg_holo_light.9.png | Bin 138 -> 0 bytes .../abs__progress_primary_holo_dark.9.png | Bin 572 -> 0 bytes .../abs__progress_primary_holo_light.9.png | Bin 572 -> 0 bytes .../abs__progress_secondary_holo_dark.9.png | Bin 138 -> 0 bytes .../abs__progress_secondary_holo_light.9.png | Bin 138 -> 0 bytes .../abs__spinner_48_inner_holo.png | Bin 1105 -> 0 bytes .../abs__spinner_48_outer_holo.png | Bin 1165 -> 0 bytes .../abs__spinner_ab_default_holo_dark.9.png | Bin 244 -> 0 bytes .../abs__spinner_ab_default_holo_light.9.png | Bin 244 -> 0 bytes .../abs__spinner_ab_disabled_holo_dark.9.png | Bin 244 -> 0 bytes .../abs__spinner_ab_disabled_holo_light.9.png | Bin 244 -> 0 bytes .../abs__spinner_ab_focused_holo_dark.9.png | Bin 324 -> 0 bytes .../abs__spinner_ab_focused_holo_light.9.png | Bin 324 -> 0 bytes .../abs__spinner_ab_pressed_holo_dark.9.png | Bin 279 -> 0 bytes .../abs__spinner_ab_pressed_holo_light.9.png | Bin 279 -> 0 bytes .../abs__tab_selected_focused_holo.9.png | Bin 133 -> 0 bytes .../abs__tab_selected_holo.9.png | Bin 122 -> 0 bytes .../abs__tab_selected_pressed_holo.9.png | Bin 133 -> 0 bytes .../abs__tab_unselected_pressed_holo.9.png | Bin 140 -> 0 bytes .../abs__progress_medium_holo.xml | 34 - .../abs__ab_bottom_solid_dark_holo.9.png | Bin 165 -> 0 bytes .../abs__ab_bottom_solid_inverse_holo.9.png | Bin 157 -> 0 bytes .../abs__ab_bottom_solid_light_holo.9.png | Bin 166 -> 0 bytes ...abs__ab_bottom_transparent_dark_holo.9.png | Bin 153 -> 0 bytes ...bs__ab_bottom_transparent_light_holo.9.png | Bin 152 -> 0 bytes .../abs__ab_share_pack_holo_dark.9.png | Bin 159 -> 0 bytes .../abs__ab_share_pack_holo_light.9.png | Bin 159 -> 0 bytes .../abs__ab_solid_dark_holo.9.png | Bin 163 -> 0 bytes .../abs__ab_solid_light_holo.9.png | Bin 163 -> 0 bytes .../abs__ab_solid_shadow_holo.9.png | Bin 290 -> 0 bytes .../abs__ab_stacked_solid_dark_holo.9.png | Bin 163 -> 0 bytes .../abs__ab_stacked_solid_light_holo.9.png | Bin 163 -> 0 bytes ...bs__ab_stacked_transparent_dark_holo.9.png | Bin 158 -> 0 bytes ...s__ab_stacked_transparent_light_holo.9.png | Bin 152 -> 0 bytes .../abs__ab_transparent_dark_holo.9.png | Bin 166 -> 0 bytes .../abs__ab_transparent_light_holo.9.png | Bin 153 -> 0 bytes .../abs__btn_cab_done_default_holo_dark.9.png | Bin 109 -> 0 bytes ...abs__btn_cab_done_default_holo_light.9.png | Bin 108 -> 0 bytes .../abs__btn_cab_done_focused_holo_dark.9.png | Bin 112 -> 0 bytes ...abs__btn_cab_done_focused_holo_light.9.png | Bin 113 -> 0 bytes .../abs__btn_cab_done_pressed_holo_dark.9.png | Bin 115 -> 0 bytes ...abs__btn_cab_done_pressed_holo_light.9.png | Bin 113 -> 0 bytes ...abs__cab_background_bottom_holo_dark.9.png | Bin 151 -> 0 bytes ...bs__cab_background_bottom_holo_light.9.png | Bin 151 -> 0 bytes .../abs__cab_background_top_holo_dark.9.png | Bin 162 -> 0 bytes .../abs__cab_background_top_holo_light.9.png | Bin 149 -> 0 bytes .../abs__dialog_full_holo_dark.9.png | Bin 2159 -> 0 bytes .../abs__dialog_full_holo_light.9.png | Bin 2302 -> 0 bytes .../abs__ic_ab_back_holo_dark.png | Bin 619 -> 0 bytes .../abs__ic_ab_back_holo_light.png | Bin 514 -> 0 bytes .../abs__ic_cab_done_holo_dark.png | Bin 970 -> 0 bytes .../abs__ic_cab_done_holo_light.png | Bin 756 -> 0 bytes ..._ic_menu_moreoverflow_normal_holo_dark.png | Bin 122 -> 0 bytes ...ic_menu_moreoverflow_normal_holo_light.png | Bin 140 -> 0 bytes .../abs__ic_menu_share_holo_dark.png | Bin 699 -> 0 bytes .../abs__ic_menu_share_holo_light.png | Bin 838 -> 0 bytes .../abs__list_activated_holo.9.png | Bin 139 -> 0 bytes .../abs__list_divider_holo_dark.9.png | Bin 83 -> 0 bytes .../abs__list_divider_holo_light.9.png | Bin 83 -> 0 bytes .../abs__list_focused_holo.9.png | Bin 139 -> 0 bytes .../abs__list_longpressed_holo.9.png | Bin 139 -> 0 bytes .../abs__list_pressed_holo_dark.9.png | Bin 139 -> 0 bytes .../abs__list_pressed_holo_light.9.png | Bin 139 -> 0 bytes ...bs__list_selector_disabled_holo_dark.9.png | Bin 161 -> 0 bytes ...s__list_selector_disabled_holo_light.9.png | Bin 155 -> 0 bytes .../abs__menu_dropdown_panel_holo_dark.9.png | Bin 1362 -> 0 bytes .../abs__menu_dropdown_panel_holo_light.9.png | Bin 1551 -> 0 bytes .../abs__progress_bg_holo_dark.9.png | Bin 146 -> 0 bytes .../abs__progress_bg_holo_light.9.png | Bin 146 -> 0 bytes .../abs__progress_primary_holo_dark.9.png | Bin 1192 -> 0 bytes .../abs__progress_primary_holo_light.9.png | Bin 1192 -> 0 bytes .../abs__progress_secondary_holo_dark.9.png | Bin 146 -> 0 bytes .../abs__progress_secondary_holo_light.9.png | Bin 146 -> 0 bytes .../abs__spinner_48_inner_holo.png | Bin 2413 -> 0 bytes .../abs__spinner_48_outer_holo.png | Bin 2432 -> 0 bytes .../abs__spinner_ab_default_holo_dark.9.png | Bin 313 -> 0 bytes .../abs__spinner_ab_default_holo_light.9.png | Bin 313 -> 0 bytes .../abs__spinner_ab_disabled_holo_dark.9.png | Bin 302 -> 0 bytes .../abs__spinner_ab_disabled_holo_light.9.png | Bin 302 -> 0 bytes .../abs__spinner_ab_focused_holo_dark.9.png | Bin 474 -> 0 bytes .../abs__spinner_ab_focused_holo_light.9.png | Bin 474 -> 0 bytes .../abs__spinner_ab_pressed_holo_dark.9.png | Bin 430 -> 0 bytes .../abs__spinner_ab_pressed_holo_light.9.png | Bin 430 -> 0 bytes .../abs__tab_selected_focused_holo.9.png | Bin 138 -> 0 bytes .../abs__tab_selected_holo.9.png | Bin 130 -> 0 bytes .../abs__tab_selected_pressed_holo.9.png | Bin 138 -> 0 bytes .../abs__tab_unselected_pressed_holo.9.png | Bin 148 -> 0 bytes .../abs__activated_background_holo_dark.xml | 20 - .../abs__activated_background_holo_light.xml | 20 - .../drawable/abs__btn_cab_done_holo_dark.xml | 24 - .../drawable/abs__btn_cab_done_holo_light.xml | 24 - .../abs__ic_menu_moreoverflow_holo_dark.xml | 18 - .../abs__ic_menu_moreoverflow_holo_light.xml | 18 - .../abs__item_background_holo_dark.xml | 26 - .../abs__item_background_holo_light.xml | 26 - ...lector_background_transition_holo_dark.xml | 20 - ...ector_background_transition_holo_light.xml | 20 - .../drawable/abs__list_selector_holo_dark.xml | 27 - .../abs__list_selector_holo_light.xml | 28 - .../abs__progress_horizontal_holo_dark.xml | 32 - .../abs__progress_horizontal_holo_light.xml | 32 - .../drawable/abs__progress_medium_holo.xml | 34 - .../drawable/abs__spinner_ab_holo_dark.xml | 25 - .../drawable/abs__spinner_ab_holo_light.xml | 25 - .../drawable/abs__tab_indicator_ab_holo.xml | 34 - .../abs__action_mode_close_item.xml | 40 - .../sherlock_spinner_dropdown_item.xml | 26 - .../res/layout-v14/sherlock_spinner_item.xml | 26 - .../layout-xlarge/abs__screen_action_bar.xml | 50 - .../abs__screen_action_bar_overlay.xml | 49 - .../res/layout/abs__action_bar_home.xml | 38 - .../res/layout/abs__action_bar_tab.xml | 7 - .../layout/abs__action_bar_tab_bar_view.xml | 6 - .../res/layout/abs__action_bar_title_item.xml | 50 - .../layout/abs__action_menu_item_layout.xml | 56 - .../res/layout/abs__action_menu_layout.xml | 23 - .../res/layout/abs__action_mode_bar.xml | 24 - .../layout/abs__action_mode_close_item.xml | 31 - .../res/layout/abs__activity_chooser_view.xml | 70 - .../abs__activity_chooser_view_list_item.xml | 53 - .../res/layout/abs__dialog_title_holo.xml | 46 - .../layout/abs__list_menu_item_checkbox.xml | 26 - .../res/layout/abs__list_menu_item_icon.xml | 28 - .../res/layout/abs__list_menu_item_layout.xml | 59 - .../res/layout/abs__list_menu_item_radio.xml | 24 - .../layout/abs__popup_menu_item_layout.xml | 60 - .../res/layout/abs__screen_action_bar.xml | 57 - .../layout/abs__screen_action_bar_overlay.xml | 59 - .../res/layout/abs__screen_simple.xml | 38 - ...abs__screen_simple_overlay_action_mode.xml | 38 - .../layout/sherlock_spinner_dropdown_item.xml | 26 - .../res/layout/sherlock_spinner_item.xml | 26 - .../res/values-land/abs__dimens.xml | 33 - .../abs__dimens.xml | 33 - .../abs__dimens.xml | 33 - .../abs__dimens.xml | 33 - .../abs__dimens.xml | 36 - .../res/values-large/abs__dimens.xml | 29 - .../res/values-sw600dp/abs__bools.xml | 19 - .../res/values-sw600dp/abs__dimens.xml | 38 - .../res/values-v11/abs__themes.xml | 12 - .../res/values-v14/abs__styles.xml | 118 -- .../res/values-v14/abs__themes.xml | 32 - .../res/values-w360dp/abs__dimens.xml | 22 - .../res/values-w480dp/abs__bools.xml | 22 - .../res/values-w480dp/abs__config.xml | 29 - .../res/values-w500dp/abs__dimens.xml | 22 - .../res/values-w600dp/abs__dimens.xml | 22 - .../res/values-xlarge/abs__dimens.xml | 45 - .../res/values/abs__attrs.xml | 380 ---- .../res/values/abs__bools.xml | 22 - .../res/values/abs__colors.xml | 27 - .../res/values/abs__config.xml | 43 - .../res/values/abs__dimens.xml | 50 - .../ActionBarSherlock/res/values/abs__ids.xml | 26 - .../res/values/abs__strings.xml | 42 - .../res/values/abs__styles.xml | 384 ---- .../res/values/abs__themes.xml | 226 --- .../v4/app/_ActionBarSherlockTrojanHorse.java | 144 -- .../actionbarsherlock/ActionBarSherlock.java | 791 --------- .../com/actionbarsherlock/app/ActionBar.java | 947 ---------- .../app/SherlockActivity.java | 259 --- .../app/SherlockDialogFragment.java | 68 - .../app/SherlockExpandableListActivity.java | 259 --- .../app/SherlockFragment.java | 68 - .../app/SherlockFragmentActivity.java | 292 ---- .../app/SherlockListActivity.java | 259 --- .../app/SherlockListFragment.java | 68 - .../app/SherlockPreferenceActivity.java | 259 --- .../internal/ActionBarSherlockCompat.java | 1207 ------------- .../internal/ActionBarSherlockNative.java | 328 ---- .../internal/ResourcesCompat.java | 95 - .../internal/app/ActionBarImpl.java | 1026 ----------- .../internal/app/ActionBarWrapper.java | 468 ----- .../nineoldandroids/animation/Animator.java | 278 --- .../animation/AnimatorListenerAdapter.java | 54 - .../animation/AnimatorSet.java | 1111 ------------ .../animation/FloatEvaluator.java | 42 - .../animation/FloatKeyframeSet.java | 136 -- .../animation/IntEvaluator.java | 42 - .../animation/IntKeyframeSet.java | 135 -- .../nineoldandroids/animation/Keyframe.java | 361 ---- .../animation/KeyframeSet.java | 227 --- .../animation/ObjectAnimator.java | 491 ------ .../animation/PropertyValuesHolder.java | 1012 ----------- .../animation/TypeEvaluator.java | 44 - .../animation/ValueAnimator.java | 1265 -------------- .../nineoldandroids/view/NineViewGroup.java | 79 - .../view/animation/AnimatorProxy.java | 212 --- .../widget/NineFrameLayout.java | 65 - .../widget/NineHorizontalScrollView.java | 41 - .../widget/NineLinearLayout.java | 65 - .../internal/view/ActionProviderWrapper.java | 40 - .../internal/view/StandaloneActionMode.java | 148 -- .../view/View_HasStateListenerSupport.java | 6 - .../View_OnAttachStateChangeListener.java | 8 - .../internal/view/menu/ActionMenu.java | 264 --- .../internal/view/menu/ActionMenuItem.java | 278 --- .../view/menu/ActionMenuItemView.java | 295 ---- .../view/menu/ActionMenuPresenter.java | 721 -------- .../internal/view/menu/ActionMenuView.java | 572 ------ .../internal/view/menu/BaseMenuPresenter.java | 231 --- .../internal/view/menu/ListMenuItemView.java | 278 --- .../internal/view/menu/MenuBuilder.java | 1335 -------------- .../internal/view/menu/MenuItemImpl.java | 647 ------- .../internal/view/menu/MenuItemWrapper.java | 292 ---- .../internal/view/menu/MenuPopupHelper.java | 376 ---- .../internal/view/menu/MenuPresenter.java | 148 -- .../internal/view/menu/MenuView.java | 120 -- .../internal/view/menu/MenuWrapper.java | 180 -- .../internal/view/menu/SubMenuBuilder.java | 134 -- .../internal/view/menu/SubMenuWrapper.java | 72 - .../internal/widget/AbsActionBarView.java | 291 ---- .../internal/widget/ActionBarContainer.java | 245 --- .../internal/widget/ActionBarContextView.java | 518 ------ .../internal/widget/ActionBarView.java | 1548 ----------------- .../internal/widget/CapitalizingButton.java | 40 - .../internal/widget/CapitalizingTextView.java | 44 - .../widget/FakeDialogPhoneWindow.java | 64 - .../internal/widget/IcsAbsSpinner.java | 479 ----- .../internal/widget/IcsAdapterView.java | 1160 ------------ .../internal/widget/IcsLinearLayout.java | 272 --- .../internal/widget/IcsListPopupWindow.java | 644 ------- .../internal/widget/IcsProgressBar.java | 1193 ------------- .../internal/widget/IcsSpinner.java | 703 -------- .../internal/widget/IcsView.java | 21 - .../widget/ScrollingTabContainerView.java | 545 ------ .../actionbarsherlock/view/ActionMode.java | 224 --- .../view/ActionProvider.java | 170 -- .../view/CollapsibleActionView.java | 39 - .../src/com/actionbarsherlock/view/Menu.java | 447 ----- .../actionbarsherlock/view/MenuInflater.java | 472 ----- .../com/actionbarsherlock/view/MenuItem.java | 598 ------- .../com/actionbarsherlock/view/SubMenu.java | 110 -- .../com/actionbarsherlock/view/Window.java | 65 - .../widget/ActivityChooserModel.java | 1131 ------------ .../widget/ActivityChooserView.java | 818 --------- .../widget/ShareActionProvider.java | 316 ---- .../internal/ManifestParsingTest.java | 39 - libs/commons-logging-1.1.1.jar | Bin 60686 -> 0 bytes libs/httpclient-4.2.1.jar | Bin 427022 -> 0 bytes libs/httpcore-4.2.1.jar | Bin 223374 -> 0 bytes libs/httpmime-4.2.1.jar | Bin 26598 -> 0 bytes libs/java-mwapi.jar | Bin 683309 -> 0 bytes pom.xml | 223 +++ project.properties | 16 - src/org/wikimedia/commons/Transcoder.java | 13 - 444 files changed, 1703 insertions(+), 34416 deletions(-) delete mode 100644 .gitignore delete mode 100644 .project create mode 100644 commons-it/AndroidManifest.xml create mode 100644 commons-it/commons-it.iml create mode 100644 commons-it/pom.xml create mode 100644 commons-it/res/drawable-hdpi/icon.png create mode 100644 commons-it/res/drawable-ldpi/icon.png create mode 100644 commons-it/res/drawable-mdpi/icon.png create mode 100644 commons-it/res/layout/main.xml create mode 100644 commons-it/res/values/strings.xml create mode 100644 commons-parent.iml rename AndroidManifest.xml => commons/AndroidManifest.xml (100%) create mode 100644 commons/androlog/androlog.properties create mode 100644 commons/assets/fontconfig/fonts.conf create mode 100644 commons/assets/fontconfig/fonts/truetype/Ubuntu-R.ttf create mode 100644 commons/commons.iml create mode 100644 commons/default.properties rename {jni => commons/jni}/Android.mk (100%) rename {jni => commons/jni}/README.gst-sdk (100%) create mode 100644 commons/jni/gst-build/gstreamer_android.c create mode 100644 commons/jni/gst-build/gstreamer_android.o create mode 100644 commons/jni/src/com/gst_sdk/GStreamer.java rename {jni => commons/jni}/transcode.c (100%) create mode 100644 commons/pom.xml rename {res => commons/res}/drawable-hdpi/commons_logo_large.png (100%) rename {res => commons/res}/drawable-hdpi/ic_action_search.png (100%) rename {res => commons/res}/drawable-hdpi/ic_launcher.png (100%) create mode 100644 commons/res/drawable-hdpi/icon.png rename {res => commons/res}/drawable-ldpi/ic_launcher.png (100%) create mode 100644 commons/res/drawable-ldpi/icon.png rename {res => commons/res}/drawable-mdpi/ic_action_search.png (100%) rename {res => commons/res}/drawable-mdpi/ic_launcher.png (100%) create mode 100644 commons/res/drawable-mdpi/icon.png rename {res => commons/res}/drawable-xhdpi/ic_action_search.png (100%) rename {res => commons/res}/drawable-xhdpi/ic_launcher.png (100%) rename {res => commons/res}/drawable/action_bar_translucent.xml (100%) rename {res => commons/res}/drawable/actionbar_top_shadow.xml (100%) rename {res => commons/res}/drawable/ic_download.png (100%) rename {res => commons/res}/drawable/share_overlay_background_gradient.xml (100%) rename {res => commons/res}/layout/activity_login.xml (100%) rename {res => commons/res}/layout/activity_share.xml (100%) rename {res => commons/res}/layout/layout_upload_progress.xml (100%) rename {res => commons/res}/layout/login.xml (100%) rename {res => commons/res}/menu/activity_login.xml (100%) rename {res => commons/res}/menu/activity_share.xml (100%) rename {res => commons/res}/values-v11/styles.xml (100%) rename {res => commons/res}/values-v14/styles.xml (100%) rename {res => commons/res}/values-v9/styles.xml (100%) rename {res => commons/res}/values/strings.xml (100%) rename {res => commons/res}/values/styles.xml (100%) rename {res => commons/res}/values/theme.xml (100%) rename {res => commons/res}/xml/authenticator.xml (100%) create mode 100644 commons/src/com/gstreamer/GStreamer.java rename {src => commons/src/main/java}/org/wikimedia/commons/CommonsApplication.java (94%) rename {src => commons/src/main/java}/org/wikimedia/commons/ImageLoaderTask.java (100%) rename {src => commons/src/main/java}/org/wikimedia/commons/ShareActivity.java (100%) rename {src => commons/src/main/java}/org/wikimedia/commons/UploadService.java (73%) rename {src => commons/src/main/java}/org/wikimedia/commons/auth/AuthenticatedActivity.java (100%) rename {src => commons/src/main/java}/org/wikimedia/commons/auth/LoginActivity.java (100%) rename {src => commons/src/main/java}/org/wikimedia/commons/auth/WikiAccountAuthenticator.java (100%) rename {src => commons/src/main/java}/org/wikimedia/commons/auth/WikiAccountAuthenticatorService.java (100%) rename {src => commons/src/main/java}/org/wikimedia/commons/media/Media.java (100%) create mode 100644 commons/src/main/native/Android.mk create mode 100644 commons/src/main/native/README.gst-sdk create mode 100644 commons/src/main/native/gst-build/gstreamer_android.c create mode 100644 commons/src/main/native/gst-build/gstreamer_android.o create mode 100644 commons/src/main/native/src/com/gst_sdk/GStreamer.java create mode 100644 commons/src/main/native/transcode.c delete mode 100644 ic_launcher-web.png delete mode 100644 libs/ActionBarSherlock/.classpath delete mode 100644 libs/ActionBarSherlock/.project delete mode 100755 libs/ActionBarSherlock/AndroidManifest.xml delete mode 100755 libs/ActionBarSherlock/README.md delete mode 100644 libs/ActionBarSherlock/build.xml delete mode 100755 libs/ActionBarSherlock/libs/android-support-v4.jar delete mode 100755 libs/ActionBarSherlock/pom.xml delete mode 100644 libs/ActionBarSherlock/proguard-project.txt delete mode 100755 libs/ActionBarSherlock/project.properties delete mode 100755 libs/ActionBarSherlock/res/color/abs__primary_text_disable_only_holo_dark.xml delete mode 100755 libs/ActionBarSherlock/res/color/abs__primary_text_disable_only_holo_light.xml delete mode 100755 libs/ActionBarSherlock/res/color/abs__primary_text_holo_dark.xml delete mode 100755 libs/ActionBarSherlock/res/color/abs__primary_text_holo_light.xml delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_bottom_solid_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_bottom_solid_inverse_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_bottom_solid_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_bottom_transparent_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_bottom_transparent_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_share_pack_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_share_pack_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_solid_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_solid_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_solid_shadow_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_stacked_solid_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_stacked_solid_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_stacked_transparent_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_stacked_transparent_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_transparent_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_transparent_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__btn_cab_done_default_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__btn_cab_done_default_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__btn_cab_done_focused_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__btn_cab_done_focused_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__btn_cab_done_pressed_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__btn_cab_done_pressed_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__cab_background_bottom_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__cab_background_bottom_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__cab_background_top_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__cab_background_top_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__dialog_full_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__dialog_full_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_ab_back_holo_dark.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_ab_back_holo_light.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_cab_done_holo_dark.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_cab_done_holo_light.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_menu_moreoverflow_normal_holo_dark.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_menu_moreoverflow_normal_holo_light.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_menu_share_holo_dark.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_menu_share_holo_light.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__list_activated_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__list_divider_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__list_divider_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__list_focused_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__list_longpressed_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__list_pressed_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__list_pressed_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__list_selector_disabled_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__list_selector_disabled_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__menu_dropdown_panel_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__menu_dropdown_panel_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__progress_bg_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__progress_bg_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__progress_primary_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__progress_primary_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__progress_secondary_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__progress_secondary_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_48_inner_holo.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_48_outer_holo.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_default_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_default_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_disabled_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_disabled_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_focused_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_focused_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_pressed_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_pressed_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__tab_selected_focused_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__tab_selected_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__tab_selected_pressed_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-hdpi/abs__tab_unselected_pressed_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_bottom_solid_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_bottom_solid_inverse_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_bottom_solid_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_bottom_transparent_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_bottom_transparent_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_share_pack_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_share_pack_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_solid_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_solid_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_solid_shadow_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_stacked_solid_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_stacked_solid_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_stacked_transparent_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_stacked_transparent_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_transparent_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_transparent_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_default_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_default_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_focused_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_focused_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_pressed_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_pressed_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__cab_background_bottom_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__cab_background_bottom_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__cab_background_top_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__cab_background_top_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__dialog_full_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__dialog_full_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_ab_back_holo_dark.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_ab_back_holo_light.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_cab_done_holo_dark.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_cab_done_holo_light.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_menu_moreoverflow_normal_holo_dark.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_menu_moreoverflow_normal_holo_light.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_menu_share_holo_dark.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_menu_share_holo_light.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__list_activated_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__list_divider_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__list_divider_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__list_focused_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__list_longpressed_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__list_pressed_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__list_pressed_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__list_selector_disabled_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__list_selector_disabled_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__menu_dropdown_panel_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__menu_dropdown_panel_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__progress_bg_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__progress_bg_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__progress_primary_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__progress_primary_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__progress_secondary_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__progress_secondary_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_48_inner_holo.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_48_outer_holo.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_default_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_default_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_disabled_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_disabled_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_focused_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_focused_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_pressed_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_pressed_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__tab_selected_focused_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__tab_selected_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__tab_selected_pressed_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-mdpi/abs__tab_unselected_pressed_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-v11/abs__progress_medium_holo.xml delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_bottom_solid_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_bottom_solid_inverse_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_bottom_solid_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_bottom_transparent_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_bottom_transparent_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_share_pack_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_share_pack_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_solid_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_solid_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_solid_shadow_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_stacked_solid_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_stacked_solid_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_stacked_transparent_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_stacked_transparent_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_transparent_dark_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_transparent_light_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__btn_cab_done_default_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__btn_cab_done_default_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__btn_cab_done_focused_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__btn_cab_done_focused_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__btn_cab_done_pressed_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__btn_cab_done_pressed_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__cab_background_bottom_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__cab_background_bottom_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__cab_background_top_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__cab_background_top_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_full_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_full_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_ab_back_holo_dark.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_ab_back_holo_light.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_cab_done_holo_dark.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_cab_done_holo_light.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_menu_moreoverflow_normal_holo_dark.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_menu_moreoverflow_normal_holo_light.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_menu_share_holo_dark.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_menu_share_holo_light.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_activated_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_divider_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_divider_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_focused_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_longpressed_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_pressed_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_pressed_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_selector_disabled_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_selector_disabled_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__menu_dropdown_panel_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__menu_dropdown_panel_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__progress_bg_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__progress_bg_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__progress_primary_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__progress_primary_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__progress_secondary_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__progress_secondary_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_48_inner_holo.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_48_outer_holo.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_default_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_default_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_disabled_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_disabled_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_focused_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_focused_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_pressed_holo_dark.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_pressed_holo_light.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_selected_focused_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_selected_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_selected_pressed_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_unselected_pressed_holo.9.png delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__activated_background_holo_dark.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__activated_background_holo_light.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__btn_cab_done_holo_dark.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__btn_cab_done_holo_light.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__ic_menu_moreoverflow_holo_dark.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__ic_menu_moreoverflow_holo_light.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__item_background_holo_dark.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__item_background_holo_light.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__list_selector_background_transition_holo_dark.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__list_selector_background_transition_holo_light.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__list_selector_holo_dark.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__list_selector_holo_light.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__progress_horizontal_holo_dark.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__progress_horizontal_holo_light.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__progress_medium_holo.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__spinner_ab_holo_dark.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__spinner_ab_holo_light.xml delete mode 100755 libs/ActionBarSherlock/res/drawable/abs__tab_indicator_ab_holo.xml delete mode 100755 libs/ActionBarSherlock/res/layout-large/abs__action_mode_close_item.xml delete mode 100755 libs/ActionBarSherlock/res/layout-v14/sherlock_spinner_dropdown_item.xml delete mode 100755 libs/ActionBarSherlock/res/layout-v14/sherlock_spinner_item.xml delete mode 100755 libs/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar.xml delete mode 100755 libs/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar_overlay.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__action_bar_home.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__action_bar_tab.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__action_bar_tab_bar_view.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__action_bar_title_item.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__action_menu_item_layout.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__action_menu_layout.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__action_mode_bar.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__action_mode_close_item.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__activity_chooser_view.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__activity_chooser_view_list_item.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__dialog_title_holo.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__list_menu_item_checkbox.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__list_menu_item_icon.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__list_menu_item_layout.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__list_menu_item_radio.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__popup_menu_item_layout.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__screen_action_bar.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__screen_action_bar_overlay.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__screen_simple.xml delete mode 100755 libs/ActionBarSherlock/res/layout/abs__screen_simple_overlay_action_mode.xml delete mode 100755 libs/ActionBarSherlock/res/layout/sherlock_spinner_dropdown_item.xml delete mode 100755 libs/ActionBarSherlock/res/layout/sherlock_spinner_item.xml delete mode 100755 libs/ActionBarSherlock/res/values-land/abs__dimens.xml delete mode 100755 libs/ActionBarSherlock/res/values-large-hdpi-1024x600/abs__dimens.xml delete mode 100755 libs/ActionBarSherlock/res/values-large-land-hdpi-1024x600/abs__dimens.xml delete mode 100755 libs/ActionBarSherlock/res/values-large-land-mdpi-1024x600/abs__dimens.xml delete mode 100755 libs/ActionBarSherlock/res/values-large-mdpi-1024x600/abs__dimens.xml delete mode 100755 libs/ActionBarSherlock/res/values-large/abs__dimens.xml delete mode 100755 libs/ActionBarSherlock/res/values-sw600dp/abs__bools.xml delete mode 100755 libs/ActionBarSherlock/res/values-sw600dp/abs__dimens.xml delete mode 100755 libs/ActionBarSherlock/res/values-v11/abs__themes.xml delete mode 100755 libs/ActionBarSherlock/res/values-v14/abs__styles.xml delete mode 100755 libs/ActionBarSherlock/res/values-v14/abs__themes.xml delete mode 100755 libs/ActionBarSherlock/res/values-w360dp/abs__dimens.xml delete mode 100755 libs/ActionBarSherlock/res/values-w480dp/abs__bools.xml delete mode 100755 libs/ActionBarSherlock/res/values-w480dp/abs__config.xml delete mode 100755 libs/ActionBarSherlock/res/values-w500dp/abs__dimens.xml delete mode 100755 libs/ActionBarSherlock/res/values-w600dp/abs__dimens.xml delete mode 100755 libs/ActionBarSherlock/res/values-xlarge/abs__dimens.xml delete mode 100755 libs/ActionBarSherlock/res/values/abs__attrs.xml delete mode 100755 libs/ActionBarSherlock/res/values/abs__bools.xml delete mode 100755 libs/ActionBarSherlock/res/values/abs__colors.xml delete mode 100755 libs/ActionBarSherlock/res/values/abs__config.xml delete mode 100755 libs/ActionBarSherlock/res/values/abs__dimens.xml delete mode 100755 libs/ActionBarSherlock/res/values/abs__ids.xml delete mode 100755 libs/ActionBarSherlock/res/values/abs__strings.xml delete mode 100755 libs/ActionBarSherlock/res/values/abs__styles.xml delete mode 100755 libs/ActionBarSherlock/res/values/abs__themes.xml delete mode 100755 libs/ActionBarSherlock/src/android/support/v4/app/_ActionBarSherlockTrojanHorse.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/ActionBarSherlock.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/app/ActionBar.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockActivity.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockDialogFragment.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockExpandableListActivity.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragment.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragmentActivity.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListActivity.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListFragment.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockPreferenceActivity.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockNative.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ResourcesCompat.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarImpl.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarWrapper.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/Animator.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/AnimatorListenerAdapter.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/AnimatorSet.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/FloatEvaluator.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/FloatKeyframeSet.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/IntEvaluator.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/IntKeyframeSet.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/Keyframe.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/KeyframeSet.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/ObjectAnimator.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/PropertyValuesHolder.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/TypeEvaluator.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/ValueAnimator.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/view/NineViewGroup.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/view/animation/AnimatorProxy.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineHorizontalScrollView.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineLinearLayout.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/ActionProviderWrapper.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/StandaloneActionMode.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/View_HasStateListenerSupport.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/View_OnAttachStateChangeListener.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenu.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuItem.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuItemView.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuPresenter.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuView.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/BaseMenuPresenter.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ListMenuItemView.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuBuilder.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuItemImpl.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuItemWrapper.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuPopupHelper.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuPresenter.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuView.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuWrapper.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/SubMenuBuilder.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/SubMenuWrapper.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/AbsActionBarView.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContextView.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarView.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingButton.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingTextView.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/FakeDialogPhoneWindow.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsAbsSpinner.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsAdapterView.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsLinearLayout.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsListPopupWindow.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsProgressBar.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsSpinner.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsView.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/view/ActionMode.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/view/ActionProvider.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/view/CollapsibleActionView.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/view/Menu.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/view/MenuInflater.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/view/MenuItem.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/view/SubMenu.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/view/Window.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserModel.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserView.java delete mode 100755 libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ShareActionProvider.java delete mode 100755 libs/ActionBarSherlock/test/com/actionbarsherlock/internal/ManifestParsingTest.java delete mode 100644 libs/commons-logging-1.1.1.jar delete mode 100644 libs/httpclient-4.2.1.jar delete mode 100644 libs/httpcore-4.2.1.jar delete mode 100644 libs/httpmime-4.2.1.jar delete mode 100644 libs/java-mwapi.jar create mode 100644 pom.xml delete mode 100644 project.properties delete mode 100644 src/org/wikimedia/commons/Transcoder.java diff --git a/.gitignore b/.gitignore deleted file mode 100644 index d3f5d3e18..000000000 --- a/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -# built application files -*.apk -*.ap_ - -# files for the dex VM -*.dex - -# Java class files -*.class - -# generated files -bin/ -gen/ - -# Local configuration file (sdk path, etc) -local.properties diff --git a/.project b/.project deleted file mode 100644 index c4871c706..000000000 --- a/.project +++ /dev/null @@ -1,35 +0,0 @@ - - - commons - - - ActionBarSherlock - java-mwapi - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/commons-it/AndroidManifest.xml b/commons-it/AndroidManifest.xml new file mode 100644 index 000000000..969c3db34 --- /dev/null +++ b/commons-it/AndroidManifest.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/commons-it/commons-it.iml b/commons-it/commons-it.iml new file mode 100644 index 000000000..b3f58fce4 --- /dev/null +++ b/commons-it/commons-it.iml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/commons-it/pom.xml b/commons-it/pom.xml new file mode 100644 index 000000000..3e6d44437 --- /dev/null +++ b/commons-it/pom.xml @@ -0,0 +1,102 @@ + + + 4.0.0 + + + org.wikimedia + commons-parent + 1.0-SNAPSHOT + + + org.wikimedia + commons-it + 1.0-SNAPSHOT + apk + commons-it - Integration tests + + + + + + + + + android + android + + + com.google.android + android-test + 4.0.1.2 + + + org.wikimedia + commons + apk + 1.0-SNAPSHOT + ${zipaligned-classifier} + + + org.wikimedia + commons + jar + 1.0-SNAPSHOT + + + junit + junit + + + + + + + com.jayway.maven.plugins.android.generation2 + android-maven-plugin + true + + + + + + + release + + + aligned + + + + + maven-jarsigner-plugin + + + sign-application-it-apk + package + + sign + + + + + + com.jayway.maven.plugins.android.generation2 + android-maven-plugin + + + false + + + + + + + + + diff --git a/commons-it/res/drawable-hdpi/icon.png b/commons-it/res/drawable-hdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8074c4c571b8cd19e27f4ee5545df367420686d7 GIT binary patch literal 4147 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 literal 0 HcmV?d00001 diff --git a/commons-it/res/drawable-ldpi/icon.png b/commons-it/res/drawable-ldpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1095584ec21f71cd0afc9e0993aa2209671b590c GIT binary patch literal 1723 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 + + + diff --git a/commons-it/res/values/strings.xml b/commons-it/res/values/strings.xml new file mode 100644 index 000000000..16f599307 --- /dev/null +++ b/commons-it/res/values/strings.xml @@ -0,0 +1,5 @@ + + + Hello commons-it! + commons-it - tests + diff --git a/commons-parent.iml b/commons-parent.iml new file mode 100644 index 000000000..87e527b00 --- /dev/null +++ b/commons-parent.iml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/AndroidManifest.xml b/commons/AndroidManifest.xml similarity index 100% rename from AndroidManifest.xml rename to commons/AndroidManifest.xml diff --git a/commons/androlog/androlog.properties b/commons/androlog/androlog.properties new file mode 100644 index 000000000..1af13ae16 --- /dev/null +++ b/commons/androlog/androlog.properties @@ -0,0 +1,19 @@ +# Androlog configuration +# this file must be pushed to /sdcard/androlog.properties: +# adb push androlog.properties /sdcard/androlog.properties +# more detail on: https://github.com/akquinet/androlog/wiki/Androlog-configuration +androlog.active = true + +#Configure the default log level: +#androlog.default.level=INFO + +#Configure specific loggers + +#Enable the reporting +#More info on: https://github.com/akquinet/androlog/wiki/Androlog-reporting +#androlog.report.active=true +#androlog.report.reporters=de.akquinet.android.androlog.reporter.MailReporter +#androlog.reporter.mail.address=me@my.company.com +#androlog.report.default.level=WARN +#androlog.report.log.items=40 +#androlog.report.trigger.level=ERROR \ No newline at end of file diff --git a/commons/assets/fontconfig/fonts.conf b/commons/assets/fontconfig/fonts.conf new file mode 100644 index 000000000..445d8ce5d --- /dev/null +++ b/commons/assets/fontconfig/fonts.conf @@ -0,0 +1,126 @@ + + + + + + + + fontconfig/fonts + + + + fontconfig + + + + + mono + + + monospace + + + + + + + sans serif + + + sans-serif + + + + + + + sans + + + sans-serif + + + + + + + 0x0020 + 0x00A0 + 0x00AD + 0x034F + 0x0600 + 0x0601 + 0x0602 + 0x0603 + 0x06DD + 0x070F + 0x115F + 0x1160 + 0x1680 + 0x17B4 + 0x17B5 + 0x180E + 0x2000 + 0x2001 + 0x2002 + 0x2003 + 0x2004 + 0x2005 + 0x2006 + 0x2007 + 0x2008 + 0x2009 + 0x200A + 0x200B + 0x200C + 0x200D + 0x200E + 0x200F + 0x2028 + 0x2029 + 0x202A + 0x202B + 0x202C + 0x202D + 0x202E + 0x202F + 0x205F + 0x2060 + 0x2061 + 0x2062 + 0x2063 + 0x206A + 0x206B + 0x206C + 0x206D + 0x206E + 0x206F + 0x2800 + 0x3000 + 0x3164 + 0xFEFF + 0xFFA0 + 0xFFF9 + 0xFFFA + 0xFFFB + + + + 30 + + + + + diff --git a/commons/assets/fontconfig/fonts/truetype/Ubuntu-R.ttf b/commons/assets/fontconfig/fonts/truetype/Ubuntu-R.ttf new file mode 100644 index 0000000000000000000000000000000000000000..45a038bade527cbbf30f197c5a116be3cfb2f0a3 GIT binary patch literal 353824 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 z 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 literal 0 HcmV?d00001 diff --git a/commons/commons.iml b/commons/commons.iml new file mode 100644 index 000000000..611190839 --- /dev/null +++ b/commons/commons.iml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/commons/default.properties b/commons/default.properties new file mode 100644 index 000000000..829ab8897 --- /dev/null +++ b/commons/default.properties @@ -0,0 +1,3 @@ +# File used by Eclipse to determine the target system +# Project target. +target=android-15 \ No newline at end of file diff --git a/jni/Android.mk b/commons/jni/Android.mk similarity index 100% rename from jni/Android.mk rename to commons/jni/Android.mk diff --git a/jni/README.gst-sdk b/commons/jni/README.gst-sdk similarity index 100% rename from jni/README.gst-sdk rename to commons/jni/README.gst-sdk diff --git a/commons/jni/gst-build/gstreamer_android.c b/commons/jni/gst-build/gstreamer_android.c new file mode 100644 index 000000000..c9d4a7322 --- /dev/null +++ b/commons/jni/gst-build/gstreamer_android.c @@ -0,0 +1,308 @@ +#include +#include +#include +#include + +#define CAT_FMT "%s:%d:%s" + +static GstClockTime _priv_gst_info_start_time; + +/* Declaration of static plugins */ + GST_PLUGIN_STATIC_DECLARE(coreelements); + GST_PLUGIN_STATIC_DECLARE(coreindexers); + GST_PLUGIN_STATIC_DECLARE(adder); + GST_PLUGIN_STATIC_DECLARE(app); + GST_PLUGIN_STATIC_DECLARE(audioconvert); + GST_PLUGIN_STATIC_DECLARE(audiorate); + GST_PLUGIN_STATIC_DECLARE(audioresample); + GST_PLUGIN_STATIC_DECLARE(audiotestsrc); + GST_PLUGIN_STATIC_DECLARE(ffmpegcolorspace); + GST_PLUGIN_STATIC_DECLARE(gdp); + GST_PLUGIN_STATIC_DECLARE(gio); + GST_PLUGIN_STATIC_DECLARE(pango); + GST_PLUGIN_STATIC_DECLARE(typefindfunctions); + GST_PLUGIN_STATIC_DECLARE(videorate); + GST_PLUGIN_STATIC_DECLARE(videoscale); + GST_PLUGIN_STATIC_DECLARE(videotestsrc); + GST_PLUGIN_STATIC_DECLARE(volume); + GST_PLUGIN_STATIC_DECLARE(autodetect); + GST_PLUGIN_STATIC_DECLARE(videofilter); + GST_PLUGIN_STATIC_DECLARE(uridecodebin); + GST_PLUGIN_STATIC_DECLARE(playback); + GST_PLUGIN_STATIC_DECLARE(debug); + GST_PLUGIN_STATIC_DECLARE(audioparsers); + GST_PLUGIN_STATIC_DECLARE(id3demux); + GST_PLUGIN_STATIC_DECLARE(isomp4); + GST_PLUGIN_STATIC_DECLARE(ogg); + GST_PLUGIN_STATIC_DECLARE(vorbis); + GST_PLUGIN_STATIC_DECLARE(wavparse); + GST_PLUGIN_STATIC_DECLARE(amrnb); + GST_PLUGIN_STATIC_DECLARE(amrwbdec); + GST_PLUGIN_STATIC_DECLARE(faad); + GST_PLUGIN_STATIC_DECLARE(mad); + GST_PLUGIN_STATIC_DECLARE(mpegaudioparse); + + +/* Declaration of static gio modules */ + + +/* Call this function to register static plugins */ +void +gst_android_register_static_plugins (void) +{ + GST_PLUGIN_STATIC_REGISTER(coreelements); + GST_PLUGIN_STATIC_REGISTER(coreindexers); + GST_PLUGIN_STATIC_REGISTER(adder); + GST_PLUGIN_STATIC_REGISTER(app); + GST_PLUGIN_STATIC_REGISTER(audioconvert); + GST_PLUGIN_STATIC_REGISTER(audiorate); + GST_PLUGIN_STATIC_REGISTER(audioresample); + GST_PLUGIN_STATIC_REGISTER(audiotestsrc); + GST_PLUGIN_STATIC_REGISTER(ffmpegcolorspace); + GST_PLUGIN_STATIC_REGISTER(gdp); + GST_PLUGIN_STATIC_REGISTER(gio); + GST_PLUGIN_STATIC_REGISTER(pango); + GST_PLUGIN_STATIC_REGISTER(typefindfunctions); + GST_PLUGIN_STATIC_REGISTER(videorate); + GST_PLUGIN_STATIC_REGISTER(videoscale); + GST_PLUGIN_STATIC_REGISTER(videotestsrc); + GST_PLUGIN_STATIC_REGISTER(volume); + GST_PLUGIN_STATIC_REGISTER(autodetect); + GST_PLUGIN_STATIC_REGISTER(videofilter); + GST_PLUGIN_STATIC_REGISTER(uridecodebin); + GST_PLUGIN_STATIC_REGISTER(playback); + GST_PLUGIN_STATIC_REGISTER(debug); + GST_PLUGIN_STATIC_REGISTER(audioparsers); + GST_PLUGIN_STATIC_REGISTER(id3demux); + GST_PLUGIN_STATIC_REGISTER(isomp4); + GST_PLUGIN_STATIC_REGISTER(ogg); + GST_PLUGIN_STATIC_REGISTER(vorbis); + GST_PLUGIN_STATIC_REGISTER(wavparse); + GST_PLUGIN_STATIC_REGISTER(amrnb); + GST_PLUGIN_STATIC_REGISTER(amrwbdec); + GST_PLUGIN_STATIC_REGISTER(faad); + GST_PLUGIN_STATIC_REGISTER(mad); + GST_PLUGIN_STATIC_REGISTER(mpegaudioparse); + +} + +/* Call this function to load GIO modules */ +void +gst_android_load_gio_modules (void) +{ + +} + +void +gst_debug_logcat (GstDebugCategory * category, GstDebugLevel level, + const gchar * file, const gchar * function, gint line, + GObject * object, GstDebugMessage * message, gpointer unused) +{ + GstClockTime elapsed; + gint android_log_level; + gchar *tag; + + if (level > gst_debug_category_get_threshold (category)) + return; + + elapsed = GST_CLOCK_DIFF (_priv_gst_info_start_time, + gst_util_get_timestamp ()); + + switch (level) { + case GST_LEVEL_ERROR: + android_log_level = ANDROID_LOG_ERROR; + break; + case GST_LEVEL_WARNING: + android_log_level = ANDROID_LOG_WARN; + break; + case GST_LEVEL_INFO: + android_log_level = ANDROID_LOG_INFO; + break; + case GST_LEVEL_DEBUG: + android_log_level = ANDROID_LOG_DEBUG; + break; + default: + android_log_level = ANDROID_LOG_VERBOSE; + break; + } + + tag = g_strdup_printf ("GStreamer+%s", + gst_debug_category_get_name (category)); + __android_log_print (android_log_level, tag, + "%" GST_TIME_FORMAT " " CAT_FMT " %s\n", GST_TIME_ARGS (elapsed), + file, line, function, gst_debug_message_get (message)); + g_free (tag); +} + +static gboolean +get_application_dirs (JNIEnv * env, jobject context, gchar ** cache_dir, + gchar ** files_dir) +{ + jclass context_class; + jmethodID get_cache_dir_id, get_files_dir_id; + jclass file_class; + jmethodID get_absolute_path_id; + jobject dir; + jstring abs_path; + const gchar *abs_path_str; + + *cache_dir = *files_dir = NULL; + + context_class = (*env)->GetObjectClass (env, context); + if (!context_class) { + return FALSE; + } + get_cache_dir_id = + (*env)->GetMethodID (env, context_class, "getCacheDir", + "()Ljava/io/File;"); + get_files_dir_id = + (*env)->GetMethodID (env, context_class, "getFilesDir", + "()Ljava/io/File;"); + if (!get_cache_dir_id || !get_files_dir_id) { + return FALSE; + } + + file_class = (*env)->FindClass (env, "java/io/File"); + get_absolute_path_id = + (*env)->GetMethodID (env, file_class, "getAbsolutePath", + "()Ljava/lang/String;"); + if (!get_absolute_path_id) { + return FALSE; + } + + dir = (*env)->CallObjectMethod (env, context, get_cache_dir_id); + if ((*env)->ExceptionCheck (env)) { + return FALSE; + } + + if (dir) { + abs_path = (*env)->CallObjectMethod (env, dir, get_absolute_path_id); + if ((*env)->ExceptionCheck (env)) { + return FALSE; + } + abs_path_str = (*env)->GetStringUTFChars (env, abs_path, NULL); + if ((*env)->ExceptionCheck (env)) { + return FALSE; + } + *cache_dir = abs_path ? g_strdup (abs_path_str) : NULL; + + (*env)->ReleaseStringUTFChars (env, abs_path, abs_path_str); + (*env)->DeleteLocalRef (env, abs_path); + (*env)->DeleteLocalRef (env, dir); + } + + dir = (*env)->CallObjectMethod (env, context, get_files_dir_id); + if ((*env)->ExceptionCheck (env)) { + return FALSE; + } + if (dir) { + abs_path = (*env)->CallObjectMethod (env, dir, get_absolute_path_id); + if ((*env)->ExceptionCheck (env)) { + return FALSE; + } + abs_path_str = (*env)->GetStringUTFChars (env, abs_path, NULL); + if ((*env)->ExceptionCheck (env)) { + return FALSE; + } + *files_dir = files_dir ? g_strdup (abs_path_str) : NULL; + + (*env)->ReleaseStringUTFChars (env, abs_path, abs_path_str); + (*env)->DeleteLocalRef (env, abs_path); + (*env)->DeleteLocalRef (env, dir); + } + + (*env)->DeleteLocalRef (env, file_class); + (*env)->DeleteLocalRef (env, context_class); + + return TRUE; +} + +static void +gst_android_init (JNIEnv * env, jclass klass, jobject context) +{ + gchar *cache_dir; + gchar *files_dir; + gchar *registry; + GError *error = NULL; + + if (gst_is_initialized ()) { + __android_log_print (ANDROID_LOG_INFO, "GStreamer", + "GStreamer already initialized"); + return; + } + + if (!get_application_dirs (env, context, &cache_dir, &files_dir)) + return; + + if (cache_dir) { + g_setenv ("TMP", cache_dir, TRUE); + g_setenv ("TMPDIR", cache_dir, TRUE); + g_setenv ("XDG_RUNTIME_DIR", cache_dir, TRUE); + g_setenv ("XDG_CACHE_DIR", cache_dir, TRUE); + registry = g_build_filename (cache_dir, "registry.bin", NULL); + g_setenv ("GST_REGISTRY", registry, TRUE); + g_free (registry); + g_setenv ("GST_REUSE_PLUGIN_SCANNER", "no", TRUE); + /* FIXME: Should probably also set GST_PLUGIN_SCANNER and GST_PLUGIN_SYSTEM_PATH */ + } + if (files_dir) { + g_setenv ("HOME", files_dir, TRUE); + g_setenv ("XDG_DATA_DIRS", files_dir, TRUE); + g_setenv ("XDG_CONFIG_DIRS", files_dir, TRUE); + } + g_free (cache_dir); + g_free (files_dir); + + /* Disable this for releases if performance is important + * or increase the threshold to get more information */ + gst_debug_set_active (TRUE); + gst_debug_set_default_threshold (GST_LEVEL_WARNING); + gst_debug_remove_log_function (gst_debug_log_default); + gst_debug_add_log_function ((GstLogFunction) gst_debug_logcat, NULL); + /* get time we started for debugging messages */ + _priv_gst_info_start_time = gst_util_get_timestamp (); + + if (!gst_init_check (NULL, NULL, &error)) { + gchar *message = g_strdup_printf ("GStreamer initialization failed: %s", + error && error->message ? error->message : "(no message)"); + jclass exception_class = (*env)->FindClass (env, "java/lang/Exception"); + __android_log_print (ANDROID_LOG_ERROR, "GStreamer", message); + (*env)->ThrowNew (env, exception_class, message); + g_free (message); + return; + } + gst_android_register_static_plugins (); + gst_android_load_gio_modules(); + __android_log_print (ANDROID_LOG_INFO, "GStreamer", + "GStreamer initialization complete"); +} + +static JNINativeMethod native_methods[] = { + {"init", "(Landroid/content/Context;)V", (void *) gst_android_init} +}; + +jint +JNI_OnLoad (JavaVM * vm, void *reserved) +{ + JNIEnv *env = NULL; + + if ((*vm)->GetEnv (vm, (void **) &env, JNI_VERSION_1_4) != JNI_OK) { + __android_log_print (ANDROID_LOG_ERROR, "GStreamer", + "Could not retrieve JNIEnv"); + return 0; + } + jclass klass = (*env)->FindClass (env, "com/gst_sdk/GStreamer"); + if (!klass) { + __android_log_print (ANDROID_LOG_ERROR, "GStreamer", + "Could not retrieve class com.gst_sdk.GStreamer"); + return 0; + } + if ((*env)->RegisterNatives (env, klass, native_methods, + G_N_ELEMENTS (native_methods))) { + __android_log_print (ANDROID_LOG_ERROR, "GStreamer", + "Could not register native methods for com.gst_sdk_GStreamer"); + return 0; + } + + return JNI_VERSION_1_4; +} diff --git a/commons/jni/gst-build/gstreamer_android.o b/commons/jni/gst-build/gstreamer_android.o new file mode 100644 index 0000000000000000000000000000000000000000..85be70ec747c67557c7b48b6834e3ab47635107e GIT binary patch literal 8188 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 literal 0 HcmV?d00001 diff --git a/commons/jni/src/com/gst_sdk/GStreamer.java b/commons/jni/src/com/gst_sdk/GStreamer.java new file mode 100644 index 000000000..72354f0eb --- /dev/null +++ b/commons/jni/src/com/gst_sdk/GStreamer.java @@ -0,0 +1,7 @@ +package com.gst_sdk; + +import android.content.Context; + +public class GStreamer { + public static native void init(Context context) throws Exception; +} diff --git a/jni/transcode.c b/commons/jni/transcode.c similarity index 100% rename from jni/transcode.c rename to commons/jni/transcode.c diff --git a/commons/pom.xml b/commons/pom.xml new file mode 100644 index 000000000..259b52f89 --- /dev/null +++ b/commons/pom.xml @@ -0,0 +1,182 @@ + + + 4.0.0 + + + org.wikimedia + commons-parent + 1.0-SNAPSHOT + + + org.wikimedia + commons + 1.0-SNAPSHOT + apk + commons - Application + + + + org.mediawiki + api + 1.0 + + + com.actionbarsherlock + actionbarsherlock + 4.2.0 + apklib + + + android + android + + + de.akquinet.android.androlog + androlog + + + + + + + com.jayway.maven.plugins.android.generation2 + android-maven-plugin + true + + + + + + + + + release + + + + com.pyx4me + proguard-maven-plugin + + + process-classes-with-proguard + process-classes + + proguard + + + 4.4 + 256m + android-classes + + ${rt.jar.path} + ${jsse.jar.path} + + true + false + ${project.basedir}/proguard.conf + + + + + + net.sf.proguard + proguard + 4.4 + runtime + + + + + maven-jarsigner-plugin + + + sign-application-apk + package + + sign + verify + + + + + + com.jayway.maven.plugins.android.generation2 + android-maven-plugin + + + zipalign-application-apk + package + + zipalign + + + + + + true + ${project.build.directory}/${project.artifactId}-${project.version}.apk + ${project.build.directory}/${project.artifactId}-${project.version}-signed-aligned.apk + + + false + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + + ${project.build.directory}/proguard_map.txt + map + release + + + + + + attach-signed-aligned + package + + attach-artifact + + + + + + + + + + diff --git a/res/drawable-hdpi/commons_logo_large.png b/commons/res/drawable-hdpi/commons_logo_large.png similarity index 100% rename from res/drawable-hdpi/commons_logo_large.png rename to commons/res/drawable-hdpi/commons_logo_large.png diff --git a/res/drawable-hdpi/ic_action_search.png b/commons/res/drawable-hdpi/ic_action_search.png similarity index 100% rename from res/drawable-hdpi/ic_action_search.png rename to commons/res/drawable-hdpi/ic_action_search.png diff --git a/res/drawable-hdpi/ic_launcher.png b/commons/res/drawable-hdpi/ic_launcher.png similarity index 100% rename from res/drawable-hdpi/ic_launcher.png rename to commons/res/drawable-hdpi/ic_launcher.png diff --git a/commons/res/drawable-hdpi/icon.png b/commons/res/drawable-hdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..afc1a0ef3a0f27f5338e3d55e1930858131e59eb GIT binary patch literal 6094 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 Ef|y}hxc~qF literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/ic_action_search.png b/commons/res/drawable-mdpi/ic_action_search.png similarity index 100% rename from res/drawable-mdpi/ic_action_search.png rename to commons/res/drawable-mdpi/ic_action_search.png diff --git a/res/drawable-mdpi/ic_launcher.png b/commons/res/drawable-mdpi/ic_launcher.png similarity index 100% rename from res/drawable-mdpi/ic_launcher.png rename to commons/res/drawable-mdpi/ic_launcher.png diff --git a/commons/res/drawable-mdpi/icon.png b/commons/res/drawable-mdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7e079bb2911887e1a9413dbf89a11034c6d1fa63 GIT binary patch literal 3720 zcmV;34tMd1P)4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_01H4#L_t(& z1;tuhY@Edv{`S6JuXp2he2s~T?T|RO5|aV}l28W`st}M!1VJiN)hF7j0{T!|^{rB? zwlA$zRH+pYZ66{EDX0PoQ9vYyVA3Q|$FXy99LGuQ*zrBS?s{*3zi-y-t}jh&NVZ2h zp8ubjf95-vIWv34Hp{Y*Nj4JS#r6fI>as}!CQfFS#5)hLP4Bay1x}zHvn;?avXiWO zaW=^SU$bV7b?w@<7$+7dW?5~JFal?&p`pRi*x0D�xLHQ1bH2FQ1@bA-$_oB;zbl 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 mTiQ><$rK`O5n/ndk-build +* Continue building as usual diff --git a/commons/src/main/native/gst-build/gstreamer_android.c b/commons/src/main/native/gst-build/gstreamer_android.c new file mode 100644 index 000000000..c9d4a7322 --- /dev/null +++ b/commons/src/main/native/gst-build/gstreamer_android.c @@ -0,0 +1,308 @@ +#include +#include +#include +#include + +#define CAT_FMT "%s:%d:%s" + +static GstClockTime _priv_gst_info_start_time; + +/* Declaration of static plugins */ + GST_PLUGIN_STATIC_DECLARE(coreelements); + GST_PLUGIN_STATIC_DECLARE(coreindexers); + GST_PLUGIN_STATIC_DECLARE(adder); + GST_PLUGIN_STATIC_DECLARE(app); + GST_PLUGIN_STATIC_DECLARE(audioconvert); + GST_PLUGIN_STATIC_DECLARE(audiorate); + GST_PLUGIN_STATIC_DECLARE(audioresample); + GST_PLUGIN_STATIC_DECLARE(audiotestsrc); + GST_PLUGIN_STATIC_DECLARE(ffmpegcolorspace); + GST_PLUGIN_STATIC_DECLARE(gdp); + GST_PLUGIN_STATIC_DECLARE(gio); + GST_PLUGIN_STATIC_DECLARE(pango); + GST_PLUGIN_STATIC_DECLARE(typefindfunctions); + GST_PLUGIN_STATIC_DECLARE(videorate); + GST_PLUGIN_STATIC_DECLARE(videoscale); + GST_PLUGIN_STATIC_DECLARE(videotestsrc); + GST_PLUGIN_STATIC_DECLARE(volume); + GST_PLUGIN_STATIC_DECLARE(autodetect); + GST_PLUGIN_STATIC_DECLARE(videofilter); + GST_PLUGIN_STATIC_DECLARE(uridecodebin); + GST_PLUGIN_STATIC_DECLARE(playback); + GST_PLUGIN_STATIC_DECLARE(debug); + GST_PLUGIN_STATIC_DECLARE(audioparsers); + GST_PLUGIN_STATIC_DECLARE(id3demux); + GST_PLUGIN_STATIC_DECLARE(isomp4); + GST_PLUGIN_STATIC_DECLARE(ogg); + GST_PLUGIN_STATIC_DECLARE(vorbis); + GST_PLUGIN_STATIC_DECLARE(wavparse); + GST_PLUGIN_STATIC_DECLARE(amrnb); + GST_PLUGIN_STATIC_DECLARE(amrwbdec); + GST_PLUGIN_STATIC_DECLARE(faad); + GST_PLUGIN_STATIC_DECLARE(mad); + GST_PLUGIN_STATIC_DECLARE(mpegaudioparse); + + +/* Declaration of static gio modules */ + + +/* Call this function to register static plugins */ +void +gst_android_register_static_plugins (void) +{ + GST_PLUGIN_STATIC_REGISTER(coreelements); + GST_PLUGIN_STATIC_REGISTER(coreindexers); + GST_PLUGIN_STATIC_REGISTER(adder); + GST_PLUGIN_STATIC_REGISTER(app); + GST_PLUGIN_STATIC_REGISTER(audioconvert); + GST_PLUGIN_STATIC_REGISTER(audiorate); + GST_PLUGIN_STATIC_REGISTER(audioresample); + GST_PLUGIN_STATIC_REGISTER(audiotestsrc); + GST_PLUGIN_STATIC_REGISTER(ffmpegcolorspace); + GST_PLUGIN_STATIC_REGISTER(gdp); + GST_PLUGIN_STATIC_REGISTER(gio); + GST_PLUGIN_STATIC_REGISTER(pango); + GST_PLUGIN_STATIC_REGISTER(typefindfunctions); + GST_PLUGIN_STATIC_REGISTER(videorate); + GST_PLUGIN_STATIC_REGISTER(videoscale); + GST_PLUGIN_STATIC_REGISTER(videotestsrc); + GST_PLUGIN_STATIC_REGISTER(volume); + GST_PLUGIN_STATIC_REGISTER(autodetect); + GST_PLUGIN_STATIC_REGISTER(videofilter); + GST_PLUGIN_STATIC_REGISTER(uridecodebin); + GST_PLUGIN_STATIC_REGISTER(playback); + GST_PLUGIN_STATIC_REGISTER(debug); + GST_PLUGIN_STATIC_REGISTER(audioparsers); + GST_PLUGIN_STATIC_REGISTER(id3demux); + GST_PLUGIN_STATIC_REGISTER(isomp4); + GST_PLUGIN_STATIC_REGISTER(ogg); + GST_PLUGIN_STATIC_REGISTER(vorbis); + GST_PLUGIN_STATIC_REGISTER(wavparse); + GST_PLUGIN_STATIC_REGISTER(amrnb); + GST_PLUGIN_STATIC_REGISTER(amrwbdec); + GST_PLUGIN_STATIC_REGISTER(faad); + GST_PLUGIN_STATIC_REGISTER(mad); + GST_PLUGIN_STATIC_REGISTER(mpegaudioparse); + +} + +/* Call this function to load GIO modules */ +void +gst_android_load_gio_modules (void) +{ + +} + +void +gst_debug_logcat (GstDebugCategory * category, GstDebugLevel level, + const gchar * file, const gchar * function, gint line, + GObject * object, GstDebugMessage * message, gpointer unused) +{ + GstClockTime elapsed; + gint android_log_level; + gchar *tag; + + if (level > gst_debug_category_get_threshold (category)) + return; + + elapsed = GST_CLOCK_DIFF (_priv_gst_info_start_time, + gst_util_get_timestamp ()); + + switch (level) { + case GST_LEVEL_ERROR: + android_log_level = ANDROID_LOG_ERROR; + break; + case GST_LEVEL_WARNING: + android_log_level = ANDROID_LOG_WARN; + break; + case GST_LEVEL_INFO: + android_log_level = ANDROID_LOG_INFO; + break; + case GST_LEVEL_DEBUG: + android_log_level = ANDROID_LOG_DEBUG; + break; + default: + android_log_level = ANDROID_LOG_VERBOSE; + break; + } + + tag = g_strdup_printf ("GStreamer+%s", + gst_debug_category_get_name (category)); + __android_log_print (android_log_level, tag, + "%" GST_TIME_FORMAT " " CAT_FMT " %s\n", GST_TIME_ARGS (elapsed), + file, line, function, gst_debug_message_get (message)); + g_free (tag); +} + +static gboolean +get_application_dirs (JNIEnv * env, jobject context, gchar ** cache_dir, + gchar ** files_dir) +{ + jclass context_class; + jmethodID get_cache_dir_id, get_files_dir_id; + jclass file_class; + jmethodID get_absolute_path_id; + jobject dir; + jstring abs_path; + const gchar *abs_path_str; + + *cache_dir = *files_dir = NULL; + + context_class = (*env)->GetObjectClass (env, context); + if (!context_class) { + return FALSE; + } + get_cache_dir_id = + (*env)->GetMethodID (env, context_class, "getCacheDir", + "()Ljava/io/File;"); + get_files_dir_id = + (*env)->GetMethodID (env, context_class, "getFilesDir", + "()Ljava/io/File;"); + if (!get_cache_dir_id || !get_files_dir_id) { + return FALSE; + } + + file_class = (*env)->FindClass (env, "java/io/File"); + get_absolute_path_id = + (*env)->GetMethodID (env, file_class, "getAbsolutePath", + "()Ljava/lang/String;"); + if (!get_absolute_path_id) { + return FALSE; + } + + dir = (*env)->CallObjectMethod (env, context, get_cache_dir_id); + if ((*env)->ExceptionCheck (env)) { + return FALSE; + } + + if (dir) { + abs_path = (*env)->CallObjectMethod (env, dir, get_absolute_path_id); + if ((*env)->ExceptionCheck (env)) { + return FALSE; + } + abs_path_str = (*env)->GetStringUTFChars (env, abs_path, NULL); + if ((*env)->ExceptionCheck (env)) { + return FALSE; + } + *cache_dir = abs_path ? g_strdup (abs_path_str) : NULL; + + (*env)->ReleaseStringUTFChars (env, abs_path, abs_path_str); + (*env)->DeleteLocalRef (env, abs_path); + (*env)->DeleteLocalRef (env, dir); + } + + dir = (*env)->CallObjectMethod (env, context, get_files_dir_id); + if ((*env)->ExceptionCheck (env)) { + return FALSE; + } + if (dir) { + abs_path = (*env)->CallObjectMethod (env, dir, get_absolute_path_id); + if ((*env)->ExceptionCheck (env)) { + return FALSE; + } + abs_path_str = (*env)->GetStringUTFChars (env, abs_path, NULL); + if ((*env)->ExceptionCheck (env)) { + return FALSE; + } + *files_dir = files_dir ? g_strdup (abs_path_str) : NULL; + + (*env)->ReleaseStringUTFChars (env, abs_path, abs_path_str); + (*env)->DeleteLocalRef (env, abs_path); + (*env)->DeleteLocalRef (env, dir); + } + + (*env)->DeleteLocalRef (env, file_class); + (*env)->DeleteLocalRef (env, context_class); + + return TRUE; +} + +static void +gst_android_init (JNIEnv * env, jclass klass, jobject context) +{ + gchar *cache_dir; + gchar *files_dir; + gchar *registry; + GError *error = NULL; + + if (gst_is_initialized ()) { + __android_log_print (ANDROID_LOG_INFO, "GStreamer", + "GStreamer already initialized"); + return; + } + + if (!get_application_dirs (env, context, &cache_dir, &files_dir)) + return; + + if (cache_dir) { + g_setenv ("TMP", cache_dir, TRUE); + g_setenv ("TMPDIR", cache_dir, TRUE); + g_setenv ("XDG_RUNTIME_DIR", cache_dir, TRUE); + g_setenv ("XDG_CACHE_DIR", cache_dir, TRUE); + registry = g_build_filename (cache_dir, "registry.bin", NULL); + g_setenv ("GST_REGISTRY", registry, TRUE); + g_free (registry); + g_setenv ("GST_REUSE_PLUGIN_SCANNER", "no", TRUE); + /* FIXME: Should probably also set GST_PLUGIN_SCANNER and GST_PLUGIN_SYSTEM_PATH */ + } + if (files_dir) { + g_setenv ("HOME", files_dir, TRUE); + g_setenv ("XDG_DATA_DIRS", files_dir, TRUE); + g_setenv ("XDG_CONFIG_DIRS", files_dir, TRUE); + } + g_free (cache_dir); + g_free (files_dir); + + /* Disable this for releases if performance is important + * or increase the threshold to get more information */ + gst_debug_set_active (TRUE); + gst_debug_set_default_threshold (GST_LEVEL_WARNING); + gst_debug_remove_log_function (gst_debug_log_default); + gst_debug_add_log_function ((GstLogFunction) gst_debug_logcat, NULL); + /* get time we started for debugging messages */ + _priv_gst_info_start_time = gst_util_get_timestamp (); + + if (!gst_init_check (NULL, NULL, &error)) { + gchar *message = g_strdup_printf ("GStreamer initialization failed: %s", + error && error->message ? error->message : "(no message)"); + jclass exception_class = (*env)->FindClass (env, "java/lang/Exception"); + __android_log_print (ANDROID_LOG_ERROR, "GStreamer", message); + (*env)->ThrowNew (env, exception_class, message); + g_free (message); + return; + } + gst_android_register_static_plugins (); + gst_android_load_gio_modules(); + __android_log_print (ANDROID_LOG_INFO, "GStreamer", + "GStreamer initialization complete"); +} + +static JNINativeMethod native_methods[] = { + {"init", "(Landroid/content/Context;)V", (void *) gst_android_init} +}; + +jint +JNI_OnLoad (JavaVM * vm, void *reserved) +{ + JNIEnv *env = NULL; + + if ((*vm)->GetEnv (vm, (void **) &env, JNI_VERSION_1_4) != JNI_OK) { + __android_log_print (ANDROID_LOG_ERROR, "GStreamer", + "Could not retrieve JNIEnv"); + return 0; + } + jclass klass = (*env)->FindClass (env, "com/gst_sdk/GStreamer"); + if (!klass) { + __android_log_print (ANDROID_LOG_ERROR, "GStreamer", + "Could not retrieve class com.gst_sdk.GStreamer"); + return 0; + } + if ((*env)->RegisterNatives (env, klass, native_methods, + G_N_ELEMENTS (native_methods))) { + __android_log_print (ANDROID_LOG_ERROR, "GStreamer", + "Could not register native methods for com.gst_sdk_GStreamer"); + return 0; + } + + return JNI_VERSION_1_4; +} diff --git a/commons/src/main/native/gst-build/gstreamer_android.o b/commons/src/main/native/gst-build/gstreamer_android.o new file mode 100644 index 0000000000000000000000000000000000000000..85be70ec747c67557c7b48b6834e3ab47635107e GIT binary patch literal 8188 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 literal 0 HcmV?d00001 diff --git a/commons/src/main/native/src/com/gst_sdk/GStreamer.java b/commons/src/main/native/src/com/gst_sdk/GStreamer.java new file mode 100644 index 000000000..72354f0eb --- /dev/null +++ b/commons/src/main/native/src/com/gst_sdk/GStreamer.java @@ -0,0 +1,7 @@ +package com.gst_sdk; + +import android.content.Context; + +public class GStreamer { + public static native void init(Context context) throws Exception; +} diff --git a/commons/src/main/native/transcode.c b/commons/src/main/native/transcode.c new file mode 100644 index 000000000..5eb390a14 --- /dev/null +++ b/commons/src/main/native/transcode.c @@ -0,0 +1,148 @@ +#include + +#include +#include + +static int init(void) +{ + /* XXX: ZERO thread-safety guarantees here */ + static gboolean inited = 0; + + if (inited) + return 0; + + gst_init(NULL, NULL); + return 0; +} + +static int transcode(const char *infile, const char *outfile, + const char *profile, jobject cb_obj, JNIEnv *env) +{ + GstElement *pipeline; + GstBus *bus; + GstMessage *msg; + gchar pipeline_str[1024]; + int ret = 0; + + init(); + + snprintf(pipeline_str, 1024, + "filesrc location=\"%s\" ! " + "progressreport silent=true format=percent update-freq=1 ! " + "decodebin2 ! audioconvert ! vorbisenc ! oggmux ! " + "filesink location=\"%s\"", + infile, outfile); + + pipeline = gst_parse_launch(pipeline_str, NULL); + + gst_element_set_state (pipeline, GST_STATE_PLAYING); + + bus = gst_element_get_bus(pipeline); + + for (;;) { + msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, + GST_MESSAGE_ERROR | GST_MESSAGE_EOS | GST_MESSAGE_ELEMENT); + + switch (GST_MESSAGE_TYPE(msg)) { + case GST_MESSAGE_ELEMENT: { + const GstStructure *s = gst_message_get_structure(msg); + int percent; + jclass cb_class; + jmethodID cb_id; + + if (!cb_obj) + break; + + if (!g_str_equal(gst_structure_get_name(s), "progress")) + break; + + gst_structure_get_int(s, "percent", &percent); + + cb_class = (*env)->FindClass(env, "org/wikimedia/commons/Transcoder$TranscoderProgressCallback"); + if ((*env)->ExceptionCheck(env)) { + __android_log_print(ANDROID_LOG_ERROR, "GStreamer", "Class not found"); + break; + } + + cb_id = (*env)->GetMethodID(env, cb_class, "transcodeProgressCb", "(I)V"); + if ((*env)->ExceptionCheck(env)) { + __android_log_print(ANDROID_LOG_ERROR, "GStreamer", "Method not found"); + break; + } + + (*env)->CallVoidMethod(env, cb_obj, cb_id, percent); + if ((*env)->ExceptionCheck(env)) { + __android_log_print(ANDROID_LOG_ERROR, "GStreamer", "Method call failed"); + break; + } + + break; + } + + case GST_MESSAGE_ERROR: { + GError *err = NULL; + gchar *debug_info = NULL; + + gst_message_parse_error(msg, &err, &debug_info); + + GST_ERROR_OBJECT(pipeline, "%s -- %s", err->message, + debug_info ? debug_info : "no debug info"); + + g_error_free(err); + g_free(debug_info); + + ret = -1; + goto done; + } + + case GST_MESSAGE_EOS: + goto done; + + default: + break; + } + } + +done: + if (msg != NULL) + gst_message_unref (msg); + + gst_object_unref (bus); + gst_element_set_state (pipeline, GST_STATE_NULL); + gst_object_unref (pipeline); + + return ret; +} + +jint Java_org_wikimedia_commons_Transcoder_transcode(JNIEnv* env, + jclass *klass, jstring infile, jstring outfile, jstring profile, + jobject cb_obj) +{ + const char *in; + const char *out; + const char *prof = NULL; + + if (!infile || !outfile) + return -1; + + in = (*env)->GetStringUTFChars(env, infile, 0); + out = (*env)->GetStringUTFChars(env, outfile, 0); + + if (profile) + prof = (*env)->GetStringUTFChars(env, profile, 0); + + return transcode(in, out, prof, cb_obj, env); +} + + +#ifdef TEST +int main(int argc, char **argv) +{ + if (argc != 3) + return -1; + + transcode(argv[1], argv[2], NULL); + + return 0; +} +#endif diff --git a/ic_launcher-web.png b/ic_launcher-web.png deleted file mode 100644 index c37372acb9ce85afcef436b349984adb8735347b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37099 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 Tg=wXY0yNxQD9#TYgIWIq5)D5s diff --git a/libs/ActionBarSherlock/.classpath b/libs/ActionBarSherlock/.classpath deleted file mode 100644 index 3f9691c5d..000000000 --- a/libs/ActionBarSherlock/.classpath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/libs/ActionBarSherlock/.project b/libs/ActionBarSherlock/.project deleted file mode 100644 index 31c647017..000000000 --- a/libs/ActionBarSherlock/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - ActionBarSherlock - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/libs/ActionBarSherlock/AndroidManifest.xml b/libs/ActionBarSherlock/AndroidManifest.xml deleted file mode 100755 index c4a75f32c..000000000 --- a/libs/ActionBarSherlock/AndroidManifest.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/libs/ActionBarSherlock/README.md b/libs/ActionBarSherlock/README.md deleted file mode 100755 index e8a2c080e..000000000 --- a/libs/ActionBarSherlock/README.md +++ /dev/null @@ -1,15 +0,0 @@ -ActionBarSherlock Library -========================= - -This folder contains the main library which should be linked against as an -Android library project in your application. - -For more information see the "Including In Your Project" section of the -[usage page][1]. - - - - - - - [1]: http://actionbarsherlock.com/usage.html diff --git a/libs/ActionBarSherlock/build.xml b/libs/ActionBarSherlock/build.xml deleted file mode 100644 index 56bc65293..000000000 --- a/libs/ActionBarSherlock/build.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/libs/android-support-v4.jar b/libs/ActionBarSherlock/libs/android-support-v4.jar deleted file mode 100755 index 99e063b33a53c8ba7980a5b5244ce0e0da46ae54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271754 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 X9Df(GyQW>hf43jgw9-?^liL3Qe0D - - - 4.0.0 - - com.actionbarsherlock - library - ActionBarSherlock - apklib - - - com.actionbarsherlock - parent - 4.1.0 - ../pom.xml - - - - - com.google.android - android - provided - - - com.google.android - support-v4 - - - - com.pivotallabs - robolectric - test - - - junit - junit - test - - - - - src - test - - - - com.jayway.maven.plugins.android.generation2 - android-maven-plugin - true - - - - org.apache.maven.plugins - maven-javadoc-plugin - - true - - - - - com.google.code.maven-replacer-plugin - maven-replacer-plugin - 1.4.0 - - - process-sources - - replace - - - - - false - target/generated-sources/r/com/actionbarsherlock/R.java - target/generated-sources/r/com/actionbarsherlock/R.java - false - static final int - static int - - - - - org.apache.maven.plugins - maven-checkstyle-plugin - - ../checkstyle.xml - - - - verify - - checkstyle - - - - - - - org.codehaus.mojo - build-helper-maven-plugin - 1.7 - - - package - - attach-artifact - - - - - jar - ${project.build.directory}/${project.build.finalName}.jar - - - - - - - - - - - - - org.eclipse.m2e - lifecycle-mapping - 1.0.0 - - - - - - com.google.code.maven-replacer-plugin - maven-replacer-plugin - [1.4.1,) - - replace - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/proguard-project.txt b/libs/ActionBarSherlock/proguard-project.txt deleted file mode 100644 index f2fe1559a..000000000 --- a/libs/ActionBarSherlock/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# 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/libs/ActionBarSherlock/project.properties b/libs/ActionBarSherlock/project.properties deleted file mode 100755 index f28bc833e..000000000 --- a/libs/ActionBarSherlock/project.properties +++ /dev/null @@ -1,12 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system use, -# "ant.properties", and override values to adapt the script to your -# project structure. - -android.library=true -# Project target. -target=android-15 diff --git a/libs/ActionBarSherlock/res/color/abs__primary_text_disable_only_holo_dark.xml b/libs/ActionBarSherlock/res/color/abs__primary_text_disable_only_holo_dark.xml deleted file mode 100755 index ea7459aaf..000000000 --- a/libs/ActionBarSherlock/res/color/abs__primary_text_disable_only_holo_dark.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/libs/ActionBarSherlock/res/color/abs__primary_text_disable_only_holo_light.xml b/libs/ActionBarSherlock/res/color/abs__primary_text_disable_only_holo_light.xml deleted file mode 100755 index 0edb33b4b..000000000 --- a/libs/ActionBarSherlock/res/color/abs__primary_text_disable_only_holo_light.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - diff --git a/libs/ActionBarSherlock/res/color/abs__primary_text_holo_dark.xml b/libs/ActionBarSherlock/res/color/abs__primary_text_holo_dark.xml deleted file mode 100755 index 2bcfd0b63..000000000 --- a/libs/ActionBarSherlock/res/color/abs__primary_text_holo_dark.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/color/abs__primary_text_holo_light.xml b/libs/ActionBarSherlock/res/color/abs__primary_text_holo_light.xml deleted file mode 100755 index 198384fed..000000000 --- a/libs/ActionBarSherlock/res/color/abs__primary_text_holo_light.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_bottom_solid_dark_holo.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_bottom_solid_dark_holo.9.png deleted file mode 100755 index 769463b369a5185ba2d2fdf26abf058086ebcd08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^S!aZFaLn02py|Iz^fCC51!MDwC ze!c%VXGhEQ)_dJsezHtpNMD|7Dac@a*_ZJyulFV2w{5C|YCbaz5)ZX-3ak0tIJ#lm tp_aeGY*)k&iW*FhzahTiJD1r}=BlLiI{(TJ=>e@^@O1TaS?83{1OUpzopr0A6)2vH$=8 diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_bottom_solid_light_holo.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_bottom_solid_light_holo.9.png deleted file mode 100755 index 73050476e77aa798919b829a5566973e231f9d49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^S!aZFaLn02py|Iz^fCC51!MFRR zxpqaJ>-4UOe6iPKwm$=BLD{Wo!i)yScSSDT-Jo*!N?wFe;-MB!VKtu_20%tEPqwzt q4f{lgTEQ5`;-9UxjMeKCf^DQ_uhd?;-Btm#g2B_(&t;ucLK6V6dokDm diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_bottom_transparent_dark_holo.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_bottom_transparent_dark_holo.9.png deleted file mode 100755 index 712a551ece87b2544433ac982382a087e7f1731d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^S{5)M8Ln02py}Xf^L4oIp!}}xu zHrx6hVG;aws8xB@i!KMDZA_cCWy>wsRQS4KRST!En$HY_#6vK~{lt8cLjun}a%VT6 c)z9eScC>M27UGHi05qAw)78&qol`;+0QSr+Bme*a diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_bottom_transparent_light_holo.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_bottom_transparent_light_holo.9.png deleted file mode 100755 index bf3b9438b16543294498ba27e51d4e878c8ead5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^Sd_7$pLn02py}Xh4fCCS+;oB*H z(}QQZt5vXQMa=PTZk@YrXXvE3+ofW5$)(cU#3WF_jrSY!c@8l>`*HAE!gKCvr?`99 W=bm|#aNiDSFoUP7pUXO@geCw#94y)Z diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_share_pack_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_share_pack_holo_dark.9.png deleted file mode 100755 index 1424fdda2fb4df0bf13ee0ad9079d78fb0ba3406..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI43?#3pEQtkDJOMr-uK&RR$O8h_eNGpE6mvzopr044V<`Tzg` diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_share_pack_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_share_pack_holo_light.9.png deleted file mode 100755 index d1971b0ad316e167a7e066ab935248f9543498e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI43?#3pEQtkDJOMr-uK)l42QnexM-P)Pki}dQ z-^V;Vpy{TG>rs2jRbt|WpWjh#Ji#?9Gi^wblTEgJz>gTe~DWM4fZg4bX diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_stacked_transparent_dark_holo.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_stacked_transparent_dark_holo.9.png deleted file mode 100755 index 1e39572224b24a81ed4d73923280ba2724dbaf6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^Sf;?RuLn02py|Iy(L4oIp!})_Q zZ}wlfoYKNk`|wbZR*CB+2cd0Do4#G+S+1#YsD)El&1Z%|BAjt`!_S2)TNKYc{m-!5 f_v_(jT(cfAPEEXE)c4^Y$T|j3S3j3^P6 diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_stacked_transparent_light_holo.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_stacked_transparent_light_holo.9.png deleted file mode 100755 index a16db853e94af78c0739d9b89b578e2a8021c856..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^Sd^}woLn02py|j?`fP(zopr08IHUH2?qr diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_transparent_dark_holo.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_transparent_dark_holo.9.png deleted file mode 100755 index 0eff695d82911a73874d871f3a7b23b71dd8ab44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^Sl001;Ln02py?l}LfC5j;!{`N< zEvnsL$t-6rWU%$psDGg1|4DLDj`q~RzPqNgR|nl=*Rt6dx_ol~p-I||JQ4;82O1ce y*`SQyBHQ|!3>bf({j~je;Zla%ZD->HG+$+yO5M3zoXrBXjlt8^&t;ucLK6T4R5w)s diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_transparent_light_holo.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ab_transparent_light_holo.9.png deleted file mode 100755 index 219b170fa67aa2ef8e0b11ebff90c1629ba7e97a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^SB0OCjLn02py?l|AL4l*?;q8?- zrB_<6lUu~-<@8GYocm9fskyGHQx2!G9uAwU_k&&MlS%_4GaHYDLBatTBRp}nY76HL mkjg^D5fnx&0glSHJj>3%>1Jqp^q#PeS;bnL@oAJ;NJ=s*Cb_P#ZKbLh* G2~7YBfgFPX diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__btn_cab_done_pressed_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__btn_cab_done_pressed_holo_dark.9.png deleted file mode 100755 index 66adffed632f0f6267afe6dc2f518adb6a83ca4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^EI_Qo!3HFq_#{<Lb diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__cab_background_bottom_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__cab_background_bottom_holo_dark.9.png deleted file mode 100755 index 214d51e7279be41f1079d6046d55f0edc4af8572..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$S3?#1xGui?vo&cW^*M^1$8_^z48FMSrhX z11ZLmAirP+hi5m^fE+VV7srr_xVL8vMHv)0Trbx5N$NOq24857@o`b$S1tK@POtCI qOJ9D89m^)|4W83fCCT9!M7)Q zv diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__cab_background_top_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__cab_background_top_holo_dark.9.png deleted file mode 100755 index 564fb34b4308750b6922f320e9e114b080ecd538..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^SqC8z3Ln02py}XdO!9jra;!2L@ z<=I|~`ucZlc5hPnsi>TGwM)Is^N?0TPy5{UQpwgqqAoKG5)ZX-3ak0R7;B{1mWZ}( p*lxaUe)ue*Z}vC-G%ee~_}P|!&DqTD7lF1gc)I$ztaD0e0st(KG%NrB diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__cab_background_top_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__cab_background_top_holo_light.9.png deleted file mode 100755 index ae21b760fb1ebecac3389164251b0fa14f580f5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^SqC8z3Ln02py>gKAfB^?4dC zy{Qwe+I<(;Zrk3}qFy7o$Hqotreyxi(D>i`gF-*@tj&^T;Xws!Omj@dZ?l#4Y_?*} ivA^-x{8q}NM@;fbHo20HF^oW47(8A5T-G@yGywny6)bE3 diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__dialog_full_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__dialog_full_holo_dark.9.png deleted file mode 100755 index 79e56f522b2837bd9f579b28f037ad5eafaaee8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1414 zcmV;11$p|3P)cSnqT^=WQ7*OFqW%ysfqGq3fLYCng$eebY1E zq0h)!qMt>^T{!1KLrdv5=!(bMwnfb7mMF4BgVA@!3k##^X|etG%o8VLfn)&kp1$5* zAHx|3EF9@?)w)=}!OothSF(h}LSVs2n}u~V8rR2gA&m?6GFm9LT5i!5ovh2$`aOLf zDMwpCv(UIN+s(qhT71rU;E=VYR%2(wIy9)U9BqNMU?EvKj~0!zxmxOREjkZzh+iq_n}2*GaEP(@ILD!5 zWBguqUH^M`clY;tz5a@wsI&tR0g7j89WEv$&WS`s3jmAj>+65+@9$R+4-crSDsl+t zoXD~ai^by4tE;Qe>-G9CHN@f2j4rXz#$jzQA^^+B$H$Mix3`1-5a+ZsO@p#5Q53}= z0G4QnFC7vyL_!;@%<@Jv>_k)mSUx>Hz18n=PE3d}%kYsC@*I)N0NNv^lI%s;wg9j! z%knLLgEIoQ+bysY63^&#(^_eOc(NT6QxTdoZI(#S<~ro`ne!tS(gH7T&zUX-UZRk7 zy|5!F77`FowzZg?X(M)KAw}<4SRP51e8qZ>m)V;$Z3?tS#CiaZ^hhEi?U_=yRh(%c zcGk9kwMUBGYjYt@pHyCSltyExNUHHFevMy@-l#r~QEjQ;(4?Q~r4samHh{FF{bU7StYxgeBAZQ`6E7N`VLYGS_ z;oj>aHT`D+d1$*FJhVBd!G+`uf(ywR1Q(Js2reXN5G)~C&xiARXWFDHmGF81Z6U>K z;#g%)oXa8RP+ENtZO$MZBP0)Pm&4Jv?h_KbHF>VdnKo?a-t;CVB(9^gh389`0#_~3 z>r7%ovdX{d8amFjk%uF>Vp~*9sp-GKg_vAO(?{&AZLdjA|Mdo3?oA8H>)1>mc|==# zB~EQxV&cD40$n%8&w#s-rjOWJ+ddiIQXYxR!^y#)tE&3)24CJ80l~J_MCXPu>Ml3AI+9BHcJ4%0r(Kw z@2dYHj4#nGKH!fqjRVUuh**Aw_CvMrs{b>Lm!YwzO4di>6N@*}Phg5Tw&B1fy2S@v zNaMh=r`Sx3>1SxA8q+hl==5I;NtblfC(XkF^KkH7ZKuDGcq0~@mC!ryi=K7WXgde? zOwz>rq{P&!A!(hIr~D!&pe-W#G7`?LQYh|`P7hzs(O!weT#2|xih3m$l64(P7wFd8 z$(YnkvI-Blh{l8EAha{kf+|%%mTX6hk;YCcRo{6`6g>|oKBz>Tb24JLyVyI4p!izS z!8wv9b%$RIiIZ@y?B&nGjRPyvaF~-xlb-U|=!P~^8?n&FNw@wIvQA!p;xDy1AK0dR zu~CaAl^btMM>A?9->NQ&|AnVmzdt!!WF>xutSl`;$84s2a_=ari#ecl- zo|KSyJXTD=1$2JI1Ql!6el7Y8-dCZ-i%gs^mMBu<;eLzP8a;YIXA&Hxi>7JtAFa#2 UvCQ(L;{X5v07*qoM6N<$g1g$KMgRZ+ diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__dialog_full_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__dialog_full_holo_light.9.png deleted file mode 100755 index e029f210b9a81ed4765d31e90b6e49dc8aa37bed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1537 zcmV+c2LAbpP)P*hY@RCILOyI+)4*Y%ioMH6eaT8-v42qXrI z0|4iGEk=d4Xm52^#H?WUz%bBygG}I|;L!cJM*+u%I9T*&&%x@0sx#0Qk0mTmeRX1h$MIxNMY&% zsz{Hz01C^N@8p~dFgXbIRub%{CUOKKzAQ3rfl0r3M&j^DZL~BnC0R+zNTfH*0>l>% z6xe!^4oO*vg0sbY%(i4Znw@-;nUbs&1zN~PIe02zy)Qcz&8uA?+OU=`?e2Zs5}uJN0M*6C#a{)YX?>^k&iO8v%U{pV&i+9YXUL@sAe1fQs10%V6ikBo z^7Qod_s{$xhgN}Tci-i5`3pX{;N4;1Au(Bm7x@)z#1I9LmdL~RrF4uC5rsHs>tE+w zbjvJ)LKv+{MYbuBrU=TBLj=6Xm=@t7;baF+QjNr0K02$09MPPz_Q^dZ5CLh8#Oov4 z0!TsP8|Jz<^->fRi@r;w5OrSCkw6L?N(J|#V;?nA78HxV{Q97DD=gWeOHxKs4U)p3 zSoD>;waz;geHn?ahed6Tq%7rduPgn zV$nDE$&ajtWS5-`4=n>hvFJNE&bxxNGnt2!k)T-g9UO0!_0BFb6cm%bLuC>qYeBK* zyN@VHxuTkNE#cFa@PaJz!! z*)p0eo;YjAyoc}Lcn`@)ql2XA#Le!l%y)3C`#|D`qk*LC#Leoh&{v9irz@IDt(4j|E-ey3YJCdAoj z17Q35`nvale)TKB+I=4%AAxk%w!OMGAf++t+Mb@Cemp-vW4j&J%V|A%#TR&cd&9%S z1Mctdf1tZ-6W>Id5JKwGXhvG!+}wOSKR^Gos;Zyq!S}5X*>+05G4|7V9G{hQ?!VjH z+iw8YkTX)YMrymYx~{`?w$U_yh$q-O1#m*zu<(hQDx}lJ70s)V5Io{ZN7v2rMwVC7 zhTm_2@1*&pTK&uP8_~o&lye*5+om^+1{h zqafFH?O0X{OUO1M^YAPb=F`bd6<0LB=s!LE=ilN39Gach?DYt$CL6UhXTc;$2zpT2dqqQrIZWT*_yH->_|IcgE|Y&S_AJ4lX{3 zlIkT6RWeyS^JtZ1q^3@yK=Cm?J&*-y*C;dpYgTSF&bztX%>V7a(kL+ra#JUT-|=or zs-McUNbE?uO3e#!@v#wf-Fu%ryG^`~69lNs`%MmnTRbrM$471B$+eE{K4hK$mCQ9h-Z$E`tJc<=E)8`p?U8s&`700000NkvXXu0mjfb2aWW diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_ab_back_holo_dark.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_ab_back_holo_dark.png deleted file mode 100755 index 41b0fc5f26f6cdf34d34641634e537d4ada86a8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 545 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA9SiUYaRt)NPQx~J=gKOL-mXZeo{|J#4{do%-cUhTmHK>6wOo#H z7l{ThzA|gpoEBZ7M1O_upwM;MK+{fmx;TbZ#I;VkzNy)O$3;0=+CX*h_j}dn-~Rs} z94IH$Tafnd+y@2O?$)Wn{)`O=o`)Jw$ZuP!Q*=+<;6v2csEbStvXK*GSHE}Izo7XO z3*(2+FMCQtJJ=Nr4MNtPS;Ba9u6yp{)T>eg7lQX)Phitnqio-I_XV#+bzR=6xq(b+ z2k+=iW8i#n;8e!udjbmmy8E)&`*^?o`fyI>3{rJ_tk&j8{N46oR8rb50h!JS{u+$44$rjF6*2UngG6PN{Ijf diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_ab_back_holo_light.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_ab_back_holo_light.png deleted file mode 100755 index 64952591f2e7d7cc7b2c35d665779ab7351be11c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAO%Cu0aRt(Y4OCSsmjc~nSQ6wH z%)l7n9pn?}uc_+mDdFe9%qPbhEG%gj8lukOsOKi7#HDR4>TD&>WWulGt}M-MZQ#x< zrv}tK+tbA{q#~|&(s7}~3Op{Y4mbGn3g@IP{}%V}|LaMTeYc$Ng?^qU%lWJOp^f+P ztb`R`H(xYSU)-Y19ycNIP}fop>7Y5@+w_ i?L9K*TIv4dnV}zjpFM2uvA^b^aQAfeb6Mw<&;$Ux@L-Mr diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_cab_done_holo_dark.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_cab_done_holo_dark.png deleted file mode 100755 index d8662e3f0fdae62cdee68c184a30fa9e421dc338..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 713 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}trX+877l!}s{b%+Ad7K3vk;OpT z1B~5HX4`=T%L*LRfizez!?|}o;S3Cn7d>4ZLn02pop#z!+EApeUwz>goe2TrwSq2J zirU3kvaXhOUTIG}?do{Paly7dd_m%&JI?q_-onB2%KO8{j^-Q>wzNlYp6R5&dH;Rm z|KbvtPbZZ7*R_9QUBqkhp({MdL+G`PeiKVkcC&4Y!{nAd6Z!S-oqj3U!mzMkIqyf? zf)_G(nEp@p{`aZ-I!9g5h7aq1927O&FPT&GvG@NuQA5$TGve!iOqW^IxiY{>!{pzO z!{3V<)Sk6$zkBfg;!caFvF0E2Z#WAV9{aHQL)vPusEmizHw=GVH2J}B^#kKc_ZNxM zzDF#RGe0;TaIo&I-m~b0*sP8To$2@Yde+QKc8kg_`XHU5q@;HFk@ug+O{X5aZ~nk~ zjknIKwfM~0Z^b864VUMM@zwGAdYt)v<(Nz4IlImB@8#qJ%zn(A@Z29bd}4MpKn$sTM506307QmPCTFYr(@#O zpZ-(V%YE!?30QE(DXivDMdI0PFM+AKOT1>hnX-6tX;O6(d#2d)iSBZ_kN7m7WzTRr zzEA`h)2bz|5hW>!C8<`)MX5lF!N|bSP}jgh*T6i)(9Fuf$jaCl$hI;t2>JhQGm3`X z{FKbJN)!#IR;K1a1kqq?mJtlpAPKS|I6tkVJh3R1!7(L2DOJHUH!(dmC^a#qvhZZ8 Q4Nwt-r>mdKI;Vst0K3d3fB*mh diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_cab_done_holo_light.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_cab_done_holo_light.png deleted file mode 100755 index 6bbe91d7b77fb66ecedd3d696b56e670fced6467..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-s2LgOTT!HkE2He*A0zeNqlmz(& zGcYnWwAV8?);6)!b+9(8MJcOnfa9K>312Ju2ebk258oQPZ!6KinzB|ZU!|w2(VtrT-L6t8OtD`F#k+skyfcVd74UjxFuTn{c2=eJc~(aEt^4I&|E;o)@evLAdOMjX zP29+SCU=c=^M>_%R_!ZnvaCEakt5qI{Cp&*dgtbbmOeDc^0@J;;M1%jlp25nb-=TAahBO zUob-&!^w*r|AAaJPZ!6KinzDuHu5qsa4K Ym(N8V8IJ#m2kKz(boFyt=akR{08_Xq761SM diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_menu_share_holo_dark.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_menu_share_holo_dark.png deleted file mode 100755 index 6f747c8f065940a8844587c682fb3c9443ad1ca2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 467 zcmV;^0WAKBP)SO)@i{}u0qYYqHziBfu2L*;{L?D;GxhmUqDjP ziMkTn=nm+BxmDP>FsP2fGnnz3AAnfGAiD%ptMDlguG*u-2|uL;kN%Xenfoz6Wm9neQuJ_f08buH`WL4SA>8mzG9{4uwy+$BT^9a|eO3@D0j4;gS>^u3i8D002ov JPDHLkV1mHE(I@}_ diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_menu_share_holo_light.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__ic_menu_share_holo_light.png deleted file mode 100755 index 682b2fdec4cdcffe042a0eaba5574fcb553c6fab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 505 zcmVavhwv6%LZS|`6cHU3BI+s;(j}rxR}U>ALI;t;n}mlvh$!J-yZtua#I%j$ zOwQ&T8Q}wUMSkBn``+6%%Cao-nJ5SZfglhBcnTy*QWjP42;RUuXn|w-Gn@r3!4%9C z+;SJ#1s`+53r;u-JS+&G)8Q=eVjwW)EYS5?U=Q?t+(O%+X%L*ae6USp(Wf44I z{VTBf*DdH$;99e18zd%PPify*mOc4h3DgW)zaXzPJFd#ED}jzd@IKXer+vefz{o(L zSH{%(p8{RZ0^V<-*kS}|(%8UCAfi$^)3kopWmIldEo%J}dR~)`A1WGIol7IL;ao9F zT=*mq(WtgX@b^ z8v#5LPB(Y&Y|7|Y_!S6e^A;p&8Kn`0O ZNo|$kIQ!-!vj|WNgQu&X%Q~loCIGZbCtd&m diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__list_longpressed_holo.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__list_longpressed_holo.9.png deleted file mode 100755 index 89c5a5b3ba7d81b92bfa5f6cddec970712d794ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-v3?#1{n!goD@dWsUxH8N<17t!-(Y;LDfo$fI zAirRsXwu=;zkpnIPZ!6Kin!1d8wD90SQrj!Kj{8tWU@@|)FcTbw+$y3Y1Z8PPe^A;p&8Kn`e^A;p&8Kn`)FR9pq#%;Bdb9fTe6Q2VcU%-{(VYwrF=eux9zE pyJ2b>-@*!&RY^*}_RRb6`6E+Zsl>AICZ#Tr`JS$RF6*2Ung9f$E#d$G diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__menu_dropdown_panel_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__menu_dropdown_panel_holo_dark.9.png deleted file mode 100755 index 4d3d208578c61662986fdc16bd15c69759b48d6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 922 zcmV;L17-Y)P)!ytdud6iMT7O&4bD*mP3eKws)UN7D2k#e z%DbYt@4NEYnkjlINEK7=*RV3zwml#Px9r!q%}Y$QM*NqHEZ-wscn^ zf4p9=Kg#ZZAKY%YZvc!aCbL}F6eGxtBSzy=smEUmc6C{?q1YCQrid~5o$!73+BeU$Ee{DI^Yo4#-o87 zao*xiE9Z<+s}ttlWw19HGlEA1nW09+*~|#}a;CkeJh%bU1g9CP5h0^O2}4Hs%y=Lc z5q!OY8j*^uk~rBBK?ljmh#jL84Ev;rDo>_H#K|6e%Mo=CgLzw$rI$Y4Z-kUy6U47Z zMI2w^tmuV~pH%tJq!^(yWY-hbFl2;G2g)+VPqud2Sicc+jL>MvBTKK;HbN#jlrS<8 zl+;FqdPULzJ~Kh_!?j8>!xs^*nQAm$#290~ue;BBnY1w&wMw4#m(pwEDZd_oY1{Ux z>$>N)H(eWD*FCpw`-IsDKF28-6~1bz!JGs-W6Z&R1n>#KR{&q8us99Q}8ID#(NJr3oa@N-D4Rc$qhA--bT2} z_Wpf@Z`4749}#V+fwWJz^oyZKO1~J&exY-1*Kg?D$hu!fixvAiNfpmG;mo&f5BSEA wlE;@gYed_N;JFm#Y)Zw{1W}kQU9GkF3xsHEK4Myn7XSbN07*qoM6N<$g18=|djJ3c diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__menu_dropdown_panel_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__menu_dropdown_panel_holo_light.9.png deleted file mode 100755 index 924a99d173082ba58ca7527822359f228bb14dec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1061 zcmV+=1ls$FP)#d)-&;4-At916hopygyW1WQa|lkCWZ4-q&QLYwjy>%Jd>?UvK6*fy zdt!`Ep~K-gOUxeEG;B7TCA&L&Y`5FR`f3tF5S^VH!lJsKJqkfK0&PN7nPcRS?`4Ev z7V~vPKouy~L@5%v*=&-(hy0cgM*ETwjWz&8F3NVhH7#V4$3+kVgi2lPw-adOTXm|2 z;f`P0rx+seIw-H@dwPaOx@-q(hY$i2BS4u1XM~+%LI5%mN(D;0XOsl63U@~43e6EU z5mrW96C~;L2O}H%p$jmGc5)7LM&^oyAacV=14{s_wp`K^YIpyDFEM02mXk3OSEw-p zdORS~SGTvf|Cjl{`o#71_3u-2KzcK(ZU7La5JAil5&>9olp#5yVJhG_L?OnQ2x7(v zIfg2+Q2z$cZ7gkJK~)>%8)`3CJSNBlBGKwWz;6QnLDPCN+(q9 zAJ*09wM4d_hZLYxWa z2;mvCbu@F-B1H21)loz{?U-+?@nqk8kw`Vm31QkJFg_V%{OMfZr8mlq(-<|uJGVoHpVClAlh&-bsduQ(hI zi(GsU`1tt1hf_X{d`3<68b|S{tXYwd2YXzXl8Izg4y^21 zp<@H92ON{kB3P1HizBE$;EP~xzks74y{^`3Ur7(FmPO0@t2+WXW`VN|Gc9|AJ43ds z=_5ZJGT6$YN8bIa6HYZ^jFIn`&>W#9La9l$?6@3`ET&WsUkjFK0@?|yO)(6`*1l_s~_L1z$~& z@jZM)qqe)$B+Pe}79nG2sji9uR0#8Z){~%#a(p4yPG;@1CipK8G=YCTO^$u*mj`Me f=rGa5Ym5<}3Pv>t$oVA_00000NkvXXu0mjf+qu}} diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__progress_bg_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__progress_bg_holo_dark.9.png deleted file mode 100755 index d2948f033b3261a4d623a4b9e296f6232a2a921f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^96&6^!VDxU>=`tG6n}tEh%1o(4+B7U|DPXKK#HX# z$S;^dikCsW$F2~_H}iCH45^5#J-d;UL4k+iVE-KbF5qmEWKtE%)5amFnGH9xvX=`tG6n}tEh%1nWfdBvh0~z~Q_u2p{ zmXaX9UcR3v3Y*J2PIQYhXa)PSnrI^o0 rA3LTW{;|L%Bz@V;wc**HPAH#aCDOJO>Ym5d24oA2hD9A9kkZ#C-ocYxQulY$%dG^s1`jD zWrBMf{hI5z?Ps6d&cAMwxpu9tAQSLC;sV+l?CI!atlqGv_K~X}S&7D6#irA$G%zcr zGa^}SvXODrvrsWB#ZkB-c}-Y}>Q0!#L#9IQCX$ZI#7DnF9fJ8(R=8iR{NJvIR3GfdBS0fGXvSYugM@B@Fy~s_l`Jy)|ccqHxmVzApHz{x4N{y z#Xj0V$LH=@zsWY)$4Z)6--edG^VYGh&b$}$F3XeLt5=Uu0`p37@FaypB&t$KuAm9R zq*|yt7WOdr(m%g{dU1bs0-qy(nh~3JDc<<|K^(;cR4G!8UrKd|p;N zi5zZftW#Kk#vM}fdS+hLQ#;Dq?H?_`8P1nhqmR=j>Au${MMR)hh&5HCA z?cjx6pHV1ZFFx`ra1m|YMALE$u3RAxZp(6Eus@DJwzn!G7Cw2Mm%K&AN5Ia`DuuPd r`dvHM#yxB2nYDo;0!e2cs)*3P7gB8$K+RT%00000NkvXXu0mjfr&_ZI diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__progress_primary_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__progress_primary_holo_light.9.png deleted file mode 100755 index 1c269205e874bc6addc308efe5be4fb7c5da0edc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmV;G18V$CDOJO>Ym5d24oA2hD9A9kkZ#C-ocYxQulY$%dG^s1`jD zWrBMf{hI5z?Ps6d&cAMwxpu9tAQSLC;sV+l?CI!atlqGv_K~X}S&7D6#irA$G%zcr zGa^}SvXODrvrsWB#ZkB-c}-Y}>Q0!#L#9IQCX$ZI#7DnF9fJ8(R=8iR{NJvIR3GfdBS0fGXvSYugM@B@Fy~s_l`Jy)|ccqHxmVzApHz{x4N{y z#Xj0V$LH=@zsWY)$4Z)6--edG^VYGh&b$}$F3XeLt5=Uu0`p37@FaypB&t$KuAm9R zq*|yt7WOdr(m%g{dU1bs0-qy(nh~3JDc<<|K^(;cR4G!8UrKd|p;N zi5zZftW#Kk#vM}fdS+hLQ#;Dq?H?_`8P1nhqmR=j>Au${MMR)hh&5HCA z?cjx6pHV1ZFFx`ra1m|YMALE$u3RAxZp(6Eus@DJwzn!G7Cw2Mm%K&AN5Ia`DuuPd r`dvHM#yxB2nYDo;0!e2cs)*3P7gB8$K+RT%00000NkvXXu0mjfr&_ZI diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__progress_secondary_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__progress_secondary_holo_dark.9.png deleted file mode 100755 index a608c1ca6d09f4970e2c06f52a314ab4a5633815..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 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 diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_48_outer_holo.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_48_outer_holo.png deleted file mode 100755 index f62f74bb38e8818fd970b7ec1f7862e543cc9d07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1811 zcmV+u2kiKXP)Q(x@RlU0R z*6*F+o^#JDHf2*b#j2Gf_PMBSbuGRn) zDJUkGcinCw!4`)d@_D~EMJnC5dvGXBz z^GjW6Gg4BPB{MBwxqQWN<0fP#?6J=Sj@WNJ!AH@8Kl`>9L$xnJF(@mqT0WPnt1qF1 z=Fx+;deGw@bGK5OQ+L*P{Upq+6DX1yGQbK>T~%EkI?XGa@}$o>ppa%>^8?Sie*2l7 zfHK3%D>%7|N++0Avr7*8vd@}G^Jo0fcfyUHfnsLZ&jU?a6Rn7I58e-AIzUHA66jy!AvGyBgcAIA_8&ya%2-o5w@+x^Frq z7x5uqjDu?ciVPZ-34&-=b^T>U$i3owu8N|PCmm@W9a)>Z@0e@OLVt>;Q1iTBsK`Y- zJ#Dm0pva)1q@Sv}wFUZZ<(6Yki*muoJ=kjDtmVDYq#tH=k$<|@5vTpkf+%-~CzQJb zDj5=FGBxvks&SW*YJTnCqA2*7ySf013>jGQpITpe;Jn|eigLRhZQhTXHIx~a$pm$C z{nZbIsz13R7nL1tHd-@KF*$Um(og?cC1;!x<)VYeI|B_UB@HdgHw5UWlj@?}cDp+O zMal|-j9w2i9i`?Cb8^v;J)JZZ3@FG_LfsGv{MVdZZorO4w{8Y134%<%0TH$=m)%OW z_@u(SziK>nET6ihG`KOcU?%zJh~m2+ycN)r5;qQq+h%%Xy;f)Ejn0a3UnsuS^+vZqWP#0th z#x}@k!|oI0qU+rNRV>J4GUFR$v|a9z%jMoM-5IE6CMAy{ll?bZ%p5f-7cDwzt|L%b z^86*Y-fp1pM3X+OAj(~JqWJ*PYCpbZCY5MgZSAj)V(>vz$zUg(ZywPKsOqx1Or~s4 ztCPVxWShrQgx&N<^IZW2u9-7hOofKj5BzxpoW= zdO}GqH|+&2+j}j6LUh@cv}2FCzaLvtWZ?^TwHb8;v&L-C`+P^-e$fT!yBz5Da{oL7hj@h;h3%R$P7X_J;dmT2? z8&V8*_<~22M7c%3b3D}BjlNwczv7fZds1ebGU8;svesTmESU0X4=BlHYF_eOt8iaY zL0I~yq8N;M$m4dU73%)xM=srNe&@#dxWo1;CZw8+{^f0pouFbc zV#*`lZz%0)HGlQf<_c&{Ktx7;z}?CzodgvZopY&OUp7)Q;eaFVO?})iuy4L9j zyLs2K^qSz1EvYP7>Ws{|~_-QddT;IiL%she&}m+lY?b~t3u zik_CPT+O0+6?K`iA!CLOr{nnY$OW(ay)*42s|TRe$lC9I+YPJ$b-IG8H~q!myML>= zroa>ruDyrb zV`&jHgSNQCgmI$=lu=hRYuXKOo3_xM&-4jsmA;l<3@^Ph&(-?zXM#=Hludb0$^QZH zs3&Vcm*{c;001R)MObuXVRU6WV{&C-bY%cCFflPLFgPtTGgL7)Ix{mmGBYhOH##sd z?sz9s0000bbVXQnWMOn=I&E)cX=Zr$HaasiIx;gYFgH3dFrOu# z?f?J)8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08fWO;GPWjp`?002ovPDHLkV1l}_ BPJaLZ diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_default_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_default_holo_dark.9.png deleted file mode 100755 index bc53fb9638c0bc2ed793ba2c4a1dc99758271df5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^%0O(y!3-oH_D%`~QZ@lTA+A9B3nC1X!_e#Vu&raI|L&;MWl!I+rS8s-6F=MYx9R8X%oVdt@=PbsQ$4}( zauLtOb{-)~6(gUN87CMVm7CmJdO4&8&6ILnZggyz>3Ts&b>Fsc@@f3}U)>+a-r16G a_l~7)6&s^@b1f6l0Sun5elF{r5}E+krFk3x diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_default_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_default_holo_light.9.png deleted file mode 100755 index 1c381ba2f5eb8816c6bd98b89d79d97ea309bd54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^%0O(y!3-oH_D%`~QZ@lTA+A8$7z6zO{~tpPT>z-@ zXyNK)ASGN9N{|EZ2n-B6%BT{Mx#DYfAOIynsz{pLb=Xz2SUjn!0*c;aMYxWvV9_W-jKL z=*ZT|BP6M2M&g#$6?k&HVS#I}^KlCMQ VXoAd{NkH2fJYD@<);T3K0RTOFX{7)F diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_disabled_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_disabled_holo_light.9.png deleted file mode 100755 index d65d3b7fa95e9107e482f345a9f207e1d9e154ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^%0O(y!3-oH_D%`~QpN#3A+8`A1N{I0A43c(08~Fy zS*rs`36uo+1v414=`u?iFt9Lc3NwhQvrfvFW&+9;dAc};RK&f#YRK1YAi{F7pZ5ma zq(8ssn+cuex^O}yZ^MjVTUT#QseYFiuqp2Iu8g!doX<>CSI;UuYviy@^#sGr#XJ)o z**bZIB-M<3QW_QrIw~J>Yw6{X7Bo}Jak-HqXfj__?swc-{W;pbDH$}18>|t?+K*jOM?7@eP>PxXV?+7I;3gi#Q5YCh8fb+mh?xKg@yXhuL<|} z+huu19H?}&r;B4qMcmt~C;6HUcw8^u*x?{8#Nm8g@&Etny*H*VPY?@T>b3Xv=B@KH zQ}vE%%#2b#X!tZ){7A>^%(eGajf2uHr@zhcX**%&y6%|J**5OUs~@aYTcuWa=7j!? z{X11hnkcr0y1;=I?>gu8IHv diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_focused_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_focused_holo_light.9.png deleted file mode 100755 index 2e81cb91355972d04f06ede1d8430fbec808493d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^%0O(y!3-oH_D%`~QV9V*A+E+-pTZGP%-A!~c-DSn z|48Fy7mYJ(jeSDlvOvcF|Njx(;5ZO_&SB%yUgL$QjF+4)p-6f|!X666=`J99!f!;YxcAx#@6#wVvR%#fb8q(8DOEYyE~O}M|`F3U6G zK&6{KT^vIy;@)08$=7Va<9hMN4hLx=4(H>F|Nl?#y)kupf>`KMuf4A~Z=Ii+s&`Cd zW|Z7sOM><|-uDz#f9F%T3{cVO%+X*w*b;pFxwsB8h{a~%yDz&;ZC-i6R-)R#X zEbl*S<#*?u1|EE(5(?G^9tRW{n^|~-Ogt_qI5xBJ!Wk3hSgJ3Yc{^Zl`P>6{PP<-y z{Cc}`bnm~zkvEzAj%m++G@0|>I)T^CIX8ERbBYVEUvSwk3+Q|XPgg&ebxsLQ00cRr AFaQ7m diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_pressed_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_pressed_holo_dark.9.png deleted file mode 100755 index d42639ab54f8fd6a619aa36d48aa2991c262fefd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^%0O(y!3-oH_D%`~QXv68A+E+-p8}Z+j$U@%@o3tS ztHt|o+iZI>`^XibI94?A@HOY{k4&~cwcGwUXWyNkL)Xl=J#pOr*mUdDw7qv7wm$}% zR`;B30g#d|3Gxe`$#8Aqx$Sc=O_OFwnULH+@$`b3bGMwBHGkHId5f}4w*r;T^K@|x zsfc@f^<>{60|D2IT0%}Tw!b=h42Hqel-pIXzl;{@crw3(g05?YgM&Drv%7 zrxGoxYR#+1bKEq|)0D%$`WX4HO8X*x=6p>5vX}q<>0W;OJT29OPnYKeUmFVwY-s~S zwk0WkGb5haY+oNMHY0j-*3SAG>!|ZA%`G{5K5E)YKVQx?bI;{+yLXI|++1c)zju8B Px|G4w)z4*}Q$iB}8@-|> diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_pressed_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__spinner_ab_pressed_holo_light.9.png deleted file mode 100755 index 7b2930752645c4b32a2ea83d888eb89d27936b8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^%0O(y!3-oH_D%`~QXv68A+E+-p8}c25oyNDE*K{k z8Q0G?UVF(nFTZ5G<%#i{o5rn+jWcVFH$607dBu41Bjc`B#;dLYO_N@; z;Q@#$3Gxe`$#8Aqx$Sc=O_OFwnULH+@$`b3bGMwBHGkHId5f}4w*r;T^K@|xsfc@f z^<>{60|D2IT0%}Tw!b=h42Hqel-pIXzl;{@crw3(g05?YgM&Drv%7rxGox zYR#+1bKEq|)0D%$`WX4HO8X*x=6p>5vX}q<>0W;OJT29OPnYKeUmFVwY-s~Swk0Wk zGb5haY+oNMHY0j-*3SAG>!|ZA%`G{5K5E)YKVQx?bI;{+yLXI|++1c)zju8Bx|G4w L)z4*}Q$iB}?KGK} diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__tab_selected_focused_holo.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__tab_selected_focused_holo.9.png deleted file mode 100755 index b830f1fdae8bd50f449211241560d66a21ec7442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1i!VDxu+fIuDDgFST5Le@^Pk~H0X|+=RF_6z( z666! Z=h?=@cC~iVl188o22WQ%mvv4FO#r__C+PqH diff --git a/libs/ActionBarSherlock/res/drawable-hdpi/abs__tab_selected_holo.9.png b/libs/ActionBarSherlock/res/drawable-hdpi/abs__tab_selected_holo.9.png deleted file mode 100755 index fd73a033b034b1fc6fb933fdfda45e8648ac7211..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1i#0(^79kbgCq<8{+LR^8g@z$q61Z0G5zBwOA zF_i@Q1v4;|O+IS@KMu%M_jGX#sfhDE>CFi==evwJLPDoBk{4*AEnmdKI;Vst0H2gA*Z=?k diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_bottom_solid_light_holo.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_bottom_solid_light_holo.9.png deleted file mode 100755 index 0706c8af658bde9602634950dfe3d5fa5886163f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%zMd|QAs)xyUfsxfz<`JK;_Z5A z-Y@ApO*&r-OgQM+#9X>wkYiu(tId138dhyGKCm}H$eLN@qysZ=3D*)nlM7YC@0xyy hn}nCMmBhQI$CPR`ipOiMnG7_T!PC{xWt~$(698&aE5rZ* diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_bottom_transparent_dark_holo.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_bottom_transparent_dark_holo.9.png deleted file mode 100755 index d814d02d31183b8f00f475a05c124004983d9eff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%PM$7~As)w*fBgS%&%9EC|%_%783w8jlt8^&t;ucLK6TeKPwmj diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_bottom_transparent_light_holo.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_bottom_transparent_light_holo.9.png deleted file mode 100755 index b139c8e49168e4404df0a46b30a4b30e90c1ccff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%PM$7~As)w*fBgS%&%9ECY>s_{MVWOZ(=mjBT1_sGr W&p6(H%v1uJ#^CAd=d#Wzp$P!PC@9VV diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_share_pack_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_share_pack_holo_dark.9.png deleted file mode 100755 index 5a5e976bbc4527949f12389044c70952447ca8dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh<3?#J|q#XfLJOMr-uK&RR$O8h_eNGpE6mvz?tX q@GM&5R93(IF~_X{3%(%HTdWVWZPpUXO@geCxz0x~fG diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_share_pack_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_share_pack_holo_light.9.png deleted file mode 100755 index 8f10bd5222239e82e49c5120888fc9a07a324b42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_solid_dark_holo.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_solid_dark_holo.9.png deleted file mode 100755 index 743d00b6cd7e446c7badca9dd11d1579404569cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%KAtX)As)xyUQ!e~V8Fq8aW6aH z`M>?!MSK0VJ5DH+1)MRKpSquM-S5BdOIN+&sn~jE%jQNlsf-1UY_}X6mMgq#dKVMx ha^q%Y#@a>3az|3`-r6;1y%^A322WQ%mvv4FO#tkfF|q&v diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_solid_light_holo.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_solid_light_holo.9.png deleted file mode 100755 index 17c1fb921f9b7b46aaeefe7afb8302874fb0abd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%KAtX)As)xyURua|z<`JK;_Z5y z;?s*`91mY+Vs~LvSAIRQ|I~ek>wo_(4hk(}+Y^;`>!t%UugL`m=C=w5f(6PQ%h%~C hy?JA^CG4Uk|5eN5b2qlEYyz6g;OXk;vd$@?2>`YpFM0p~ diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_solid_shadow_holo.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_solid_shadow_holo.9.png deleted file mode 100755 index ddfc8e3d5c4131f2460254f183938477fc5a0679..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rhed`}n05R21qr&#kfCPg`@kT=WR_nY-)l@u)2m z9YjR(TNrC5J8zlf@MOx-MX#^q?zd~tP;1Ok`WbQLQ#YGy{=Yfu7pEGW;JmVaai5Cr S@!LSF89ZJ6T-G@yGywoUXh2*5 diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_stacked_solid_dark_holo.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_stacked_solid_dark_holo.9.png deleted file mode 100755 index 007a4b239244212339b817f8de9474a4dc34fde0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%zMd|QAs)xyURua|z<`JK;_L&H z*gyPBj&nSGnTg$nOT)YjBQU;+O3-o%)BNS9GKrK90(RDcPwA0 ir}XBH&6co>lKfV`a~Jh`>I4G~X7F_Nb6Mw<&;$VSc`p(G diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_stacked_solid_light_holo.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_stacked_solid_light_holo.9.png deleted file mode 100755 index ad6e1a4d9f3c81e20676f979a53cea2084ce903d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%KAtX)As)xyUQ!e~V8Fq8aqs`F z7bNtyi1zwxcbrft3piseKXpIjy5E1@m#%ulQ?d2Tmd%Z9QW*;x*={*DELV8f^e!gW h<;Km*jJ1o5{)rFFF7K diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_stacked_transparent_dark_holo.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_stacked_transparent_dark_holo.9.png deleted file mode 100755 index 0ad6c888b4c7e436e7d7c78432dbfdaecc95a7ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%Zk{fVAs)w*fBgS%&%9ECxB?U?=uVx Y$^4u51wHGE0Gi0)>FVdQ&MBb@0N@ZURR910 diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_stacked_transparent_light_holo.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ab_stacked_transparent_light_holo.9.png deleted file mode 100755 index 19b50abcb536602cf2cd36d5a19805464988bd20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%PM$7~As)w*fBgS%&%9ECmdKI;Vst03^XH%m4rY diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_default_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_default_holo_dark.9.png deleted file mode 100755 index 5461b9c00fd3fc513aa4465682e70e87cca36a6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^EI_Ql!3HEv&)kdyQaYY4jv*T7lQS|h5*V8PD@dJb zGfWV2j%0YY@&Et-(u-Ft=sZxsVYp-gbGr;f^5z}?TUWk$0o2Ff>FVdQ&MBb@07WJt A3jhEB diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_default_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_default_holo_light.9.png deleted file mode 100755 index 5dc6f804aea8ca344275ac6eb497b6bfe0f117f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^EI_Ql!3HEv&)kdyQd*uajv*T7lQS|h5*V8PD@dJb xGfWV2j%0Xds4&4P&{4SYp+J&{BRiiZ!)425)ejdW>;mdy@O1TaS?83{1ORBM8sz{0 diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_focused_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_focused_holo_dark.9.png deleted file mode 100755 index a70b53c59af769e3c98973ad9718670ce27259ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^EI_Ql!3HEv&)kdyQYM}*jv*T7lYjjGZ_h07hy7xL zS%<;BUsuG{45zRSgeB^>bP0l+XkK D`1l&; diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_pressed_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_pressed_holo_dark.9.png deleted file mode 100755 index 85d7aadd4dfb619883f68f1cc63e629698b5dab5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^EI_Ql!3HEv&)kdyQbwLGjv*T7lQS|h5*V8PD@dJT z6Fe3@|6GeFPb#ATqtK84|Mweqan0i3X%}$jvMQLwz#trO`SaWQ^{znO44$rjF6*2U FngE5o9^U`} diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_pressed_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__btn_cab_done_pressed_holo_light.9.png deleted file mode 100755 index f7b01e012f895bfe2c4241e1d48771fc372b35cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^EI_Ql!3HEv&)kdyQU;zbjv*T7lQS|h5*V8PD@dJT z6Fe3@|6GeFPb#ATqY%TTAPubyB?B2J9?cgAJee4pt{u!zH{AaisF%Uh)z4*}Q$iB} D0X-aq diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__cab_background_bottom_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__cab_background_bottom_holo_dark.9.png deleted file mode 100755 index d8f1c8bd54f4f091e79389603095c99cf825cb6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%Zk{fVAs)w*Gcqy~4zxBtu(zuW zGMHg-@7EW5UBeRx4_{GYv)%pQnG{Mujhr&UNqv-pZ`Il{xB Xs2c0@Tz2whppguou6{1-oD!Md5lfPH{+~ zs&ZK!$GJ#`+OXn)bEl7O^s7vMLr%~_eO6@BP#xDsWzJIxbKZ~=QHwoEqiCN;6|k~9&?6VGu8wVeg}kjlqBUkXd|o%rApJ7Xx?SmelE6^*`N?mP%?P7H@yM z@176Te{31>^aeVqCP$2D`iM8b&G*loT1#z02OAN3)TGUD#xbYXQgqexFre>@9yw_< zoN>t9>xRrEIA?_IE1YrUo=P<2hNadJXB=4rbb%a&IXb5^sO2P4AoU2`8OJ_N3+RuU z?3bPMlGWJT{|mv5xDeck3qc!^Tkv+yM^@uWqQKxnw{tZ6G_7EN(=@mR#5tHjEptZL zT?o!N^e&F18P*7EfGlP>S;He0o_$19Sz!q7up>N&hdzT z+KgUQr1}UkLQL4KR;yolWSqh_YPX?lMz7!1&pz~~fd%z~_Z{#V_yT+aKE`}mgO%s( z*Zy2en({y`_&;C`{0061zkwyNiuqzpAev$qeWYoU3d{J#NzC8IACaX$H=;%xu?3!~ z#a`2j|4di>P9KpnLiZ0Fl^vDJdHW{hJgNDYHbk!VsHwq51hhtobGl;RmY>GHkg{)E zesWUhFRGl6)Eh$fMU__)%@X*lTj%8LuWk+fh;ux9b*`$4|A#h$uKO0E`Tzg`07*qo IM6N<$f=1Pyg8%>k diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__dialog_full_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__dialog_full_holo_light.9.png deleted file mode 100755 index f18050ea589eaa31233bc08e4f8a4e361747bc94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1003 zcmV%vbFc60S)hq5aquQtN zO>~Q-PMt}eDy?tfo9G5^U3x~HVu{=o-l^#5`3AXbFq#7CZ= zx~R)Z%-PngELWXE=jG+4wH{HY%RHtL$z+_dj#xsD@Y&isDVlJd1j7%A; z{S3ob2!NCVl}{yrl8B^V**9f-6IC==^T()w$-W%VAY54pg(^F>UjitZxrB-eCn8Lf zB*stQ-rl}17K`6RG#lbS(&{_eIc1V`#=6_}di{5~T>e4x!ZPZXM|a{QRmt`XV*pbC z)5T)(D?{j2cRHWXf1>hHw<=z1GC@s9Ro2lk0Wc$?r`}K3Qx5<^GzKt(+iwt@SwZ#Y z1K3Z>bSEt!roEr8rydA`NJoVD>nPSV+2(05UE>4T005_GAOuI89vS#iG4B18N9tN{ z^Z@tNBTj+gCOB47*w+ z+2Hb~>!f2H1$Hq!D=_Sb+i%D|qnZ-1^bbIwX<}v&QHjdz0&e>kOOQ$(hHgzP5DjJz z0f>y6M3En>w55Wi4nf3bKUf4p>o0~xvY>6}4YBjHqH^B)8ba{Lja`ks{5OurR;$m< ZjQ=n8%sUGgc=rGR002ovPDHLkV1nUn!$<%C diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_ab_back_holo_dark.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_ab_back_holo_dark.png deleted file mode 100755 index ce87586fdad7c3f56dbade73a1815d87f5271182..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}V}MVHE0F#_pdj|X638*yB|&~b znvtoUxkHLWAhsr@tGSM=p4+RfrG%|hH`*`HEKS|W!Z1T4M%rILpJlT+3nx%pm8Xki zNJU(1|8>5m1RgibxB4p@x|)jLfBeUv;d43e!tQxbqHq3Z2s?a}!N|Jh;=VOZ4VzY9 zX8RhiG0VhF;eeTMH^a<=Sx>k{oQh)fpLe8dv~ROs%<^E;uGNgw@5DS>_I;lwe}CzR soG5LvtMR4(w!N}@7aSHp`OCBa42#yV283Sp0RmdKI;Vst07>c9i2wiq diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_ab_back_holo_light.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_ab_back_holo_light.png deleted file mode 100755 index 5fa39648eea9a7bfeac8ddb5bf6e85c09db103a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}a)3{WE0Cr&NXsa>2ed=6B*-tA zfiWKl|?65kxRhK#++Zmg5Ax|Nm^e{*4IGBx#W4|d7$EWPZ!6Kinvt&<3g9LzX);eE75ncY#QV#~j-JOA}RF8Ig0cLH;we88+Ukl#IB{an^L HB{Ts5xCTW> diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_cab_done_holo_dark.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_cab_done_holo_dark.png deleted file mode 100755 index 34b773981837801c637779325082e9a27d4a3e96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 530 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyy8?VdT!Hlep$R_8s2l{k-mWCb zFPMRWk(ues=TE!Zq;`vU@7dA3?QKh=jGT1Cz5`tK3j32RBzNj{g#VD0=#*y_+uGB* zrO$BPxBf#nCr@HwkL0_|RyhM`(n(Jj$B>G+tCx=UF&hf7Jq(d^pZEJjov*qfJHua-|~5!X>F`c%QyOO;a=_6)mVRDW~VS`9NW=IZIQO_X}d)P zFB}#Y?>CV6)Tf>v>jL9$Zu~FJYQN_<^Ns^tCOI5=*MOd4@O1TaS?83{1OR*&M`Zv2 diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_cab_done_holo_light.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_cab_done_holo_light.png deleted file mode 100755 index e3ce1cd9c7a5c4277c53c80e48b11a8cc83ddefc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 446 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dylLLH0T!Hjp167sEr9d|smIV0) zGcYnu=+6@n%H_}T=kxQ)5ArVX?GaQImM&xqFrH);$jqA^oE0LQJ~6bYAv}!5ghN@) zR|=?krKgKyNJZS;bH{}a83-^3tlj%^?!D^w|NocH@Kj^=%sIE<_2e?KdO4x^IcM|? zX3W@I|47c`{kaLoO$Vdr9DHzB?6|_E>O*h+)fbs>*X`4)He{OmF4Abl8^h1Js;#?= zVr~jwTKQVDy7I+o%d7vnm!vvBnP+D4w3l_7_RhQl0mVm09Cu8-edu-XwvzJShXbd? z?Z0SQuE%t$w0Fk(s`g2@|4!V!&&k03f%|8cQVq7)+sQx7L9yWJ>gTe~DWM4f`JZ;p diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_menu_moreoverflow_normal_holo_dark.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_menu_moreoverflow_normal_holo_dark.png deleted file mode 100755 index f04cd8e2bb936bd39c0e3b32207a34da673c1e25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T>pbXXwBCgpa@e*kY6xE z!)$Fo2_R3-)5S5QB5vy`MMfa6dBg7S`5sf$9qO1|V=l_r8S<^U@BPIX< diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_menu_moreoverflow_normal_holo_light.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_menu_moreoverflow_normal_holo_light.png deleted file mode 100755 index 1076f75c68a78924980c9f7d112bc272f93eac48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@&H$ef*Z=?j8-u}AGqDvwLFSSm zzhH(mhLaaL{sXzHo-U3d6>&$;C^9lI@Gu>m8o~KVVA71@&j}T!ua4)=WT={ApT_?8 W2G?pIkq!Ak4Gf;HelF{r5}E+*;3b6s diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_menu_share_holo_dark.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__ic_menu_share_holo_dark.png deleted file mode 100755 index 6bf21e307ed392bf00fe80b162a6ce9115e62c84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 332 zcmV-S0ki&zP)h$s=>Sb2o({EW84x$2Sq@4Qvb1mj$j~;VIQBr2GX>%-APxay9!he7 z8W7h*gD?q**@0LXh%12j6cFzN;xHg)rA0Yl3bh0|IM)O5QD`2|BGz~0I$#-|1SL$5 zlJGbV2jtPKD8?58g7k0zp)`;V#9XwljI@z*K`Om-0V(CcdbDyt4~XM{*o)XuqGd@4 zDx{8=fp<=lEG6&%R0000-rS^s>8d@5ni2hppU0iV;YH8gwNa0%) z{Cz&}Jx|SbT`f+uL?986Pnf0|l@f5k0jz*^zeXXD13Pe$Xi*7R9^s5FmB7$P;6x!% z=kMH0V6IZ20v0@I38qpwTN6bU0_>(U;T<=GYX-1E8)QG}f-;!!681nE=wJ-aU=KPV z^-i_I3K%>@EawIsd5_!T)2R?x1}rE&N|%HcIQa;SqE5+gRv=Fy@M;YVKt`niqbhVk zpSlae%z=$G2Wp@TnqrmWnuKgf72^IDIDhdq{E7X5-;T%%62M`q*b}mOv3|8DyoG;R z;O#l^2#-VHDcnmy=|6xRPAT9SP9@+QP9YE&4z7Z?SGPkvc&h*a002ovPDHLkV1j;z BjTis` diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__list_activated_holo.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__list_activated_holo.9.png deleted file mode 100755 index 775d9cfe990280415f5f92216e36680ea01252aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^SB9BqfJ_J}x|eA?kj-2Y zEakt5vO}BkP~Qt%SLvw%}WbSS_}Cs1-=<(o!qdo{xyTs4A#B8 S8{AibjPi8#b6Mw<&;$T7F(Nzw diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__list_divider_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__list_divider_holo_dark.9.png deleted file mode 100755 index 986ab0b9746301f2dd9401829da09e00995621b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^%plCc1|-8Yw(bW~qMj~}Asp9}6B-)+^BAxRtXRm= az`@Yw&#rLZUbzUUfWgz%&t;ucLK6T(%Mo}0 diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__list_divider_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__list_divider_holo_light.9.png deleted file mode 100755 index 0279e17a123f8cbb3c7e3a9ce5c5af8e693b6977..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmeAS@N?(olHy`uVBq!ia0vp^%plCc1|-8Yw(bW~!k#XUAsp9}6B-)+^LX%RmN2q0 Ycy4A9FVZ~13zTN?boFyt=akR{01+Y(GXMYp diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__list_focused_holo.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__list_focused_holo.9.png deleted file mode 100755 index f25b4458e3b2646cf7ba2a04d26946c444e77e17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^SL3ZuflLS~q}cKs$YCxC z@(cE5U}!SA1tb}iJzX3_D&lmH1#$unaM{Q%ws~oxNoygWrNB4Ctdkoy*1u+On!&o4 TcZ2&1pmGLJS3j3^P6Eakt5vO}BkP~Qt%SLvw%}WbSS_}Cs1-=<(o!qdo{xyTs4A#B8 S8{AibjPi8#b6Mw<&;$T7F(Nzw diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__list_pressed_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__list_pressed_holo_dark.9.png deleted file mode 100755 index 0920cd70cf7d2a254eb75dd88718d182473840e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^SL3ZuflLS~q}cKs$YCxC z@(Z2`RJ_G~A&{%=>Eakt5vO}BkP|58vXNbE^U^|-)Eakt5vO}BkP|58vXNbE^U^|-)P-$X_AX1LW&_x;TbZ#9cjckdr}y=jerg;TgVl3z!1&^00004b3#c}2nYxW zdZ_-Wf*5)VugS&t+23J}V*z%DOHb#W|`Z#l>;cJ*L_P;jGoKD8nX4Z`xH*Q>s zTvTl`b;%gqS1znaOc|u@tz3t7=|UK<9Hr>BJ|D1%4AOYzE>c>YASL1(e+Y^`_iG?7 z1UL~EK(|`0e*W#*UXt~C{TfUweyI5sSBLVgO?u)p&e9+4(C=i^T1GuQJ|j^LdEE0 zfZFjzm@Nd117_`XxKDqSoJXh_wG-}tW_yHE!!B|TSvyio<6k9eTgoG9O0aTdZJ81x zmbul8Z%fpkT#Wc{ND1L@No&VX#iPVF7hx`c0JdkE;3e2%ZBQYi%Oe#dj=&z+_I>|? zOJi$dCv)FoZJG3n&>Qp|;vSo*JOkf=A5uR{`;uV-QwsX>Ho!a31HXV*se5TxFFA=4 zo=3!%#5;D2+DO|6R;c8b^-B2j{s4XhZw!t1m&l3O!HmBwHn=!)kb6yF?kI1MVX*Vu z<6hz)DH{^YBPWDzO$|0isCW3@P>L98oO;C$E5=4jGEPjLS?XZ=13IvJLaC?O;nLn? z=e?6_T^b`&$N3sK+o1N3^-DyB&=+_N>geY)_rHdJwBJ%s{^4(_WBZ5MLQM53U4RfX laXn(LVYMe-Njr@(d;;;gyUim^Wn%yU002ovPDHLkV1m`SB-{W1 diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__menu_dropdown_panel_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__menu_dropdown_panel_holo_light.9.png deleted file mode 100755 index e84adf2d41604323cdad8b15e7034b6137e02425..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 720 zcmV;>0x$iEP)!1&^00004b3#c}2nYxW zd09!jyup9SJyH%;E_KZI5Ed^B*iNJmRSj zBG=jNc2B+cMg+dzb=~X>SwfDye{PH^oqQ4$1^~*55|NVv2=ckIR8XoEqC|oOgc2g; zEPA&fNb-^8#Mr1#v(VQn5UdVR@QAWs>EP1 zTHM9Zaim5tPqqk+y4R~ii**RWgPIHWkr2Q-rv~$oD_;OFg!*vQOJ?oR%RhjSvm}}N zU}~@)A@q_TOphE%y@J$^Y;2GXG*T-_?U?-%UNYKi5n>WcgjmBq)+~pV5UB*Fc4!_E zr<_OV^tE=(@|l_%K9#lBPBbeU!!Q72CYl{ozqWE(s>}kg*Xy-fB`%jskbX;(+jyxw zA`k(lb8|^3?6_RfL_?Is~gyeh`O%xX?U(f{QJR|o`nX{VXzT_{UE(T9mKbLh*2~7Y>#wCvc diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__progress_primary_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__progress_primary_holo_dark.9.png deleted file mode 100755 index ab8ec69844173ccda09e52b81ad27a5df76d4cd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 572 zcmV-C0>k}@P)jR6%Q#K@^;MZ+DwSq^+h% zP_!xtf_Ukr^ybl{hx{k~3HlSfd-tNJf;W#6l*URbZIYUN$+x@DLlQ_#DhP=KbJ@4d z?3>3vm>B@rlxxLQd;P-m9-THgzpAxGG!1yW5D)4ffO-cU4S%t?r)YdGWOO4jhM%lT z$gSE=x_Gve0j_HeH8J^wOM08!a}xvEw9Ce~Da{Pz+J>k}@P)jR6%Q#K@^;MZ+DwSq^+h% zP_!xtf_Ukr^ybl{hx{k~3HlSfd-tNJf;W#6l*URbZIYUN$+x@DLlQ_#DhP=KbJ@4d z?3>3vm>B@rlxxLQd;P-m9-THgzpAxGG!1yW5D)4ffO-cU4S%t?r)YdGWOO4jhM%lT z$gSE=x_Gve0j_HeH8J^wOM08!a}xvEw9Ce~Da{Pz+J>LjV8( diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__progress_secondary_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__progress_secondary_holo_light.9.png deleted file mode 100755 index c154c9fa4b1afefd1427415950cc95644e96b27b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol;#0(@^pSp(uDV_kI5LX~=yyeON|NnuE^2NV1 zffRE|kY6x^FT?(YU#9`NTAnVBAr*0LjV8( diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_48_inner_holo.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_48_inner_holo.png deleted file mode 100755 index d36ea1538368f308d8587cd2db5e04a79a4229ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1105 zcmV-X1g`suP)^h zC@4dwTJu@2)y$`fYJC5=tQsC*5zn!f>6?NT1=5~cS;aCn;|Fp|a+Py-ic@scOUfJ& zv=)1Y6`LD3TbY5Opcb)`7WokUbh3+We9X@F-EZx-9c*VCdo0Ev5U{DNv6=7q%6Q1B zkS(#f_zg?hagJL&=(xj1pEcM#+AU;QmhbGy>mwxv27d5$X_gv=lG4BSe zz%pPHnY5+wFIf?0;o&$&FJ*a^_b*tCc@|)50cz^;3j46CxqA6niC6rmBws(YNMz)QIg&eD!&6R0ASFHp}YVF~`A zLUxToi%>@-e;`T#6t@f&@=_#;5TceF`2w{7B*r@`HEb!sPc`HVQ~{8tV&?vuK9o1$ zjQ{9GwyMaIsbK)BsMtrQDgcJ_2L=GB`_(3h$^>i_kYgx+ppTq<)Dt32MZ9Wi1zD2$ z191%zA*yJl0lSYHLrDhmuE|R3x^N-2UZ4`&J+ICDhIiG{`6n3Bd0J&mQzwIz&FYzG z=oaUnSKbL)QMXG7*Py9qjWT`W*(|Tlu;1-U;q{wT^L;PHAs@mXhs^Xr&$$y2P&aLj@-QCGEF5&aNJ#})Qq&9q-uJQWe=ot+zSrR+$EKE z=0Y0n>Te$*;gHjB>d=K1uFM_IoROcpbXjwluF)7_!ZiJRcsaXCmrmHgvlQZ^psj38 zztE#@;+XvS@xw>eNrWg-Y86Ce=_g@vQp!UK%rs{7HZyAaH@aKEfTQc z(CR%$S?96abl05G-F(|Si_LUV;?$6kux)>%v=)2DUfpwT%PQ8|6^&m$u}%%W*3rdf zl`oQNvN&>WhAa0khnps!G6EK_TCpZ6=uP_{^)H>%wyt5X^53?*IxN|0o#E77R`PdD zm%Wa|cNB9$z_AP5mH=4J^LP6!o!<(RyDvF+#7%B*F3D>^@) zG3au=^KjWsn^#jyew;NrnOPLU6Z$MNVeT*c)9TLijM8T&&Ec75wYjFybd#W68%QTW}f06Axoa$IU9~?Nqc5iru{em z%^e?{s+j1J=mX5HswJ)wB`Jv|saDBFsX&Us$iUE0*T7QO&@#l()XLb*%EUs~z}(8f zfYD-4D2j&M{FKbJO57R>QdwRCHAsSN2+mI{DNig)WpGT%PfAtr%uP&B4N6T+sVqF1 RY6Dcn;OXk;vd$@?2>^cl_{IPL diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_default_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_default_holo_dark.9.png deleted file mode 100755 index 367d45d4af6872ffd5610807de967a1ebba39981..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^5IV@O5Z)yv*|4GKK27r8W8 z>+k;0GL=~KF|b`_-$UEYYD+zyyS&)yVXNl0t??gUX1?=`>1r*8yO}Pi$20scVEo2) zLEC{{BbIS@QyIfsj_hxx()NvaZT;@2zc=_?$Y*?)c@oRh%}aoGF?hQAxvXQ0jPEi}VtKlG3D7PEPgg&ebxsLQ0R5gy A2><{9 diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_disabled_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_disabled_holo_dark.9.png deleted file mode 100755 index baf71dd9c54f03e8466f1fdb094f3ea79bf1cf19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^5Sb@f1_d71i(DG4 z^>_bgnM$nr7}&0|@1gBxwWS`)Z@9!i>)5EYHr&a|M6w!JI|P|)?&Du>4JJZ!|wvdZ(J9& z9oRKu8Fx38F}&r-{#Gh&-+0&7?|%AwgU^M0#&?+~u{_mdKI;Vst000C? AEdT%j diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_focused_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_focused_holo_dark.9.png deleted file mode 100755 index f9ff30e48885e33a9618bc62d90abad3939bcc2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^5DH%h2d^(ZcFBJGW1u+D zkS57{vw)OzNswQ#@651?3_Bv%1U7Byn=~WVlff@yMOe9C&7#2YM;XeMKxHkSE{-7; zaaS+zWMWd}aSfbiVa#>r-K_ur{WnfHG1;VS-=}$#64Fj3tKG=S;QE%GsN}5Z%HOS- zvZ1hKgW)aliu8nY=?}~{@O^o|A?B9BobPHp$Jc5Hd=1tQ_{!|?lHn5L5@rwf3498& z58|v2l)k>dd+q!WFHT*1y8L^9e~5k7SLqe<&pA8Za_{q=cqJF;9tKZWKbLh*2~7Z! C5RyIs diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_focused_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_focused_holo_light.9.png deleted file mode 100755 index 3da9670c7ba25f727a1a78946f880b6db4b2b4b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^57#@@kjSqS6*|Nq9D9vaU-W*iW0yzrE9akug2$HsXr#vuvDtFIf+KMpix zVt!*QkdiJ5@(cEz88(q&N93BorY(JwX2g0j_(iM;EBC8e6d3*}L%9;Dti{vCF{C2y z>gAnGOo}|NfzvFExz4PPeJxU zoYjHS*Y|g?o&Vv*scTP{e-H2vvCsM{y+ZyuXUALaecltV`*L BhM)id diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_pressed_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_pressed_holo_dark.9.png deleted file mode 100755 index c713eed3424254113cfc96ccff05333dbd8b9aa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^5DBb z70Yc;iuc`~d-MuW9D*FTKQ`U^bjsnYCR?AT@4X9Dkh||r|DkIR+aH58dKqv7DUp&O zzu=h+*A|?gz5PlbgXjENXJ>Alv*qNxm?ObAfbzwjE{-7;aaS*U@*OeYa0%=%woW$x zZlA3a$rs4F$6xpVZ6@D2YKJy-R>-~FTA23ePN2|)om?HfkC^Lar=4xf`#<}_*X$Dw zwHe$F`CJL%4eJB TXWwB1TF>C=>gTe~DWM4f;IMU2 diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_pressed_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__spinner_ab_pressed_holo_light.9.png deleted file mode 100755 index ceae889ec2a748a7401fcbe4ffb9608fb6bedad4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^5X@rHZGEsKoPtBhA&18U?^fAk1QiIfES z1dInEdKbLh*2~7ZIv~7U^ diff --git a/libs/ActionBarSherlock/res/drawable-mdpi/abs__tab_selected_focused_holo.9.png b/libs/ActionBarSherlock/res/drawable-mdpi/abs__tab_selected_focused_holo.9.png deleted file mode 100755 index 0864db113200b5442f0d998d3cbc096ab39f1e61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b~!VDx6uRgK`Qv3lvA+A8$c)&j_r_H=O!sfhDEXebEOa_E4@>iIWT6iMuK-bKs4<*B?URVho&-vIflo-U3d6>*}+9R-1st_RBn9GMp% - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_bottom_solid_dark_holo.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_bottom_solid_dark_holo.9.png deleted file mode 100755 index 575334699663b221b5a2b3251572a7c7a23ddb4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nET98VX=kc@k8Z|>$jV8FrZ@U7ta z-*T0WQ@><>I%v71J%hiqt0P@2{q!E)%~9Ermd_VC*s;IdoBnhS>rHk6>|lcSgpVF9 tjEp}SQ%vGx1w)$%c)I$ztaD0e0sua~Gttc^?peW`&R>iA3bc>G)78&qol`;+04`QPF8}}l diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_bottom_solid_light_holo.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_bottom_solid_light_holo.9.png deleted file mode 100755 index 8155fe840532e1d0fc25450729892ea73c4e007a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nETTu&Frkc@k8Z|>$jV8FrZ@J;?q zbcL8uwC8*^`8m#29p5Ib=%`p$wC&7oqt#odO)b{rdQv>$UUk^Hs0pFVdQ&MBb@0G6aYR{#J2 diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_bottom_transparent_light_holo.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_bottom_transparent_light_holo.9.png deleted file mode 100755 index fa4d76af93de31de153c6a7d41c05496bb14d2c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nETcuyC{kc@k8Z*AmdP~c#3C@cDZ z^MXtGfey<_%m2nWx~HUtq@RtOD!V+x#J|ag^QD{sZZM%<(R`m!o+Hzd-iC%RO>bP0l+XkKAqp+G diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_share_pack_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_share_pack_holo_dark.9.png deleted file mode 100755 index e7439c73a8bd9cf1c6b910e2ae57f7c67883eef8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^N+8U{3?$t(9|r;{o&cW^*Z*JuEakt5qI{2Auof10L#It4$bT;7Zx(fdpI&pn()C-;fYWjQ;zA= wrwq(S0;{uF*d|y6*=NL+UjH2WFDmksnaO#DOuwItj)83OboFyt=akR{0LVWt&j0`b diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_share_pack_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_share_pack_holo_light.9.png deleted file mode 100755 index e856a8ae22649d6d1c35a87b8a6a6b158d1b4bfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^N+8U{3?$t(9|r;{o&cW^*Z=?j1DO!;qld{C$YL%D z@(X5gVBq5Kz76Esd%8G=RK%UVV93j$Ai#2PszWoo%7ukY@*a*%lO}xdQ+Og2$CP9G x^eF?gk-+LK7Pbi%LG~GOrPn`){)>t{WoB|-A=B^YqGKRCJYD@<);T3K0RVbrEaCtF diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_solid_dark_holo.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_solid_dark_holo.9.png deleted file mode 100755 index 6622cbad34409b2e09f69e305455482ee107baa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nETEKe85kc@k8FK-lVFc4sN{QB_B z&fog}EEk$2&*T)$|Ch61%h`96?xa8O-xitu^~t0=vn)PNZ(|U lO#br3!H&B!tiEU`L+e4N?emv^?*rP(;OXk;vd$@?2>`X4Gjad` diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_solid_light_holo.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_solid_light_holo.9.png deleted file mode 100755 index c4272978338a232aa445ed5190abab61afcedb16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nETEKe85kc@k8FK^^+Fc4rl_yt@$W?82D^ReIqPjo#d{bLmpkiN+x lnf&F6gB^EeSbfn>hW*nwPPt#_849$O!PC{xWt~$(697sdG9dr} diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_solid_shadow_holo.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_solid_shadow_holo.9.png deleted file mode 100755 index d0df29d8b3fef9f71cda9b7a0975c68dcfb05685..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmV+-0p0$IP)(^RAa&-b-qmfdL= zKY^DZ_=R_1v^+>Y{!mW=MF!v|2#Q>Q>z_&4i6T94j-Y4q`P>I~g?cE`S~^QhBCU5$ z-8a`dJ38hrt)qwm8XJx0+%VAuW=z7Jg@`1pBAUrf#Ef=wZl|UqH7RO)u1OwK(@xK~ zuV&5*5lN0GQV~igR!o15*n1TfDTP6ilQ72>QBJOyK^2jQYHlAzlrUMuFCtAA$s$=K oi)4{qME3aCu~lSF#Q4a(0o}otDK%H_Q2+n{07*qoM6N<$f*T@rc>n+a diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_stacked_solid_dark_holo.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_stacked_solid_dark_holo.9.png deleted file mode 100755 index a0d9c1b957ea4a6ce62abd120668610d0cb2bd96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nETEKe85kc@k8FK^^+Fc4rlxca~( z?t=fRa*SINS}wBuewp3mefy2x$=b4i8MC*B`RkorJG1!P69>HDUX#kpcm>9d6MZKb ky7}`x**qcrtNL{AY0h>p*ZiBQ0JN3C)78&qol`;+0O3wK)&Kwi diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_stacked_solid_light_holo.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_stacked_solid_light_holo.9.png deleted file mode 100755 index d36f99fecf223779432fb843b823c04d739f05cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nETEKe85kc@k8FK-lVFc4sN{Ca;{ zvU;8e%Y`P%GdTtG|K%*$a`xS%JL%8+w?$@ueKP6JEX#C%J{El7iLS?_f2=|R(l=Qo klfOK1u;Z=_t1sHgP`H~Vw5GX>6KE@gr>mdKI;Vst03NU~l>h($ diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_stacked_transparent_dark_holo.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_stacked_transparent_dark_holo.9.png deleted file mode 100755 index 5ad475dc3f478734be31bc5763ff494e5f120914..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nETR8JSjkc@k8Z!P3yFyvu&IDfHo z*MFzV3!h#&I<8{wJG6*7%`^0A*`zgvpO3}4Jy+2bzzZhGPxw0F1DlG16;n~mnRAu= eo1*Vq{$#i=98+;OAz%&ALIzJ)KbLh*2~7aXVK40f diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_stacked_transparent_light_holo.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_stacked_transparent_light_holo.9.png deleted file mode 100755 index 6ade5eeb37d8388813cee512f8adaad0f6c15397..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nETcuyC{kc@k8FE8XhU?9M9Fk3-& z>Hkf73eN%?4n{M7dy#!$d2ZSCCv)eTUt5@6!ODmi{A7$QW>Hb7V|gN6#Q)yLqkTHN Y-hRf#&+ODnfL1Yhy85}Sb4q9e0PNo==Kufz diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_transparent_dark_holo.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_transparent_dark_holo.9.png deleted file mode 100755 index 5f68476796fe86207f9337e1b192527f26bdad8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_>3?$zOPHh5G`~f~8uK&RR$TQyh6iBL@$+!V2 z=8_=4UX$}ugZGZD`!ijB{nbZ8m@5dbq^8^~l;OXk;vd$@? F2>`TEIEw%P diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_transparent_light_holo.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ab_transparent_light_holo.9.png deleted file mode 100755 index bae33139e1c3ad50c54f3466a6d6eea22bdf2e4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_@3?!2S6O@1yPk>K|>;M1%flMGU-uiTUv1lKV z#Z(gH7tFv=HunDyu1;UEQuS2t(=%(&d{0o2dn>FVdQ I&MBb@0Ph$gIRF3v diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__btn_cab_done_default_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__btn_cab_done_default_holo_light.9.png deleted file mode 100755 index 2283b4c01f31c24c241101989a028a28e662ff2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^tUzqR!3HEvyN#v+DPvC;#}JFt$r%|L2@FmD6{OlE zCs-P=E^ay;FECA@!GWvmzw+t@{SPuqdTbmsKKbP0l+XkKVJ9JJ diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__btn_cab_done_focused_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__btn_cab_done_focused_holo_light.9.png deleted file mode 100755 index 3c909b51306d684dc9fc4deb674ab1e1feb7004e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^tUzqR!3HEvyN#xSIG!$!Ar_~TGcqy~7@GboNVOeo z`FL&lz5>PtO@Rj=>T@VLG&w|ZbqQ*{RI`whRrVK{_2=K=E+vL!&S{*=@1z8QW-xfV L`njxgN@xNAaNr>U diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__btn_cab_done_pressed_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__btn_cab_done_pressed_holo_dark.9.png deleted file mode 100755 index 131d1030c9d5b447ef62fc8e336d9d3950ff7519..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^tUzqR!3HEvyN#v+DJxGG#}JFt$r%|L2@FmD6{Ok@ zwtT#{-1s4r1MA|Z!|?(x4J`lv|6k8`NJHzTnuV0CvcJHrKmQJQDKT8Re5&^Sxg#LM O7(8A5T-G@yGywoD=q9NE diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__btn_cab_done_pressed_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__btn_cab_done_pressed_holo_light.9.png deleted file mode 100755 index 3e7dcdfdbaf66d51a90633e6f601bfe71b0c5069..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^tUzqR!3HEvyN#xSIG!$!Ar_~TGcqy~7@GboNVOeo z`FL%)@k1sD*2PVS;{{wASQ@v8h$x3#@+~m2a+{}M^7C)Is4GMKie-X3Pa7xz&0z3! L^>bP0l+XkKapWP} diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__cab_background_bottom_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__cab_background_bottom_holo_dark.9.png deleted file mode 100755 index 57b4bee7a242cc9bbf43e65ad2ceedc71d36aa0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_@3?!2S6O@1yPk>K|YePeW@z$pddUim8qQBRx zffQp&kY6x^!?PP{K#rxSi(^Pd+}pE;ybKCFtQY4mU=%iOWF&B=K+SXhAV6YrFz uFK_2r#jyInHJRh3w)Vi()cgFoljXuaYT{#-xpo2#VeoYIb6Mw<&;$T0ZY+EN diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__cab_background_bottom_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__cab_background_bottom_holo_light.9.png deleted file mode 100755 index 7c306202921cefcb3d372e80a7dcff6ab94245b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_@3?!2S6O@1yPk>K|YePeW@z$sR|NjRHyop_G z3#1rJg8YIR9G=}s19B`qT^vIy;@+M$KBUjCWZcfgt!NLM;pLnM% ueR(_2Du&hnt;rlOwY3MPrrzhzoh%pbQ4=4t%(W9}2!p4qpUXO@geCy{l`eGv diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__cab_background_top_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__cab_background_top_holo_dark.9.png deleted file mode 100755 index 6333e4509b91f95d8ce66ae523418a12c9d26fb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 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 diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_full_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_full_holo_light.9.png deleted file mode 100755 index 172fc3b5e3caf3357e706be2a1f0d91f357c8e5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2302 zcmV2ok^m97efLZMJ76bgmHN3TVPgynL1iZF^o zv0AMLkI|bD5@Z+S7;_RWD$X2Q#-Gi>; z=tN2`078B~PH0>efZ`B@1i||(&~g>qMGRTwTrQXXbnj39hPAQB*)bIg_=HbA_WGzO zR;yL=j9HSDjSEl*;KYv!A@o|O_=;IUA}l9+ObGitX|Dzg#M7mV*iktr2nZlVbl%^^ zH53Ym36TIhGR!|u7{3PC~!L=Y2z z32ZT8B;zY)i(nCqF!62X25hwu6@!!-aVKznAwf{$S4ay%(<6lhDJ|l}=KVE%xD;tO zjxokGV%Vil6ww-?fi&aiwtz1TI;KLw!36;9iSC?$w}w5ZTIo^H5hBZ^Apum+pFjWp*|TRqUSD7TX^iIhX;RaeQQ zE(9uq^MWzvYwRam(2Co38gn;jAmP?U& z&MGvUhjxmcRMYbSg3kR zZt4g}LPgLEq&hYm(J$si0u;4;IwvxY6?fp6l#|X8fH;pmq-q5ISi1H|(Ge;Lg>w@fkyi)P5d7;2~0$MDQ@!DE$`cg61AQt41xJiqTo9Dlsio7bTA}sD9BZvH#!%wZ zmJ%ND@1^DnZ%X(Ld?$$A6k0J~NE59ixD&!XX{j@~=b>7mwKZvxCyp*B)cAo?C*Y0% z?1kZeY?X^e-9W)XxdpU^5OahW`IAUpYa}@W?W5#&t4q8l2swcYLBS!VH7P;dBP@_? zQAk2?GdMjs_n0oBI`TV#(4X2ifxe2hDg*@upKxQ&K(mtAk|`HJPz)_1HaAZ&&GHf7 zsz6IO?f{EsSe^=LZJ-DtRGZRNi3)(P24xANDG)6Gj(#dNGOP_9D0K*+?F8HR`Nj#&1(CYoj<+oYNw{1t4Y0L^ri-RBp`1VD6hPVuR0IkNiMUb`EeV02O|F6c zauGd$;Lv5&C{!~b&}Udb7lOKhLPE$D=wt2>b>Q`^nt&r(EH@_=La)06a5Fwnfw+Sp z&{C)%=8X_pC077s0o1}imRwSiS1dcYq8ac~BtElCsZ+`Ul=zAmLOFfPAwvBY@Kn$$ zk{zOiq+$R>LAX{rQ>;#)$VHAb@IJ99w*HlMq6mNtA~I*7`@~Y7+@e^8prDZQ`Pk}@ zSYXq1DD{)3Sw!SFBRAo~AvKngUU3Lg#cu0$<^+@bU0;P_H1st~XDv}F6a(QX9$Rbi YKbh+rFQXz7g8%>k07*qoM6N<$g2q=E^8f$< diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_ab_back_holo_dark.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_ab_back_holo_dark.png deleted file mode 100755 index fae962bd20b2c584b6a561349d008b3dfa9b4e56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 619 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyX99deT!Hle;R38CJ>&p+uO!GX zn1O+@zOJFYsg<>@v4u@Ip}C6L$%xChGniMdx-_q>f>YU|CXI=|TrI~|x;8?uz`#*7 zRm{$%vdEM@T_al7U(g|+`+H!3I?x<0PZ!6Kin!Xz;rWLRcv_r;Htk7PFSEL=a<}@u z?Z5x^TCySht+mf4H~cQJ@_O*s>Z5PeL^#WpZzPF!Z_R7u$*2p=I25{md*f<{B^t#H2C?Vos7Wx# zHs0RE_)fsV=lfYve#>(K_Ph2?@UmfL+rCol&!0!~T#3 OWd=`IKbLh*2~7Z()@&^R diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_ab_back_holo_light.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_ab_back_holo_light.png deleted file mode 100755 index 1f3aab6ac51acb1de4bb75f7cc26a028a71d872a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 514 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyivoN?T!Hi;2MYvMt$m;c6x4mf`6~Z!|S&>j?4~HL~U^oaf`-U3}|--K>M_XEca?W?AyHOjfK$EgnR$;T z=N`Kp(hSrM@CU%evd=bf=-4w^bQmnuhmUH-jd<6WZ; zHl4_>Rk2U@t}L_t|AiwlQ891B3C|YS1B^O3M@oxo5*z)LB91b?+QOQX_r0yH)YX2= zvK_aW4}ZVF|MIp0)1X?{@CS{e_APBtKk;H~nV$PVB{N8HV+L1tOj6 z``KDz%d4l`HAyHPxAByb%b6xG^S8m<-YfXS7v>b+zlZNGcwheZcvv-P0dQ7=MviH9v^t)=yc559VF`j43j z_pMt2oAX|`goy_Fm~UMa9d%t_^^2qU)cXl;U0e%IRZSM> z>7Ksk_VioOmKv*1mN|c~ELg&~mMikt+LpAdYoES)QG3#uo404uV`0ytJ&!XS^rKz< zU6j9{ob*(;{k73gyQmwdmG2d+82l2_J(5-Z=Epp_^THpe+eb5HIvzUo?fW(va5{7P zd0GD0trC|9zjsRjleub%YeY#(Vo9o1a#1RfVlXl=G}JY)&^0g*F*LI>FtRc>2C}UT z3_|{Y+l-q7HAsSN2+mI{DNig)WpGT%PfAtr%uP&B Z4N6T+sVqF1Y6Dcn;OXk;vd$@?2>?&0tquSH diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_cab_done_holo_light.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_cab_done_holo_light.png deleted file mode 100755 index b7ff57c62af451c5734f75131f973d033c2106b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!o(K4ZxB}^s0H&>Clmq(HwRYDI@vTX#yTz2)yl~tNx+3G z)lfCkqo&g`Le|bP-7QQrgU6)HAS=X}KlkUqOalf6#(Yl~$B>G+x6|B<4;cu!m8(XY z9eZ#g+sV5@z(aBG_j&*SS1&rs?$0Ed`13%@vFiHwwYxa~eO8?wQ?w(BnQ4F5&WBfQ zyDqx#nEbM2>f)6QWiyn|-4{&$V77a`WT%wYWNu_mw0LY<+weF}^2egO znLljb{%fE2y6?F%hq&HHOJDh&|BKQpi={1kI`3ckATn#6apF$r1M~mnop`P1&Zf_A zaa=x6=dkjUI%$iL>mBpk_%BOHol=;6z}ZgsM%j()(po+i_e>KG8dZA}qt1 zvEW$n|824_rro=czRj79Pu}&Yy&dac4(S>rABK6N`tGW)q$MJLPW{$@>q>vt3618^ zCI6yt^lwXCz%wmjtsVWebir18#hxST bz(Bj7@IYM0XU^w^ptS4h>gTe~DWM4f&y(V6 diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_menu_moreoverflow_normal_holo_dark.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_menu_moreoverflow_normal_holo_dark.png deleted file mode 100755 index 84f108f964c17aa25eefcfcec5a1de1cafa0805d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0P3?wHke>@jRu?6^qxc&!&(3-C~KoO>rAirRS zhS}PF5YW2k7*8(k?>Af}__0@)dH+*|%^DMQ4gsYZ NJYD@<);T3K0RT2xCOrTE diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_menu_moreoverflow_normal_holo_light.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_menu_moreoverflow_normal_holo_light.png deleted file mode 100755 index c7363931426646abb1c245e06471055a823bcb57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0L3?#3!&-4XSoB=)|uK)l4HwJ^LW@0OVg3KjB ze!&cB3@0yg{0DONJzX3_D&pRrH{@kt;9z!ikW_ocZX0^CgJGFa-kS?g-pa8DC39@b hNwhQhWdDB-o78!w$5$%MJb+pmJYD@<);T3K0RXPNDNq0a diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_menu_share_holo_dark.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_menu_share_holo_dark.png deleted file mode 100755 index 45a0f1da0d01b7c0ba53830285c67d629bd0774a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 699 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~2MoaSW-r^>)^McjrWjeSoS8SCOEBs|%|?VJ7D=T9Yz_dLJ8 zJ9zK=&-=vhubx}{vF6<8-!m`2Et8%6G=f2_fi-~)r;kY>>MAgRkm@i7CT&PKJ^T(I*&Av>d6O5U0r~;hkX|;LrY6t%e!5sze0;lgN zzhmA1v9d1mdTWRDgJXqP4j5dhQr@DSSRpJN-*(9Bjp4$N@%tt%vt{r<#9TCmVT&q5 zPY_dpf5x8W&TrHi1EzgwuzL61gP~v}`*h7_ev9YX^%66WzmeOz)Rwd1sPzfWyZX+; ziqW^(w(Z~haJj|{8OsISSA~|G@%CQ8Y_d#7=yl$KAFm&t%#H|W$kcQ2;yBguIO76W zkG?He)AQ@KipLqRU6Nb%FPk$;xS@jW=|$x{C80dl?QT)`*~FQi^@N=fie6YGbN2D| z=`W4NG-chmgqp9bsxquQQuyVroI59@gwb7QnV5NMi~&p85J-Uv+l!N+#T%5W;<7yr4}f9Ow$JGA?da_{7}kE@t}@ET5LG{B2CIDTQC8`Twj U_qmZcFi|piy85}Sb4q9e0Mf@O?f?J) diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_menu_share_holo_light.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__ic_menu_share_holo_light.png deleted file mode 100755 index 8f020971892dd351fac3de20676bbad717947e56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 838 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!J_PuLxc>kD-xv&l0uaXVChZK) z?gV-@pd`pIn1NxY@f0T3=~IOytGd%`nkU8CMsaGhgqAnuC~$Z739x77@%kE0aMozZ z2sH6f>k)H_Nw(KiX_qdx_Tlr=_ZJbjaBDS^cMMi4kToleNM)bYc8-C8ajU0`V@O5Z z+pEXRUKt29JUnxP^>)KSfhr*{A&ay;P5wRWHD@G}piG6~ni!-A1d|ay}`zw^wXKUw2GAd&Z-1OWp%zoF5i2<|t|| zWPGA|;WEQ2F-EPN1NYr;@d|>m}f}p zqWeNzRtz!+I46q9F@0z-n>0z?te{bd(WsQcEJ1PQQbrYxf`yDrI1_G49k85q>2=Kk zP37F6r%VB77o4h{8M!iAjltY^O6&3jcTY}U{R#$$??n~s{@t4yoBCSeJcGv*LrDuO zhT3y(!JIZ`f@|H{tz-VSseD^Ehila))^|BIx}HhG&r^RM{+h*~nXcntx|O3~4Woq~ zquIZs1-didF)%SLDQSrJ_H$grEakt5tn<)kdZ-wgW+I*3d`aPM?{`93cWEoC>xPy^`*7oVM)y< byVa-omlp7bP0l+XkKvh*hd diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_divider_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_divider_holo_dark.9.png deleted file mode 100755 index e62f011d45a2c4c61a60b6451bec014a557a5188..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^EFjFm1|(O0oL2{=q&!_5LpZJ{Cp0wt58!#o&?v=m gn8lDKU<(7oW*(8&@UL&}fT|cgUHx3vIVCg!0O}VNC;$Ke diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_divider_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_divider_holo_light.9.png deleted file mode 100755 index 65061c0f45e63fe0fea0bfad9c71ee52c07ef38e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^EFjFm1|(O0oL2{=q&!_5LpZJ{Cp0wt58!$3;rOwB g4O4-x!vO{c$tv!+&aYQD0#z}1y85}Sb4q9e02-Eakt5tn<)kdZ-wgW+I*3d`aPM?{`93cWEoC>xPy^`*7oVM)y< byVa-omlp7bP0l+XkKvh*hd diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_pressed_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_pressed_holo_dark.9.png deleted file mode 100755 index db5191bc6d4264946a682553b022135578cebc98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uk3?!4(jyeG;o&cW^SL3ZuflLS~q}cKs$YCxC z@(Z5Hz`(J^eIbym?djqeQW2MX%8-#kfrH^-e+tXu3r9qrGzz^jIVc;EXZ5AE;9*J4 dCcD+A_?H&&syo-KqyV)sc)I$ztaD0e0syTDCZPZT diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_pressed_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_pressed_holo_light.9.png deleted file mode 100755 index db5191bc6d4264946a682553b022135578cebc98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uk3?!4(jyeG;o&cW^SL3ZuflLS~q}cKs$YCxC z@(Z5Hz`(J^eIbym?djqeQW2MX%8-#kfrH^-e+tXu3r9qrGzz^jIVc;EXZ5AE;9*J4 dCcD+A_?H&&syo-KqyV)sc)I$ztaD0e0syTDCZPZT diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_selector_disabled_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_selector_disabled_holo_dark.9.png deleted file mode 100755 index 0150f63ab752b7fa96f774ceeaa1b8cbc90bbb19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^azGr$!VDy}M6D+PDWL$L5LX}#2mk;72eJkFiiLp` zYe|q_a05eq4a53X>$d;}EInNuLn`9lp4-UDpuppD@i3>zrY`1)CH)J2uU9&vCd|V0 wy}S9k?6n`c@s92*&W2pxBKpt&a#iwk#)k`JUv8UvToPoFr>mdKI;Vst0QY|}cK`qY diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_selector_disabled_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__list_selector_disabled_holo_light.9.png deleted file mode 100755 index 0b261f97e636fb501b7dbae27a9282098a3f8147..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^azGr$!VDy}M6D+PDgFST5LX}#0ssI12Qv1r?zI6@ zEG0pH!SX;Y`77jlfP8aL7srr_xVPsHaxxfjIA83!a7i>~!2<@dyY?8OR-p?Vt(<)KXNk*dJ1<_`!jRpab6RMK;Rk47fDU#NEX#7yk4(~&Fr}L7DZp)K} zK)DDZgb+dqA%qY@2q7)3S*px^wsY!a9l?~jW2$HoDfOAoDc4?$q=mJH$Q@HesW|pH zEqI5t5pt#=^`ykNb$bDA+g_!6r>E#0Ebxb)V~E)@66{HSu%o+0#^7QK=<56_<*0g z4?VWXMFRkJB8s~XX6q}?LEeWW=Ef--P!X+fp` zQ#hbt=1@CWv@?Vrj0n$wG-wfB>s2&!$QdDJ0ulZgw-cuRiR{Y>^Hj3K6cvDZyr8vA z8lxp5*y$r9!v6G_XAF7`2PhmT)XW;J_(x39;8bKfgMu`e! zU+jWXwIOOF0-q>8C*JQsY~7_bBCuA z|Ap1-2&vJi9g(t&*dI@qVtrbEm_q)8uxlUymW^N&DQrSTF2REQdw9B(B*Fk-L?96w zfdFVX0=tCgq*<4>5rKwy4p!?>V+1b~mqyqhPm^M8N}pNlWK7Aa(;L|rtB1{dT%;u; z=)dm(?jeLfE6zhUB!2hW01y9MdY)1v=ujhBx3b+Xm&>Pd9KV)clx)K|j$bdA%O^}( zPFj=H`w_B~E-2}`eIdjBd_I2}hT(GvVW{|jkQIawhG7^!pU>wnc#H_%SRreOrJP6k z#f!~#`~_1^!^gPqw^)9R`+vop3DslHn(o!PiI0dTt@|45Za=)m1`%IwEW{fV$LVaF zE9RVsAMaWMjZlg;f(R_4iy{7r`=s=`3SdP<&^M)TPHqgUw5?z25;3$902*NlyMU*S zpa+j$RH$BIEX`7~H`b|A%pl=Pj|o!QHv-L&MvImjnCmfv9y@5Gq|A_|G$L4MNvqdg zg%(@J38}FG4N!(%uhEggMhM*%9HY#I^l zO-Wr$p$z~$ref=30GgqO)XJdORd}!BEq>NeB8p9{v^kJo2|NxCQwf^HCpGf6X;Wp4 zg!hgmb$FtdtQ>ASMriqL^@|$FBEhNWjw@zMktp~+Gzo9nO1w>OhBUKE#}ER(1L)vD UI+1b(O8@`>07*qoM6N<$f~tseq5uE@ diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__menu_dropdown_panel_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__menu_dropdown_panel_holo_light.9.png deleted file mode 100755 index 93066c8403ddaac9b19571152ef499620bcc0e02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1551 zcmV+q2JrcbP)ZMyJc+a5x+ehm5NR9U3;9%`Hyz-(tJnPJWK72_ZxFO$7HJ!wl=MA(TM` z5z;&LLlB#EA&f^$3`&>pe6X)LdJ&`vfROKm-xd+jMbSqLMZ|438|}{L$EEgM9M^%w zHa{i`W4qmEM~t#0eOdu-0W1NOh@<%YUknyuBI#0I?3#!O*zRI&T@|+kOaOda%IhNv zM;99T5trXGZJ+ZJPec%b)$c$hhFbzf1btKUoQ@WxJHBtqt%Djjh@==IkkXLZmr_R= zETUs(|D2YHL30h7B}jQ1@s(0WN*y++$>%9Px0_7;Q^61da}ymGVa5oGC6I`(Se|An zXj@SBzbdSFK)Um(Fw#d8Mr2~>phE(63xW_TA*G~C`G7107k~`S4FDISDe;mJcscGO zI_^QW2+SjBmZ1U=9v>gytZ(L+77q^(-%!w_2qCD0PZix`L1IaO$h(b>d0@F@G3Eaa zi55W^GL}q#AgNiNjxa=>FZdR(r+ zxE>NCSff^sd0^fBMHn)m#E-cU=7+{dF-K!9f{S1|kOWYSoDj6e26s~&lfViRc^MJj z^>Y9iF9eSfmVwbcxJ7UPa3MH8F;)otZ%)TN7|p{_AvpQV#UO5SLMWM?>!O$+C0vaD z8(N!X1GsBg3ar^sKmkXku0dO*!9}nfXnYiL)Hg=pYKs73(^zvc9aG}t;{#B5>C;Y2 z2$?l`wfXukgc)%>9s%7AsDyH^rRNDOAHyeHMgYzG`@1jfJOi4h!RzZQK)65|cOA0& z28%R3H(uBEzOL&YU%_z=>~=fscDp^gsmfTk*1@j+TejVzGC zpG{n`bp4r^(iKT*Io^&x%OHc_WZd_EkhCG`k)*sFZ|A&V23>!#)HToxrIRJ-1q1Q~ z3qHxB_z~+bgihSWK3otqlC9O%9BoMC(eAot5j0oOB3|pwbjUE4*ONZd@_Kxq z*B8(0XhE_FfV`ZZwcn~gXn8&5;sQ&h03_lPHzc@QD2L`A0DB!p$qE$r97Hn6cmgfM z$;^GEI@&qEx+o;VEJ0ZAK#dKOL6F|xU|IwgE6|`&x_D{{k^myy5)6fQcS{yR>LIlD zb0eL(UISu`k;Dp-=L_3_9uII4xG36?ZZ5uUxd1Up2yq&z=dNHjN&oIh<{D_CLJUbUG4w?002ovPDHLkV1n`$ Bwt@fv diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__progress_bg_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__progress_bg_holo_dark.9.png deleted file mode 100755 index 9371dd6001e52b3db70ce536871b100e52836122..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 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 diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_48_outer_holo.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_48_outer_holo.png deleted file mode 100755 index 14143c51c351a56446b86b18ffa534c4543ec4f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2432 zcmZ{mS5(u962||5zy>53*w9%B3P=?aA_NH%FrjGZC`F`)4nioBUC=~8AW8|nWPuBU z$_Ax~QpE+Ngl3~F#l&Etsjw_Xv$*Hnhx>3JzWJRg->crS6J%m+QIvUZxhV?Jo-M#nxzF{J^|38LuZ7p2A{3`Uq`=6kIe>?XjoG zr?GU9y(f-uD6ci)?1uQVR4SRTa}|zrSmC&X%{3Uu#s!v3xTlSKYl2xXRH=XldiG8v z(NTpiD;+Y~m>M*QdTK>xZWq^1Gi8i~5S7o}q&SbO8eBpO0}glmjSVvH7iqi26bB%| ze)qmu=vH{`#f$>>(djQ0^Nd<2H1NqlRYSvb%bfxVSE-6hyvT5}iWKJBsJYUTMmHlb zv{AxVJ_-jqG)Isz@a^K$cM^+{e$!&jnX5OO8E8XRNKBd8M%eMRN2h}U8b(CNyXF_g zuNUp7s?z=QD$}|Yd9ZAQ6_1dXY%HHkm_JujD3E@{yoa-`U00;ZS$y^Kch)kpoM#-L z_hl0hcTHdzz3P<)L4tEt9m4YU94$VspFs>kyx$G43>YTSqKXzilVwxd7qomBM?e)0 zk70Hc`|MK3$79>mw09q37_K`7rCCb2Je8#;R&l3wIoUvgp*l01y`!k-Fb_5 zLjfJM*_>#E9is$M8{y8UF zc`)}6IgHUUW3OdBIJ8Hp{C;Gz79e0KH~zPbyGtCwB=d&F=mttg3`f7;P(54xp{|RR zuCSG=W?@N(vW>lt2EpQ^z#T{`#xM4!mdgzNHx)<1u}$v?^g+=6*9ecRo#a#lbymZ)6-p6z^Oni3 zsLEXV)_}Iwfa=*b4{k&Dd=wxu4wfdbo>!(imlp)*j4pv5ge6;)9owM4=9St^swSv{ zskok>E#MxCe6UUVusSMJNGR_6U4pG5H1hlHX%(t~>nKmo-|d0-{MbUO&bU~mKcE&# zK_zv4|CD1!H8jAfY`vSSl6kj5Wt9loIBf}POwl~4S?>?$T&{Mawq7O5qkqy#o-A4N zE|eq~B+4&zVcuWC$vrg@L14-|z}_N{7ai6X+LIyj5pcb|jwUl|0>Ek~Th%i#NI{1_ zBm3pUiwMhzLuXI=foW(FgEeV4z(3A`*yzwk~f+h&vY#xmxsf?5OY1hsd ztM%beiwI=D(k-wWDn9)VJJk!~4z@|bN-=_~*}T5DfK5!C3E@eSEsWaR*+?aH|7J32 zC+By&%_SPM+AS<3m|xNxz3pqO+_l<53yw$fu1oeLjY&kkfdiF=Q*Wdc`etyM*rdK( zp22kBzFv%4ur^fuXEGM-pX|Fkd%Nq2l6dRQ2XKwJF@_oc*%do|>Y6Qv~!9EN3 zF&dggK*AU2RyOj#FqbZdzB>B~aA?KNhqMjCP zxg%^}e6-VnyS`t)yIHRQ48~-EkCwOT+tHm-FNve|j%NMGANQwdwt$uv_8B$5dQ4qt zta;CYDP&5a>BeK^j6`R(AiCG7VaMyHMlZyJ5(>(;W*&VnHGV2AuFnNIz}wiAT7{P6 zzLG`Ao;5|df63pAJnK+9#KTd^>$h)+arJbu4vNUF`f^QCm+L^AP{SFHl{TDz|}ZV(SF{inp3522LyJ zSw}w{j~U+S-eU%!n4i!>i<1qPc*uvvdn0Equ&#u7KRLHmgc+YBp73B#_8nO(jI!6a zd|^=Eg{Z*a-EZraT;7p!4p4Bd9(wNu7coSR1qusz_AQ_YwQYlP_s|#mVMCws=x<_3 zw)$>kM#p7l7$^lrSc}QL@p{n?})PR^#Ne#?) zCgB#K1aGkR_pfe{pyO!Rvn|^H>G<#YXY-5pW!C!5cE@?0?1Se-EtcRG8{ivDI_Xa) z9RNV-BayoL#=1yj7vzbP28Jim7+rm%lluA~Oy{}(F+^Mn2nnS8e?t@r{NcbL_hWF!{4*;x%LlxuUCHn diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_default_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_default_holo_dark.9.png deleted file mode 100755 index 1849054209800299a4b9f37fa28b8ee99a72a8c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^dO+;N!3-qj14UGTlzo6th%1mjg9H5k{~w18R2Zl? zXOGQEASF@~4xs978JN-d;P))odW( z`q1;rw$5+&zt>+Y3*6zv=C>)x>)o%%I_(=%_OHD!sdLlrb@c2H8+ZJ*e!u7Q^R2D^ z+jln3KdyT1bEXaNqdWUpK6aJeD9X#X+|JFH`z%Xb=JuJZY3s^P?mQa<UkLqUsTvNuoU%z>~`?sIkyH3APo_8ho+Vvmr>KWDubIhGk`fVf7fefCm KelF{r5}E)I<(h~9 diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_default_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_default_holo_light.9.png deleted file mode 100755 index a368065eb02cba20bbb19cfd39e86b638c58c708..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^dO+;N!3-qj14UGTlzo6th%1mb#sU8S|BpikDh$;7 z_fgy)ASF@~4xs978JN-d;P))odW( z`q1;rw$5+&zt>+Y3*6zv=C>)x>)o%%I_(=%_OHD!sdLlrb@c2H8+ZJ*e!u7Q^R2D^ z+jln3KdyT1bEXaNqdWUpK6aJeD9X#X+|JFH`z%Xb=JuJZY3s^P?mQa<UkLqUsTvNuoU%z>~`?sIkyH3APo_8ho+Vvmr>KWDubIhGk`fVf7fefCm KelF{r5}E*5=X(wS diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_disabled_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_disabled_holo_dark.9.png deleted file mode 100755 index ae73baa789aadfc5eec9d2f21bfd815ffe7c507e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^dO+;N!3-qj14UGTlx2WVh%1mjg9H5k{~w3U8KAD| zuA-ShN~k2rFPOoYO;?hcMc;ryia4Jrb(VIjv*CsZ?B!^YIfjpdss0u z^J-k}|Mpz**7y?#47Ha&iLalN+Tr`{_OH1I)vVKYnzo!j`u2Y1rzhLPTc%fYey}?C zw=VA3X@zrdv(@wNyxTVCcJ#U2;|tHmgzdcvHHU7i_L+zzc;_K(6cKCj~{cG+)HS4sUrY+}>zP(@h>B;u+mg&`;AFR&( zt&2N$TH)N=Z1uc5@3zgk9epnM_`xyLsGiDy~W=YWK9`0Smx&eVd4t7+@ZitYo6 y;`?d;X0%_M=RN!SzMW5N&rPm6QFO5UKeJUD2g}X$$6JA}WAJqKb6Mw<&;$U_v~ubI diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_focused_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_focused_holo_dark.9.png deleted file mode 100755 index 60d063d8b7c4e7f759bd93e8a6c5c1778b8c4bd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^dO+;N!3-qj14UGTRCRz)h^z6|r$Dsn#03ZgC>*f! z!J6Y2dk$T5-|@(K`=fQoFRq8l0@eKg{~w|fnOt$~5;7OU_TBl=Wyd489gmhCyJWuY zN!!8eHrt+Urkr;uum9_x9S!zGee~mc#=lo*qp%PwqR< z^ZtKJrl#^$){{@Uy97%A{dg+;N@4o{uU3UR{7ZDpOFh=yo4S@I$^Z6*Ti;TqhAZy% z+IjK4(c_q9`39#B=CbwdW3aS5-g#c3|Ea_SJtf&hsvwz1gz5oCK diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_focused_holo_light.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_focused_holo_light.9.png deleted file mode 100755 index 89b66fd271d0c92bd9ec086d22451b8d8e5732bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^dO+;N!3-qj14UGTRCRz)h^z6|ry%4R2w?z)jprOT z_KPsitTkS8)_BEbW8W}ipHQf>txx~|{|{#)7=bYeHpD<6IscgPvWvz`&l`s%7;k!L zoY!K!_O|in$Ht4#8W(p1En;0Y>oSniC<*cl_MN$7Vi-f@nx@d;4Vz|6GGvG|$eTQc zWm#^1J8N4(L`cXYznTEQ(DF3Jo6Y#`8*c)-Ndqv__!edl@J z|8L3ERKCi3@+o(hKEQ}L_(^Mlo?(?8h6 zt`pDe`=+L3aZB*<#WagsJnpj}W*E!lwkK_PdW>csD)q-)x?D zpJp78k8peNCGkal**oW|>Zjih%sa!r`cKAr-o>*w+jc$Q`JavHiM*b7UZXP5#|)mX KelF{r5}E+>)Y`QG diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_pressed_holo_dark.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__spinner_ab_pressed_holo_dark.9.png deleted file mode 100755 index 51ea7311b264de727c1e20b941e19b498325327e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430 zcmeAS@N?(olHy`uVBq!ia0vp^dO+;N!3-qj14UGTRDOU@h^z6|rwfi=2J)P@Kbn5z zO7Z^NcH1A%I&#H&+mks*t^j3mp-G3YqDeV!e+(3{*!IL`+mrr7*MR1jY<+6F^=bOv zySCdO=kB`$w8d(!=o%oUQWE4BJo6gEg7e$wUYv8;kYUC|gZzTFyfZA5b6Ka%Z=XH) za_O4@W^?eY_`V8Y%{dm{h=~C=KDGR zx(}}}x4OUYXSQ$Mdj7M94f|`Ex83dqTWs4FpDoxT*=Kh6Vw%M*9{1S~GmK?&aS48w zzQyzZ+QCcj9vjvF=$4MR-f>`;>brks&uq@?nhXCn@;~&Z4{Mfj2h4Gr3 z#x0A0w%n0-Py$jaB|(0{Gp{i$IKO@F#W|M^8D>m0$S-KiJHs+Lmvzeg_Sth!&YL-F zK~D-sQW>Q8yPIEGZjy}h=buh~JM*VwIrGB{f z#((CwU!F?3sP;Na@mg8r;zi4RTB3raPHQg=kDT|(W^0VhHbcAJA1b3`zMtc-`|$d5 ztNZ(YX8YEy=Ra%Mu)mgh+wESk#kOtn*@7*SeP)L*rdizLai9G#!&oL4m*8jVTRi`- z9lZ4Ju~GexZs~aI9S3%)zWZ19%;vnVx$tiz|6`x-i7+p2KlJ6*k9YqWm?Z@r4?0v` Q2KtJ@)78&qol`;+01i~cHvj+t diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_selected_focused_holo.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_selected_focused_holo.9.png deleted file mode 100755 index 0030a8f78084c463f81c9398a47f740edd5d9fb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol;!VDz4mTvk6r1%4TLR^ivJ_R!2q}59K$3Q-F zNswQ#F$2S$==tJ6uDYj-V@O5Z)H54-85md?4*IW2VCLpf-tgaNQHa($TODS1zPG<_ aBr_;jaw_g9n7s_Bg~8L+&t;ucLK6TBx+V_* diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_selected_holo.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_selected_holo.9.png deleted file mode 100755 index 2dda426407e62f1bd2568f8b620c4f0a7deceba8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol;#0(@^pSp(uDV_kI5LX~=y!9!BY*Ohp1hSY) zg8YIR7|JG}wE*&zJzX3_D&krX8S*kPa4;YAI>=cU$10??F-Stv(=Q@;`RBvjdu|H8 UeEegM3Q#$Nr>mdKI;Vst0P#;D&j0`b diff --git a/libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_selected_pressed_holo.9.png b/libs/ActionBarSherlock/res/drawable-xhdpi/abs__tab_selected_pressed_holo.9.png deleted file mode 100755 index 0ecde65cfe6ce7a4288c07af4bf9fdb2886d0c3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol;!VDz4mTvk6r1%4TLR^ivJ_R!2q}59K$3Q-F zNswP~0|SG!^Zhs=SKZUaF{C1H>Y0ta3=Av`2mRM1FmrP#Z}{)CC`4;BdGYFLUsnY|ev?jAb0}_IC+!uD5;W j+jMb_|F(s7UUS(a_*t%Ir>I{6YGm+q^>bP0l+XkKvT!T> diff --git a/libs/ActionBarSherlock/res/drawable/abs__activated_background_holo_dark.xml b/libs/ActionBarSherlock/res/drawable/abs__activated_background_holo_dark.xml deleted file mode 100755 index 85c2c0212..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__activated_background_holo_dark.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__activated_background_holo_light.xml b/libs/ActionBarSherlock/res/drawable/abs__activated_background_holo_light.xml deleted file mode 100755 index 85c2c0212..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__activated_background_holo_light.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__btn_cab_done_holo_dark.xml b/libs/ActionBarSherlock/res/drawable/abs__btn_cab_done_holo_dark.xml deleted file mode 100755 index cab896283..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__btn_cab_done_holo_dark.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__btn_cab_done_holo_light.xml b/libs/ActionBarSherlock/res/drawable/abs__btn_cab_done_holo_light.xml deleted file mode 100755 index 42ba8a0df..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__btn_cab_done_holo_light.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__ic_menu_moreoverflow_holo_dark.xml b/libs/ActionBarSherlock/res/drawable/abs__ic_menu_moreoverflow_holo_dark.xml deleted file mode 100755 index 2588a492d..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__ic_menu_moreoverflow_holo_dark.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__ic_menu_moreoverflow_holo_light.xml b/libs/ActionBarSherlock/res/drawable/abs__ic_menu_moreoverflow_holo_light.xml deleted file mode 100755 index e2078c967..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__ic_menu_moreoverflow_holo_light.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__item_background_holo_dark.xml b/libs/ActionBarSherlock/res/drawable/abs__item_background_holo_dark.xml deleted file mode 100755 index d99b7a426..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__item_background_holo_dark.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__item_background_holo_light.xml b/libs/ActionBarSherlock/res/drawable/abs__item_background_holo_light.xml deleted file mode 100755 index da5fb2e86..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__item_background_holo_light.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__list_selector_background_transition_holo_dark.xml b/libs/ActionBarSherlock/res/drawable/abs__list_selector_background_transition_holo_dark.xml deleted file mode 100755 index b2ce4f0f7..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__list_selector_background_transition_holo_dark.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__list_selector_background_transition_holo_light.xml b/libs/ActionBarSherlock/res/drawable/abs__list_selector_background_transition_holo_light.xml deleted file mode 100755 index d7e31b1d1..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__list_selector_background_transition_holo_light.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__list_selector_holo_dark.xml b/libs/ActionBarSherlock/res/drawable/abs__list_selector_holo_dark.xml deleted file mode 100755 index 08b8b12f3..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__list_selector_holo_dark.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__list_selector_holo_light.xml b/libs/ActionBarSherlock/res/drawable/abs__list_selector_holo_light.xml deleted file mode 100755 index ada490bf9..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__list_selector_holo_light.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__progress_horizontal_holo_dark.xml b/libs/ActionBarSherlock/res/drawable/abs__progress_horizontal_holo_dark.xml deleted file mode 100755 index bd19140ab..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__progress_horizontal_holo_dark.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__progress_horizontal_holo_light.xml b/libs/ActionBarSherlock/res/drawable/abs__progress_horizontal_holo_light.xml deleted file mode 100755 index 321f07c8b..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__progress_horizontal_holo_light.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__progress_medium_holo.xml b/libs/ActionBarSherlock/res/drawable/abs__progress_medium_holo.xml deleted file mode 100755 index 6d4814f86..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__progress_medium_holo.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__spinner_ab_holo_dark.xml b/libs/ActionBarSherlock/res/drawable/abs__spinner_ab_holo_dark.xml deleted file mode 100755 index 4af5e22a9..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__spinner_ab_holo_dark.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__spinner_ab_holo_light.xml b/libs/ActionBarSherlock/res/drawable/abs__spinner_ab_holo_light.xml deleted file mode 100755 index b78508478..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__spinner_ab_holo_light.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/drawable/abs__tab_indicator_ab_holo.xml b/libs/ActionBarSherlock/res/drawable/abs__tab_indicator_ab_holo.xml deleted file mode 100755 index d34e20811..000000000 --- a/libs/ActionBarSherlock/res/drawable/abs__tab_indicator_ab_holo.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout-large/abs__action_mode_close_item.xml b/libs/ActionBarSherlock/res/layout-large/abs__action_mode_close_item.xml deleted file mode 100755 index 8811dad8d..000000000 --- a/libs/ActionBarSherlock/res/layout-large/abs__action_mode_close_item.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout-v14/sherlock_spinner_dropdown_item.xml b/libs/ActionBarSherlock/res/layout-v14/sherlock_spinner_dropdown_item.xml deleted file mode 100755 index 6c183c059..000000000 --- a/libs/ActionBarSherlock/res/layout-v14/sherlock_spinner_dropdown_item.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - diff --git a/libs/ActionBarSherlock/res/layout-v14/sherlock_spinner_item.xml b/libs/ActionBarSherlock/res/layout-v14/sherlock_spinner_item.xml deleted file mode 100755 index 61dc02527..000000000 --- a/libs/ActionBarSherlock/res/layout-v14/sherlock_spinner_item.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - diff --git a/libs/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar.xml b/libs/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar.xml deleted file mode 100755 index 040df44ab..000000000 --- a/libs/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar_overlay.xml b/libs/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar_overlay.xml deleted file mode 100755 index c64ef141b..000000000 --- a/libs/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar_overlay.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__action_bar_home.xml b/libs/ActionBarSherlock/res/layout/abs__action_bar_home.xml deleted file mode 100755 index 5c1e9ec4b..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__action_bar_home.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__action_bar_tab.xml b/libs/ActionBarSherlock/res/layout/abs__action_bar_tab.xml deleted file mode 100755 index f46f7a044..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__action_bar_tab.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - \ No newline at end of file diff --git a/libs/ActionBarSherlock/res/layout/abs__action_bar_tab_bar_view.xml b/libs/ActionBarSherlock/res/layout/abs__action_bar_tab_bar_view.xml deleted file mode 100755 index 0d51220c9..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__action_bar_tab_bar_view.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - \ No newline at end of file diff --git a/libs/ActionBarSherlock/res/layout/abs__action_bar_title_item.xml b/libs/ActionBarSherlock/res/layout/abs__action_bar_title_item.xml deleted file mode 100755 index dd69acada..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__action_bar_title_item.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__action_menu_item_layout.xml b/libs/ActionBarSherlock/res/layout/abs__action_menu_item_layout.xml deleted file mode 100755 index 13149fd63..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__action_menu_item_layout.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__action_menu_layout.xml b/libs/ActionBarSherlock/res/layout/abs__action_menu_layout.xml deleted file mode 100755 index a6f8e53f8..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__action_menu_layout.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__action_mode_bar.xml b/libs/ActionBarSherlock/res/layout/abs__action_mode_bar.xml deleted file mode 100755 index 7168dc77f..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__action_mode_bar.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__action_mode_close_item.xml b/libs/ActionBarSherlock/res/layout/abs__action_mode_close_item.xml deleted file mode 100755 index 875ec3e1b..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__action_mode_close_item.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__activity_chooser_view.xml b/libs/ActionBarSherlock/res/layout/abs__activity_chooser_view.xml deleted file mode 100755 index 019d14ef4..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__activity_chooser_view.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__activity_chooser_view_list_item.xml b/libs/ActionBarSherlock/res/layout/abs__activity_chooser_view_list_item.xml deleted file mode 100755 index b430032a1..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__activity_chooser_view_list_item.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__dialog_title_holo.xml b/libs/ActionBarSherlock/res/layout/abs__dialog_title_holo.xml deleted file mode 100755 index 6402f28be..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__dialog_title_holo.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__list_menu_item_checkbox.xml b/libs/ActionBarSherlock/res/layout/abs__list_menu_item_checkbox.xml deleted file mode 100755 index 39aca3a8d..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__list_menu_item_checkbox.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__list_menu_item_icon.xml b/libs/ActionBarSherlock/res/layout/abs__list_menu_item_icon.xml deleted file mode 100755 index 55ab28a24..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__list_menu_item_icon.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__list_menu_item_layout.xml b/libs/ActionBarSherlock/res/layout/abs__list_menu_item_layout.xml deleted file mode 100755 index 147f36fe8..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__list_menu_item_layout.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__list_menu_item_radio.xml b/libs/ActionBarSherlock/res/layout/abs__list_menu_item_radio.xml deleted file mode 100755 index ff54bbecd..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__list_menu_item_radio.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__popup_menu_item_layout.xml b/libs/ActionBarSherlock/res/layout/abs__popup_menu_item_layout.xml deleted file mode 100755 index d42425ad3..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__popup_menu_item_layout.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__screen_action_bar.xml b/libs/ActionBarSherlock/res/layout/abs__screen_action_bar.xml deleted file mode 100755 index 1fb82fe9a..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__screen_action_bar.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__screen_action_bar_overlay.xml b/libs/ActionBarSherlock/res/layout/abs__screen_action_bar_overlay.xml deleted file mode 100755 index 0961ef561..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__screen_action_bar_overlay.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__screen_simple.xml b/libs/ActionBarSherlock/res/layout/abs__screen_simple.xml deleted file mode 100755 index 33e2dea0d..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__screen_simple.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout/abs__screen_simple_overlay_action_mode.xml b/libs/ActionBarSherlock/res/layout/abs__screen_simple_overlay_action_mode.xml deleted file mode 100755 index f8b9fb185..000000000 --- a/libs/ActionBarSherlock/res/layout/abs__screen_simple_overlay_action_mode.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - diff --git a/libs/ActionBarSherlock/res/layout/sherlock_spinner_dropdown_item.xml b/libs/ActionBarSherlock/res/layout/sherlock_spinner_dropdown_item.xml deleted file mode 100755 index a6c6252d2..000000000 --- a/libs/ActionBarSherlock/res/layout/sherlock_spinner_dropdown_item.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - diff --git a/libs/ActionBarSherlock/res/layout/sherlock_spinner_item.xml b/libs/ActionBarSherlock/res/layout/sherlock_spinner_item.xml deleted file mode 100755 index bea740178..000000000 --- a/libs/ActionBarSherlock/res/layout/sherlock_spinner_item.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - diff --git a/libs/ActionBarSherlock/res/values-land/abs__dimens.xml b/libs/ActionBarSherlock/res/values-land/abs__dimens.xml deleted file mode 100755 index 502cc16a3..000000000 --- a/libs/ActionBarSherlock/res/values-land/abs__dimens.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - 40dip - - 4dip - - 16dp - - 12dp - - -2dp - - 4dip - diff --git a/libs/ActionBarSherlock/res/values-large-hdpi-1024x600/abs__dimens.xml b/libs/ActionBarSherlock/res/values-large-hdpi-1024x600/abs__dimens.xml deleted file mode 100755 index 3312cfa7f..000000000 --- a/libs/ActionBarSherlock/res/values-large-hdpi-1024x600/abs__dimens.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - 48dip - - 8dip - - 18dp - - 14dp - - -3dp - - 5dip - diff --git a/libs/ActionBarSherlock/res/values-large-land-hdpi-1024x600/abs__dimens.xml b/libs/ActionBarSherlock/res/values-large-land-hdpi-1024x600/abs__dimens.xml deleted file mode 100755 index 502cc16a3..000000000 --- a/libs/ActionBarSherlock/res/values-large-land-hdpi-1024x600/abs__dimens.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - 40dip - - 4dip - - 16dp - - 12dp - - -2dp - - 4dip - diff --git a/libs/ActionBarSherlock/res/values-large-land-mdpi-1024x600/abs__dimens.xml b/libs/ActionBarSherlock/res/values-large-land-mdpi-1024x600/abs__dimens.xml deleted file mode 100755 index 3312cfa7f..000000000 --- a/libs/ActionBarSherlock/res/values-large-land-mdpi-1024x600/abs__dimens.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - 48dip - - 8dip - - 18dp - - 14dp - - -3dp - - 5dip - diff --git a/libs/ActionBarSherlock/res/values-large-mdpi-1024x600/abs__dimens.xml b/libs/ActionBarSherlock/res/values-large-mdpi-1024x600/abs__dimens.xml deleted file mode 100755 index 35910333b..000000000 --- a/libs/ActionBarSherlock/res/values-large-mdpi-1024x600/abs__dimens.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - 56dip - - 4dip - - 18dp - - 14dp - - -3dp - - 9dip - - - 64dip - diff --git a/libs/ActionBarSherlock/res/values-large/abs__dimens.xml b/libs/ActionBarSherlock/res/values-large/abs__dimens.xml deleted file mode 100755 index 63b12f7f3..000000000 --- a/libs/ActionBarSherlock/res/values-large/abs__dimens.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - 55% - - 80% - diff --git a/libs/ActionBarSherlock/res/values-sw600dp/abs__bools.xml b/libs/ActionBarSherlock/res/values-sw600dp/abs__bools.xml deleted file mode 100755 index 7a48e1542..000000000 --- a/libs/ActionBarSherlock/res/values-sw600dp/abs__bools.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - false - diff --git a/libs/ActionBarSherlock/res/values-sw600dp/abs__dimens.xml b/libs/ActionBarSherlock/res/values-sw600dp/abs__dimens.xml deleted file mode 100755 index f67853817..000000000 --- a/libs/ActionBarSherlock/res/values-sw600dp/abs__dimens.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - 56dip - - 4dip - - 18dp - - 14dp - - -3dp - - 9dip - - 5 - - - 64dip - diff --git a/libs/ActionBarSherlock/res/values-v11/abs__themes.xml b/libs/ActionBarSherlock/res/values-v11/abs__themes.xml deleted file mode 100755 index 03473572c..000000000 --- a/libs/ActionBarSherlock/res/values-v11/abs__themes.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/libs/ActionBarSherlock/res/values-v14/abs__styles.xml b/libs/ActionBarSherlock/res/values-v14/abs__styles.xml deleted file mode 100755 index f2aa64d2d..000000000 --- a/libs/ActionBarSherlock/res/values-v14/abs__styles.xml +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/values-v14/abs__themes.xml b/libs/ActionBarSherlock/res/values-v14/abs__themes.xml deleted file mode 100755 index ceb960737..000000000 --- a/libs/ActionBarSherlock/res/values-v14/abs__themes.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/values-w360dp/abs__dimens.xml b/libs/ActionBarSherlock/res/values-w360dp/abs__dimens.xml deleted file mode 100755 index 6f49d7e47..000000000 --- a/libs/ActionBarSherlock/res/values-w360dp/abs__dimens.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - 3 - diff --git a/libs/ActionBarSherlock/res/values-w480dp/abs__bools.xml b/libs/ActionBarSherlock/res/values-w480dp/abs__bools.xml deleted file mode 100755 index 3eaf4aee9..000000000 --- a/libs/ActionBarSherlock/res/values-w480dp/abs__bools.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - true - false - diff --git a/libs/ActionBarSherlock/res/values-w480dp/abs__config.xml b/libs/ActionBarSherlock/res/values-w480dp/abs__config.xml deleted file mode 100755 index 88357b0a7..000000000 --- a/libs/ActionBarSherlock/res/values-w480dp/abs__config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - true - - diff --git a/libs/ActionBarSherlock/res/values-w500dp/abs__dimens.xml b/libs/ActionBarSherlock/res/values-w500dp/abs__dimens.xml deleted file mode 100755 index 2fd4deea2..000000000 --- a/libs/ActionBarSherlock/res/values-w500dp/abs__dimens.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - 4 - diff --git a/libs/ActionBarSherlock/res/values-w600dp/abs__dimens.xml b/libs/ActionBarSherlock/res/values-w600dp/abs__dimens.xml deleted file mode 100755 index b085952d3..000000000 --- a/libs/ActionBarSherlock/res/values-w600dp/abs__dimens.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - 5 - diff --git a/libs/ActionBarSherlock/res/values-xlarge/abs__dimens.xml b/libs/ActionBarSherlock/res/values-xlarge/abs__dimens.xml deleted file mode 100755 index bfc535de1..000000000 --- a/libs/ActionBarSherlock/res/values-xlarge/abs__dimens.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - 56dip - - 4dip - - 18dp - - 14dp - - -3dp - - 9dip - - - 64dip - - - 45% - - 72% - diff --git a/libs/ActionBarSherlock/res/values/abs__attrs.xml b/libs/ActionBarSherlock/res/values/abs__attrs.xml deleted file mode 100755 index 81c347108..000000000 --- a/libs/ActionBarSherlock/res/values/abs__attrs.xml +++ /dev/null @@ -1,380 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/values/abs__bools.xml b/libs/ActionBarSherlock/res/values/abs__bools.xml deleted file mode 100755 index 0b432448d..000000000 --- a/libs/ActionBarSherlock/res/values/abs__bools.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - false - true - true - - diff --git a/libs/ActionBarSherlock/res/values/abs__colors.xml b/libs/ActionBarSherlock/res/values/abs__colors.xml deleted file mode 100755 index 625c632ff..000000000 --- a/libs/ActionBarSherlock/res/values/abs__colors.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - #ff000000 - #fff3f3f3 - @color/abs__background_holo_light - @color/abs__background_holo_dark - #ff4c4c4c - #ffb2b2b2 - @color/abs__bright_foreground_holo_light - @color/abs__bright_foreground_holo_dark - #ff33b5e5 - diff --git a/libs/ActionBarSherlock/res/values/abs__config.xml b/libs/ActionBarSherlock/res/values/abs__config.xml deleted file mode 100755 index 4c7b5d459..000000000 --- a/libs/ActionBarSherlock/res/values/abs__config.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - 320dp - - - false - - - true - - - false - - diff --git a/libs/ActionBarSherlock/res/values/abs__dimens.xml b/libs/ActionBarSherlock/res/values/abs__dimens.xml deleted file mode 100755 index 0a409756c..000000000 --- a/libs/ActionBarSherlock/res/values/abs__dimens.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - 48dip - - 8dip - - 18dp - - 14dp - - -3dp - - 5dip - - 2 - - - 56dip - - - 64dip - - - 65% - - 95% - diff --git a/libs/ActionBarSherlock/res/values/abs__ids.xml b/libs/ActionBarSherlock/res/values/abs__ids.xml deleted file mode 100755 index f9f56045b..000000000 --- a/libs/ActionBarSherlock/res/values/abs__ids.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/values/abs__strings.xml b/libs/ActionBarSherlock/res/values/abs__strings.xml deleted file mode 100755 index 1e1c7022c..000000000 --- a/libs/ActionBarSherlock/res/values/abs__strings.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Navigate home - - Navigate up - - More options - - - Done - - - See all... - - Select activity - - Share with... - - Choose an application - - Share with - - Share with %s - diff --git a/libs/ActionBarSherlock/res/values/abs__styles.xml b/libs/ActionBarSherlock/res/values/abs__styles.xml deleted file mode 100755 index 8cbd36484..000000000 --- a/libs/ActionBarSherlock/res/values/abs__styles.xml +++ /dev/null @@ -1,384 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/res/values/abs__themes.xml b/libs/ActionBarSherlock/res/values/abs__themes.xml deleted file mode 100755 index 5300dedd6..000000000 --- a/libs/ActionBarSherlock/res/values/abs__themes.xml +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/ActionBarSherlock/src/android/support/v4/app/_ActionBarSherlockTrojanHorse.java b/libs/ActionBarSherlock/src/android/support/v4/app/_ActionBarSherlockTrojanHorse.java deleted file mode 100755 index 3e3db62b7..000000000 --- a/libs/ActionBarSherlock/src/android/support/v4/app/_ActionBarSherlockTrojanHorse.java +++ /dev/null @@ -1,144 +0,0 @@ -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 _ActionBarSherlockTrojanHorse extends FragmentActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener { - private static final boolean DEBUG = false; - private static final String TAG = "_ActionBarSherlockTrojanHorse"; - - /** 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.mActive != 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.mActive != 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.mActive != 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/libs/ActionBarSherlock/src/com/actionbarsherlock/ActionBarSherlock.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/ActionBarSherlock.java deleted file mode 100755 index 8340fb591..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/ActionBarSherlock.java +++ /dev/null @@ -1,791 +0,0 @@ -package com.actionbarsherlock; - -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.Iterator; -import android.app.Activity; -import android.content.Context; -import android.content.res.Configuration; -import android.os.Build; -import android.os.Bundle; -import android.util.DisplayMetrics; -import android.util.Log; -import android.view.KeyEvent; -import android.view.View; -import android.view.ViewGroup; -import android.view.Window; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.internal.ActionBarSherlockCompat; -import com.actionbarsherlock.internal.ActionBarSherlockNative; -import com.actionbarsherlock.view.ActionMode; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; - -/** - *

Helper for implementing the action bar design pattern across all versions - * of Android.

- * - *

This class will manage interaction with a custom action bar based on the - * Android 4.0 source code. The exposed API mirrors that of its native - * counterpart and you should refer to its documentation for instruction.

- * - * @author Jake Wharton - */ -public abstract class ActionBarSherlock { - protected static final String TAG = "ActionBarSherlock"; - protected static final boolean DEBUG = false; - - private static final Class[] CONSTRUCTOR_ARGS = new Class[] { Activity.class, int.class }; - private static final HashMap> IMPLEMENTATIONS = - new HashMap>(); - - static { - //Register our two built-in implementations - registerImplementation(ActionBarSherlockCompat.class); - registerImplementation(ActionBarSherlockNative.class); - } - - - /** - *

Denotes an implementation of ActionBarSherlock which provides an - * action bar-enhanced experience.

- */ - @Target(ElementType.TYPE) - @Retention(RetentionPolicy.RUNTIME) - public @interface Implementation { - static final int DEFAULT_API = -1; - static final int DEFAULT_DPI = -1; - - int api() default DEFAULT_API; - int dpi() default DEFAULT_DPI; - } - - - /** Activity interface for menu creation callback. */ - public interface OnCreatePanelMenuListener { - public boolean onCreatePanelMenu(int featureId, Menu menu); - } - /** Activity interface for menu creation callback. */ - public interface OnCreateOptionsMenuListener { - public boolean onCreateOptionsMenu(Menu menu); - } - /** Activity interface for menu item selection callback. */ - public interface OnMenuItemSelectedListener { - public boolean onMenuItemSelected(int featureId, MenuItem item); - } - /** Activity interface for menu item selection callback. */ - public interface OnOptionsItemSelectedListener { - public boolean onOptionsItemSelected(MenuItem item); - } - /** Activity interface for menu preparation callback. */ - public interface OnPreparePanelListener { - public boolean onPreparePanel(int featureId, View view, Menu menu); - } - /** Activity interface for menu preparation callback. */ - public interface OnPrepareOptionsMenuListener { - public boolean onPrepareOptionsMenu(Menu menu); - } - /** Activity interface for action mode finished callback. */ - public interface OnActionModeFinishedListener { - public void onActionModeFinished(ActionMode mode); - } - /** Activity interface for action mode started callback. */ - public interface OnActionModeStartedListener { - public void onActionModeStarted(ActionMode mode); - } - - - /** - * If set, the logic in these classes will assume that an {@link Activity} - * is dispatching all of the required events to the class. This flag should - * only be used internally or if you are creating your own base activity - * modeled after one of the included types (e.g., {@code SherlockActivity}). - */ - public static final int FLAG_DELEGATE = 1; - - - /** - * Register an ActionBarSherlock implementation. - * - * @param implementationClass Target implementation class which extends - * {@link ActionBarSherlock}. This class must also be annotated with - * {@link Implementation}. - */ - public static void registerImplementation(Class implementationClass) { - if (!implementationClass.isAnnotationPresent(Implementation.class)) { - throw new IllegalArgumentException("Class " + implementationClass.getSimpleName() + " is not annotated with @Implementation"); - } else if (IMPLEMENTATIONS.containsValue(implementationClass)) { - if (DEBUG) Log.w(TAG, "Class " + implementationClass.getSimpleName() + " already registered"); - return; - } - - Implementation impl = implementationClass.getAnnotation(Implementation.class); - if (DEBUG) Log.i(TAG, "Registering " + implementationClass.getSimpleName() + " with qualifier " + impl); - IMPLEMENTATIONS.put(impl, implementationClass); - } - - /** - * Unregister an ActionBarSherlock implementation. This should be - * considered very volatile and you should only use it if you know what - * you are doing. You have been warned. - * - * @param implementationClass Target implementation class. - * @return Boolean indicating whether the class was removed. - */ - public static boolean unregisterImplementation(Class implementationClass) { - return IMPLEMENTATIONS.values().remove(implementationClass); - } - - /** - * Wrap an activity with an action bar abstraction which will enable the - * use of a custom implementation on platforms where a native version does - * not exist. - * - * @param activity Activity to wrap. - * @return Instance to interact with the action bar. - */ - public static ActionBarSherlock wrap(Activity activity) { - return wrap(activity, 0); - } - - /** - * Wrap an activity with an action bar abstraction which will enable the - * use of a custom implementation on platforms where a native version does - * not exist. - * - * @param activity Owning activity. - * @param flags Option flags to control behavior. - * @return Instance to interact with the action bar. - */ - public static ActionBarSherlock wrap(Activity activity, int flags) { - //Create a local implementation map we can modify - HashMap> impls = - new HashMap>(IMPLEMENTATIONS); - boolean hasQualfier; - - /* DPI FILTERING */ - hasQualfier = false; - for (Implementation key : impls.keySet()) { - //Only honor TVDPI as a specific qualifier - if (key.dpi() == DisplayMetrics.DENSITY_TV) { - hasQualfier = true; - break; - } - } - if (hasQualfier) { - final boolean isTvDpi = activity.getResources().getDisplayMetrics().densityDpi == DisplayMetrics.DENSITY_TV; - for (Iterator keys = impls.keySet().iterator(); keys.hasNext(); ) { - int keyDpi = keys.next().dpi(); - if ((isTvDpi && keyDpi != DisplayMetrics.DENSITY_TV) - || (!isTvDpi && keyDpi == DisplayMetrics.DENSITY_TV)) { - keys.remove(); - } - } - } - - /* API FILTERING */ - hasQualfier = false; - for (Implementation key : impls.keySet()) { - if (key.api() != Implementation.DEFAULT_API) { - hasQualfier = true; - break; - } - } - if (hasQualfier) { - final int runtimeApi = Build.VERSION.SDK_INT; - int bestApi = 0; - for (Iterator keys = impls.keySet().iterator(); keys.hasNext(); ) { - int keyApi = keys.next().api(); - if (keyApi > runtimeApi) { - keys.remove(); - } else if (keyApi > bestApi) { - bestApi = keyApi; - } - } - for (Iterator keys = impls.keySet().iterator(); keys.hasNext(); ) { - if (keys.next().api() != bestApi) { - keys.remove(); - } - } - } - - if (impls.size() > 1) { - throw new IllegalStateException("More than one implementation matches configuration."); - } - if (impls.isEmpty()) { - throw new IllegalStateException("No implementations match configuration."); - } - Class impl = impls.values().iterator().next(); - if (DEBUG) Log.i(TAG, "Using implementation: " + impl.getSimpleName()); - - try { - Constructor ctor = impl.getConstructor(CONSTRUCTOR_ARGS); - return ctor.newInstance(activity, flags); - } catch (NoSuchMethodException e) { - throw new RuntimeException(e); - } catch (IllegalArgumentException e) { - throw new RuntimeException(e); - } catch (InstantiationException e) { - throw new RuntimeException(e); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } catch (InvocationTargetException e) { - throw new RuntimeException(e); - } - } - - - /** Activity which is displaying the action bar. Also used for context. */ - protected final Activity mActivity; - /** Whether delegating actions for the activity or managing ourselves. */ - protected final boolean mIsDelegate; - - /** Reference to our custom menu inflater which supports action items. */ - protected MenuInflater mMenuInflater; - - - - protected ActionBarSherlock(Activity activity, int flags) { - if (DEBUG) Log.d(TAG, "[] activity: " + activity + ", flags: " + flags); - - mActivity = activity; - mIsDelegate = (flags & FLAG_DELEGATE) != 0; - } - - - /** - * Get the current action bar instance. - * - * @return Action bar instance. - */ - public abstract ActionBar getActionBar(); - - - /////////////////////////////////////////////////////////////////////////// - // Lifecycle and interaction callbacks when delegating - /////////////////////////////////////////////////////////////////////////// - - /** - * Notify action bar of a configuration change event. Should be dispatched - * after the call to the superclass implementation. - * - *
-     * @Override
-     * public void onConfigurationChanged(Configuration newConfig) {
-     *     super.onConfigurationChanged(newConfig);
-     *     mSherlock.dispatchConfigurationChanged(newConfig);
-     * }
-     * 
- * - * @param newConfig The new device configuration. - */ - public void dispatchConfigurationChanged(Configuration newConfig) {} - - /** - * Notify the action bar that the activity has finished its resuming. This - * should be dispatched after the call to the superclass implementation. - * - *
-     * @Override
-     * protected void onPostResume() {
-     *     super.onPostResume();
-     *     mSherlock.dispatchPostResume();
-     * }
-     * 
- */ - public void dispatchPostResume() {} - - /** - * Notify the action bar that the activity is pausing. This should be - * dispatched before the call to the superclass implementation. - * - *
-     * @Override
-     * protected void onPause() {
-     *     mSherlock.dispatchPause();
-     *     super.onPause();
-     * }
-     * 
- */ - public void dispatchPause() {} - - /** - * Notify the action bar that the activity is stopping. This should be - * called before the superclass implementation. - * - *

- * @Override - * protected void onStop() { - * mSherlock.dispatchStop(); - * super.onStop(); - * } - *

- */ - public void dispatchStop() {} - - /** - * Indicate that the menu should be recreated by calling - * {@link OnCreateOptionsMenuListener#onCreateOptionsMenu(com.actionbarsherlock.view.Menu)}. - */ - public abstract void dispatchInvalidateOptionsMenu(); - - /** - * Notify the action bar that it should display its overflow menu if it is - * appropriate for the device. The implementation should conditionally - * call the superclass method only if this method returns {@code false}. - * - *

- * @Override - * public void openOptionsMenu() { - * if (!mSherlock.dispatchOpenOptionsMenu()) { - * super.openOptionsMenu(); - * } - * } - *

- * - * @return {@code true} if the opening of the menu was handled internally. - */ - public boolean dispatchOpenOptionsMenu() { - return false; - } - - /** - * Notify the action bar that it should close its overflow menu if it is - * appropriate for the device. This implementation should conditionally - * call the superclass method only if this method returns {@code false}. - * - *
-     * @Override
-     * public void closeOptionsMenu() {
-     *     if (!mSherlock.dispatchCloseOptionsMenu()) {
-     *         super.closeOptionsMenu();
-     *     }
-     * }
-     * 
- * - * @return {@code true} if the closing of the menu was handled internally. - */ - public boolean dispatchCloseOptionsMenu() { - return false; - } - - /** - * Notify the class that the activity has finished its creation. This - * should be called after the superclass implementation. - * - *
-     * @Override
-     * protected void onPostCreate(Bundle savedInstanceState) {
-     *     mSherlock.dispatchPostCreate(savedInstanceState);
-     *     super.onPostCreate(savedInstanceState);
-     * }
-     * 
- * - * @param savedInstanceState If the activity is being re-initialized after - * previously being shut down then this Bundle - * contains the data it most recently supplied in - * {@link Activity#}onSaveInstanceState(Bundle)}. - * Note: Otherwise it is null. - */ - public void dispatchPostCreate(Bundle savedInstanceState) {} - - /** - * Notify the action bar that the title has changed and the action bar - * should be updated to reflect the change. This should be called before - * the superclass implementation. - * - *
-     *  @Override
-     *  protected void onTitleChanged(CharSequence title, int color) {
-     *      mSherlock.dispatchTitleChanged(title, color);
-     *      super.onTitleChanged(title, color);
-     *  }
-     * 
- * - * @param title New activity title. - * @param color New activity color. - */ - public void dispatchTitleChanged(CharSequence title, int color) {} - - /** - * Notify the action bar the user has created a key event. This is used to - * toggle the display of the overflow action item with the menu key and to - * close the action mode or expanded action item with the back key. - * - *
-     * @Override
-     * public boolean dispatchKeyEvent(KeyEvent event) {
-     *     if (mSherlock.dispatchKeyEvent(event)) {
-     *         return true;
-     *     }
-     *     return super.dispatchKeyEvent(event);
-     * }
-     * 
- * - * @param event Description of the key event. - * @return {@code true} if the event was handled. - */ - public boolean dispatchKeyEvent(KeyEvent event) { - return false; - } - - /** - * Notify the action bar that the Activity has triggered a menu creation - * which should happen on the conclusion of {@link Activity#onCreate}. This - * will be used to gain a reference to the native menu for native and - * overflow binding as well as to indicate when compatibility create should - * occur for the first time. - * - * @param menu Activity native menu. - * @return {@code true} since we always want to say that we have a native - */ - public abstract boolean dispatchCreateOptionsMenu(android.view.Menu menu); - - /** - * Notify the action bar that the Activity has triggered a menu preparation - * which usually means that the user has requested the overflow menu via a - * hardware menu key. You should return the result of this method call and - * not call the superclass implementation. - * - *

- * @Override - * public final boolean onPrepareOptionsMenu(android.view.Menu menu) { - * return mSherlock.dispatchPrepareOptionsMenu(menu); - * } - *

- * - * @param menu Activity native menu. - * @return {@code true} if menu display should proceed. - */ - public abstract boolean dispatchPrepareOptionsMenu(android.view.Menu menu); - - /** - * Notify the action bar that a native options menu item has been selected. - * The implementation should return the result of this method call. - * - *

- * @Override - * public final boolean onOptionsItemSelected(android.view.MenuItem item) { - * return mSherlock.dispatchOptionsItemSelected(item); - * } - *

- * - * @param item Options menu item. - * @return @{code true} if the selection was handled. - */ - public abstract boolean dispatchOptionsItemSelected(android.view.MenuItem item); - - /** - * Notify the action bar that the overflow menu has been opened. The - * implementation should conditionally return {@code true} if this method - * returns {@code true}, otherwise return the result of the superclass - * method. - * - *

- * @Override - * public final boolean onMenuOpened(int featureId, android.view.Menu menu) { - * if (mSherlock.dispatchMenuOpened(featureId, menu)) { - * return true; - * } - * return super.onMenuOpened(featureId, menu); - * } - *

- * - * @param featureId Window feature which triggered the event. - * @param menu Activity native menu. - * @return {@code true} if the event was handled by this method. - */ - public boolean dispatchMenuOpened(int featureId, android.view.Menu menu) { - return false; - } - - /** - * Notify the action bar that the overflow menu has been closed. This - * method should be called before the superclass implementation. - * - *

- * @Override - * public void onPanelClosed(int featureId, android.view.Menu menu) { - * mSherlock.dispatchPanelClosed(featureId, menu); - * super.onPanelClosed(featureId, menu); - * } - *

- * - * @param featureId - * @param menu - */ - public void dispatchPanelClosed(int featureId, android.view.Menu menu) {} - - /** - * Notify the action bar that the activity has been destroyed. This method - * should be called before the superclass implementation. - * - *

- * @Override - * public void onDestroy() { - * mSherlock.dispatchDestroy(); - * super.onDestroy(); - * } - *

- */ - public void dispatchDestroy() {} - - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - - /** - * Internal method to trigger the menu creation process. - * - * @return {@code true} if menu creation should proceed. - */ - protected final boolean callbackCreateOptionsMenu(Menu menu) { - if (DEBUG) Log.d(TAG, "[callbackCreateOptionsMenu] menu: " + menu); - - boolean result = true; - if (mActivity instanceof OnCreatePanelMenuListener) { - OnCreatePanelMenuListener listener = (OnCreatePanelMenuListener)mActivity; - result = listener.onCreatePanelMenu(Window.FEATURE_OPTIONS_PANEL, menu); - } else if (mActivity instanceof OnCreateOptionsMenuListener) { - OnCreateOptionsMenuListener listener = (OnCreateOptionsMenuListener)mActivity; - result = listener.onCreateOptionsMenu(menu); - } - - if (DEBUG) Log.d(TAG, "[callbackCreateOptionsMenu] returning " + result); - return result; - } - - /** - * Internal method to trigger the menu preparation process. - * - * @return {@code true} if menu preparation should proceed. - */ - protected final boolean callbackPrepareOptionsMenu(Menu menu) { - if (DEBUG) Log.d(TAG, "[callbackPrepareOptionsMenu] menu: " + menu); - - boolean result = true; - if (mActivity instanceof OnPreparePanelListener) { - OnPreparePanelListener listener = (OnPreparePanelListener)mActivity; - result = listener.onPreparePanel(Window.FEATURE_OPTIONS_PANEL, null, menu); - } else if (mActivity instanceof OnPrepareOptionsMenuListener) { - OnPrepareOptionsMenuListener listener = (OnPrepareOptionsMenuListener)mActivity; - result = listener.onPrepareOptionsMenu(menu); - } - - if (DEBUG) Log.d(TAG, "[callbackPrepareOptionsMenu] returning " + result); - return result; - } - - /** - * Internal method for dispatching options menu selection to the owning - * activity callback. - * - * @param item Selected options menu item. - * @return {@code true} if the item selection was handled in the callback. - */ - protected final boolean callbackOptionsItemSelected(MenuItem item) { - if (DEBUG) Log.d(TAG, "[callbackOptionsItemSelected] item: " + item.getTitleCondensed()); - - boolean result = false; - if (mActivity instanceof OnMenuItemSelectedListener) { - OnMenuItemSelectedListener listener = (OnMenuItemSelectedListener)mActivity; - result = listener.onMenuItemSelected(Window.FEATURE_OPTIONS_PANEL, item); - } else if (mActivity instanceof OnOptionsItemSelectedListener) { - OnOptionsItemSelectedListener listener = (OnOptionsItemSelectedListener)mActivity; - result = listener.onOptionsItemSelected(item); - } - - if (DEBUG) Log.d(TAG, "[callbackOptionsItemSelected] returning " + result); - return result; - } - - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - - /** - * Query for the availability of a certain feature. - * - * @param featureId The feature ID to check. - * @return {@code true} if feature is enabled, {@code false} otherwise. - */ - public abstract boolean hasFeature(int featureId); - - /** - * Enable extended screen features. This must be called before - * {@code setContentView()}. May be called as many times as desired as long - * as it is before {@code setContentView()}. If not called, no extended - * features will be available. You can not turn off a feature once it is - * requested. - * - * @param featureId The desired features, defined as constants by Window. - * @return Returns true if the requested feature is supported and now - * enabled. - */ - public abstract boolean requestFeature(int featureId); - - /** - * Set extra options that will influence the UI for this window. - * - * @param uiOptions Flags specifying extra options for this window. - */ - public abstract void setUiOptions(int uiOptions); - - /** - * Set extra options that will influence the UI for this window. Only the - * bits filtered by mask will be modified. - * - * @param uiOptions Flags specifying extra options for this window. - * @param mask Flags specifying which options should be modified. Others - * will remain unchanged. - */ - public abstract void setUiOptions(int uiOptions, int mask); - - /** - * Set the content of the activity inside the action bar. - * - * @param layoutResId Layout resource ID. - */ - public abstract void setContentView(int layoutResId); - - /** - * Set the content of the activity inside the action bar. - * - * @param view The desired content to display. - */ - public void setContentView(View view) { - if (DEBUG) Log.d(TAG, "[setContentView] view: " + view); - - setContentView(view, new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)); - } - - /** - * Set the content of the activity inside the action bar. - * - * @param view The desired content to display. - * @param params Layout parameters to apply to the view. - */ - public abstract void setContentView(View view, ViewGroup.LayoutParams params); - - /** - * Variation on {@link #setContentView(android.view.View, android.view.ViewGroup.LayoutParams)} - * to add an additional content view to the screen. Added after any - * existing ones on the screen -- existing views are NOT removed. - * - * @param view The desired content to display. - * @param params Layout parameters for the view. - */ - public abstract void addContentView(View view, ViewGroup.LayoutParams params); - - /** - * Change the title associated with this activity. - */ - public abstract void setTitle(CharSequence title); - - /** - * Change the title associated with this activity. - */ - public void setTitle(int resId) { - if (DEBUG) Log.d(TAG, "[setTitle] resId: " + resId); - - setTitle(mActivity.getString(resId)); - } - - /** - * Sets the visibility of the progress bar in the title. - *

- * In order for the progress bar to be shown, the feature must be requested - * via {@link #requestWindowFeature(int)}. - * - * @param visible Whether to show the progress bars in the title. - */ - public abstract void setProgressBarVisibility(boolean visible); - - /** - * Sets the visibility of the indeterminate progress bar in the title. - *

- * In order for the progress bar to be shown, the feature must be requested - * via {@link #requestWindowFeature(int)}. - * - * @param visible Whether to show the progress bars in the title. - */ - public abstract void setProgressBarIndeterminateVisibility(boolean visible); - - /** - * Sets whether the horizontal progress bar in the title should be indeterminate (the circular - * is always indeterminate). - *

- * In order for the progress bar to be shown, the feature must be requested - * via {@link #requestWindowFeature(int)}. - * - * @param indeterminate Whether the horizontal progress bar should be indeterminate. - */ - public abstract void setProgressBarIndeterminate(boolean indeterminate); - - /** - * Sets the progress for the progress bars in the title. - *

- * In order for the progress bar to be shown, the feature must be requested - * via {@link #requestWindowFeature(int)}. - * - * @param progress The progress for the progress bar. Valid ranges are from - * 0 to 10000 (both inclusive). If 10000 is given, the progress - * bar will be completely filled and will fade out. - */ - public abstract void setProgress(int progress); - - /** - * Sets the secondary progress for the progress bar in the title. This - * progress is drawn between the primary progress (set via - * {@link #setProgress(int)} and the background. It can be ideal for media - * scenarios such as showing the buffering progress while the default - * progress shows the play progress. - *

- * In order for the progress bar to be shown, the feature must be requested - * via {@link #requestWindowFeature(int)}. - * - * @param secondaryProgress The secondary progress for the progress bar. Valid ranges are from - * 0 to 10000 (both inclusive). - */ - public abstract void setSecondaryProgress(int secondaryProgress); - - /** - * Get a menu inflater instance which supports the newer menu attributes. - * - * @return Menu inflater instance. - */ - public MenuInflater getMenuInflater() { - if (DEBUG) Log.d(TAG, "[getMenuInflater]"); - - // Make sure that action views can get an appropriate theme. - if (mMenuInflater == null) { - if (getActionBar() != null) { - mMenuInflater = new MenuInflater(getThemedContext()); - } else { - mMenuInflater = new MenuInflater(mActivity); - } - } - return mMenuInflater; - } - - protected abstract Context getThemedContext(); - - /** - * Start an action mode. - * - * @param callback Callback that will manage lifecycle events for this - * context mode. - * @return The ContextMode that was started, or null if it was canceled. - * @see ActionMode - */ - public abstract ActionMode startActionMode(ActionMode.Callback callback); -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/ActionBar.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/app/ActionBar.java deleted file mode 100755 index 2497d24ff..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/ActionBar.java +++ /dev/null @@ -1,947 +0,0 @@ -/* - * 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.app; - -import android.content.Context; -import android.graphics.drawable.Drawable; -import android.support.v4.app.FragmentTransaction; -import android.util.AttributeSet; -import android.view.Gravity; -import android.view.View; -import android.view.ViewDebug; -import android.view.ViewGroup; -import android.view.ViewGroup.MarginLayoutParams; -import android.widget.SpinnerAdapter; - -/** - * A window feature at the top of the activity that may display the activity title, navigation - * modes, and other interactive items. - *

Beginning with Android 3.0 (API level 11), the action bar appears at the top of an - * activity's window when the activity uses the system's {@link - * android.R.style#Theme_Holo Holo} theme (or one of its descendant themes), which is the default. - * You may otherwise add the action bar by calling {@link - * android.view.Window#requestFeature requestFeature(FEATURE_ACTION_BAR)} or by declaring it in a - * custom theme with the {@link android.R.styleable#Theme_windowActionBar windowActionBar} property. - *

By default, the action bar shows the application icon on - * the left, followed by the activity title. If your activity has an options menu, you can make - * select items accessible directly from the action bar as "action items". You can also - * modify various characteristics of the action bar or remove it completely.

- *

From your activity, you can retrieve an instance of {@link ActionBar} by calling {@link - * android.app.Activity#getActionBar getActionBar()}.

- *

In some cases, the action bar may be overlayed by another bar that enables contextual actions, - * using an {@link android.view.ActionMode}. For example, when the user selects one or more items in - * your activity, you can enable an action mode that offers actions specific to the selected - * items, with a UI that temporarily replaces the action bar. Although the UI may occupy the - * same space, the {@link android.view.ActionMode} APIs are distinct and independent from those for - * {@link ActionBar}. - *

- */ -public abstract class ActionBar { - /** - * Standard navigation mode. Consists of either a logo or icon - * and title text with an optional subtitle. Clicking any of these elements - * will dispatch onOptionsItemSelected to the host Activity with - * a MenuItem with item ID android.R.id.home. - */ - public static final int NAVIGATION_MODE_STANDARD = android.app.ActionBar.NAVIGATION_MODE_STANDARD; - - /** - * List navigation mode. Instead of static title text this mode - * presents a list menu for navigation within the activity. - * e.g. this might be presented to the user as a dropdown list. - */ - public static final int NAVIGATION_MODE_LIST = android.app.ActionBar.NAVIGATION_MODE_LIST; - - /** - * Tab navigation mode. Instead of static title text this mode - * presents a series of tabs for navigation within the activity. - */ - public static final int NAVIGATION_MODE_TABS = android.app.ActionBar.NAVIGATION_MODE_TABS; - - /** - * Use logo instead of icon if available. This flag will cause appropriate - * navigation modes to use a wider logo in place of the standard icon. - * - * @see #setDisplayOptions(int) - * @see #setDisplayOptions(int, int) - */ - public static final int DISPLAY_USE_LOGO = android.app.ActionBar.DISPLAY_USE_LOGO; - - /** - * Show 'home' elements in this action bar, leaving more space for other - * navigation elements. This includes logo and icon. - * - * @see #setDisplayOptions(int) - * @see #setDisplayOptions(int, int) - */ - public static final int DISPLAY_SHOW_HOME = android.app.ActionBar.DISPLAY_SHOW_HOME; - - /** - * Display the 'home' element such that it appears as an 'up' affordance. - * e.g. show an arrow to the left indicating the action that will be taken. - * - * Set this flag if selecting the 'home' button in the action bar to return - * up by a single level in your UI rather than back to the top level or front page. - * - *

Setting this option will implicitly enable interaction with the home/up - * button. See {@link #setHomeButtonEnabled(boolean)}. - * - * @see #setDisplayOptions(int) - * @see #setDisplayOptions(int, int) - */ - public static final int DISPLAY_HOME_AS_UP = android.app.ActionBar.DISPLAY_HOME_AS_UP; - - /** - * Show the activity title and subtitle, if present. - * - * @see #setTitle(CharSequence) - * @see #setTitle(int) - * @see #setSubtitle(CharSequence) - * @see #setSubtitle(int) - * @see #setDisplayOptions(int) - * @see #setDisplayOptions(int, int) - */ - public static final int DISPLAY_SHOW_TITLE = android.app.ActionBar.DISPLAY_SHOW_TITLE; - - /** - * Show the custom view if one has been set. - * @see #setCustomView(View) - * @see #setDisplayOptions(int) - * @see #setDisplayOptions(int, int) - */ - public static final int DISPLAY_SHOW_CUSTOM = android.app.ActionBar.DISPLAY_SHOW_CUSTOM; - - /** - * Set the action bar into custom navigation mode, supplying a view - * for custom navigation. - * - * Custom navigation views appear between the application icon and - * any action buttons and may use any space available there. Common - * use cases for custom navigation views might include an auto-suggesting - * address bar for a browser or other navigation mechanisms that do not - * translate well to provided navigation modes. - * - * @param view Custom navigation view to place in the ActionBar. - */ - public abstract void setCustomView(View view); - - /** - * Set the action bar into custom navigation mode, supplying a view - * for custom navigation. - * - *

Custom navigation views appear between the application icon and - * any action buttons and may use any space available there. Common - * use cases for custom navigation views might include an auto-suggesting - * address bar for a browser or other navigation mechanisms that do not - * translate well to provided navigation modes.

- * - *

The display option {@link #DISPLAY_SHOW_CUSTOM} must be set for - * the custom view to be displayed.

- * - * @param view Custom navigation view to place in the ActionBar. - * @param layoutParams How this custom view should layout in the bar. - * - * @see #setDisplayOptions(int, int) - */ - public abstract void setCustomView(View view, LayoutParams layoutParams); - - /** - * Set the action bar into custom navigation mode, supplying a view - * for custom navigation. - * - *

Custom navigation views appear between the application icon and - * any action buttons and may use any space available there. Common - * use cases for custom navigation views might include an auto-suggesting - * address bar for a browser or other navigation mechanisms that do not - * translate well to provided navigation modes.

- * - *

The display option {@link #DISPLAY_SHOW_CUSTOM} must be set for - * the custom view to be displayed.

- * - * @param resId Resource ID of a layout to inflate into the ActionBar. - * - * @see #setDisplayOptions(int, int) - */ - public abstract void setCustomView(int resId); - - /** - * Set the icon to display in the 'home' section of the action bar. - * The action bar will use an icon specified by its style or the - * activity icon by default. - * - * Whether the home section shows an icon or logo is controlled - * by the display option {@link #DISPLAY_USE_LOGO}. - * - * @param resId Resource ID of a drawable to show as an icon. - * - * @see #setDisplayUseLogoEnabled(boolean) - * @see #setDisplayShowHomeEnabled(boolean) - */ - public abstract void setIcon(int resId); - - /** - * Set the icon to display in the 'home' section of the action bar. - * The action bar will use an icon specified by its style or the - * activity icon by default. - * - * Whether the home section shows an icon or logo is controlled - * by the display option {@link #DISPLAY_USE_LOGO}. - * - * @param icon Drawable to show as an icon. - * - * @see #setDisplayUseLogoEnabled(boolean) - * @see #setDisplayShowHomeEnabled(boolean) - */ - public abstract void setIcon(Drawable icon); - - /** - * Set the logo to display in the 'home' section of the action bar. - * The action bar will use a logo specified by its style or the - * activity logo by default. - * - * Whether the home section shows an icon or logo is controlled - * by the display option {@link #DISPLAY_USE_LOGO}. - * - * @param resId Resource ID of a drawable to show as a logo. - * - * @see #setDisplayUseLogoEnabled(boolean) - * @see #setDisplayShowHomeEnabled(boolean) - */ - public abstract void setLogo(int resId); - - /** - * Set the logo to display in the 'home' section of the action bar. - * The action bar will use a logo specified by its style or the - * activity logo by default. - * - * Whether the home section shows an icon or logo is controlled - * by the display option {@link #DISPLAY_USE_LOGO}. - * - * @param logo Drawable to show as a logo. - * - * @see #setDisplayUseLogoEnabled(boolean) - * @see #setDisplayShowHomeEnabled(boolean) - */ - public abstract void setLogo(Drawable logo); - - /** - * Set the adapter and navigation callback for list navigation mode. - * - * The supplied adapter will provide views for the expanded list as well as - * the currently selected item. (These may be displayed differently.) - * - * The supplied OnNavigationListener will alert the application when the user - * changes the current list selection. - * - * @param adapter An adapter that will provide views both to display - * the current navigation selection and populate views - * within the dropdown navigation menu. - * @param callback An OnNavigationListener that will receive events when the user - * selects a navigation item. - */ - public abstract void setListNavigationCallbacks(SpinnerAdapter adapter, - OnNavigationListener callback); - - /** - * Set the selected navigation item in list or tabbed navigation modes. - * - * @param position Position of the item to select. - */ - public abstract void setSelectedNavigationItem(int position); - - /** - * Get the position of the selected navigation item in list or tabbed navigation modes. - * - * @return Position of the selected item. - */ - public abstract int getSelectedNavigationIndex(); - - /** - * Get the number of navigation items present in the current navigation mode. - * - * @return Number of navigation items. - */ - public abstract int getNavigationItemCount(); - - /** - * Set the action bar's title. This will only be displayed if - * {@link #DISPLAY_SHOW_TITLE} is set. - * - * @param title Title to set - * - * @see #setTitle(int) - * @see #setDisplayOptions(int, int) - */ - public abstract void setTitle(CharSequence title); - - /** - * Set the action bar's title. This will only be displayed if - * {@link #DISPLAY_SHOW_TITLE} is set. - * - * @param resId Resource ID of title string to set - * - * @see #setTitle(CharSequence) - * @see #setDisplayOptions(int, int) - */ - public abstract void setTitle(int resId); - - /** - * Set the action bar's subtitle. This will only be displayed if - * {@link #DISPLAY_SHOW_TITLE} is set. Set to null to disable the - * subtitle entirely. - * - * @param subtitle Subtitle to set - * - * @see #setSubtitle(int) - * @see #setDisplayOptions(int, int) - */ - public abstract void setSubtitle(CharSequence subtitle); - - /** - * Set the action bar's subtitle. This will only be displayed if - * {@link #DISPLAY_SHOW_TITLE} is set. - * - * @param resId Resource ID of subtitle string to set - * - * @see #setSubtitle(CharSequence) - * @see #setDisplayOptions(int, int) - */ - public abstract void setSubtitle(int resId); - - /** - * Set display options. This changes all display option bits at once. To change - * a limited subset of display options, see {@link #setDisplayOptions(int, int)}. - * - * @param options A combination of the bits defined by the DISPLAY_ constants - * defined in ActionBar. - */ - public abstract void setDisplayOptions(int options); - - /** - * Set selected display options. Only the options specified by mask will be changed. - * To change all display option bits at once, see {@link #setDisplayOptions(int)}. - * - *

Example: setDisplayOptions(0, DISPLAY_SHOW_HOME) will disable the - * {@link #DISPLAY_SHOW_HOME} option. - * setDisplayOptions(DISPLAY_SHOW_HOME, DISPLAY_SHOW_HOME | DISPLAY_USE_LOGO) - * will enable {@link #DISPLAY_SHOW_HOME} and disable {@link #DISPLAY_USE_LOGO}. - * - * @param options A combination of the bits defined by the DISPLAY_ constants - * defined in ActionBar. - * @param mask A bit mask declaring which display options should be changed. - */ - public abstract void setDisplayOptions(int options, int mask); - - /** - * Set whether to display the activity logo rather than the activity icon. - * A logo is often a wider, more detailed image. - * - *

To set several display options at once, see the setDisplayOptions methods. - * - * @param useLogo true to use the activity logo, false to use the activity icon. - * - * @see #setDisplayOptions(int) - * @see #setDisplayOptions(int, int) - */ - public abstract void setDisplayUseLogoEnabled(boolean useLogo); - - /** - * Set whether to include the application home affordance in the action bar. - * Home is presented as either an activity icon or logo. - * - *

To set several display options at once, see the setDisplayOptions methods. - * - * @param showHome true to show home, false otherwise. - * - * @see #setDisplayOptions(int) - * @see #setDisplayOptions(int, int) - */ - public abstract void setDisplayShowHomeEnabled(boolean showHome); - - /** - * Set whether home should be displayed as an "up" affordance. - * Set this to true if selecting "home" returns up by a single level in your UI - * rather than back to the top level or front page. - * - *

To set several display options at once, see the setDisplayOptions methods. - * - * @param showHomeAsUp true to show the user that selecting home will return one - * level up rather than to the top level of the app. - * - * @see #setDisplayOptions(int) - * @see #setDisplayOptions(int, int) - */ - public abstract void setDisplayHomeAsUpEnabled(boolean showHomeAsUp); - - /** - * Set whether an activity title/subtitle should be displayed. - * - *

To set several display options at once, see the setDisplayOptions methods. - * - * @param showTitle true to display a title/subtitle if present. - * - * @see #setDisplayOptions(int) - * @see #setDisplayOptions(int, int) - */ - public abstract void setDisplayShowTitleEnabled(boolean showTitle); - - /** - * Set whether a custom view should be displayed, if set. - * - *

To set several display options at once, see the setDisplayOptions methods. - * - * @param showCustom true if the currently set custom view should be displayed, false otherwise. - * - * @see #setDisplayOptions(int) - * @see #setDisplayOptions(int, int) - */ - public abstract void setDisplayShowCustomEnabled(boolean showCustom); - - /** - * Set the ActionBar's background. This will be used for the primary - * action bar. - * - * @param d Background drawable - * @see #setStackedBackgroundDrawable(Drawable) - * @see #setSplitBackgroundDrawable(Drawable) - */ - public abstract void setBackgroundDrawable(Drawable d); - - /** - * Set the ActionBar's stacked background. This will appear - * in the second row/stacked bar on some devices and configurations. - * - * @param d Background drawable for the stacked row - */ - public void setStackedBackgroundDrawable(Drawable d) { } - - /** - * Set the ActionBar's split background. This will appear in - * the split action bar containing menu-provided action buttons - * on some devices and configurations. - *

You can enable split action bar with {@link android.R.attr#uiOptions} - * - * @param d Background drawable for the split bar - */ - public void setSplitBackgroundDrawable(Drawable d) { } - - /** - * @return The current custom view. - */ - public abstract View getCustomView(); - - /** - * Returns the current ActionBar title in standard mode. - * Returns null if {@link #getNavigationMode()} would not return - * {@link #NAVIGATION_MODE_STANDARD}. - * - * @return The current ActionBar title or null. - */ - public abstract CharSequence getTitle(); - - /** - * Returns the current ActionBar subtitle in standard mode. - * Returns null if {@link #getNavigationMode()} would not return - * {@link #NAVIGATION_MODE_STANDARD}. - * - * @return The current ActionBar subtitle or null. - */ - public abstract CharSequence getSubtitle(); - - /** - * Returns the current navigation mode. The result will be one of: - *

    - *
  • {@link #NAVIGATION_MODE_STANDARD}
  • - *
  • {@link #NAVIGATION_MODE_LIST}
  • - *
  • {@link #NAVIGATION_MODE_TABS}
  • - *
- * - * @return The current navigation mode. - */ - public abstract int getNavigationMode(); - - /** - * Set the current navigation mode. - * - * @param mode The new mode to set. - * @see #NAVIGATION_MODE_STANDARD - * @see #NAVIGATION_MODE_LIST - * @see #NAVIGATION_MODE_TABS - */ - public abstract void setNavigationMode(int mode); - - /** - * @return The current set of display options. - */ - public abstract int getDisplayOptions(); - - /** - * Create and return a new {@link Tab}. - * This tab will not be included in the action bar until it is added. - * - *

Very often tabs will be used to switch between {@link Fragment} - * objects. Here is a typical implementation of such tabs:

- * - * {@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentTabs.java - * complete} - * - * @return A new Tab - * - * @see #addTab(Tab) - */ - public abstract Tab newTab(); - - /** - * Add a tab for use in tabbed navigation mode. The tab will be added at the end of the list. - * If this is the first tab to be added it will become the selected tab. - * - * @param tab Tab to add - */ - public abstract void addTab(Tab tab); - - /** - * Add a tab for use in tabbed navigation mode. The tab will be added at the end of the list. - * - * @param tab Tab to add - * @param setSelected True if the added tab should become the selected tab. - */ - public abstract void addTab(Tab tab, boolean setSelected); - - /** - * Add a tab for use in tabbed navigation mode. The tab will be inserted at - * position. If this is the first tab to be added it will become - * the selected tab. - * - * @param tab The tab to add - * @param position The new position of the tab - */ - public abstract void addTab(Tab tab, int position); - - /** - * Add a tab for use in tabbed navigation mode. The tab will be insterted at - * position. - * - * @param tab The tab to add - * @param position The new position of the tab - * @param setSelected True if the added tab should become the selected tab. - */ - public abstract void addTab(Tab tab, int position, boolean setSelected); - - /** - * Remove a tab from the action bar. If the removed tab was selected it will be deselected - * and another tab will be selected if present. - * - * @param tab The tab to remove - */ - public abstract void removeTab(Tab tab); - - /** - * Remove a tab from the action bar. If the removed tab was selected it will be deselected - * and another tab will be selected if present. - * - * @param position Position of the tab to remove - */ - public abstract void removeTabAt(int position); - - /** - * Remove all tabs from the action bar and deselect the current tab. - */ - public abstract void removeAllTabs(); - - /** - * Select the specified tab. If it is not a child of this action bar it will be added. - * - *

Note: If you want to select by index, use {@link #setSelectedNavigationItem(int)}.

- * - * @param tab Tab to select - */ - public abstract void selectTab(Tab tab); - - /** - * Returns the currently selected tab if in tabbed navigation mode and there is at least - * one tab present. - * - * @return The currently selected tab or null - */ - public abstract Tab getSelectedTab(); - - /** - * Returns the tab at the specified index. - * - * @param index Index value in the range 0-get - * @return - */ - public abstract Tab getTabAt(int index); - - /** - * Returns the number of tabs currently registered with the action bar. - * @return Tab count - */ - public abstract int getTabCount(); - - /** - * Retrieve the current height of the ActionBar. - * - * @return The ActionBar's height - */ - public abstract int getHeight(); - - /** - * Show the ActionBar if it is not currently showing. - * If the window hosting the ActionBar does not have the feature - * {@link Window#FEATURE_ACTION_BAR_OVERLAY} it will resize application - * content to fit the new space available. - */ - public abstract void show(); - - /** - * Hide the ActionBar if it is currently showing. - * If the window hosting the ActionBar does not have the feature - * {@link Window#FEATURE_ACTION_BAR_OVERLAY} it will resize application - * content to fit the new space available. - */ - public abstract void hide(); - - /** - * @return true if the ActionBar is showing, false otherwise. - */ - public abstract boolean isShowing(); - - /** - * Add a listener that will respond to menu visibility change events. - * - * @param listener The new listener to add - */ - public abstract void addOnMenuVisibilityListener(OnMenuVisibilityListener listener); - - /** - * Remove a menu visibility listener. This listener will no longer receive menu - * visibility change events. - * - * @param listener A listener to remove that was previously added - */ - public abstract void removeOnMenuVisibilityListener(OnMenuVisibilityListener listener); - - /** - * Enable or disable the "home" button in the corner of the action bar. (Note that this - * is the application home/up affordance on the action bar, not the systemwide home - * button.) - * - *

This defaults to true for packages targeting < API 14. For packages targeting - * API 14 or greater, the application should call this method to enable interaction - * with the home/up affordance. - * - *

Setting the {@link #DISPLAY_HOME_AS_UP} display option will automatically enable - * the home button. - * - * @param enabled true to enable the home button, false to disable the home button. - */ - public void setHomeButtonEnabled(boolean enabled) { } - - /** - * Returns a {@link Context} with an appropriate theme for creating views that - * will appear in the action bar. If you are inflating or instantiating custom views - * that will appear in an action bar, you should use the Context returned by this method. - * (This includes adapters used for list navigation mode.) - * This will ensure that views contrast properly against the action bar. - * - * @return A themed Context for creating views - */ - public Context getThemedContext() { return null; } - - /** - * Listener interface for ActionBar navigation events. - */ - public interface OnNavigationListener { - /** - * This method is called whenever a navigation item in your action bar - * is selected. - * - * @param itemPosition Position of the item clicked. - * @param itemId ID of the item clicked. - * @return True if the event was handled, false otherwise. - */ - public boolean onNavigationItemSelected(int itemPosition, long itemId); - } - - /** - * Listener for receiving events when action bar menus are shown or hidden. - */ - public interface OnMenuVisibilityListener { - /** - * Called when an action bar menu is shown or hidden. Applications may want to use - * this to tune auto-hiding behavior for the action bar or pause/resume video playback, - * gameplay, or other activity within the main content area. - * - * @param isVisible True if an action bar menu is now visible, false if no action bar - * menus are visible. - */ - public void onMenuVisibilityChanged(boolean isVisible); - } - - /** - * A tab in the action bar. - * - *

Tabs manage the hiding and showing of {@link Fragment}s. - */ - public static abstract class Tab { - /** - * An invalid position for a tab. - * - * @see #getPosition() - */ - public static final int INVALID_POSITION = -1; - - /** - * Return the current position of this tab in the action bar. - * - * @return Current position, or {@link #INVALID_POSITION} if this tab is not currently in - * the action bar. - */ - public abstract int getPosition(); - - /** - * Return the icon associated with this tab. - * - * @return The tab's icon - */ - public abstract Drawable getIcon(); - - /** - * Return the text of this tab. - * - * @return The tab's text - */ - public abstract CharSequence getText(); - - /** - * Set the icon displayed on this tab. - * - * @param icon The drawable to use as an icon - * @return The current instance for call chaining - */ - public abstract Tab setIcon(Drawable icon); - - /** - * Set the icon displayed on this tab. - * - * @param resId Resource ID referring to the drawable to use as an icon - * @return The current instance for call chaining - */ - public abstract Tab setIcon(int resId); - - /** - * Set the text displayed on this tab. Text may be truncated if there is not - * room to display the entire string. - * - * @param text The text to display - * @return The current instance for call chaining - */ - public abstract Tab setText(CharSequence text); - - /** - * Set the text displayed on this tab. Text may be truncated if there is not - * room to display the entire string. - * - * @param resId A resource ID referring to the text that should be displayed - * @return The current instance for call chaining - */ - public abstract Tab setText(int resId); - - /** - * Set a custom view to be used for this tab. This overrides values set by - * {@link #setText(CharSequence)} and {@link #setIcon(Drawable)}. - * - * @param view Custom view to be used as a tab. - * @return The current instance for call chaining - */ - public abstract Tab setCustomView(View view); - - /** - * Set a custom view to be used for this tab. This overrides values set by - * {@link #setText(CharSequence)} and {@link #setIcon(Drawable)}. - * - * @param layoutResId A layout resource to inflate and use as a custom tab view - * @return The current instance for call chaining - */ - public abstract Tab setCustomView(int layoutResId); - - /** - * Retrieve a previously set custom view for this tab. - * - * @return The custom view set by {@link #setCustomView(View)}. - */ - public abstract View getCustomView(); - - /** - * Give this Tab an arbitrary object to hold for later use. - * - * @param obj Object to store - * @return The current instance for call chaining - */ - public abstract Tab setTag(Object obj); - - /** - * @return This Tab's tag object. - */ - public abstract Object getTag(); - - /** - * Set the {@link TabListener} that will handle switching to and from this tab. - * All tabs must have a TabListener set before being added to the ActionBar. - * - * @param listener Listener to handle tab selection events - * @return The current instance for call chaining - */ - public abstract Tab setTabListener(TabListener listener); - - /** - * Select this tab. Only valid if the tab has been added to the action bar. - */ - public abstract void select(); - - /** - * Set a description of this tab's content for use in accessibility support. - * If no content description is provided the title will be used. - * - * @param resId A resource ID referring to the description text - * @return The current instance for call chaining - * @see #setContentDescription(CharSequence) - * @see #getContentDescription() - */ - public abstract Tab setContentDescription(int resId); - - /** - * Set a description of this tab's content for use in accessibility support. - * If no content description is provided the title will be used. - * - * @param contentDesc Description of this tab's content - * @return The current instance for call chaining - * @see #setContentDescription(int) - * @see #getContentDescription() - */ - public abstract Tab setContentDescription(CharSequence contentDesc); - - /** - * Gets a brief description of this tab's content for use in accessibility support. - * - * @return Description of this tab's content - * @see #setContentDescription(CharSequence) - * @see #setContentDescription(int) - */ - public abstract CharSequence getContentDescription(); - } - - /** - * Callback interface invoked when a tab is focused, unfocused, added, or removed. - */ - public interface TabListener { - /** - * Called when a tab enters the selected state. - * - * @param tab The tab that was selected - * @param ft A {@link FragmentTransaction} for queuing fragment operations to execute - * during a tab switch. The previous tab's unselect and this tab's select will be - * executed in a single transaction. This FragmentTransaction does not support - * being added to the back stack. - */ - public void onTabSelected(Tab tab, FragmentTransaction ft); - - /** - * Called when a tab exits the selected state. - * - * @param tab The tab that was unselected - * @param ft A {@link FragmentTransaction} for queuing fragment operations to execute - * during a tab switch. This tab's unselect and the newly selected tab's select - * will be executed in a single transaction. This FragmentTransaction does not - * support being added to the back stack. - */ - public void onTabUnselected(Tab tab, FragmentTransaction ft); - - /** - * Called when a tab that is already selected is chosen again by the user. - * Some applications may use this action to return to the top level of a category. - * - * @param tab The tab that was reselected. - * @param ft A {@link FragmentTransaction} for queuing fragment operations to execute - * once this method returns. This FragmentTransaction does not support - * being added to the back stack. - */ - public void onTabReselected(Tab tab, FragmentTransaction ft); - } - - /** - * Per-child layout information associated with action bar custom views. - * - * @attr ref android.R.styleable#ActionBar_LayoutParams_layout_gravity - */ - public static class LayoutParams extends MarginLayoutParams { - /** - * Gravity for the view associated with these LayoutParams. - * - * @see android.view.Gravity - */ - @ViewDebug.ExportedProperty(mapping = { - @ViewDebug.IntToString(from = -1, to = "NONE"), - @ViewDebug.IntToString(from = Gravity.NO_GRAVITY, to = "NONE"), - @ViewDebug.IntToString(from = Gravity.TOP, to = "TOP"), - @ViewDebug.IntToString(from = Gravity.BOTTOM, to = "BOTTOM"), - @ViewDebug.IntToString(from = Gravity.LEFT, to = "LEFT"), - @ViewDebug.IntToString(from = Gravity.RIGHT, to = "RIGHT"), - @ViewDebug.IntToString(from = Gravity.CENTER_VERTICAL, to = "CENTER_VERTICAL"), - @ViewDebug.IntToString(from = Gravity.FILL_VERTICAL, to = "FILL_VERTICAL"), - @ViewDebug.IntToString(from = Gravity.CENTER_HORIZONTAL, to = "CENTER_HORIZONTAL"), - @ViewDebug.IntToString(from = Gravity.FILL_HORIZONTAL, to = "FILL_HORIZONTAL"), - @ViewDebug.IntToString(from = Gravity.CENTER, to = "CENTER"), - @ViewDebug.IntToString(from = Gravity.FILL, to = "FILL") - }) - public int gravity = -1; - - public LayoutParams(Context c, AttributeSet attrs) { - super(c, attrs); - } - - public LayoutParams(int width, int height) { - super(width, height); - this.gravity = Gravity.CENTER_VERTICAL | Gravity.LEFT; - } - - public LayoutParams(int width, int height, int gravity) { - super(width, height); - this.gravity = gravity; - } - - public LayoutParams(int gravity) { - this(WRAP_CONTENT, FILL_PARENT, gravity); - } - - public LayoutParams(LayoutParams source) { - super(source); - - this.gravity = source.gravity; - } - - public LayoutParams(ViewGroup.LayoutParams source) { - super(source); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockActivity.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockActivity.java deleted file mode 100755 index 9cb57e95a..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockActivity.java +++ /dev/null @@ -1,259 +0,0 @@ -package com.actionbarsherlock.app; - -import android.app.Activity; -import android.content.res.Configuration; -import android.os.Bundle; -import android.view.KeyEvent; -import android.view.View; -import android.view.Window; -import android.view.ViewGroup.LayoutParams; -import com.actionbarsherlock.ActionBarSherlock; -import com.actionbarsherlock.ActionBarSherlock.OnActionModeFinishedListener; -import com.actionbarsherlock.ActionBarSherlock.OnActionModeStartedListener; -import com.actionbarsherlock.ActionBarSherlock.OnCreatePanelMenuListener; -import com.actionbarsherlock.ActionBarSherlock.OnMenuItemSelectedListener; -import com.actionbarsherlock.ActionBarSherlock.OnPreparePanelListener; -import com.actionbarsherlock.view.ActionMode; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; - -public abstract class SherlockActivity extends Activity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener { - private ActionBarSherlock mSherlock; - - protected final ActionBarSherlock getSherlock() { - if (mSherlock == null) { - mSherlock = ActionBarSherlock.wrap(this, ActionBarSherlock.FLAG_DELEGATE); - } - return mSherlock; - } - - - /////////////////////////////////////////////////////////////////////////// - // Action bar and mode - /////////////////////////////////////////////////////////////////////////// - - public ActionBar getSupportActionBar() { - return getSherlock().getActionBar(); - } - - public ActionMode startActionMode(ActionMode.Callback callback) { - return getSherlock().startActionMode(callback); - } - - @Override - public void onActionModeStarted(ActionMode mode) {} - - @Override - public void onActionModeFinished(ActionMode mode) {} - - - /////////////////////////////////////////////////////////////////////////// - // General lifecycle/callback dispatching - /////////////////////////////////////////////////////////////////////////// - - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - getSherlock().dispatchConfigurationChanged(newConfig); - } - - @Override - protected void onPostResume() { - super.onPostResume(); - getSherlock().dispatchPostResume(); - } - - @Override - protected void onPause() { - getSherlock().dispatchPause(); - super.onPause(); - } - - @Override - protected void onStop() { - getSherlock().dispatchStop(); - super.onStop(); - } - - @Override - protected void onDestroy() { - getSherlock().dispatchDestroy(); - super.onDestroy(); - } - - @Override - protected void onPostCreate(Bundle savedInstanceState) { - getSherlock().dispatchPostCreate(savedInstanceState); - super.onPostCreate(savedInstanceState); - } - - @Override - protected void onTitleChanged(CharSequence title, int color) { - getSherlock().dispatchTitleChanged(title, color); - super.onTitleChanged(title, color); - } - - @Override - public final boolean onMenuOpened(int featureId, android.view.Menu menu) { - if (getSherlock().dispatchMenuOpened(featureId, menu)) { - return true; - } - return super.onMenuOpened(featureId, menu); - } - - @Override - public void onPanelClosed(int featureId, android.view.Menu menu) { - getSherlock().dispatchPanelClosed(featureId, menu); - super.onPanelClosed(featureId, menu); - } - - @Override - public boolean dispatchKeyEvent(KeyEvent event) { - if (getSherlock().dispatchKeyEvent(event)) { - return true; - } - return super.dispatchKeyEvent(event); - } - - - /////////////////////////////////////////////////////////////////////////// - // Native menu handling - /////////////////////////////////////////////////////////////////////////// - - public MenuInflater getSupportMenuInflater() { - return getSherlock().getMenuInflater(); - } - - public void invalidateOptionsMenu() { - getSherlock().dispatchInvalidateOptionsMenu(); - } - - public void supportInvalidateOptionsMenu() { - invalidateOptionsMenu(); - } - - @Override - public final boolean onCreateOptionsMenu(android.view.Menu menu) { - return getSherlock().dispatchCreateOptionsMenu(menu); - } - - @Override - public final boolean onPrepareOptionsMenu(android.view.Menu menu) { - return getSherlock().dispatchPrepareOptionsMenu(menu); - } - - @Override - public final boolean onOptionsItemSelected(android.view.MenuItem item) { - return getSherlock().dispatchOptionsItemSelected(item); - } - - @Override - public void openOptionsMenu() { - if (!getSherlock().dispatchOpenOptionsMenu()) { - super.openOptionsMenu(); - } - } - - @Override - public void closeOptionsMenu() { - if (!getSherlock().dispatchCloseOptionsMenu()) { - super.closeOptionsMenu(); - } - } - - - /////////////////////////////////////////////////////////////////////////// - // Sherlock menu handling - /////////////////////////////////////////////////////////////////////////// - - @Override - public boolean onCreatePanelMenu(int featureId, Menu menu) { - if (featureId == Window.FEATURE_OPTIONS_PANEL) { - return onCreateOptionsMenu(menu); - } - return false; - } - - public boolean onCreateOptionsMenu(Menu menu) { - return true; - } - - @Override - public boolean onPreparePanel(int featureId, View view, Menu menu) { - if (featureId == Window.FEATURE_OPTIONS_PANEL) { - return onPrepareOptionsMenu(menu); - } - return false; - } - - public boolean onPrepareOptionsMenu(Menu menu) { - return true; - } - - @Override - public boolean onMenuItemSelected(int featureId, MenuItem item) { - if (featureId == Window.FEATURE_OPTIONS_PANEL) { - return onOptionsItemSelected(item); - } - return false; - } - - public boolean onOptionsItemSelected(MenuItem item) { - return false; - } - - - /////////////////////////////////////////////////////////////////////////// - // Content - /////////////////////////////////////////////////////////////////////////// - - @Override - public void addContentView(View view, LayoutParams params) { - getSherlock().addContentView(view, params); - } - - @Override - public void setContentView(int layoutResId) { - getSherlock().setContentView(layoutResId); - } - - @Override - public void setContentView(View view, LayoutParams params) { - getSherlock().setContentView(view, params); - } - - @Override - public void setContentView(View view) { - getSherlock().setContentView(view); - } - - public void requestWindowFeature(long featureId) { - getSherlock().requestFeature((int)featureId); - } - - - /////////////////////////////////////////////////////////////////////////// - // Progress Indication - /////////////////////////////////////////////////////////////////////////// - - public void setSupportProgress(int progress) { - getSherlock().setProgress(progress); - } - - public void setSupportProgressBarIndeterminate(boolean indeterminate) { - getSherlock().setProgressBarIndeterminate(indeterminate); - } - - public void setSupportProgressBarIndeterminateVisibility(boolean visible) { - getSherlock().setProgressBarIndeterminateVisibility(visible); - } - - public void setSupportProgressBarVisibility(boolean visible) { - getSherlock().setProgressBarVisibility(visible); - } - - public void setSupportSecondaryProgress(int secondaryProgress) { - getSherlock().setSecondaryProgress(secondaryProgress); - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockDialogFragment.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockDialogFragment.java deleted file mode 100755 index a7c856bf0..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockDialogFragment.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.actionbarsherlock.app; - -import android.app.Activity; -import android.support.v4.app.DialogFragment; -import com.actionbarsherlock.internal.view.menu.MenuItemWrapper; -import com.actionbarsherlock.internal.view.menu.MenuWrapper; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; - -import static com.actionbarsherlock.app.SherlockFragmentActivity.OnCreateOptionsMenuListener; -import static com.actionbarsherlock.app.SherlockFragmentActivity.OnOptionsItemSelectedListener; -import static com.actionbarsherlock.app.SherlockFragmentActivity.OnPrepareOptionsMenuListener; - -public class SherlockDialogFragment extends DialogFragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener { - private SherlockFragmentActivity mActivity; - - public SherlockFragmentActivity getSherlockActivity() { - return mActivity; - } - - @Override - public void onAttach(Activity activity) { - if (!(activity instanceof SherlockFragmentActivity)) { - throw new IllegalStateException(getClass().getSimpleName() + " must be attached to a SherlockFragmentActivity."); - } - mActivity = (SherlockFragmentActivity)activity; - - super.onAttach(activity); - } - - @Override - public void onDetach() { - mActivity = null; - super.onDetach(); - } - - @Override - public final void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) { - onCreateOptionsMenu(new MenuWrapper(menu), mActivity.getSupportMenuInflater()); - } - - @Override - public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - //Nothing to see here. - } - - @Override - public final void onPrepareOptionsMenu(android.view.Menu menu) { - onPrepareOptionsMenu(new MenuWrapper(menu)); - } - - @Override - public void onPrepareOptionsMenu(Menu menu) { - //Nothing to see here. - } - - @Override - public final boolean onOptionsItemSelected(android.view.MenuItem item) { - return onOptionsItemSelected(new MenuItemWrapper(item)); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - //Nothing to see here. - return false; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockExpandableListActivity.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockExpandableListActivity.java deleted file mode 100755 index 078f9b0ca..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockExpandableListActivity.java +++ /dev/null @@ -1,259 +0,0 @@ -package com.actionbarsherlock.app; - -import android.app.ExpandableListActivity; -import android.content.res.Configuration; -import android.os.Bundle; -import android.view.KeyEvent; -import android.view.View; -import android.view.ViewGroup.LayoutParams; -import android.view.Window; -import com.actionbarsherlock.ActionBarSherlock; -import com.actionbarsherlock.ActionBarSherlock.OnActionModeFinishedListener; -import com.actionbarsherlock.ActionBarSherlock.OnActionModeStartedListener; -import com.actionbarsherlock.ActionBarSherlock.OnCreatePanelMenuListener; -import com.actionbarsherlock.ActionBarSherlock.OnMenuItemSelectedListener; -import com.actionbarsherlock.ActionBarSherlock.OnPreparePanelListener; -import com.actionbarsherlock.view.ActionMode; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; - -public abstract class SherlockExpandableListActivity extends ExpandableListActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener { - private ActionBarSherlock mSherlock; - - protected final ActionBarSherlock getSherlock() { - if (mSherlock == null) { - mSherlock = ActionBarSherlock.wrap(this, ActionBarSherlock.FLAG_DELEGATE); - } - return mSherlock; - } - - - /////////////////////////////////////////////////////////////////////////// - // Action bar and mode - /////////////////////////////////////////////////////////////////////////// - - public ActionBar getSupportActionBar() { - return getSherlock().getActionBar(); - } - - public ActionMode startActionMode(ActionMode.Callback callback) { - return getSherlock().startActionMode(callback); - } - - @Override - public void onActionModeStarted(ActionMode mode) {} - - @Override - public void onActionModeFinished(ActionMode mode) {} - - - /////////////////////////////////////////////////////////////////////////// - // General lifecycle/callback dispatching - /////////////////////////////////////////////////////////////////////////// - - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - getSherlock().dispatchConfigurationChanged(newConfig); - } - - @Override - protected void onPostResume() { - super.onPostResume(); - getSherlock().dispatchPostResume(); - } - - @Override - protected void onPause() { - getSherlock().dispatchPause(); - super.onPause(); - } - - @Override - protected void onStop() { - getSherlock().dispatchStop(); - super.onStop(); - } - - @Override - protected void onDestroy() { - getSherlock().dispatchDestroy(); - super.onDestroy(); - } - - @Override - protected void onPostCreate(Bundle savedInstanceState) { - getSherlock().dispatchPostCreate(savedInstanceState); - super.onPostCreate(savedInstanceState); - } - - @Override - protected void onTitleChanged(CharSequence title, int color) { - getSherlock().dispatchTitleChanged(title, color); - super.onTitleChanged(title, color); - } - - @Override - public final boolean onMenuOpened(int featureId, android.view.Menu menu) { - if (getSherlock().dispatchMenuOpened(featureId, menu)) { - return true; - } - return super.onMenuOpened(featureId, menu); - } - - @Override - public void onPanelClosed(int featureId, android.view.Menu menu) { - getSherlock().dispatchPanelClosed(featureId, menu); - super.onPanelClosed(featureId, menu); - } - - @Override - public boolean dispatchKeyEvent(KeyEvent event) { - if (getSherlock().dispatchKeyEvent(event)) { - return true; - } - return super.dispatchKeyEvent(event); - } - - - /////////////////////////////////////////////////////////////////////////// - // Native menu handling - /////////////////////////////////////////////////////////////////////////// - - public MenuInflater getSupportMenuInflater() { - return getSherlock().getMenuInflater(); - } - - public void invalidateOptionsMenu() { - getSherlock().dispatchInvalidateOptionsMenu(); - } - - public void supportInvalidateOptionsMenu() { - invalidateOptionsMenu(); - } - - @Override - public final boolean onCreateOptionsMenu(android.view.Menu menu) { - return getSherlock().dispatchCreateOptionsMenu(menu); - } - - @Override - public final boolean onPrepareOptionsMenu(android.view.Menu menu) { - return getSherlock().dispatchPrepareOptionsMenu(menu); - } - - @Override - public final boolean onOptionsItemSelected(android.view.MenuItem item) { - return getSherlock().dispatchOptionsItemSelected(item); - } - - @Override - public void openOptionsMenu() { - if (!getSherlock().dispatchOpenOptionsMenu()) { - super.openOptionsMenu(); - } - } - - @Override - public void closeOptionsMenu() { - if (!getSherlock().dispatchCloseOptionsMenu()) { - super.closeOptionsMenu(); - } - } - - - /////////////////////////////////////////////////////////////////////////// - // Sherlock menu handling - /////////////////////////////////////////////////////////////////////////// - - @Override - public boolean onCreatePanelMenu(int featureId, Menu menu) { - if (featureId == Window.FEATURE_OPTIONS_PANEL) { - return onCreateOptionsMenu(menu); - } - return false; - } - - public boolean onCreateOptionsMenu(Menu menu) { - return true; - } - - @Override - public boolean onPreparePanel(int featureId, View view, Menu menu) { - if (featureId == Window.FEATURE_OPTIONS_PANEL) { - return onPrepareOptionsMenu(menu); - } - return false; - } - - public boolean onPrepareOptionsMenu(Menu menu) { - return true; - } - - @Override - public boolean onMenuItemSelected(int featureId, MenuItem item) { - if (featureId == Window.FEATURE_OPTIONS_PANEL) { - return onOptionsItemSelected(item); - } - return false; - } - - public boolean onOptionsItemSelected(MenuItem item) { - return false; - } - - - /////////////////////////////////////////////////////////////////////////// - // Content - /////////////////////////////////////////////////////////////////////////// - - @Override - public void addContentView(View view, LayoutParams params) { - getSherlock().addContentView(view, params); - } - - @Override - public void setContentView(int layoutResId) { - getSherlock().setContentView(layoutResId); - } - - @Override - public void setContentView(View view, LayoutParams params) { - getSherlock().setContentView(view, params); - } - - @Override - public void setContentView(View view) { - getSherlock().setContentView(view); - } - - public void requestWindowFeature(long featureId) { - getSherlock().requestFeature((int)featureId); - } - - - /////////////////////////////////////////////////////////////////////////// - // Progress Indication - /////////////////////////////////////////////////////////////////////////// - - public void setSupportProgress(int progress) { - getSherlock().setProgress(progress); - } - - public void setSupportProgressBarIndeterminate(boolean indeterminate) { - getSherlock().setProgressBarIndeterminate(indeterminate); - } - - public void setSupportProgressBarIndeterminateVisibility(boolean visible) { - getSherlock().setProgressBarIndeterminateVisibility(visible); - } - - public void setSupportProgressBarVisibility(boolean visible) { - getSherlock().setProgressBarVisibility(visible); - } - - public void setSupportSecondaryProgress(int secondaryProgress) { - getSherlock().setSecondaryProgress(secondaryProgress); - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragment.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragment.java deleted file mode 100755 index 0f24e9c85..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragment.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.actionbarsherlock.app; - -import android.app.Activity; -import android.support.v4.app.Fragment; -import com.actionbarsherlock.internal.view.menu.MenuItemWrapper; -import com.actionbarsherlock.internal.view.menu.MenuWrapper; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; - -import static com.actionbarsherlock.app.SherlockFragmentActivity.OnCreateOptionsMenuListener; -import static com.actionbarsherlock.app.SherlockFragmentActivity.OnOptionsItemSelectedListener; -import static com.actionbarsherlock.app.SherlockFragmentActivity.OnPrepareOptionsMenuListener; - -public class SherlockFragment extends Fragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener { - private SherlockFragmentActivity mActivity; - - public SherlockFragmentActivity getSherlockActivity() { - return mActivity; - } - - @Override - public void onAttach(Activity activity) { - if (!(activity instanceof SherlockFragmentActivity)) { - throw new IllegalStateException(getClass().getSimpleName() + " must be attached to a SherlockFragmentActivity."); - } - mActivity = (SherlockFragmentActivity)activity; - - super.onAttach(activity); - } - - @Override - public void onDetach() { - mActivity = null; - super.onDetach(); - } - - @Override - public final void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) { - onCreateOptionsMenu(new MenuWrapper(menu), mActivity.getSupportMenuInflater()); - } - - @Override - public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - //Nothing to see here. - } - - @Override - public final void onPrepareOptionsMenu(android.view.Menu menu) { - onPrepareOptionsMenu(new MenuWrapper(menu)); - } - - @Override - public void onPrepareOptionsMenu(Menu menu) { - //Nothing to see here. - } - - @Override - public final boolean onOptionsItemSelected(android.view.MenuItem item) { - return onOptionsItemSelected(new MenuItemWrapper(item)); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - //Nothing to see here. - return false; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragmentActivity.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragmentActivity.java deleted file mode 100755 index 5cd13ba7c..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragmentActivity.java +++ /dev/null @@ -1,292 +0,0 @@ -package com.actionbarsherlock.app; - -import android.content.res.Configuration; -import android.os.Bundle; -import android.support.v4.app._ActionBarSherlockTrojanHorse; -import android.util.Log; -import android.view.KeyEvent; -import android.view.View; -import android.view.ViewGroup.LayoutParams; -import android.view.Window; -import com.actionbarsherlock.ActionBarSherlock; -import com.actionbarsherlock.view.ActionMode; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -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 { - private static final boolean DEBUG = false; - private static final String TAG = "SherlockFragmentActivity"; - - private ActionBarSherlock mSherlock; - private boolean mIgnoreNativeCreate = false; - private boolean mIgnoreNativePrepare = false; - private boolean mIgnoreNativeSelected = false; - - protected final ActionBarSherlock getSherlock() { - if (mSherlock == null) { - mSherlock = ActionBarSherlock.wrap(this, ActionBarSherlock.FLAG_DELEGATE); - } - return mSherlock; - } - - - /////////////////////////////////////////////////////////////////////////// - // Action bar and mode - /////////////////////////////////////////////////////////////////////////// - - public ActionBar getSupportActionBar() { - return getSherlock().getActionBar(); - } - - public ActionMode startActionMode(ActionMode.Callback callback) { - return getSherlock().startActionMode(callback); - } - - @Override - public void onActionModeStarted(ActionMode mode) {} - - @Override - public void onActionModeFinished(ActionMode mode) {} - - - /////////////////////////////////////////////////////////////////////////// - // General lifecycle/callback dispatching - /////////////////////////////////////////////////////////////////////////// - - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - getSherlock().dispatchConfigurationChanged(newConfig); - } - - @Override - protected void onPostResume() { - super.onPostResume(); - getSherlock().dispatchPostResume(); - } - - @Override - protected void onPause() { - getSherlock().dispatchPause(); - super.onPause(); - } - - @Override - protected void onStop() { - getSherlock().dispatchStop(); - super.onStop(); - } - - @Override - protected void onDestroy() { - getSherlock().dispatchDestroy(); - super.onDestroy(); - } - - @Override - protected void onPostCreate(Bundle savedInstanceState) { - getSherlock().dispatchPostCreate(savedInstanceState); - super.onPostCreate(savedInstanceState); - } - - @Override - protected void onTitleChanged(CharSequence title, int color) { - getSherlock().dispatchTitleChanged(title, color); - super.onTitleChanged(title, color); - } - - @Override - public final boolean onMenuOpened(int featureId, android.view.Menu menu) { - if (getSherlock().dispatchMenuOpened(featureId, menu)) { - return true; - } - return super.onMenuOpened(featureId, menu); - } - - @Override - public void onPanelClosed(int featureId, android.view.Menu menu) { - getSherlock().dispatchPanelClosed(featureId, menu); - super.onPanelClosed(featureId, menu); - } - - @Override - public boolean dispatchKeyEvent(KeyEvent event) { - if (getSherlock().dispatchKeyEvent(event)) { - return true; - } - return super.dispatchKeyEvent(event); - } - - - /////////////////////////////////////////////////////////////////////////// - // Native menu handling - /////////////////////////////////////////////////////////////////////////// - - public MenuInflater getSupportMenuInflater() { - if (DEBUG) Log.d(TAG, "[getSupportMenuInflater]"); - - return getSherlock().getMenuInflater(); - } - - public void invalidateOptionsMenu() { - if (DEBUG) Log.d(TAG, "[invalidateOptionsMenu]"); - - getSherlock().dispatchInvalidateOptionsMenu(); - } - - public void supportInvalidateOptionsMenu() { - if (DEBUG) Log.d(TAG, "[supportInvalidateOptionsMenu]"); - - invalidateOptionsMenu(); - } - - @Override - public final boolean onCreatePanelMenu(int featureId, android.view.Menu menu) { - if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu); - - if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeCreate) { - mIgnoreNativeCreate = true; - boolean result = getSherlock().dispatchCreateOptionsMenu(menu); - mIgnoreNativeCreate = false; - - if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result); - return result; - } - return super.onCreatePanelMenu(featureId, menu); - } - - @Override - public final boolean onCreateOptionsMenu(android.view.Menu menu) { - return true; - } - - @Override - public final boolean onPreparePanel(int featureId, View view, android.view.Menu menu) { - if (DEBUG) Log.d(TAG, "[onPreparePanel] featureId: " + featureId + ", view: " + view + ", menu: " + menu); - - if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativePrepare) { - mIgnoreNativePrepare = true; - boolean result = getSherlock().dispatchPrepareOptionsMenu(menu); - mIgnoreNativePrepare = false; - - if (DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result); - return result; - } - return super.onPreparePanel(featureId, view, menu); - } - - @Override - public final boolean onPrepareOptionsMenu(android.view.Menu menu) { - return true; - } - - @Override - public final boolean onMenuItemSelected(int featureId, android.view.MenuItem item) { - if (DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item); - - if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeSelected) { - mIgnoreNativeSelected = true; - boolean result = getSherlock().dispatchOptionsItemSelected(item); - mIgnoreNativeSelected = false; - - if (DEBUG) Log.d(TAG, "[onMenuItemSelected] returning " + result); - return result; - } - return super.onMenuItemSelected(featureId, item); - } - - @Override - public final boolean onOptionsItemSelected(android.view.MenuItem item) { - return false; - } - - @Override - public void openOptionsMenu() { - if (!getSherlock().dispatchOpenOptionsMenu()) { - super.openOptionsMenu(); - } - } - - @Override - public void closeOptionsMenu() { - if (!getSherlock().dispatchCloseOptionsMenu()) { - super.closeOptionsMenu(); - } - } - - - /////////////////////////////////////////////////////////////////////////// - // Sherlock menu handling - /////////////////////////////////////////////////////////////////////////// - - public boolean onCreateOptionsMenu(Menu menu) { - return true; - } - - public boolean onPrepareOptionsMenu(Menu menu) { - return true; - } - - public boolean onOptionsItemSelected(MenuItem item) { - return false; - } - - - /////////////////////////////////////////////////////////////////////////// - // Content - /////////////////////////////////////////////////////////////////////////// - - @Override - public void addContentView(View view, LayoutParams params) { - getSherlock().addContentView(view, params); - } - - @Override - public void setContentView(int layoutResId) { - getSherlock().setContentView(layoutResId); - } - - @Override - public void setContentView(View view, LayoutParams params) { - getSherlock().setContentView(view, params); - } - - @Override - public void setContentView(View view) { - getSherlock().setContentView(view); - } - - public void requestWindowFeature(long featureId) { - getSherlock().requestFeature((int)featureId); - } - - - /////////////////////////////////////////////////////////////////////////// - // Progress Indication - /////////////////////////////////////////////////////////////////////////// - - public void setSupportProgress(int progress) { - getSherlock().setProgress(progress); - } - - public void setSupportProgressBarIndeterminate(boolean indeterminate) { - getSherlock().setProgressBarIndeterminate(indeterminate); - } - - public void setSupportProgressBarIndeterminateVisibility(boolean visible) { - getSherlock().setProgressBarIndeterminateVisibility(visible); - } - - public void setSupportProgressBarVisibility(boolean visible) { - getSherlock().setProgressBarVisibility(visible); - } - - public void setSupportSecondaryProgress(int secondaryProgress) { - getSherlock().setSecondaryProgress(secondaryProgress); - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListActivity.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListActivity.java deleted file mode 100755 index 00c00fee5..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListActivity.java +++ /dev/null @@ -1,259 +0,0 @@ -package com.actionbarsherlock.app; - -import android.app.ListActivity; -import android.content.res.Configuration; -import android.os.Bundle; -import android.view.KeyEvent; -import android.view.View; -import android.view.Window; -import android.view.ViewGroup.LayoutParams; -import com.actionbarsherlock.ActionBarSherlock; -import com.actionbarsherlock.ActionBarSherlock.OnActionModeFinishedListener; -import com.actionbarsherlock.ActionBarSherlock.OnActionModeStartedListener; -import com.actionbarsherlock.ActionBarSherlock.OnCreatePanelMenuListener; -import com.actionbarsherlock.ActionBarSherlock.OnMenuItemSelectedListener; -import com.actionbarsherlock.ActionBarSherlock.OnPreparePanelListener; -import com.actionbarsherlock.view.ActionMode; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; - -public abstract class SherlockListActivity extends ListActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener { - private ActionBarSherlock mSherlock; - - protected final ActionBarSherlock getSherlock() { - if (mSherlock == null) { - mSherlock = ActionBarSherlock.wrap(this, ActionBarSherlock.FLAG_DELEGATE); - } - return mSherlock; - } - - - /////////////////////////////////////////////////////////////////////////// - // Action bar and mode - /////////////////////////////////////////////////////////////////////////// - - public ActionBar getSupportActionBar() { - return getSherlock().getActionBar(); - } - - public ActionMode startActionMode(ActionMode.Callback callback) { - return getSherlock().startActionMode(callback); - } - - @Override - public void onActionModeStarted(ActionMode mode) {} - - @Override - public void onActionModeFinished(ActionMode mode) {} - - - /////////////////////////////////////////////////////////////////////////// - // General lifecycle/callback dispatching - /////////////////////////////////////////////////////////////////////////// - - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - getSherlock().dispatchConfigurationChanged(newConfig); - } - - @Override - protected void onPostResume() { - super.onPostResume(); - getSherlock().dispatchPostResume(); - } - - @Override - protected void onPause() { - getSherlock().dispatchPause(); - super.onPause(); - } - - @Override - protected void onStop() { - getSherlock().dispatchStop(); - super.onStop(); - } - - @Override - protected void onDestroy() { - getSherlock().dispatchDestroy(); - super.onDestroy(); - } - - @Override - protected void onPostCreate(Bundle savedInstanceState) { - getSherlock().dispatchPostCreate(savedInstanceState); - super.onPostCreate(savedInstanceState); - } - - @Override - protected void onTitleChanged(CharSequence title, int color) { - getSherlock().dispatchTitleChanged(title, color); - super.onTitleChanged(title, color); - } - - @Override - public final boolean onMenuOpened(int featureId, android.view.Menu menu) { - if (getSherlock().dispatchMenuOpened(featureId, menu)) { - return true; - } - return super.onMenuOpened(featureId, menu); - } - - @Override - public void onPanelClosed(int featureId, android.view.Menu menu) { - getSherlock().dispatchPanelClosed(featureId, menu); - super.onPanelClosed(featureId, menu); - } - - @Override - public boolean dispatchKeyEvent(KeyEvent event) { - if (getSherlock().dispatchKeyEvent(event)) { - return true; - } - return super.dispatchKeyEvent(event); - } - - - /////////////////////////////////////////////////////////////////////////// - // Native menu handling - /////////////////////////////////////////////////////////////////////////// - - public MenuInflater getSupportMenuInflater() { - return getSherlock().getMenuInflater(); - } - - public void invalidateOptionsMenu() { - getSherlock().dispatchInvalidateOptionsMenu(); - } - - public void supportInvalidateOptionsMenu() { - invalidateOptionsMenu(); - } - - @Override - public final boolean onCreateOptionsMenu(android.view.Menu menu) { - return getSherlock().dispatchCreateOptionsMenu(menu); - } - - @Override - public final boolean onPrepareOptionsMenu(android.view.Menu menu) { - return getSherlock().dispatchPrepareOptionsMenu(menu); - } - - @Override - public final boolean onOptionsItemSelected(android.view.MenuItem item) { - return getSherlock().dispatchOptionsItemSelected(item); - } - - @Override - public void openOptionsMenu() { - if (!getSherlock().dispatchOpenOptionsMenu()) { - super.openOptionsMenu(); - } - } - - @Override - public void closeOptionsMenu() { - if (!getSherlock().dispatchCloseOptionsMenu()) { - super.closeOptionsMenu(); - } - } - - - /////////////////////////////////////////////////////////////////////////// - // Sherlock menu handling - /////////////////////////////////////////////////////////////////////////// - - @Override - public boolean onCreatePanelMenu(int featureId, Menu menu) { - if (featureId == Window.FEATURE_OPTIONS_PANEL) { - return onCreateOptionsMenu(menu); - } - return false; - } - - public boolean onCreateOptionsMenu(Menu menu) { - return true; - } - - @Override - public boolean onPreparePanel(int featureId, View view, Menu menu) { - if (featureId == Window.FEATURE_OPTIONS_PANEL) { - return onPrepareOptionsMenu(menu); - } - return false; - } - - public boolean onPrepareOptionsMenu(Menu menu) { - return true; - } - - @Override - public boolean onMenuItemSelected(int featureId, MenuItem item) { - if (featureId == Window.FEATURE_OPTIONS_PANEL) { - return onOptionsItemSelected(item); - } - return false; - } - - public boolean onOptionsItemSelected(MenuItem item) { - return false; - } - - - /////////////////////////////////////////////////////////////////////////// - // Content - /////////////////////////////////////////////////////////////////////////// - - @Override - public void addContentView(View view, LayoutParams params) { - getSherlock().addContentView(view, params); - } - - @Override - public void setContentView(int layoutResId) { - getSherlock().setContentView(layoutResId); - } - - @Override - public void setContentView(View view, LayoutParams params) { - getSherlock().setContentView(view, params); - } - - @Override - public void setContentView(View view) { - getSherlock().setContentView(view); - } - - public void requestWindowFeature(long featureId) { - getSherlock().requestFeature((int)featureId); - } - - - /////////////////////////////////////////////////////////////////////////// - // Progress Indication - /////////////////////////////////////////////////////////////////////////// - - public void setSupportProgress(int progress) { - getSherlock().setProgress(progress); - } - - public void setSupportProgressBarIndeterminate(boolean indeterminate) { - getSherlock().setProgressBarIndeterminate(indeterminate); - } - - public void setSupportProgressBarIndeterminateVisibility(boolean visible) { - getSherlock().setProgressBarIndeterminateVisibility(visible); - } - - public void setSupportProgressBarVisibility(boolean visible) { - getSherlock().setProgressBarVisibility(visible); - } - - public void setSupportSecondaryProgress(int secondaryProgress) { - getSherlock().setSecondaryProgress(secondaryProgress); - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListFragment.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListFragment.java deleted file mode 100755 index 13ca3c49f..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListFragment.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.actionbarsherlock.app; - -import android.app.Activity; -import android.support.v4.app.ListFragment; -import com.actionbarsherlock.internal.view.menu.MenuItemWrapper; -import com.actionbarsherlock.internal.view.menu.MenuWrapper; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; - -import static com.actionbarsherlock.app.SherlockFragmentActivity.OnCreateOptionsMenuListener; -import static com.actionbarsherlock.app.SherlockFragmentActivity.OnOptionsItemSelectedListener; -import static com.actionbarsherlock.app.SherlockFragmentActivity.OnPrepareOptionsMenuListener; - -public class SherlockListFragment extends ListFragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener { - private SherlockFragmentActivity mActivity; - - public SherlockFragmentActivity getSherlockActivity() { - return mActivity; - } - - @Override - public void onAttach(Activity activity) { - if (!(activity instanceof SherlockFragmentActivity)) { - throw new IllegalStateException(getClass().getSimpleName() + " must be attached to a SherlockFragmentActivity."); - } - mActivity = (SherlockFragmentActivity)activity; - - super.onAttach(activity); - } - - @Override - public void onDetach() { - mActivity = null; - super.onDetach(); - } - - @Override - public final void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) { - onCreateOptionsMenu(new MenuWrapper(menu), mActivity.getSupportMenuInflater()); - } - - @Override - public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - //Nothing to see here. - } - - @Override - public final void onPrepareOptionsMenu(android.view.Menu menu) { - onPrepareOptionsMenu(new MenuWrapper(menu)); - } - - @Override - public void onPrepareOptionsMenu(Menu menu) { - //Nothing to see here. - } - - @Override - public final boolean onOptionsItemSelected(android.view.MenuItem item) { - return onOptionsItemSelected(new MenuItemWrapper(item)); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - //Nothing to see here. - return false; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockPreferenceActivity.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockPreferenceActivity.java deleted file mode 100755 index 4f80be515..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockPreferenceActivity.java +++ /dev/null @@ -1,259 +0,0 @@ -package com.actionbarsherlock.app; - -import android.content.res.Configuration; -import android.os.Bundle; -import android.preference.PreferenceActivity; -import android.view.KeyEvent; -import android.view.View; -import android.view.ViewGroup.LayoutParams; -import android.view.Window; -import com.actionbarsherlock.ActionBarSherlock; -import com.actionbarsherlock.ActionBarSherlock.OnActionModeFinishedListener; -import com.actionbarsherlock.ActionBarSherlock.OnActionModeStartedListener; -import com.actionbarsherlock.ActionBarSherlock.OnCreatePanelMenuListener; -import com.actionbarsherlock.ActionBarSherlock.OnMenuItemSelectedListener; -import com.actionbarsherlock.ActionBarSherlock.OnPreparePanelListener; -import com.actionbarsherlock.view.ActionMode; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; - -public abstract class SherlockPreferenceActivity extends PreferenceActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener { - private ActionBarSherlock mSherlock; - - protected final ActionBarSherlock getSherlock() { - if (mSherlock == null) { - mSherlock = ActionBarSherlock.wrap(this, ActionBarSherlock.FLAG_DELEGATE); - } - return mSherlock; - } - - - /////////////////////////////////////////////////////////////////////////// - // Action bar and mode - /////////////////////////////////////////////////////////////////////////// - - public ActionBar getSupportActionBar() { - return getSherlock().getActionBar(); - } - - public ActionMode startActionMode(ActionMode.Callback callback) { - return getSherlock().startActionMode(callback); - } - - @Override - public void onActionModeStarted(ActionMode mode) {} - - @Override - public void onActionModeFinished(ActionMode mode) {} - - - /////////////////////////////////////////////////////////////////////////// - // General lifecycle/callback dispatching - /////////////////////////////////////////////////////////////////////////// - - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - getSherlock().dispatchConfigurationChanged(newConfig); - } - - @Override - protected void onPostResume() { - super.onPostResume(); - getSherlock().dispatchPostResume(); - } - - @Override - protected void onPause() { - getSherlock().dispatchPause(); - super.onPause(); - } - - @Override - protected void onStop() { - getSherlock().dispatchStop(); - super.onStop(); - } - - @Override - protected void onDestroy() { - getSherlock().dispatchDestroy(); - super.onDestroy(); - } - - @Override - protected void onPostCreate(Bundle savedInstanceState) { - getSherlock().dispatchPostCreate(savedInstanceState); - super.onPostCreate(savedInstanceState); - } - - @Override - protected void onTitleChanged(CharSequence title, int color) { - getSherlock().dispatchTitleChanged(title, color); - super.onTitleChanged(title, color); - } - - @Override - public final boolean onMenuOpened(int featureId, android.view.Menu menu) { - if (getSherlock().dispatchMenuOpened(featureId, menu)) { - return true; - } - return super.onMenuOpened(featureId, menu); - } - - @Override - public void onPanelClosed(int featureId, android.view.Menu menu) { - getSherlock().dispatchPanelClosed(featureId, menu); - super.onPanelClosed(featureId, menu); - } - - @Override - public boolean dispatchKeyEvent(KeyEvent event) { - if (getSherlock().dispatchKeyEvent(event)) { - return true; - } - return super.dispatchKeyEvent(event); - } - - - /////////////////////////////////////////////////////////////////////////// - // Native menu handling - /////////////////////////////////////////////////////////////////////////// - - public MenuInflater getSupportMenuInflater() { - return getSherlock().getMenuInflater(); - } - - public void invalidateOptionsMenu() { - getSherlock().dispatchInvalidateOptionsMenu(); - } - - public void supportInvalidateOptionsMenu() { - invalidateOptionsMenu(); - } - - @Override - public final boolean onCreateOptionsMenu(android.view.Menu menu) { - return getSherlock().dispatchCreateOptionsMenu(menu); - } - - @Override - public final boolean onPrepareOptionsMenu(android.view.Menu menu) { - return getSherlock().dispatchPrepareOptionsMenu(menu); - } - - @Override - public final boolean onOptionsItemSelected(android.view.MenuItem item) { - return getSherlock().dispatchOptionsItemSelected(item); - } - - @Override - public void openOptionsMenu() { - if (!getSherlock().dispatchOpenOptionsMenu()) { - super.openOptionsMenu(); - } - } - - @Override - public void closeOptionsMenu() { - if (!getSherlock().dispatchCloseOptionsMenu()) { - super.closeOptionsMenu(); - } - } - - - /////////////////////////////////////////////////////////////////////////// - // Sherlock menu handling - /////////////////////////////////////////////////////////////////////////// - - @Override - public boolean onCreatePanelMenu(int featureId, Menu menu) { - if (featureId == Window.FEATURE_OPTIONS_PANEL) { - return onCreateOptionsMenu(menu); - } - return false; - } - - public boolean onCreateOptionsMenu(Menu menu) { - return true; - } - - @Override - public boolean onPreparePanel(int featureId, View view, Menu menu) { - if (featureId == Window.FEATURE_OPTIONS_PANEL) { - return onPrepareOptionsMenu(menu); - } - return false; - } - - public boolean onPrepareOptionsMenu(Menu menu) { - return true; - } - - @Override - public boolean onMenuItemSelected(int featureId, MenuItem item) { - if (featureId == Window.FEATURE_OPTIONS_PANEL) { - return onOptionsItemSelected(item); - } - return false; - } - - public boolean onOptionsItemSelected(MenuItem item) { - return false; - } - - - /////////////////////////////////////////////////////////////////////////// - // Content - /////////////////////////////////////////////////////////////////////////// - - @Override - public void addContentView(View view, LayoutParams params) { - getSherlock().addContentView(view, params); - } - - @Override - public void setContentView(int layoutResId) { - getSherlock().setContentView(layoutResId); - } - - @Override - public void setContentView(View view, LayoutParams params) { - getSherlock().setContentView(view, params); - } - - @Override - public void setContentView(View view) { - getSherlock().setContentView(view); - } - - public void requestWindowFeature(long featureId) { - getSherlock().requestFeature((int)featureId); - } - - - /////////////////////////////////////////////////////////////////////////// - // Progress Indication - /////////////////////////////////////////////////////////////////////////// - - public void setSupportProgress(int progress) { - getSherlock().setProgress(progress); - } - - public void setSupportProgressBarIndeterminate(boolean indeterminate) { - getSherlock().setProgressBarIndeterminate(indeterminate); - } - - public void setSupportProgressBarIndeterminateVisibility(boolean visible) { - getSherlock().setProgressBarIndeterminateVisibility(visible); - } - - public void setSupportProgressBarVisibility(boolean visible) { - getSherlock().setProgressBarVisibility(visible); - } - - public void setSupportSecondaryProgress(int secondaryProgress) { - getSherlock().setSecondaryProgress(secondaryProgress); - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java deleted file mode 100755 index 05353d28c..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java +++ /dev/null @@ -1,1207 +0,0 @@ -package com.actionbarsherlock.internal; - -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoolean; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import org.xmlpull.v1.XmlPullParser; -import android.app.Activity; -import android.content.Context; -import android.content.pm.ActivityInfo; -import android.content.res.AssetManager; -import android.content.res.Configuration; -import android.content.res.Resources; -import android.content.res.TypedArray; -import android.content.res.XmlResourceParser; -import android.os.Bundle; -import android.util.AndroidRuntimeException; -import android.util.Log; -import android.util.TypedValue; -import android.view.ContextThemeWrapper; -import android.view.KeyCharacterMap; -import android.view.KeyEvent; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewStub; -import android.view.Window; -import android.view.accessibility.AccessibilityEvent; -import android.view.animation.Animation; -import android.view.animation.AnimationUtils; -import android.widget.FrameLayout; -import android.widget.TextView; -import com.actionbarsherlock.ActionBarSherlock; -import com.actionbarsherlock.R; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.internal.app.ActionBarImpl; -import com.actionbarsherlock.internal.view.StandaloneActionMode; -import com.actionbarsherlock.internal.view.menu.ActionMenuPresenter; -import com.actionbarsherlock.internal.view.menu.MenuBuilder; -import com.actionbarsherlock.internal.view.menu.MenuItemImpl; -import com.actionbarsherlock.internal.view.menu.MenuPresenter; -import com.actionbarsherlock.internal.widget.ActionBarContainer; -import com.actionbarsherlock.internal.widget.ActionBarContextView; -import com.actionbarsherlock.internal.widget.ActionBarView; -import com.actionbarsherlock.internal.widget.IcsProgressBar; -import com.actionbarsherlock.view.ActionMode; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuItem; - -@ActionBarSherlock.Implementation(api = 7) -public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBuilder.Callback, com.actionbarsherlock.view.Window.Callback, MenuPresenter.Callback, android.view.MenuItem.OnMenuItemClickListener { - /** Window features which are enabled by default. */ - protected static final int DEFAULT_FEATURES = 0; - - - public ActionBarSherlockCompat(Activity activity, int flags) { - super(activity, flags); - } - - - /////////////////////////////////////////////////////////////////////////// - // Properties - /////////////////////////////////////////////////////////////////////////// - - /** Whether or not the device has a dedicated menu key button. */ - private boolean mReserveOverflow; - /** Lazy-load indicator for {@link #mReserveOverflow}. */ - private boolean mReserveOverflowSet = false; - - /** Current menu instance for managing action items. */ - 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; - /** Parent view of the activity content. */ - private ViewGroup mContentParent; - - /** Whether or not the title is stable and can be displayed. */ - private boolean mIsTitleReady = false; - /** Whether or not the parent activity has been destroyed. */ - private boolean mIsDestroyed = false; - - /* Emulate PanelFeatureState */ - private boolean mClosingActionMenu; - private boolean mMenuIsPrepared; - private boolean mMenuRefreshContent; - private Bundle mMenuFrozenActionViewState; - - /** Implementation which backs the action bar interface API. */ - private ActionBarImpl aActionBar; - /** Main action bar view which displays the core content. */ - private ActionBarView wActionBar; - /** Relevant window and action bar features flags. */ - private int mFeatures = DEFAULT_FEATURES; - /** Relevant user interface option flags. */ - private int mUiOptions = 0; - - /** Decor indeterminate progress indicator. */ - private IcsProgressBar mCircularProgressBar; - /** Decor progress indicator. */ - private IcsProgressBar mHorizontalProgressBar; - - /** Current displayed context action bar, if any. */ - private ActionMode mActionMode; - /** Parent view in which the context action bar is displayed. */ - private ActionBarContextView mActionModeView; - - /** Title view used with dialogs. */ - private TextView mTitleView; - /** Current activity title. */ - private CharSequence mTitle = null; - /** Whether or not this "activity" is floating (i.e., a dialog) */ - private boolean mIsFloating; - - - - /////////////////////////////////////////////////////////////////////////// - // Instance methods - /////////////////////////////////////////////////////////////////////////// - - @Override - public ActionBar getActionBar() { - if (DEBUG) Log.d(TAG, "[getActionBar]"); - - initActionBar(); - return aActionBar; - } - - private void initActionBar() { - if (DEBUG) Log.d(TAG, "[initActionBar]"); - - // Initializing the window decor can change window feature flags. - // Make sure that we have the correct set before performing the test below. - if (mDecor == null) { - installDecor(); - } - - if ((aActionBar != null) || !hasFeature(Window.FEATURE_ACTION_BAR) || hasFeature(Window.FEATURE_NO_TITLE) || mActivity.isChild()) { - return; - } - - aActionBar = new ActionBarImpl(mActivity, mFeatures); - - if (!mIsDelegate) { - //We may never get another chance to set the title - wActionBar.setWindowTitle(mActivity.getTitle()); - } - } - - @Override - protected Context getThemedContext() { - return aActionBar.getThemedContext(); - } - - @Override - public void setTitle(CharSequence title) { - if (DEBUG) Log.d(TAG, "[setTitle] title: " + title); - - dispatchTitleChanged(title, 0); - } - - @Override - public ActionMode startActionMode(ActionMode.Callback callback) { - if (DEBUG) Log.d(TAG, "[startActionMode] callback: " + callback); - - if (mActionMode != null) { - mActionMode.finish(); - } - - final ActionMode.Callback wrappedCallback = new ActionModeCallbackWrapper(callback); - ActionMode mode = null; - - //Emulate Activity's onWindowStartingActionMode: - initActionBar(); - if (aActionBar != null) { - mode = aActionBar.startActionMode(wrappedCallback); - } - - if (mode != null) { - mActionMode = mode; - } else { - if (mActionModeView == null) { - ViewStub stub = (ViewStub)mDecor.findViewById(R.id.abs__action_mode_bar_stub); - if (stub != null) { - mActionModeView = (ActionBarContextView)stub.inflate(); - } - } - if (mActionModeView != null) { - mActionModeView.killMode(); - mode = new StandaloneActionMode(mActivity, mActionModeView, wrappedCallback, true); - if (callback.onCreateActionMode(mode, mode.getMenu())) { - mode.invalidate(); - mActionModeView.initForMode(mode); - mActionModeView.setVisibility(View.VISIBLE); - mActionMode = mode; - mActionModeView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); - } else { - mActionMode = null; - } - } - } - if (mActionMode != null && mActivity instanceof OnActionModeStartedListener) { - ((OnActionModeStartedListener)mActivity).onActionModeStarted(mActionMode); - } - return mActionMode; - } - - - /////////////////////////////////////////////////////////////////////////// - // Lifecycle and interaction callbacks for delegation - /////////////////////////////////////////////////////////////////////////// - - @Override - public void dispatchConfigurationChanged(Configuration newConfig) { - if (DEBUG) Log.d(TAG, "[dispatchConfigurationChanged] newConfig: " + newConfig); - - if (aActionBar != null) { - aActionBar.onConfigurationChanged(newConfig); - } - } - - @Override - public void dispatchPostResume() { - if (DEBUG) Log.d(TAG, "[dispatchPostResume]"); - - if (aActionBar != null) { - aActionBar.setShowHideAnimationEnabled(true); - } - } - - @Override - public void dispatchPause() { - if (DEBUG) Log.d(TAG, "[dispatchPause]"); - - if (wActionBar != null && wActionBar.isOverflowMenuShowing()) { - wActionBar.hideOverflowMenu(); - } - } - - @Override - public void dispatchStop() { - if (DEBUG) Log.d(TAG, "[dispatchStop]"); - - if (aActionBar != null) { - aActionBar.setShowHideAnimationEnabled(false); - } - } - - @Override - public void dispatchInvalidateOptionsMenu() { - if (DEBUG) Log.d(TAG, "[dispatchInvalidateOptionsMenu]"); - - Bundle savedActionViewStates = null; - if (mMenu != null) { - savedActionViewStates = new Bundle(); - mMenu.saveActionViewStates(savedActionViewStates); - if (savedActionViewStates.size() > 0) { - mMenuFrozenActionViewState = savedActionViewStates; - } - // This will be started again when the panel is prepared. - mMenu.stopDispatchingItemsChanged(); - mMenu.clear(); - } - mMenuRefreshContent = true; - - // Prepare the options panel if we have an action bar - if (wActionBar != null) { - mMenuIsPrepared = false; - preparePanel(); - } - } - - @Override - public boolean dispatchOpenOptionsMenu() { - if (DEBUG) Log.d(TAG, "[dispatchOpenOptionsMenu]"); - - if (!isReservingOverflow()) { - return false; - } - - return wActionBar.showOverflowMenu(); - } - - @Override - public boolean dispatchCloseOptionsMenu() { - if (DEBUG) Log.d(TAG, "[dispatchCloseOptionsMenu]"); - - if (!isReservingOverflow()) { - return false; - } - - return wActionBar.hideOverflowMenu(); - } - - @Override - public void dispatchPostCreate(Bundle savedInstanceState) { - if (DEBUG) Log.d(TAG, "[dispatchOnPostCreate]"); - - if (mIsDelegate) { - mIsTitleReady = true; - } - - if (mDecor == null) { - initActionBar(); - } - } - - @Override - public boolean dispatchCreateOptionsMenu(android.view.Menu menu) { - if (DEBUG) { - Log.d(TAG, "[dispatchCreateOptionsMenu] android.view.Menu: " + menu); - Log.d(TAG, "[dispatchCreateOptionsMenu] returning true"); - } - return true; - } - - @Override - public boolean dispatchPrepareOptionsMenu(android.view.Menu menu) { - if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] android.view.Menu: " + menu); - - if (mActionMode != null) { - return false; - } - - mMenuIsPrepared = false; - if (!preparePanel()) { - return false; - } - - if (isReservingOverflow()) { - return false; - } - - if (mNativeItemMap == null) { - mNativeItemMap = new HashMap(); - } else { - mNativeItemMap.clear(); - } - - if (mMenu == null) { - return false; - } - - boolean result = mMenu.bindNativeOverflow(menu, this, mNativeItemMap); - if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] returning " + result); - return result; - } - - @Override - public boolean dispatchOptionsItemSelected(android.view.MenuItem item) { - throw new IllegalStateException("Native callback invoked. Create a test case and report!"); - } - - @Override - public boolean dispatchMenuOpened(int featureId, android.view.Menu menu) { - if (DEBUG) Log.d(TAG, "[dispatchMenuOpened] featureId: " + featureId + ", menu: " + menu); - - if (featureId == Window.FEATURE_ACTION_BAR || featureId == Window.FEATURE_OPTIONS_PANEL) { - if (aActionBar != null) { - aActionBar.dispatchMenuVisibilityChanged(true); - } - return true; - } - - return false; - } - - @Override - public void dispatchPanelClosed(int featureId, android.view.Menu menu){ - if (DEBUG) Log.d(TAG, "[dispatchPanelClosed] featureId: " + featureId + ", menu: " + menu); - - if (featureId == Window.FEATURE_ACTION_BAR || featureId == Window.FEATURE_OPTIONS_PANEL) { - if (aActionBar != null) { - aActionBar.dispatchMenuVisibilityChanged(false); - } - } - } - - @Override - public void dispatchTitleChanged(CharSequence title, int color) { - if (DEBUG) Log.d(TAG, "[dispatchTitleChanged] title: " + title + ", color: " + color); - - if (!mIsDelegate || mIsTitleReady) { - if (mTitleView != null) { - mTitleView.setText(title); - } else if (wActionBar != null) { - wActionBar.setWindowTitle(title); - } - } - - mTitle = title; - } - - @Override - public boolean dispatchKeyEvent(KeyEvent event) { - if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] event: " + event); - - final int keyCode = event.getKeyCode(); - - // Not handled by the view hierarchy, does the action bar want it - // to cancel out of something special? - if (keyCode == KeyEvent.KEYCODE_BACK) { - final int action = event.getAction(); - // Back cancels action modes first. - if (mActionMode != null) { - if (action == KeyEvent.ACTION_UP) { - mActionMode.finish(); - } - if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning true"); - return true; - } - - // Next collapse any expanded action views. - if (wActionBar != null && wActionBar.hasExpandedActionView()) { - if (action == KeyEvent.ACTION_UP) { - wActionBar.collapseActionView(); - } - if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning true"); - return true; - } - } - - 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; - } - - @Override - public void dispatchDestroy() { - mIsDestroyed = true; - } - - - /////////////////////////////////////////////////////////////////////////// - // Menu callback lifecycle and creation - /////////////////////////////////////////////////////////////////////////// - - private boolean preparePanel() { - // Already prepared (isPrepared will be reset to false later) - if (mMenuIsPrepared) { - return true; - } - - // Init the panel state's menu--return false if init failed - if (mMenu == null || mMenuRefreshContent) { - if (mMenu == null) { - if (!initializePanelMenu() || (mMenu == null)) { - return false; - } - } - - if (wActionBar != null) { - wActionBar.setMenu(mMenu, this); - } - - // Call callback, and return if it doesn't want to display menu. - - // Creating the panel menu will involve a lot of manipulation; - // don't dispatch change events to presenters until we're done. - mMenu.stopDispatchingItemsChanged(); - if (!callbackCreateOptionsMenu(mMenu)) { - // Ditch the menu created above - mMenu = null; - - if (wActionBar != null) { - // Don't show it in the action bar either - wActionBar.setMenu(null, this); - } - - return false; - } - - mMenuRefreshContent = false; - } - - // Callback and return if the callback does not want to show the menu - - // Preparing the panel menu can involve a lot of manipulation; - // don't dispatch change events to presenters until we're done. - mMenu.stopDispatchingItemsChanged(); - - // Restore action view state before we prepare. This gives apps - // an opportunity to override frozen/restored state in onPrepare. - if (mMenuFrozenActionViewState != null) { - mMenu.restoreActionViewStates(mMenuFrozenActionViewState); - mMenuFrozenActionViewState = null; - } - - if (!callbackPrepareOptionsMenu(mMenu)) { - if (wActionBar != null) { - // The app didn't want to show the menu for now but it still exists. - // Clear it out of the action bar. - wActionBar.setMenu(null, this); - } - mMenu.startDispatchingItemsChanged(); - return false; - } - - // Set the proper keymap - KeyCharacterMap kmap = KeyCharacterMap.load(KeyCharacterMap.VIRTUAL_KEYBOARD); - mMenu.setQwertyMode(kmap.getKeyboardType() != KeyCharacterMap.NUMERIC); - mMenu.startDispatchingItemsChanged(); - - // Set other state - mMenuIsPrepared = true; - - return true; - } - - public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item) { - return callbackOptionsItemSelected(item); - } - - public void onMenuModeChange(MenuBuilder menu) { - reopenMenu(true); - } - - private void reopenMenu(boolean toggleMenuMode) { - if (wActionBar != null && wActionBar.isOverflowReserved()) { - if (!wActionBar.isOverflowMenuShowing() || !toggleMenuMode) { - if (wActionBar.getVisibility() == View.VISIBLE) { - if (callbackPrepareOptionsMenu(mMenu)) { - wActionBar.showOverflowMenu(); - } - } - } else { - wActionBar.hideOverflowMenu(); - } - return; - } - } - - private boolean initializePanelMenu() { - Context context = mActivity;//getContext(); - - // If we have an action bar, initialize the menu with a context themed for it. - if (wActionBar != null) { - TypedValue outValue = new TypedValue(); - Resources.Theme currentTheme = context.getTheme(); - currentTheme.resolveAttribute(R.attr.actionBarWidgetTheme, - outValue, true); - final int targetThemeRes = outValue.resourceId; - - if (targetThemeRes != 0 /*&& context.getThemeResId() != targetThemeRes*/) { - context = new ContextThemeWrapper(context, targetThemeRes); - } - } - - mMenu = new MenuBuilder(context); - mMenu.setCallback(this); - - return true; - } - - void checkCloseActionMenu(Menu menu) { - if (mClosingActionMenu) { - return; - } - - mClosingActionMenu = true; - wActionBar.dismissPopupMenus(); - //Callback cb = getCallback(); - //if (cb != null && !isDestroyed()) { - // cb.onPanelClosed(FEATURE_ACTION_BAR, menu); - //} - mClosingActionMenu = false; - } - - @Override - public boolean onOpenSubMenu(MenuBuilder subMenu) { - return true; - } - - @Override - public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { - checkCloseActionMenu(menu); - } - - @Override - public boolean onMenuItemClick(android.view.MenuItem item) { - if (DEBUG) Log.d(TAG, "[mNativeItemListener.onMenuItemClick] item: " + item); - - final MenuItemImpl sherlockItem = mNativeItemMap.get(item); - if (sherlockItem != null) { - sherlockItem.invoke(); - } else { - Log.e(TAG, "Options item \"" + item + "\" not found in mapping"); - } - - return true; //Do not allow continuation of native handling - } - - @Override - public boolean onMenuItemSelected(int featureId, MenuItem item) { - return callbackOptionsItemSelected(item); - } - - - /////////////////////////////////////////////////////////////////////////// - // Progress bar interaction and internal handling - /////////////////////////////////////////////////////////////////////////// - - @Override - public void setProgressBarVisibility(boolean visible) { - if (DEBUG) Log.d(TAG, "[setProgressBarVisibility] visible: " + visible); - - setFeatureInt(Window.FEATURE_PROGRESS, visible ? Window.PROGRESS_VISIBILITY_ON : - Window.PROGRESS_VISIBILITY_OFF); - } - - @Override - public void setProgressBarIndeterminateVisibility(boolean visible) { - if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminateVisibility] visible: " + visible); - - setFeatureInt(Window.FEATURE_INDETERMINATE_PROGRESS, - visible ? Window.PROGRESS_VISIBILITY_ON : Window.PROGRESS_VISIBILITY_OFF); - } - - @Override - public void setProgressBarIndeterminate(boolean indeterminate) { - if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminate] indeterminate: " + indeterminate); - - setFeatureInt(Window.FEATURE_PROGRESS, - indeterminate ? Window.PROGRESS_INDETERMINATE_ON : Window.PROGRESS_INDETERMINATE_OFF); - } - - @Override - public void setProgress(int progress) { - if (DEBUG) Log.d(TAG, "[setProgress] progress: " + progress); - - setFeatureInt(Window.FEATURE_PROGRESS, progress + Window.PROGRESS_START); - } - - @Override - public void setSecondaryProgress(int secondaryProgress) { - if (DEBUG) Log.d(TAG, "[setSecondaryProgress] secondaryProgress: " + secondaryProgress); - - setFeatureInt(Window.FEATURE_PROGRESS, - secondaryProgress + Window.PROGRESS_SECONDARY_START); - } - - private void setFeatureInt(int featureId, int value) { - updateInt(featureId, value, false); - } - - private void updateInt(int featureId, int value, boolean fromResume) { - // Do nothing if the decor is not yet installed... an update will - // need to be forced when we eventually become active. - if (mContentParent == null) { - return; - } - - final int featureMask = 1 << featureId; - - if ((getFeatures() & featureMask) == 0 && !fromResume) { - return; - } - - onIntChanged(featureId, value); - } - - private void onIntChanged(int featureId, int value) { - if (featureId == Window.FEATURE_PROGRESS || featureId == Window.FEATURE_INDETERMINATE_PROGRESS) { - updateProgressBars(value); - } - } - - private void updateProgressBars(int value) { - IcsProgressBar circularProgressBar = getCircularProgressBar(true); - IcsProgressBar horizontalProgressBar = getHorizontalProgressBar(true); - - final int features = mFeatures;//getLocalFeatures(); - if (value == Window.PROGRESS_VISIBILITY_ON) { - if ((features & (1 << Window.FEATURE_PROGRESS)) != 0) { - int level = horizontalProgressBar.getProgress(); - int visibility = (horizontalProgressBar.isIndeterminate() || level < 10000) ? - View.VISIBLE : View.INVISIBLE; - horizontalProgressBar.setVisibility(visibility); - } - if ((features & (1 << Window.FEATURE_INDETERMINATE_PROGRESS)) != 0) { - circularProgressBar.setVisibility(View.VISIBLE); - } - } else if (value == Window.PROGRESS_VISIBILITY_OFF) { - if ((features & (1 << Window.FEATURE_PROGRESS)) != 0) { - horizontalProgressBar.setVisibility(View.GONE); - } - if ((features & (1 << Window.FEATURE_INDETERMINATE_PROGRESS)) != 0) { - circularProgressBar.setVisibility(View.GONE); - } - } else if (value == Window.PROGRESS_INDETERMINATE_ON) { - horizontalProgressBar.setIndeterminate(true); - } else if (value == Window.PROGRESS_INDETERMINATE_OFF) { - horizontalProgressBar.setIndeterminate(false); - } else if (Window.PROGRESS_START <= value && value <= Window.PROGRESS_END) { - // We want to set the progress value before testing for visibility - // so that when the progress bar becomes visible again, it has the - // correct level. - horizontalProgressBar.setProgress(value - Window.PROGRESS_START); - - if (value < Window.PROGRESS_END) { - showProgressBars(horizontalProgressBar, circularProgressBar); - } else { - hideProgressBars(horizontalProgressBar, circularProgressBar); - } - } else if (Window.PROGRESS_SECONDARY_START <= value && value <= Window.PROGRESS_SECONDARY_END) { - horizontalProgressBar.setSecondaryProgress(value - Window.PROGRESS_SECONDARY_START); - - showProgressBars(horizontalProgressBar, circularProgressBar); - } - } - - private void showProgressBars(IcsProgressBar horizontalProgressBar, IcsProgressBar spinnyProgressBar) { - final int features = mFeatures;//getLocalFeatures(); - if ((features & (1 << Window.FEATURE_INDETERMINATE_PROGRESS)) != 0 && - spinnyProgressBar.getVisibility() == View.INVISIBLE) { - spinnyProgressBar.setVisibility(View.VISIBLE); - } - // Only show the progress bars if the primary progress is not complete - if ((features & (1 << Window.FEATURE_PROGRESS)) != 0 && - horizontalProgressBar.getProgress() < 10000) { - horizontalProgressBar.setVisibility(View.VISIBLE); - } - } - - private void hideProgressBars(IcsProgressBar horizontalProgressBar, IcsProgressBar spinnyProgressBar) { - final int features = mFeatures;//getLocalFeatures(); - Animation anim = AnimationUtils.loadAnimation(mActivity, android.R.anim.fade_out); - anim.setDuration(1000); - if ((features & (1 << Window.FEATURE_INDETERMINATE_PROGRESS)) != 0 && - spinnyProgressBar.getVisibility() == View.VISIBLE) { - spinnyProgressBar.startAnimation(anim); - spinnyProgressBar.setVisibility(View.INVISIBLE); - } - if ((features & (1 << Window.FEATURE_PROGRESS)) != 0 && - horizontalProgressBar.getVisibility() == View.VISIBLE) { - horizontalProgressBar.startAnimation(anim); - horizontalProgressBar.setVisibility(View.INVISIBLE); - } - } - - private IcsProgressBar getCircularProgressBar(boolean shouldInstallDecor) { - if (mCircularProgressBar != null) { - return mCircularProgressBar; - } - if (mContentParent == null && shouldInstallDecor) { - installDecor(); - } - mCircularProgressBar = (IcsProgressBar)mDecor.findViewById(R.id.abs__progress_circular); - if (mCircularProgressBar != null) { - mCircularProgressBar.setVisibility(View.INVISIBLE); - } - return mCircularProgressBar; - } - - private IcsProgressBar getHorizontalProgressBar(boolean shouldInstallDecor) { - if (mHorizontalProgressBar != null) { - return mHorizontalProgressBar; - } - if (mContentParent == null && shouldInstallDecor) { - installDecor(); - } - mHorizontalProgressBar = (IcsProgressBar)mDecor.findViewById(R.id.abs__progress_horizontal); - if (mHorizontalProgressBar != null) { - mHorizontalProgressBar.setVisibility(View.INVISIBLE); - } - return mHorizontalProgressBar; - } - - - /////////////////////////////////////////////////////////////////////////// - // Feature management and content interaction and creation - /////////////////////////////////////////////////////////////////////////// - - private int getFeatures() { - if (DEBUG) Log.d(TAG, "[getFeatures] returning " + mFeatures); - - return mFeatures; - } - - @Override - public boolean hasFeature(int featureId) { - if (DEBUG) Log.d(TAG, "[hasFeature] featureId: " + featureId); - - boolean result = (mFeatures & (1 << featureId)) != 0; - if (DEBUG) Log.d(TAG, "[hasFeature] returning " + result); - return result; - } - - @Override - public boolean requestFeature(int featureId) { - if (DEBUG) Log.d(TAG, "[requestFeature] featureId: " + featureId); - - if (mContentParent != null) { - throw new AndroidRuntimeException("requestFeature() must be called before adding content"); - } - - switch (featureId) { - case Window.FEATURE_ACTION_BAR: - case Window.FEATURE_ACTION_BAR_OVERLAY: - case Window.FEATURE_ACTION_MODE_OVERLAY: - case Window.FEATURE_INDETERMINATE_PROGRESS: - case Window.FEATURE_NO_TITLE: - case Window.FEATURE_PROGRESS: - mFeatures |= (1 << featureId); - return true; - - default: - return false; - } - } - - @Override - public void setUiOptions(int uiOptions) { - if (DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions); - - mUiOptions = uiOptions; - } - - @Override - public void setUiOptions(int uiOptions, int mask) { - if (DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions + ", mask: " + mask); - - mUiOptions = (mUiOptions & ~mask) | (uiOptions & mask); - } - - @Override - public void setContentView(int layoutResId) { - if (DEBUG) Log.d(TAG, "[setContentView] layoutResId: " + layoutResId); - - if (mContentParent == null) { - installDecor(); - } else { - mContentParent.removeAllViews(); - } - mActivity.getLayoutInflater().inflate(layoutResId, mContentParent); - - android.view.Window.Callback callback = mActivity.getWindow().getCallback(); - if (callback != null) { - callback.onContentChanged(); - } - - initActionBar(); - } - - @Override - public void setContentView(View view, ViewGroup.LayoutParams params) { - if (DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params); - - if (mContentParent == null) { - installDecor(); - } else { - mContentParent.removeAllViews(); - } - mContentParent.addView(view, params); - - android.view.Window.Callback callback = mActivity.getWindow().getCallback(); - if (callback != null) { - callback.onContentChanged(); - } - - initActionBar(); - } - - @Override - public void addContentView(View view, ViewGroup.LayoutParams params) { - if (DEBUG) Log.d(TAG, "[addContentView] view: " + view + ", params: " + params); - - if (mContentParent == null) { - installDecor(); - } - mContentParent.addView(view, params); - - initActionBar(); - } - - private void installDecor() { - if (DEBUG) Log.d(TAG, "[installDecor]"); - - if (mDecor == null) { - mDecor = (ViewGroup)mActivity.getWindow().getDecorView().findViewById(android.R.id.content); - } - if (mContentParent == null) { - //Since we are not operating at the window level we need to take - //into account the fact that the true decor may have already been - //initialized and had content attached to it. If that is the case, - //copy over its children to our new content container. - List views = null; - if (mDecor.getChildCount() > 0) { - views = new ArrayList(1); //Usually there's only one child - for (int i = 0, children = mDecor.getChildCount(); i < children; i++) { - View child = mDecor.getChildAt(0); - mDecor.removeView(child); - views.add(child); - } - } - - mContentParent = generateLayout(); - - //Copy over the old children. See above for explanation. - if (views != null) { - for (View child : views) { - mContentParent.addView(child); - } - } - - mTitleView = (TextView)mDecor.findViewById(android.R.id.title); - if (mTitleView != null) { - if (hasFeature(Window.FEATURE_NO_TITLE)) { - mTitleView.setVisibility(View.GONE); - if (mContentParent instanceof FrameLayout) { - ((FrameLayout)mContentParent).setForeground(null); - } - } else { - mTitleView.setText(mTitle); - } - } else { - wActionBar = (ActionBarView)mDecor.findViewById(R.id.abs__action_bar); - if (wActionBar != null) { - wActionBar.setWindowCallback(this); - if (wActionBar.getTitle() == null) { - wActionBar.setWindowTitle(mActivity.getTitle()); - } - if (hasFeature(Window.FEATURE_PROGRESS)) { - wActionBar.initProgress(); - } - if (hasFeature(Window.FEATURE_INDETERMINATE_PROGRESS)) { - wActionBar.initIndeterminateProgress(); - } - - //Since we don't require onCreate dispatching, parse for uiOptions here - int uiOptions = loadUiOptionsFromManifest(mActivity); - if (uiOptions != 0) { - mUiOptions = uiOptions; - } - - boolean splitActionBar = false; - final boolean splitWhenNarrow = (mUiOptions & ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW) != 0; - if (splitWhenNarrow) { - splitActionBar = getResources_getBoolean(mActivity, R.bool.abs__split_action_bar_is_narrow); - } else { - splitActionBar = mActivity.getTheme() - .obtainStyledAttributes(R.styleable.SherlockTheme) - .getBoolean(R.styleable.SherlockTheme_windowSplitActionBar, false); - } - final ActionBarContainer splitView = (ActionBarContainer)mDecor.findViewById(R.id.abs__split_action_bar); - if (splitView != null) { - wActionBar.setSplitView(splitView); - wActionBar.setSplitActionBar(splitActionBar); - wActionBar.setSplitWhenNarrow(splitWhenNarrow); - - mActionModeView = (ActionBarContextView)mDecor.findViewById(R.id.abs__action_context_bar); - mActionModeView.setSplitView(splitView); - mActionModeView.setSplitActionBar(splitActionBar); - mActionModeView.setSplitWhenNarrow(splitWhenNarrow); - } else if (splitActionBar) { - Log.e(TAG, "Requested split action bar with incompatible window decor! Ignoring request."); - } - - // Post the panel invalidate for later; avoid application onCreateOptionsMenu - // being called in the middle of onCreate or similar. - mDecor.post(new Runnable() { - @Override - public void run() { - //Invalidate if the panel menu hasn't been created before this. - if (!mIsDestroyed && !mActivity.isFinishing() && mMenu == null) { - dispatchInvalidateOptionsMenu(); - } - } - }); - } - } - } - } - - private ViewGroup generateLayout() { - if (DEBUG) Log.d(TAG, "[generateLayout]"); - - // Apply data from current theme. - - TypedArray a = mActivity.getTheme().obtainStyledAttributes(R.styleable.SherlockTheme); - - mIsFloating = a.getBoolean(R.styleable.SherlockTheme_android_windowIsFloating, false); - - if (!a.hasValue(R.styleable.SherlockTheme_windowActionBar)) { - throw new IllegalStateException("You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative."); - } - - if (a.getBoolean(R.styleable.SherlockTheme_windowNoTitle, false)) { - requestFeature(Window.FEATURE_NO_TITLE); - } else if (a.getBoolean(R.styleable.SherlockTheme_windowActionBar, false)) { - // Don't allow an action bar if there is no title. - requestFeature(Window.FEATURE_ACTION_BAR); - } - - if (a.getBoolean(R.styleable.SherlockTheme_windowActionBarOverlay, false)) { - requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY); - } - - if (a.getBoolean(R.styleable.SherlockTheme_windowActionModeOverlay, false)) { - requestFeature(Window.FEATURE_ACTION_MODE_OVERLAY); - } - - a.recycle(); - - int layoutResource; - if (!hasFeature(Window.FEATURE_NO_TITLE)) { - if (mIsFloating) { - //Trash original dialog LinearLayout - mDecor = (ViewGroup)mDecor.getParent(); - mDecor.removeAllViews(); - - layoutResource = R.layout.abs__dialog_title_holo; - } else { - if (hasFeature(Window.FEATURE_ACTION_BAR_OVERLAY)) { - layoutResource = R.layout.abs__screen_action_bar_overlay; - } else { - layoutResource = R.layout.abs__screen_action_bar; - } - } - } else if (hasFeature(Window.FEATURE_ACTION_MODE_OVERLAY) && !hasFeature(Window.FEATURE_NO_TITLE)) { - layoutResource = R.layout.abs__screen_simple_overlay_action_mode; - } else { - layoutResource = R.layout.abs__screen_simple; - } - - if (DEBUG) Log.d(TAG, "[generateLayout] using screen XML " + mActivity.getResources().getString(layoutResource)); - View in = mActivity.getLayoutInflater().inflate(layoutResource, null); - mDecor.addView(in, new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)); - - ViewGroup contentParent = (ViewGroup)mDecor.findViewById(R.id.abs__content); - if (contentParent == null) { - throw new RuntimeException("Couldn't find content container view"); - } - - //Make our new child the true content view (for fragments). VERY VOLATILE! - mDecor.setId(View.NO_ID); - contentParent.setId(android.R.id.content); - - if (hasFeature(Window.FEATURE_INDETERMINATE_PROGRESS)) { - IcsProgressBar progress = getCircularProgressBar(false); - if (progress != null) { - progress.setIndeterminate(true); - } - } - - return contentParent; - } - - - /////////////////////////////////////////////////////////////////////////// - // Miscellaneous - /////////////////////////////////////////////////////////////////////////// - - /** - * Determine whether or not the device has a dedicated menu key. - * - * @return {@code true} if native menu key is present. - */ - private boolean isReservingOverflow() { - if (!mReserveOverflowSet) { - mReserveOverflow = ActionMenuPresenter.reserveOverflow(mActivity); - mReserveOverflowSet = true; - } - return mReserveOverflow; - } - - private static int loadUiOptionsFromManifest(Activity activity) { - int uiOptions = 0; - try { - final String thisPackage = activity.getClass().getName(); - if (DEBUG) Log.i(TAG, "Parsing AndroidManifest.xml for " + thisPackage); - - final String packageName = activity.getApplicationInfo().packageName; - final AssetManager am = activity.createPackageContext(packageName, 0).getAssets(); - final XmlResourceParser xml = am.openXmlResourceParser("AndroidManifest.xml"); - - int eventType = xml.getEventType(); - while (eventType != XmlPullParser.END_DOCUMENT) { - if (eventType == XmlPullParser.START_TAG) { - String name = xml.getName(); - - if ("application".equals(name)) { - //Check if the has the attribute - if (DEBUG) Log.d(TAG, "Got "); - - for (int i = xml.getAttributeCount() - 1; i >= 0; i--) { - if (DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i)); - - if ("uiOptions".equals(xml.getAttributeName(i))) { - uiOptions = xml.getAttributeIntValue(i, 0); - break; //out of for loop - } - } - } else if ("activity".equals(name)) { - //Check if the is us and has the attribute - if (DEBUG) Log.d(TAG, "Got "); - Integer activityUiOptions = null; - String activityPackage = null; - boolean isOurActivity = false; - - for (int i = xml.getAttributeCount() - 1; i >= 0; i--) { - if (DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i)); - - //We need both uiOptions and name attributes - String attrName = xml.getAttributeName(i); - if ("uiOptions".equals(attrName)) { - activityUiOptions = xml.getAttributeIntValue(i, 0); - } else if ("name".equals(attrName)) { - activityPackage = cleanActivityName(packageName, xml.getAttributeValue(i)); - if (!thisPackage.equals(activityPackage)) { - break; //out of for loop - } - isOurActivity = true; - } - - //Make sure we have both attributes before processing - if ((activityUiOptions != null) && (activityPackage != null)) { - //Our activity, uiOptions specified, override with our value - uiOptions = activityUiOptions.intValue(); - } - } - if (isOurActivity) { - //If we matched our activity but it had no logo don't - //do any more processing of the manifest - break; - } - } - } - eventType = xml.nextToken(); - } - } catch (Exception e) { - e.printStackTrace(); - } - if (DEBUG) Log.i(TAG, "Returning " + Integer.toHexString(uiOptions)); - return uiOptions; - } - - public static String cleanActivityName(String manifestPackage, String activityName) { - if (activityName.charAt(0) == '.') { - //Relative activity name (e.g., android:name=".ui.SomeClass") - return manifestPackage + activityName; - } - if (activityName.indexOf('.', 1) == -1) { - //Unqualified activity name (e.g., android:name="SomeClass") - return manifestPackage + "." + activityName; - } - //Fully-qualified activity name (e.g., "com.my.package.SomeClass") - return activityName; - } - - /** - * Clears out internal reference when the action mode is destroyed. - */ - private class ActionModeCallbackWrapper implements ActionMode.Callback { - private final ActionMode.Callback mWrapped; - - public ActionModeCallbackWrapper(ActionMode.Callback wrapped) { - mWrapped = wrapped; - } - - public boolean onCreateActionMode(ActionMode mode, Menu menu) { - return mWrapped.onCreateActionMode(mode, menu); - } - - public boolean onPrepareActionMode(ActionMode mode, Menu menu) { - return mWrapped.onPrepareActionMode(mode, menu); - } - - public boolean onActionItemClicked(ActionMode mode, MenuItem item) { - return mWrapped.onActionItemClicked(mode, item); - } - - public void onDestroyActionMode(ActionMode mode) { - mWrapped.onDestroyActionMode(mode); - if (mActionModeView != null) { - mActionModeView.setVisibility(View.GONE); - mActionModeView.removeAllViews(); - } - if (mActivity instanceof OnActionModeFinishedListener) { - ((OnActionModeFinishedListener)mActivity).onActionModeFinished(mActionMode); - } - mActionMode = null; - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockNative.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockNative.java deleted file mode 100755 index 9afca185a..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockNative.java +++ /dev/null @@ -1,328 +0,0 @@ -package com.actionbarsherlock.internal; - -import com.actionbarsherlock.ActionBarSherlock; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.internal.app.ActionBarWrapper; -import com.actionbarsherlock.internal.view.menu.MenuWrapper; -import com.actionbarsherlock.view.ActionMode; -import com.actionbarsherlock.view.MenuInflater; -import android.app.Activity; -import android.content.Context; -import android.util.Log; -import android.util.TypedValue; -import android.view.ContextThemeWrapper; -import android.view.View; -import android.view.Window; -import android.view.ViewGroup.LayoutParams; - -@ActionBarSherlock.Implementation(api = 14) -public class ActionBarSherlockNative extends ActionBarSherlock { - private ActionBarWrapper mActionBar; - private ActionModeWrapper mActionMode; - private MenuWrapper mMenu; - - public ActionBarSherlockNative(Activity activity, int flags) { - super(activity, flags); - } - - - @Override - public ActionBar getActionBar() { - if (DEBUG) Log.d(TAG, "[getActionBar]"); - - initActionBar(); - return mActionBar; - } - - private void initActionBar() { - if (mActionBar != null || mActivity.getActionBar() == null) { - return; - } - - mActionBar = new ActionBarWrapper(mActivity); - } - - @Override - public void dispatchInvalidateOptionsMenu() { - if (DEBUG) Log.d(TAG, "[dispatchInvalidateOptionsMenu]"); - - mActivity.getWindow().invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL); - } - - @Override - public boolean dispatchCreateOptionsMenu(android.view.Menu menu) { - if (DEBUG) Log.d(TAG, "[dispatchCreateOptionsMenu] menu: " + menu); - - if (mMenu == null || menu != mMenu.unwrap()) { - mMenu = new MenuWrapper(menu); - } - - final boolean result = callbackCreateOptionsMenu(mMenu); - if (DEBUG) Log.d(TAG, "[dispatchCreateOptionsMenu] returning " + result); - return result; - } - - @Override - public boolean dispatchPrepareOptionsMenu(android.view.Menu menu) { - if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] menu: " + menu); - - final boolean result = callbackPrepareOptionsMenu(mMenu); - if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] returning " + result); - return result; - } - - @Override - public boolean dispatchOptionsItemSelected(android.view.MenuItem item) { - if (DEBUG) Log.d(TAG, "[dispatchOptionsItemSelected] item: " + item.getTitleCondensed()); - - final boolean result = callbackOptionsItemSelected(mMenu.findItem(item)); - if (DEBUG) Log.d(TAG, "[dispatchOptionsItemSelected] returning " + result); - return result; - } - - @Override - public boolean hasFeature(int feature) { - if (DEBUG) Log.d(TAG, "[hasFeature] feature: " + feature); - - final boolean result = mActivity.getWindow().hasFeature(feature); - if (DEBUG) Log.d(TAG, "[hasFeature] returning " + result); - return result; - } - - @Override - public boolean requestFeature(int featureId) { - if (DEBUG) Log.d(TAG, "[requestFeature] featureId: " + featureId); - - final boolean result = mActivity.getWindow().requestFeature(featureId); - if (DEBUG) Log.d(TAG, "[requestFeature] returning " + result); - return result; - } - - @Override - public void setUiOptions(int uiOptions) { - if (DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions); - - mActivity.getWindow().setUiOptions(uiOptions); - } - - @Override - public void setUiOptions(int uiOptions, int mask) { - if (DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions + ", mask: " + mask); - - mActivity.getWindow().setUiOptions(uiOptions, mask); - } - - @Override - public void setContentView(int layoutResId) { - if (DEBUG) Log.d(TAG, "[setContentView] layoutResId: " + layoutResId); - - mActivity.getWindow().setContentView(layoutResId); - initActionBar(); - } - - @Override - public void setContentView(View view, LayoutParams params) { - if (DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params); - - mActivity.getWindow().setContentView(view, params); - initActionBar(); - } - - @Override - public void addContentView(View view, LayoutParams params) { - if (DEBUG) Log.d(TAG, "[addContentView] view: " + view + ", params: " + params); - - mActivity.getWindow().addContentView(view, params); - initActionBar(); - } - - @Override - public void setTitle(CharSequence title) { - if (DEBUG) Log.d(TAG, "[setTitle] title: " + title); - - mActivity.getWindow().setTitle(title); - } - - @Override - public void setProgressBarVisibility(boolean visible) { - if (DEBUG) Log.d(TAG, "[setProgressBarVisibility] visible: " + visible); - - mActivity.setProgressBarVisibility(visible); - } - - @Override - public void setProgressBarIndeterminateVisibility(boolean visible) { - if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminateVisibility] visible: " + visible); - - mActivity.setProgressBarIndeterminateVisibility(visible); - } - - @Override - public void setProgressBarIndeterminate(boolean indeterminate) { - if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminate] indeterminate: " + indeterminate); - - mActivity.setProgressBarIndeterminate(indeterminate); - } - - @Override - public void setProgress(int progress) { - if (DEBUG) Log.d(TAG, "[setProgress] progress: " + progress); - - mActivity.setProgress(progress); - } - - @Override - public void setSecondaryProgress(int secondaryProgress) { - if (DEBUG) Log.d(TAG, "[setSecondaryProgress] secondaryProgress: " + secondaryProgress); - - mActivity.setSecondaryProgress(secondaryProgress); - } - - @Override - protected Context getThemedContext() { - Context context = mActivity; - TypedValue outValue = new TypedValue(); - mActivity.getTheme().resolveAttribute(android.R.attr.actionBarWidgetTheme, outValue, true); - if (outValue.resourceId != 0) { - //We are unable to test if this is the same as our current theme - //so we just wrap it and hope that if the attribute was specified - //then the user is intentionally specifying an alternate theme. - context = new ContextThemeWrapper(context, outValue.resourceId); - } - return context; - } - - @Override - public ActionMode startActionMode(com.actionbarsherlock.view.ActionMode.Callback callback) { - if (DEBUG) Log.d(TAG, "[startActionMode] callback: " + callback); - - if (mActionMode != null) { - mActionMode.finish(); - } - ActionModeCallbackWrapper wrapped = null; - if (callback != null) { - wrapped = new ActionModeCallbackWrapper(callback); - } - - //Calling this will trigger the callback wrapper's onCreate which - //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); - - return mActionMode; - } - - private class ActionModeCallbackWrapper implements android.view.ActionMode.Callback { - private final ActionMode.Callback mCallback; - - public ActionModeCallbackWrapper(ActionMode.Callback callback) { - mCallback = callback; - } - - @Override - public boolean onCreateActionMode(android.view.ActionMode mode, android.view.Menu menu) { - //See ActionBarSherlockNative#startActionMode - mActionMode = new ActionModeWrapper(mode); - - return mCallback.onCreateActionMode(mActionMode, mActionMode.getMenu()); - } - - @Override - public boolean onPrepareActionMode(android.view.ActionMode mode, android.view.Menu menu) { - return mCallback.onPrepareActionMode(mActionMode, mActionMode.getMenu()); - } - - @Override - public boolean onActionItemClicked(android.view.ActionMode mode, android.view.MenuItem item) { - return mCallback.onActionItemClicked(mActionMode, mActionMode.getMenu().findItem(item)); - } - - @Override - public void onDestroyActionMode(android.view.ActionMode mode) { - mCallback.onDestroyActionMode(mActionMode); - } - } - - private class ActionModeWrapper extends ActionMode { - private final android.view.ActionMode mActionMode; - private MenuWrapper mMenu = null; - - ActionModeWrapper(android.view.ActionMode actionMode) { - mActionMode = actionMode; - } - - @Override - public void setTitle(CharSequence title) { - mActionMode.setTitle(title); - } - - @Override - public void setTitle(int resId) { - mActionMode.setTitle(resId); - } - - @Override - public void setSubtitle(CharSequence subtitle) { - mActionMode.setSubtitle(subtitle); - } - - @Override - public void setSubtitle(int resId) { - mActionMode.setSubtitle(resId); - } - - @Override - public void setCustomView(View view) { - mActionMode.setCustomView(view); - } - - @Override - public void invalidate() { - mActionMode.invalidate(); - } - - @Override - public void finish() { - mActionMode.finish(); - } - - @Override - public MenuWrapper getMenu() { - if (mMenu == null) { - mMenu = new MenuWrapper(mActionMode.getMenu()); - } - return mMenu; - } - - @Override - public CharSequence getTitle() { - return mActionMode.getTitle(); - } - - @Override - public CharSequence getSubtitle() { - return mActionMode.getSubtitle(); - } - - @Override - public View getCustomView() { - return mActionMode.getCustomView(); - } - - @Override - public MenuInflater getMenuInflater() { - return ActionBarSherlockNative.this.getMenuInflater(); - } - - @Override - public void setTag(Object tag) { - mActionMode.setTag(tag); - } - - @Override - public Object getTag() { - return mActionMode.getTag(); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ResourcesCompat.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ResourcesCompat.java deleted file mode 100755 index 8e1efe8c5..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/ResourcesCompat.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.actionbarsherlock.internal; - -import android.content.Context; -import android.os.Build; -import android.util.DisplayMetrics; -import com.actionbarsherlock.R; - -public final class ResourcesCompat { - //No instances - private ResourcesCompat() {} - - - /** - * Support implementation of {@code getResources().getBoolean()} that we - * can use to simulate filtering based on width and smallest width - * qualifiers on pre-3.2. - * - * @param context Context to load booleans from on 3.2+ and to fetch the - * display metrics. - * @param id Id of boolean to load. - * @return Associated boolean value as reflected by the current display - * metrics. - */ - public static boolean getResources_getBoolean(Context context, int id) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { - return context.getResources().getBoolean(id); - } - - DisplayMetrics metrics = context.getResources().getDisplayMetrics(); - float widthDp = metrics.widthPixels / metrics.density; - float heightDp = metrics.heightPixels / metrics.density; - float smallestWidthDp = (widthDp < heightDp) ? widthDp : heightDp; - - if (id == R.bool.abs__action_bar_embed_tabs) { - if (widthDp >= 480) { - return true; //values-w480dp - } - return false; //values - } - if (id == R.bool.abs__split_action_bar_is_narrow) { - if (widthDp >= 480) { - return false; //values-w480dp - } - return true; //values - } - if (id == R.bool.abs__action_bar_expanded_action_views_exclusive) { - if (smallestWidthDp >= 600) { - return false; //values-sw600dp - } - return true; //values - } - if (id == R.bool.abs__config_allowActionMenuItemTextWithIcon) { - if (widthDp >= 480) { - return true; //values-w480dp - } - return false; //values - } - - throw new IllegalArgumentException("Unknown boolean resource ID " + id); - } - - /** - * Support implementation of {@code getResources().getInteger()} that we - * can use to simulate filtering based on width qualifiers on pre-3.2. - * - * @param context Context to load integers from on 3.2+ and to fetch the - * display metrics. - * @param id Id of integer to load. - * @return Associated integer value as reflected by the current display - * metrics. - */ - public static int getResources_getInteger(Context context, int id) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { - return context.getResources().getInteger(id); - } - - DisplayMetrics metrics = context.getResources().getDisplayMetrics(); - float widthDp = metrics.widthPixels / metrics.density; - - if (id == R.integer.abs__max_action_buttons) { - if (widthDp >= 600) { - return 5; //values-w600dp - } - if (widthDp >= 500) { - return 4; //values-w500dp - } - if (widthDp >= 360) { - return 3; //values-w360dp - } - return 2; //values - } - - throw new IllegalArgumentException("Unknown integer resource ID " + id); - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarImpl.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarImpl.java deleted file mode 100755 index 6ae0402c0..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarImpl.java +++ /dev/null @@ -1,1026 +0,0 @@ -/* - * 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.internal.app; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import android.app.Activity; -import android.app.Dialog; -import android.content.Context; -import android.content.res.Configuration; -import android.content.res.Resources; -import android.graphics.drawable.Drawable; -import android.os.Build; -import android.os.Handler; -import android.support.v4.app.FragmentTransaction; -import android.util.TypedValue; -import android.view.ContextThemeWrapper; -import android.view.LayoutInflater; -import android.view.View; -import android.view.Window; -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; -import com.actionbarsherlock.internal.nineoldandroids.animation.ObjectAnimator; -import com.actionbarsherlock.internal.nineoldandroids.animation.Animator.AnimatorListener; -import com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout; -import com.actionbarsherlock.internal.view.menu.MenuBuilder; -import com.actionbarsherlock.internal.view.menu.MenuPopupHelper; -import com.actionbarsherlock.internal.view.menu.SubMenuBuilder; -import com.actionbarsherlock.internal.widget.ActionBarContainer; -import com.actionbarsherlock.internal.widget.ActionBarContextView; -import com.actionbarsherlock.internal.widget.ActionBarView; -import com.actionbarsherlock.internal.widget.ScrollingTabContainerView; -import com.actionbarsherlock.view.ActionMode; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; -import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoolean; - -/** - * ActionBarImpl is the ActionBar implementation used - * by devices of all screen sizes. If it detects a compatible decor, - * it will split contextual modes across both the ActionBarView at - * the top of the screen and a horizontal LinearLayout at the bottom - * which is normally hidden. - */ -public class ActionBarImpl extends ActionBar { - //UNUSED private static final String TAG = "ActionBarImpl"; - - private Context mContext; - private Context mThemedContext; - private Activity mActivity; - //UNUSED private Dialog mDialog; - - private ActionBarContainer mContainerView; - private ActionBarView mActionView; - private ActionBarContextView mContextView; - private ActionBarContainer mSplitView; - private NineFrameLayout mContentView; - private ScrollingTabContainerView mTabScrollView; - - private ArrayList mTabs = new ArrayList(); - - private TabImpl mSelectedTab; - private int mSavedTabPosition = INVALID_POSITION; - - ActionModeImpl mActionMode; - ActionMode mDeferredDestroyActionMode; - ActionMode.Callback mDeferredModeDestroyCallback; - - private boolean mLastMenuVisibility; - private ArrayList mMenuVisibilityListeners = - new ArrayList(); - - private static final int CONTEXT_DISPLAY_NORMAL = 0; - private static final int CONTEXT_DISPLAY_SPLIT = 1; - - private static final int INVALID_POSITION = -1; - - private int mContextDisplayMode; - private boolean mHasEmbeddedTabs; - - final Handler mHandler = new Handler(); - Runnable mTabSelector; - - private Animator mCurrentShowAnim; - private Animator mCurrentModeAnim; - private boolean mShowHideAnimationEnabled; - boolean mWasHiddenBeforeMode; - - final AnimatorListener mHideListener = new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - if (mContentView != null) { - mContentView.setTranslationY(0); - mContainerView.setTranslationY(0); - } - if (mSplitView != null && mContextDisplayMode == CONTEXT_DISPLAY_SPLIT) { - mSplitView.setVisibility(View.GONE); - } - mContainerView.setVisibility(View.GONE); - mContainerView.setTransitioning(false); - mCurrentShowAnim = null; - completeDeferredDestroyActionMode(); - } - }; - - final AnimatorListener mShowListener = new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mCurrentShowAnim = null; - mContainerView.requestLayout(); - } - }; - - public ActionBarImpl(Activity activity, int features) { - mActivity = activity; - Window window = activity.getWindow(); - View decor = window.getDecorView(); - init(decor); - - //window.hasFeature() workaround for pre-3.0 - if ((features & (1 << Window.FEATURE_ACTION_BAR_OVERLAY)) == 0) { - mContentView = (NineFrameLayout)decor.findViewById(android.R.id.content); - } - } - - public ActionBarImpl(Dialog dialog) { - //UNUSED mDialog = dialog; - init(dialog.getWindow().getDecorView()); - } - - private void init(View decor) { - mContext = decor.getContext(); - mActionView = (ActionBarView) decor.findViewById(R.id.abs__action_bar); - mContextView = (ActionBarContextView) decor.findViewById( - R.id.abs__action_context_bar); - mContainerView = (ActionBarContainer) decor.findViewById( - R.id.abs__action_bar_container); - mSplitView = (ActionBarContainer) decor.findViewById( - R.id.abs__split_action_bar); - - if (mActionView == null || mContextView == null || mContainerView == null) { - throw new IllegalStateException(getClass().getSimpleName() + " can only be used " + - "with a compatible window decor layout"); - } - - mActionView.setContextView(mContextView); - mContextDisplayMode = mActionView.isSplitActionBar() ? - CONTEXT_DISPLAY_SPLIT : CONTEXT_DISPLAY_NORMAL; - - // Older apps get the home button interaction enabled by default. - // Newer apps need to enable it explicitly. - setHomeButtonEnabled(mContext.getApplicationInfo().targetSdkVersion < 14); - - setHasEmbeddedTabs(getResources_getBoolean(mContext, - R.bool.abs__action_bar_embed_tabs)); - } - - public void onConfigurationChanged(Configuration newConfig) { - setHasEmbeddedTabs(getResources_getBoolean(mContext, - R.bool.abs__action_bar_embed_tabs)); - - //Manually dispatch a configuration change to the action bar view on pre-2.2 - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { - mActionView.onConfigurationChanged(newConfig); - if (mContextView != null) { - mContextView.onConfigurationChanged(newConfig); - } - } - } - - private void setHasEmbeddedTabs(boolean hasEmbeddedTabs) { - mHasEmbeddedTabs = hasEmbeddedTabs; - // Switch tab layout configuration if needed - if (!mHasEmbeddedTabs) { - mActionView.setEmbeddedTabView(null); - mContainerView.setTabContainer(mTabScrollView); - } else { - mContainerView.setTabContainer(null); - mActionView.setEmbeddedTabView(mTabScrollView); - } - final boolean isInTabMode = getNavigationMode() == NAVIGATION_MODE_TABS; - if (mTabScrollView != null) { - mTabScrollView.setVisibility(isInTabMode ? View.VISIBLE : View.GONE); - } - mActionView.setCollapsable(!mHasEmbeddedTabs && isInTabMode); - } - - private void ensureTabsExist() { - if (mTabScrollView != null) { - return; - } - - ScrollingTabContainerView tabScroller = new ScrollingTabContainerView(mContext); - - if (mHasEmbeddedTabs) { - tabScroller.setVisibility(View.VISIBLE); - mActionView.setEmbeddedTabView(tabScroller); - } else { - tabScroller.setVisibility(getNavigationMode() == NAVIGATION_MODE_TABS ? - View.VISIBLE : View.GONE); - mContainerView.setTabContainer(tabScroller); - } - mTabScrollView = tabScroller; - } - - void completeDeferredDestroyActionMode() { - if (mDeferredModeDestroyCallback != null) { - mDeferredModeDestroyCallback.onDestroyActionMode(mDeferredDestroyActionMode); - mDeferredDestroyActionMode = null; - mDeferredModeDestroyCallback = null; - } - } - - /** - * Enables or disables animation between show/hide states. - * If animation is disabled using this method, animations in progress - * will be finished. - * - * @param enabled true to animate, false to not animate. - */ - public void setShowHideAnimationEnabled(boolean enabled) { - mShowHideAnimationEnabled = enabled; - if (!enabled && mCurrentShowAnim != null) { - mCurrentShowAnim.end(); - } - } - - public void addOnMenuVisibilityListener(OnMenuVisibilityListener listener) { - mMenuVisibilityListeners.add(listener); - } - - public void removeOnMenuVisibilityListener(OnMenuVisibilityListener listener) { - mMenuVisibilityListeners.remove(listener); - } - - public void dispatchMenuVisibilityChanged(boolean isVisible) { - if (isVisible == mLastMenuVisibility) { - return; - } - mLastMenuVisibility = isVisible; - - final int count = mMenuVisibilityListeners.size(); - for (int i = 0; i < count; i++) { - mMenuVisibilityListeners.get(i).onMenuVisibilityChanged(isVisible); - } - } - - @Override - public void setCustomView(int resId) { - setCustomView(LayoutInflater.from(getThemedContext()).inflate(resId, mActionView, false)); - } - - @Override - public void setDisplayUseLogoEnabled(boolean useLogo) { - setDisplayOptions(useLogo ? DISPLAY_USE_LOGO : 0, DISPLAY_USE_LOGO); - } - - @Override - public void setDisplayShowHomeEnabled(boolean showHome) { - setDisplayOptions(showHome ? DISPLAY_SHOW_HOME : 0, DISPLAY_SHOW_HOME); - } - - @Override - public void setDisplayHomeAsUpEnabled(boolean showHomeAsUp) { - setDisplayOptions(showHomeAsUp ? DISPLAY_HOME_AS_UP : 0, DISPLAY_HOME_AS_UP); - } - - @Override - public void setDisplayShowTitleEnabled(boolean showTitle) { - setDisplayOptions(showTitle ? DISPLAY_SHOW_TITLE : 0, DISPLAY_SHOW_TITLE); - } - - @Override - public void setDisplayShowCustomEnabled(boolean showCustom) { - setDisplayOptions(showCustom ? DISPLAY_SHOW_CUSTOM : 0, DISPLAY_SHOW_CUSTOM); - } - - @Override - public void setHomeButtonEnabled(boolean enable) { - mActionView.setHomeButtonEnabled(enable); - } - - @Override - public void setTitle(int resId) { - setTitle(mContext.getString(resId)); - } - - @Override - public void setSubtitle(int resId) { - setSubtitle(mContext.getString(resId)); - } - - public void setSelectedNavigationItem(int position) { - switch (mActionView.getNavigationMode()) { - case NAVIGATION_MODE_TABS: - selectTab(mTabs.get(position)); - break; - case NAVIGATION_MODE_LIST: - mActionView.setDropdownSelectedPosition(position); - break; - default: - throw new IllegalStateException( - "setSelectedNavigationIndex not valid for current navigation mode"); - } - } - - public void removeAllTabs() { - cleanupTabs(); - } - - private void cleanupTabs() { - if (mSelectedTab != null) { - selectTab(null); - } - mTabs.clear(); - if (mTabScrollView != null) { - mTabScrollView.removeAllTabs(); - } - mSavedTabPosition = INVALID_POSITION; - } - - public void setTitle(CharSequence title) { - mActionView.setTitle(title); - } - - public void setSubtitle(CharSequence subtitle) { - mActionView.setSubtitle(subtitle); - } - - public void setDisplayOptions(int options) { - mActionView.setDisplayOptions(options); - } - - public void setDisplayOptions(int options, int mask) { - final int current = mActionView.getDisplayOptions(); - mActionView.setDisplayOptions((options & mask) | (current & ~mask)); - } - - public void setBackgroundDrawable(Drawable d) { - mContainerView.setPrimaryBackground(d); - } - - public void setStackedBackgroundDrawable(Drawable d) { - mContainerView.setStackedBackground(d); - } - - public void setSplitBackgroundDrawable(Drawable d) { - if (mSplitView != null) { - mSplitView.setSplitBackground(d); - } - } - - public View getCustomView() { - return mActionView.getCustomNavigationView(); - } - - public CharSequence getTitle() { - return mActionView.getTitle(); - } - - public CharSequence getSubtitle() { - return mActionView.getSubtitle(); - } - - public int getNavigationMode() { - return mActionView.getNavigationMode(); - } - - public int getDisplayOptions() { - return mActionView.getDisplayOptions(); - } - - public ActionMode startActionMode(ActionMode.Callback callback) { - boolean wasHidden = false; - if (mActionMode != null) { - wasHidden = mWasHiddenBeforeMode; - mActionMode.finish(); - } - - mContextView.killMode(); - ActionModeImpl mode = new ActionModeImpl(callback); - if (mode.dispatchOnCreate()) { - mWasHiddenBeforeMode = !isShowing() || wasHidden; - mode.invalidate(); - mContextView.initForMode(mode); - animateToMode(true); - if (mSplitView != null && mContextDisplayMode == CONTEXT_DISPLAY_SPLIT) { - // TODO animate this - mSplitView.setVisibility(View.VISIBLE); - } - mContextView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); - mActionMode = mode; - return mode; - } - return null; - } - - private void configureTab(Tab tab, int position) { - final TabImpl tabi = (TabImpl) tab; - final ActionBar.TabListener callback = tabi.getCallback(); - - if (callback == null) { - throw new IllegalStateException("Action Bar Tab must have a Callback"); - } - - tabi.setPosition(position); - mTabs.add(position, tabi); - - final int count = mTabs.size(); - for (int i = position + 1; i < count; i++) { - mTabs.get(i).setPosition(i); - } - } - - @Override - public void addTab(Tab tab) { - addTab(tab, mTabs.isEmpty()); - } - - @Override - public void addTab(Tab tab, int position) { - addTab(tab, position, mTabs.isEmpty()); - } - - @Override - public void addTab(Tab tab, boolean setSelected) { - ensureTabsExist(); - mTabScrollView.addTab(tab, setSelected); - configureTab(tab, mTabs.size()); - if (setSelected) { - selectTab(tab); - } - } - - @Override - public void addTab(Tab tab, int position, boolean setSelected) { - ensureTabsExist(); - mTabScrollView.addTab(tab, position, setSelected); - configureTab(tab, position); - if (setSelected) { - selectTab(tab); - } - } - - @Override - public Tab newTab() { - return new TabImpl(); - } - - @Override - public void removeTab(Tab tab) { - removeTabAt(tab.getPosition()); - } - - @Override - public void removeTabAt(int position) { - if (mTabScrollView == null) { - // No tabs around to remove - return; - } - - int selectedTabPosition = mSelectedTab != null - ? mSelectedTab.getPosition() : mSavedTabPosition; - mTabScrollView.removeTabAt(position); - TabImpl removedTab = mTabs.remove(position); - if (removedTab != null) { - removedTab.setPosition(-1); - } - - final int newTabCount = mTabs.size(); - for (int i = position; i < newTabCount; i++) { - mTabs.get(i).setPosition(i); - } - - if (selectedTabPosition == position) { - selectTab(mTabs.isEmpty() ? null : mTabs.get(Math.max(0, position - 1))); - } - } - - @Override - public void selectTab(Tab tab) { - if (getNavigationMode() != NAVIGATION_MODE_TABS) { - mSavedTabPosition = tab != null ? tab.getPosition() : INVALID_POSITION; - return; - } - - FragmentTransaction trans = null; - if (mActivity instanceof SherlockFragmentActivity) { - trans = ((SherlockFragmentActivity)mActivity).getSupportFragmentManager().beginTransaction() - .disallowAddToBackStack(); - } - - if (mSelectedTab == tab) { - if (mSelectedTab != null) { - mSelectedTab.getCallback().onTabReselected(mSelectedTab, trans); - mTabScrollView.animateToTab(tab.getPosition()); - } - } else { - mTabScrollView.setTabSelected(tab != null ? tab.getPosition() : Tab.INVALID_POSITION); - if (mSelectedTab != null) { - mSelectedTab.getCallback().onTabUnselected(mSelectedTab, trans); - } - mSelectedTab = (TabImpl) tab; - if (mSelectedTab != null) { - mSelectedTab.getCallback().onTabSelected(mSelectedTab, trans); - } - } - - if (trans != null && !trans.isEmpty()) { - trans.commit(); - } - } - - @Override - public Tab getSelectedTab() { - return mSelectedTab; - } - - @Override - public int getHeight() { - return mContainerView.getHeight(); - } - - @Override - public void show() { - show(true); - } - - void show(boolean markHiddenBeforeMode) { - if (mCurrentShowAnim != null) { - mCurrentShowAnim.end(); - } - if (mContainerView.getVisibility() == View.VISIBLE) { - if (markHiddenBeforeMode) mWasHiddenBeforeMode = false; - return; - } - mContainerView.setVisibility(View.VISIBLE); - - if (mShowHideAnimationEnabled) { - mContainerView.setAlpha(0); - AnimatorSet anim = new AnimatorSet(); - AnimatorSet.Builder b = anim.play(ObjectAnimator.ofFloat(mContainerView, "alpha", 1)); - if (mContentView != null) { - b.with(ObjectAnimator.ofFloat(mContentView, "translationY", - -mContainerView.getHeight(), 0)); - mContainerView.setTranslationY(-mContainerView.getHeight()); - b.with(ObjectAnimator.ofFloat(mContainerView, "translationY", 0)); - } - if (mSplitView != null && mContextDisplayMode == CONTEXT_DISPLAY_SPLIT) { - mSplitView.setAlpha(0); - mSplitView.setVisibility(View.VISIBLE); - b.with(ObjectAnimator.ofFloat(mSplitView, "alpha", 1)); - } - anim.addListener(mShowListener); - mCurrentShowAnim = anim; - anim.start(); - } else { - mContainerView.setAlpha(1); - mContainerView.setTranslationY(0); - mShowListener.onAnimationEnd(null); - } - } - - @Override - public void hide() { - if (mCurrentShowAnim != null) { - mCurrentShowAnim.end(); - } - if (mContainerView.getVisibility() == View.GONE) { - return; - } - - if (mShowHideAnimationEnabled) { - mContainerView.setAlpha(1); - mContainerView.setTransitioning(true); - AnimatorSet anim = new AnimatorSet(); - AnimatorSet.Builder b = anim.play(ObjectAnimator.ofFloat(mContainerView, "alpha", 0)); - if (mContentView != null) { - b.with(ObjectAnimator.ofFloat(mContentView, "translationY", - 0, -mContainerView.getHeight())); - b.with(ObjectAnimator.ofFloat(mContainerView, "translationY", - -mContainerView.getHeight())); - } - if (mSplitView != null && mSplitView.getVisibility() == View.VISIBLE) { - mSplitView.setAlpha(1); - b.with(ObjectAnimator.ofFloat(mSplitView, "alpha", 0)); - } - anim.addListener(mHideListener); - mCurrentShowAnim = anim; - anim.start(); - } else { - mHideListener.onAnimationEnd(null); - } - } - - public boolean isShowing() { - return mContainerView.getVisibility() == View.VISIBLE; - } - - void animateToMode(boolean toActionMode) { - if (toActionMode) { - show(false); - } - if (mCurrentModeAnim != null) { - mCurrentModeAnim.end(); - } - - mActionView.animateToVisibility(toActionMode ? View.GONE : View.VISIBLE); - mContextView.animateToVisibility(toActionMode ? View.VISIBLE : View.GONE); - if (mTabScrollView != null && !mActionView.hasEmbeddedTabs() && mActionView.isCollapsed()) { - mTabScrollView.animateToVisibility(toActionMode ? View.GONE : View.VISIBLE); - } - } - - public Context getThemedContext() { - if (mThemedContext == null) { - TypedValue outValue = new TypedValue(); - Resources.Theme currentTheme = mContext.getTheme(); - currentTheme.resolveAttribute(R.attr.actionBarWidgetTheme, - outValue, true); - final int targetThemeRes = outValue.resourceId; - - if (targetThemeRes != 0) { //XXX && mContext.getThemeResId() != targetThemeRes) { - mThemedContext = new ContextThemeWrapper(mContext, targetThemeRes); - } else { - mThemedContext = mContext; - } - } - return mThemedContext; - } - - /** - * @hide - */ - public class ActionModeImpl extends ActionMode implements MenuBuilder.Callback { - private ActionMode.Callback mCallback; - private MenuBuilder mMenu; - private WeakReference mCustomView; - - public ActionModeImpl(ActionMode.Callback callback) { - mCallback = callback; - mMenu = new MenuBuilder(getThemedContext()) - .setDefaultShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); - mMenu.setCallback(this); - } - - @Override - public MenuInflater getMenuInflater() { - return new MenuInflater(getThemedContext()); - } - - @Override - public Menu getMenu() { - return mMenu; - } - - @Override - public void finish() { - if (mActionMode != this) { - // Not the active action mode - no-op - return; - } - - // If we were hidden before the mode was shown, defer the onDestroy - // callback until the animation is finished and associated relayout - // is about to happen. This lets apps better anticipate visibility - // and layout behavior. - if (mWasHiddenBeforeMode) { - mDeferredDestroyActionMode = this; - mDeferredModeDestroyCallback = mCallback; - } else { - mCallback.onDestroyActionMode(this); - } - mCallback = null; - animateToMode(false); - - // Clear out the context mode views after the animation finishes - mContextView.closeMode(); - mActionView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); - - mActionMode = null; - - if (mWasHiddenBeforeMode) { - hide(); - } - } - - @Override - public void invalidate() { - mMenu.stopDispatchingItemsChanged(); - try { - mCallback.onPrepareActionMode(this, mMenu); - } finally { - mMenu.startDispatchingItemsChanged(); - } - } - - public boolean dispatchOnCreate() { - mMenu.stopDispatchingItemsChanged(); - try { - return mCallback.onCreateActionMode(this, mMenu); - } finally { - mMenu.startDispatchingItemsChanged(); - } - } - - @Override - public void setCustomView(View view) { - mContextView.setCustomView(view); - mCustomView = new WeakReference(view); - } - - @Override - public void setSubtitle(CharSequence subtitle) { - mContextView.setSubtitle(subtitle); - } - - @Override - public void setTitle(CharSequence title) { - mContextView.setTitle(title); - } - - @Override - public void setTitle(int resId) { - setTitle(mContext.getResources().getString(resId)); - } - - @Override - public void setSubtitle(int resId) { - setSubtitle(mContext.getResources().getString(resId)); - } - - @Override - public CharSequence getTitle() { - return mContextView.getTitle(); - } - - @Override - public CharSequence getSubtitle() { - return mContextView.getSubtitle(); - } - - @Override - public View getCustomView() { - return mCustomView != null ? mCustomView.get() : null; - } - - public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item) { - if (mCallback != null) { - return mCallback.onActionItemClicked(this, item); - } else { - return false; - } - } - - public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { - } - - public boolean onSubMenuSelected(SubMenuBuilder subMenu) { - if (mCallback == null) { - return false; - } - - if (!subMenu.hasVisibleItems()) { - return true; - } - - new MenuPopupHelper(getThemedContext(), subMenu).show(); - return true; - } - - public void onCloseSubMenu(SubMenuBuilder menu) { - } - - public void onMenuModeChange(MenuBuilder menu) { - if (mCallback == null) { - return; - } - invalidate(); - mContextView.showOverflowMenu(); - } - } - - /** - * @hide - */ - public class TabImpl extends ActionBar.Tab { - private ActionBar.TabListener mCallback; - private Object mTag; - private Drawable mIcon; - private CharSequence mText; - private CharSequence mContentDesc; - private int mPosition = -1; - private View mCustomView; - - @Override - public Object getTag() { - return mTag; - } - - @Override - public Tab setTag(Object tag) { - mTag = tag; - return this; - } - - public ActionBar.TabListener getCallback() { - return mCallback; - } - - @Override - public Tab setTabListener(ActionBar.TabListener callback) { - mCallback = callback; - return this; - } - - @Override - public View getCustomView() { - return mCustomView; - } - - @Override - public Tab setCustomView(View view) { - mCustomView = view; - if (mPosition >= 0) { - mTabScrollView.updateTab(mPosition); - } - return this; - } - - @Override - public Tab setCustomView(int layoutResId) { - return setCustomView(LayoutInflater.from(getThemedContext()) - .inflate(layoutResId, null)); - } - - @Override - public Drawable getIcon() { - return mIcon; - } - - @Override - public int getPosition() { - return mPosition; - } - - public void setPosition(int position) { - mPosition = position; - } - - @Override - public CharSequence getText() { - return mText; - } - - @Override - public Tab setIcon(Drawable icon) { - mIcon = icon; - if (mPosition >= 0) { - mTabScrollView.updateTab(mPosition); - } - return this; - } - - @Override - public Tab setIcon(int resId) { - return setIcon(mContext.getResources().getDrawable(resId)); - } - - @Override - public Tab setText(CharSequence text) { - mText = text; - if (mPosition >= 0) { - mTabScrollView.updateTab(mPosition); - } - return this; - } - - @Override - public Tab setText(int resId) { - return setText(mContext.getResources().getText(resId)); - } - - @Override - public void select() { - selectTab(this); - } - - @Override - public Tab setContentDescription(int resId) { - return setContentDescription(mContext.getResources().getText(resId)); - } - - @Override - public Tab setContentDescription(CharSequence contentDesc) { - mContentDesc = contentDesc; - if (mPosition >= 0) { - mTabScrollView.updateTab(mPosition); - } - return this; - } - - @Override - public CharSequence getContentDescription() { - return mContentDesc; - } - } - - @Override - public void setCustomView(View view) { - mActionView.setCustomNavigationView(view); - } - - @Override - public void setCustomView(View view, LayoutParams layoutParams) { - view.setLayoutParams(layoutParams); - mActionView.setCustomNavigationView(view); - } - - @Override - public void setListNavigationCallbacks(SpinnerAdapter adapter, OnNavigationListener callback) { - mActionView.setDropdownAdapter(adapter); - mActionView.setCallback(callback); - } - - @Override - public int getSelectedNavigationIndex() { - switch (mActionView.getNavigationMode()) { - case NAVIGATION_MODE_TABS: - return mSelectedTab != null ? mSelectedTab.getPosition() : -1; - case NAVIGATION_MODE_LIST: - return mActionView.getDropdownSelectedPosition(); - default: - return -1; - } - } - - @Override - public int getNavigationItemCount() { - switch (mActionView.getNavigationMode()) { - case NAVIGATION_MODE_TABS: - return mTabs.size(); - case NAVIGATION_MODE_LIST: - SpinnerAdapter adapter = mActionView.getDropdownAdapter(); - return adapter != null ? adapter.getCount() : 0; - default: - return 0; - } - } - - @Override - public int getTabCount() { - return mTabs.size(); - } - - @Override - public void setNavigationMode(int mode) { - final int oldMode = mActionView.getNavigationMode(); - switch (oldMode) { - case NAVIGATION_MODE_TABS: - mSavedTabPosition = getSelectedNavigationIndex(); - selectTab(null); - mTabScrollView.setVisibility(View.GONE); - break; - } - mActionView.setNavigationMode(mode); - switch (mode) { - case NAVIGATION_MODE_TABS: - ensureTabsExist(); - mTabScrollView.setVisibility(View.VISIBLE); - if (mSavedTabPosition != INVALID_POSITION) { - setSelectedNavigationItem(mSavedTabPosition); - mSavedTabPosition = INVALID_POSITION; - } - break; - } - mActionView.setCollapsable(mode == NAVIGATION_MODE_TABS && !mHasEmbeddedTabs); - } - - @Override - public Tab getTabAt(int index) { - return mTabs.get(index); - } - - - @Override - public void setIcon(int resId) { - mActionView.setIcon(resId); - } - - @Override - public void setIcon(Drawable icon) { - mActionView.setIcon(icon); - } - - @Override - public void setLogo(int resId) { - mActionView.setLogo(resId); - } - - @Override - public void setLogo(Drawable logo) { - mActionView.setLogo(logo); - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarWrapper.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarWrapper.java deleted file mode 100755 index e390ea428..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarWrapper.java +++ /dev/null @@ -1,468 +0,0 @@ -package com.actionbarsherlock.internal.app; - -import java.util.HashSet; -import java.util.Set; - -import android.app.Activity; -import android.content.Context; -import android.graphics.drawable.Drawable; -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; - private final android.app.ActionBar mActionBar; - private ActionBar.OnNavigationListener mNavigationListener; - private Set mMenuVisibilityListeners = new HashSet(1); - private FragmentTransaction mFragmentTransaction; - - - public ActionBarWrapper(Activity activity) { - mActivity = activity; - mActionBar = activity.getActionBar(); - if (mActionBar != null) { - mActionBar.addOnMenuVisibilityListener(this); - } - } - - - @Override - public void setHomeButtonEnabled(boolean enabled) { - mActionBar.setHomeButtonEnabled(enabled); - } - - @Override - public Context getThemedContext() { - return mActionBar.getThemedContext(); - } - - @Override - public void setCustomView(View view) { - mActionBar.setCustomView(view); - } - - @Override - public void setCustomView(View view, LayoutParams layoutParams) { - android.app.ActionBar.LayoutParams lp = new android.app.ActionBar.LayoutParams(layoutParams); - lp.gravity = layoutParams.gravity; - lp.bottomMargin = layoutParams.bottomMargin; - lp.topMargin = layoutParams.topMargin; - lp.leftMargin = layoutParams.leftMargin; - lp.rightMargin = layoutParams.rightMargin; - mActionBar.setCustomView(view, lp); - } - - @Override - public void setCustomView(int resId) { - mActionBar.setCustomView(resId); - } - - @Override - public void setIcon(int resId) { - mActionBar.setIcon(resId); - } - - @Override - public void setIcon(Drawable icon) { - mActionBar.setIcon(icon); - } - - @Override - public void setLogo(int resId) { - mActionBar.setLogo(resId); - } - - @Override - public void setLogo(Drawable logo) { - mActionBar.setLogo(logo); - } - - @Override - public void setListNavigationCallbacks(SpinnerAdapter adapter, OnNavigationListener callback) { - mNavigationListener = callback; - mActionBar.setListNavigationCallbacks(adapter, (callback != null) ? this : null); - } - - @Override - public boolean onNavigationItemSelected(int itemPosition, long itemId) { - //This should never be a NullPointerException since we only set - //ourselves as the listener when the callback is not null. - return mNavigationListener.onNavigationItemSelected(itemPosition, itemId); - } - - @Override - public void setSelectedNavigationItem(int position) { - mActionBar.setSelectedNavigationItem(position); - } - - @Override - public int getSelectedNavigationIndex() { - return mActionBar.getSelectedNavigationIndex(); - } - - @Override - public int getNavigationItemCount() { - return mActionBar.getNavigationItemCount(); - } - - @Override - public void setTitle(CharSequence title) { - mActionBar.setTitle(title); - } - - @Override - public void setTitle(int resId) { - mActionBar.setTitle(resId); - } - - @Override - public void setSubtitle(CharSequence subtitle) { - mActionBar.setSubtitle(subtitle); - } - - @Override - public void setSubtitle(int resId) { - mActionBar.setSubtitle(resId); - } - - @Override - public void setDisplayOptions(int options) { - mActionBar.setDisplayOptions(options); - } - - @Override - public void setDisplayOptions(int options, int mask) { - mActionBar.setDisplayOptions(options, mask); - } - - @Override - public void setDisplayUseLogoEnabled(boolean useLogo) { - mActionBar.setDisplayUseLogoEnabled(useLogo); - } - - @Override - public void setDisplayShowHomeEnabled(boolean showHome) { - mActionBar.setDisplayShowHomeEnabled(showHome); - } - - @Override - public void setDisplayHomeAsUpEnabled(boolean showHomeAsUp) { - mActionBar.setDisplayHomeAsUpEnabled(showHomeAsUp); - } - - @Override - public void setDisplayShowTitleEnabled(boolean showTitle) { - mActionBar.setDisplayShowTitleEnabled(showTitle); - } - - @Override - public void setDisplayShowCustomEnabled(boolean showCustom) { - mActionBar.setDisplayShowCustomEnabled(showCustom); - } - - @Override - public void setBackgroundDrawable(Drawable d) { - mActionBar.setBackgroundDrawable(d); - } - - @Override - public void setStackedBackgroundDrawable(Drawable d) { - mActionBar.setStackedBackgroundDrawable(d); - } - - @Override - public void setSplitBackgroundDrawable(Drawable d) { - mActionBar.setSplitBackgroundDrawable(d); - } - - @Override - public View getCustomView() { - return mActionBar.getCustomView(); - } - - @Override - public CharSequence getTitle() { - return mActionBar.getTitle(); - } - - @Override - public CharSequence getSubtitle() { - return mActionBar.getSubtitle(); - } - - @Override - public int getNavigationMode() { - return mActionBar.getNavigationMode(); - } - - @Override - public void setNavigationMode(int mode) { - mActionBar.setNavigationMode(mode); - } - - @Override - public int getDisplayOptions() { - return mActionBar.getDisplayOptions(); - } - - public class TabWrapper extends ActionBar.Tab implements android.app.ActionBar.TabListener { - final android.app.ActionBar.Tab mNativeTab; - private Object mTag; - private TabListener mListener; - - public TabWrapper(android.app.ActionBar.Tab nativeTab) { - mNativeTab = nativeTab; - mNativeTab.setTag(this); - } - - @Override - public int getPosition() { - return mNativeTab.getPosition(); - } - - @Override - public Drawable getIcon() { - return mNativeTab.getIcon(); - } - - @Override - public CharSequence getText() { - return mNativeTab.getText(); - } - - @Override - public Tab setIcon(Drawable icon) { - mNativeTab.setIcon(icon); - return this; - } - - @Override - public Tab setIcon(int resId) { - mNativeTab.setIcon(resId); - return this; - } - - @Override - public Tab setText(CharSequence text) { - mNativeTab.setText(text); - return this; - } - - @Override - public Tab setText(int resId) { - mNativeTab.setText(resId); - return this; - } - - @Override - public Tab setCustomView(View view) { - mNativeTab.setCustomView(view); - return this; - } - - @Override - public Tab setCustomView(int layoutResId) { - mNativeTab.setCustomView(layoutResId); - return this; - } - - @Override - public View getCustomView() { - return mNativeTab.getCustomView(); - } - - @Override - public Tab setTag(Object obj) { - mTag = obj; - return this; - } - - @Override - public Object getTag() { - return mTag; - } - - @Override - public Tab setTabListener(TabListener listener) { - mNativeTab.setTabListener(listener != null ? this : null); - mListener = listener; - return this; - } - - @Override - public void select() { - mNativeTab.select(); - } - - @Override - public Tab setContentDescription(int resId) { - mNativeTab.setContentDescription(resId); - return this; - } - - @Override - public Tab setContentDescription(CharSequence contentDesc) { - mNativeTab.setContentDescription(contentDesc); - return this; - } - - @Override - public CharSequence getContentDescription() { - return mNativeTab.getContentDescription(); - } - - @Override - 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() - .disallowAddToBackStack(); - } - - mListener.onTabReselected(this, trans); - - if (trans != null && !trans.isEmpty()) { - trans.commit(); - } - } - } - - @Override - 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() - .disallowAddToBackStack(); - } - - mListener.onTabSelected(this, mFragmentTransaction); - - if (mFragmentTransaction != null) { - if (!mFragmentTransaction.isEmpty()) { - mFragmentTransaction.commit(); - } - mFragmentTransaction = null; - } - } - } - - @Override - 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() - .disallowAddToBackStack(); - mFragmentTransaction = trans; - } - - mListener.onTabUnselected(this, trans); - } - } - } - - @Override - public Tab newTab() { - return new TabWrapper(mActionBar.newTab()); - } - - @Override - public void addTab(Tab tab) { - mActionBar.addTab(((TabWrapper)tab).mNativeTab); - } - - @Override - public void addTab(Tab tab, boolean setSelected) { - mActionBar.addTab(((TabWrapper)tab).mNativeTab, setSelected); - } - - @Override - public void addTab(Tab tab, int position) { - mActionBar.addTab(((TabWrapper)tab).mNativeTab, position); - } - - @Override - public void addTab(Tab tab, int position, boolean setSelected) { - mActionBar.addTab(((TabWrapper)tab).mNativeTab, position, setSelected); - } - - @Override - public void removeTab(Tab tab) { - mActionBar.removeTab(((TabWrapper)tab).mNativeTab); - } - - @Override - public void removeTabAt(int position) { - mActionBar.removeTabAt(position); - } - - @Override - public void removeAllTabs() { - mActionBar.removeAllTabs(); - } - - @Override - public void selectTab(Tab tab) { - mActionBar.selectTab(((TabWrapper)tab).mNativeTab); - } - - @Override - public Tab getSelectedTab() { - android.app.ActionBar.Tab selected = mActionBar.getSelectedTab(); - return (selected != null) ? (Tab)selected.getTag() : null; - } - - @Override - public Tab getTabAt(int index) { - android.app.ActionBar.Tab selected = mActionBar.getTabAt(index); - return (selected != null) ? (Tab)selected.getTag() : null; - } - - @Override - public int getTabCount() { - return mActionBar.getTabCount(); - } - - @Override - public int getHeight() { - return mActionBar.getHeight(); - } - - @Override - public void show() { - mActionBar.show(); - } - - @Override - public void hide() { - mActionBar.hide(); - } - - @Override - public boolean isShowing() { - return mActionBar.isShowing(); - } - - @Override - public void addOnMenuVisibilityListener(OnMenuVisibilityListener listener) { - mMenuVisibilityListeners.add(listener); - } - - @Override - public void removeOnMenuVisibilityListener(OnMenuVisibilityListener listener) { - mMenuVisibilityListeners.remove(listener); - } - - @Override - public void onMenuVisibilityChanged(boolean isVisible) { - for (OnMenuVisibilityListener listener : mMenuVisibilityListeners) { - listener.onMenuVisibilityChanged(isVisible); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/Animator.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/Animator.java deleted file mode 100755 index 2caf5b4a9..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/Animator.java +++ /dev/null @@ -1,278 +0,0 @@ -/* - * 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.internal.nineoldandroids.animation; - -import java.util.ArrayList; - -import android.view.animation.Interpolator; - -/** - * This is the superclass for classes which provide basic support for animations which can be - * started, ended, and have AnimatorListeners added to them. - */ -public abstract class Animator implements Cloneable { - - - /** - * The set of listeners to be sent events through the life of an animation. - */ - ArrayList mListeners = null; - - /** - * Starts this animation. If the animation has a nonzero startDelay, the animation will start - * running after that delay elapses. A non-delayed animation will have its initial - * value(s) set immediately, followed by calls to - * {@link AnimatorListener#onAnimationStart(Animator)} for any listeners of this animator. - * - *

The animation started by calling this method will be run on the thread that called - * this method. This thread should have a Looper on it (a runtime exception will be thrown if - * this is not the case). Also, if the animation will animate - * properties of objects in the view hierarchy, then the calling thread should be the UI - * thread for that view hierarchy.

- * - */ - public void start() { - } - - /** - * Cancels the animation. Unlike {@link #end()}, cancel() causes the animation to - * stop in its tracks, sending an - * {@link android.animation.Animator.AnimatorListener#onAnimationCancel(Animator)} to - * its listeners, followed by an - * {@link android.animation.Animator.AnimatorListener#onAnimationEnd(Animator)} message. - * - *

This method must be called on the thread that is running the animation.

- */ - public void cancel() { - } - - /** - * Ends the animation. This causes the animation to assign the end value of the property being - * animated, then calling the - * {@link android.animation.Animator.AnimatorListener#onAnimationEnd(Animator)} method on - * its listeners. - * - *

This method must be called on the thread that is running the animation.

- */ - public void end() { - } - - /** - * The amount of time, in milliseconds, to delay starting the animation after - * {@link #start()} is called. - * - * @return the number of milliseconds to delay running the animation - */ - public abstract long getStartDelay(); - - /** - * The amount of time, in milliseconds, to delay starting the animation after - * {@link #start()} is called. - - * @param startDelay The amount of the delay, in milliseconds - */ - public abstract void setStartDelay(long startDelay); - - - /** - * Sets the length of the animation. - * - * @param duration The length of the animation, in milliseconds. - */ - public abstract Animator setDuration(long duration); - - /** - * Gets the length of the animation. - * - * @return The length of the animation, in milliseconds. - */ - public abstract long getDuration(); - - /** - * The time interpolator used in calculating the elapsed fraction of this animation. The - * interpolator determines whether the animation runs with linear or non-linear motion, - * such as acceleration and deceleration. The default value is - * {@link android.view.animation.AccelerateDecelerateInterpolator} - * - * @param value the interpolator to be used by this animation - */ - public abstract void setInterpolator(/*Time*/Interpolator value); - - /** - * Returns whether this Animator is currently running (having been started and gone past any - * initial startDelay period and not yet ended). - * - * @return Whether the Animator is running. - */ - public abstract boolean isRunning(); - - /** - * Returns whether this Animator has been started and not yet ended. This state is a superset - * of the state of {@link #isRunning()}, because an Animator with a nonzero - * {@link #getStartDelay() startDelay} will return true for {@link #isStarted()} during the - * delay phase, whereas {@link #isRunning()} will return true only after the delay phase - * is complete. - * - * @return Whether the Animator has been started and not yet ended. - */ - public boolean isStarted() { - // Default method returns value for isRunning(). Subclasses should override to return a - // real value. - return isRunning(); - } - - /** - * Adds a listener to the set of listeners that are sent events through the life of an - * animation, such as start, repeat, and end. - * - * @param listener the listener to be added to the current set of listeners for this animation. - */ - public void addListener(AnimatorListener listener) { - if (mListeners == null) { - mListeners = new ArrayList(); - } - mListeners.add(listener); - } - - /** - * Removes a listener from the set listening to this animation. - * - * @param listener the listener to be removed from the current set of listeners for this - * animation. - */ - public void removeListener(AnimatorListener listener) { - if (mListeners == null) { - return; - } - mListeners.remove(listener); - if (mListeners.size() == 0) { - mListeners = null; - } - } - - /** - * Gets the set of {@link android.animation.Animator.AnimatorListener} objects that are currently - * listening for events on this Animator object. - * - * @return ArrayList The set of listeners. - */ - public ArrayList getListeners() { - return mListeners; - } - - /** - * Removes all listeners from this object. This is equivalent to calling - * getListeners() followed by calling clear() on the - * returned list of listeners. - */ - public void removeAllListeners() { - if (mListeners != null) { - mListeners.clear(); - mListeners = null; - } - } - - @Override - public Animator clone() { - try { - final Animator anim = (Animator) super.clone(); - if (mListeners != null) { - ArrayList oldListeners = mListeners; - anim.mListeners = new ArrayList(); - int numListeners = oldListeners.size(); - for (int i = 0; i < numListeners; ++i) { - anim.mListeners.add(oldListeners.get(i)); - } - } - return anim; - } catch (CloneNotSupportedException e) { - throw new AssertionError(); - } - } - - /** - * This method tells the object to use appropriate information to extract - * starting values for the animation. For example, a AnimatorSet object will pass - * this call to its child objects to tell them to set up the values. A - * ObjectAnimator object will use the information it has about its target object - * and PropertyValuesHolder objects to get the start values for its properties. - * An ValueAnimator object will ignore the request since it does not have enough - * information (such as a target object) to gather these values. - */ - public void setupStartValues() { - } - - /** - * This method tells the object to use appropriate information to extract - * ending values for the animation. For example, a AnimatorSet object will pass - * this call to its child objects to tell them to set up the values. A - * ObjectAnimator object will use the information it has about its target object - * and PropertyValuesHolder objects to get the start values for its properties. - * An ValueAnimator object will ignore the request since it does not have enough - * information (such as a target object) to gather these values. - */ - public void setupEndValues() { - } - - /** - * Sets the target object whose property will be animated by this animation. Not all subclasses - * operate on target objects (for example, {@link ValueAnimator}, but this method - * is on the superclass for the convenience of dealing generically with those subclasses - * that do handle targets. - * - * @param target The object being animated - */ - public void setTarget(Object target) { - } - - /** - *

An animation listener receives notifications from an animation. - * Notifications indicate animation related events, such as the end or the - * repetition of the animation.

- */ - public static interface AnimatorListener { - /** - *

Notifies the start of the animation.

- * - * @param animation The started animation. - */ - void onAnimationStart(Animator animation); - - /** - *

Notifies the end of the animation. This callback is not invoked - * for animations with repeat count set to INFINITE.

- * - * @param animation The animation which reached its end. - */ - void onAnimationEnd(Animator animation); - - /** - *

Notifies the cancellation of the animation. This callback is not invoked - * for animations with repeat count set to INFINITE.

- * - * @param animation The animation which was canceled. - */ - void onAnimationCancel(Animator animation); - - /** - *

Notifies the repetition of the animation.

- * - * @param animation The animation which was repeated. - */ - void onAnimationRepeat(Animator animation); - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/AnimatorListenerAdapter.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/AnimatorListenerAdapter.java deleted file mode 100755 index 02ddff48d..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/AnimatorListenerAdapter.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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.internal.nineoldandroids.animation; - -/** - * This adapter class provides empty implementations of the methods from {@link android.animation.Animator.AnimatorListener}. - * Any custom listener that cares only about a subset of the methods of this listener can - * simply subclass this adapter class instead of implementing the interface directly. - */ -public abstract class AnimatorListenerAdapter implements Animator.AnimatorListener { - - /** - * {@inheritDoc} - */ - @Override - public void onAnimationCancel(Animator animation) { - } - - /** - * {@inheritDoc} - */ - @Override - public void onAnimationEnd(Animator animation) { - } - - /** - * {@inheritDoc} - */ - @Override - public void onAnimationRepeat(Animator animation) { - } - - /** - * {@inheritDoc} - */ - @Override - public void onAnimationStart(Animator animation) { - } - -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/AnimatorSet.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/AnimatorSet.java deleted file mode 100755 index 3231080c4..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/AnimatorSet.java +++ /dev/null @@ -1,1111 +0,0 @@ -/* - * 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.internal.nineoldandroids.animation; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; - -import android.view.animation.Interpolator; - -/** - * This class plays a set of {@link Animator} objects in the specified order. Animations - * can be set up to play together, in sequence, or after a specified delay. - * - *

There are two different approaches to adding animations to a AnimatorSet: - * either the {@link AnimatorSet#playTogether(Animator[]) playTogether()} or - * {@link AnimatorSet#playSequentially(Animator[]) playSequentially()} methods can be called to add - * a set of animations all at once, or the {@link AnimatorSet#play(Animator)} can be - * used in conjunction with methods in the {@link AnimatorSet.Builder Builder} - * class to add animations - * one by one.

- * - *

It is possible to set up a AnimatorSet with circular dependencies between - * its animations. For example, an animation a1 could be set up to start before animation a2, a2 - * before a3, and a3 before a1. The results of this configuration are undefined, but will typically - * result in none of the affected animations being played. Because of this (and because - * circular dependencies do not make logical sense anyway), circular dependencies - * should be avoided, and the dependency flow of animations should only be in one direction. - */ -@SuppressWarnings("unchecked") -public final class AnimatorSet extends Animator { - - /** - * Internal variables - * NOTE: This object implements the clone() method, making a deep copy of any referenced - * objects. As other non-trivial fields are added to this class, make sure to add logic - * to clone() to make deep copies of them. - */ - - /** - * Tracks animations currently being played, so that we know what to - * cancel or end when cancel() or end() is called on this AnimatorSet - */ - private ArrayList mPlayingSet = new ArrayList(); - - /** - * Contains all nodes, mapped to their respective Animators. When new - * dependency information is added for an Animator, we want to add it - * to a single node representing that Animator, not create a new Node - * if one already exists. - */ - private HashMap mNodeMap = new HashMap(); - - /** - * Set of all nodes created for this AnimatorSet. This list is used upon - * starting the set, and the nodes are placed in sorted order into the - * sortedNodes collection. - */ - private ArrayList mNodes = new ArrayList(); - - /** - * The sorted list of nodes. This is the order in which the animations will - * be played. The details about when exactly they will be played depend - * on the dependency relationships of the nodes. - */ - private ArrayList mSortedNodes = new ArrayList(); - - /** - * Flag indicating whether the nodes should be sorted prior to playing. This - * flag allows us to cache the previous sorted nodes so that if the sequence - * is replayed with no changes, it does not have to re-sort the nodes again. - */ - private boolean mNeedsSort = true; - - private AnimatorSetListener mSetListener = null; - - /** - * Flag indicating that the AnimatorSet has been manually - * terminated (by calling cancel() or end()). - * This flag is used to avoid starting other animations when currently-playing - * child animations of this AnimatorSet end. It also determines whether cancel/end - * notifications are sent out via the normal AnimatorSetListener mechanism. - */ - boolean mTerminated = false; - - /** - * Indicates whether an AnimatorSet has been start()'d, whether or - * not there is a nonzero startDelay. - */ - private boolean mStarted = false; - - // The amount of time in ms to delay starting the animation after start() is called - private long mStartDelay = 0; - - // Animator used for a nonzero startDelay - private ValueAnimator mDelayAnim = null; - - - // How long the child animations should last in ms. The default value is negative, which - // simply means that there is no duration set on the AnimatorSet. When a real duration is - // set, it is passed along to the child animations. - private long mDuration = -1; - - - /** - * Sets up this AnimatorSet to play all of the supplied animations at the same time. - * - * @param items The animations that will be started simultaneously. - */ - public void playTogether(Animator... items) { - if (items != null) { - mNeedsSort = true; - Builder builder = play(items[0]); - for (int i = 1; i < items.length; ++i) { - builder.with(items[i]); - } - } - } - - /** - * Sets up this AnimatorSet to play all of the supplied animations at the same time. - * - * @param items The animations that will be started simultaneously. - */ - public void playTogether(Collection items) { - if (items != null && items.size() > 0) { - mNeedsSort = true; - Builder builder = null; - for (Animator anim : items) { - if (builder == null) { - builder = play(anim); - } else { - builder.with(anim); - } - } - } - } - - /** - * Sets up this AnimatorSet to play each of the supplied animations when the - * previous animation ends. - * - * @param items The animations that will be started one after another. - */ - public void playSequentially(Animator... items) { - if (items != null) { - mNeedsSort = true; - if (items.length == 1) { - play(items[0]); - } else { - for (int i = 0; i < items.length - 1; ++i) { - play(items[i]).before(items[i+1]); - } - } - } - } - - /** - * Sets up this AnimatorSet to play each of the supplied animations when the - * previous animation ends. - * - * @param items The animations that will be started one after another. - */ - public void playSequentially(List items) { - if (items != null && items.size() > 0) { - mNeedsSort = true; - if (items.size() == 1) { - play(items.get(0)); - } else { - for (int i = 0; i < items.size() - 1; ++i) { - play(items.get(i)).before(items.get(i+1)); - } - } - } - } - - /** - * Returns the current list of child Animator objects controlled by this - * AnimatorSet. This is a copy of the internal list; modifications to the returned list - * will not affect the AnimatorSet, although changes to the underlying Animator objects - * will affect those objects being managed by the AnimatorSet. - * - * @return ArrayList The list of child animations of this AnimatorSet. - */ - public ArrayList getChildAnimations() { - ArrayList childList = new ArrayList(); - for (Node node : mNodes) { - childList.add(node.animation); - } - return childList; - } - - /** - * Sets the target object for all current {@link #getChildAnimations() child animations} - * of this AnimatorSet that take targets ({@link ObjectAnimator} and - * AnimatorSet). - * - * @param target The object being animated - */ - @Override - public void setTarget(Object target) { - for (Node node : mNodes) { - Animator animation = node.animation; - if (animation instanceof AnimatorSet) { - ((AnimatorSet)animation).setTarget(target); - } else if (animation instanceof ObjectAnimator) { - ((ObjectAnimator)animation).setTarget(target); - } - } - } - - /** - * Sets the TimeInterpolator for all current {@link #getChildAnimations() child animations} - * of this AnimatorSet. - * - * @param interpolator the interpolator to be used by each child animation of this AnimatorSet - */ - @Override - public void setInterpolator(/*Time*/Interpolator interpolator) { - for (Node node : mNodes) { - node.animation.setInterpolator(interpolator); - } - } - - /** - * This method creates a Builder object, which is used to - * set up playing constraints. This initial play() method - * tells the Builder the animation that is the dependency for - * the succeeding commands to the Builder. For example, - * calling play(a1).with(a2) sets up the AnimatorSet to play - * a1 and a2 at the same time, - * play(a1).before(a2) sets up the AnimatorSet to play - * a1 first, followed by a2, and - * play(a1).after(a2) sets up the AnimatorSet to play - * a2 first, followed by a1. - * - *

Note that play() is the only way to tell the - * Builder the animation upon which the dependency is created, - * so successive calls to the various functions in Builder - * will all refer to the initial parameter supplied in play() - * as the dependency of the other animations. For example, calling - * play(a1).before(a2).before(a3) will play both a2 - * and a3 when a1 ends; it does not set up a dependency between - * a2 and a3.

- * - * @param anim The animation that is the dependency used in later calls to the - * methods in the returned Builder object. A null parameter will result - * in a null Builder return value. - * @return Builder The object that constructs the AnimatorSet based on the dependencies - * outlined in the calls to play and the other methods in the - * BuilderNote that canceling a AnimatorSet also cancels all of the animations that it - * is responsible for.

- */ - @Override - public void cancel() { - mTerminated = true; - if (isStarted()) { - ArrayList tmpListeners = null; - if (mListeners != null) { - tmpListeners = (ArrayList) mListeners.clone(); - for (AnimatorListener listener : tmpListeners) { - listener.onAnimationCancel(this); - } - } - if (mDelayAnim != null && mDelayAnim.isRunning()) { - // If we're currently in the startDelay period, just cancel that animator and - // send out the end event to all listeners - mDelayAnim.cancel(); - } else if (mSortedNodes.size() > 0) { - for (Node node : mSortedNodes) { - node.animation.cancel(); - } - } - if (tmpListeners != null) { - for (AnimatorListener listener : tmpListeners) { - listener.onAnimationEnd(this); - } - } - mStarted = false; - } - } - - /** - * {@inheritDoc} - * - *

Note that ending a AnimatorSet also ends all of the animations that it is - * responsible for.

- */ - @Override - public void end() { - mTerminated = true; - if (isStarted()) { - if (mSortedNodes.size() != mNodes.size()) { - // hasn't been started yet - sort the nodes now, then end them - sortNodes(); - for (Node node : mSortedNodes) { - if (mSetListener == null) { - mSetListener = new AnimatorSetListener(this); - } - node.animation.addListener(mSetListener); - } - } - if (mDelayAnim != null) { - mDelayAnim.cancel(); - } - if (mSortedNodes.size() > 0) { - for (Node node : mSortedNodes) { - node.animation.end(); - } - } - if (mListeners != null) { - ArrayList tmpListeners = - (ArrayList) mListeners.clone(); - for (AnimatorListener listener : tmpListeners) { - listener.onAnimationEnd(this); - } - } - mStarted = false; - } - } - - /** - * Returns true if any of the child animations of this AnimatorSet have been started and have - * not yet ended. - * @return Whether this AnimatorSet has been started and has not yet ended. - */ - @Override - public boolean isRunning() { - for (Node node : mNodes) { - if (node.animation.isRunning()) { - return true; - } - } - return false; - } - - @Override - public boolean isStarted() { - return mStarted; - } - - /** - * The amount of time, in milliseconds, to delay starting the animation after - * {@link #start()} is called. - * - * @return the number of milliseconds to delay running the animation - */ - @Override - public long getStartDelay() { - return mStartDelay; - } - - /** - * The amount of time, in milliseconds, to delay starting the animation after - * {@link #start()} is called. - - * @param startDelay The amount of the delay, in milliseconds - */ - @Override - public void setStartDelay(long startDelay) { - mStartDelay = startDelay; - } - - /** - * Gets the length of each of the child animations of this AnimatorSet. This value may - * be less than 0, which indicates that no duration has been set on this AnimatorSet - * and each of the child animations will use their own duration. - * - * @return The length of the animation, in milliseconds, of each of the child - * animations of this AnimatorSet. - */ - @Override - public long getDuration() { - return mDuration; - } - - /** - * Sets the length of each of the current child animations of this AnimatorSet. By default, - * each child animation will use its own duration. If the duration is set on the AnimatorSet, - * then each child animation inherits this duration. - * - * @param duration The length of the animation, in milliseconds, of each of the child - * animations of this AnimatorSet. - */ - @Override - public AnimatorSet setDuration(long duration) { - if (duration < 0) { - throw new IllegalArgumentException("duration must be a value of zero or greater"); - } - for (Node node : mNodes) { - // TODO: don't set the duration of the timing-only nodes created by AnimatorSet to - // insert "play-after" delays - node.animation.setDuration(duration); - } - mDuration = duration; - return this; - } - - @Override - public void setupStartValues() { - for (Node node : mNodes) { - node.animation.setupStartValues(); - } - } - - @Override - public void setupEndValues() { - for (Node node : mNodes) { - node.animation.setupEndValues(); - } - } - - /** - * {@inheritDoc} - * - *

Starting this AnimatorSet will, in turn, start the animations for which - * it is responsible. The details of when exactly those animations are started depends on - * the dependency relationships that have been set up between the animations. - */ - @Override - public void start() { - mTerminated = false; - mStarted = true; - - // First, sort the nodes (if necessary). This will ensure that sortedNodes - // contains the animation nodes in the correct order. - sortNodes(); - - int numSortedNodes = mSortedNodes.size(); - for (int i = 0; i < numSortedNodes; ++i) { - Node node = mSortedNodes.get(i); - // First, clear out the old listeners - ArrayList oldListeners = node.animation.getListeners(); - if (oldListeners != null && oldListeners.size() > 0) { - final ArrayList clonedListeners = new - ArrayList(oldListeners); - - for (AnimatorListener listener : clonedListeners) { - if (listener instanceof DependencyListener || - listener instanceof AnimatorSetListener) { - node.animation.removeListener(listener); - } - } - } - } - - // nodesToStart holds the list of nodes to be started immediately. We don't want to - // start the animations in the loop directly because we first need to set up - // dependencies on all of the nodes. For example, we don't want to start an animation - // when some other animation also wants to start when the first animation begins. - final ArrayList nodesToStart = new ArrayList(); - for (int i = 0; i < numSortedNodes; ++i) { - Node node = mSortedNodes.get(i); - if (mSetListener == null) { - mSetListener = new AnimatorSetListener(this); - } - if (node.dependencies == null || node.dependencies.size() == 0) { - nodesToStart.add(node); - } else { - int numDependencies = node.dependencies.size(); - for (int j = 0; j < numDependencies; ++j) { - Dependency dependency = node.dependencies.get(j); - dependency.node.animation.addListener( - new DependencyListener(this, node, dependency.rule)); - } - node.tmpDependencies = (ArrayList) node.dependencies.clone(); - } - node.animation.addListener(mSetListener); - } - // Now that all dependencies are set up, start the animations that should be started. - if (mStartDelay <= 0) { - for (Node node : nodesToStart) { - node.animation.start(); - mPlayingSet.add(node.animation); - } - } else { - mDelayAnim = ValueAnimator.ofFloat(0f, 1f); - mDelayAnim.setDuration(mStartDelay); - mDelayAnim.addListener(new AnimatorListenerAdapter() { - boolean canceled = false; - public void onAnimationCancel(Animator anim) { - canceled = true; - } - public void onAnimationEnd(Animator anim) { - if (!canceled) { - int numNodes = nodesToStart.size(); - for (int i = 0; i < numNodes; ++i) { - Node node = nodesToStart.get(i); - node.animation.start(); - mPlayingSet.add(node.animation); - } - } - } - }); - mDelayAnim.start(); - } - if (mListeners != null) { - ArrayList tmpListeners = - (ArrayList) mListeners.clone(); - int numListeners = tmpListeners.size(); - for (int i = 0; i < numListeners; ++i) { - tmpListeners.get(i).onAnimationStart(this); - } - } - if (mNodes.size() == 0 && mStartDelay == 0) { - // Handle unusual case where empty AnimatorSet is started - should send out - // end event immediately since the event will not be sent out at all otherwise - mStarted = false; - if (mListeners != null) { - ArrayList tmpListeners = - (ArrayList) mListeners.clone(); - int numListeners = tmpListeners.size(); - for (int i = 0; i < numListeners; ++i) { - tmpListeners.get(i).onAnimationEnd(this); - } - } - } - } - - @Override - public AnimatorSet clone() { - final AnimatorSet anim = (AnimatorSet) super.clone(); - /* - * The basic clone() operation copies all items. This doesn't work very well for - * AnimatorSet, because it will copy references that need to be recreated and state - * that may not apply. What we need to do now is put the clone in an uninitialized - * state, with fresh, empty data structures. Then we will build up the nodes list - * manually, as we clone each Node (and its animation). The clone will then be sorted, - * and will populate any appropriate lists, when it is started. - */ - anim.mNeedsSort = true; - anim.mTerminated = false; - anim.mStarted = false; - anim.mPlayingSet = new ArrayList(); - anim.mNodeMap = new HashMap(); - anim.mNodes = new ArrayList(); - anim.mSortedNodes = new ArrayList(); - - // Walk through the old nodes list, cloning each node and adding it to the new nodemap. - // One problem is that the old node dependencies point to nodes in the old AnimatorSet. - // We need to track the old/new nodes in order to reconstruct the dependencies in the clone. - HashMap nodeCloneMap = new HashMap(); // - for (Node node : mNodes) { - Node nodeClone = node.clone(); - nodeCloneMap.put(node, nodeClone); - anim.mNodes.add(nodeClone); - anim.mNodeMap.put(nodeClone.animation, nodeClone); - // Clear out the dependencies in the clone; we'll set these up manually later - nodeClone.dependencies = null; - nodeClone.tmpDependencies = null; - nodeClone.nodeDependents = null; - nodeClone.nodeDependencies = null; - // clear out any listeners that were set up by the AnimatorSet; these will - // be set up when the clone's nodes are sorted - ArrayList cloneListeners = nodeClone.animation.getListeners(); - if (cloneListeners != null) { - ArrayList listenersToRemove = null; - for (AnimatorListener listener : cloneListeners) { - if (listener instanceof AnimatorSetListener) { - if (listenersToRemove == null) { - listenersToRemove = new ArrayList(); - } - listenersToRemove.add(listener); - } - } - if (listenersToRemove != null) { - for (AnimatorListener listener : listenersToRemove) { - cloneListeners.remove(listener); - } - } - } - } - // Now that we've cloned all of the nodes, we're ready to walk through their - // dependencies, mapping the old dependencies to the new nodes - for (Node node : mNodes) { - Node nodeClone = nodeCloneMap.get(node); - if (node.dependencies != null) { - for (Dependency dependency : node.dependencies) { - Node clonedDependencyNode = nodeCloneMap.get(dependency.node); - Dependency cloneDependency = new Dependency(clonedDependencyNode, - dependency.rule); - nodeClone.addDependency(cloneDependency); - } - } - } - - return anim; - } - - /** - * This class is the mechanism by which animations are started based on events in other - * animations. If an animation has multiple dependencies on other animations, then - * all dependencies must be satisfied before the animation is started. - */ - private static class DependencyListener implements AnimatorListener { - - private AnimatorSet mAnimatorSet; - - // The node upon which the dependency is based. - private Node mNode; - - // The Dependency rule (WITH or AFTER) that the listener should wait for on - // the node - private int mRule; - - public DependencyListener(AnimatorSet animatorSet, Node node, int rule) { - this.mAnimatorSet = animatorSet; - this.mNode = node; - this.mRule = rule; - } - - /** - * Ignore cancel events for now. We may want to handle this eventually, - * to prevent follow-on animations from running when some dependency - * animation is canceled. - */ - public void onAnimationCancel(Animator animation) { - } - - /** - * An end event is received - see if this is an event we are listening for - */ - public void onAnimationEnd(Animator animation) { - if (mRule == Dependency.AFTER) { - startIfReady(animation); - } - } - - /** - * Ignore repeat events for now - */ - public void onAnimationRepeat(Animator animation) { - } - - /** - * A start event is received - see if this is an event we are listening for - */ - public void onAnimationStart(Animator animation) { - if (mRule == Dependency.WITH) { - startIfReady(animation); - } - } - - /** - * Check whether the event received is one that the node was waiting for. - * If so, mark it as complete and see whether it's time to start - * the animation. - * @param dependencyAnimation the animation that sent the event. - */ - private void startIfReady(Animator dependencyAnimation) { - if (mAnimatorSet.mTerminated) { - // if the parent AnimatorSet was canceled, then don't start any dependent anims - return; - } - Dependency dependencyToRemove = null; - int numDependencies = mNode.tmpDependencies.size(); - for (int i = 0; i < numDependencies; ++i) { - Dependency dependency = mNode.tmpDependencies.get(i); - if (dependency.rule == mRule && - dependency.node.animation == dependencyAnimation) { - // rule fired - remove the dependency and listener and check to - // see whether it's time to start the animation - dependencyToRemove = dependency; - dependencyAnimation.removeListener(this); - break; - } - } - mNode.tmpDependencies.remove(dependencyToRemove); - if (mNode.tmpDependencies.size() == 0) { - // all dependencies satisfied: start the animation - mNode.animation.start(); - mAnimatorSet.mPlayingSet.add(mNode.animation); - } - } - - } - - private class AnimatorSetListener implements AnimatorListener { - - private AnimatorSet mAnimatorSet; - - AnimatorSetListener(AnimatorSet animatorSet) { - mAnimatorSet = animatorSet; - } - - public void onAnimationCancel(Animator animation) { - if (!mTerminated) { - // Listeners are already notified of the AnimatorSet canceling in cancel(). - // The logic below only kicks in when animations end normally - if (mPlayingSet.size() == 0) { - if (mListeners != null) { - int numListeners = mListeners.size(); - for (int i = 0; i < numListeners; ++i) { - mListeners.get(i).onAnimationCancel(mAnimatorSet); - } - } - } - } - } - - public void onAnimationEnd(Animator animation) { - animation.removeListener(this); - mPlayingSet.remove(animation); - Node animNode = mAnimatorSet.mNodeMap.get(animation); - animNode.done = true; - if (!mTerminated) { - // Listeners are already notified of the AnimatorSet ending in cancel() or - // end(); the logic below only kicks in when animations end normally - ArrayList sortedNodes = mAnimatorSet.mSortedNodes; - boolean allDone = true; - int numSortedNodes = sortedNodes.size(); - for (int i = 0; i < numSortedNodes; ++i) { - if (!sortedNodes.get(i).done) { - allDone = false; - break; - } - } - if (allDone) { - // If this was the last child animation to end, then notify listeners that this - // AnimatorSet has ended - if (mListeners != null) { - ArrayList tmpListeners = - (ArrayList) mListeners.clone(); - int numListeners = tmpListeners.size(); - for (int i = 0; i < numListeners; ++i) { - tmpListeners.get(i).onAnimationEnd(mAnimatorSet); - } - } - mAnimatorSet.mStarted = false; - } - } - } - - // Nothing to do - public void onAnimationRepeat(Animator animation) { - } - - // Nothing to do - public void onAnimationStart(Animator animation) { - } - - } - - /** - * This method sorts the current set of nodes, if needed. The sort is a simple - * DependencyGraph sort, which goes like this: - * - All nodes without dependencies become 'roots' - * - while roots list is not null - * - for each root r - * - add r to sorted list - * - remove r as a dependency from any other node - * - any nodes with no dependencies are added to the roots list - */ - private void sortNodes() { - if (mNeedsSort) { - mSortedNodes.clear(); - ArrayList roots = new ArrayList(); - int numNodes = mNodes.size(); - for (int i = 0; i < numNodes; ++i) { - Node node = mNodes.get(i); - if (node.dependencies == null || node.dependencies.size() == 0) { - roots.add(node); - } - } - ArrayList tmpRoots = new ArrayList(); - while (roots.size() > 0) { - int numRoots = roots.size(); - for (int i = 0; i < numRoots; ++i) { - Node root = roots.get(i); - mSortedNodes.add(root); - if (root.nodeDependents != null) { - int numDependents = root.nodeDependents.size(); - for (int j = 0; j < numDependents; ++j) { - Node node = root.nodeDependents.get(j); - node.nodeDependencies.remove(root); - if (node.nodeDependencies.size() == 0) { - tmpRoots.add(node); - } - } - } - } - roots.clear(); - roots.addAll(tmpRoots); - tmpRoots.clear(); - } - mNeedsSort = false; - if (mSortedNodes.size() != mNodes.size()) { - throw new IllegalStateException("Circular dependencies cannot exist" - + " in AnimatorSet"); - } - } else { - // Doesn't need sorting, but still need to add in the nodeDependencies list - // because these get removed as the event listeners fire and the dependencies - // are satisfied - int numNodes = mNodes.size(); - for (int i = 0; i < numNodes; ++i) { - Node node = mNodes.get(i); - if (node.dependencies != null && node.dependencies.size() > 0) { - int numDependencies = node.dependencies.size(); - for (int j = 0; j < numDependencies; ++j) { - Dependency dependency = node.dependencies.get(j); - if (node.nodeDependencies == null) { - node.nodeDependencies = new ArrayList(); - } - if (!node.nodeDependencies.contains(dependency.node)) { - node.nodeDependencies.add(dependency.node); - } - } - } - // nodes are 'done' by default; they become un-done when started, and done - // again when ended - node.done = false; - } - } - } - - /** - * Dependency holds information about the node that some other node is - * dependent upon and the nature of that dependency. - * - */ - private static class Dependency { - static final int WITH = 0; // dependent node must start with this dependency node - static final int AFTER = 1; // dependent node must start when this dependency node finishes - - // The node that the other node with this Dependency is dependent upon - public Node node; - - // The nature of the dependency (WITH or AFTER) - public int rule; - - public Dependency(Node node, int rule) { - this.node = node; - this.rule = rule; - } - } - - /** - * A Node is an embodiment of both the Animator that it wraps as well as - * any dependencies that are associated with that Animation. This includes - * both dependencies upon other nodes (in the dependencies list) as - * well as dependencies of other nodes upon this (in the nodeDependents list). - */ - private static class Node implements Cloneable { - public Animator animation; - - /** - * These are the dependencies that this node's animation has on other - * nodes. For example, if this node's animation should begin with some - * other animation ends, then there will be an item in this node's - * dependencies list for that other animation's node. - */ - public ArrayList dependencies = null; - - /** - * tmpDependencies is a runtime detail. We use the dependencies list for sorting. - * But we also use the list to keep track of when multiple dependencies are satisfied, - * but removing each dependency as it is satisfied. We do not want to remove - * the dependency itself from the list, because we need to retain that information - * if the AnimatorSet is launched in the future. So we create a copy of the dependency - * list when the AnimatorSet starts and use this tmpDependencies list to track the - * list of satisfied dependencies. - */ - public ArrayList tmpDependencies = null; - - /** - * nodeDependencies is just a list of the nodes that this Node is dependent upon. - * This information is used in sortNodes(), to determine when a node is a root. - */ - public ArrayList nodeDependencies = null; - - /** - * nodeDepdendents is the list of nodes that have this node as a dependency. This - * is a utility field used in sortNodes to facilitate removing this node as a - * dependency when it is a root node. - */ - public ArrayList nodeDependents = null; - - /** - * Flag indicating whether the animation in this node is finished. This flag - * is used by AnimatorSet to check, as each animation ends, whether all child animations - * are done and it's time to send out an end event for the entire AnimatorSet. - */ - public boolean done = false; - - /** - * Constructs the Node with the animation that it encapsulates. A Node has no - * dependencies by default; dependencies are added via the addDependency() - * method. - * - * @param animation The animation that the Node encapsulates. - */ - public Node(Animator animation) { - this.animation = animation; - } - - /** - * Add a dependency to this Node. The dependency includes information about the - * node that this node is dependency upon and the nature of the dependency. - * @param dependency - */ - public void addDependency(Dependency dependency) { - if (dependencies == null) { - dependencies = new ArrayList(); - nodeDependencies = new ArrayList(); - } - dependencies.add(dependency); - if (!nodeDependencies.contains(dependency.node)) { - nodeDependencies.add(dependency.node); - } - Node dependencyNode = dependency.node; - if (dependencyNode.nodeDependents == null) { - dependencyNode.nodeDependents = new ArrayList(); - } - dependencyNode.nodeDependents.add(this); - } - - @Override - public Node clone() { - try { - Node node = (Node) super.clone(); - node.animation = animation.clone(); - return node; - } catch (CloneNotSupportedException e) { - throw new AssertionError(); - } - } - } - - /** - * The Builder object is a utility class to facilitate adding animations to a - * AnimatorSet along with the relationships between the various animations. The - * intention of the Builder methods, along with the {@link - * AnimatorSet#play(Animator) play()} method of AnimatorSet is to make it possible - * to express the dependency relationships of animations in a natural way. Developers can also - * use the {@link AnimatorSet#playTogether(Animator[]) playTogether()} and {@link - * AnimatorSet#playSequentially(Animator[]) playSequentially()} methods if these suit the need, - * but it might be easier in some situations to express the AnimatorSet of animations in pairs. - *

- *

The Builder object cannot be constructed directly, but is rather constructed - * internally via a call to {@link AnimatorSet#play(Animator)}.

- *

- *

For example, this sets up a AnimatorSet to play anim1 and anim2 at the same time, anim3 to - * play when anim2 finishes, and anim4 to play when anim3 finishes:

- *
-     *     AnimatorSet s = new AnimatorSet();
-     *     s.play(anim1).with(anim2);
-     *     s.play(anim2).before(anim3);
-     *     s.play(anim4).after(anim3);
-     * 
- *

- *

Note in the example that both {@link Builder#before(Animator)} and {@link - * Builder#after(Animator)} are used. These are just different ways of expressing the same - * relationship and are provided to make it easier to say things in a way that is more natural, - * depending on the situation.

- *

- *

It is possible to make several calls into the same Builder object to express - * multiple relationships. However, note that it is only the animation passed into the initial - * {@link AnimatorSet#play(Animator)} method that is the dependency in any of the successive - * calls to the Builder object. For example, the following code starts both anim2 - * and anim3 when anim1 ends; there is no direct dependency relationship between anim2 and - * anim3: - *

-     *   AnimatorSet s = new AnimatorSet();
-     *   s.play(anim1).before(anim2).before(anim3);
-     * 
- * If the desired result is to play anim1 then anim2 then anim3, this code expresses the - * relationship correctly:

- *
-     *   AnimatorSet s = new AnimatorSet();
-     *   s.play(anim1).before(anim2);
-     *   s.play(anim2).before(anim3);
-     * 
- *

- *

Note that it is possible to express relationships that cannot be resolved and will not - * result in sensible results. For example, play(anim1).after(anim1) makes no - * sense. In general, circular dependencies like this one (or more indirect ones where a depends - * on b, which depends on c, which depends on a) should be avoided. Only create AnimatorSets - * that can boil down to a simple, one-way relationship of animations starting with, before, and - * after other, different, animations.

- */ - public class Builder { - - /** - * This tracks the current node being processed. It is supplied to the play() method - * of AnimatorSet and passed into the constructor of Builder. - */ - private Node mCurrentNode; - - /** - * package-private constructor. Builders are only constructed by AnimatorSet, when the - * play() method is called. - * - * @param anim The animation that is the dependency for the other animations passed into - * the other methods of this Builder object. - */ - Builder(Animator anim) { - mCurrentNode = mNodeMap.get(anim); - if (mCurrentNode == null) { - mCurrentNode = new Node(anim); - mNodeMap.put(anim, mCurrentNode); - mNodes.add(mCurrentNode); - } - } - - /** - * Sets up the given animation to play at the same time as the animation supplied in the - * {@link AnimatorSet#play(Animator)} call that created this Builder object. - * - * @param anim The animation that will play when the animation supplied to the - * {@link AnimatorSet#play(Animator)} method starts. - */ - public Builder with(Animator anim) { - Node node = mNodeMap.get(anim); - if (node == null) { - node = new Node(anim); - mNodeMap.put(anim, node); - mNodes.add(node); - } - Dependency dependency = new Dependency(mCurrentNode, Dependency.WITH); - node.addDependency(dependency); - return this; - } - - /** - * Sets up the given animation to play when the animation supplied in the - * {@link AnimatorSet#play(Animator)} call that created this Builder object - * ends. - * - * @param anim The animation that will play when the animation supplied to the - * {@link AnimatorSet#play(Animator)} method ends. - */ - public Builder before(Animator anim) { - Node node = mNodeMap.get(anim); - if (node == null) { - node = new Node(anim); - mNodeMap.put(anim, node); - mNodes.add(node); - } - Dependency dependency = new Dependency(mCurrentNode, Dependency.AFTER); - node.addDependency(dependency); - return this; - } - - /** - * Sets up the given animation to play when the animation supplied in the - * {@link AnimatorSet#play(Animator)} call that created this Builder object - * to start when the animation supplied in this method call ends. - * - * @param anim The animation whose end will cause the animation supplied to the - * {@link AnimatorSet#play(Animator)} method to play. - */ - public Builder after(Animator anim) { - Node node = mNodeMap.get(anim); - if (node == null) { - node = new Node(anim); - mNodeMap.put(anim, node); - mNodes.add(node); - } - Dependency dependency = new Dependency(node, Dependency.AFTER); - mCurrentNode.addDependency(dependency); - return this; - } - - /** - * Sets up the animation supplied in the - * {@link AnimatorSet#play(Animator)} call that created this Builder object - * to play when the given amount of time elapses. - * - * @param delay The number of milliseconds that should elapse before the - * animation starts. - */ - public Builder after(long delay) { - // setup dummy ValueAnimator just to run the clock - ValueAnimator anim = ValueAnimator.ofFloat(0f, 1f); - anim.setDuration(delay); - after(anim); - return this; - } - - } - -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/FloatEvaluator.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/FloatEvaluator.java deleted file mode 100755 index e41019364..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/FloatEvaluator.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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.internal.nineoldandroids.animation; - -/** - * This evaluator can be used to perform type interpolation between float values. - */ -public class FloatEvaluator implements TypeEvaluator { - - /** - * This function returns the result of linearly interpolating the start and end values, with - * fraction representing the proportion between the start and end values. The - * calculation is a simple parametric calculation: result = x0 + t * (v1 - v0), - * where x0 is startValue, x1 is endValue, - * and t is fraction. - * - * @param fraction The fraction from the starting to the ending values - * @param startValue The start value; should be of type float or - * Float - * @param endValue The end value; should be of type float or Float - * @return A linear interpolation between the start and end values, given the - * fraction parameter. - */ - public Float evaluate(float fraction, Number startValue, Number endValue) { - float startFloat = startValue.floatValue(); - return startFloat + fraction * (endValue.floatValue() - startFloat); - } -} \ No newline at end of file diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/FloatKeyframeSet.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/FloatKeyframeSet.java deleted file mode 100755 index 6d9dafa7a..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/FloatKeyframeSet.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * 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.internal.nineoldandroids.animation; - -import java.util.ArrayList; -import android.view.animation.Interpolator; - -import com.actionbarsherlock.internal.nineoldandroids.animation.Keyframe.FloatKeyframe; - -/** - * This class holds a collection of FloatKeyframe objects and is called by ValueAnimator to calculate - * values between those keyframes for a given animation. The class internal to the animation - * package because it is an implementation detail of how Keyframes are stored and used. - * - *

This type-specific subclass of KeyframeSet, along with the other type-specific subclass for - * int, exists to speed up the getValue() method when there is no custom - * TypeEvaluator set for the animation, so that values can be calculated without autoboxing to the - * Object equivalents of these primitive types.

- */ -@SuppressWarnings("unchecked") -class FloatKeyframeSet extends KeyframeSet { - private float firstValue; - private float lastValue; - private float deltaValue; - private boolean firstTime = true; - - public FloatKeyframeSet(FloatKeyframe... keyframes) { - super(keyframes); - } - - @Override - public Object getValue(float fraction) { - return getFloatValue(fraction); - } - - @Override - public FloatKeyframeSet clone() { - ArrayList keyframes = mKeyframes; - int numKeyframes = mKeyframes.size(); - FloatKeyframe[] newKeyframes = new FloatKeyframe[numKeyframes]; - for (int i = 0; i < numKeyframes; ++i) { - newKeyframes[i] = (FloatKeyframe) keyframes.get(i).clone(); - } - FloatKeyframeSet newSet = new FloatKeyframeSet(newKeyframes); - return newSet; - } - - public float getFloatValue(float fraction) { - if (mNumKeyframes == 2) { - if (firstTime) { - firstTime = false; - firstValue = ((FloatKeyframe) mKeyframes.get(0)).getFloatValue(); - lastValue = ((FloatKeyframe) mKeyframes.get(1)).getFloatValue(); - deltaValue = lastValue - firstValue; - } - if (mInterpolator != null) { - fraction = mInterpolator.getInterpolation(fraction); - } - if (mEvaluator == null) { - return firstValue + fraction * deltaValue; - } else { - return ((Number)mEvaluator.evaluate(fraction, firstValue, lastValue)).floatValue(); - } - } - if (fraction <= 0f) { - final FloatKeyframe prevKeyframe = (FloatKeyframe) mKeyframes.get(0); - final FloatKeyframe nextKeyframe = (FloatKeyframe) mKeyframes.get(1); - float prevValue = prevKeyframe.getFloatValue(); - float nextValue = nextKeyframe.getFloatValue(); - float prevFraction = prevKeyframe.getFraction(); - float nextFraction = nextKeyframe.getFraction(); - final /*Time*/Interpolator interpolator = nextKeyframe.getInterpolator(); - if (interpolator != null) { - fraction = interpolator.getInterpolation(fraction); - } - float intervalFraction = (fraction - prevFraction) / (nextFraction - prevFraction); - return mEvaluator == null ? - prevValue + intervalFraction * (nextValue - prevValue) : - ((Number)mEvaluator.evaluate(intervalFraction, prevValue, nextValue)). - floatValue(); - } else if (fraction >= 1f) { - final FloatKeyframe prevKeyframe = (FloatKeyframe) mKeyframes.get(mNumKeyframes - 2); - final FloatKeyframe nextKeyframe = (FloatKeyframe) mKeyframes.get(mNumKeyframes - 1); - float prevValue = prevKeyframe.getFloatValue(); - float nextValue = nextKeyframe.getFloatValue(); - float prevFraction = prevKeyframe.getFraction(); - float nextFraction = nextKeyframe.getFraction(); - final /*Time*/Interpolator interpolator = nextKeyframe.getInterpolator(); - if (interpolator != null) { - fraction = interpolator.getInterpolation(fraction); - } - float intervalFraction = (fraction - prevFraction) / (nextFraction - prevFraction); - return mEvaluator == null ? - prevValue + intervalFraction * (nextValue - prevValue) : - ((Number)mEvaluator.evaluate(intervalFraction, prevValue, nextValue)). - floatValue(); - } - FloatKeyframe prevKeyframe = (FloatKeyframe) mKeyframes.get(0); - for (int i = 1; i < mNumKeyframes; ++i) { - FloatKeyframe nextKeyframe = (FloatKeyframe) mKeyframes.get(i); - if (fraction < nextKeyframe.getFraction()) { - final /*Time*/Interpolator interpolator = nextKeyframe.getInterpolator(); - if (interpolator != null) { - fraction = interpolator.getInterpolation(fraction); - } - float intervalFraction = (fraction - prevKeyframe.getFraction()) / - (nextKeyframe.getFraction() - prevKeyframe.getFraction()); - float prevValue = prevKeyframe.getFloatValue(); - float nextValue = nextKeyframe.getFloatValue(); - return mEvaluator == null ? - prevValue + intervalFraction * (nextValue - prevValue) : - ((Number)mEvaluator.evaluate(intervalFraction, prevValue, nextValue)). - floatValue(); - } - prevKeyframe = nextKeyframe; - } - // shouldn't get here - return ((Number)mKeyframes.get(mNumKeyframes - 1).getValue()).floatValue(); - } - -} - diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/IntEvaluator.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/IntEvaluator.java deleted file mode 100755 index ed5e79ec6..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/IntEvaluator.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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.internal.nineoldandroids.animation; - -/** - * This evaluator can be used to perform type interpolation between int values. - */ -public class IntEvaluator implements TypeEvaluator { - - /** - * This function returns the result of linearly interpolating the start and end values, with - * fraction representing the proportion between the start and end values. The - * calculation is a simple parametric calculation: result = x0 + t * (v1 - v0), - * where x0 is startValue, x1 is endValue, - * and t is fraction. - * - * @param fraction The fraction from the starting to the ending values - * @param startValue The start value; should be of type int or - * Integer - * @param endValue The end value; should be of type int or Integer - * @return A linear interpolation between the start and end values, given the - * fraction parameter. - */ - public Integer evaluate(float fraction, Integer startValue, Integer endValue) { - int startInt = startValue; - return (int)(startInt + fraction * (endValue - startInt)); - } -} \ No newline at end of file diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/IntKeyframeSet.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/IntKeyframeSet.java deleted file mode 100755 index e9215e7f8..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/IntKeyframeSet.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * 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.internal.nineoldandroids.animation; - -import java.util.ArrayList; -import android.view.animation.Interpolator; - -import com.actionbarsherlock.internal.nineoldandroids.animation.Keyframe.IntKeyframe; - -/** - * This class holds a collection of IntKeyframe objects and is called by ValueAnimator to calculate - * values between those keyframes for a given animation. The class internal to the animation - * package because it is an implementation detail of how Keyframes are stored and used. - * - *

This type-specific subclass of KeyframeSet, along with the other type-specific subclass for - * float, exists to speed up the getValue() method when there is no custom - * TypeEvaluator set for the animation, so that values can be calculated without autoboxing to the - * Object equivalents of these primitive types.

- */ -@SuppressWarnings("unchecked") -class IntKeyframeSet extends KeyframeSet { - private int firstValue; - private int lastValue; - private int deltaValue; - private boolean firstTime = true; - - public IntKeyframeSet(IntKeyframe... keyframes) { - super(keyframes); - } - - @Override - public Object getValue(float fraction) { - return getIntValue(fraction); - } - - @Override - public IntKeyframeSet clone() { - ArrayList keyframes = mKeyframes; - int numKeyframes = mKeyframes.size(); - IntKeyframe[] newKeyframes = new IntKeyframe[numKeyframes]; - for (int i = 0; i < numKeyframes; ++i) { - newKeyframes[i] = (IntKeyframe) keyframes.get(i).clone(); - } - IntKeyframeSet newSet = new IntKeyframeSet(newKeyframes); - return newSet; - } - - public int getIntValue(float fraction) { - if (mNumKeyframes == 2) { - if (firstTime) { - firstTime = false; - firstValue = ((IntKeyframe) mKeyframes.get(0)).getIntValue(); - lastValue = ((IntKeyframe) mKeyframes.get(1)).getIntValue(); - deltaValue = lastValue - firstValue; - } - if (mInterpolator != null) { - fraction = mInterpolator.getInterpolation(fraction); - } - if (mEvaluator == null) { - return firstValue + (int)(fraction * deltaValue); - } else { - return ((Number)mEvaluator.evaluate(fraction, firstValue, lastValue)).intValue(); - } - } - if (fraction <= 0f) { - final IntKeyframe prevKeyframe = (IntKeyframe) mKeyframes.get(0); - final IntKeyframe nextKeyframe = (IntKeyframe) mKeyframes.get(1); - int prevValue = prevKeyframe.getIntValue(); - int nextValue = nextKeyframe.getIntValue(); - float prevFraction = prevKeyframe.getFraction(); - float nextFraction = nextKeyframe.getFraction(); - final /*Time*/Interpolator interpolator = nextKeyframe.getInterpolator(); - if (interpolator != null) { - fraction = interpolator.getInterpolation(fraction); - } - float intervalFraction = (fraction - prevFraction) / (nextFraction - prevFraction); - return mEvaluator == null ? - prevValue + (int)(intervalFraction * (nextValue - prevValue)) : - ((Number)mEvaluator.evaluate(intervalFraction, prevValue, nextValue)). - intValue(); - } else if (fraction >= 1f) { - final IntKeyframe prevKeyframe = (IntKeyframe) mKeyframes.get(mNumKeyframes - 2); - final IntKeyframe nextKeyframe = (IntKeyframe) mKeyframes.get(mNumKeyframes - 1); - int prevValue = prevKeyframe.getIntValue(); - int nextValue = nextKeyframe.getIntValue(); - float prevFraction = prevKeyframe.getFraction(); - float nextFraction = nextKeyframe.getFraction(); - final /*Time*/Interpolator interpolator = nextKeyframe.getInterpolator(); - if (interpolator != null) { - fraction = interpolator.getInterpolation(fraction); - } - float intervalFraction = (fraction - prevFraction) / (nextFraction - prevFraction); - return mEvaluator == null ? - prevValue + (int)(intervalFraction * (nextValue - prevValue)) : - ((Number)mEvaluator.evaluate(intervalFraction, prevValue, nextValue)).intValue(); - } - IntKeyframe prevKeyframe = (IntKeyframe) mKeyframes.get(0); - for (int i = 1; i < mNumKeyframes; ++i) { - IntKeyframe nextKeyframe = (IntKeyframe) mKeyframes.get(i); - if (fraction < nextKeyframe.getFraction()) { - final /*Time*/Interpolator interpolator = nextKeyframe.getInterpolator(); - if (interpolator != null) { - fraction = interpolator.getInterpolation(fraction); - } - float intervalFraction = (fraction - prevKeyframe.getFraction()) / - (nextKeyframe.getFraction() - prevKeyframe.getFraction()); - int prevValue = prevKeyframe.getIntValue(); - int nextValue = nextKeyframe.getIntValue(); - return mEvaluator == null ? - prevValue + (int)(intervalFraction * (nextValue - prevValue)) : - ((Number)mEvaluator.evaluate(intervalFraction, prevValue, nextValue)). - intValue(); - } - prevKeyframe = nextKeyframe; - } - // shouldn't get here - return ((Number)mKeyframes.get(mNumKeyframes - 1).getValue()).intValue(); - } - -} - diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/Keyframe.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/Keyframe.java deleted file mode 100755 index ab76fa7f6..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/Keyframe.java +++ /dev/null @@ -1,361 +0,0 @@ -/* - * 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.internal.nineoldandroids.animation; - -import android.view.animation.Interpolator; - -/** - * This class holds a time/value pair for an animation. The Keyframe class is used - * by {@link ValueAnimator} to define the values that the animation target will have over the course - * of the animation. As the time proceeds from one keyframe to the other, the value of the - * target object will animate between the value at the previous keyframe and the value at the - * next keyframe. Each keyframe also holds an optional {@link TimeInterpolator} - * object, which defines the time interpolation over the intervalue preceding the keyframe. - * - *

The Keyframe class itself is abstract. The type-specific factory methods will return - * a subclass of Keyframe specific to the type of value being stored. This is done to improve - * performance when dealing with the most common cases (e.g., float and - * int values). Other types will fall into a more general Keyframe class that - * treats its values as Objects. Unless your animation requires dealing with a custom type - * or a data structure that needs to be animated directly (and evaluated using an implementation - * of {@link TypeEvaluator}), you should stick to using float and int as animations using those - * types have lower runtime overhead than other types.

- */ -@SuppressWarnings("rawtypes") -public abstract class Keyframe implements Cloneable { - /** - * The time at which mValue will hold true. - */ - float mFraction; - - /** - * The type of the value in this Keyframe. This type is determined at construction time, - * based on the type of the value object passed into the constructor. - */ - Class mValueType; - - /** - * The optional time interpolator for the interval preceding this keyframe. A null interpolator - * (the default) results in linear interpolation over the interval. - */ - private /*Time*/Interpolator mInterpolator = null; - - /** - * Flag to indicate whether this keyframe has a valid value. This flag is used when an - * animation first starts, to populate placeholder keyframes with real values derived - * from the target object. - */ - boolean mHasValue = false; - - /** - * Constructs a Keyframe object with the given time and value. The time defines the - * time, as a proportion of an overall animation's duration, at which the value will hold true - * for the animation. The value for the animation between keyframes will be calculated as - * an interpolation between the values at those keyframes. - * - * @param fraction The time, expressed as a value between 0 and 1, representing the fraction - * of time elapsed of the overall animation duration. - * @param value The value that the object will animate to as the animation time approaches - * the time in this keyframe, and the the value animated from as the time passes the time in - * this keyframe. - */ - public static Keyframe ofInt(float fraction, int value) { - return new IntKeyframe(fraction, value); - } - - /** - * Constructs a Keyframe object with the given time. The value at this time will be derived - * from the target object when the animation first starts (note that this implies that keyframes - * with no initial value must be used as part of an {@link ObjectAnimator}). - * The time defines the - * time, as a proportion of an overall animation's duration, at which the value will hold true - * for the animation. The value for the animation between keyframes will be calculated as - * an interpolation between the values at those keyframes. - * - * @param fraction The time, expressed as a value between 0 and 1, representing the fraction - * of time elapsed of the overall animation duration. - */ - public static Keyframe ofInt(float fraction) { - return new IntKeyframe(fraction); - } - - /** - * Constructs a Keyframe object with the given time and value. The time defines the - * time, as a proportion of an overall animation's duration, at which the value will hold true - * for the animation. The value for the animation between keyframes will be calculated as - * an interpolation between the values at those keyframes. - * - * @param fraction The time, expressed as a value between 0 and 1, representing the fraction - * of time elapsed of the overall animation duration. - * @param value The value that the object will animate to as the animation time approaches - * the time in this keyframe, and the the value animated from as the time passes the time in - * this keyframe. - */ - public static Keyframe ofFloat(float fraction, float value) { - return new FloatKeyframe(fraction, value); - } - - /** - * Constructs a Keyframe object with the given time. The value at this time will be derived - * from the target object when the animation first starts (note that this implies that keyframes - * with no initial value must be used as part of an {@link ObjectAnimator}). - * The time defines the - * time, as a proportion of an overall animation's duration, at which the value will hold true - * for the animation. The value for the animation between keyframes will be calculated as - * an interpolation between the values at those keyframes. - * - * @param fraction The time, expressed as a value between 0 and 1, representing the fraction - * of time elapsed of the overall animation duration. - */ - public static Keyframe ofFloat(float fraction) { - return new FloatKeyframe(fraction); - } - - /** - * Constructs a Keyframe object with the given time and value. The time defines the - * time, as a proportion of an overall animation's duration, at which the value will hold true - * for the animation. The value for the animation between keyframes will be calculated as - * an interpolation between the values at those keyframes. - * - * @param fraction The time, expressed as a value between 0 and 1, representing the fraction - * of time elapsed of the overall animation duration. - * @param value The value that the object will animate to as the animation time approaches - * the time in this keyframe, and the the value animated from as the time passes the time in - * this keyframe. - */ - public static Keyframe ofObject(float fraction, Object value) { - return new ObjectKeyframe(fraction, value); - } - - /** - * Constructs a Keyframe object with the given time. The value at this time will be derived - * from the target object when the animation first starts (note that this implies that keyframes - * with no initial value must be used as part of an {@link ObjectAnimator}). - * The time defines the - * time, as a proportion of an overall animation's duration, at which the value will hold true - * for the animation. The value for the animation between keyframes will be calculated as - * an interpolation between the values at those keyframes. - * - * @param fraction The time, expressed as a value between 0 and 1, representing the fraction - * of time elapsed of the overall animation duration. - */ - public static Keyframe ofObject(float fraction) { - return new ObjectKeyframe(fraction, null); - } - - /** - * Indicates whether this keyframe has a valid value. This method is called internally when - * an {@link ObjectAnimator} first starts; keyframes without values are assigned values at - * that time by deriving the value for the property from the target object. - * - * @return boolean Whether this object has a value assigned. - */ - public boolean hasValue() { - return mHasValue; - } - - /** - * Gets the value for this Keyframe. - * - * @return The value for this Keyframe. - */ - public abstract Object getValue(); - - /** - * Sets the value for this Keyframe. - * - * @param value value for this Keyframe. - */ - public abstract void setValue(Object value); - - /** - * Gets the time for this keyframe, as a fraction of the overall animation duration. - * - * @return The time associated with this keyframe, as a fraction of the overall animation - * duration. This should be a value between 0 and 1. - */ - public float getFraction() { - return mFraction; - } - - /** - * Sets the time for this keyframe, as a fraction of the overall animation duration. - * - * @param fraction time associated with this keyframe, as a fraction of the overall animation - * duration. This should be a value between 0 and 1. - */ - public void setFraction(float fraction) { - mFraction = fraction; - } - - /** - * Gets the optional interpolator for this Keyframe. A value of null indicates - * that there is no interpolation, which is the same as linear interpolation. - * - * @return The optional interpolator for this Keyframe. - */ - public /*Time*/Interpolator getInterpolator() { - return mInterpolator; - } - - /** - * Sets the optional interpolator for this Keyframe. A value of null indicates - * that there is no interpolation, which is the same as linear interpolation. - * - * @return The optional interpolator for this Keyframe. - */ - public void setInterpolator(/*Time*/Interpolator interpolator) { - mInterpolator = interpolator; - } - - /** - * Gets the type of keyframe. This information is used by ValueAnimator to determine the type of - * {@link TypeEvaluator} to use when calculating values between keyframes. The type is based - * on the type of Keyframe created. - * - * @return The type of the value stored in the Keyframe. - */ - public Class getType() { - return mValueType; - } - - @Override - public abstract Keyframe clone(); - - /** - * This internal subclass is used for all types which are not int or float. - */ - static class ObjectKeyframe extends Keyframe { - - /** - * The value of the animation at the time mFraction. - */ - Object mValue; - - ObjectKeyframe(float fraction, Object value) { - mFraction = fraction; - mValue = value; - mHasValue = (value != null); - mValueType = mHasValue ? value.getClass() : Object.class; - } - - public Object getValue() { - return mValue; - } - - public void setValue(Object value) { - mValue = value; - mHasValue = (value != null); - } - - @Override - public ObjectKeyframe clone() { - ObjectKeyframe kfClone = new ObjectKeyframe(getFraction(), mValue); - kfClone.setInterpolator(getInterpolator()); - return kfClone; - } - } - - /** - * Internal subclass used when the keyframe value is of type int. - */ - static class IntKeyframe extends Keyframe { - - /** - * The value of the animation at the time mFraction. - */ - int mValue; - - IntKeyframe(float fraction, int value) { - mFraction = fraction; - mValue = value; - mValueType = int.class; - mHasValue = true; - } - - IntKeyframe(float fraction) { - mFraction = fraction; - mValueType = int.class; - } - - public int getIntValue() { - return mValue; - } - - public Object getValue() { - return mValue; - } - - public void setValue(Object value) { - if (value != null && value.getClass() == Integer.class) { - mValue = ((Integer)value).intValue(); - mHasValue = true; - } - } - - @Override - public IntKeyframe clone() { - IntKeyframe kfClone = new IntKeyframe(getFraction(), mValue); - kfClone.setInterpolator(getInterpolator()); - return kfClone; - } - } - - /** - * Internal subclass used when the keyframe value is of type float. - */ - static class FloatKeyframe extends Keyframe { - /** - * The value of the animation at the time mFraction. - */ - float mValue; - - FloatKeyframe(float fraction, float value) { - mFraction = fraction; - mValue = value; - mValueType = float.class; - mHasValue = true; - } - - FloatKeyframe(float fraction) { - mFraction = fraction; - mValueType = float.class; - } - - public float getFloatValue() { - return mValue; - } - - public Object getValue() { - return mValue; - } - - public void setValue(Object value) { - if (value != null && value.getClass() == Float.class) { - mValue = ((Float)value).floatValue(); - mHasValue = true; - } - } - - @Override - public FloatKeyframe clone() { - FloatKeyframe kfClone = new FloatKeyframe(getFraction(), mValue); - kfClone.setInterpolator(getInterpolator()); - return kfClone; - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/KeyframeSet.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/KeyframeSet.java deleted file mode 100755 index a71e1ad3c..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/KeyframeSet.java +++ /dev/null @@ -1,227 +0,0 @@ -/* - * 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.internal.nineoldandroids.animation; - -import java.util.ArrayList; -import java.util.Arrays; -import android.view.animation.Interpolator; - -import com.actionbarsherlock.internal.nineoldandroids.animation.Keyframe.FloatKeyframe; -import com.actionbarsherlock.internal.nineoldandroids.animation.Keyframe.IntKeyframe; -import com.actionbarsherlock.internal.nineoldandroids.animation.Keyframe.ObjectKeyframe; - -/** - * This class holds a collection of Keyframe objects and is called by ValueAnimator to calculate - * values between those keyframes for a given animation. The class internal to the animation - * package because it is an implementation detail of how Keyframes are stored and used. - */ -@SuppressWarnings({"rawtypes", "unchecked"}) -class KeyframeSet { - - int mNumKeyframes; - - Keyframe mFirstKeyframe; - Keyframe mLastKeyframe; - /*Time*/Interpolator mInterpolator; // only used in the 2-keyframe case - ArrayList mKeyframes; // only used when there are not 2 keyframes - TypeEvaluator mEvaluator; - - - public KeyframeSet(Keyframe... keyframes) { - mNumKeyframes = keyframes.length; - mKeyframes = new ArrayList(); - mKeyframes.addAll(Arrays.asList(keyframes)); - mFirstKeyframe = mKeyframes.get(0); - mLastKeyframe = mKeyframes.get(mNumKeyframes - 1); - mInterpolator = mLastKeyframe.getInterpolator(); - } - - public static KeyframeSet ofInt(int... values) { - int numKeyframes = values.length; - IntKeyframe keyframes[] = new IntKeyframe[Math.max(numKeyframes,2)]; - if (numKeyframes == 1) { - keyframes[0] = (IntKeyframe) Keyframe.ofInt(0f); - keyframes[1] = (IntKeyframe) Keyframe.ofInt(1f, values[0]); - } else { - keyframes[0] = (IntKeyframe) Keyframe.ofInt(0f, values[0]); - for (int i = 1; i < numKeyframes; ++i) { - keyframes[i] = (IntKeyframe) Keyframe.ofInt((float) i / (numKeyframes - 1), values[i]); - } - } - return new IntKeyframeSet(keyframes); - } - - public static KeyframeSet ofFloat(float... values) { - int numKeyframes = values.length; - FloatKeyframe keyframes[] = new FloatKeyframe[Math.max(numKeyframes,2)]; - if (numKeyframes == 1) { - keyframes[0] = (FloatKeyframe) Keyframe.ofFloat(0f); - keyframes[1] = (FloatKeyframe) Keyframe.ofFloat(1f, values[0]); - } else { - keyframes[0] = (FloatKeyframe) Keyframe.ofFloat(0f, values[0]); - for (int i = 1; i < numKeyframes; ++i) { - keyframes[i] = (FloatKeyframe) Keyframe.ofFloat((float) i / (numKeyframes - 1), values[i]); - } - } - return new FloatKeyframeSet(keyframes); - } - - public static KeyframeSet ofKeyframe(Keyframe... keyframes) { - // if all keyframes of same primitive type, create the appropriate KeyframeSet - int numKeyframes = keyframes.length; - boolean hasFloat = false; - boolean hasInt = false; - boolean hasOther = false; - for (int i = 0; i < numKeyframes; ++i) { - if (keyframes[i] instanceof FloatKeyframe) { - hasFloat = true; - } else if (keyframes[i] instanceof IntKeyframe) { - hasInt = true; - } else { - hasOther = true; - } - } - if (hasFloat && !hasInt && !hasOther) { - FloatKeyframe floatKeyframes[] = new FloatKeyframe[numKeyframes]; - for (int i = 0; i < numKeyframes; ++i) { - floatKeyframes[i] = (FloatKeyframe) keyframes[i]; - } - return new FloatKeyframeSet(floatKeyframes); - } else if (hasInt && !hasFloat && !hasOther) { - IntKeyframe intKeyframes[] = new IntKeyframe[numKeyframes]; - for (int i = 0; i < numKeyframes; ++i) { - intKeyframes[i] = (IntKeyframe) keyframes[i]; - } - return new IntKeyframeSet(intKeyframes); - } else { - return new KeyframeSet(keyframes); - } - } - - public static KeyframeSet ofObject(Object... values) { - int numKeyframes = values.length; - ObjectKeyframe keyframes[] = new ObjectKeyframe[Math.max(numKeyframes,2)]; - if (numKeyframes == 1) { - keyframes[0] = (ObjectKeyframe) Keyframe.ofObject(0f); - keyframes[1] = (ObjectKeyframe) Keyframe.ofObject(1f, values[0]); - } else { - keyframes[0] = (ObjectKeyframe) Keyframe.ofObject(0f, values[0]); - for (int i = 1; i < numKeyframes; ++i) { - keyframes[i] = (ObjectKeyframe) Keyframe.ofObject((float) i / (numKeyframes - 1), values[i]); - } - } - return new KeyframeSet(keyframes); - } - - /** - * Sets the TypeEvaluator to be used when calculating animated values. This object - * is required only for KeyframeSets that are not either IntKeyframeSet or FloatKeyframeSet, - * both of which assume their own evaluator to speed up calculations with those primitive - * types. - * - * @param evaluator The TypeEvaluator to be used to calculate animated values. - */ - public void setEvaluator(TypeEvaluator evaluator) { - mEvaluator = evaluator; - } - - @Override - public KeyframeSet clone() { - ArrayList keyframes = mKeyframes; - int numKeyframes = mKeyframes.size(); - Keyframe[] newKeyframes = new Keyframe[numKeyframes]; - for (int i = 0; i < numKeyframes; ++i) { - newKeyframes[i] = keyframes.get(i).clone(); - } - KeyframeSet newSet = new KeyframeSet(newKeyframes); - return newSet; - } - - /** - * Gets the animated value, given the elapsed fraction of the animation (interpolated by the - * animation's interpolator) and the evaluator used to calculate in-between values. This - * function maps the input fraction to the appropriate keyframe interval and a fraction - * between them and returns the interpolated value. Note that the input fraction may fall - * outside the [0-1] bounds, if the animation's interpolator made that happen (e.g., a - * spring interpolation that might send the fraction past 1.0). We handle this situation by - * just using the two keyframes at the appropriate end when the value is outside those bounds. - * - * @param fraction The elapsed fraction of the animation - * @return The animated value. - */ - public Object getValue(float fraction) { - - // Special-case optimization for the common case of only two keyframes - if (mNumKeyframes == 2) { - if (mInterpolator != null) { - fraction = mInterpolator.getInterpolation(fraction); - } - return mEvaluator.evaluate(fraction, mFirstKeyframe.getValue(), - mLastKeyframe.getValue()); - } - if (fraction <= 0f) { - final Keyframe nextKeyframe = mKeyframes.get(1); - final /*Time*/Interpolator interpolator = nextKeyframe.getInterpolator(); - if (interpolator != null) { - fraction = interpolator.getInterpolation(fraction); - } - final float prevFraction = mFirstKeyframe.getFraction(); - float intervalFraction = (fraction - prevFraction) / - (nextKeyframe.getFraction() - prevFraction); - return mEvaluator.evaluate(intervalFraction, mFirstKeyframe.getValue(), - nextKeyframe.getValue()); - } else if (fraction >= 1f) { - final Keyframe prevKeyframe = mKeyframes.get(mNumKeyframes - 2); - final /*Time*/Interpolator interpolator = mLastKeyframe.getInterpolator(); - if (interpolator != null) { - fraction = interpolator.getInterpolation(fraction); - } - final float prevFraction = prevKeyframe.getFraction(); - float intervalFraction = (fraction - prevFraction) / - (mLastKeyframe.getFraction() - prevFraction); - return mEvaluator.evaluate(intervalFraction, prevKeyframe.getValue(), - mLastKeyframe.getValue()); - } - Keyframe prevKeyframe = mFirstKeyframe; - for (int i = 1; i < mNumKeyframes; ++i) { - Keyframe nextKeyframe = mKeyframes.get(i); - if (fraction < nextKeyframe.getFraction()) { - final /*Time*/Interpolator interpolator = nextKeyframe.getInterpolator(); - if (interpolator != null) { - fraction = interpolator.getInterpolation(fraction); - } - final float prevFraction = prevKeyframe.getFraction(); - float intervalFraction = (fraction - prevFraction) / - (nextKeyframe.getFraction() - prevFraction); - return mEvaluator.evaluate(intervalFraction, prevKeyframe.getValue(), - nextKeyframe.getValue()); - } - prevKeyframe = nextKeyframe; - } - // shouldn't reach here - return mLastKeyframe.getValue(); - } - - @Override - public String toString() { - String returnVal = " "; - for (int i = 0; i < mNumKeyframes; ++i) { - returnVal += mKeyframes.get(i).getValue() + " "; - } - return returnVal; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/ObjectAnimator.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/ObjectAnimator.java deleted file mode 100755 index 21d15c02a..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/ObjectAnimator.java +++ /dev/null @@ -1,491 +0,0 @@ -/* - * 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.internal.nineoldandroids.animation; - -import android.util.Log; -//import android.util.Property; - -//import java.lang.reflect.Method; -import java.util.ArrayList; - -/** - * This subclass of {@link ValueAnimator} provides support for animating properties on target objects. - * The constructors of this class take parameters to define the target object that will be animated - * as well as the name of the property that will be animated. Appropriate set/get functions - * are then determined internally and the animation will call these functions as necessary to - * animate the property. - * - * @see #setPropertyName(String) - * - */ -@SuppressWarnings("rawtypes") -public final class ObjectAnimator extends ValueAnimator { - private static final boolean DBG = false; - - // The target object on which the property exists, set in the constructor - private Object mTarget; - - private String mPropertyName; - - //private Property mProperty; - - /** - * Sets the name of the property that will be animated. This name is used to derive - * a setter function that will be called to set animated values. - * For example, a property name of foo will result - * in a call to the function setFoo() on the target object. If either - * valueFrom or valueTo is null, then a getter function will - * also be derived and called. - * - *

For best performance of the mechanism that calls the setter function determined by the - * name of the property being animated, use float or int typed values, - * and make the setter function for those properties have a void return value. This - * will cause the code to take an optimized path for these constrained circumstances. Other - * property types and return types will work, but will have more overhead in processing - * the requests due to normal reflection mechanisms.

- * - *

Note that the setter function derived from this property name - * must take the same parameter type as the - * valueFrom and valueTo properties, otherwise the call to - * the setter function will fail.

- * - *

If this ObjectAnimator has been set up to animate several properties together, - * using more than one PropertyValuesHolder objects, then setting the propertyName simply - * sets the propertyName in the first of those PropertyValuesHolder objects.

- * - * @param propertyName The name of the property being animated. Should not be null. - */ - public void setPropertyName(String propertyName) { - // mValues could be null if this is being constructed piecemeal. Just record the - // propertyName to be used later when setValues() is called if so. - if (mValues != null) { - PropertyValuesHolder valuesHolder = mValues[0]; - String oldName = valuesHolder.getPropertyName(); - valuesHolder.setPropertyName(propertyName); - mValuesMap.remove(oldName); - mValuesMap.put(propertyName, valuesHolder); - } - mPropertyName = propertyName; - // New property/values/target should cause re-initialization prior to starting - mInitialized = false; - } - - /** - * Sets the property that will be animated. Property objects will take precedence over - * properties specified by the {@link #setPropertyName(String)} method. Animations should - * be set up to use one or the other, not both. - * - * @param property The property being animated. Should not be null. - */ - //public void setProperty(Property property) { - // // mValues could be null if this is being constructed piecemeal. Just record the - // // propertyName to be used later when setValues() is called if so. - // if (mValues != null) { - // PropertyValuesHolder valuesHolder = mValues[0]; - // String oldName = valuesHolder.getPropertyName(); - // valuesHolder.setProperty(property); - // mValuesMap.remove(oldName); - // mValuesMap.put(mPropertyName, valuesHolder); - // } - // if (mProperty != null) { - // mPropertyName = property.getName(); - // } - // mProperty = property; - // // New property/values/target should cause re-initialization prior to starting - // mInitialized = false; - //} - - /** - * Gets the name of the property that will be animated. This name will be used to derive - * a setter function that will be called to set animated values. - * For example, a property name of foo will result - * in a call to the function setFoo() on the target object. If either - * valueFrom or valueTo is null, then a getter function will - * also be derived and called. - */ - public String getPropertyName() { - return mPropertyName; - } - - /** - * Creates a new ObjectAnimator object. This default constructor is primarily for - * use internally; the other constructors which take parameters are more generally - * useful. - */ - public ObjectAnimator() { - } - - /** - * Private utility constructor that initializes the target object and name of the - * property being animated. - * - * @param target The object whose property is to be animated. This object should - * have a public method on it called setName(), where name is - * the value of the propertyName parameter. - * @param propertyName The name of the property being animated. - */ - private ObjectAnimator(Object target, String propertyName) { - mTarget = target; - setPropertyName(propertyName); - } - - /** - * Private utility constructor that initializes the target object and property being animated. - * - * @param target The object whose property is to be animated. - * @param property The property being animated. - */ - //private ObjectAnimator(T target, Property property) { - // mTarget = target; - // setProperty(property); - //} - - /** - * Constructs and returns an ObjectAnimator that animates between int values. A single - * value implies that that value is the one being animated to. Two values imply a starting - * and ending values. More than two values imply a starting value, values to animate through - * along the way, and an ending value (these values will be distributed evenly across - * the duration of the animation). - * - * @param target The object whose property is to be animated. This object should - * have a public method on it called setName(), where name is - * the value of the propertyName parameter. - * @param propertyName The name of the property being animated. - * @param values A set of values that the animation will animate between over time. - * @return An ObjectAnimator object that is set up to animate between the given values. - */ - public static ObjectAnimator ofInt(Object target, String propertyName, int... values) { - ObjectAnimator anim = new ObjectAnimator(target, propertyName); - anim.setIntValues(values); - return anim; - } - - /** - * Constructs and returns an ObjectAnimator that animates between int values. A single - * value implies that that value is the one being animated to. Two values imply a starting - * and ending values. More than two values imply a starting value, values to animate through - * along the way, and an ending value (these values will be distributed evenly across - * the duration of the animation). - * - * @param target The object whose property is to be animated. - * @param property The property being animated. - * @param values A set of values that the animation will animate between over time. - * @return An ObjectAnimator object that is set up to animate between the given values. - */ - //public static ObjectAnimator ofInt(T target, Property property, int... values) { - // ObjectAnimator anim = new ObjectAnimator(target, property); - // anim.setIntValues(values); - // return anim; - //} - - /** - * Constructs and returns an ObjectAnimator that animates between float values. A single - * value implies that that value is the one being animated to. Two values imply a starting - * and ending values. More than two values imply a starting value, values to animate through - * along the way, and an ending value (these values will be distributed evenly across - * the duration of the animation). - * - * @param target The object whose property is to be animated. This object should - * have a public method on it called setName(), where name is - * the value of the propertyName parameter. - * @param propertyName The name of the property being animated. - * @param values A set of values that the animation will animate between over time. - * @return An ObjectAnimator object that is set up to animate between the given values. - */ - public static ObjectAnimator ofFloat(Object target, String propertyName, float... values) { - ObjectAnimator anim = new ObjectAnimator(target, propertyName); - anim.setFloatValues(values); - return anim; - } - - /** - * Constructs and returns an ObjectAnimator that animates between float values. A single - * value implies that that value is the one being animated to. Two values imply a starting - * and ending values. More than two values imply a starting value, values to animate through - * along the way, and an ending value (these values will be distributed evenly across - * the duration of the animation). - * - * @param target The object whose property is to be animated. - * @param property The property being animated. - * @param values A set of values that the animation will animate between over time. - * @return An ObjectAnimator object that is set up to animate between the given values. - */ - //public static ObjectAnimator ofFloat(T target, Property property, - // float... values) { - // ObjectAnimator anim = new ObjectAnimator(target, property); - // anim.setFloatValues(values); - // return anim; - //} - - /** - * Constructs and returns an ObjectAnimator that animates between Object values. A single - * value implies that that value is the one being animated to. Two values imply a starting - * and ending values. More than two values imply a starting value, values to animate through - * along the way, and an ending value (these values will be distributed evenly across - * the duration of the animation). - * - * @param target The object whose property is to be animated. This object should - * have a public method on it called setName(), where name is - * the value of the propertyName parameter. - * @param propertyName The name of the property being animated. - * @param evaluator A TypeEvaluator that will be called on each animation frame to - * provide the necessary interpolation between the Object values to derive the animated - * value. - * @param values A set of values that the animation will animate between over time. - * @return An ObjectAnimator object that is set up to animate between the given values. - */ - public static ObjectAnimator ofObject(Object target, String propertyName, - TypeEvaluator evaluator, Object... values) { - ObjectAnimator anim = new ObjectAnimator(target, propertyName); - anim.setObjectValues(values); - anim.setEvaluator(evaluator); - return anim; - } - - /** - * Constructs and returns an ObjectAnimator that animates between Object values. A single - * value implies that that value is the one being animated to. Two values imply a starting - * and ending values. More than two values imply a starting value, values to animate through - * along the way, and an ending value (these values will be distributed evenly across - * the duration of the animation). - * - * @param target The object whose property is to be animated. - * @param property The property being animated. - * @param evaluator A TypeEvaluator that will be called on each animation frame to - * provide the necessary interpolation between the Object values to derive the animated - * value. - * @param values A set of values that the animation will animate between over time. - * @return An ObjectAnimator object that is set up to animate between the given values. - */ - //public static ObjectAnimator ofObject(T target, Property property, - // TypeEvaluator evaluator, V... values) { - // ObjectAnimator anim = new ObjectAnimator(target, property); - // anim.setObjectValues(values); - // anim.setEvaluator(evaluator); - // return anim; - //} - - /** - * Constructs and returns an ObjectAnimator that animates between the sets of values specified - * in PropertyValueHolder objects. This variant should be used when animating - * several properties at once with the same ObjectAnimator, since PropertyValuesHolder allows - * you to associate a set of animation values with a property name. - * - * @param target The object whose property is to be animated. Depending on how the - * PropertyValuesObjects were constructed, the target object should either have the {@link - * android.util.Property} objects used to construct the PropertyValuesHolder objects or (if the - * PropertyValuesHOlder objects were created with property names) the target object should have - * public methods on it called setName(), where name is the name of - * the property passed in as the propertyName parameter for each of the - * PropertyValuesHolder objects. - * @param values A set of PropertyValuesHolder objects whose values will be animated between - * over time. - * @return An ObjectAnimator object that is set up to animate between the given values. - */ - public static ObjectAnimator ofPropertyValuesHolder(Object target, - PropertyValuesHolder... values) { - ObjectAnimator anim = new ObjectAnimator(); - anim.mTarget = target; - anim.setValues(values); - return anim; - } - - @Override - public void setIntValues(int... values) { - if (mValues == null || mValues.length == 0) { - // No values yet - this animator is being constructed piecemeal. Init the values with - // whatever the current propertyName is - //if (mProperty != null) { - // setValues(PropertyValuesHolder.ofInt(mProperty, values)); - //} else { - setValues(PropertyValuesHolder.ofInt(mPropertyName, values)); - //} - } else { - super.setIntValues(values); - } - } - - @Override - public void setFloatValues(float... values) { - if (mValues == null || mValues.length == 0) { - // No values yet - this animator is being constructed piecemeal. Init the values with - // whatever the current propertyName is - //if (mProperty != null) { - // setValues(PropertyValuesHolder.ofFloat(mProperty, values)); - //} else { - setValues(PropertyValuesHolder.ofFloat(mPropertyName, values)); - //} - } else { - super.setFloatValues(values); - } - } - - @Override - public void setObjectValues(Object... values) { - if (mValues == null || mValues.length == 0) { - // No values yet - this animator is being constructed piecemeal. Init the values with - // whatever the current propertyName is - //if (mProperty != null) { - // setValues(PropertyValuesHolder.ofObject(mProperty, (TypeEvaluator)null, values)); - //} else { - setValues(PropertyValuesHolder.ofObject(mPropertyName, (TypeEvaluator)null, values)); - //} - } else { - super.setObjectValues(values); - } - } - - @Override - public void start() { - if (DBG) { - Log.d("ObjectAnimator", "Anim target, duration: " + mTarget + ", " + getDuration()); - for (int i = 0; i < mValues.length; ++i) { - PropertyValuesHolder pvh = mValues[i]; - ArrayList keyframes = pvh.mKeyframeSet.mKeyframes; - Log.d("ObjectAnimator", " Values[" + i + "]: " + - pvh.getPropertyName() + ", " + keyframes.get(0).getValue() + ", " + - keyframes.get(pvh.mKeyframeSet.mNumKeyframes - 1).getValue()); - } - } - super.start(); - } - - /** - * This function is called immediately before processing the first animation - * frame of an animation. If there is a nonzero startDelay, the - * function is called after that delay ends. - * It takes care of the final initialization steps for the - * animation. This includes setting mEvaluator, if the user has not yet - * set it up, and the setter/getter methods, if the user did not supply - * them. - * - *

Overriders of this method should call the superclass method to cause - * internal mechanisms to be set up correctly.

- */ - @Override - void initAnimation() { - if (!mInitialized) { - // mValueType may change due to setter/getter setup; do this before calling super.init(), - // which uses mValueType to set up the default type evaluator. - int numValues = mValues.length; - for (int i = 0; i < numValues; ++i) { - mValues[i].setupSetterAndGetter(mTarget); - } - super.initAnimation(); - } - } - - /** - * Sets the length of the animation. The default duration is 300 milliseconds. - * - * @param duration The length of the animation, in milliseconds. - * @return ObjectAnimator The object called with setDuration(). This return - * value makes it easier to compose statements together that construct and then set the - * duration, as in - * ObjectAnimator.ofInt(target, propertyName, 0, 10).setDuration(500).start(). - */ - @Override - public ObjectAnimator setDuration(long duration) { - super.setDuration(duration); - return this; - } - - - /** - * The target object whose property will be animated by this animation - * - * @return The object being animated - */ - public Object getTarget() { - return mTarget; - } - - /** - * Sets the target object whose property will be animated by this animation - * - * @param target The object being animated - */ - @Override - public void setTarget(Object target) { - if (mTarget != target) { - final Object oldTarget = mTarget; - mTarget = target; - if (oldTarget != null && target != null && oldTarget.getClass() == target.getClass()) { - return; - } - // New target type should cause re-initialization prior to starting - mInitialized = false; - } - } - - @Override - public void setupStartValues() { - initAnimation(); - int numValues = mValues.length; - for (int i = 0; i < numValues; ++i) { - mValues[i].setupStartValue(mTarget); - } - } - - @Override - public void setupEndValues() { - initAnimation(); - int numValues = mValues.length; - for (int i = 0; i < numValues; ++i) { - mValues[i].setupEndValue(mTarget); - } - } - - /** - * This method is called with the elapsed fraction of the animation during every - * animation frame. This function turns the elapsed fraction into an interpolated fraction - * and then into an animated value (from the evaluator. The function is called mostly during - * animation updates, but it is also called when the end() - * function is called, to set the final value on the property. - * - *

Overrides of this method must call the superclass to perform the calculation - * of the animated value.

- * - * @param fraction The elapsed fraction of the animation. - */ - @Override - void animateValue(float fraction) { - super.animateValue(fraction); - int numValues = mValues.length; - for (int i = 0; i < numValues; ++i) { - mValues[i].setAnimatedValue(mTarget); - } - } - - @Override - public ObjectAnimator clone() { - final ObjectAnimator anim = (ObjectAnimator) super.clone(); - return anim; - } - - @Override - public String toString() { - String returnVal = "ObjectAnimator@" + Integer.toHexString(hashCode()) + ", target " + - mTarget; - if (mValues != null) { - for (int i = 0; i < mValues.length; ++i) { - returnVal += "\n " + mValues[i].toString(); - } - } - return returnVal; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/PropertyValuesHolder.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/PropertyValuesHolder.java deleted file mode 100755 index 84f7504ab..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/PropertyValuesHolder.java +++ /dev/null @@ -1,1012 +0,0 @@ -/* - * 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.internal.nineoldandroids.animation; - -//import android.util.FloatProperty; -//import android.util.IntProperty; -import android.util.Log; -//import android.util.Property; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.concurrent.locks.ReentrantReadWriteLock; - -/** - * This class holds information about a property and the values that that property - * should take on during an animation. PropertyValuesHolder objects can be used to create - * animations with ValueAnimator or ObjectAnimator that operate on several different properties - * in parallel. - */ -@SuppressWarnings({"rawtypes", "unchecked"}) -public class PropertyValuesHolder implements Cloneable { - - /** - * The name of the property associated with the values. This need not be a real property, - * unless this object is being used with ObjectAnimator. But this is the name by which - * aniamted values are looked up with getAnimatedValue(String) in ValueAnimator. - */ - String mPropertyName; - - /** - * @hide - */ - //protected Property mProperty; - - /** - * The setter function, if needed. ObjectAnimator hands off this functionality to - * PropertyValuesHolder, since it holds all of the per-property information. This - * property is automatically - * derived when the animation starts in setupSetterAndGetter() if using ObjectAnimator. - */ - Method mSetter = null; - - /** - * The getter function, if needed. ObjectAnimator hands off this functionality to - * PropertyValuesHolder, since it holds all of the per-property information. This - * property is automatically - * derived when the animation starts in setupSetterAndGetter() if using ObjectAnimator. - * The getter is only derived and used if one of the values is null. - */ - private Method mGetter = null; - - /** - * The type of values supplied. This information is used both in deriving the setter/getter - * functions and in deriving the type of TypeEvaluator. - */ - Class mValueType; - - /** - * The set of keyframes (time/value pairs) that define this animation. - */ - KeyframeSet mKeyframeSet = null; - - - // type evaluators for the primitive types handled by this implementation - private static final TypeEvaluator sIntEvaluator = new IntEvaluator(); - private static final TypeEvaluator sFloatEvaluator = new FloatEvaluator(); - - // We try several different types when searching for appropriate setter/getter functions. - // The caller may have supplied values in a type that does not match the setter/getter - // functions (such as the integers 0 and 1 to represent floating point values for alpha). - // Also, the use of generics in constructors means that we end up with the Object versions - // of primitive types (Float vs. float). But most likely, the setter/getter functions - // will take primitive types instead. - // So we supply an ordered array of other types to try before giving up. - private static Class[] FLOAT_VARIANTS = {float.class, Float.class, double.class, int.class, - Double.class, Integer.class}; - private static Class[] INTEGER_VARIANTS = {int.class, Integer.class, float.class, double.class, - Float.class, Double.class}; - private static Class[] DOUBLE_VARIANTS = {double.class, Double.class, float.class, int.class, - Float.class, Integer.class}; - - // These maps hold all property entries for a particular class. This map - // is used to speed up property/setter/getter lookups for a given class/property - // combination. No need to use reflection on the combination more than once. - private static final HashMap> sSetterPropertyMap = - new HashMap>(); - private static final HashMap> sGetterPropertyMap = - new HashMap>(); - - // This lock is used to ensure that only one thread is accessing the property maps - // at a time. - final ReentrantReadWriteLock mPropertyMapLock = new ReentrantReadWriteLock(); - - // Used to pass single value to varargs parameter in setter invocation - final Object[] mTmpValueArray = new Object[1]; - - /** - * The type evaluator used to calculate the animated values. This evaluator is determined - * automatically based on the type of the start/end objects passed into the constructor, - * but the system only knows about the primitive types int and float. Any other - * type will need to set the evaluator to a custom evaluator for that type. - */ - private TypeEvaluator mEvaluator; - - /** - * The value most recently calculated by calculateValue(). This is set during - * that function and might be retrieved later either by ValueAnimator.animatedValue() or - * by the property-setting logic in ObjectAnimator.animatedValue(). - */ - private Object mAnimatedValue; - - /** - * Internal utility constructor, used by the factory methods to set the property name. - * @param propertyName The name of the property for this holder. - */ - private PropertyValuesHolder(String propertyName) { - mPropertyName = propertyName; - } - - /** - * Internal utility constructor, used by the factory methods to set the property. - * @param property The property for this holder. - */ - //private PropertyValuesHolder(Property property) { - // mProperty = property; - // if (property != null) { - // mPropertyName = property.getName(); - // } - //} - - /** - * Constructs and returns a PropertyValuesHolder with a given property name and - * set of int values. - * @param propertyName The name of the property being animated. - * @param values The values that the named property will animate between. - * @return PropertyValuesHolder The constructed PropertyValuesHolder object. - */ - public static PropertyValuesHolder ofInt(String propertyName, int... values) { - return new IntPropertyValuesHolder(propertyName, values); - } - - /** - * Constructs and returns a PropertyValuesHolder with a given property and - * set of int values. - * @param property The property being animated. Should not be null. - * @param values The values that the property will animate between. - * @return PropertyValuesHolder The constructed PropertyValuesHolder object. - */ - //public static PropertyValuesHolder ofInt(Property property, int... values) { - // return new IntPropertyValuesHolder(property, values); - //} - - /** - * Constructs and returns a PropertyValuesHolder with a given property name and - * set of float values. - * @param propertyName The name of the property being animated. - * @param values The values that the named property will animate between. - * @return PropertyValuesHolder The constructed PropertyValuesHolder object. - */ - public static PropertyValuesHolder ofFloat(String propertyName, float... values) { - return new FloatPropertyValuesHolder(propertyName, values); - } - - /** - * Constructs and returns a PropertyValuesHolder with a given property and - * set of float values. - * @param property The property being animated. Should not be null. - * @param values The values that the property will animate between. - * @return PropertyValuesHolder The constructed PropertyValuesHolder object. - */ - //public static PropertyValuesHolder ofFloat(Property property, float... values) { - // return new FloatPropertyValuesHolder(property, values); - //} - - /** - * Constructs and returns a PropertyValuesHolder with a given property name and - * set of Object values. This variant also takes a TypeEvaluator because the system - * cannot automatically interpolate between objects of unknown type. - * - * @param propertyName The name of the property being animated. - * @param evaluator A TypeEvaluator that will be called on each animation frame to - * provide the necessary interpolation between the Object values to derive the animated - * value. - * @param values The values that the named property will animate between. - * @return PropertyValuesHolder The constructed PropertyValuesHolder object. - */ - public static PropertyValuesHolder ofObject(String propertyName, TypeEvaluator evaluator, - Object... values) { - PropertyValuesHolder pvh = new PropertyValuesHolder(propertyName); - pvh.setObjectValues(values); - pvh.setEvaluator(evaluator); - return pvh; - } - - /** - * Constructs and returns a PropertyValuesHolder with a given property and - * set of Object values. This variant also takes a TypeEvaluator because the system - * cannot automatically interpolate between objects of unknown type. - * - * @param property The property being animated. Should not be null. - * @param evaluator A TypeEvaluator that will be called on each animation frame to - * provide the necessary interpolation between the Object values to derive the animated - * value. - * @param values The values that the property will animate between. - * @return PropertyValuesHolder The constructed PropertyValuesHolder object. - */ - //public static PropertyValuesHolder ofObject(Property property, - // TypeEvaluator evaluator, V... values) { - // PropertyValuesHolder pvh = new PropertyValuesHolder(property); - // pvh.setObjectValues(values); - // pvh.setEvaluator(evaluator); - // return pvh; - //} - - /** - * Constructs and returns a PropertyValuesHolder object with the specified property name and set - * of values. These values can be of any type, but the type should be consistent so that - * an appropriate {@link android.animation.TypeEvaluator} can be found that matches - * the common type. - *

If there is only one value, it is assumed to be the end value of an animation, - * and an initial value will be derived, if possible, by calling a getter function - * on the object. Also, if any value is null, the value will be filled in when the animation - * starts in the same way. This mechanism of automatically getting null values only works - * if the PropertyValuesHolder object is used in conjunction - * {@link ObjectAnimator}, and with a getter function - * derived automatically from propertyName, since otherwise PropertyValuesHolder has - * no way of determining what the value should be. - * @param propertyName The name of the property associated with this set of values. This - * can be the actual property name to be used when using a ObjectAnimator object, or - * just a name used to get animated values, such as if this object is used with an - * ValueAnimator object. - * @param values The set of values to animate between. - */ - public static PropertyValuesHolder ofKeyframe(String propertyName, Keyframe... values) { - KeyframeSet keyframeSet = KeyframeSet.ofKeyframe(values); - if (keyframeSet instanceof IntKeyframeSet) { - return new IntPropertyValuesHolder(propertyName, (IntKeyframeSet) keyframeSet); - } else if (keyframeSet instanceof FloatKeyframeSet) { - return new FloatPropertyValuesHolder(propertyName, (FloatKeyframeSet) keyframeSet); - } - else { - PropertyValuesHolder pvh = new PropertyValuesHolder(propertyName); - pvh.mKeyframeSet = keyframeSet; - pvh.mValueType = values[0].getType(); - return pvh; - } - } - - /** - * Constructs and returns a PropertyValuesHolder object with the specified property and set - * of values. These values can be of any type, but the type should be consistent so that - * an appropriate {@link android.animation.TypeEvaluator} can be found that matches - * the common type. - *

If there is only one value, it is assumed to be the end value of an animation, - * and an initial value will be derived, if possible, by calling the property's - * {@link android.util.Property#get(Object)} function. - * Also, if any value is null, the value will be filled in when the animation - * starts in the same way. This mechanism of automatically getting null values only works - * if the PropertyValuesHolder object is used in conjunction with - * {@link ObjectAnimator}, since otherwise PropertyValuesHolder has - * no way of determining what the value should be. - * @param property The property associated with this set of values. Should not be null. - * @param values The set of values to animate between. - */ - //public static PropertyValuesHolder ofKeyframe(Property property, Keyframe... values) { - // KeyframeSet keyframeSet = KeyframeSet.ofKeyframe(values); - // if (keyframeSet instanceof IntKeyframeSet) { - // return new IntPropertyValuesHolder(property, (IntKeyframeSet) keyframeSet); - // } else if (keyframeSet instanceof FloatKeyframeSet) { - // return new FloatPropertyValuesHolder(property, (FloatKeyframeSet) keyframeSet); - // } - // else { - // PropertyValuesHolder pvh = new PropertyValuesHolder(property); - // pvh.mKeyframeSet = keyframeSet; - // pvh.mValueType = ((Keyframe)values[0]).getType(); - // return pvh; - // } - //} - - /** - * Set the animated values for this object to this set of ints. - * If there is only one value, it is assumed to be the end value of an animation, - * and an initial value will be derived, if possible, by calling a getter function - * on the object. Also, if any value is null, the value will be filled in when the animation - * starts in the same way. This mechanism of automatically getting null values only works - * if the PropertyValuesHolder object is used in conjunction - * {@link ObjectAnimator}, and with a getter function - * derived automatically from propertyName, since otherwise PropertyValuesHolder has - * no way of determining what the value should be. - * - * @param values One or more values that the animation will animate between. - */ - public void setIntValues(int... values) { - mValueType = int.class; - mKeyframeSet = KeyframeSet.ofInt(values); - } - - /** - * Set the animated values for this object to this set of floats. - * If there is only one value, it is assumed to be the end value of an animation, - * and an initial value will be derived, if possible, by calling a getter function - * on the object. Also, if any value is null, the value will be filled in when the animation - * starts in the same way. This mechanism of automatically getting null values only works - * if the PropertyValuesHolder object is used in conjunction - * {@link ObjectAnimator}, and with a getter function - * derived automatically from propertyName, since otherwise PropertyValuesHolder has - * no way of determining what the value should be. - * - * @param values One or more values that the animation will animate between. - */ - public void setFloatValues(float... values) { - mValueType = float.class; - mKeyframeSet = KeyframeSet.ofFloat(values); - } - - /** - * Set the animated values for this object to this set of Keyframes. - * - * @param values One or more values that the animation will animate between. - */ - public void setKeyframes(Keyframe... values) { - int numKeyframes = values.length; - Keyframe keyframes[] = new Keyframe[Math.max(numKeyframes,2)]; - mValueType = values[0].getType(); - for (int i = 0; i < numKeyframes; ++i) { - keyframes[i] = values[i]; - } - mKeyframeSet = new KeyframeSet(keyframes); - } - - /** - * Set the animated values for this object to this set of Objects. - * If there is only one value, it is assumed to be the end value of an animation, - * and an initial value will be derived, if possible, by calling a getter function - * on the object. Also, if any value is null, the value will be filled in when the animation - * starts in the same way. This mechanism of automatically getting null values only works - * if the PropertyValuesHolder object is used in conjunction - * {@link ObjectAnimator}, and with a getter function - * derived automatically from propertyName, since otherwise PropertyValuesHolder has - * no way of determining what the value should be. - * - * @param values One or more values that the animation will animate between. - */ - public void setObjectValues(Object... values) { - mValueType = values[0].getClass(); - mKeyframeSet = KeyframeSet.ofObject(values); - } - - /** - * Determine the setter or getter function using the JavaBeans convention of setFoo or - * getFoo for a property named 'foo'. This function figures out what the name of the - * function should be and uses reflection to find the Method with that name on the - * target object. - * - * @param targetClass The class to search for the method - * @param prefix "set" or "get", depending on whether we need a setter or getter. - * @param valueType The type of the parameter (in the case of a setter). This type - * is derived from the values set on this PropertyValuesHolder. This type is used as - * a first guess at the parameter type, but we check for methods with several different - * types to avoid problems with slight mis-matches between supplied values and actual - * value types used on the setter. - * @return Method the method associated with mPropertyName. - */ - private Method getPropertyFunction(Class targetClass, String prefix, Class valueType) { - // TODO: faster implementation... - Method returnVal = null; - String methodName = getMethodName(prefix, mPropertyName); - Class args[] = null; - if (valueType == null) { - try { - returnVal = targetClass.getMethod(methodName, args); - } catch (NoSuchMethodException e) { - Log.e("PropertyValuesHolder", targetClass.getSimpleName() + " - " + - "Couldn't find no-arg method for property " + mPropertyName + ": " + e); - } - } else { - args = new Class[1]; - Class typeVariants[]; - if (mValueType.equals(Float.class)) { - typeVariants = FLOAT_VARIANTS; - } else if (mValueType.equals(Integer.class)) { - typeVariants = INTEGER_VARIANTS; - } else if (mValueType.equals(Double.class)) { - typeVariants = DOUBLE_VARIANTS; - } else { - typeVariants = new Class[1]; - typeVariants[0] = mValueType; - } - for (Class typeVariant : typeVariants) { - args[0] = typeVariant; - try { - returnVal = targetClass.getMethod(methodName, args); - // change the value type to suit - mValueType = typeVariant; - return returnVal; - } catch (NoSuchMethodException e) { - // Swallow the error and keep trying other variants - } - } - // If we got here, then no appropriate function was found - Log.e("PropertyValuesHolder", - "Couldn't find " + prefix + "ter property " + mPropertyName + - " for " + targetClass.getSimpleName() + - " with value type "+ mValueType); - } - - return returnVal; - } - - - /** - * Returns the setter or getter requested. This utility function checks whether the - * requested method exists in the propertyMapMap cache. If not, it calls another - * utility function to request the Method from the targetClass directly. - * @param targetClass The Class on which the requested method should exist. - * @param propertyMapMap The cache of setters/getters derived so far. - * @param prefix "set" or "get", for the setter or getter. - * @param valueType The type of parameter passed into the method (null for getter). - * @return Method the method associated with mPropertyName. - */ - private Method setupSetterOrGetter(Class targetClass, - HashMap> propertyMapMap, - String prefix, Class valueType) { - Method setterOrGetter = null; - try { - // Have to lock property map prior to reading it, to guard against - // another thread putting something in there after we've checked it - // but before we've added an entry to it - mPropertyMapLock.writeLock().lock(); - HashMap propertyMap = propertyMapMap.get(targetClass); - if (propertyMap != null) { - setterOrGetter = propertyMap.get(mPropertyName); - } - if (setterOrGetter == null) { - setterOrGetter = getPropertyFunction(targetClass, prefix, valueType); - if (propertyMap == null) { - propertyMap = new HashMap(); - propertyMapMap.put(targetClass, propertyMap); - } - propertyMap.put(mPropertyName, setterOrGetter); - } - } finally { - mPropertyMapLock.writeLock().unlock(); - } - return setterOrGetter; - } - - /** - * Utility function to get the setter from targetClass - * @param targetClass The Class on which the requested method should exist. - */ - void setupSetter(Class targetClass) { - mSetter = setupSetterOrGetter(targetClass, sSetterPropertyMap, "set", mValueType); - } - - /** - * Utility function to get the getter from targetClass - */ - private void setupGetter(Class targetClass) { - mGetter = setupSetterOrGetter(targetClass, sGetterPropertyMap, "get", null); - } - - /** - * Internal function (called from ObjectAnimator) to set up the setter and getter - * prior to running the animation. If the setter has not been manually set for this - * object, it will be derived automatically given the property name, target object, and - * types of values supplied. If no getter has been set, it will be supplied iff any of the - * supplied values was null. If there is a null value, then the getter (supplied or derived) - * will be called to set those null values to the current value of the property - * on the target object. - * @param target The object on which the setter (and possibly getter) exist. - */ - void setupSetterAndGetter(Object target) { - //if (mProperty != null) { - // // check to make sure that mProperty is on the class of target - // try { - // Object testValue = mProperty.get(target); - // for (Keyframe kf : mKeyframeSet.mKeyframes) { - // if (!kf.hasValue()) { - // kf.setValue(mProperty.get(target)); - // } - // } - // return; - // } catch (ClassCastException e) { - // Log.e("PropertyValuesHolder","No such property (" + mProperty.getName() + - // ") on target object " + target + ". Trying reflection instead"); - // mProperty = null; - // } - //} - Class targetClass = target.getClass(); - if (mSetter == null) { - setupSetter(targetClass); - } - for (Keyframe kf : mKeyframeSet.mKeyframes) { - if (!kf.hasValue()) { - if (mGetter == null) { - setupGetter(targetClass); - } - try { - kf.setValue(mGetter.invoke(target)); - } catch (InvocationTargetException e) { - Log.e("PropertyValuesHolder", e.toString()); - } catch (IllegalAccessException e) { - Log.e("PropertyValuesHolder", e.toString()); - } - } - } - } - - /** - * Utility function to set the value stored in a particular Keyframe. The value used is - * whatever the value is for the property name specified in the keyframe on the target object. - * - * @param target The target object from which the current value should be extracted. - * @param kf The keyframe which holds the property name and value. - */ - private void setupValue(Object target, Keyframe kf) { - //if (mProperty != null) { - // kf.setValue(mProperty.get(target)); - //} - try { - if (mGetter == null) { - Class targetClass = target.getClass(); - setupGetter(targetClass); - } - kf.setValue(mGetter.invoke(target)); - } catch (InvocationTargetException e) { - Log.e("PropertyValuesHolder", e.toString()); - } catch (IllegalAccessException e) { - Log.e("PropertyValuesHolder", e.toString()); - } - } - - /** - * This function is called by ObjectAnimator when setting the start values for an animation. - * The start values are set according to the current values in the target object. The - * property whose value is extracted is whatever is specified by the propertyName of this - * PropertyValuesHolder object. - * - * @param target The object which holds the start values that should be set. - */ - void setupStartValue(Object target) { - setupValue(target, mKeyframeSet.mKeyframes.get(0)); - } - - /** - * This function is called by ObjectAnimator when setting the end values for an animation. - * The end values are set according to the current values in the target object. The - * property whose value is extracted is whatever is specified by the propertyName of this - * PropertyValuesHolder object. - * - * @param target The object which holds the start values that should be set. - */ - void setupEndValue(Object target) { - setupValue(target, mKeyframeSet.mKeyframes.get(mKeyframeSet.mKeyframes.size() - 1)); - } - - @Override - public PropertyValuesHolder clone() { - try { - PropertyValuesHolder newPVH = (PropertyValuesHolder) super.clone(); - newPVH.mPropertyName = mPropertyName; - //newPVH.mProperty = mProperty; - newPVH.mKeyframeSet = mKeyframeSet.clone(); - newPVH.mEvaluator = mEvaluator; - return newPVH; - } catch (CloneNotSupportedException e) { - // won't reach here - return null; - } - } - - /** - * Internal function to set the value on the target object, using the setter set up - * earlier on this PropertyValuesHolder object. This function is called by ObjectAnimator - * to handle turning the value calculated by ValueAnimator into a value set on the object - * according to the name of the property. - * @param target The target object on which the value is set - */ - void setAnimatedValue(Object target) { - //if (mProperty != null) { - // mProperty.set(target, getAnimatedValue()); - //} - if (mSetter != null) { - try { - mTmpValueArray[0] = getAnimatedValue(); - mSetter.invoke(target, mTmpValueArray); - } catch (InvocationTargetException e) { - Log.e("PropertyValuesHolder", e.toString()); - } catch (IllegalAccessException e) { - Log.e("PropertyValuesHolder", e.toString()); - } - } - } - - /** - * Internal function, called by ValueAnimator, to set up the TypeEvaluator that will be used - * to calculate animated values. - */ - void init() { - if (mEvaluator == null) { - // We already handle int and float automatically, but not their Object - // equivalents - mEvaluator = (mValueType == Integer.class) ? sIntEvaluator : - (mValueType == Float.class) ? sFloatEvaluator : - null; - } - if (mEvaluator != null) { - // KeyframeSet knows how to evaluate the common types - only give it a custom - // evaluator if one has been set on this class - mKeyframeSet.setEvaluator(mEvaluator); - } - } - - /** - * The TypeEvaluator will the automatically determined based on the type of values - * supplied to PropertyValuesHolder. The evaluator can be manually set, however, if so - * desired. This may be important in cases where either the type of the values supplied - * do not match the way that they should be interpolated between, or if the values - * are of a custom type or one not currently understood by the animation system. Currently, - * only values of type float and int (and their Object equivalents: Float - * and Integer) are correctly interpolated; all other types require setting a TypeEvaluator. - * @param evaluator - */ - public void setEvaluator(TypeEvaluator evaluator) { - mEvaluator = evaluator; - mKeyframeSet.setEvaluator(evaluator); - } - - /** - * Function used to calculate the value according to the evaluator set up for - * this PropertyValuesHolder object. This function is called by ValueAnimator.animateValue(). - * - * @param fraction The elapsed, interpolated fraction of the animation. - */ - void calculateValue(float fraction) { - mAnimatedValue = mKeyframeSet.getValue(fraction); - } - - /** - * Sets the name of the property that will be animated. This name is used to derive - * a setter function that will be called to set animated values. - * For example, a property name of foo will result - * in a call to the function setFoo() on the target object. If either - * valueFrom or valueTo is null, then a getter function will - * also be derived and called. - * - *

Note that the setter function derived from this property name - * must take the same parameter type as the - * valueFrom and valueTo properties, otherwise the call to - * the setter function will fail.

- * - * @param propertyName The name of the property being animated. - */ - public void setPropertyName(String propertyName) { - mPropertyName = propertyName; - } - - /** - * Sets the property that will be animated. - * - *

Note that if this PropertyValuesHolder object is used with ObjectAnimator, the property - * must exist on the target object specified in that ObjectAnimator.

- * - * @param property The property being animated. - */ - //public void setProperty(Property property) { - // mProperty = property; - //} - - /** - * Gets the name of the property that will be animated. This name will be used to derive - * a setter function that will be called to set animated values. - * For example, a property name of foo will result - * in a call to the function setFoo() on the target object. If either - * valueFrom or valueTo is null, then a getter function will - * also be derived and called. - */ - public String getPropertyName() { - return mPropertyName; - } - - /** - * Internal function, called by ValueAnimator and ObjectAnimator, to retrieve the value - * most recently calculated in calculateValue(). - * @return - */ - Object getAnimatedValue() { - return mAnimatedValue; - } - - @Override - public String toString() { - return mPropertyName + ": " + mKeyframeSet.toString(); - } - - /** - * Utility method to derive a setter/getter method name from a property name, where the - * prefix is typically "set" or "get" and the first letter of the property name is - * capitalized. - * - * @param prefix The precursor to the method name, before the property name begins, typically - * "set" or "get". - * @param propertyName The name of the property that represents the bulk of the method name - * after the prefix. The first letter of this word will be capitalized in the resulting - * method name. - * @return String the property name converted to a method name according to the conventions - * specified above. - */ - static String getMethodName(String prefix, String propertyName) { - if (propertyName == null || propertyName.length() == 0) { - // shouldn't get here - return prefix; - } - char firstLetter = Character.toUpperCase(propertyName.charAt(0)); - String theRest = propertyName.substring(1); - return prefix + firstLetter + theRest; - } - - static class IntPropertyValuesHolder extends PropertyValuesHolder { - - // Cache JNI functions to avoid looking them up twice - //private static final HashMap> sJNISetterPropertyMap = - // new HashMap>(); - //int mJniSetter; - //private IntProperty mIntProperty; - - IntKeyframeSet mIntKeyframeSet; - int mIntAnimatedValue; - - public IntPropertyValuesHolder(String propertyName, IntKeyframeSet keyframeSet) { - super(propertyName); - mValueType = int.class; - mKeyframeSet = keyframeSet; - mIntKeyframeSet = (IntKeyframeSet) mKeyframeSet; - } - - //public IntPropertyValuesHolder(Property property, IntKeyframeSet keyframeSet) { - // super(property); - // mValueType = int.class; - // mKeyframeSet = keyframeSet; - // mIntKeyframeSet = (IntKeyframeSet) mKeyframeSet; - // if (property instanceof IntProperty) { - // mIntProperty = (IntProperty) mProperty; - // } - //} - - public IntPropertyValuesHolder(String propertyName, int... values) { - super(propertyName); - setIntValues(values); - } - - //public IntPropertyValuesHolder(Property property, int... values) { - // super(property); - // setIntValues(values); - // if (property instanceof IntProperty) { - // mIntProperty = (IntProperty) mProperty; - // } - //} - - @Override - public void setIntValues(int... values) { - super.setIntValues(values); - mIntKeyframeSet = (IntKeyframeSet) mKeyframeSet; - } - - @Override - void calculateValue(float fraction) { - mIntAnimatedValue = mIntKeyframeSet.getIntValue(fraction); - } - - @Override - Object getAnimatedValue() { - return mIntAnimatedValue; - } - - @Override - public IntPropertyValuesHolder clone() { - IntPropertyValuesHolder newPVH = (IntPropertyValuesHolder) super.clone(); - newPVH.mIntKeyframeSet = (IntKeyframeSet) newPVH.mKeyframeSet; - return newPVH; - } - - /** - * Internal function to set the value on the target object, using the setter set up - * earlier on this PropertyValuesHolder object. This function is called by ObjectAnimator - * to handle turning the value calculated by ValueAnimator into a value set on the object - * according to the name of the property. - * @param target The target object on which the value is set - */ - @Override - void setAnimatedValue(Object target) { - //if (mIntProperty != null) { - // mIntProperty.setValue(target, mIntAnimatedValue); - // return; - //} - //if (mProperty != null) { - // mProperty.set(target, mIntAnimatedValue); - // return; - //} - //if (mJniSetter != 0) { - // nCallIntMethod(target, mJniSetter, mIntAnimatedValue); - // return; - //} - if (mSetter != null) { - try { - mTmpValueArray[0] = mIntAnimatedValue; - mSetter.invoke(target, mTmpValueArray); - } catch (InvocationTargetException e) { - Log.e("PropertyValuesHolder", e.toString()); - } catch (IllegalAccessException e) { - Log.e("PropertyValuesHolder", e.toString()); - } - } - } - - @Override - void setupSetter(Class targetClass) { - //if (mProperty != null) { - // return; - //} - // Check new static hashmap for setter method - //try { - // mPropertyMapLock.writeLock().lock(); - // HashMap propertyMap = sJNISetterPropertyMap.get(targetClass); - // if (propertyMap != null) { - // Integer mJniSetterInteger = propertyMap.get(mPropertyName); - // if (mJniSetterInteger != null) { - // mJniSetter = mJniSetterInteger; - // } - // } - // if (mJniSetter == 0) { - // String methodName = getMethodName("set", mPropertyName); - // mJniSetter = nGetIntMethod(targetClass, methodName); - // if (mJniSetter != 0) { - // if (propertyMap == null) { - // propertyMap = new HashMap(); - // sJNISetterPropertyMap.put(targetClass, propertyMap); - // } - // propertyMap.put(mPropertyName, mJniSetter); - // } - // } - //} catch (NoSuchMethodError e) { - // Log.d("PropertyValuesHolder", - // "Can't find native method using JNI, use reflection" + e); - //} finally { - // mPropertyMapLock.writeLock().unlock(); - //} - //if (mJniSetter == 0) { - // Couldn't find method through fast JNI approach - just use reflection - super.setupSetter(targetClass); - //} - } - } - - static class FloatPropertyValuesHolder extends PropertyValuesHolder { - - // Cache JNI functions to avoid looking them up twice - //private static final HashMap> sJNISetterPropertyMap = - // new HashMap>(); - //int mJniSetter; - //private FloatProperty mFloatProperty; - - FloatKeyframeSet mFloatKeyframeSet; - float mFloatAnimatedValue; - - public FloatPropertyValuesHolder(String propertyName, FloatKeyframeSet keyframeSet) { - super(propertyName); - mValueType = float.class; - mKeyframeSet = keyframeSet; - mFloatKeyframeSet = (FloatKeyframeSet) mKeyframeSet; - } - - //public FloatPropertyValuesHolder(Property property, FloatKeyframeSet keyframeSet) { - // super(property); - // mValueType = float.class; - // mKeyframeSet = keyframeSet; - // mFloatKeyframeSet = (FloatKeyframeSet) mKeyframeSet; - // if (property instanceof FloatProperty) { - // mFloatProperty = (FloatProperty) mProperty; - // } - //} - - public FloatPropertyValuesHolder(String propertyName, float... values) { - super(propertyName); - setFloatValues(values); - } - - //public FloatPropertyValuesHolder(Property property, float... values) { - // super(property); - // setFloatValues(values); - // if (property instanceof FloatProperty) { - // mFloatProperty = (FloatProperty) mProperty; - // } - //} - - @Override - public void setFloatValues(float... values) { - super.setFloatValues(values); - mFloatKeyframeSet = (FloatKeyframeSet) mKeyframeSet; - } - - @Override - void calculateValue(float fraction) { - mFloatAnimatedValue = mFloatKeyframeSet.getFloatValue(fraction); - } - - @Override - Object getAnimatedValue() { - return mFloatAnimatedValue; - } - - @Override - public FloatPropertyValuesHolder clone() { - FloatPropertyValuesHolder newPVH = (FloatPropertyValuesHolder) super.clone(); - newPVH.mFloatKeyframeSet = (FloatKeyframeSet) newPVH.mKeyframeSet; - return newPVH; - } - - /** - * Internal function to set the value on the target object, using the setter set up - * earlier on this PropertyValuesHolder object. This function is called by ObjectAnimator - * to handle turning the value calculated by ValueAnimator into a value set on the object - * according to the name of the property. - * @param target The target object on which the value is set - */ - @Override - void setAnimatedValue(Object target) { - //if (mFloatProperty != null) { - // mFloatProperty.setValue(target, mFloatAnimatedValue); - // return; - //} - //if (mProperty != null) { - // mProperty.set(target, mFloatAnimatedValue); - // return; - //} - //if (mJniSetter != 0) { - // nCallFloatMethod(target, mJniSetter, mFloatAnimatedValue); - // return; - //} - if (mSetter != null) { - try { - mTmpValueArray[0] = mFloatAnimatedValue; - mSetter.invoke(target, mTmpValueArray); - } catch (InvocationTargetException e) { - Log.e("PropertyValuesHolder", e.toString()); - } catch (IllegalAccessException e) { - Log.e("PropertyValuesHolder", e.toString()); - } - } - } - - @Override - void setupSetter(Class targetClass) { - //if (mProperty != null) { - // return; - //} - // Check new static hashmap for setter method - //try { - // mPropertyMapLock.writeLock().lock(); - // HashMap propertyMap = sJNISetterPropertyMap.get(targetClass); - // if (propertyMap != null) { - // Integer mJniSetterInteger = propertyMap.get(mPropertyName); - // if (mJniSetterInteger != null) { - // mJniSetter = mJniSetterInteger; - // } - // } - // if (mJniSetter == 0) { - // String methodName = getMethodName("set", mPropertyName); - // mJniSetter = nGetFloatMethod(targetClass, methodName); - // if (mJniSetter != 0) { - // if (propertyMap == null) { - // propertyMap = new HashMap(); - // sJNISetterPropertyMap.put(targetClass, propertyMap); - // } - // propertyMap.put(mPropertyName, mJniSetter); - // } - // } - //} catch (NoSuchMethodError e) { - // Log.d("PropertyValuesHolder", - // "Can't find native method using JNI, use reflection" + e); - //} finally { - // mPropertyMapLock.writeLock().unlock(); - //} - //if (mJniSetter == 0) { - // Couldn't find method through fast JNI approach - just use reflection - super.setupSetter(targetClass); - //} - } - - } - - //native static private int nGetIntMethod(Class targetClass, String methodName); - //native static private int nGetFloatMethod(Class targetClass, String methodName); - //native static private void nCallIntMethod(Object target, int methodID, int arg); - //native static private void nCallFloatMethod(Object target, int methodID, float arg); -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/TypeEvaluator.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/TypeEvaluator.java deleted file mode 100755 index 0ea319244..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/TypeEvaluator.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 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.internal.nineoldandroids.animation; - -/** - * Interface for use with the {@link ValueAnimator#setEvaluator(TypeEvaluator)} function. Evaluators - * allow developers to create animations on arbitrary property types, by allowing them to supply - * custom evaulators for types that are not automatically understood and used by the animation - * system. - * - * @see ValueAnimator#setEvaluator(TypeEvaluator) - */ -public interface TypeEvaluator { - - /** - * This function returns the result of linearly interpolating the start and end values, with - * fraction representing the proportion between the start and end values. The - * calculation is a simple parametric calculation: result = x0 + t * (v1 - v0), - * where x0 is startValue, x1 is endValue, - * and t is fraction. - * - * @param fraction The fraction from the starting to the ending values - * @param startValue The start value. - * @param endValue The end value. - * @return A linear interpolation between the start and end values, given the - * fraction parameter. - */ - public T evaluate(float fraction, T startValue, T endValue); - -} \ No newline at end of file diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/ValueAnimator.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/ValueAnimator.java deleted file mode 100755 index d8a12c688..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/ValueAnimator.java +++ /dev/null @@ -1,1265 +0,0 @@ -/* - * 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.internal.nineoldandroids.animation; - -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.util.AndroidRuntimeException; -import android.view.animation.AccelerateDecelerateInterpolator; -import android.view.animation.AnimationUtils; -import android.view.animation.Interpolator; -import android.view.animation.LinearInterpolator; - -import java.util.ArrayList; -import java.util.HashMap; - -/** - * This class provides a simple timing engine for running animations - * which calculate animated values and set them on target objects. - * - *

There is a single timing pulse that all animations use. It runs in a - * custom handler to ensure that property changes happen on the UI thread.

- * - *

By default, ValueAnimator uses non-linear time interpolation, via the - * {@link AccelerateDecelerateInterpolator} class, which accelerates into and decelerates - * out of an animation. This behavior can be changed by calling - * {@link ValueAnimator#setInterpolator(TimeInterpolator)}.

- */ -@SuppressWarnings({"rawtypes", "unchecked"}) -public class ValueAnimator extends Animator { - - /** - * Internal constants - */ - - /* - * The default amount of time in ms between animation frames - */ - private static final long DEFAULT_FRAME_DELAY = 10; - - /** - * Messages sent to timing handler: START is sent when an animation first begins, FRAME is sent - * by the handler to itself to process the next animation frame - */ - static final int ANIMATION_START = 0; - static final int ANIMATION_FRAME = 1; - - /** - * Values used with internal variable mPlayingState to indicate the current state of an - * animation. - */ - static final int STOPPED = 0; // Not yet playing - static final int RUNNING = 1; // Playing normally - static final int SEEKED = 2; // Seeked to some time value - - /** - * Internal variables - * NOTE: This object implements the clone() method, making a deep copy of any referenced - * objects. As other non-trivial fields are added to this class, make sure to add logic - * to clone() to make deep copies of them. - */ - - // The first time that the animation's animateFrame() method is called. This time is used to - // determine elapsed time (and therefore the elapsed fraction) in subsequent calls - // to animateFrame() - long mStartTime; - - /** - * Set when setCurrentPlayTime() is called. If negative, animation is not currently seeked - * to a value. - */ - long mSeekTime = -1; - - // TODO: We access the following ThreadLocal variables often, some of them on every update. - // If ThreadLocal access is significantly expensive, we may want to put all of these - // fields into a structure sot hat we just access ThreadLocal once to get the reference - // to that structure, then access the structure directly for each field. - - // The static sAnimationHandler processes the internal timing loop on which all animations - // are based - private static ThreadLocal sAnimationHandler = - new ThreadLocal(); - - // The per-thread list of all active animations - private static final ThreadLocal> sAnimations = - new ThreadLocal>() { - @Override - protected ArrayList initialValue() { - return new ArrayList(); - } - }; - - // The per-thread set of animations to be started on the next animation frame - private static final ThreadLocal> sPendingAnimations = - new ThreadLocal>() { - @Override - protected ArrayList initialValue() { - return new ArrayList(); - } - }; - - /** - * Internal per-thread collections used to avoid set collisions as animations start and end - * while being processed. - */ - private static final ThreadLocal> sDelayedAnims = - new ThreadLocal>() { - @Override - protected ArrayList initialValue() { - return new ArrayList(); - } - }; - - private static final ThreadLocal> sEndingAnims = - new ThreadLocal>() { - @Override - protected ArrayList initialValue() { - return new ArrayList(); - } - }; - - private static final ThreadLocal> sReadyAnims = - new ThreadLocal>() { - @Override - protected ArrayList initialValue() { - return new ArrayList(); - } - }; - - // The time interpolator to be used if none is set on the animation - private static final /*Time*/Interpolator sDefaultInterpolator = - new AccelerateDecelerateInterpolator(); - - // type evaluators for the primitive types handled by this implementation - //private static final TypeEvaluator sIntEvaluator = new IntEvaluator(); - //private static final TypeEvaluator sFloatEvaluator = new FloatEvaluator(); - - /** - * Used to indicate whether the animation is currently playing in reverse. This causes the - * elapsed fraction to be inverted to calculate the appropriate values. - */ - private boolean mPlayingBackwards = false; - - /** - * This variable tracks the current iteration that is playing. When mCurrentIteration exceeds the - * repeatCount (if repeatCount!=INFINITE), the animation ends - */ - private int mCurrentIteration = 0; - - /** - * Tracks current elapsed/eased fraction, for querying in getAnimatedFraction(). - */ - private float mCurrentFraction = 0f; - - /** - * Tracks whether a startDelay'd animation has begun playing through the startDelay. - */ - private boolean mStartedDelay = false; - - /** - * Tracks the time at which the animation began playing through its startDelay. This is - * different from the mStartTime variable, which is used to track when the animation became - * active (which is when the startDelay expired and the animation was added to the active - * animations list). - */ - private long mDelayStartTime; - - /** - * Flag that represents the current state of the animation. Used to figure out when to start - * an animation (if state == STOPPED). Also used to end an animation that - * has been cancel()'d or end()'d since the last animation frame. Possible values are - * STOPPED, RUNNING, SEEKED. - */ - int mPlayingState = STOPPED; - - /** - * Additional playing state to indicate whether an animator has been start()'d. There is - * some lag between a call to start() and the first animation frame. We should still note - * that the animation has been started, even if it's first animation frame has not yet - * happened, and reflect that state in isRunning(). - * Note that delayed animations are different: they are not started until their first - * animation frame, which occurs after their delay elapses. - */ - private boolean mRunning = false; - - /** - * Additional playing state to indicate whether an animator has been start()'d, whether or - * not there is a nonzero startDelay. - */ - private boolean mStarted = false; - - /** - * Flag that denotes whether the animation is set up and ready to go. Used to - * set up animation that has not yet been started. - */ - boolean mInitialized = false; - - // - // Backing variables - // - - // How long the animation should last in ms - private long mDuration = 300; - - // The amount of time in ms to delay starting the animation after start() is called - private long mStartDelay = 0; - - // The number of milliseconds between animation frames - private static long sFrameDelay = DEFAULT_FRAME_DELAY; - - // The number of times the animation will repeat. The default is 0, which means the animation - // will play only once - private int mRepeatCount = 0; - - /** - * The type of repetition that will occur when repeatMode is nonzero. RESTART means the - * animation will start from the beginning on every new cycle. REVERSE means the animation - * will reverse directions on each iteration. - */ - private int mRepeatMode = RESTART; - - /** - * The time interpolator to be used. The elapsed fraction of the animation will be passed - * through this interpolator to calculate the interpolated fraction, which is then used to - * calculate the animated values. - */ - private /*Time*/Interpolator mInterpolator = sDefaultInterpolator; - - /** - * The set of listeners to be sent events through the life of an animation. - */ - private ArrayList mUpdateListeners = null; - - /** - * The property/value sets being animated. - */ - PropertyValuesHolder[] mValues; - - /** - * A hashmap of the PropertyValuesHolder objects. This map is used to lookup animated values - * by property name during calls to getAnimatedValue(String). - */ - HashMap mValuesMap; - - /** - * Public constants - */ - - /** - * When the animation reaches the end and repeatCount is INFINITE - * or a positive value, the animation restarts from the beginning. - */ - public static final int RESTART = 1; - /** - * When the animation reaches the end and repeatCount is INFINITE - * or a positive value, the animation reverses direction on every iteration. - */ - public static final int REVERSE = 2; - /** - * This value used used with the {@link #setRepeatCount(int)} property to repeat - * the animation indefinitely. - */ - public static final int INFINITE = -1; - - /** - * Creates a new ValueAnimator object. This default constructor is primarily for - * use internally; the factory methods which take parameters are more generally - * useful. - */ - public ValueAnimator() { - } - - /** - * Constructs and returns a ValueAnimator that animates between int values. A single - * value implies that that value is the one being animated to. However, this is not typically - * useful in a ValueAnimator object because there is no way for the object to determine the - * starting value for the animation (unlike ObjectAnimator, which can derive that value - * from the target object and property being animated). Therefore, there should typically - * be two or more values. - * - * @param values A set of values that the animation will animate between over time. - * @return A ValueAnimator object that is set up to animate between the given values. - */ - public static ValueAnimator ofInt(int... values) { - ValueAnimator anim = new ValueAnimator(); - anim.setIntValues(values); - return anim; - } - - /** - * Constructs and returns a ValueAnimator that animates between float values. A single - * value implies that that value is the one being animated to. However, this is not typically - * useful in a ValueAnimator object because there is no way for the object to determine the - * starting value for the animation (unlike ObjectAnimator, which can derive that value - * from the target object and property being animated). Therefore, there should typically - * be two or more values. - * - * @param values A set of values that the animation will animate between over time. - * @return A ValueAnimator object that is set up to animate between the given values. - */ - public static ValueAnimator ofFloat(float... values) { - ValueAnimator anim = new ValueAnimator(); - anim.setFloatValues(values); - return anim; - } - - /** - * Constructs and returns a ValueAnimator that animates between the values - * specified in the PropertyValuesHolder objects. - * - * @param values A set of PropertyValuesHolder objects whose values will be animated - * between over time. - * @return A ValueAnimator object that is set up to animate between the given values. - */ - public static ValueAnimator ofPropertyValuesHolder(PropertyValuesHolder... values) { - ValueAnimator anim = new ValueAnimator(); - anim.setValues(values); - return anim; - } - /** - * Constructs and returns a ValueAnimator that animates between Object values. A single - * value implies that that value is the one being animated to. However, this is not typically - * useful in a ValueAnimator object because there is no way for the object to determine the - * starting value for the animation (unlike ObjectAnimator, which can derive that value - * from the target object and property being animated). Therefore, there should typically - * be two or more values. - * - *

Since ValueAnimator does not know how to animate between arbitrary Objects, this - * factory method also takes a TypeEvaluator object that the ValueAnimator will use - * to perform that interpolation. - * - * @param evaluator A TypeEvaluator that will be called on each animation frame to - * provide the ncessry interpolation between the Object values to derive the animated - * value. - * @param values A set of values that the animation will animate between over time. - * @return A ValueAnimator object that is set up to animate between the given values. - */ - public static ValueAnimator ofObject(TypeEvaluator evaluator, Object... values) { - ValueAnimator anim = new ValueAnimator(); - anim.setObjectValues(values); - anim.setEvaluator(evaluator); - return anim; - } - - /** - * Sets int values that will be animated between. A single - * value implies that that value is the one being animated to. However, this is not typically - * useful in a ValueAnimator object because there is no way for the object to determine the - * starting value for the animation (unlike ObjectAnimator, which can derive that value - * from the target object and property being animated). Therefore, there should typically - * be two or more values. - * - *

If there are already multiple sets of values defined for this ValueAnimator via more - * than one PropertyValuesHolder object, this method will set the values for the first - * of those objects.

- * - * @param values A set of values that the animation will animate between over time. - */ - public void setIntValues(int... values) { - if (values == null || values.length == 0) { - return; - } - if (mValues == null || mValues.length == 0) { - setValues(new PropertyValuesHolder[]{PropertyValuesHolder.ofInt("", values)}); - } else { - PropertyValuesHolder valuesHolder = mValues[0]; - valuesHolder.setIntValues(values); - } - // New property/values/target should cause re-initialization prior to starting - mInitialized = false; - } - - /** - * Sets float values that will be animated between. A single - * value implies that that value is the one being animated to. However, this is not typically - * useful in a ValueAnimator object because there is no way for the object to determine the - * starting value for the animation (unlike ObjectAnimator, which can derive that value - * from the target object and property being animated). Therefore, there should typically - * be two or more values. - * - *

If there are already multiple sets of values defined for this ValueAnimator via more - * than one PropertyValuesHolder object, this method will set the values for the first - * of those objects.

- * - * @param values A set of values that the animation will animate between over time. - */ - public void setFloatValues(float... values) { - if (values == null || values.length == 0) { - return; - } - if (mValues == null || mValues.length == 0) { - setValues(new PropertyValuesHolder[]{PropertyValuesHolder.ofFloat("", values)}); - } else { - PropertyValuesHolder valuesHolder = mValues[0]; - valuesHolder.setFloatValues(values); - } - // New property/values/target should cause re-initialization prior to starting - mInitialized = false; - } - - /** - * Sets the values to animate between for this animation. A single - * value implies that that value is the one being animated to. However, this is not typically - * useful in a ValueAnimator object because there is no way for the object to determine the - * starting value for the animation (unlike ObjectAnimator, which can derive that value - * from the target object and property being animated). Therefore, there should typically - * be two or more values. - * - *

If there are already multiple sets of values defined for this ValueAnimator via more - * than one PropertyValuesHolder object, this method will set the values for the first - * of those objects.

- * - *

There should be a TypeEvaluator set on the ValueAnimator that knows how to interpolate - * between these value objects. ValueAnimator only knows how to interpolate between the - * primitive types specified in the other setValues() methods.

- * - * @param values The set of values to animate between. - */ - public void setObjectValues(Object... values) { - if (values == null || values.length == 0) { - return; - } - if (mValues == null || mValues.length == 0) { - setValues(new PropertyValuesHolder[]{PropertyValuesHolder.ofObject("", - (TypeEvaluator)null, values)}); - } else { - PropertyValuesHolder valuesHolder = mValues[0]; - valuesHolder.setObjectValues(values); - } - // New property/values/target should cause re-initialization prior to starting - mInitialized = false; - } - - /** - * Sets the values, per property, being animated between. This function is called internally - * by the constructors of ValueAnimator that take a list of values. But an ValueAnimator can - * be constructed without values and this method can be called to set the values manually - * instead. - * - * @param values The set of values, per property, being animated between. - */ - public void setValues(PropertyValuesHolder... values) { - int numValues = values.length; - mValues = values; - mValuesMap = new HashMap(numValues); - for (int i = 0; i < numValues; ++i) { - PropertyValuesHolder valuesHolder = values[i]; - mValuesMap.put(valuesHolder.getPropertyName(), valuesHolder); - } - // New property/values/target should cause re-initialization prior to starting - mInitialized = false; - } - - /** - * Returns the values that this ValueAnimator animates between. These values are stored in - * PropertyValuesHolder objects, even if the ValueAnimator was created with a simple list - * of value objects instead. - * - * @return PropertyValuesHolder[] An array of PropertyValuesHolder objects which hold the - * values, per property, that define the animation. - */ - public PropertyValuesHolder[] getValues() { - return mValues; - } - - /** - * This function is called immediately before processing the first animation - * frame of an animation. If there is a nonzero startDelay, the - * function is called after that delay ends. - * It takes care of the final initialization steps for the - * animation. - * - *

Overrides of this method should call the superclass method to ensure - * that internal mechanisms for the animation are set up correctly.

- */ - void initAnimation() { - if (!mInitialized) { - int numValues = mValues.length; - for (int i = 0; i < numValues; ++i) { - mValues[i].init(); - } - mInitialized = true; - } - } - - - /** - * Sets the length of the animation. The default duration is 300 milliseconds. - * - * @param duration The length of the animation, in milliseconds. This value cannot - * be negative. - * @return ValueAnimator The object called with setDuration(). This return - * value makes it easier to compose statements together that construct and then set the - * duration, as in ValueAnimator.ofInt(0, 10).setDuration(500).start(). - */ - public ValueAnimator setDuration(long duration) { - if (duration < 0) { - throw new IllegalArgumentException("Animators cannot have negative duration: " + - duration); - } - mDuration = duration; - return this; - } - - /** - * Gets the length of the animation. The default duration is 300 milliseconds. - * - * @return The length of the animation, in milliseconds. - */ - public long getDuration() { - return mDuration; - } - - /** - * Sets the position of the animation to the specified point in time. This time should - * be between 0 and the total duration of the animation, including any repetition. If - * the animation has not yet been started, then it will not advance forward after it is - * set to this time; it will simply set the time to this value and perform any appropriate - * actions based on that time. If the animation is already running, then setCurrentPlayTime() - * will set the current playing time to this value and continue playing from that point. - * - * @param playTime The time, in milliseconds, to which the animation is advanced or rewound. - */ - public void setCurrentPlayTime(long playTime) { - initAnimation(); - long currentTime = AnimationUtils.currentAnimationTimeMillis(); - if (mPlayingState != RUNNING) { - mSeekTime = playTime; - mPlayingState = SEEKED; - } - mStartTime = currentTime - playTime; - animationFrame(currentTime); - } - - /** - * Gets the current position of the animation in time, which is equal to the current - * time minus the time that the animation started. An animation that is not yet started will - * return a value of zero. - * - * @return The current position in time of the animation. - */ - public long getCurrentPlayTime() { - if (!mInitialized || mPlayingState == STOPPED) { - return 0; - } - return AnimationUtils.currentAnimationTimeMillis() - mStartTime; - } - - /** - * This custom, static handler handles the timing pulse that is shared by - * all active animations. This approach ensures that the setting of animation - * values will happen on the UI thread and that all animations will share - * the same times for calculating their values, which makes synchronizing - * animations possible. - * - */ - private static class AnimationHandler extends Handler { - /** - * There are only two messages that we care about: ANIMATION_START and - * ANIMATION_FRAME. The START message is sent when an animation's start() - * method is called. It cannot start synchronously when start() is called - * because the call may be on the wrong thread, and it would also not be - * synchronized with other animations because it would not start on a common - * timing pulse. So each animation sends a START message to the handler, which - * causes the handler to place the animation on the active animations queue and - * start processing frames for that animation. - * The FRAME message is the one that is sent over and over while there are any - * active animations to process. - */ - @Override - public void handleMessage(Message msg) { - boolean callAgain = true; - ArrayList animations = sAnimations.get(); - ArrayList delayedAnims = sDelayedAnims.get(); - switch (msg.what) { - // TODO: should we avoid sending frame message when starting if we - // were already running? - case ANIMATION_START: - ArrayList pendingAnimations = sPendingAnimations.get(); - if (animations.size() > 0 || delayedAnims.size() > 0) { - callAgain = false; - } - // pendingAnims holds any animations that have requested to be started - // We're going to clear sPendingAnimations, but starting animation may - // cause more to be added to the pending list (for example, if one animation - // starting triggers another starting). So we loop until sPendingAnimations - // is empty. - while (pendingAnimations.size() > 0) { - ArrayList pendingCopy = - (ArrayList) pendingAnimations.clone(); - pendingAnimations.clear(); - int count = pendingCopy.size(); - for (int i = 0; i < count; ++i) { - ValueAnimator anim = pendingCopy.get(i); - // If the animation has a startDelay, place it on the delayed list - if (anim.mStartDelay == 0) { - anim.startAnimation(); - } else { - delayedAnims.add(anim); - } - } - } - // fall through to process first frame of new animations - case ANIMATION_FRAME: - // currentTime holds the common time for all animations processed - // during this frame - long currentTime = AnimationUtils.currentAnimationTimeMillis(); - ArrayList readyAnims = sReadyAnims.get(); - ArrayList endingAnims = sEndingAnims.get(); - - // First, process animations currently sitting on the delayed queue, adding - // them to the active animations if they are ready - int numDelayedAnims = delayedAnims.size(); - for (int i = 0; i < numDelayedAnims; ++i) { - ValueAnimator anim = delayedAnims.get(i); - if (anim.delayedAnimationFrame(currentTime)) { - readyAnims.add(anim); - } - } - int numReadyAnims = readyAnims.size(); - if (numReadyAnims > 0) { - for (int i = 0; i < numReadyAnims; ++i) { - ValueAnimator anim = readyAnims.get(i); - anim.startAnimation(); - anim.mRunning = true; - delayedAnims.remove(anim); - } - readyAnims.clear(); - } - - // Now process all active animations. The return value from animationFrame() - // tells the handler whether it should now be ended - int numAnims = animations.size(); - int i = 0; - while (i < numAnims) { - ValueAnimator anim = animations.get(i); - if (anim.animationFrame(currentTime)) { - endingAnims.add(anim); - } - if (animations.size() == numAnims) { - ++i; - } else { - // An animation might be canceled or ended by client code - // during the animation frame. Check to see if this happened by - // seeing whether the current index is the same as it was before - // calling animationFrame(). Another approach would be to copy - // animations to a temporary list and process that list instead, - // but that entails garbage and processing overhead that would - // be nice to avoid. - --numAnims; - endingAnims.remove(anim); - } - } - if (endingAnims.size() > 0) { - for (i = 0; i < endingAnims.size(); ++i) { - endingAnims.get(i).endAnimation(); - } - endingAnims.clear(); - } - - // If there are still active or delayed animations, call the handler again - // after the frameDelay - if (callAgain && (!animations.isEmpty() || !delayedAnims.isEmpty())) { - sendEmptyMessageDelayed(ANIMATION_FRAME, Math.max(0, sFrameDelay - - (AnimationUtils.currentAnimationTimeMillis() - currentTime))); - } - break; - } - } - } - - /** - * The amount of time, in milliseconds, to delay starting the animation after - * {@link #start()} is called. - * - * @return the number of milliseconds to delay running the animation - */ - public long getStartDelay() { - return mStartDelay; - } - - /** - * The amount of time, in milliseconds, to delay starting the animation after - * {@link #start()} is called. - - * @param startDelay The amount of the delay, in milliseconds - */ - public void setStartDelay(long startDelay) { - this.mStartDelay = startDelay; - } - - /** - * The amount of time, in milliseconds, between each frame of the animation. This is a - * requested time that the animation will attempt to honor, but the actual delay between - * frames may be different, depending on system load and capabilities. This is a static - * function because the same delay will be applied to all animations, since they are all - * run off of a single timing loop. - * - * @return the requested time between frames, in milliseconds - */ - public static long getFrameDelay() { - return sFrameDelay; - } - - /** - * The amount of time, in milliseconds, between each frame of the animation. This is a - * requested time that the animation will attempt to honor, but the actual delay between - * frames may be different, depending on system load and capabilities. This is a static - * function because the same delay will be applied to all animations, since they are all - * run off of a single timing loop. - * - * @param frameDelay the requested time between frames, in milliseconds - */ - public static void setFrameDelay(long frameDelay) { - sFrameDelay = frameDelay; - } - - /** - * The most recent value calculated by this ValueAnimator when there is just one - * property being animated. This value is only sensible while the animation is running. The main - * purpose for this read-only property is to retrieve the value from the ValueAnimator - * during a call to {@link AnimatorUpdateListener#onAnimationUpdate(ValueAnimator)}, which - * is called during each animation frame, immediately after the value is calculated. - * - * @return animatedValue The value most recently calculated by this ValueAnimator for - * the single property being animated. If there are several properties being animated - * (specified by several PropertyValuesHolder objects in the constructor), this function - * returns the animated value for the first of those objects. - */ - public Object getAnimatedValue() { - if (mValues != null && mValues.length > 0) { - return mValues[0].getAnimatedValue(); - } - // Shouldn't get here; should always have values unless ValueAnimator was set up wrong - return null; - } - - /** - * The most recent value calculated by this ValueAnimator for propertyName. - * The main purpose for this read-only property is to retrieve the value from the - * ValueAnimator during a call to - * {@link AnimatorUpdateListener#onAnimationUpdate(ValueAnimator)}, which - * is called during each animation frame, immediately after the value is calculated. - * - * @return animatedValue The value most recently calculated for the named property - * by this ValueAnimator. - */ - public Object getAnimatedValue(String propertyName) { - PropertyValuesHolder valuesHolder = mValuesMap.get(propertyName); - if (valuesHolder != null) { - return valuesHolder.getAnimatedValue(); - } else { - // At least avoid crashing if called with bogus propertyName - return null; - } - } - - /** - * Sets how many times the animation should be repeated. If the repeat - * count is 0, the animation is never repeated. If the repeat count is - * greater than 0 or {@link #INFINITE}, the repeat mode will be taken - * into account. The repeat count is 0 by default. - * - * @param value the number of times the animation should be repeated - */ - public void setRepeatCount(int value) { - mRepeatCount = value; - } - /** - * Defines how many times the animation should repeat. The default value - * is 0. - * - * @return the number of times the animation should repeat, or {@link #INFINITE} - */ - public int getRepeatCount() { - return mRepeatCount; - } - - /** - * Defines what this animation should do when it reaches the end. This - * setting is applied only when the repeat count is either greater than - * 0 or {@link #INFINITE}. Defaults to {@link #RESTART}. - * - * @param value {@link #RESTART} or {@link #REVERSE} - */ - public void setRepeatMode(int value) { - mRepeatMode = value; - } - - /** - * Defines what this animation should do when it reaches the end. - * - * @return either one of {@link #REVERSE} or {@link #RESTART} - */ - public int getRepeatMode() { - return mRepeatMode; - } - - /** - * Adds a listener to the set of listeners that are sent update events through the life of - * an animation. This method is called on all listeners for every frame of the animation, - * after the values for the animation have been calculated. - * - * @param listener the listener to be added to the current set of listeners for this animation. - */ - public void addUpdateListener(AnimatorUpdateListener listener) { - if (mUpdateListeners == null) { - mUpdateListeners = new ArrayList(); - } - mUpdateListeners.add(listener); - } - - /** - * Removes all listeners from the set listening to frame updates for this animation. - */ - public void removeAllUpdateListeners() { - if (mUpdateListeners == null) { - return; - } - mUpdateListeners.clear(); - mUpdateListeners = null; - } - - /** - * Removes a listener from the set listening to frame updates for this animation. - * - * @param listener the listener to be removed from the current set of update listeners - * for this animation. - */ - public void removeUpdateListener(AnimatorUpdateListener listener) { - if (mUpdateListeners == null) { - return; - } - mUpdateListeners.remove(listener); - if (mUpdateListeners.size() == 0) { - mUpdateListeners = null; - } - } - - - /** - * The time interpolator used in calculating the elapsed fraction of this animation. The - * interpolator determines whether the animation runs with linear or non-linear motion, - * such as acceleration and deceleration. The default value is - * {@link android.view.animation.AccelerateDecelerateInterpolator} - * - * @param value the interpolator to be used by this animation. A value of null - * will result in linear interpolation. - */ - @Override - public void setInterpolator(/*Time*/Interpolator value) { - if (value != null) { - mInterpolator = value; - } else { - mInterpolator = new LinearInterpolator(); - } - } - - /** - * Returns the timing interpolator that this ValueAnimator uses. - * - * @return The timing interpolator for this ValueAnimator. - */ - public /*Time*/Interpolator getInterpolator() { - return mInterpolator; - } - - /** - * The type evaluator to be used when calculating the animated values of this animation. - * The system will automatically assign a float or int evaluator based on the type - * of startValue and endValue in the constructor. But if these values - * are not one of these primitive types, or if different evaluation is desired (such as is - * necessary with int values that represent colors), a custom evaluator needs to be assigned. - * For example, when running an animation on color values, the {@link ArgbEvaluator} - * should be used to get correct RGB color interpolation. - * - *

If this ValueAnimator has only one set of values being animated between, this evaluator - * will be used for that set. If there are several sets of values being animated, which is - * the case if PropertyValuesHOlder objects were set on the ValueAnimator, then the evaluator - * is assigned just to the first PropertyValuesHolder object.

- * - * @param value the evaluator to be used this animation - */ - public void setEvaluator(TypeEvaluator value) { - if (value != null && mValues != null && mValues.length > 0) { - mValues[0].setEvaluator(value); - } - } - - /** - * Start the animation playing. This version of start() takes a boolean flag that indicates - * whether the animation should play in reverse. The flag is usually false, but may be set - * to true if called from the reverse() method. - * - *

The animation started by calling this method will be run on the thread that called - * this method. This thread should have a Looper on it (a runtime exception will be thrown if - * this is not the case). Also, if the animation will animate - * properties of objects in the view hierarchy, then the calling thread should be the UI - * thread for that view hierarchy.

- * - * @param playBackwards Whether the ValueAnimator should start playing in reverse. - */ - private void start(boolean playBackwards) { - if (Looper.myLooper() == null) { - throw new AndroidRuntimeException("Animators may only be run on Looper threads"); - } - mPlayingBackwards = playBackwards; - mCurrentIteration = 0; - mPlayingState = STOPPED; - mStarted = true; - mStartedDelay = false; - sPendingAnimations.get().add(this); - if (mStartDelay == 0) { - // This sets the initial value of the animation, prior to actually starting it running - setCurrentPlayTime(getCurrentPlayTime()); - mPlayingState = STOPPED; - mRunning = true; - - if (mListeners != null) { - ArrayList tmpListeners = - (ArrayList) mListeners.clone(); - int numListeners = tmpListeners.size(); - for (int i = 0; i < numListeners; ++i) { - tmpListeners.get(i).onAnimationStart(this); - } - } - } - AnimationHandler animationHandler = sAnimationHandler.get(); - if (animationHandler == null) { - animationHandler = new AnimationHandler(); - sAnimationHandler.set(animationHandler); - } - animationHandler.sendEmptyMessage(ANIMATION_START); - } - - @Override - public void start() { - start(false); - } - - @Override - public void cancel() { - // Only cancel if the animation is actually running or has been started and is about - // to run - if (mPlayingState != STOPPED || sPendingAnimations.get().contains(this) || - sDelayedAnims.get().contains(this)) { - // Only notify listeners if the animator has actually started - if (mRunning && mListeners != null) { - ArrayList tmpListeners = - (ArrayList) mListeners.clone(); - for (AnimatorListener listener : tmpListeners) { - listener.onAnimationCancel(this); - } - } - endAnimation(); - } - } - - @Override - public void end() { - if (!sAnimations.get().contains(this) && !sPendingAnimations.get().contains(this)) { - // Special case if the animation has not yet started; get it ready for ending - mStartedDelay = false; - startAnimation(); - } else if (!mInitialized) { - initAnimation(); - } - // The final value set on the target varies, depending on whether the animation - // was supposed to repeat an odd number of times - if (mRepeatCount > 0 && (mRepeatCount & 0x01) == 1) { - animateValue(0f); - } else { - animateValue(1f); - } - endAnimation(); - } - - @Override - public boolean isRunning() { - return (mPlayingState == RUNNING || mRunning); - } - - @Override - public boolean isStarted() { - return mStarted; - } - - /** - * Plays the ValueAnimator in reverse. If the animation is already running, - * it will stop itself and play backwards from the point reached when reverse was called. - * If the animation is not currently running, then it will start from the end and - * play backwards. This behavior is only set for the current animation; future playing - * of the animation will use the default behavior of playing forward. - */ - public void reverse() { - mPlayingBackwards = !mPlayingBackwards; - if (mPlayingState == RUNNING) { - long currentTime = AnimationUtils.currentAnimationTimeMillis(); - long currentPlayTime = currentTime - mStartTime; - long timeLeft = mDuration - currentPlayTime; - mStartTime = currentTime - timeLeft; - } else { - start(true); - } - } - - /** - * Called internally to end an animation by removing it from the animations list. Must be - * called on the UI thread. - */ - private void endAnimation() { - sAnimations.get().remove(this); - sPendingAnimations.get().remove(this); - sDelayedAnims.get().remove(this); - mPlayingState = STOPPED; - if (mRunning && mListeners != null) { - ArrayList tmpListeners = - (ArrayList) mListeners.clone(); - int numListeners = tmpListeners.size(); - for (int i = 0; i < numListeners; ++i) { - tmpListeners.get(i).onAnimationEnd(this); - } - } - mRunning = false; - mStarted = false; - } - - /** - * Called internally to start an animation by adding it to the active animations list. Must be - * called on the UI thread. - */ - private void startAnimation() { - initAnimation(); - sAnimations.get().add(this); - if (mStartDelay > 0 && mListeners != null) { - // Listeners were already notified in start() if startDelay is 0; this is - // just for delayed animations - ArrayList tmpListeners = - (ArrayList) mListeners.clone(); - int numListeners = tmpListeners.size(); - for (int i = 0; i < numListeners; ++i) { - tmpListeners.get(i).onAnimationStart(this); - } - } - } - - /** - * Internal function called to process an animation frame on an animation that is currently - * sleeping through its startDelay phase. The return value indicates whether it - * should be woken up and put on the active animations queue. - * - * @param currentTime The current animation time, used to calculate whether the animation - * has exceeded its startDelay and should be started. - * @return True if the animation's startDelay has been exceeded and the animation - * should be added to the set of active animations. - */ - private boolean delayedAnimationFrame(long currentTime) { - if (!mStartedDelay) { - mStartedDelay = true; - mDelayStartTime = currentTime; - } else { - long deltaTime = currentTime - mDelayStartTime; - if (deltaTime > mStartDelay) { - // startDelay ended - start the anim and record the - // mStartTime appropriately - mStartTime = currentTime - (deltaTime - mStartDelay); - mPlayingState = RUNNING; - return true; - } - } - return false; - } - - /** - * This internal function processes a single animation frame for a given animation. The - * currentTime parameter is the timing pulse sent by the handler, used to calculate the - * elapsed duration, and therefore - * the elapsed fraction, of the animation. The return value indicates whether the animation - * should be ended (which happens when the elapsed time of the animation exceeds the - * animation's duration, including the repeatCount). - * - * @param currentTime The current time, as tracked by the static timing handler - * @return true if the animation's duration, including any repetitions due to - * repeatCount has been exceeded and the animation should be ended. - */ - boolean animationFrame(long currentTime) { - boolean done = false; - - if (mPlayingState == STOPPED) { - mPlayingState = RUNNING; - if (mSeekTime < 0) { - mStartTime = currentTime; - } else { - mStartTime = currentTime - mSeekTime; - // Now that we're playing, reset the seek time - mSeekTime = -1; - } - } - switch (mPlayingState) { - case RUNNING: - case SEEKED: - float fraction = mDuration > 0 ? (float)(currentTime - mStartTime) / mDuration : 1f; - if (fraction >= 1f) { - if (mCurrentIteration < mRepeatCount || mRepeatCount == INFINITE) { - // Time to repeat - if (mListeners != null) { - int numListeners = mListeners.size(); - for (int i = 0; i < numListeners; ++i) { - mListeners.get(i).onAnimationRepeat(this); - } - } - if (mRepeatMode == REVERSE) { - mPlayingBackwards = mPlayingBackwards ? false : true; - } - mCurrentIteration += (int)fraction; - fraction = fraction % 1f; - mStartTime += mDuration; - } else { - done = true; - fraction = Math.min(fraction, 1.0f); - } - } - if (mPlayingBackwards) { - fraction = 1f - fraction; - } - animateValue(fraction); - break; - } - - return done; - } - - /** - * Returns the current animation fraction, which is the elapsed/interpolated fraction used in - * the most recent frame update on the animation. - * - * @return Elapsed/interpolated fraction of the animation. - */ - public float getAnimatedFraction() { - return mCurrentFraction; - } - - /** - * This method is called with the elapsed fraction of the animation during every - * animation frame. This function turns the elapsed fraction into an interpolated fraction - * and then into an animated value (from the evaluator. The function is called mostly during - * animation updates, but it is also called when the end() - * function is called, to set the final value on the property. - * - *

Overrides of this method must call the superclass to perform the calculation - * of the animated value.

- * - * @param fraction The elapsed fraction of the animation. - */ - void animateValue(float fraction) { - fraction = mInterpolator.getInterpolation(fraction); - mCurrentFraction = fraction; - int numValues = mValues.length; - for (int i = 0; i < numValues; ++i) { - mValues[i].calculateValue(fraction); - } - if (mUpdateListeners != null) { - int numListeners = mUpdateListeners.size(); - for (int i = 0; i < numListeners; ++i) { - mUpdateListeners.get(i).onAnimationUpdate(this); - } - } - } - - @Override - public ValueAnimator clone() { - final ValueAnimator anim = (ValueAnimator) super.clone(); - if (mUpdateListeners != null) { - ArrayList oldListeners = mUpdateListeners; - anim.mUpdateListeners = new ArrayList(); - int numListeners = oldListeners.size(); - for (int i = 0; i < numListeners; ++i) { - anim.mUpdateListeners.add(oldListeners.get(i)); - } - } - anim.mSeekTime = -1; - anim.mPlayingBackwards = false; - anim.mCurrentIteration = 0; - anim.mInitialized = false; - anim.mPlayingState = STOPPED; - anim.mStartedDelay = false; - PropertyValuesHolder[] oldValues = mValues; - if (oldValues != null) { - int numValues = oldValues.length; - anim.mValues = new PropertyValuesHolder[numValues]; - anim.mValuesMap = new HashMap(numValues); - for (int i = 0; i < numValues; ++i) { - PropertyValuesHolder newValuesHolder = oldValues[i].clone(); - anim.mValues[i] = newValuesHolder; - anim.mValuesMap.put(newValuesHolder.getPropertyName(), newValuesHolder); - } - } - return anim; - } - - /** - * Implementors of this interface can add themselves as update listeners - * to an ValueAnimator instance to receive callbacks on every animation - * frame, after the current frame's values have been calculated for that - * ValueAnimator. - */ - public static interface AnimatorUpdateListener { - /** - *

Notifies the occurrence of another frame of the animation.

- * - * @param animation The animation which was repeated. - */ - void onAnimationUpdate(ValueAnimator animation); - - } - - /** - * Return the number of animations currently running. - * - * Used by StrictMode internally to annotate violations. Only - * called on the main thread. - * - * @hide - */ - public static int getCurrentAnimationsCount() { - return sAnimations.get().size(); - } - - /** - * Clear all animations on this thread, without canceling or ending them. - * This should be used with caution. - * - * @hide - */ - public static void clearAllAnimations() { - sAnimations.get().clear(); - sPendingAnimations.get().clear(); - sDelayedAnims.get().clear(); - } - - @Override - public String toString() { - String returnVal = "ValueAnimator@" + Integer.toHexString(hashCode()); - if (mValues != null) { - for (int i = 0; i < mValues.length; ++i) { - returnVal += "\n " + mValues[i].toString(); - } - } - return returnVal; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/view/NineViewGroup.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/view/NineViewGroup.java deleted file mode 100755 index 7b830b9c0..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/view/NineViewGroup.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.actionbarsherlock.internal.nineoldandroids.view; - -import android.content.Context; -import android.util.AttributeSet; -import android.view.ViewGroup; - -import com.actionbarsherlock.internal.nineoldandroids.view.animation.AnimatorProxy; - -public abstract class NineViewGroup extends ViewGroup { - private final AnimatorProxy mProxy; - - public NineViewGroup(Context context) { - super(context); - mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null; - } - public NineViewGroup(Context context, AttributeSet attrs) { - super(context, attrs); - mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null; - } - public NineViewGroup(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null; - } - - @Override - public void setVisibility(int visibility) { - if (mProxy != null) { - if (visibility == GONE) { - clearAnimation(); - } else if (visibility == VISIBLE) { - setAnimation(mProxy); - } - } - super.setVisibility(visibility); - } - - public float getAlpha() { - if (AnimatorProxy.NEEDS_PROXY) { - return mProxy.getAlpha(); - } else { - return super.getAlpha(); - } - } - public void setAlpha(float alpha) { - if (AnimatorProxy.NEEDS_PROXY) { - mProxy.setAlpha(alpha); - } else { - super.setAlpha(alpha); - } - } - public float getTranslationX() { - if (AnimatorProxy.NEEDS_PROXY) { - return mProxy.getTranslationX(); - } else { - return super.getTranslationX(); - } - } - public void setTranslationX(float translationX) { - if (AnimatorProxy.NEEDS_PROXY) { - mProxy.setTranslationX(translationX); - } else { - super.setTranslationX(translationX); - } - } - public float getTranslationY() { - if (AnimatorProxy.NEEDS_PROXY) { - return mProxy.getTranslationY(); - } else { - return super.getTranslationY(); - } - } - public void setTranslationY(float translationY) { - if (AnimatorProxy.NEEDS_PROXY) { - mProxy.setTranslationY(translationY); - } else { - super.setTranslationY(translationY); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/view/animation/AnimatorProxy.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/view/animation/AnimatorProxy.java deleted file mode 100755 index 067d0494e..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/view/animation/AnimatorProxy.java +++ /dev/null @@ -1,212 +0,0 @@ -package com.actionbarsherlock.internal.nineoldandroids.view.animation; - -import java.lang.ref.WeakReference; -import java.util.WeakHashMap; -import android.graphics.Matrix; -import android.graphics.RectF; -import android.os.Build; -import android.util.FloatMath; -import android.view.View; -import android.view.animation.Animation; -import android.view.animation.Transformation; - -public final class AnimatorProxy extends Animation { - public static final boolean NEEDS_PROXY = Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB; - - private static final WeakHashMap PROXIES = - new WeakHashMap(); - - public static AnimatorProxy wrap(View view) { - AnimatorProxy proxy = PROXIES.get(view); - if (proxy == null) { - proxy = new AnimatorProxy(view); - PROXIES.put(view, proxy); - } - return proxy; - } - - private final WeakReference mView; - - private float mAlpha = 1; - private float mScaleX = 1; - private float mScaleY = 1; - private float mTranslationX; - private float mTranslationY; - - private final RectF mBefore = new RectF(); - private final RectF mAfter = new RectF(); - private final Matrix mTempMatrix = new Matrix(); - - private AnimatorProxy(View view) { - setDuration(0); //perform transformation immediately - setFillAfter(true); //persist transformation beyond duration - view.setAnimation(this); - mView = new WeakReference(view); - } - - public float getAlpha() { - return mAlpha; - } - public void setAlpha(float alpha) { - if (mAlpha != alpha) { - mAlpha = alpha; - View view = mView.get(); - if (view != null) { - view.invalidate(); - } - } - } - public float getScaleX() { - return mScaleX; - } - public void setScaleX(float scaleX) { - if (mScaleX != scaleX) { - prepareForUpdate(); - mScaleX = scaleX; - invalidateAfterUpdate(); - } - } - public float getScaleY() { - return mScaleY; - } - public void setScaleY(float scaleY) { - if (mScaleY != scaleY) { - prepareForUpdate(); - mScaleY = scaleY; - invalidateAfterUpdate(); - } - } - public int getScrollX() { - View view = mView.get(); - if (view == null) { - return 0; - } - return view.getScrollX(); - } - public void setScrollX(int value) { - View view = mView.get(); - if (view != null) { - view.scrollTo(value, view.getScrollY()); - } - } - public int getScrollY() { - View view = mView.get(); - if (view == null) { - return 0; - } - return view.getScrollY(); - } - public void setScrollY(int value) { - View view = mView.get(); - if (view != null) { - view.scrollTo(view.getScrollY(), value); - } - } - - public float getTranslationX() { - return mTranslationX; - } - public void setTranslationX(float translationX) { - if (mTranslationX != translationX) { - prepareForUpdate(); - mTranslationX = translationX; - invalidateAfterUpdate(); - } - } - public float getTranslationY() { - return mTranslationY; - } - public void setTranslationY(float translationY) { - if (mTranslationY != translationY) { - prepareForUpdate(); - mTranslationY = translationY; - invalidateAfterUpdate(); - } - } - - private void prepareForUpdate() { - View view = mView.get(); - if (view != null) { - computeRect(mBefore, view); - } - } - private void invalidateAfterUpdate() { - View view = mView.get(); - if (view == null) { - return; - } - View parent = (View)view.getParent(); - if (parent == null) { - return; - } - - view.setAnimation(this); - - final RectF after = mAfter; - computeRect(after, view); - after.union(mBefore); - - parent.invalidate( - (int) FloatMath.floor(after.left), - (int) FloatMath.floor(after.top), - (int) FloatMath.ceil(after.right), - (int) FloatMath.ceil(after.bottom)); - } - - private void computeRect(final RectF r, View view) { - // compute current rectangle according to matrix transformation - final float w = view.getWidth(); - final float h = view.getHeight(); - - // use a rectangle at 0,0 to make sure we don't run into issues with scaling - r.set(0, 0, w, h); - - final Matrix m = mTempMatrix; - m.reset(); - transformMatrix(m, view); - mTempMatrix.mapRect(r); - - r.offset(view.getLeft(), view.getTop()); - - // Straighten coords if rotations flipped them - if (r.right < r.left) { - final float f = r.right; - r.right = r.left; - r.left = f; - } - if (r.bottom < r.top) { - final float f = r.top; - r.top = r.bottom; - r.bottom = f; - } - } - - private void transformMatrix(Matrix m, View view) { - final float w = view.getWidth(); - final float h = view.getHeight(); - - final float sX = mScaleX; - final float sY = mScaleY; - if ((sX != 1.0f) || (sY != 1.0f)) { - final float deltaSX = ((sX * w) - w) / 2f; - final float deltaSY = ((sY * h) - h) / 2f; - m.postScale(sX, sY); - m.postTranslate(-deltaSX, -deltaSY); - } - m.postTranslate(mTranslationX, mTranslationY); - } - - @Override - protected void applyTransformation(float interpolatedTime, Transformation t) { - View view = mView.get(); - if (view != null) { - t.setAlpha(mAlpha); - transformMatrix(t.getMatrix(), view); - } - } - - @Override - public void reset() { - /* Do nothing. */ - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout.java deleted file mode 100755 index 2c428e907..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.actionbarsherlock.internal.nineoldandroids.widget; - -import android.content.Context; -import android.util.AttributeSet; -import android.widget.FrameLayout; - -import com.actionbarsherlock.internal.nineoldandroids.view.animation.AnimatorProxy; - -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) { - if (mProxy != null) { - if (visibility == GONE) { - clearAnimation(); - } else if (visibility == VISIBLE) { - setAnimation(mProxy); - } - } - super.setVisibility(visibility); - } - - public float getAlpha() { - if (AnimatorProxy.NEEDS_PROXY) { - return mProxy.getAlpha(); - } else { - return super.getAlpha(); - } - } - public void setAlpha(float alpha) { - if (AnimatorProxy.NEEDS_PROXY) { - mProxy.setAlpha(alpha); - } else { - super.setAlpha(alpha); - } - } - public float getTranslationY() { - if (AnimatorProxy.NEEDS_PROXY) { - return mProxy.getTranslationY(); - } else { - return super.getTranslationY(); - } - } - public void setTranslationY(float translationY) { - if (AnimatorProxy.NEEDS_PROXY) { - mProxy.setTranslationY(translationY); - } else { - super.setTranslationY(translationY); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineHorizontalScrollView.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineHorizontalScrollView.java deleted file mode 100755 index 129b5aaaa..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineHorizontalScrollView.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.actionbarsherlock.internal.nineoldandroids.widget; - -import android.content.Context; -import android.widget.HorizontalScrollView; -import com.actionbarsherlock.internal.nineoldandroids.view.animation.AnimatorProxy; - -public class NineHorizontalScrollView extends HorizontalScrollView { - private final AnimatorProxy mProxy; - - public NineHorizontalScrollView(Context context) { - super(context); - mProxy = AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : null; - } - - @Override - public void setVisibility(int visibility) { - if (mProxy != null) { - if (visibility == GONE) { - clearAnimation(); - } else if (visibility == VISIBLE) { - setAnimation(mProxy); - } - } - super.setVisibility(visibility); - } - - public float getAlpha() { - if (AnimatorProxy.NEEDS_PROXY) { - return mProxy.getAlpha(); - } else { - return super.getAlpha(); - } - } - public void setAlpha(float alpha) { - if (AnimatorProxy.NEEDS_PROXY) { - mProxy.setAlpha(alpha); - } else { - super.setAlpha(alpha); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineLinearLayout.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineLinearLayout.java deleted file mode 100755 index a670b1f64..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/widget/NineLinearLayout.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.actionbarsherlock.internal.nineoldandroids.widget; - -import android.content.Context; -import android.util.AttributeSet; -import android.widget.LinearLayout; - -import com.actionbarsherlock.internal.nineoldandroids.view.animation.AnimatorProxy; - -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) { - if (mProxy != null) { - if (visibility == GONE) { - clearAnimation(); - } else if (visibility == VISIBLE) { - setAnimation(mProxy); - } - } - super.setVisibility(visibility); - } - - public float getAlpha() { - if (AnimatorProxy.NEEDS_PROXY) { - return mProxy.getAlpha(); - } else { - return super.getAlpha(); - } - } - public void setAlpha(float alpha) { - if (AnimatorProxy.NEEDS_PROXY) { - mProxy.setAlpha(alpha); - } else { - super.setAlpha(alpha); - } - } - public float getTranslationX() { - if (AnimatorProxy.NEEDS_PROXY) { - return mProxy.getTranslationX(); - } else { - return super.getTranslationX(); - } - } - public void setTranslationX(float translationX) { - if (AnimatorProxy.NEEDS_PROXY) { - mProxy.setTranslationX(translationX); - } else { - super.setTranslationX(translationX); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/ActionProviderWrapper.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/ActionProviderWrapper.java deleted file mode 100755 index b136d50f0..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/ActionProviderWrapper.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.actionbarsherlock.internal.view; - -import com.actionbarsherlock.internal.view.menu.SubMenuWrapper; -import com.actionbarsherlock.view.ActionProvider; -import android.view.View; - -public class ActionProviderWrapper extends android.view.ActionProvider { - private final ActionProvider mProvider; - - - public ActionProviderWrapper(ActionProvider provider) { - super(null/*TODO*/); //XXX this *should* be unused - mProvider = provider; - } - - - public ActionProvider unwrap() { - return mProvider; - } - - @Override - public View onCreateActionView() { - return mProvider.onCreateActionView(); - } - - @Override - public boolean hasSubMenu() { - return mProvider.hasSubMenu(); - } - - @Override - public boolean onPerformDefaultAction() { - return mProvider.onPerformDefaultAction(); - } - - @Override - public void onPrepareSubMenu(android.view.SubMenu subMenu) { - mProvider.onPrepareSubMenu(new SubMenuWrapper(subMenu)); - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/StandaloneActionMode.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/StandaloneActionMode.java deleted file mode 100755 index 0a87bd3f7..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/StandaloneActionMode.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * 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.internal.view; - -import android.content.Context; -import android.view.View; -import android.view.accessibility.AccessibilityEvent; - -import java.lang.ref.WeakReference; - -import com.actionbarsherlock.internal.view.menu.MenuBuilder; -import com.actionbarsherlock.internal.view.menu.MenuPopupHelper; -import com.actionbarsherlock.internal.view.menu.SubMenuBuilder; -import com.actionbarsherlock.internal.widget.ActionBarContextView; -import com.actionbarsherlock.view.ActionMode; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; - -public class StandaloneActionMode extends ActionMode implements MenuBuilder.Callback { - private Context mContext; - private ActionBarContextView mContextView; - private ActionMode.Callback mCallback; - private WeakReference mCustomView; - private boolean mFinished; - private boolean mFocusable; - - private MenuBuilder mMenu; - - public StandaloneActionMode(Context context, ActionBarContextView view, - ActionMode.Callback callback, boolean isFocusable) { - mContext = context; - mContextView = view; - mCallback = callback; - - mMenu = new MenuBuilder(context).setDefaultShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); - mMenu.setCallback(this); - mFocusable = isFocusable; - } - - @Override - public void setTitle(CharSequence title) { - mContextView.setTitle(title); - } - - @Override - public void setSubtitle(CharSequence subtitle) { - mContextView.setSubtitle(subtitle); - } - - @Override - public void setTitle(int resId) { - setTitle(mContext.getString(resId)); - } - - @Override - public void setSubtitle(int resId) { - setSubtitle(mContext.getString(resId)); - } - - @Override - public void setCustomView(View view) { - mContextView.setCustomView(view); - mCustomView = view != null ? new WeakReference(view) : null; - } - - @Override - public void invalidate() { - mCallback.onPrepareActionMode(this, mMenu); - } - - @Override - public void finish() { - if (mFinished) { - return; - } - mFinished = true; - - mContextView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); - mCallback.onDestroyActionMode(this); - } - - @Override - public Menu getMenu() { - return mMenu; - } - - @Override - public CharSequence getTitle() { - return mContextView.getTitle(); - } - - @Override - public CharSequence getSubtitle() { - return mContextView.getSubtitle(); - } - - @Override - public View getCustomView() { - return mCustomView != null ? mCustomView.get() : null; - } - - @Override - public MenuInflater getMenuInflater() { - return new MenuInflater(mContext); - } - - public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item) { - return mCallback.onActionItemClicked(this, item); - } - - public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { - } - - public boolean onSubMenuSelected(SubMenuBuilder subMenu) { - if (!subMenu.hasVisibleItems()) { - return true; - } - - new MenuPopupHelper(mContext, subMenu).show(); - return true; - } - - public void onCloseSubMenu(SubMenuBuilder menu) { - } - - public void onMenuModeChange(MenuBuilder menu) { - invalidate(); - mContextView.showOverflowMenu(); - } - - public boolean isUiFocusable() { - return mFocusable; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/View_HasStateListenerSupport.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/View_HasStateListenerSupport.java deleted file mode 100755 index 7d45e81be..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/View_HasStateListenerSupport.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.actionbarsherlock.internal.view; - -public interface View_HasStateListenerSupport { - void addOnAttachStateChangeListener(View_OnAttachStateChangeListener listener); - void removeOnAttachStateChangeListener(View_OnAttachStateChangeListener listener); -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/View_OnAttachStateChangeListener.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/View_OnAttachStateChangeListener.java deleted file mode 100755 index 3869d3290..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/View_OnAttachStateChangeListener.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.actionbarsherlock.internal.view; - -import android.view.View; - -public interface View_OnAttachStateChangeListener { - void onViewAttachedToWindow(View v); - void onViewDetachedFromWindow(View v); -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenu.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenu.java deleted file mode 100755 index 0354ad1ad..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenu.java +++ /dev/null @@ -1,264 +0,0 @@ -/* - * 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.internal.view.menu; - -import java.util.ArrayList; -import java.util.List; - -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.view.KeyEvent; - -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuItem; -import com.actionbarsherlock.view.SubMenu; - -/** - * @hide - */ -public class ActionMenu implements Menu { - private Context mContext; - - private boolean mIsQwerty; - - private ArrayList mItems; - - public ActionMenu(Context context) { - mContext = context; - mItems = new ArrayList(); - } - - public Context getContext() { - return mContext; - } - - public MenuItem add(CharSequence title) { - return add(0, 0, 0, title); - } - - public MenuItem add(int titleRes) { - return add(0, 0, 0, titleRes); - } - - public MenuItem add(int groupId, int itemId, int order, int titleRes) { - return add(groupId, itemId, order, mContext.getResources().getString(titleRes)); - } - - public MenuItem add(int groupId, int itemId, int order, CharSequence title) { - ActionMenuItem item = new ActionMenuItem(getContext(), - groupId, itemId, 0, order, title); - mItems.add(order, item); - return item; - } - - public int addIntentOptions(int groupId, int itemId, int order, - ComponentName caller, Intent[] specifics, Intent intent, int flags, - MenuItem[] outSpecificItems) { - PackageManager pm = mContext.getPackageManager(); - final List lri = - pm.queryIntentActivityOptions(caller, specifics, intent, 0); - final int N = lri != null ? lri.size() : 0; - - if ((flags & FLAG_APPEND_TO_GROUP) == 0) { - removeGroup(groupId); - } - - for (int i=0; i= 0) { - outSpecificItems[ri.specificIndex] = item; - } - } - - return N; - } - - public SubMenu addSubMenu(CharSequence title) { - // TODO Implement submenus - return null; - } - - public SubMenu addSubMenu(int titleRes) { - // TODO Implement submenus - return null; - } - - public SubMenu addSubMenu(int groupId, int itemId, int order, - CharSequence title) { - // TODO Implement submenus - return null; - } - - public SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes) { - // TODO Implement submenus - return null; - } - - public void clear() { - mItems.clear(); - } - - public void close() { - } - - private int findItemIndex(int id) { - final ArrayList items = mItems; - final int itemCount = items.size(); - for (int i = 0; i < itemCount; i++) { - if (items.get(i).getItemId() == id) { - return i; - } - } - - return -1; - } - - public MenuItem findItem(int id) { - return mItems.get(findItemIndex(id)); - } - - public MenuItem getItem(int index) { - return mItems.get(index); - } - - public boolean hasVisibleItems() { - final ArrayList items = mItems; - final int itemCount = items.size(); - - for (int i = 0; i < itemCount; i++) { - if (items.get(i).isVisible()) { - return true; - } - } - - return false; - } - - private ActionMenuItem findItemWithShortcut(int keyCode, KeyEvent event) { - // TODO Make this smarter. - final boolean qwerty = mIsQwerty; - final ArrayList items = mItems; - final int itemCount = items.size(); - - for (int i = 0; i < itemCount; i++) { - ActionMenuItem item = items.get(i); - final char shortcut = qwerty ? item.getAlphabeticShortcut() : - item.getNumericShortcut(); - if (keyCode == shortcut) { - return item; - } - } - return null; - } - - public boolean isShortcutKey(int keyCode, KeyEvent event) { - return findItemWithShortcut(keyCode, event) != null; - } - - public boolean performIdentifierAction(int id, int flags) { - final int index = findItemIndex(id); - if (index < 0) { - return false; - } - - return mItems.get(index).invoke(); - } - - public boolean performShortcut(int keyCode, KeyEvent event, int flags) { - ActionMenuItem item = findItemWithShortcut(keyCode, event); - if (item == null) { - return false; - } - - return item.invoke(); - } - - public void removeGroup(int groupId) { - final ArrayList items = mItems; - int itemCount = items.size(); - int i = 0; - while (i < itemCount) { - if (items.get(i).getGroupId() == groupId) { - items.remove(i); - itemCount--; - } else { - i++; - } - } - } - - public void removeItem(int id) { - mItems.remove(findItemIndex(id)); - } - - public void setGroupCheckable(int group, boolean checkable, - boolean exclusive) { - final ArrayList items = mItems; - final int itemCount = items.size(); - - for (int i = 0; i < itemCount; i++) { - ActionMenuItem item = items.get(i); - if (item.getGroupId() == group) { - item.setCheckable(checkable); - item.setExclusiveCheckable(exclusive); - } - } - } - - public void setGroupEnabled(int group, boolean enabled) { - final ArrayList items = mItems; - final int itemCount = items.size(); - - for (int i = 0; i < itemCount; i++) { - ActionMenuItem item = items.get(i); - if (item.getGroupId() == group) { - item.setEnabled(enabled); - } - } - } - - public void setGroupVisible(int group, boolean visible) { - final ArrayList items = mItems; - final int itemCount = items.size(); - - for (int i = 0; i < itemCount; i++) { - ActionMenuItem item = items.get(i); - if (item.getGroupId() == group) { - item.setVisible(visible); - } - } - } - - public void setQwertyMode(boolean isQwerty) { - mIsQwerty = isQwerty; - } - - public int size() { - return mItems.size(); - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuItem.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuItem.java deleted file mode 100755 index 510b97488..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuItem.java +++ /dev/null @@ -1,278 +0,0 @@ -/* - * 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.internal.view.menu; - -import android.content.Context; -import android.content.Intent; -import android.graphics.drawable.Drawable; -import android.view.ContextMenu.ContextMenuInfo; -import android.view.View; - -import com.actionbarsherlock.view.ActionProvider; -import com.actionbarsherlock.view.MenuItem; -import com.actionbarsherlock.view.SubMenu; - -/** - * @hide - */ -public class ActionMenuItem implements MenuItem { - private final int mId; - private final int mGroup; - //UNUSED private final int mCategoryOrder; - private final int mOrdering; - - private CharSequence mTitle; - private CharSequence mTitleCondensed; - private Intent mIntent; - private char mShortcutNumericChar; - private char mShortcutAlphabeticChar; - - private Drawable mIconDrawable; - //UNUSED private int mIconResId = NO_ICON; - - private Context mContext; - - private MenuItem.OnMenuItemClickListener mClickListener; - - //UNUSED private static final int NO_ICON = 0; - - private int mFlags = ENABLED; - private static final int CHECKABLE = 0x00000001; - private static final int CHECKED = 0x00000002; - private static final int EXCLUSIVE = 0x00000004; - private static final int HIDDEN = 0x00000008; - private static final int ENABLED = 0x00000010; - - public ActionMenuItem(Context context, int group, int id, int categoryOrder, int ordering, - CharSequence title) { - mContext = context; - mId = id; - mGroup = group; - //UNUSED mCategoryOrder = categoryOrder; - mOrdering = ordering; - mTitle = title; - } - - public char getAlphabeticShortcut() { - return mShortcutAlphabeticChar; - } - - public int getGroupId() { - return mGroup; - } - - public Drawable getIcon() { - return mIconDrawable; - } - - public Intent getIntent() { - return mIntent; - } - - public int getItemId() { - return mId; - } - - public ContextMenuInfo getMenuInfo() { - return null; - } - - public char getNumericShortcut() { - return mShortcutNumericChar; - } - - public int getOrder() { - return mOrdering; - } - - public SubMenu getSubMenu() { - return null; - } - - public CharSequence getTitle() { - return mTitle; - } - - public CharSequence getTitleCondensed() { - return mTitleCondensed; - } - - public boolean hasSubMenu() { - return false; - } - - public boolean isCheckable() { - return (mFlags & CHECKABLE) != 0; - } - - public boolean isChecked() { - return (mFlags & CHECKED) != 0; - } - - public boolean isEnabled() { - return (mFlags & ENABLED) != 0; - } - - public boolean isVisible() { - return (mFlags & HIDDEN) == 0; - } - - public MenuItem setAlphabeticShortcut(char alphaChar) { - mShortcutAlphabeticChar = alphaChar; - return this; - } - - public MenuItem setCheckable(boolean checkable) { - mFlags = (mFlags & ~CHECKABLE) | (checkable ? CHECKABLE : 0); - return this; - } - - public ActionMenuItem setExclusiveCheckable(boolean exclusive) { - mFlags = (mFlags & ~EXCLUSIVE) | (exclusive ? EXCLUSIVE : 0); - return this; - } - - public MenuItem setChecked(boolean checked) { - mFlags = (mFlags & ~CHECKED) | (checked ? CHECKED : 0); - return this; - } - - public MenuItem setEnabled(boolean enabled) { - mFlags = (mFlags & ~ENABLED) | (enabled ? ENABLED : 0); - return this; - } - - public MenuItem setIcon(Drawable icon) { - mIconDrawable = icon; - //UNUSED mIconResId = NO_ICON; - return this; - } - - public MenuItem setIcon(int iconRes) { - //UNUSED mIconResId = iconRes; - mIconDrawable = mContext.getResources().getDrawable(iconRes); - return this; - } - - public MenuItem setIntent(Intent intent) { - mIntent = intent; - return this; - } - - public MenuItem setNumericShortcut(char numericChar) { - mShortcutNumericChar = numericChar; - return this; - } - - public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener menuItemClickListener) { - mClickListener = menuItemClickListener; - return this; - } - - public MenuItem setShortcut(char numericChar, char alphaChar) { - mShortcutNumericChar = numericChar; - mShortcutAlphabeticChar = alphaChar; - return this; - } - - public MenuItem setTitle(CharSequence title) { - mTitle = title; - return this; - } - - public MenuItem setTitle(int title) { - mTitle = mContext.getResources().getString(title); - return this; - } - - public MenuItem setTitleCondensed(CharSequence title) { - mTitleCondensed = title; - return this; - } - - public MenuItem setVisible(boolean visible) { - mFlags = (mFlags & HIDDEN) | (visible ? 0 : HIDDEN); - return this; - } - - public boolean invoke() { - if (mClickListener != null && mClickListener.onMenuItemClick(this)) { - return true; - } - - if (mIntent != null) { - mContext.startActivity(mIntent); - return true; - } - - return false; - } - - public void setShowAsAction(int show) { - // Do nothing. ActionMenuItems always show as action buttons. - } - - public MenuItem setActionView(View actionView) { - throw new UnsupportedOperationException(); - } - - public View getActionView() { - return null; - } - - @Override - public MenuItem setActionView(int resId) { - throw new UnsupportedOperationException(); - } - - @Override - public ActionProvider getActionProvider() { - return null; - } - - @Override - public MenuItem setActionProvider(ActionProvider actionProvider) { - throw new UnsupportedOperationException(); - } - - @Override - public MenuItem setShowAsActionFlags(int actionEnum) { - setShowAsAction(actionEnum); - return this; - } - - @Override - public boolean expandActionView() { - return false; - } - - @Override - public boolean collapseActionView() { - return false; - } - - @Override - public boolean isActionViewExpanded() { - return false; - } - - @Override - public MenuItem setOnActionExpandListener(OnActionExpandListener listener) { - // No need to save the listener; ActionMenuItem does not support collapsing items. - return this; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuItemView.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuItemView.java deleted file mode 100755 index dcb50f362..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuItemView.java +++ /dev/null @@ -1,295 +0,0 @@ -/* - * 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.internal.view.menu; - -import java.util.HashSet; -import java.util.Set; -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.Rect; -import android.graphics.drawable.Drawable; -import android.os.Build; -import android.text.TextUtils; -import android.util.AttributeSet; -import android.view.Gravity; -import android.view.MotionEvent; -import android.view.View; -import android.view.accessibility.AccessibilityEvent; -import android.widget.ImageButton; -import android.widget.LinearLayout; -import android.widget.Toast; - -import com.actionbarsherlock.R; -import com.actionbarsherlock.internal.view.View_HasStateListenerSupport; -import com.actionbarsherlock.internal.view.View_OnAttachStateChangeListener; -import com.actionbarsherlock.internal.widget.CapitalizingButton; - -import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoolean; - -/** - * @hide - */ -public class ActionMenuItemView extends LinearLayout - implements MenuView.ItemView, View.OnClickListener, View.OnLongClickListener, - ActionMenuView.ActionMenuChildView, View_HasStateListenerSupport { - //UNUSED private static final String TAG = "ActionMenuItemView"; - - private MenuItemImpl mItemData; - private CharSequence mTitle; - private MenuBuilder.ItemInvoker mItemInvoker; - - private ImageButton mImageButton; - private CapitalizingButton mTextButton; - private boolean mAllowTextWithIcon; - private boolean mExpandedFormat; - private int mMinWidth; - - private final Set mListeners = new HashSet(); - - public ActionMenuItemView(Context context) { - this(context, null); - } - - public ActionMenuItemView(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public ActionMenuItemView(Context context, AttributeSet attrs, int defStyle) { - //TODO super(context, attrs, defStyle); - super(context, attrs); - mAllowTextWithIcon = getResources_getBoolean(context, - R.bool.abs__config_allowActionMenuItemTextWithIcon); - TypedArray a = context.obtainStyledAttributes(attrs, - R.styleable.SherlockActionMenuItemView, 0, 0); - mMinWidth = a.getDimensionPixelSize( - R.styleable.SherlockActionMenuItemView_android_minWidth, 0); - a.recycle(); - } - - @Override - public void addOnAttachStateChangeListener(View_OnAttachStateChangeListener listener) { - mListeners.add(listener); - } - - @Override - public void removeOnAttachStateChangeListener(View_OnAttachStateChangeListener listener) { - mListeners.remove(listener); - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - for (View_OnAttachStateChangeListener listener : mListeners) { - listener.onViewAttachedToWindow(this); - } - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - for (View_OnAttachStateChangeListener listener : mListeners) { - listener.onViewDetachedFromWindow(this); - } - } - - @Override - public void onFinishInflate() { - - mImageButton = (ImageButton) findViewById(R.id.abs__imageButton); - mTextButton = (CapitalizingButton) findViewById(R.id.abs__textButton); - mImageButton.setOnClickListener(this); - mTextButton.setOnClickListener(this); - mImageButton.setOnLongClickListener(this); - setOnClickListener(this); - setOnLongClickListener(this); - } - - public MenuItemImpl getItemData() { - return mItemData; - } - - public void initialize(MenuItemImpl itemData, int menuType) { - mItemData = itemData; - - setIcon(itemData.getIcon()); - setTitle(itemData.getTitleForItemView(this)); // Title only takes effect if there is no icon - setId(itemData.getItemId()); - - setVisibility(itemData.isVisible() ? View.VISIBLE : View.GONE); - setEnabled(itemData.isEnabled()); - } - - @Override - public void setEnabled(boolean enabled) { - super.setEnabled(enabled); - mImageButton.setEnabled(enabled); - mTextButton.setEnabled(enabled); - } - - public void onClick(View v) { - if (mItemInvoker != null) { - mItemInvoker.invokeItem(mItemData); - } - } - - public void setItemInvoker(MenuBuilder.ItemInvoker invoker) { - mItemInvoker = invoker; - } - - public boolean prefersCondensedTitle() { - return true; - } - - public void setCheckable(boolean checkable) { - // TODO Support checkable action items - } - - public void setChecked(boolean checked) { - // TODO Support checkable action items - } - - public void setExpandedFormat(boolean expandedFormat) { - if (mExpandedFormat != expandedFormat) { - mExpandedFormat = expandedFormat; - if (mItemData != null) { - mItemData.actionFormatChanged(); - } - } - } - - private void updateTextButtonVisibility() { - boolean visible = !TextUtils.isEmpty(mTextButton.getText()); - visible &= mImageButton.getDrawable() == null || - (mItemData.showsTextAsAction() && (mAllowTextWithIcon || mExpandedFormat)); - - mTextButton.setVisibility(visible ? VISIBLE : GONE); - } - - public void setIcon(Drawable icon) { - mImageButton.setImageDrawable(icon); - if (icon != null) { - mImageButton.setVisibility(VISIBLE); - } else { - mImageButton.setVisibility(GONE); - } - - updateTextButtonVisibility(); - } - - public boolean hasText() { - return mTextButton.getVisibility() != GONE; - } - - public void setShortcut(boolean showShortcut, char shortcutKey) { - // Action buttons don't show text for shortcut keys. - } - - public void setTitle(CharSequence title) { - mTitle = title; - - mTextButton.setTextCompat(mTitle); - - setContentDescription(mTitle); - updateTextButtonVisibility(); - } - - @Override - public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { - onPopulateAccessibilityEvent(event); - return true; - } - - @Override - public void onPopulateAccessibilityEvent(AccessibilityEvent event) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { - super.onPopulateAccessibilityEvent(event); - } - final CharSequence cdesc = getContentDescription(); - if (!TextUtils.isEmpty(cdesc)) { - event.getText().add(cdesc); - } - } - - @Override - public boolean dispatchHoverEvent(MotionEvent event) { - // Don't allow children to hover; we want this to be treated as a single component. - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { - return onHoverEvent(event); - } - return false; - } - - public boolean showsIcon() { - return true; - } - - public boolean needsDividerBefore() { - return hasText() && mItemData.getIcon() == null; - } - - public boolean needsDividerAfter() { - return hasText(); - } - - @Override - public boolean onLongClick(View v) { - if (hasText()) { - // Don't show the cheat sheet for items that already show text. - return false; - } - - final int[] screenPos = new int[2]; - final Rect displayFrame = new Rect(); - getLocationOnScreen(screenPos); - getWindowVisibleDisplayFrame(displayFrame); - - final Context context = getContext(); - final int width = getWidth(); - final int height = getHeight(); - final int midy = screenPos[1] + height / 2; - final int screenWidth = context.getResources().getDisplayMetrics().widthPixels; - - Toast cheatSheet = Toast.makeText(context, mItemData.getTitle(), Toast.LENGTH_SHORT); - if (midy < displayFrame.height()) { - // Show along the top; follow action buttons - cheatSheet.setGravity(Gravity.TOP | Gravity.RIGHT, - screenWidth - screenPos[0] - width / 2, height); - } else { - // Show along the bottom center - cheatSheet.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, height); - } - cheatSheet.show(); - return true; - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - - final int widthMode = MeasureSpec.getMode(widthMeasureSpec); - final int specSize = MeasureSpec.getSize(widthMeasureSpec); - final int oldMeasuredWidth = getMeasuredWidth(); - final int targetWidth = widthMode == MeasureSpec.AT_MOST ? Math.min(specSize, mMinWidth) - : mMinWidth; - - if (widthMode != MeasureSpec.EXACTLY && mMinWidth > 0 && oldMeasuredWidth < targetWidth) { - // Remeasure at exactly the minimum width. - super.onMeasure(MeasureSpec.makeMeasureSpec(targetWidth, MeasureSpec.EXACTLY), - heightMeasureSpec); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuPresenter.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuPresenter.java deleted file mode 100755 index 6f568c698..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuPresenter.java +++ /dev/null @@ -1,721 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.internal.view.menu; - -import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getInteger; -import java.util.ArrayList; -import java.util.HashSet; -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; -import android.util.SparseBooleanArray; -import android.view.SoundEffectConstants; -import android.view.View; -import android.view.View.MeasureSpec; -import android.view.ViewConfiguration; -import android.view.ViewGroup; -import android.widget.ImageButton; -import com.actionbarsherlock.R; -import com.actionbarsherlock.internal.view.View_HasStateListenerSupport; -import com.actionbarsherlock.internal.view.View_OnAttachStateChangeListener; -import com.actionbarsherlock.internal.view.menu.ActionMenuView.ActionMenuChildView; -import com.actionbarsherlock.view.ActionProvider; -import com.actionbarsherlock.view.MenuItem; - -/** - * MenuPresenter for building action menus as seen in the action bar and action modes. - */ -public class ActionMenuPresenter extends BaseMenuPresenter - implements ActionProvider.SubUiVisibilityListener { - //UNUSED private static final String TAG = "ActionMenuPresenter"; - - private View mOverflowButton; - private boolean mReserveOverflow; - private boolean mReserveOverflowSet; - private int mWidthLimit; - private int mActionItemWidthLimit; - private int mMaxItems; - private boolean mMaxItemsSet; - private boolean mStrictWidthLimit; - private boolean mWidthLimitSet; - private boolean mExpandedActionViewsExclusive; - - private int mMinCellSize; - - // Group IDs that have been added as actions - used temporarily, allocated here for reuse. - private final SparseBooleanArray mActionButtonGroups = new SparseBooleanArray(); - - private View mScrapActionButtonView; - - private OverflowPopup mOverflowPopup; - private ActionButtonSubmenu mActionButtonPopup; - - private OpenOverflowRunnable mPostedOpenRunnable; - - final PopupPresenterCallback mPopupPresenterCallback = new PopupPresenterCallback(); - int mOpenSubMenuId; - - public ActionMenuPresenter(Context context) { - super(context, R.layout.abs__action_menu_layout, - R.layout.abs__action_menu_item_layout); - } - - @Override - public void initForMenu(Context context, MenuBuilder menu) { - super.initForMenu(context, menu); - - final Resources res = context.getResources(); - - if (!mReserveOverflowSet) { - mReserveOverflow = reserveOverflow(mContext); - } - - if (!mWidthLimitSet) { - mWidthLimit = res.getDisplayMetrics().widthPixels / 2; - } - - // Measure for initial configuration - if (!mMaxItemsSet) { - mMaxItems = getResources_getInteger(context, R.integer.abs__max_action_buttons); - } - - int width = mWidthLimit; - if (mReserveOverflow) { - if (mOverflowButton == null) { - mOverflowButton = new OverflowMenuButton(mSystemContext); - final int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - mOverflowButton.measure(spec, spec); - } - width -= mOverflowButton.getMeasuredWidth(); - } else { - mOverflowButton = null; - } - - mActionItemWidthLimit = width; - - mMinCellSize = (int) (ActionMenuView.MIN_CELL_SIZE * res.getDisplayMetrics().density); - - // Drop a scrap view as it may no longer reflect the proper context/config. - mScrapActionButtonView = null; - } - - 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 { - return !HasPermanentMenuKey.get(context); - } - } - - private static class HasPermanentMenuKey { - public static boolean get(Context context) { - return ViewConfiguration.get(context).hasPermanentMenuKey(); - } - } - - public void onConfigurationChanged(Configuration newConfig) { - if (!mMaxItemsSet) { - mMaxItems = getResources_getInteger(mContext, - R.integer.abs__max_action_buttons); - if (mMenu != null) { - mMenu.onItemsChanged(true); - } - } - } - - public void setWidthLimit(int width, boolean strict) { - mWidthLimit = width; - mStrictWidthLimit = strict; - mWidthLimitSet = true; - } - - public void setReserveOverflow(boolean reserveOverflow) { - mReserveOverflow = reserveOverflow; - mReserveOverflowSet = true; - } - - public void setItemLimit(int itemCount) { - mMaxItems = itemCount; - mMaxItemsSet = true; - } - - public void setExpandedActionViewsExclusive(boolean isExclusive) { - mExpandedActionViewsExclusive = isExclusive; - } - - @Override - public MenuView getMenuView(ViewGroup root) { - MenuView result = super.getMenuView(root); - ((ActionMenuView) result).setPresenter(this); - return result; - } - - @Override - public View getItemView(MenuItemImpl item, View convertView, ViewGroup parent) { - View actionView = item.getActionView(); - if (actionView == null || item.hasCollapsibleActionView()) { - if (!(convertView instanceof ActionMenuItemView)) { - convertView = null; - } - actionView = super.getItemView(item, convertView, parent); - } - actionView.setVisibility(item.isActionViewExpanded() ? View.GONE : View.VISIBLE); - - final ActionMenuView menuParent = (ActionMenuView) parent; - final ViewGroup.LayoutParams lp = actionView.getLayoutParams(); - if (!menuParent.checkLayoutParams(lp)) { - actionView.setLayoutParams(menuParent.generateLayoutParams(lp)); - } - return actionView; - } - - @Override - public void bindItemView(MenuItemImpl item, MenuView.ItemView itemView) { - itemView.initialize(item, 0); - - final ActionMenuView menuView = (ActionMenuView) mMenuView; - ActionMenuItemView actionItemView = (ActionMenuItemView) itemView; - actionItemView.setItemInvoker(menuView); - } - - @Override - public boolean shouldIncludeItem(int childIndex, MenuItemImpl item) { - return item.isActionButton(); - } - - @Override - public void updateMenuView(boolean cleared) { - super.updateMenuView(cleared); - - if (mMenu != null) { - final ArrayList actionItems = mMenu.getActionItems(); - final int count = actionItems.size(); - for (int i = 0; i < count; i++) { - final ActionProvider provider = actionItems.get(i).getActionProvider(); - if (provider != null) { - provider.setSubUiVisibilityListener(this); - } - } - } - - final ArrayList nonActionItems = mMenu != null ? - mMenu.getNonActionItems() : null; - - boolean hasOverflow = false; - if (mReserveOverflow && nonActionItems != null) { - final int count = nonActionItems.size(); - if (count == 1) { - hasOverflow = !nonActionItems.get(0).isActionViewExpanded(); - } else { - hasOverflow = count > 0; - } - } - - if (hasOverflow) { - if (mOverflowButton == null) { - mOverflowButton = new OverflowMenuButton(mSystemContext); - } - ViewGroup parent = (ViewGroup) mOverflowButton.getParent(); - if (parent != mMenuView) { - if (parent != null) { - parent.removeView(mOverflowButton); - } - ActionMenuView menuView = (ActionMenuView) mMenuView; - menuView.addView(mOverflowButton, menuView.generateOverflowButtonLayoutParams()); - } - } else if (mOverflowButton != null && mOverflowButton.getParent() == mMenuView) { - ((ViewGroup) mMenuView).removeView(mOverflowButton); - } - - ((ActionMenuView) mMenuView).setOverflowReserved(mReserveOverflow); - } - - @Override - public boolean filterLeftoverView(ViewGroup parent, int childIndex) { - if (parent.getChildAt(childIndex) == mOverflowButton) return false; - return super.filterLeftoverView(parent, childIndex); - } - - public boolean onSubMenuSelected(SubMenuBuilder subMenu) { - if (!subMenu.hasVisibleItems()) return false; - - SubMenuBuilder topSubMenu = subMenu; - while (topSubMenu.getParentMenu() != mMenu) { - topSubMenu = (SubMenuBuilder) topSubMenu.getParentMenu(); - } - View anchor = findViewForItem(topSubMenu.getItem()); - if (anchor == null) { - if (mOverflowButton == null) return false; - anchor = mOverflowButton; - } - - mOpenSubMenuId = subMenu.getItem().getItemId(); - mActionButtonPopup = new ActionButtonSubmenu(mContext, subMenu); - mActionButtonPopup.setAnchorView(anchor); - mActionButtonPopup.show(); - super.onSubMenuSelected(subMenu); - return true; - } - - private View findViewForItem(MenuItem item) { - final ViewGroup parent = (ViewGroup) mMenuView; - if (parent == null) return null; - - final int count = parent.getChildCount(); - for (int i = 0; i < count; i++) { - final View child = parent.getChildAt(i); - if (child instanceof MenuView.ItemView && - ((MenuView.ItemView) child).getItemData() == item) { - return child; - } - } - return null; - } - - /** - * Display the overflow menu if one is present. - * @return true if the overflow menu was shown, false otherwise. - */ - public boolean showOverflowMenu() { - if (mReserveOverflow && !isOverflowMenuShowing() && mMenu != null && mMenuView != null && - mPostedOpenRunnable == null && !mMenu.getNonActionItems().isEmpty()) { - OverflowPopup popup = new OverflowPopup(mContext, mMenu, mOverflowButton, true); - mPostedOpenRunnable = new OpenOverflowRunnable(popup); - // Post this for later; we might still need a layout for the anchor to be right. - ((View) mMenuView).post(mPostedOpenRunnable); - - // ActionMenuPresenter uses null as a callback argument here - // to indicate overflow is opening. - super.onSubMenuSelected(null); - - return true; - } - return false; - } - - /** - * Hide the overflow menu if it is currently showing. - * - * @return true if the overflow menu was hidden, false otherwise. - */ - public boolean hideOverflowMenu() { - if (mPostedOpenRunnable != null && mMenuView != null) { - ((View) mMenuView).removeCallbacks(mPostedOpenRunnable); - mPostedOpenRunnable = null; - return true; - } - - MenuPopupHelper popup = mOverflowPopup; - if (popup != null) { - popup.dismiss(); - return true; - } - return false; - } - - /** - * Dismiss all popup menus - overflow and submenus. - * @return true if popups were dismissed, false otherwise. (This can be because none were open.) - */ - public boolean dismissPopupMenus() { - boolean result = hideOverflowMenu(); - result |= hideSubMenus(); - return result; - } - - /** - * Dismiss all submenu popups. - * - * @return true if popups were dismissed, false otherwise. (This can be because none were open.) - */ - public boolean hideSubMenus() { - if (mActionButtonPopup != null) { - mActionButtonPopup.dismiss(); - return true; - } - return false; - } - - /** - * @return true if the overflow menu is currently showing - */ - public boolean isOverflowMenuShowing() { - return mOverflowPopup != null && mOverflowPopup.isShowing(); - } - - /** - * @return true if space has been reserved in the action menu for an overflow item. - */ - public boolean isOverflowReserved() { - return mReserveOverflow; - } - - public boolean flagActionItems() { - final ArrayList visibleItems = mMenu.getVisibleItems(); - final int itemsSize = visibleItems.size(); - int maxActions = mMaxItems; - int widthLimit = mActionItemWidthLimit; - final int querySpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - final ViewGroup parent = (ViewGroup) mMenuView; - - int requiredItems = 0; - int requestedItems = 0; - int firstActionWidth = 0; - boolean hasOverflow = false; - for (int i = 0; i < itemsSize; i++) { - MenuItemImpl item = visibleItems.get(i); - if (item.requiresActionButton()) { - requiredItems++; - } else if (item.requestsActionButton()) { - requestedItems++; - } else { - hasOverflow = true; - } - if (mExpandedActionViewsExclusive && item.isActionViewExpanded()) { - // Overflow everything if we have an expanded action view and we're - // space constrained. - maxActions = 0; - } - } - - // Reserve a spot for the overflow item if needed. - if (mReserveOverflow && - (hasOverflow || requiredItems + requestedItems > maxActions)) { - maxActions--; - } - maxActions -= requiredItems; - - final SparseBooleanArray seenGroups = mActionButtonGroups; - seenGroups.clear(); - - int cellSize = 0; - int cellsRemaining = 0; - if (mStrictWidthLimit) { - cellsRemaining = widthLimit / mMinCellSize; - final int cellSizeRemaining = widthLimit % mMinCellSize; - cellSize = mMinCellSize + cellSizeRemaining / cellsRemaining; - } - - // Flag as many more requested items as will fit. - for (int i = 0; i < itemsSize; i++) { - MenuItemImpl item = visibleItems.get(i); - - if (item.requiresActionButton()) { - View v = getItemView(item, mScrapActionButtonView, parent); - if (mScrapActionButtonView == null) { - mScrapActionButtonView = v; - } - if (mStrictWidthLimit) { - cellsRemaining -= ActionMenuView.measureChildForCells(v, - cellSize, cellsRemaining, querySpec, 0); - } else { - v.measure(querySpec, querySpec); - } - final int measuredWidth = v.getMeasuredWidth(); - widthLimit -= measuredWidth; - if (firstActionWidth == 0) { - firstActionWidth = measuredWidth; - } - final int groupId = item.getGroupId(); - if (groupId != 0) { - seenGroups.put(groupId, true); - } - item.setIsActionButton(true); - } else if (item.requestsActionButton()) { - // Items in a group with other items that already have an action slot - // can break the max actions rule, but not the width limit. - final int groupId = item.getGroupId(); - final boolean inGroup = seenGroups.get(groupId); - boolean isAction = (maxActions > 0 || inGroup) && widthLimit > 0 && - (!mStrictWidthLimit || cellsRemaining > 0); - - if (isAction) { - View v = getItemView(item, mScrapActionButtonView, parent); - if (mScrapActionButtonView == null) { - mScrapActionButtonView = v; - } - if (mStrictWidthLimit) { - final int cells = ActionMenuView.measureChildForCells(v, - cellSize, cellsRemaining, querySpec, 0); - cellsRemaining -= cells; - if (cells == 0) { - isAction = false; - } - } else { - v.measure(querySpec, querySpec); - } - final int measuredWidth = v.getMeasuredWidth(); - widthLimit -= measuredWidth; - if (firstActionWidth == 0) { - firstActionWidth = measuredWidth; - } - - if (mStrictWidthLimit) { - isAction &= widthLimit >= 0; - } else { - // Did this push the entire first item past the limit? - isAction &= widthLimit + firstActionWidth > 0; - } - } - - if (isAction && groupId != 0) { - seenGroups.put(groupId, true); - } else if (inGroup) { - // We broke the width limit. Demote the whole group, they all overflow now. - seenGroups.put(groupId, false); - for (int j = 0; j < i; j++) { - MenuItemImpl areYouMyGroupie = visibleItems.get(j); - if (areYouMyGroupie.getGroupId() == groupId) { - // Give back the action slot - if (areYouMyGroupie.isActionButton()) maxActions++; - areYouMyGroupie.setIsActionButton(false); - } - } - } - - if (isAction) maxActions--; - - item.setIsActionButton(isAction); - } - } - return true; - } - - @Override - public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { - dismissPopupMenus(); - super.onCloseMenu(menu, allMenusAreClosing); - } - - @Override - public Parcelable onSaveInstanceState() { - SavedState state = new SavedState(); - state.openSubMenuId = mOpenSubMenuId; - return state; - } - - @Override - public void onRestoreInstanceState(Parcelable state) { - SavedState saved = (SavedState) state; - if (saved.openSubMenuId > 0) { - MenuItem item = mMenu.findItem(saved.openSubMenuId); - if (item != null) { - SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu(); - onSubMenuSelected(subMenu); - } - } - } - - @Override - public void onSubUiVisibilityChanged(boolean isVisible) { - if (isVisible) { - // Not a submenu, but treat it like one. - super.onSubMenuSelected(null); - } else { - mMenu.close(false); - } - } - - private static class SavedState implements Parcelable { - public int openSubMenuId; - - SavedState() { - } - - SavedState(Parcel in) { - openSubMenuId = in.readInt(); - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(openSubMenuId); - } - - @SuppressWarnings("unused") - public static final Parcelable.Creator CREATOR - = new Parcelable.Creator() { - public SavedState createFromParcel(Parcel in) { - return new SavedState(in); - } - - public SavedState[] newArray(int size) { - return new SavedState[size]; - } - }; - } - - private class OverflowMenuButton extends ImageButton implements ActionMenuChildView, View_HasStateListenerSupport { - private final Set mListeners = new HashSet(); - - public OverflowMenuButton(Context context) { - super(context, null, R.attr.actionOverflowButtonStyle); - - setClickable(true); - setFocusable(true); - setVisibility(VISIBLE); - setEnabled(true); - } - - @Override - public boolean performClick() { - if (super.performClick()) { - return true; - } - - playSoundEffect(SoundEffectConstants.CLICK); - showOverflowMenu(); - return true; - } - - public boolean needsDividerBefore() { - return false; - } - - public boolean needsDividerAfter() { - return false; - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - for (View_OnAttachStateChangeListener listener : mListeners) { - listener.onViewAttachedToWindow(this); - } - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - for (View_OnAttachStateChangeListener listener : mListeners) { - listener.onViewDetachedFromWindow(this); - } - } - - @Override - public void addOnAttachStateChangeListener(View_OnAttachStateChangeListener listener) { - mListeners.add(listener); - } - - @Override - public void removeOnAttachStateChangeListener(View_OnAttachStateChangeListener listener) { - mListeners.remove(listener); - } - } - - private class OverflowPopup extends MenuPopupHelper { - public OverflowPopup(Context context, MenuBuilder menu, View anchorView, - boolean overflowOnly) { - super(context, menu, anchorView, overflowOnly); - setCallback(mPopupPresenterCallback); - } - - @Override - public void onDismiss() { - super.onDismiss(); - mMenu.close(); - mOverflowPopup = null; - } - } - - private class ActionButtonSubmenu extends MenuPopupHelper { - //UNUSED private SubMenuBuilder mSubMenu; - - public ActionButtonSubmenu(Context context, SubMenuBuilder subMenu) { - super(context, subMenu); - //UNUSED mSubMenu = subMenu; - - MenuItemImpl item = (MenuItemImpl) subMenu.getItem(); - if (!item.isActionButton()) { - // Give a reasonable anchor to nested submenus. - setAnchorView(mOverflowButton == null ? (View) mMenuView : mOverflowButton); - } - - setCallback(mPopupPresenterCallback); - - boolean preserveIconSpacing = false; - final int count = subMenu.size(); - for (int i = 0; i < count; i++) { - MenuItem childItem = subMenu.getItem(i); - if (childItem.isVisible() && childItem.getIcon() != null) { - preserveIconSpacing = true; - break; - } - } - setForceShowIcon(preserveIconSpacing); - } - - @Override - public void onDismiss() { - super.onDismiss(); - mActionButtonPopup = null; - mOpenSubMenuId = 0; - } - } - - private class PopupPresenterCallback implements MenuPresenter.Callback { - - @Override - public boolean onOpenSubMenu(MenuBuilder subMenu) { - if (subMenu == null) return false; - - mOpenSubMenuId = ((SubMenuBuilder) subMenu).getItem().getItemId(); - return false; - } - - @Override - public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { - if (menu instanceof SubMenuBuilder) { - ((SubMenuBuilder) menu).getRootMenu().close(false); - } - } - } - - private class OpenOverflowRunnable implements Runnable { - private OverflowPopup mPopup; - - public OpenOverflowRunnable(OverflowPopup popup) { - mPopup = popup; - } - - public void run() { - mMenu.changeMenuMode(); - final View menuView = (View) mMenuView; - if (menuView != null && menuView.getWindowToken() != null && mPopup.tryShow()) { - mOverflowPopup = mPopup; - } - mPostedOpenRunnable = null; - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuView.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuView.java deleted file mode 100755 index e090677a1..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuView.java +++ /dev/null @@ -1,572 +0,0 @@ -/* - * 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.internal.view.menu; - -import android.content.Context; -import android.content.res.Configuration; -import android.graphics.Canvas; -import android.os.Build; -import android.util.AttributeSet; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup; -import android.view.accessibility.AccessibilityEvent; -import android.widget.LinearLayout; -import com.actionbarsherlock.internal.widget.IcsLinearLayout; - -/** - * @hide - */ -public class ActionMenuView extends IcsLinearLayout implements MenuBuilder.ItemInvoker, MenuView { - //UNUSED private static final String TAG = "ActionMenuView"; - private static final boolean IS_FROYO = Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO; - - static final int MIN_CELL_SIZE = 56; // dips - static final int GENERATED_ITEM_PADDING = 4; // dips - - private MenuBuilder mMenu; - - private boolean mReserveOverflow; - private ActionMenuPresenter mPresenter; - private boolean mFormatItems; - private int mFormatItemsWidth; - private int mMinCellSize; - private int mGeneratedItemPadding; - //UNUSED private int mMeasuredExtraWidth; - - private boolean mFirst = true; - - public ActionMenuView(Context context) { - this(context, null); - } - - public ActionMenuView(Context context, AttributeSet attrs) { - super(context, attrs); - setBaselineAligned(false); - final float density = context.getResources().getDisplayMetrics().density; - mMinCellSize = (int) (MIN_CELL_SIZE * density); - mGeneratedItemPadding = (int) (GENERATED_ITEM_PADDING * density); - } - - public void setPresenter(ActionMenuPresenter presenter) { - mPresenter = presenter; - } - - public boolean isExpandedFormat() { - return mFormatItems; - } - - @Override - public void onConfigurationChanged(Configuration newConfig) { - if (IS_FROYO) { - super.onConfigurationChanged(newConfig); - } - mPresenter.updateMenuView(false); - - if (mPresenter != null && mPresenter.isOverflowMenuShowing()) { - mPresenter.hideOverflowMenu(); - mPresenter.showOverflowMenu(); - } - } - - @Override - protected void onDraw(Canvas canvas) { - //Need to trigger a relayout since we may have been added extremely - //late in the initial rendering (e.g., when contained in a ViewPager). - //See: https://github.com/JakeWharton/ActionBarSherlock/issues/272 - if (!IS_FROYO && mFirst) { - mFirst = false; - requestLayout(); - return; - } - super.onDraw(canvas); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - // If we've been given an exact size to match, apply special formatting during layout. - final boolean wasFormatted = mFormatItems; - mFormatItems = MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.EXACTLY; - - if (wasFormatted != mFormatItems) { - mFormatItemsWidth = 0; // Reset this when switching modes - } - - // Special formatting can change whether items can fit as action buttons. - // Kick the menu and update presenters when this changes. - final int widthSize = MeasureSpec.getMode(widthMeasureSpec); - if (mFormatItems && mMenu != null && widthSize != mFormatItemsWidth) { - mFormatItemsWidth = widthSize; - mMenu.onItemsChanged(true); - } - - if (mFormatItems) { - onMeasureExactFormat(widthMeasureSpec, heightMeasureSpec); - } else { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - } - } - - private void onMeasureExactFormat(int widthMeasureSpec, int heightMeasureSpec) { - // We already know the width mode is EXACTLY if we're here. - final int heightMode = MeasureSpec.getMode(heightMeasureSpec); - int widthSize = MeasureSpec.getSize(widthMeasureSpec); - int heightSize = MeasureSpec.getSize(heightMeasureSpec); - - final int widthPadding = getPaddingLeft() + getPaddingRight(); - final int heightPadding = getPaddingTop() + getPaddingBottom(); - - widthSize -= widthPadding; - - // Divide the view into cells. - final int cellCount = widthSize / mMinCellSize; - final int cellSizeRemaining = widthSize % mMinCellSize; - - if (cellCount == 0) { - // Give up, nothing fits. - setMeasuredDimension(widthSize, 0); - return; - } - - final int cellSize = mMinCellSize + cellSizeRemaining / cellCount; - - int cellsRemaining = cellCount; - int maxChildHeight = 0; - int maxCellsUsed = 0; - int expandableItemCount = 0; - int visibleItemCount = 0; - boolean hasOverflow = false; - - // This is used as a bitfield to locate the smallest items present. Assumes childCount < 64. - long smallestItemsAt = 0; - - final int childCount = getChildCount(); - for (int i = 0; i < childCount; i++) { - final View child = getChildAt(i); - if (child.getVisibility() == GONE) continue; - - final boolean isGeneratedItem = child instanceof ActionMenuItemView; - visibleItemCount++; - - if (isGeneratedItem) { - // Reset padding for generated menu item views; it may change below - // and views are recycled. - child.setPadding(mGeneratedItemPadding, 0, mGeneratedItemPadding, 0); - } - - final LayoutParams lp = (LayoutParams) child.getLayoutParams(); - lp.expanded = false; - lp.extraPixels = 0; - lp.cellsUsed = 0; - lp.expandable = false; - lp.leftMargin = 0; - lp.rightMargin = 0; - lp.preventEdgeOffset = isGeneratedItem && ((ActionMenuItemView) child).hasText(); - - // Overflow always gets 1 cell. No more, no less. - final int cellsAvailable = lp.isOverflowButton ? 1 : cellsRemaining; - - final int cellsUsed = measureChildForCells(child, cellSize, cellsAvailable, - heightMeasureSpec, heightPadding); - - maxCellsUsed = Math.max(maxCellsUsed, cellsUsed); - if (lp.expandable) expandableItemCount++; - if (lp.isOverflowButton) hasOverflow = true; - - cellsRemaining -= cellsUsed; - maxChildHeight = Math.max(maxChildHeight, child.getMeasuredHeight()); - if (cellsUsed == 1) smallestItemsAt |= (1 << i); - } - - // When we have overflow and a single expanded (text) item, we want to try centering it - // visually in the available space even though overflow consumes some of it. - final boolean centerSingleExpandedItem = hasOverflow && visibleItemCount == 2; - - // Divide space for remaining cells if we have items that can expand. - // Try distributing whole leftover cells to smaller items first. - - boolean needsExpansion = false; - while (expandableItemCount > 0 && cellsRemaining > 0) { - int minCells = Integer.MAX_VALUE; - long minCellsAt = 0; // Bit locations are indices of relevant child views - int minCellsItemCount = 0; - for (int i = 0; i < childCount; i++) { - final View child = getChildAt(i); - final LayoutParams lp = (LayoutParams) child.getLayoutParams(); - - // Don't try to expand items that shouldn't. - if (!lp.expandable) continue; - - // Mark indices of children that can receive an extra cell. - if (lp.cellsUsed < minCells) { - minCells = lp.cellsUsed; - minCellsAt = 1 << i; - minCellsItemCount = 1; - } else if (lp.cellsUsed == minCells) { - minCellsAt |= 1 << i; - minCellsItemCount++; - } - } - - // Items that get expanded will always be in the set of smallest items when we're done. - smallestItemsAt |= minCellsAt; - - if (minCellsItemCount > cellsRemaining) break; // Couldn't expand anything evenly. Stop. - - // We have enough cells, all minimum size items will be incremented. - minCells++; - - for (int i = 0; i < childCount; i++) { - final View child = getChildAt(i); - final LayoutParams lp = (LayoutParams) child.getLayoutParams(); - if ((minCellsAt & (1 << i)) == 0) { - // If this item is already at our small item count, mark it for later. - if (lp.cellsUsed == minCells) smallestItemsAt |= 1 << i; - continue; - } - - if (centerSingleExpandedItem && lp.preventEdgeOffset && cellsRemaining == 1) { - // Add padding to this item such that it centers. - child.setPadding(mGeneratedItemPadding + cellSize, 0, mGeneratedItemPadding, 0); - } - lp.cellsUsed++; - lp.expanded = true; - cellsRemaining--; - } - - needsExpansion = true; - } - - // Divide any space left that wouldn't divide along cell boundaries - // evenly among the smallest items - - final boolean singleItem = !hasOverflow && visibleItemCount == 1; - if (cellsRemaining > 0 && smallestItemsAt != 0 && - (cellsRemaining < visibleItemCount - 1 || singleItem || maxCellsUsed > 1)) { - float expandCount = Long.bitCount(smallestItemsAt); - - if (!singleItem) { - // The items at the far edges may only expand by half in order to pin to either side. - if ((smallestItemsAt & 1) != 0) { - LayoutParams lp = (LayoutParams) getChildAt(0).getLayoutParams(); - if (!lp.preventEdgeOffset) expandCount -= 0.5f; - } - if ((smallestItemsAt & (1 << (childCount - 1))) != 0) { - LayoutParams lp = ((LayoutParams) getChildAt(childCount - 1).getLayoutParams()); - if (!lp.preventEdgeOffset) expandCount -= 0.5f; - } - } - - final int extraPixels = expandCount > 0 ? - (int) (cellsRemaining * cellSize / expandCount) : 0; - - for (int i = 0; i < childCount; i++) { - if ((smallestItemsAt & (1 << i)) == 0) continue; - - final View child = getChildAt(i); - final LayoutParams lp = (LayoutParams) child.getLayoutParams(); - if (child instanceof ActionMenuItemView) { - // If this is one of our views, expand and measure at the larger size. - lp.extraPixels = extraPixels; - lp.expanded = true; - if (i == 0 && !lp.preventEdgeOffset) { - // First item gets part of its new padding pushed out of sight. - // The last item will get this implicitly from layout. - lp.leftMargin = -extraPixels / 2; - } - needsExpansion = true; - } else if (lp.isOverflowButton) { - lp.extraPixels = extraPixels; - lp.expanded = true; - lp.rightMargin = -extraPixels / 2; - needsExpansion = true; - } else { - // If we don't know what it is, give it some margins instead - // and let it center within its space. We still want to pin - // against the edges. - if (i != 0) { - lp.leftMargin = extraPixels / 2; - } - if (i != childCount - 1) { - lp.rightMargin = extraPixels / 2; - } - } - } - - cellsRemaining = 0; - } - - // Remeasure any items that have had extra space allocated to them. - if (needsExpansion) { - int heightSpec = MeasureSpec.makeMeasureSpec(heightSize - heightPadding, heightMode); - for (int i = 0; i < childCount; i++) { - final View child = getChildAt(i); - final LayoutParams lp = (LayoutParams) child.getLayoutParams(); - - if (!lp.expanded) continue; - - final int width = lp.cellsUsed * cellSize + lp.extraPixels; - child.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), heightSpec); - } - } - - if (heightMode != MeasureSpec.EXACTLY) { - heightSize = maxChildHeight; - } - - setMeasuredDimension(widthSize, heightSize); - //UNUSED mMeasuredExtraWidth = cellsRemaining * cellSize; - } - - /** - * Measure a child view to fit within cell-based formatting. The child's width - * will be measured to a whole multiple of cellSize. - * - *

Sets the expandable and cellsUsed fields of LayoutParams. - * - * @param child Child to measure - * @param cellSize Size of one cell - * @param cellsRemaining Number of cells remaining that this view can expand to fill - * @param parentHeightMeasureSpec MeasureSpec used by the parent view - * @param parentHeightPadding Padding present in the parent view - * @return Number of cells this child was measured to occupy - */ - static int measureChildForCells(View child, int cellSize, int cellsRemaining, - int parentHeightMeasureSpec, int parentHeightPadding) { - final LayoutParams lp = (LayoutParams) child.getLayoutParams(); - - final int childHeightSize = MeasureSpec.getSize(parentHeightMeasureSpec) - - parentHeightPadding; - final int childHeightMode = MeasureSpec.getMode(parentHeightMeasureSpec); - final int childHeightSpec = MeasureSpec.makeMeasureSpec(childHeightSize, childHeightMode); - - int cellsUsed = 0; - if (cellsRemaining > 0) { - final int childWidthSpec = MeasureSpec.makeMeasureSpec( - cellSize * cellsRemaining, MeasureSpec.AT_MOST); - child.measure(childWidthSpec, childHeightSpec); - - final int measuredWidth = child.getMeasuredWidth(); - cellsUsed = measuredWidth / cellSize; - if (measuredWidth % cellSize != 0) cellsUsed++; - } - - final ActionMenuItemView itemView = child instanceof ActionMenuItemView ? - (ActionMenuItemView) child : null; - final boolean expandable = !lp.isOverflowButton && itemView != null && itemView.hasText(); - lp.expandable = expandable; - - lp.cellsUsed = cellsUsed; - final int targetWidth = cellsUsed * cellSize; - child.measure(MeasureSpec.makeMeasureSpec(targetWidth, MeasureSpec.EXACTLY), - childHeightSpec); - return cellsUsed; - } - - @Override - protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - if (!mFormatItems) { - super.onLayout(changed, left, top, right, bottom); - return; - } - - final int childCount = getChildCount(); - final int midVertical = (top + bottom) / 2; - final int dividerWidth = 0;//getDividerWidth(); - int overflowWidth = 0; - //UNUSED int nonOverflowWidth = 0; - int nonOverflowCount = 0; - int widthRemaining = right - left - getPaddingRight() - getPaddingLeft(); - boolean hasOverflow = false; - for (int i = 0; i < childCount; i++) { - final View v = getChildAt(i); - if (v.getVisibility() == GONE) { - continue; - } - - LayoutParams p = (LayoutParams) v.getLayoutParams(); - if (p.isOverflowButton) { - overflowWidth = v.getMeasuredWidth(); - if (hasDividerBeforeChildAt(i)) { - overflowWidth += dividerWidth; - } - - int height = v.getMeasuredHeight(); - int r = getWidth() - getPaddingRight() - p.rightMargin; - int l = r - overflowWidth; - int t = midVertical - (height / 2); - int b = t + height; - v.layout(l, t, r, b); - - widthRemaining -= overflowWidth; - hasOverflow = true; - } else { - final int size = v.getMeasuredWidth() + p.leftMargin + p.rightMargin; - //UNUSED nonOverflowWidth += size; - widthRemaining -= size; - //if (hasDividerBeforeChildAt(i)) { - //UNUSED nonOverflowWidth += dividerWidth; - //} - nonOverflowCount++; - } - } - - if (childCount == 1 && !hasOverflow) { - // Center a single child - final View v = getChildAt(0); - final int width = v.getMeasuredWidth(); - final int height = v.getMeasuredHeight(); - final int midHorizontal = (right - left) / 2; - final int l = midHorizontal - width / 2; - final int t = midVertical - height / 2; - v.layout(l, t, l + width, t + height); - return; - } - - final int spacerCount = nonOverflowCount - (hasOverflow ? 0 : 1); - final int spacerSize = Math.max(0, spacerCount > 0 ? widthRemaining / spacerCount : 0); - - int startLeft = getPaddingLeft(); - for (int i = 0; i < childCount; i++) { - final View v = getChildAt(i); - final LayoutParams lp = (LayoutParams) v.getLayoutParams(); - if (v.getVisibility() == GONE || lp.isOverflowButton) { - continue; - } - - startLeft += lp.leftMargin; - int width = v.getMeasuredWidth(); - int height = v.getMeasuredHeight(); - int t = midVertical - height / 2; - v.layout(startLeft, t, startLeft + width, t + height); - startLeft += width + lp.rightMargin + spacerSize; - } - } - - @Override - public void onDetachedFromWindow() { - super.onDetachedFromWindow(); - mPresenter.dismissPopupMenus(); - } - - public boolean isOverflowReserved() { - return mReserveOverflow; - } - - public void setOverflowReserved(boolean reserveOverflow) { - mReserveOverflow = reserveOverflow; - } - - @Override - protected LayoutParams generateDefaultLayoutParams() { - LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, - LayoutParams.WRAP_CONTENT); - params.gravity = Gravity.CENTER_VERTICAL; - return params; - } - - @Override - public LayoutParams generateLayoutParams(AttributeSet attrs) { - return new LayoutParams(getContext(), attrs); - } - - @Override - protected LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) { - if (p instanceof LayoutParams) { - LayoutParams result = new LayoutParams((LayoutParams) p); - if (result.gravity <= Gravity.NO_GRAVITY) { - result.gravity = Gravity.CENTER_VERTICAL; - } - return result; - } - return generateDefaultLayoutParams(); - } - - @Override - protected boolean checkLayoutParams(ViewGroup.LayoutParams p) { - return p != null && p instanceof LayoutParams; - } - - public LayoutParams generateOverflowButtonLayoutParams() { - LayoutParams result = generateDefaultLayoutParams(); - result.isOverflowButton = true; - return result; - } - - public boolean invokeItem(MenuItemImpl item) { - return mMenu.performItemAction(item, 0); - } - - public int getWindowAnimations() { - return 0; - } - - public void initialize(MenuBuilder menu) { - mMenu = menu; - } - - //@Override - protected boolean hasDividerBeforeChildAt(int childIndex) { - final View childBefore = getChildAt(childIndex - 1); - final View child = getChildAt(childIndex); - boolean result = false; - if (childIndex < getChildCount() && childBefore instanceof ActionMenuChildView) { - result |= ((ActionMenuChildView) childBefore).needsDividerAfter(); - } - if (childIndex > 0 && child instanceof ActionMenuChildView) { - result |= ((ActionMenuChildView) child).needsDividerBefore(); - } - return result; - } - - public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { - return false; - } - - public interface ActionMenuChildView { - public boolean needsDividerBefore(); - public boolean needsDividerAfter(); - } - - public static class LayoutParams extends LinearLayout.LayoutParams { - public boolean isOverflowButton; - public int cellsUsed; - public int extraPixels; - public boolean expandable; - public boolean preventEdgeOffset; - - public boolean expanded; - - public LayoutParams(Context c, AttributeSet attrs) { - super(c, attrs); - } - - public LayoutParams(LayoutParams other) { - super((LinearLayout.LayoutParams) other); - isOverflowButton = other.isOverflowButton; - } - - public LayoutParams(int width, int height) { - super(width, height); - isOverflowButton = false; - } - - public LayoutParams(int width, int height, boolean isOverflowButton) { - super(width, height); - this.isOverflowButton = isOverflowButton; - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/BaseMenuPresenter.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/BaseMenuPresenter.java deleted file mode 100755 index 6da26f2ae..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/BaseMenuPresenter.java +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.internal.view.menu; - -import java.util.ArrayList; -import android.content.Context; -import android.os.Build; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -/** - * Base class for MenuPresenters that have a consistent container view and item - * views. Behaves similarly to an AdapterView in that existing item views will - * be reused if possible when items change. - */ -public abstract class BaseMenuPresenter implements MenuPresenter { - private static final boolean IS_HONEYCOMB = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB; - - protected Context mSystemContext; - protected Context mContext; - protected MenuBuilder mMenu; - protected LayoutInflater mSystemInflater; - protected LayoutInflater mInflater; - private Callback mCallback; - - private int mMenuLayoutRes; - private int mItemLayoutRes; - - protected MenuView mMenuView; - - private int mId; - - /** - * Construct a new BaseMenuPresenter. - * - * @param context Context for generating system-supplied views - * @param menuLayoutRes Layout resource ID for the menu container view - * @param itemLayoutRes Layout resource ID for a single item view - */ - public BaseMenuPresenter(Context context, int menuLayoutRes, int itemLayoutRes) { - mSystemContext = context; - mSystemInflater = LayoutInflater.from(context); - mMenuLayoutRes = menuLayoutRes; - mItemLayoutRes = itemLayoutRes; - } - - @Override - public void initForMenu(Context context, MenuBuilder menu) { - mContext = context; - mInflater = LayoutInflater.from(mContext); - mMenu = menu; - } - - @Override - public MenuView getMenuView(ViewGroup root) { - if (mMenuView == null) { - mMenuView = (MenuView) mSystemInflater.inflate(mMenuLayoutRes, root, false); - mMenuView.initialize(mMenu); - updateMenuView(true); - } - - return mMenuView; - } - - /** - * Reuses item views when it can - */ - public void updateMenuView(boolean cleared) { - final ViewGroup parent = (ViewGroup) mMenuView; - if (parent == null) return; - - int childIndex = 0; - if (mMenu != null) { - mMenu.flagActionItems(); - ArrayList visibleItems = mMenu.getVisibleItems(); - final int itemCount = visibleItems.size(); - for (int i = 0; i < itemCount; i++) { - MenuItemImpl item = visibleItems.get(i); - if (shouldIncludeItem(childIndex, item)) { - final View convertView = parent.getChildAt(childIndex); - final MenuItemImpl oldItem = convertView instanceof MenuView.ItemView ? - ((MenuView.ItemView) convertView).getItemData() : null; - final View itemView = getItemView(item, convertView, parent); - if (item != oldItem) { - // Don't let old states linger with new data. - itemView.setPressed(false); - if (IS_HONEYCOMB) itemView.jumpDrawablesToCurrentState(); - } - if (itemView != convertView) { - addItemView(itemView, childIndex); - } - childIndex++; - } - } - } - - // Remove leftover views. - while (childIndex < parent.getChildCount()) { - if (!filterLeftoverView(parent, childIndex)) { - childIndex++; - } - } - } - - /** - * Add an item view at the given index. - * - * @param itemView View to add - * @param childIndex Index within the parent to insert at - */ - protected void addItemView(View itemView, int childIndex) { - final ViewGroup currentParent = (ViewGroup) itemView.getParent(); - if (currentParent != null) { - currentParent.removeView(itemView); - } - ((ViewGroup) mMenuView).addView(itemView, childIndex); - } - - /** - * Filter the child view at index and remove it if appropriate. - * @param parent Parent to filter from - * @param childIndex Index to filter - * @return true if the child view at index was removed - */ - protected boolean filterLeftoverView(ViewGroup parent, int childIndex) { - parent.removeViewAt(childIndex); - return true; - } - - public void setCallback(Callback cb) { - mCallback = cb; - } - - /** - * Create a new item view that can be re-bound to other item data later. - * - * @return The new item view - */ - public MenuView.ItemView createItemView(ViewGroup parent) { - return (MenuView.ItemView) mSystemInflater.inflate(mItemLayoutRes, parent, false); - } - - /** - * Prepare an item view for use. See AdapterView for the basic idea at work here. - * This may require creating a new item view, but well-behaved implementations will - * re-use the view passed as convertView if present. The returned view will be populated - * with data from the item parameter. - * - * @param item Item to present - * @param convertView Existing view to reuse - * @param parent Intended parent view - use for inflation. - * @return View that presents the requested menu item - */ - public View getItemView(MenuItemImpl item, View convertView, ViewGroup parent) { - MenuView.ItemView itemView; - if (convertView instanceof MenuView.ItemView) { - itemView = (MenuView.ItemView) convertView; - } else { - itemView = createItemView(parent); - } - bindItemView(item, itemView); - return (View) itemView; - } - - /** - * Bind item data to an existing item view. - * - * @param item Item to bind - * @param itemView View to populate with item data - */ - public abstract void bindItemView(MenuItemImpl item, MenuView.ItemView itemView); - - /** - * Filter item by child index and item data. - * - * @param childIndex Indended presentation index of this item - * @param item Item to present - * @return true if this item should be included in this menu presentation; false otherwise - */ - public boolean shouldIncludeItem(int childIndex, MenuItemImpl item) { - return true; - } - - public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { - if (mCallback != null) { - mCallback.onCloseMenu(menu, allMenusAreClosing); - } - } - - public boolean onSubMenuSelected(SubMenuBuilder menu) { - if (mCallback != null) { - return mCallback.onOpenSubMenu(menu); - } - return false; - } - - public boolean flagActionItems() { - return false; - } - - public boolean expandItemActionView(MenuBuilder menu, MenuItemImpl item) { - return false; - } - - public boolean collapseItemActionView(MenuBuilder menu, MenuItemImpl item) { - return false; - } - - public int getId() { - return mId; - } - - public void setId(int id) { - mId = id; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ListMenuItemView.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ListMenuItemView.java deleted file mode 100755 index ac25c3736..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ListMenuItemView.java +++ /dev/null @@ -1,278 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.internal.view.menu; - -import com.actionbarsherlock.R; - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.drawable.Drawable; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.RadioButton; -import android.widget.TextView; - -/** - * The item view for each item in the ListView-based MenuViews. - */ -public class ListMenuItemView extends LinearLayout implements MenuView.ItemView { - private MenuItemImpl mItemData; - - private ImageView mIconView; - private RadioButton mRadioButton; - private TextView mTitleView; - private CheckBox mCheckBox; - private TextView mShortcutView; - - private Drawable mBackground; - private int mTextAppearance; - private Context mTextAppearanceContext; - private boolean mPreserveIconSpacing; - - //UNUSED private int mMenuType; - - private LayoutInflater mInflater; - - private boolean mForceShowIcon; - - final Context mContext; - - public ListMenuItemView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs); - mContext = context; - - TypedArray a = - context.obtainStyledAttributes( - attrs, R.styleable.SherlockMenuView, defStyle, 0); - - mBackground = a.getDrawable(R.styleable.SherlockMenuView_itemBackground); - mTextAppearance = a.getResourceId(R.styleable. - SherlockMenuView_itemTextAppearance, -1); - mPreserveIconSpacing = a.getBoolean( - R.styleable.SherlockMenuView_preserveIconSpacing, false); - mTextAppearanceContext = context; - - a.recycle(); - } - - public ListMenuItemView(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - @Override - protected void onFinishInflate() { - super.onFinishInflate(); - - setBackgroundDrawable(mBackground); - - mTitleView = (TextView) findViewById(R.id.abs__title); - if (mTextAppearance != -1) { - mTitleView.setTextAppearance(mTextAppearanceContext, - mTextAppearance); - } - - mShortcutView = (TextView) findViewById(R.id.abs__shortcut); - } - - public void initialize(MenuItemImpl itemData, int menuType) { - mItemData = itemData; - //UNUSED mMenuType = menuType; - - setVisibility(itemData.isVisible() ? View.VISIBLE : View.GONE); - - setTitle(itemData.getTitleForItemView(this)); - setCheckable(itemData.isCheckable()); - setShortcut(itemData.shouldShowShortcut(), itemData.getShortcut()); - setIcon(itemData.getIcon()); - setEnabled(itemData.isEnabled()); - } - - public void setForceShowIcon(boolean forceShow) { - mPreserveIconSpacing = mForceShowIcon = forceShow; - } - - public void setTitle(CharSequence title) { - if (title != null) { - mTitleView.setText(title); - - if (mTitleView.getVisibility() != VISIBLE) mTitleView.setVisibility(VISIBLE); - } else { - if (mTitleView.getVisibility() != GONE) mTitleView.setVisibility(GONE); - } - } - - public MenuItemImpl getItemData() { - return mItemData; - } - - public void setCheckable(boolean checkable) { - - if (!checkable && mRadioButton == null && mCheckBox == null) { - return; - } - - if (mRadioButton == null) { - insertRadioButton(); - } - if (mCheckBox == null) { - insertCheckBox(); - } - - // Depending on whether its exclusive check or not, the checkbox or - // radio button will be the one in use (and the other will be otherCompoundButton) - final CompoundButton compoundButton; - final CompoundButton otherCompoundButton; - - if (mItemData.isExclusiveCheckable()) { - compoundButton = mRadioButton; - otherCompoundButton = mCheckBox; - } else { - compoundButton = mCheckBox; - otherCompoundButton = mRadioButton; - } - - if (checkable) { - compoundButton.setChecked(mItemData.isChecked()); - - final int newVisibility = checkable ? VISIBLE : GONE; - if (compoundButton.getVisibility() != newVisibility) { - compoundButton.setVisibility(newVisibility); - } - - // Make sure the other compound button isn't visible - if (otherCompoundButton.getVisibility() != GONE) { - otherCompoundButton.setVisibility(GONE); - } - } else { - mCheckBox.setVisibility(GONE); - mRadioButton.setVisibility(GONE); - } - } - - public void setChecked(boolean checked) { - CompoundButton compoundButton; - - if (mItemData.isExclusiveCheckable()) { - if (mRadioButton == null) { - insertRadioButton(); - } - compoundButton = mRadioButton; - } else { - if (mCheckBox == null) { - insertCheckBox(); - } - compoundButton = mCheckBox; - } - - compoundButton.setChecked(checked); - } - - public void setShortcut(boolean showShortcut, char shortcutKey) { - final int newVisibility = (showShortcut && mItemData.shouldShowShortcut()) - ? VISIBLE : GONE; - - if (newVisibility == VISIBLE) { - mShortcutView.setText(mItemData.getShortcutLabel()); - } - - if (mShortcutView.getVisibility() != newVisibility) { - mShortcutView.setVisibility(newVisibility); - } - } - - public void setIcon(Drawable icon) { - final boolean showIcon = mItemData.shouldShowIcon() || mForceShowIcon; - if (!showIcon && !mPreserveIconSpacing) { - return; - } - - if (mIconView == null && icon == null && !mPreserveIconSpacing) { - return; - } - - if (mIconView == null) { - insertIconView(); - } - - if (icon != null || mPreserveIconSpacing) { - mIconView.setImageDrawable(showIcon ? icon : null); - - if (mIconView.getVisibility() != VISIBLE) { - mIconView.setVisibility(VISIBLE); - } - } else { - mIconView.setVisibility(GONE); - } - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - if (mIconView != null && mPreserveIconSpacing) { - // Enforce minimum icon spacing - ViewGroup.LayoutParams lp = getLayoutParams(); - LayoutParams iconLp = (LayoutParams) mIconView.getLayoutParams(); - if (lp.height > 0 && iconLp.width <= 0) { - iconLp.width = lp.height; - } - } - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - } - - private void insertIconView() { - LayoutInflater inflater = getInflater(); - mIconView = (ImageView) inflater.inflate(R.layout.abs__list_menu_item_icon, - this, false); - addView(mIconView, 0); - } - - private void insertRadioButton() { - LayoutInflater inflater = getInflater(); - mRadioButton = - (RadioButton) inflater.inflate(R.layout.abs__list_menu_item_radio, - this, false); - addView(mRadioButton); - } - - private void insertCheckBox() { - LayoutInflater inflater = getInflater(); - mCheckBox = - (CheckBox) inflater.inflate(R.layout.abs__list_menu_item_checkbox, - this, false); - addView(mCheckBox); - } - - public boolean prefersCondensedTitle() { - return false; - } - - public boolean showsIcon() { - return mForceShowIcon; - } - - private LayoutInflater getInflater() { - if (mInflater == null) { - mInflater = LayoutInflater.from(mContext); - } - return mInflater; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuBuilder.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuBuilder.java deleted file mode 100755 index 179b8f037..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuBuilder.java +++ /dev/null @@ -1,1335 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.internal.view.menu; - - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; - -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.graphics.drawable.Drawable; -import android.os.Bundle; -import android.os.Parcelable; -import android.util.SparseArray; -import android.view.ContextMenu.ContextMenuInfo; -import android.view.KeyCharacterMap; -import android.view.KeyEvent; -import android.view.View; - -import com.actionbarsherlock.R; -import com.actionbarsherlock.view.ActionProvider; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuItem; -import com.actionbarsherlock.view.SubMenu; - -/** - * Implementation of the {@link android.view.Menu} interface for creating a - * standard menu UI. - */ -public class MenuBuilder implements Menu { - //UNUSED private static final String TAG = "MenuBuilder"; - - private static final String PRESENTER_KEY = "android:menu:presenters"; - private static final String ACTION_VIEW_STATES_KEY = "android:menu:actionviewstates"; - private static final String EXPANDED_ACTION_VIEW_ID = "android:menu:expandedactionview"; - - private static final int[] sCategoryToOrder = new int[] { - 1, /* No category */ - 4, /* CONTAINER */ - 5, /* SYSTEM */ - 3, /* SECONDARY */ - 2, /* ALTERNATIVE */ - 0, /* SELECTED_ALTERNATIVE */ - }; - - private final Context mContext; - private final Resources mResources; - - /** - * Whether the shortcuts should be qwerty-accessible. Use isQwertyMode() - * instead of accessing this directly. - */ - private boolean mQwertyMode; - - /** - * Whether the shortcuts should be visible on menus. Use isShortcutsVisible() - * instead of accessing this directly. - */ - private boolean mShortcutsVisible; - - /** - * Callback that will receive the various menu-related events generated by - * this class. Use getCallback to get a reference to the callback. - */ - private Callback mCallback; - - /** Contains all of the items for this menu */ - private ArrayList mItems; - - /** Contains only the items that are currently visible. This will be created/refreshed from - * {@link #getVisibleItems()} */ - private ArrayList mVisibleItems; - /** - * Whether or not the items (or any one item's shown state) has changed since it was last - * fetched from {@link #getVisibleItems()} - */ - private boolean mIsVisibleItemsStale; - - /** - * Contains only the items that should appear in the Action Bar, if present. - */ - private ArrayList mActionItems; - /** - * Contains items that should NOT appear in the Action Bar, if present. - */ - private ArrayList mNonActionItems; - - /** - * Whether or not the items (or any one item's action state) has changed since it was - * last fetched. - */ - private boolean mIsActionItemsStale; - - /** - * Default value for how added items should show in the action list. - */ - private int mDefaultShowAsAction = MenuItem.SHOW_AS_ACTION_NEVER; - - /** - * Current use case is Context Menus: As Views populate the context menu, each one has - * extra information that should be passed along. This is the current menu info that - * should be set on all items added to this menu. - */ - private ContextMenuInfo mCurrentMenuInfo; - - /** Header title for menu types that have a header (context and submenus) */ - CharSequence mHeaderTitle; - /** Header icon for menu types that have a header and support icons (context) */ - Drawable mHeaderIcon; - /** Header custom view for menu types that have a header and support custom views (context) */ - View mHeaderView; - - /** - * Contains the state of the View hierarchy for all menu views when the menu - * was frozen. - */ - //UNUSED private SparseArray mFrozenViewStates; - - /** - * Prevents onItemsChanged from doing its junk, useful for batching commands - * that may individually call onItemsChanged. - */ - private boolean mPreventDispatchingItemsChanged = false; - private boolean mItemsChangedWhileDispatchPrevented = false; - - private boolean mOptionalIconsVisible = false; - - private boolean mIsClosing = false; - - private ArrayList mTempShortcutItemList = new ArrayList(); - - private CopyOnWriteArrayList> mPresenters = - new CopyOnWriteArrayList>(); - - /** - * Currently expanded menu item; must be collapsed when we clear. - */ - private MenuItemImpl mExpandedItem; - - /** - * Called by menu to notify of close and selection changes. - */ - public interface Callback { - /** - * Called when a menu item is selected. - * @param menu The menu that is the parent of the item - * @param item The menu item that is selected - * @return whether the menu item selection was handled - */ - public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item); - - /** - * Called when the mode of the menu changes (for example, from icon to expanded). - * - * @param menu the menu that has changed modes - */ - public void onMenuModeChange(MenuBuilder menu); - } - - /** - * Called by menu items to execute their associated action - */ - public interface ItemInvoker { - public boolean invokeItem(MenuItemImpl item); - } - - public MenuBuilder(Context context) { - mContext = context; - mResources = context.getResources(); - - mItems = new ArrayList(); - - mVisibleItems = new ArrayList(); - mIsVisibleItemsStale = true; - - mActionItems = new ArrayList(); - mNonActionItems = new ArrayList(); - mIsActionItemsStale = true; - - setShortcutsVisibleInner(true); - } - - public MenuBuilder setDefaultShowAsAction(int defaultShowAsAction) { - mDefaultShowAsAction = defaultShowAsAction; - return this; - } - - /** - * Add a presenter to this menu. This will only hold a WeakReference; - * you do not need to explicitly remove a presenter, but you can using - * {@link #removeMenuPresenter(MenuPresenter)}. - * - * @param presenter The presenter to add - */ - public void addMenuPresenter(MenuPresenter presenter) { - mPresenters.add(new WeakReference(presenter)); - presenter.initForMenu(mContext, this); - mIsActionItemsStale = true; - } - - /** - * Remove a presenter from this menu. That presenter will no longer - * receive notifications of updates to this menu's data. - * - * @param presenter The presenter to remove - */ - public void removeMenuPresenter(MenuPresenter presenter) { - for (WeakReference ref : mPresenters) { - final MenuPresenter item = ref.get(); - if (item == null || item == presenter) { - mPresenters.remove(ref); - } - } - } - - private void dispatchPresenterUpdate(boolean cleared) { - if (mPresenters.isEmpty()) return; - - stopDispatchingItemsChanged(); - for (WeakReference ref : mPresenters) { - final MenuPresenter presenter = ref.get(); - if (presenter == null) { - mPresenters.remove(ref); - } else { - presenter.updateMenuView(cleared); - } - } - startDispatchingItemsChanged(); - } - - private boolean dispatchSubMenuSelected(SubMenuBuilder subMenu) { - if (mPresenters.isEmpty()) return false; - - boolean result = false; - - for (WeakReference ref : mPresenters) { - final MenuPresenter presenter = ref.get(); - if (presenter == null) { - mPresenters.remove(ref); - } else if (!result) { - result = presenter.onSubMenuSelected(subMenu); - } - } - return result; - } - - private void dispatchSaveInstanceState(Bundle outState) { - if (mPresenters.isEmpty()) return; - - SparseArray presenterStates = new SparseArray(); - - for (WeakReference ref : mPresenters) { - final MenuPresenter presenter = ref.get(); - if (presenter == null) { - mPresenters.remove(ref); - } else { - final int id = presenter.getId(); - if (id > 0) { - final Parcelable state = presenter.onSaveInstanceState(); - if (state != null) { - presenterStates.put(id, state); - } - } - } - } - - outState.putSparseParcelableArray(PRESENTER_KEY, presenterStates); - } - - private void dispatchRestoreInstanceState(Bundle state) { - SparseArray presenterStates = state.getSparseParcelableArray(PRESENTER_KEY); - - if (presenterStates == null || mPresenters.isEmpty()) return; - - for (WeakReference ref : mPresenters) { - final MenuPresenter presenter = ref.get(); - if (presenter == null) { - mPresenters.remove(ref); - } else { - final int id = presenter.getId(); - if (id > 0) { - Parcelable parcel = presenterStates.get(id); - if (parcel != null) { - presenter.onRestoreInstanceState(parcel); - } - } - } - } - } - - public void savePresenterStates(Bundle outState) { - dispatchSaveInstanceState(outState); - } - - public void restorePresenterStates(Bundle state) { - dispatchRestoreInstanceState(state); - } - - public void saveActionViewStates(Bundle outStates) { - SparseArray viewStates = null; - - final int itemCount = size(); - for (int i = 0; i < itemCount; i++) { - final MenuItem item = getItem(i); - final View v = item.getActionView(); - if (v != null && v.getId() != View.NO_ID) { - if (viewStates == null) { - viewStates = new SparseArray(); - } - v.saveHierarchyState(viewStates); - if (item.isActionViewExpanded()) { - outStates.putInt(EXPANDED_ACTION_VIEW_ID, item.getItemId()); - } - } - if (item.hasSubMenu()) { - final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu(); - subMenu.saveActionViewStates(outStates); - } - } - - if (viewStates != null) { - outStates.putSparseParcelableArray(getActionViewStatesKey(), viewStates); - } - } - - public void restoreActionViewStates(Bundle states) { - if (states == null) { - return; - } - - SparseArray viewStates = states.getSparseParcelableArray( - getActionViewStatesKey()); - - final int itemCount = size(); - for (int i = 0; i < itemCount; i++) { - final MenuItem item = getItem(i); - final View v = item.getActionView(); - if (v != null && v.getId() != View.NO_ID) { - v.restoreHierarchyState(viewStates); - } - if (item.hasSubMenu()) { - final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu(); - subMenu.restoreActionViewStates(states); - } - } - - final int expandedId = states.getInt(EXPANDED_ACTION_VIEW_ID); - if (expandedId > 0) { - MenuItem itemToExpand = findItem(expandedId); - if (itemToExpand != null) { - itemToExpand.expandActionView(); - } - } - } - - protected String getActionViewStatesKey() { - return ACTION_VIEW_STATES_KEY; - } - - public void setCallback(Callback cb) { - mCallback = cb; - } - - /** - * Adds an item to the menu. The other add methods funnel to this. - */ - private MenuItem addInternal(int group, int id, int categoryOrder, CharSequence title) { - final int ordering = getOrdering(categoryOrder); - - final MenuItemImpl item = new MenuItemImpl(this, group, id, categoryOrder, - ordering, title, mDefaultShowAsAction); - - if (mCurrentMenuInfo != null) { - // Pass along the current menu info - item.setMenuInfo(mCurrentMenuInfo); - } - - mItems.add(findInsertIndex(mItems, ordering), item); - onItemsChanged(true); - - return item; - } - - public MenuItem add(CharSequence title) { - return addInternal(0, 0, 0, title); - } - - public MenuItem add(int titleRes) { - return addInternal(0, 0, 0, mResources.getString(titleRes)); - } - - public MenuItem add(int group, int id, int categoryOrder, CharSequence title) { - return addInternal(group, id, categoryOrder, title); - } - - public MenuItem add(int group, int id, int categoryOrder, int title) { - return addInternal(group, id, categoryOrder, mResources.getString(title)); - } - - public SubMenu addSubMenu(CharSequence title) { - return addSubMenu(0, 0, 0, title); - } - - public SubMenu addSubMenu(int titleRes) { - return addSubMenu(0, 0, 0, mResources.getString(titleRes)); - } - - public SubMenu addSubMenu(int group, int id, int categoryOrder, CharSequence title) { - final MenuItemImpl item = (MenuItemImpl) addInternal(group, id, categoryOrder, title); - final SubMenuBuilder subMenu = new SubMenuBuilder(mContext, this, item); - item.setSubMenu(subMenu); - - return subMenu; - } - - public SubMenu addSubMenu(int group, int id, int categoryOrder, int title) { - return addSubMenu(group, id, categoryOrder, mResources.getString(title)); - } - - public int addIntentOptions(int group, int id, int categoryOrder, ComponentName caller, - Intent[] specifics, Intent intent, int flags, MenuItem[] outSpecificItems) { - PackageManager pm = mContext.getPackageManager(); - final List lri = - pm.queryIntentActivityOptions(caller, specifics, intent, 0); - final int N = lri != null ? lri.size() : 0; - - if ((flags & FLAG_APPEND_TO_GROUP) == 0) { - removeGroup(group); - } - - for (int i=0; i= 0) { - outSpecificItems[ri.specificIndex] = item; - } - } - - return N; - } - - public void removeItem(int id) { - removeItemAtInt(findItemIndex(id), true); - } - - public void removeGroup(int group) { - final int i = findGroupIndex(group); - - if (i >= 0) { - final int maxRemovable = mItems.size() - i; - int numRemoved = 0; - while ((numRemoved++ < maxRemovable) && (mItems.get(i).getGroupId() == group)) { - // Don't force update for each one, this method will do it at the end - removeItemAtInt(i, false); - } - - // Notify menu views - onItemsChanged(true); - } - } - - /** - * Remove the item at the given index and optionally forces menu views to - * update. - * - * @param index The index of the item to be removed. If this index is - * invalid an exception is thrown. - * @param updateChildrenOnMenuViews Whether to force update on menu views. - * Please make sure you eventually call this after your batch of - * removals. - */ - private void removeItemAtInt(int index, boolean updateChildrenOnMenuViews) { - if ((index < 0) || (index >= mItems.size())) return; - - mItems.remove(index); - - if (updateChildrenOnMenuViews) onItemsChanged(true); - } - - public void removeItemAt(int index) { - removeItemAtInt(index, true); - } - - public void clearAll() { - mPreventDispatchingItemsChanged = true; - clear(); - clearHeader(); - mPreventDispatchingItemsChanged = false; - mItemsChangedWhileDispatchPrevented = false; - onItemsChanged(true); - } - - public void clear() { - if (mExpandedItem != null) { - collapseItemActionView(mExpandedItem); - } - mItems.clear(); - - onItemsChanged(true); - } - - void setExclusiveItemChecked(MenuItem item) { - final int group = item.getGroupId(); - - final int N = mItems.size(); - for (int i = 0; i < N; i++) { - MenuItemImpl curItem = mItems.get(i); - if (curItem.getGroupId() == group) { - if (!curItem.isExclusiveCheckable()) continue; - if (!curItem.isCheckable()) continue; - - // Check the item meant to be checked, uncheck the others (that are in the group) - curItem.setCheckedInt(curItem == item); - } - } - } - - public void setGroupCheckable(int group, boolean checkable, boolean exclusive) { - final int N = mItems.size(); - - for (int i = 0; i < N; i++) { - MenuItemImpl item = mItems.get(i); - if (item.getGroupId() == group) { - item.setExclusiveCheckable(exclusive); - item.setCheckable(checkable); - } - } - } - - public void setGroupVisible(int group, boolean visible) { - final int N = mItems.size(); - - // We handle the notification of items being changed ourselves, so we use setVisibleInt rather - // than setVisible and at the end notify of items being changed - - boolean changedAtLeastOneItem = false; - for (int i = 0; i < N; i++) { - MenuItemImpl item = mItems.get(i); - if (item.getGroupId() == group) { - if (item.setVisibleInt(visible)) changedAtLeastOneItem = true; - } - } - - if (changedAtLeastOneItem) onItemsChanged(true); - } - - public void setGroupEnabled(int group, boolean enabled) { - final int N = mItems.size(); - - for (int i = 0; i < N; i++) { - MenuItemImpl item = mItems.get(i); - if (item.getGroupId() == group) { - item.setEnabled(enabled); - } - } - } - - public boolean hasVisibleItems() { - final int size = size(); - - for (int i = 0; i < size; i++) { - MenuItemImpl item = mItems.get(i); - if (item.isVisible()) { - return true; - } - } - - return false; - } - - public MenuItem findItem(int id) { - final int size = size(); - for (int i = 0; i < size; i++) { - MenuItemImpl item = mItems.get(i); - if (item.getItemId() == id) { - return item; - } else if (item.hasSubMenu()) { - MenuItem possibleItem = item.getSubMenu().findItem(id); - - if (possibleItem != null) { - return possibleItem; - } - } - } - - return null; - } - - public int findItemIndex(int id) { - final int size = size(); - - for (int i = 0; i < size; i++) { - MenuItemImpl item = mItems.get(i); - if (item.getItemId() == id) { - return i; - } - } - - return -1; - } - - public int findGroupIndex(int group) { - return findGroupIndex(group, 0); - } - - public int findGroupIndex(int group, int start) { - final int size = size(); - - if (start < 0) { - start = 0; - } - - for (int i = start; i < size; i++) { - final MenuItemImpl item = mItems.get(i); - - if (item.getGroupId() == group) { - return i; - } - } - - return -1; - } - - public int size() { - return mItems.size(); - } - - /** {@inheritDoc} */ - public MenuItem getItem(int index) { - return mItems.get(index); - } - - public boolean isShortcutKey(int keyCode, KeyEvent event) { - return findItemWithShortcutForKey(keyCode, event) != null; - } - - public void setQwertyMode(boolean isQwerty) { - mQwertyMode = isQwerty; - - onItemsChanged(false); - } - - /** - * Returns the ordering across all items. This will grab the category from - * the upper bits, find out how to order the category with respect to other - * categories, and combine it with the lower bits. - * - * @param categoryOrder The category order for a particular item (if it has - * not been or/add with a category, the default category is - * assumed). - * @return An ordering integer that can be used to order this item across - * all the items (even from other categories). - */ - private static int getOrdering(int categoryOrder) { - final int index = (categoryOrder & CATEGORY_MASK) >> CATEGORY_SHIFT; - - if (index < 0 || index >= sCategoryToOrder.length) { - throw new IllegalArgumentException("order does not contain a valid category."); - } - - return (sCategoryToOrder[index] << CATEGORY_SHIFT) | (categoryOrder & USER_MASK); - } - - /** - * @return whether the menu shortcuts are in qwerty mode or not - */ - boolean isQwertyMode() { - return mQwertyMode; - } - - /** - * Sets whether the shortcuts should be visible on menus. Devices without hardware - * key input will never make shortcuts visible even if this method is passed 'true'. - * - * @param shortcutsVisible Whether shortcuts should be visible (if true and a - * menu item does not have a shortcut defined, that item will - * still NOT show a shortcut) - */ - public void setShortcutsVisible(boolean shortcutsVisible) { - if (mShortcutsVisible == shortcutsVisible) return; - - setShortcutsVisibleInner(shortcutsVisible); - onItemsChanged(false); - } - - private void setShortcutsVisibleInner(boolean shortcutsVisible) { - mShortcutsVisible = shortcutsVisible - && mResources.getConfiguration().keyboard != Configuration.KEYBOARD_NOKEYS - && mResources.getBoolean( - R.bool.abs__config_showMenuShortcutsWhenKeyboardPresent); - } - - /** - * @return Whether shortcuts should be visible on menus. - */ - public boolean isShortcutsVisible() { - return mShortcutsVisible; - } - - Resources getResources() { - return mResources; - } - - public Context getContext() { - return mContext; - } - - boolean dispatchMenuItemSelected(MenuBuilder menu, MenuItem item) { - return mCallback != null && mCallback.onMenuItemSelected(menu, item); - } - - /** - * Dispatch a mode change event to this menu's callback. - */ - public void changeMenuMode() { - if (mCallback != null) { - mCallback.onMenuModeChange(this); - } - } - - private static int findInsertIndex(ArrayList items, int ordering) { - for (int i = items.size() - 1; i >= 0; i--) { - MenuItemImpl item = items.get(i); - if (item.getOrdering() <= ordering) { - return i + 1; - } - } - - return 0; - } - - public boolean performShortcut(int keyCode, KeyEvent event, int flags) { - final MenuItemImpl item = findItemWithShortcutForKey(keyCode, event); - - boolean handled = false; - - if (item != null) { - handled = performItemAction(item, flags); - } - - if ((flags & FLAG_ALWAYS_PERFORM_CLOSE) != 0) { - close(true); - } - - return handled; - } - - /* - * This function will return all the menu and sub-menu items that can - * be directly (the shortcut directly corresponds) and indirectly - * (the ALT-enabled char corresponds to the shortcut) associated - * with the keyCode. - */ - @SuppressWarnings("deprecation") - void findItemsWithShortcutForKey(List items, int keyCode, KeyEvent event) { - final boolean qwerty = isQwertyMode(); - final int metaState = event.getMetaState(); - final KeyCharacterMap.KeyData possibleChars = new KeyCharacterMap.KeyData(); - // Get the chars associated with the keyCode (i.e using any chording combo) - final boolean isKeyCodeMapped = event.getKeyData(possibleChars); - // The delete key is not mapped to '\b' so we treat it specially - if (!isKeyCodeMapped && (keyCode != KeyEvent.KEYCODE_DEL)) { - return; - } - - // Look for an item whose shortcut is this key. - final int N = mItems.size(); - for (int i = 0; i < N; i++) { - MenuItemImpl item = mItems.get(i); - if (item.hasSubMenu()) { - ((MenuBuilder)item.getSubMenu()).findItemsWithShortcutForKey(items, keyCode, event); - } - final char shortcutChar = qwerty ? item.getAlphabeticShortcut() : item.getNumericShortcut(); - if (((metaState & (KeyEvent.META_SHIFT_ON | KeyEvent.META_SYM_ON)) == 0) && - (shortcutChar != 0) && - (shortcutChar == possibleChars.meta[0] - || shortcutChar == possibleChars.meta[2] - || (qwerty && shortcutChar == '\b' && - keyCode == KeyEvent.KEYCODE_DEL)) && - item.isEnabled()) { - items.add(item); - } - } - } - - /* - * We want to return the menu item associated with the key, but if there is no - * ambiguity (i.e. there is only one menu item corresponding to the key) we want - * to return it even if it's not an exact match; this allow the user to - * _not_ use the ALT key for example, making the use of shortcuts slightly more - * user-friendly. An example is on the G1, '!' and '1' are on the same key, and - * in Gmail, Menu+1 will trigger Menu+! (the actual shortcut). - * - * On the other hand, if two (or more) shortcuts corresponds to the same key, - * we have to only return the exact match. - */ - @SuppressWarnings("deprecation") - MenuItemImpl findItemWithShortcutForKey(int keyCode, KeyEvent event) { - // Get all items that can be associated directly or indirectly with the keyCode - ArrayList items = mTempShortcutItemList; - items.clear(); - findItemsWithShortcutForKey(items, keyCode, event); - - if (items.isEmpty()) { - return null; - } - - final int metaState = event.getMetaState(); - final KeyCharacterMap.KeyData possibleChars = new KeyCharacterMap.KeyData(); - // Get the chars associated with the keyCode (i.e using any chording combo) - event.getKeyData(possibleChars); - - // If we have only one element, we can safely returns it - final int size = items.size(); - if (size == 1) { - return items.get(0); - } - - final boolean qwerty = isQwertyMode(); - // If we found more than one item associated with the key, - // we have to return the exact match - for (int i = 0; i < size; i++) { - final MenuItemImpl item = items.get(i); - final char shortcutChar = qwerty ? item.getAlphabeticShortcut() : - item.getNumericShortcut(); - if ((shortcutChar == possibleChars.meta[0] && - (metaState & KeyEvent.META_ALT_ON) == 0) - || (shortcutChar == possibleChars.meta[2] && - (metaState & KeyEvent.META_ALT_ON) != 0) - || (qwerty && shortcutChar == '\b' && - keyCode == KeyEvent.KEYCODE_DEL)) { - return item; - } - } - return null; - } - - public boolean performIdentifierAction(int id, int flags) { - // Look for an item whose identifier is the id. - return performItemAction(findItem(id), flags); - } - - public boolean performItemAction(MenuItem item, int flags) { - MenuItemImpl itemImpl = (MenuItemImpl) item; - - if (itemImpl == null || !itemImpl.isEnabled()) { - return false; - } - - boolean invoked = itemImpl.invoke(); - - if (itemImpl.hasCollapsibleActionView()) { - invoked |= itemImpl.expandActionView(); - if (invoked) close(true); - } else if (item.hasSubMenu()) { - close(false); - - final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu(); - final ActionProvider provider = item.getActionProvider(); - if (provider != null && provider.hasSubMenu()) { - provider.onPrepareSubMenu(subMenu); - } - invoked |= dispatchSubMenuSelected(subMenu); - if (!invoked) close(true); - } else { - if ((flags & FLAG_PERFORM_NO_CLOSE) == 0) { - close(true); - } - } - - return invoked; - } - - /** - * Closes the visible menu. - * - * @param allMenusAreClosing Whether the menus are completely closing (true), - * or whether there is another menu coming in this menu's place - * (false). For example, if the menu is closing because a - * sub menu is about to be shown, allMenusAreClosing - * is false. - */ - final void close(boolean allMenusAreClosing) { - if (mIsClosing) return; - - mIsClosing = true; - for (WeakReference ref : mPresenters) { - final MenuPresenter presenter = ref.get(); - if (presenter == null) { - mPresenters.remove(ref); - } else { - presenter.onCloseMenu(this, allMenusAreClosing); - } - } - mIsClosing = false; - } - - /** {@inheritDoc} */ - public void close() { - close(true); - } - - /** - * Called when an item is added or removed. - * - * @param structureChanged true if the menu structure changed, - * false if only item properties changed. - * (Visibility is a structural property since it affects layout.) - */ - void onItemsChanged(boolean structureChanged) { - if (!mPreventDispatchingItemsChanged) { - if (structureChanged) { - mIsVisibleItemsStale = true; - mIsActionItemsStale = true; - } - - dispatchPresenterUpdate(structureChanged); - } else { - mItemsChangedWhileDispatchPrevented = true; - } - } - - /** - * Stop dispatching item changed events to presenters until - * {@link #startDispatchingItemsChanged()} is called. Useful when - * many menu operations are going to be performed as a batch. - */ - public void stopDispatchingItemsChanged() { - if (!mPreventDispatchingItemsChanged) { - mPreventDispatchingItemsChanged = true; - mItemsChangedWhileDispatchPrevented = false; - } - } - - public void startDispatchingItemsChanged() { - mPreventDispatchingItemsChanged = false; - - if (mItemsChangedWhileDispatchPrevented) { - mItemsChangedWhileDispatchPrevented = false; - onItemsChanged(true); - } - } - - /** - * Called by {@link MenuItemImpl} when its visible flag is changed. - * @param item The item that has gone through a visibility change. - */ - void onItemVisibleChanged(MenuItemImpl item) { - // Notify of items being changed - mIsVisibleItemsStale = true; - onItemsChanged(true); - } - - /** - * Called by {@link MenuItemImpl} when its action request status is changed. - * @param item The item that has gone through a change in action request status. - */ - void onItemActionRequestChanged(MenuItemImpl item) { - // Notify of items being changed - mIsActionItemsStale = true; - onItemsChanged(true); - } - - ArrayList getVisibleItems() { - if (!mIsVisibleItemsStale) return mVisibleItems; - - // Refresh the visible items - mVisibleItems.clear(); - - final int itemsSize = mItems.size(); - MenuItemImpl item; - for (int i = 0; i < itemsSize; i++) { - item = mItems.get(i); - if (item.isVisible()) mVisibleItems.add(item); - } - - mIsVisibleItemsStale = false; - mIsActionItemsStale = true; - - return mVisibleItems; - } - - /** - * This method determines which menu items get to be 'action items' that will appear - * in an action bar and which items should be 'overflow items' in a secondary menu. - * The rules are as follows: - * - *

Items are considered for inclusion in the order specified within the menu. - * There is a limit of mMaxActionItems as a total count, optionally including the overflow - * menu button itself. This is a soft limit; if an item shares a group ID with an item - * previously included as an action item, the new item will stay with its group and become - * an action item itself even if it breaks the max item count limit. This is done to - * limit the conceptual complexity of the items presented within an action bar. Only a few - * unrelated concepts should be presented to the user in this space, and groups are treated - * as a single concept. - * - *

There is also a hard limit of consumed measurable space: mActionWidthLimit. This - * limit may be broken by a single item that exceeds the remaining space, but no further - * items may be added. If an item that is part of a group cannot fit within the remaining - * measured width, the entire group will be demoted to overflow. This is done to ensure room - * for navigation and other affordances in the action bar as well as reduce general UI clutter. - * - *

The space freed by demoting a full group cannot be consumed by future menu items. - * Once items begin to overflow, all future items become overflow items as well. This is - * to avoid inadvertent reordering that may break the app's intended design. - */ - public void flagActionItems() { - if (!mIsActionItemsStale) { - return; - } - - // Presenters flag action items as needed. - boolean flagged = false; - for (WeakReference ref : mPresenters) { - final MenuPresenter presenter = ref.get(); - if (presenter == null) { - mPresenters.remove(ref); - } else { - flagged |= presenter.flagActionItems(); - } - } - - if (flagged) { - mActionItems.clear(); - mNonActionItems.clear(); - ArrayList visibleItems = getVisibleItems(); - final int itemsSize = visibleItems.size(); - for (int i = 0; i < itemsSize; i++) { - MenuItemImpl item = visibleItems.get(i); - if (item.isActionButton()) { - mActionItems.add(item); - } else { - mNonActionItems.add(item); - } - } - } else { - // Nobody flagged anything, everything is a non-action item. - // (This happens during a first pass with no action-item presenters.) - mActionItems.clear(); - mNonActionItems.clear(); - mNonActionItems.addAll(getVisibleItems()); - } - mIsActionItemsStale = false; - } - - ArrayList getActionItems() { - flagActionItems(); - return mActionItems; - } - - ArrayList getNonActionItems() { - flagActionItems(); - return mNonActionItems; - } - - public void clearHeader() { - mHeaderIcon = null; - mHeaderTitle = null; - mHeaderView = null; - - onItemsChanged(false); - } - - private void setHeaderInternal(final int titleRes, final CharSequence title, final int iconRes, - final Drawable icon, final View view) { - final Resources r = getResources(); - - if (view != null) { - mHeaderView = view; - - // If using a custom view, then the title and icon aren't used - mHeaderTitle = null; - mHeaderIcon = null; - } else { - if (titleRes > 0) { - mHeaderTitle = r.getText(titleRes); - } else if (title != null) { - mHeaderTitle = title; - } - - if (iconRes > 0) { - mHeaderIcon = r.getDrawable(iconRes); - } else if (icon != null) { - mHeaderIcon = icon; - } - - // If using the title or icon, then a custom view isn't used - mHeaderView = null; - } - - // Notify of change - onItemsChanged(false); - } - - /** - * Sets the header's title. This replaces the header view. Called by the - * builder-style methods of subclasses. - * - * @param title The new title. - * @return This MenuBuilder so additional setters can be called. - */ - protected MenuBuilder setHeaderTitleInt(CharSequence title) { - setHeaderInternal(0, title, 0, null, null); - return this; - } - - /** - * Sets the header's title. This replaces the header view. Called by the - * builder-style methods of subclasses. - * - * @param titleRes The new title (as a resource ID). - * @return This MenuBuilder so additional setters can be called. - */ - protected MenuBuilder setHeaderTitleInt(int titleRes) { - setHeaderInternal(titleRes, null, 0, null, null); - return this; - } - - /** - * Sets the header's icon. This replaces the header view. Called by the - * builder-style methods of subclasses. - * - * @param icon The new icon. - * @return This MenuBuilder so additional setters can be called. - */ - protected MenuBuilder setHeaderIconInt(Drawable icon) { - setHeaderInternal(0, null, 0, icon, null); - return this; - } - - /** - * Sets the header's icon. This replaces the header view. Called by the - * builder-style methods of subclasses. - * - * @param iconRes The new icon (as a resource ID). - * @return This MenuBuilder so additional setters can be called. - */ - protected MenuBuilder setHeaderIconInt(int iconRes) { - setHeaderInternal(0, null, iconRes, null, null); - return this; - } - - /** - * Sets the header's view. This replaces the title and icon. Called by the - * builder-style methods of subclasses. - * - * @param view The new view. - * @return This MenuBuilder so additional setters can be called. - */ - protected MenuBuilder setHeaderViewInt(View view) { - setHeaderInternal(0, null, 0, null, view); - return this; - } - - public CharSequence getHeaderTitle() { - return mHeaderTitle; - } - - public Drawable getHeaderIcon() { - return mHeaderIcon; - } - - public View getHeaderView() { - return mHeaderView; - } - - /** - * Gets the root menu (if this is a submenu, find its root menu). - * @return The root menu. - */ - public MenuBuilder getRootMenu() { - return this; - } - - /** - * Sets the current menu info that is set on all items added to this menu - * (until this is called again with different menu info, in which case that - * one will be added to all subsequent item additions). - * - * @param menuInfo The extra menu information to add. - */ - public void setCurrentMenuInfo(ContextMenuInfo menuInfo) { - mCurrentMenuInfo = menuInfo; - } - - void setOptionalIconsVisible(boolean visible) { - mOptionalIconsVisible = visible; - } - - boolean getOptionalIconsVisible() { - return mOptionalIconsVisible; - } - - public boolean expandItemActionView(MenuItemImpl item) { - if (mPresenters.isEmpty()) return false; - - boolean expanded = false; - - stopDispatchingItemsChanged(); - for (WeakReference ref : mPresenters) { - final MenuPresenter presenter = ref.get(); - if (presenter == null) { - mPresenters.remove(ref); - } else if ((expanded = presenter.expandItemActionView(this, item))) { - break; - } - } - startDispatchingItemsChanged(); - - if (expanded) { - mExpandedItem = item; - } - return expanded; - } - - public boolean collapseItemActionView(MenuItemImpl item) { - if (mPresenters.isEmpty() || mExpandedItem != item) return false; - - boolean collapsed = false; - - stopDispatchingItemsChanged(); - for (WeakReference ref : mPresenters) { - final MenuPresenter presenter = ref.get(); - if (presenter == null) { - mPresenters.remove(ref); - } else if ((collapsed = presenter.collapseItemActionView(this, item))) { - break; - } - } - startDispatchingItemsChanged(); - - if (collapsed) { - mExpandedItem = null; - } - return collapsed; - } - - public MenuItemImpl getExpandedItem() { - return mExpandedItem; - } - - public boolean bindNativeOverflow(android.view.Menu menu, android.view.MenuItem.OnMenuItemClickListener listener, HashMap map) { - final List nonActionItems = getNonActionItems(); - if (nonActionItems == null || nonActionItems.size() == 0) { - return false; - } - - boolean visible = false; - menu.clear(); - for (MenuItemImpl nonActionItem : nonActionItems) { - if (!nonActionItem.isVisible()) { - continue; - } - visible = true; - - android.view.MenuItem nativeItem; - if (nonActionItem.hasSubMenu()) { - android.view.SubMenu nativeSub = menu.addSubMenu(nonActionItem.getGroupId(), nonActionItem.getItemId(), - nonActionItem.getOrder(), nonActionItem.getTitle()); - - SubMenuBuilder subMenu = (SubMenuBuilder)nonActionItem.getSubMenu(); - for (MenuItemImpl subItem : subMenu.getVisibleItems()) { - android.view.MenuItem nativeSubItem = nativeSub.add(subItem.getGroupId(), subItem.getItemId(), - subItem.getOrder(), subItem.getTitle()); - - nativeSubItem.setIcon(subItem.getIcon()); - nativeSubItem.setOnMenuItemClickListener(listener); - nativeSubItem.setEnabled(subItem.isEnabled()); - nativeSubItem.setIntent(subItem.getIntent()); - nativeSubItem.setNumericShortcut(subItem.getNumericShortcut()); - nativeSubItem.setAlphabeticShortcut(subItem.getAlphabeticShortcut()); - nativeSubItem.setTitleCondensed(subItem.getTitleCondensed()); - nativeSubItem.setCheckable(subItem.isCheckable()); - nativeSubItem.setChecked(subItem.isChecked()); - - if (subItem.isExclusiveCheckable()) { - nativeSub.setGroupCheckable(subItem.getGroupId(), true, true); - } - - map.put(nativeSubItem, subItem); - } - - nativeItem = nativeSub.getItem(); - } else { - nativeItem = menu.add(nonActionItem.getGroupId(), nonActionItem.getItemId(), - nonActionItem.getOrder(), nonActionItem.getTitle()); - } - nativeItem.setIcon(nonActionItem.getIcon()); - nativeItem.setOnMenuItemClickListener(listener); - nativeItem.setEnabled(nonActionItem.isEnabled()); - nativeItem.setIntent(nonActionItem.getIntent()); - nativeItem.setNumericShortcut(nonActionItem.getNumericShortcut()); - nativeItem.setAlphabeticShortcut(nonActionItem.getAlphabeticShortcut()); - nativeItem.setTitleCondensed(nonActionItem.getTitleCondensed()); - nativeItem.setCheckable(nonActionItem.isCheckable()); - nativeItem.setChecked(nonActionItem.isChecked()); - - if (nonActionItem.isExclusiveCheckable()) { - menu.setGroupCheckable(nonActionItem.getGroupId(), true, true); - } - - map.put(nativeItem, nonActionItem); - } - return visible; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuItemImpl.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuItemImpl.java deleted file mode 100755 index f5359fb40..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuItemImpl.java +++ /dev/null @@ -1,647 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.internal.view.menu; - -import android.content.ActivityNotFoundException; -import android.content.Context; -import android.content.Intent; -import android.graphics.drawable.Drawable; -import android.util.Log; -import android.view.ContextMenu.ContextMenuInfo; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewDebug; -import android.widget.LinearLayout; - -import com.actionbarsherlock.view.ActionProvider; -import com.actionbarsherlock.view.MenuItem; -import com.actionbarsherlock.view.SubMenu; - -/** - * @hide - */ -public final class MenuItemImpl implements MenuItem { - private static final String TAG = "MenuItemImpl"; - - private static final int SHOW_AS_ACTION_MASK = SHOW_AS_ACTION_NEVER | - SHOW_AS_ACTION_IF_ROOM | - SHOW_AS_ACTION_ALWAYS; - - private final int mId; - private final int mGroup; - private final int mCategoryOrder; - private final int mOrdering; - private CharSequence mTitle; - private CharSequence mTitleCondensed; - private Intent mIntent; - private char mShortcutNumericChar; - private char mShortcutAlphabeticChar; - - /** The icon's drawable which is only created as needed */ - private Drawable mIconDrawable; - /** - * The icon's resource ID which is used to get the Drawable when it is - * needed (if the Drawable isn't already obtained--only one of the two is - * needed). - */ - private int mIconResId = NO_ICON; - - /** The menu to which this item belongs */ - private MenuBuilder mMenu; - /** If this item should launch a sub menu, this is the sub menu to launch */ - private SubMenuBuilder mSubMenu; - - private Runnable mItemCallback; - private MenuItem.OnMenuItemClickListener mClickListener; - - private int mFlags = ENABLED; - private static final int CHECKABLE = 0x00000001; - private static final int CHECKED = 0x00000002; - private static final int EXCLUSIVE = 0x00000004; - private static final int HIDDEN = 0x00000008; - private static final int ENABLED = 0x00000010; - private static final int IS_ACTION = 0x00000020; - - private int mShowAsAction = SHOW_AS_ACTION_NEVER; - - private View mActionView; - private ActionProvider mActionProvider; - private OnActionExpandListener mOnActionExpandListener; - private boolean mIsActionViewExpanded = false; - - /** Used for the icon resource ID if this item does not have an icon */ - static final int NO_ICON = 0; - - /** - * Current use case is for context menu: Extra information linked to the - * View that added this item to the context menu. - */ - private ContextMenuInfo mMenuInfo; - - private static String sPrependShortcutLabel; - private static String sEnterShortcutLabel; - private static String sDeleteShortcutLabel; - private static String sSpaceShortcutLabel; - - - /** - * Instantiates this menu item. - * - * @param menu - * @param group Item ordering grouping control. The item will be added after - * all other items whose order is <= this number, and before any - * that are larger than it. This can also be used to define - * groups of items for batch state changes. Normally use 0. - * @param id Unique item ID. Use 0 if you do not need a unique ID. - * @param categoryOrder The ordering for this item. - * @param title The text to display for the item. - */ - MenuItemImpl(MenuBuilder menu, int group, int id, int categoryOrder, int ordering, - CharSequence title, int showAsAction) { - - /* TODO if (sPrependShortcutLabel == null) { - // This is instantiated from the UI thread, so no chance of sync issues - sPrependShortcutLabel = menu.getContext().getResources().getString( - com.android.internal.R.string.prepend_shortcut_label); - sEnterShortcutLabel = menu.getContext().getResources().getString( - com.android.internal.R.string.menu_enter_shortcut_label); - sDeleteShortcutLabel = menu.getContext().getResources().getString( - com.android.internal.R.string.menu_delete_shortcut_label); - sSpaceShortcutLabel = menu.getContext().getResources().getString( - com.android.internal.R.string.menu_space_shortcut_label); - }*/ - - mMenu = menu; - mId = id; - mGroup = group; - mCategoryOrder = categoryOrder; - mOrdering = ordering; - mTitle = title; - mShowAsAction = showAsAction; - } - - /** - * Invokes the item by calling various listeners or callbacks. - * - * @return true if the invocation was handled, false otherwise - */ - public boolean invoke() { - if (mClickListener != null && - mClickListener.onMenuItemClick(this)) { - return true; - } - - if (mMenu.dispatchMenuItemSelected(mMenu.getRootMenu(), this)) { - return true; - } - - if (mItemCallback != null) { - mItemCallback.run(); - return true; - } - - if (mIntent != null) { - try { - mMenu.getContext().startActivity(mIntent); - return true; - } catch (ActivityNotFoundException e) { - Log.e(TAG, "Can't find activity to handle intent; ignoring", e); - } - } - - if (mActionProvider != null && mActionProvider.onPerformDefaultAction()) { - return true; - } - - return false; - } - - public boolean isEnabled() { - return (mFlags & ENABLED) != 0; - } - - public MenuItem setEnabled(boolean enabled) { - if (enabled) { - mFlags |= ENABLED; - } else { - mFlags &= ~ENABLED; - } - - mMenu.onItemsChanged(false); - - return this; - } - - public int getGroupId() { - return mGroup; - } - - @ViewDebug.CapturedViewProperty - public int getItemId() { - return mId; - } - - public int getOrder() { - return mCategoryOrder; - } - - public int getOrdering() { - return mOrdering; - } - - public Intent getIntent() { - return mIntent; - } - - public MenuItem setIntent(Intent intent) { - mIntent = intent; - return this; - } - - Runnable getCallback() { - return mItemCallback; - } - - public MenuItem setCallback(Runnable callback) { - mItemCallback = callback; - return this; - } - - public char getAlphabeticShortcut() { - return mShortcutAlphabeticChar; - } - - public MenuItem setAlphabeticShortcut(char alphaChar) { - if (mShortcutAlphabeticChar == alphaChar) return this; - - mShortcutAlphabeticChar = Character.toLowerCase(alphaChar); - - mMenu.onItemsChanged(false); - - return this; - } - - public char getNumericShortcut() { - return mShortcutNumericChar; - } - - public MenuItem setNumericShortcut(char numericChar) { - if (mShortcutNumericChar == numericChar) return this; - - mShortcutNumericChar = numericChar; - - mMenu.onItemsChanged(false); - - return this; - } - - public MenuItem setShortcut(char numericChar, char alphaChar) { - mShortcutNumericChar = numericChar; - mShortcutAlphabeticChar = Character.toLowerCase(alphaChar); - - mMenu.onItemsChanged(false); - - return this; - } - - /** - * @return The active shortcut (based on QWERTY-mode of the menu). - */ - char getShortcut() { - return (mMenu.isQwertyMode() ? mShortcutAlphabeticChar : mShortcutNumericChar); - } - - /** - * @return The label to show for the shortcut. This includes the chording - * key (for example 'Menu+a'). Also, any non-human readable - * characters should be human readable (for example 'Menu+enter'). - */ - String getShortcutLabel() { - - char shortcut = getShortcut(); - if (shortcut == 0) { - return ""; - } - - StringBuilder sb = new StringBuilder(sPrependShortcutLabel); - switch (shortcut) { - - case '\n': - sb.append(sEnterShortcutLabel); - break; - - case '\b': - sb.append(sDeleteShortcutLabel); - break; - - case ' ': - sb.append(sSpaceShortcutLabel); - break; - - default: - sb.append(shortcut); - break; - } - - return sb.toString(); - } - - /** - * @return Whether this menu item should be showing shortcuts (depends on - * whether the menu should show shortcuts and whether this item has - * a shortcut defined) - */ - boolean shouldShowShortcut() { - // Show shortcuts if the menu is supposed to show shortcuts AND this item has a shortcut - return mMenu.isShortcutsVisible() && (getShortcut() != 0); - } - - public SubMenu getSubMenu() { - return mSubMenu; - } - - public boolean hasSubMenu() { - return mSubMenu != null; - } - - void setSubMenu(SubMenuBuilder subMenu) { - mSubMenu = subMenu; - - subMenu.setHeaderTitle(getTitle()); - } - - @ViewDebug.CapturedViewProperty - public CharSequence getTitle() { - return mTitle; - } - - /** - * Gets the title for a particular {@link ItemView} - * - * @param itemView The ItemView that is receiving the title - * @return Either the title or condensed title based on what the ItemView - * prefers - */ - CharSequence getTitleForItemView(MenuView.ItemView itemView) { - return ((itemView != null) && itemView.prefersCondensedTitle()) - ? getTitleCondensed() - : getTitle(); - } - - public MenuItem setTitle(CharSequence title) { - mTitle = title; - - mMenu.onItemsChanged(false); - - if (mSubMenu != null) { - mSubMenu.setHeaderTitle(title); - } - - return this; - } - - public MenuItem setTitle(int title) { - return setTitle(mMenu.getContext().getString(title)); - } - - public CharSequence getTitleCondensed() { - return mTitleCondensed != null ? mTitleCondensed : mTitle; - } - - public MenuItem setTitleCondensed(CharSequence title) { - mTitleCondensed = title; - - // Could use getTitle() in the loop below, but just cache what it would do here - if (title == null) { - title = mTitle; - } - - mMenu.onItemsChanged(false); - - return this; - } - - public Drawable getIcon() { - if (mIconDrawable != null) { - return mIconDrawable; - } - - if (mIconResId != NO_ICON) { - return mMenu.getResources().getDrawable(mIconResId); - } - - return null; - } - - public MenuItem setIcon(Drawable icon) { - mIconResId = NO_ICON; - mIconDrawable = icon; - mMenu.onItemsChanged(false); - - return this; - } - - public MenuItem setIcon(int iconResId) { - mIconDrawable = null; - mIconResId = iconResId; - - // If we have a view, we need to push the Drawable to them - mMenu.onItemsChanged(false); - - return this; - } - - public boolean isCheckable() { - return (mFlags & CHECKABLE) == CHECKABLE; - } - - public MenuItem setCheckable(boolean checkable) { - final int oldFlags = mFlags; - mFlags = (mFlags & ~CHECKABLE) | (checkable ? CHECKABLE : 0); - if (oldFlags != mFlags) { - mMenu.onItemsChanged(false); - } - - return this; - } - - public void setExclusiveCheckable(boolean exclusive) { - mFlags = (mFlags & ~EXCLUSIVE) | (exclusive ? EXCLUSIVE : 0); - } - - public boolean isExclusiveCheckable() { - return (mFlags & EXCLUSIVE) != 0; - } - - public boolean isChecked() { - return (mFlags & CHECKED) == CHECKED; - } - - public MenuItem setChecked(boolean checked) { - if ((mFlags & EXCLUSIVE) != 0) { - // Call the method on the Menu since it knows about the others in this - // exclusive checkable group - mMenu.setExclusiveItemChecked(this); - } else { - setCheckedInt(checked); - } - - return this; - } - - void setCheckedInt(boolean checked) { - final int oldFlags = mFlags; - mFlags = (mFlags & ~CHECKED) | (checked ? CHECKED : 0); - if (oldFlags != mFlags) { - mMenu.onItemsChanged(false); - } - } - - public boolean isVisible() { - return (mFlags & HIDDEN) == 0; - } - - /** - * Changes the visibility of the item. This method DOES NOT notify the - * parent menu of a change in this item, so this should only be called from - * methods that will eventually trigger this change. If unsure, use {@link #setVisible(boolean)} - * instead. - * - * @param shown Whether to show (true) or hide (false). - * @return Whether the item's shown state was changed - */ - boolean setVisibleInt(boolean shown) { - final int oldFlags = mFlags; - mFlags = (mFlags & ~HIDDEN) | (shown ? 0 : HIDDEN); - return oldFlags != mFlags; - } - - public MenuItem setVisible(boolean shown) { - // Try to set the shown state to the given state. If the shown state was changed - // (i.e. the previous state isn't the same as given state), notify the parent menu that - // the shown state has changed for this item - if (setVisibleInt(shown)) mMenu.onItemVisibleChanged(this); - - return this; - } - - public MenuItem setOnMenuItemClickListener(MenuItem.OnMenuItemClickListener clickListener) { - mClickListener = clickListener; - return this; - } - - @Override - public String toString() { - return mTitle.toString(); - } - - void setMenuInfo(ContextMenuInfo menuInfo) { - mMenuInfo = menuInfo; - } - - public ContextMenuInfo getMenuInfo() { - return mMenuInfo; - } - - public void actionFormatChanged() { - mMenu.onItemActionRequestChanged(this); - } - - /** - * @return Whether the menu should show icons for menu items. - */ - public boolean shouldShowIcon() { - return mMenu.getOptionalIconsVisible(); - } - - public boolean isActionButton() { - return (mFlags & IS_ACTION) == IS_ACTION; - } - - public boolean requestsActionButton() { - return (mShowAsAction & SHOW_AS_ACTION_IF_ROOM) == SHOW_AS_ACTION_IF_ROOM; - } - - public boolean requiresActionButton() { - return (mShowAsAction & SHOW_AS_ACTION_ALWAYS) == SHOW_AS_ACTION_ALWAYS; - } - - public void setIsActionButton(boolean isActionButton) { - if (isActionButton) { - mFlags |= IS_ACTION; - } else { - mFlags &= ~IS_ACTION; - } - } - - public boolean showsTextAsAction() { - return (mShowAsAction & SHOW_AS_ACTION_WITH_TEXT) == SHOW_AS_ACTION_WITH_TEXT; - } - - public void setShowAsAction(int actionEnum) { - switch (actionEnum & SHOW_AS_ACTION_MASK) { - case SHOW_AS_ACTION_ALWAYS: - case SHOW_AS_ACTION_IF_ROOM: - case SHOW_AS_ACTION_NEVER: - // Looks good! - break; - - default: - // Mutually exclusive options selected! - throw new IllegalArgumentException("SHOW_AS_ACTION_ALWAYS, SHOW_AS_ACTION_IF_ROOM," - + " and SHOW_AS_ACTION_NEVER are mutually exclusive."); - } - mShowAsAction = actionEnum; - mMenu.onItemActionRequestChanged(this); - } - - public MenuItem setActionView(View view) { - mActionView = view; - mActionProvider = null; - if (view != null && view.getId() == View.NO_ID && mId > 0) { - view.setId(mId); - } - mMenu.onItemActionRequestChanged(this); - return this; - } - - public MenuItem setActionView(int resId) { - final Context context = mMenu.getContext(); - final LayoutInflater inflater = LayoutInflater.from(context); - setActionView(inflater.inflate(resId, new LinearLayout(context), false)); - return this; - } - - public View getActionView() { - if (mActionView != null) { - return mActionView; - } else if (mActionProvider != null) { - mActionView = mActionProvider.onCreateActionView(); - return mActionView; - } else { - return null; - } - } - - public ActionProvider getActionProvider() { - return mActionProvider; - } - - public MenuItem setActionProvider(ActionProvider actionProvider) { - mActionView = null; - mActionProvider = actionProvider; - mMenu.onItemsChanged(true); // Measurement can be changed - return this; - } - - @Override - public MenuItem setShowAsActionFlags(int actionEnum) { - setShowAsAction(actionEnum); - return this; - } - - @Override - public boolean expandActionView() { - if ((mShowAsAction & SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW) == 0 || mActionView == null) { - return false; - } - - if (mOnActionExpandListener == null || - mOnActionExpandListener.onMenuItemActionExpand(this)) { - return mMenu.expandItemActionView(this); - } - - return false; - } - - @Override - public boolean collapseActionView() { - if ((mShowAsAction & SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW) == 0) { - return false; - } - if (mActionView == null) { - // We're already collapsed if we have no action view. - return true; - } - - if (mOnActionExpandListener == null || - mOnActionExpandListener.onMenuItemActionCollapse(this)) { - return mMenu.collapseItemActionView(this); - } - - return false; - } - - @Override - public MenuItem setOnActionExpandListener(OnActionExpandListener listener) { - mOnActionExpandListener = listener; - return this; - } - - public boolean hasCollapsibleActionView() { - return (mShowAsAction & SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW) != 0 && mActionView != null; - } - - public void setActionViewExpanded(boolean isExpanded) { - mIsActionViewExpanded = isExpanded; - mMenu.onItemsChanged(false); - } - - public boolean isActionViewExpanded() { - return mIsActionViewExpanded; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuItemWrapper.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuItemWrapper.java deleted file mode 100755 index 907a7aa04..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuItemWrapper.java +++ /dev/null @@ -1,292 +0,0 @@ -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 com.actionbarsherlock.internal.view.ActionProviderWrapper; -import com.actionbarsherlock.view.ActionProvider; -import com.actionbarsherlock.view.MenuItem; -import com.actionbarsherlock.view.SubMenu; - -public class MenuItemWrapper implements MenuItem, android.view.MenuItem.OnMenuItemClickListener { - private final android.view.MenuItem mNativeItem; - private SubMenu mSubMenu = null; - private OnMenuItemClickListener mMenuItemClickListener = null; - private OnActionExpandListener mActionExpandListener = null; - private android.view.MenuItem.OnActionExpandListener mNativeActionExpandListener = null; - - - public MenuItemWrapper(android.view.MenuItem nativeItem) { - if (nativeItem == null) { - throw new IllegalStateException("Wrapped menu item cannot be null."); - } - mNativeItem = nativeItem; - } - - - @Override - public int getItemId() { - return mNativeItem.getItemId(); - } - - @Override - public int getGroupId() { - return mNativeItem.getGroupId(); - } - - @Override - public int getOrder() { - return mNativeItem.getOrder(); - } - - @Override - public MenuItem setTitle(CharSequence title) { - mNativeItem.setTitle(title); - return this; - } - - @Override - public MenuItem setTitle(int title) { - mNativeItem.setTitle(title); - return this; - } - - @Override - public CharSequence getTitle() { - return mNativeItem.getTitle(); - } - - @Override - public MenuItem setTitleCondensed(CharSequence title) { - mNativeItem.setTitleCondensed(title); - return this; - } - - @Override - public CharSequence getTitleCondensed() { - return mNativeItem.getTitleCondensed(); - } - - @Override - public MenuItem setIcon(Drawable icon) { - mNativeItem.setIcon(icon); - return this; - } - - @Override - public MenuItem setIcon(int iconRes) { - mNativeItem.setIcon(iconRes); - return this; - } - - @Override - public Drawable getIcon() { - return mNativeItem.getIcon(); - } - - @Override - public MenuItem setIntent(Intent intent) { - mNativeItem.setIntent(intent); - return this; - } - - @Override - public Intent getIntent() { - return mNativeItem.getIntent(); - } - - @Override - public MenuItem setShortcut(char numericChar, char alphaChar) { - mNativeItem.setShortcut(numericChar, alphaChar); - return this; - } - - @Override - public MenuItem setNumericShortcut(char numericChar) { - mNativeItem.setNumericShortcut(numericChar); - return this; - } - - @Override - public char getNumericShortcut() { - return mNativeItem.getNumericShortcut(); - } - - @Override - public MenuItem setAlphabeticShortcut(char alphaChar) { - mNativeItem.setAlphabeticShortcut(alphaChar); - return this; - } - - @Override - public char getAlphabeticShortcut() { - return mNativeItem.getAlphabeticShortcut(); - } - - @Override - public MenuItem setCheckable(boolean checkable) { - mNativeItem.setCheckable(checkable); - return this; - } - - @Override - public boolean isCheckable() { - return mNativeItem.isCheckable(); - } - - @Override - public MenuItem setChecked(boolean checked) { - mNativeItem.setChecked(checked); - return this; - } - - @Override - public boolean isChecked() { - return mNativeItem.isChecked(); - } - - @Override - public MenuItem setVisible(boolean visible) { - mNativeItem.setVisible(visible); - return this; - } - - @Override - public boolean isVisible() { - return mNativeItem.isVisible(); - } - - @Override - public MenuItem setEnabled(boolean enabled) { - mNativeItem.setEnabled(enabled); - return this; - } - - @Override - public boolean isEnabled() { - return mNativeItem.isEnabled(); - } - - @Override - public boolean hasSubMenu() { - return mNativeItem.hasSubMenu(); - } - - @Override - public SubMenu getSubMenu() { - if (hasSubMenu() && (mSubMenu == null)) { - mSubMenu = new SubMenuWrapper(mNativeItem.getSubMenu()); - } - return mSubMenu; - } - - @Override - public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener menuItemClickListener) { - mMenuItemClickListener = menuItemClickListener; - //Register ourselves as the listener to proxy - mNativeItem.setOnMenuItemClickListener(this); - return this; - } - - @Override - public boolean onMenuItemClick(android.view.MenuItem item) { - if (mMenuItemClickListener != null) { - return mMenuItemClickListener.onMenuItemClick(this); - } - return false; - } - - @Override - public ContextMenuInfo getMenuInfo() { - return mNativeItem.getMenuInfo(); - } - - @Override - public void setShowAsAction(int actionEnum) { - mNativeItem.setShowAsAction(actionEnum); - } - - @Override - public MenuItem setShowAsActionFlags(int actionEnum) { - mNativeItem.setShowAsActionFlags(actionEnum); - return this; - } - - @Override - public MenuItem setActionView(View view) { - mNativeItem.setActionView(view); - return this; - } - - @Override - public MenuItem setActionView(int resId) { - mNativeItem.setActionView(resId); - return this; - } - - @Override - public View getActionView() { - return mNativeItem.getActionView(); - } - - @Override - public MenuItem setActionProvider(ActionProvider actionProvider) { - mNativeItem.setActionProvider(new ActionProviderWrapper(actionProvider)); - return this; - } - - @Override - public ActionProvider getActionProvider() { - android.view.ActionProvider nativeProvider = mNativeItem.getActionProvider(); - if (nativeProvider != null && nativeProvider instanceof ActionProviderWrapper) { - return ((ActionProviderWrapper)nativeProvider).unwrap(); - } - return null; - } - - @Override - public boolean expandActionView() { - return mNativeItem.expandActionView(); - } - - @Override - public boolean collapseActionView() { - return mNativeItem.collapseActionView(); - } - - @Override - public boolean isActionViewExpanded() { - return mNativeItem.isActionViewExpanded(); - } - - @Override - public MenuItem setOnActionExpandListener(OnActionExpandListener listener) { - mActionExpandListener = listener; - - if (mNativeActionExpandListener == null) { - mNativeActionExpandListener = new android.view.MenuItem.OnActionExpandListener() { - @Override - public boolean onMenuItemActionExpand(android.view.MenuItem menuItem) { - if (mActionExpandListener != null) { - return mActionExpandListener.onMenuItemActionExpand(MenuItemWrapper.this); - } - return false; - } - - @Override - public boolean onMenuItemActionCollapse(android.view.MenuItem menuItem) { - if (mActionExpandListener != null) { - return mActionExpandListener.onMenuItemActionCollapse(MenuItemWrapper.this); - } - return false; - } - }; - - //Register our inner-class as the listener to proxy method calls - mNativeItem.setOnActionExpandListener(mNativeActionExpandListener); - } - - return this; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuPopupHelper.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuPopupHelper.java deleted file mode 100755 index f030de310..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuPopupHelper.java +++ /dev/null @@ -1,376 +0,0 @@ -/* - * 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.internal.view.menu; - -import java.util.ArrayList; -import android.content.Context; -import android.content.res.Resources; -import android.database.DataSetObserver; -import android.os.Parcelable; -import android.view.KeyEvent; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.MeasureSpec; -import android.view.ViewGroup; -import android.view.ViewTreeObserver; -import android.widget.AdapterView; -import android.widget.BaseAdapter; -import android.widget.FrameLayout; -import android.widget.ListAdapter; -import android.widget.PopupWindow; -import com.actionbarsherlock.R; -import com.actionbarsherlock.internal.view.View_HasStateListenerSupport; -import com.actionbarsherlock.internal.view.View_OnAttachStateChangeListener; -import com.actionbarsherlock.internal.widget.IcsListPopupWindow; -import com.actionbarsherlock.view.MenuItem; - -/** - * Presents a menu as a small, simple popup anchored to another view. - * @hide - */ -public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.OnKeyListener, - ViewTreeObserver.OnGlobalLayoutListener, PopupWindow.OnDismissListener, - View_OnAttachStateChangeListener, MenuPresenter { - //UNUSED private static final String TAG = "MenuPopupHelper"; - - static final int ITEM_LAYOUT = R.layout.abs__popup_menu_item_layout; - - private Context mContext; - private LayoutInflater mInflater; - private IcsListPopupWindow mPopup; - private MenuBuilder mMenu; - private int mPopupMaxWidth; - private View mAnchorView; - private boolean mOverflowOnly; - private ViewTreeObserver mTreeObserver; - - private MenuAdapter mAdapter; - - private Callback mPresenterCallback; - - boolean mForceShowIcon; - - private ViewGroup mMeasureParent; - - public MenuPopupHelper(Context context, MenuBuilder menu) { - this(context, menu, null, false); - } - - public MenuPopupHelper(Context context, MenuBuilder menu, View anchorView) { - this(context, menu, anchorView, false); - } - - public MenuPopupHelper(Context context, MenuBuilder menu, - View anchorView, boolean overflowOnly) { - mContext = context; - mInflater = LayoutInflater.from(context); - mMenu = menu; - mOverflowOnly = overflowOnly; - - final Resources res = context.getResources(); - mPopupMaxWidth = Math.max(res.getDisplayMetrics().widthPixels / 2, - res.getDimensionPixelSize(R.dimen.abs__config_prefDialogWidth)); - - mAnchorView = anchorView; - - menu.addMenuPresenter(this); - } - - public void setAnchorView(View anchor) { - mAnchorView = anchor; - } - - public void setForceShowIcon(boolean forceShow) { - mForceShowIcon = forceShow; - } - - public void show() { - if (!tryShow()) { - throw new IllegalStateException("MenuPopupHelper cannot be used without an anchor"); - } - } - - public boolean tryShow() { - mPopup = new IcsListPopupWindow(mContext, null, R.attr.popupMenuStyle); - mPopup.setOnDismissListener(this); - mPopup.setOnItemClickListener(this); - - mAdapter = new MenuAdapter(mMenu); - mPopup.setAdapter(mAdapter); - mPopup.setModal(true); - - View anchor = mAnchorView; - if (anchor != null) { - final boolean addGlobalListener = mTreeObserver == null; - mTreeObserver = anchor.getViewTreeObserver(); // Refresh to latest - if (addGlobalListener) mTreeObserver.addOnGlobalLayoutListener(this); - ((View_HasStateListenerSupport)anchor).addOnAttachStateChangeListener(this); - mPopup.setAnchorView(anchor); - } else { - return false; - } - - mPopup.setContentWidth(Math.min(measureContentWidth(mAdapter), mPopupMaxWidth)); - mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED); - mPopup.show(); - mPopup.getListView().setOnKeyListener(this); - return true; - } - - public void dismiss() { - if (isShowing()) { - mPopup.dismiss(); - } - } - - public void onDismiss() { - mPopup = null; - mMenu.close(); - if (mTreeObserver != null) { - if (!mTreeObserver.isAlive()) mTreeObserver = mAnchorView.getViewTreeObserver(); - mTreeObserver.removeGlobalOnLayoutListener(this); - mTreeObserver = null; - } - ((View_HasStateListenerSupport)mAnchorView).removeOnAttachStateChangeListener(this); - } - - public boolean isShowing() { - return mPopup != null && mPopup.isShowing(); - } - - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - MenuAdapter adapter = mAdapter; - adapter.mAdapterMenu.performItemAction(adapter.getItem(position), 0); - } - - public boolean onKey(View v, int keyCode, KeyEvent event) { - if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_MENU) { - dismiss(); - return true; - } - return false; - } - - private int measureContentWidth(ListAdapter adapter) { - // Menus don't tend to be long, so this is more sane than it looks. - int width = 0; - View itemView = null; - int itemType = 0; - final int widthMeasureSpec = - MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - final int heightMeasureSpec = - MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - final int count = adapter.getCount(); - for (int i = 0; i < count; i++) { - final int positionType = adapter.getItemViewType(i); - if (positionType != itemType) { - itemType = positionType; - itemView = null; - } - if (mMeasureParent == null) { - mMeasureParent = new FrameLayout(mContext); - } - itemView = adapter.getView(i, itemView, mMeasureParent); - itemView.measure(widthMeasureSpec, heightMeasureSpec); - width = Math.max(width, itemView.getMeasuredWidth()); - } - return width; - } - - @Override - public void onGlobalLayout() { - if (isShowing()) { - final View anchor = mAnchorView; - if (anchor == null || !anchor.isShown()) { - dismiss(); - } else if (isShowing()) { - // Recompute window size and position - mPopup.show(); - } - } - } - - @Override - public void onViewAttachedToWindow(View v) { - } - - @Override - public void onViewDetachedFromWindow(View v) { - if (mTreeObserver != null) { - if (!mTreeObserver.isAlive()) mTreeObserver = v.getViewTreeObserver(); - mTreeObserver.removeGlobalOnLayoutListener(this); - } - ((View_HasStateListenerSupport)v).removeOnAttachStateChangeListener(this); - } - - @Override - public void initForMenu(Context context, MenuBuilder menu) { - // Don't need to do anything; we added as a presenter in the constructor. - } - - @Override - public MenuView getMenuView(ViewGroup root) { - throw new UnsupportedOperationException("MenuPopupHelpers manage their own views"); - } - - @Override - public void updateMenuView(boolean cleared) { - if (mAdapter != null) mAdapter.notifyDataSetChanged(); - } - - @Override - public void setCallback(Callback cb) { - mPresenterCallback = cb; - } - - @Override - public boolean onSubMenuSelected(SubMenuBuilder subMenu) { - if (subMenu.hasVisibleItems()) { - MenuPopupHelper subPopup = new MenuPopupHelper(mContext, subMenu, mAnchorView, false); - subPopup.setCallback(mPresenterCallback); - - boolean preserveIconSpacing = false; - final int count = subMenu.size(); - for (int i = 0; i < count; i++) { - MenuItem childItem = subMenu.getItem(i); - if (childItem.isVisible() && childItem.getIcon() != null) { - preserveIconSpacing = true; - break; - } - } - subPopup.setForceShowIcon(preserveIconSpacing); - - if (subPopup.tryShow()) { - if (mPresenterCallback != null) { - mPresenterCallback.onOpenSubMenu(subMenu); - } - return true; - } - } - return false; - } - - @Override - public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { - // Only care about the (sub)menu we're presenting. - if (menu != mMenu) return; - - dismiss(); - if (mPresenterCallback != null) { - mPresenterCallback.onCloseMenu(menu, allMenusAreClosing); - } - } - - @Override - public boolean flagActionItems() { - return false; - } - - public boolean expandItemActionView(MenuBuilder menu, MenuItemImpl item) { - return false; - } - - public boolean collapseItemActionView(MenuBuilder menu, MenuItemImpl item) { - return false; - } - - @Override - public int getId() { - return 0; - } - - @Override - public Parcelable onSaveInstanceState() { - return null; - } - - @Override - public void onRestoreInstanceState(Parcelable state) { - } - - private class MenuAdapter extends BaseAdapter { - private MenuBuilder mAdapterMenu; - private int mExpandedIndex = -1; - - public MenuAdapter(MenuBuilder menu) { - mAdapterMenu = menu; - registerDataSetObserver(new ExpandedIndexObserver()); - findExpandedIndex(); - } - - public int getCount() { - ArrayList items = mOverflowOnly ? - mAdapterMenu.getNonActionItems() : mAdapterMenu.getVisibleItems(); - if (mExpandedIndex < 0) { - return items.size(); - } - return items.size() - 1; - } - - public MenuItemImpl getItem(int position) { - ArrayList items = mOverflowOnly ? - mAdapterMenu.getNonActionItems() : mAdapterMenu.getVisibleItems(); - if (mExpandedIndex >= 0 && position >= mExpandedIndex) { - position++; - } - return items.get(position); - } - - public long getItemId(int position) { - // Since a menu item's ID is optional, we'll use the position as an - // ID for the item in the AdapterView - return position; - } - - public View getView(int position, View convertView, ViewGroup parent) { - if (convertView == null) { - convertView = mInflater.inflate(ITEM_LAYOUT, parent, false); - } - - MenuView.ItemView itemView = (MenuView.ItemView) convertView; - if (mForceShowIcon) { - ((ListMenuItemView) convertView).setForceShowIcon(true); - } - itemView.initialize(getItem(position), 0); - return convertView; - } - - void findExpandedIndex() { - final MenuItemImpl expandedItem = mMenu.getExpandedItem(); - if (expandedItem != null) { - final ArrayList items = mMenu.getNonActionItems(); - final int count = items.size(); - for (int i = 0; i < count; i++) { - final MenuItemImpl item = items.get(i); - if (item == expandedItem) { - mExpandedIndex = i; - return; - } - } - } - mExpandedIndex = -1; - } - } - - private class ExpandedIndexObserver extends DataSetObserver { - @Override - public void onChanged() { - mAdapter.findExpandedIndex(); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuPresenter.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuPresenter.java deleted file mode 100755 index c3f35472c..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuPresenter.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.internal.view.menu; - -import android.content.Context; -import android.os.Parcelable; -import android.view.ViewGroup; - -/** - * A MenuPresenter is responsible for building views for a Menu object. - * It takes over some responsibility from the old style monolithic MenuBuilder class. - */ -public interface MenuPresenter { - /** - * Called by menu implementation to notify another component of open/close events. - */ - public interface Callback { - /** - * Called when a menu is closing. - * @param menu - * @param allMenusAreClosing - */ - public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing); - - /** - * Called when a submenu opens. Useful for notifying the application - * of menu state so that it does not attempt to hide the action bar - * while a submenu is open or similar. - * - * @param subMenu Submenu currently being opened - * @return true if the Callback will handle presenting the submenu, false if - * the presenter should attempt to do so. - */ - public boolean onOpenSubMenu(MenuBuilder subMenu); - } - - /** - * Initialize this presenter for the given context and menu. - * This method is called by MenuBuilder when a presenter is - * added. See {@link MenuBuilder#addMenuPresenter(MenuPresenter)} - * - * @param context Context for this presenter; used for view creation and resource management - * @param menu Menu to host - */ - public void initForMenu(Context context, MenuBuilder menu); - - /** - * Retrieve a MenuView to display the menu specified in - * {@link #initForMenu(Context, Menu)}. - * - * @param root Intended parent of the MenuView. - * @return A freshly created MenuView. - */ - public MenuView getMenuView(ViewGroup root); - - /** - * Update the menu UI in response to a change. Called by - * MenuBuilder during the normal course of operation. - * - * @param cleared true if the menu was entirely cleared - */ - public void updateMenuView(boolean cleared); - - /** - * Set a callback object that will be notified of menu events - * related to this specific presentation. - * @param cb Callback that will be notified of future events - */ - public void setCallback(Callback cb); - - /** - * Called by Menu implementations to indicate that a submenu item - * has been selected. An active Callback should be notified, and - * if applicable the presenter should present the submenu. - * - * @param subMenu SubMenu being opened - * @return true if the the event was handled, false otherwise. - */ - public boolean onSubMenuSelected(SubMenuBuilder subMenu); - - /** - * Called by Menu implementations to indicate that a menu or submenu is - * closing. Presenter implementations should close the representation - * of the menu indicated as necessary and notify a registered callback. - * - * @param menu Menu or submenu that is closing. - * @param allMenusAreClosing True if all associated menus are closing. - */ - public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing); - - /** - * Called by Menu implementations to flag items that will be shown as actions. - * @return true if this presenter changed the action status of any items. - */ - public boolean flagActionItems(); - - /** - * Called when a menu item with a collapsable action view should expand its action view. - * - * @param menu Menu containing the item to be expanded - * @param item Item to be expanded - * @return true if this presenter expanded the action view, false otherwise. - */ - public boolean expandItemActionView(MenuBuilder menu, MenuItemImpl item); - - /** - * Called when a menu item with a collapsable action view should collapse its action view. - * - * @param menu Menu containing the item to be collapsed - * @param item Item to be collapsed - * @return true if this presenter collapsed the action view, false otherwise. - */ - public boolean collapseItemActionView(MenuBuilder menu, MenuItemImpl item); - - /** - * Returns an ID for determining how to save/restore instance state. - * @return a valid ID value. - */ - public int getId(); - - /** - * Returns a Parcelable describing the current state of the presenter. - * It will be passed to the {@link #onRestoreInstanceState(Parcelable)} - * method of the presenter sharing the same ID later. - * @return The saved instance state - */ - public Parcelable onSaveInstanceState(); - - /** - * Supplies the previously saved instance state to be restored. - * @param state The previously saved instance state - */ - public void onRestoreInstanceState(Parcelable state); -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuView.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuView.java deleted file mode 100755 index 323ba2d88..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuView.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.internal.view.menu; - -import android.graphics.drawable.Drawable; - -/** - * Minimal interface for a menu view. {@link #initialize(MenuBuilder)} must be called for the - * menu to be functional. - * - * @hide - */ -public interface MenuView { - /** - * Initializes the menu to the given menu. This should be called after the - * view is inflated. - * - * @param menu The menu that this MenuView should display. - */ - public void initialize(MenuBuilder menu); - - /** - * Returns the default animations to be used for this menu when entering/exiting. - * @return A resource ID for the default animations to be used for this menu. - */ - public int getWindowAnimations(); - - /** - * Minimal interface for a menu item view. {@link #initialize(MenuItemImpl, int)} must be called - * for the item to be functional. - */ - public interface ItemView { - /** - * Initializes with the provided MenuItemData. This should be called after the view is - * inflated. - * @param itemData The item that this ItemView should display. - * @param menuType The type of this menu, one of - * {@link MenuBuilder#TYPE_ICON}, {@link MenuBuilder#TYPE_EXPANDED}, - * {@link MenuBuilder#TYPE_DIALOG}). - */ - public void initialize(MenuItemImpl itemData, int menuType); - - /** - * Gets the item data that this view is displaying. - * @return the item data, or null if there is not one - */ - public MenuItemImpl getItemData(); - - /** - * Sets the title of the item view. - * @param title The title to set. - */ - public void setTitle(CharSequence title); - - /** - * Sets the enabled state of the item view. - * @param enabled Whether the item view should be enabled. - */ - public void setEnabled(boolean enabled); - - /** - * Displays the checkbox for the item view. This does not ensure the item view will be - * checked, for that use {@link #setChecked}. - * @param checkable Whether to display the checkbox or to hide it - */ - public void setCheckable(boolean checkable); - - /** - * Checks the checkbox for the item view. If the checkbox is hidden, it will NOT be - * made visible, call {@link #setCheckable(boolean)} for that. - * @param checked Whether the checkbox should be checked - */ - public void setChecked(boolean checked); - - /** - * Sets the shortcut for the item. - * @param showShortcut Whether a shortcut should be shown(if false, the value of - * shortcutKey should be ignored). - * @param shortcutKey The shortcut key that should be shown on the ItemView. - */ - public void setShortcut(boolean showShortcut, char shortcutKey); - - /** - * Set the icon of this item view. - * @param icon The icon of this item. null to hide the icon. - */ - public void setIcon(Drawable icon); - - /** - * Whether this item view prefers displaying the condensed title rather - * than the normal title. If a condensed title is not available, the - * normal title will be used. - * - * @return Whether this item view prefers displaying the condensed - * title. - */ - public boolean prefersCondensedTitle(); - - /** - * Whether this item view shows an icon. - * - * @return Whether this item view shows an icon. - */ - public boolean showsIcon(); - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuWrapper.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuWrapper.java deleted file mode 100755 index 64fc4aeaa..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuWrapper.java +++ /dev/null @@ -1,180 +0,0 @@ -package com.actionbarsherlock.internal.view.menu; - -import java.util.WeakHashMap; -import android.content.ComponentName; -import android.content.Intent; -import android.view.KeyEvent; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuItem; -import com.actionbarsherlock.view.SubMenu; - -public class MenuWrapper implements Menu { - private final android.view.Menu mNativeMenu; - - private final WeakHashMap mNativeMap = - new WeakHashMap(); - - - public MenuWrapper(android.view.Menu nativeMenu) { - mNativeMenu = nativeMenu; - } - - public android.view.Menu unwrap() { - return mNativeMenu; - } - - private MenuItem addInternal(android.view.MenuItem nativeItem) { - MenuItem item = new MenuItemWrapper(nativeItem); - mNativeMap.put(nativeItem, item); - return item; - } - - @Override - public MenuItem add(CharSequence title) { - return addInternal(mNativeMenu.add(title)); - } - - @Override - public MenuItem add(int titleRes) { - return addInternal(mNativeMenu.add(titleRes)); - } - - @Override - public MenuItem add(int groupId, int itemId, int order, CharSequence title) { - return addInternal(mNativeMenu.add(groupId, itemId, order, title)); - } - - @Override - public MenuItem add(int groupId, int itemId, int order, int titleRes) { - return addInternal(mNativeMenu.add(groupId, itemId, order, titleRes)); - } - - private SubMenu addInternal(android.view.SubMenu nativeSubMenu) { - SubMenu subMenu = new SubMenuWrapper(nativeSubMenu); - android.view.MenuItem nativeItem = nativeSubMenu.getItem(); - MenuItem item = subMenu.getItem(); - mNativeMap.put(nativeItem, item); - return subMenu; - } - - @Override - public SubMenu addSubMenu(CharSequence title) { - return addInternal(mNativeMenu.addSubMenu(title)); - } - - @Override - public SubMenu addSubMenu(int titleRes) { - return addInternal(mNativeMenu.addSubMenu(titleRes)); - } - - @Override - public SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title) { - return addInternal(mNativeMenu.addSubMenu(groupId, itemId, order, title)); - } - - @Override - public SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes) { - return addInternal(mNativeMenu.addSubMenu(groupId, itemId, order, titleRes)); - } - - @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]); - } - return result; - } - - @Override - public void removeItem(int id) { - mNativeMenu.removeItem(id); - } - - @Override - public void removeGroup(int groupId) { - mNativeMenu.removeGroup(groupId); - } - - @Override - public void clear() { - mNativeMap.clear(); - mNativeMenu.clear(); - } - - @Override - public void setGroupCheckable(int group, boolean checkable, boolean exclusive) { - mNativeMenu.setGroupCheckable(group, checkable, exclusive); - } - - @Override - public void setGroupVisible(int group, boolean visible) { - mNativeMenu.setGroupVisible(group, visible); - } - - @Override - public void setGroupEnabled(int group, boolean enabled) { - mNativeMenu.setGroupEnabled(group, enabled); - } - - @Override - public boolean hasVisibleItems() { - return mNativeMenu.hasVisibleItems(); - } - - @Override - public MenuItem findItem(int id) { - android.view.MenuItem nativeItem = mNativeMenu.findItem(id); - return findItem(nativeItem); - } - - public MenuItem findItem(android.view.MenuItem nativeItem) { - if (nativeItem == null) { - return null; - } - - MenuItem wrapped = mNativeMap.get(nativeItem); - if (wrapped != null) { - return wrapped; - } - - return addInternal(nativeItem); - } - - @Override - public int size() { - return mNativeMenu.size(); - } - - @Override - public MenuItem getItem(int index) { - android.view.MenuItem nativeItem = mNativeMenu.getItem(index); - return findItem(nativeItem); - } - - @Override - public void close() { - mNativeMenu.close(); - } - - @Override - public boolean performShortcut(int keyCode, KeyEvent event, int flags) { - return mNativeMenu.performShortcut(keyCode, event, flags); - } - - @Override - public boolean isShortcutKey(int keyCode, KeyEvent event) { - return mNativeMenu.isShortcutKey(keyCode, event); - } - - @Override - public boolean performIdentifierAction(int id, int flags) { - return mNativeMenu.performIdentifierAction(id, flags); - } - - @Override - public void setQwertyMode(boolean isQwerty) { - mNativeMenu.setQwertyMode(isQwerty); - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/SubMenuBuilder.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/SubMenuBuilder.java deleted file mode 100755 index 6679cf386..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/SubMenuBuilder.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.internal.view.menu; - -import android.content.Context; -import android.graphics.drawable.Drawable; -import android.view.View; - -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuItem; -import com.actionbarsherlock.view.SubMenu; - -/** - * The model for a sub menu, which is an extension of the menu. Most methods are proxied to - * the parent menu. - */ -public class SubMenuBuilder extends MenuBuilder implements SubMenu { - private MenuBuilder mParentMenu; - private MenuItemImpl mItem; - - public SubMenuBuilder(Context context, MenuBuilder parentMenu, MenuItemImpl item) { - super(context); - - mParentMenu = parentMenu; - mItem = item; - } - - @Override - public void setQwertyMode(boolean isQwerty) { - mParentMenu.setQwertyMode(isQwerty); - } - - @Override - public boolean isQwertyMode() { - return mParentMenu.isQwertyMode(); - } - - @Override - public void setShortcutsVisible(boolean shortcutsVisible) { - mParentMenu.setShortcutsVisible(shortcutsVisible); - } - - @Override - public boolean isShortcutsVisible() { - return mParentMenu.isShortcutsVisible(); - } - - public Menu getParentMenu() { - return mParentMenu; - } - - public MenuItem getItem() { - return mItem; - } - - @Override - public void setCallback(Callback callback) { - mParentMenu.setCallback(callback); - } - - @Override - public MenuBuilder getRootMenu() { - return mParentMenu; - } - - @Override - boolean dispatchMenuItemSelected(MenuBuilder menu, MenuItem item) { - return super.dispatchMenuItemSelected(menu, item) || - mParentMenu.dispatchMenuItemSelected(menu, item); - } - - public SubMenu setIcon(Drawable icon) { - mItem.setIcon(icon); - return this; - } - - public SubMenu setIcon(int iconRes) { - mItem.setIcon(iconRes); - return this; - } - - public SubMenu setHeaderIcon(Drawable icon) { - return (SubMenu) super.setHeaderIconInt(icon); - } - - public SubMenu setHeaderIcon(int iconRes) { - return (SubMenu) super.setHeaderIconInt(iconRes); - } - - public SubMenu setHeaderTitle(CharSequence title) { - return (SubMenu) super.setHeaderTitleInt(title); - } - - public SubMenu setHeaderTitle(int titleRes) { - return (SubMenu) super.setHeaderTitleInt(titleRes); - } - - public SubMenu setHeaderView(View view) { - return (SubMenu) super.setHeaderViewInt(view); - } - - @Override - public boolean expandItemActionView(MenuItemImpl item) { - return mParentMenu.expandItemActionView(item); - } - - @Override - public boolean collapseItemActionView(MenuItemImpl item) { - return mParentMenu.collapseItemActionView(item); - } - - @Override - public String getActionViewStatesKey() { - final int itemId = mItem != null ? mItem.getItemId() : 0; - if (itemId == 0) { - return null; - } - return super.getActionViewStatesKey() + ":" + itemId; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/SubMenuWrapper.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/SubMenuWrapper.java deleted file mode 100755 index 7d307acb1..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/SubMenuWrapper.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.actionbarsherlock.internal.view.menu; - -import android.graphics.drawable.Drawable; -import android.view.View; -import com.actionbarsherlock.view.MenuItem; -import com.actionbarsherlock.view.SubMenu; - -public class SubMenuWrapper extends MenuWrapper implements SubMenu { - private final android.view.SubMenu mNativeSubMenu; - private MenuItem mItem = null; - - public SubMenuWrapper(android.view.SubMenu nativeSubMenu) { - super(nativeSubMenu); - mNativeSubMenu = nativeSubMenu; - } - - - @Override - public SubMenu setHeaderTitle(int titleRes) { - mNativeSubMenu.setHeaderTitle(titleRes); - return this; - } - - @Override - public SubMenu setHeaderTitle(CharSequence title) { - mNativeSubMenu.setHeaderTitle(title); - return this; - } - - @Override - public SubMenu setHeaderIcon(int iconRes) { - mNativeSubMenu.setHeaderIcon(iconRes); - return this; - } - - @Override - public SubMenu setHeaderIcon(Drawable icon) { - mNativeSubMenu.setHeaderIcon(icon); - return this; - } - - @Override - public SubMenu setHeaderView(View view) { - mNativeSubMenu.setHeaderView(view); - return this; - } - - @Override - public void clearHeader() { - mNativeSubMenu.clearHeader(); - } - - @Override - public SubMenu setIcon(int iconRes) { - mNativeSubMenu.setIcon(iconRes); - return this; - } - - @Override - public SubMenu setIcon(Drawable icon) { - mNativeSubMenu.setIcon(icon); - return this; - } - - @Override - public MenuItem getItem() { - if (mItem == null) { - mItem = new MenuItemWrapper(mNativeSubMenu.getItem()); - } - return mItem; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/AbsActionBarView.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/AbsActionBarView.java deleted file mode 100755 index 3a4a44675..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/AbsActionBarView.java +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.actionbarsherlock.internal.widget; - -import android.content.Context; -import android.content.res.Configuration; -import android.content.res.TypedArray; -import android.os.Build; -import android.util.AttributeSet; -import android.view.View; -import android.view.animation.DecelerateInterpolator; -import android.view.animation.Interpolator; - -import com.actionbarsherlock.R; -import com.actionbarsherlock.internal.nineoldandroids.animation.Animator; -import com.actionbarsherlock.internal.nineoldandroids.animation.AnimatorSet; -import com.actionbarsherlock.internal.nineoldandroids.animation.ObjectAnimator; -import com.actionbarsherlock.internal.nineoldandroids.view.NineViewGroup; -import com.actionbarsherlock.internal.view.menu.ActionMenuPresenter; -import com.actionbarsherlock.internal.view.menu.ActionMenuView; - -import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoolean; - -public abstract class AbsActionBarView extends NineViewGroup { - protected ActionMenuView mMenuView; - protected ActionMenuPresenter mActionMenuPresenter; - protected ActionBarContainer mSplitView; - protected boolean mSplitActionBar; - protected boolean mSplitWhenNarrow; - protected int mContentHeight; - - final Context mContext; - - protected Animator mVisibilityAnim; - protected final VisibilityAnimListener mVisAnimListener = new VisibilityAnimListener(); - - private static final /*Time*/Interpolator sAlphaInterpolator = new DecelerateInterpolator(); - - private static final int FADE_DURATION = 200; - - public AbsActionBarView(Context context) { - super(context); - mContext = context; - } - - public AbsActionBarView(Context context, AttributeSet attrs) { - super(context, attrs); - mContext = context; - } - - public AbsActionBarView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - mContext = context; - } - - /* - * Must be public so we can dispatch pre-2.2 via ActionBarImpl. - */ - @Override - public void onConfigurationChanged(Configuration newConfig) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) { - super.onConfigurationChanged(newConfig); - } else if (mMenuView != null) { - mMenuView.onConfigurationChanged(newConfig); - } - - // Action bar can change size on configuration changes. - // Reread the desired height from the theme-specified style. - TypedArray a = getContext().obtainStyledAttributes(null, R.styleable.SherlockActionBar, - R.attr.actionBarStyle, 0); - setContentHeight(a.getLayoutDimension(R.styleable.SherlockActionBar_height, 0)); - a.recycle(); - if (mSplitWhenNarrow) { - setSplitActionBar(getResources_getBoolean(getContext(), - R.bool.abs__split_action_bar_is_narrow)); - } - if (mActionMenuPresenter != null) { - mActionMenuPresenter.onConfigurationChanged(newConfig); - } - } - - /** - * Sets whether the bar should be split right now, no questions asked. - * @param split true if the bar should split - */ - public void setSplitActionBar(boolean split) { - mSplitActionBar = split; - } - - /** - * Sets whether the bar should split if we enter a narrow screen configuration. - * @param splitWhenNarrow true if the bar should check to split after a config change - */ - public void setSplitWhenNarrow(boolean splitWhenNarrow) { - mSplitWhenNarrow = splitWhenNarrow; - } - - public void setContentHeight(int height) { - mContentHeight = height; - requestLayout(); - } - - public int getContentHeight() { - return mContentHeight; - } - - public void setSplitView(ActionBarContainer splitView) { - mSplitView = splitView; - } - - /** - * @return Current visibility or if animating, the visibility being animated to. - */ - public int getAnimatedVisibility() { - if (mVisibilityAnim != null) { - return mVisAnimListener.mFinalVisibility; - } - return getVisibility(); - } - - public void animateToVisibility(int visibility) { - if (mVisibilityAnim != null) { - mVisibilityAnim.cancel(); - } - if (visibility == VISIBLE) { - if (getVisibility() != VISIBLE) { - setAlpha(0); - if (mSplitView != null && mMenuView != null) { - mMenuView.setAlpha(0); - } - } - ObjectAnimator anim = ObjectAnimator.ofFloat(this, "alpha", 1); - anim.setDuration(FADE_DURATION); - anim.setInterpolator(sAlphaInterpolator); - if (mSplitView != null && mMenuView != null) { - AnimatorSet set = new AnimatorSet(); - ObjectAnimator splitAnim = ObjectAnimator.ofFloat(mMenuView, "alpha", 1); - splitAnim.setDuration(FADE_DURATION); - set.addListener(mVisAnimListener.withFinalVisibility(visibility)); - set.play(anim).with(splitAnim); - set.start(); - } else { - anim.addListener(mVisAnimListener.withFinalVisibility(visibility)); - anim.start(); - } - } else { - ObjectAnimator anim = ObjectAnimator.ofFloat(this, "alpha", 0); - anim.setDuration(FADE_DURATION); - anim.setInterpolator(sAlphaInterpolator); - if (mSplitView != null && mMenuView != null) { - AnimatorSet set = new AnimatorSet(); - ObjectAnimator splitAnim = ObjectAnimator.ofFloat(mMenuView, "alpha", 0); - splitAnim.setDuration(FADE_DURATION); - set.addListener(mVisAnimListener.withFinalVisibility(visibility)); - set.play(anim).with(splitAnim); - set.start(); - } else { - anim.addListener(mVisAnimListener.withFinalVisibility(visibility)); - anim.start(); - } - } - } - - @Override - public void setVisibility(int visibility) { - if (mVisibilityAnim != null) { - mVisibilityAnim.end(); - } - super.setVisibility(visibility); - } - - public boolean showOverflowMenu() { - if (mActionMenuPresenter != null) { - return mActionMenuPresenter.showOverflowMenu(); - } - return false; - } - - public void postShowOverflowMenu() { - post(new Runnable() { - public void run() { - showOverflowMenu(); - } - }); - } - - public boolean hideOverflowMenu() { - if (mActionMenuPresenter != null) { - return mActionMenuPresenter.hideOverflowMenu(); - } - return false; - } - - public boolean isOverflowMenuShowing() { - if (mActionMenuPresenter != null) { - return mActionMenuPresenter.isOverflowMenuShowing(); - } - return false; - } - - public boolean isOverflowReserved() { - return mActionMenuPresenter != null && mActionMenuPresenter.isOverflowReserved(); - } - - public void dismissPopupMenus() { - if (mActionMenuPresenter != null) { - mActionMenuPresenter.dismissPopupMenus(); - } - } - - protected int measureChildView(View child, int availableWidth, int childSpecHeight, - int spacing) { - child.measure(MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST), - childSpecHeight); - - availableWidth -= child.getMeasuredWidth(); - availableWidth -= spacing; - - return Math.max(0, availableWidth); - } - - protected int positionChild(View child, int x, int y, int contentHeight) { - int childWidth = child.getMeasuredWidth(); - int childHeight = child.getMeasuredHeight(); - int childTop = y + (contentHeight - childHeight) / 2; - - child.layout(x, childTop, x + childWidth, childTop + childHeight); - - return childWidth; - } - - protected int positionChildInverse(View child, int x, int y, int contentHeight) { - int childWidth = child.getMeasuredWidth(); - int childHeight = child.getMeasuredHeight(); - int childTop = y + (contentHeight - childHeight) / 2; - - child.layout(x - childWidth, childTop, x, childTop + childHeight); - - return childWidth; - } - - protected class VisibilityAnimListener implements Animator.AnimatorListener { - private boolean mCanceled = false; - int mFinalVisibility; - - public VisibilityAnimListener withFinalVisibility(int visibility) { - mFinalVisibility = visibility; - return this; - } - - @Override - public void onAnimationStart(Animator animation) { - setVisibility(VISIBLE); - mVisibilityAnim = animation; - mCanceled = false; - } - - @Override - public void onAnimationEnd(Animator animation) { - if (mCanceled) return; - - mVisibilityAnim = null; - setVisibility(mFinalVisibility); - if (mSplitView != null && mMenuView != null) { - mMenuView.setVisibility(mFinalVisibility); - } - } - - @Override - public void onAnimationCancel(Animator animation) { - mCanceled = true; - } - - @Override - public void onAnimationRepeat(Animator animation) { - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java deleted file mode 100755 index 5e5aa2867..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java +++ /dev/null @@ -1,245 +0,0 @@ -/* - * 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.internal.widget; - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.Canvas; -import android.graphics.drawable.Drawable; -import android.util.AttributeSet; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; - -import com.actionbarsherlock.R; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout; - -/** - * This class acts as a container for the action bar view and action mode context views. - * It applies special styles as needed to help handle animated transitions between them. - * @hide - */ -public class ActionBarContainer extends NineFrameLayout { - private boolean mIsTransitioning; - private View mTabContainer; - private ActionBarView mActionBarView; - - private Drawable mBackground; - private Drawable mStackedBackground; - private Drawable mSplitBackground; - private boolean mIsSplit; - private boolean mIsStacked; - - public ActionBarContainer(Context context) { - this(context, null); - } - - public ActionBarContainer(Context context, AttributeSet attrs) { - super(context, attrs); - - setBackgroundDrawable(null); - - TypedArray a = context.obtainStyledAttributes(attrs, - R.styleable.SherlockActionBar); - mBackground = a.getDrawable(R.styleable.SherlockActionBar_background); - mStackedBackground = a.getDrawable( - R.styleable.SherlockActionBar_backgroundStacked); - - if (getId() == R.id.abs__split_action_bar) { - mIsSplit = true; - mSplitBackground = a.getDrawable( - R.styleable.SherlockActionBar_backgroundSplit); - } - a.recycle(); - - setWillNotDraw(mIsSplit ? mSplitBackground == null : - mBackground == null && mStackedBackground == null); - } - - @Override - public void onFinishInflate() { - super.onFinishInflate(); - mActionBarView = (ActionBarView) findViewById(R.id.abs__action_bar); - } - - public void setPrimaryBackground(Drawable bg) { - mBackground = bg; - invalidate(); - } - - public void setStackedBackground(Drawable bg) { - mStackedBackground = bg; - invalidate(); - } - - public void setSplitBackground(Drawable bg) { - mSplitBackground = bg; - invalidate(); - } - - /** - * Set the action bar into a "transitioning" state. While transitioning - * the bar will block focus and touch from all of its descendants. This - * prevents the user from interacting with the bar while it is animating - * in or out. - * - * @param isTransitioning true if the bar is currently transitioning, false otherwise. - */ - public void setTransitioning(boolean isTransitioning) { - mIsTransitioning = isTransitioning; - setDescendantFocusability(isTransitioning ? FOCUS_BLOCK_DESCENDANTS - : FOCUS_AFTER_DESCENDANTS); - } - - @Override - public boolean onInterceptTouchEvent(MotionEvent ev) { - return mIsTransitioning || super.onInterceptTouchEvent(ev); - } - - @Override - public boolean onTouchEvent(MotionEvent ev) { - super.onTouchEvent(ev); - - // An action bar always eats touch events. - return true; - } - - @Override - public boolean onHoverEvent(MotionEvent ev) { - super.onHoverEvent(ev); - - // An action bar always eats hover events. - return true; - } - - public void setTabContainer(ScrollingTabContainerView tabView) { - if (mTabContainer != null) { - removeView(mTabContainer); - } - mTabContainer = tabView; - if (tabView != null) { - addView(tabView); - final ViewGroup.LayoutParams lp = tabView.getLayoutParams(); - lp.width = LayoutParams.MATCH_PARENT; - lp.height = LayoutParams.WRAP_CONTENT; - tabView.setAllowCollapse(false); - } - } - - public View getTabContainer() { - return mTabContainer; - } - - @Override - public void onDraw(Canvas canvas) { - if (getWidth() == 0 || getHeight() == 0) { - return; - } - - if (mIsSplit) { - if (mSplitBackground != null) mSplitBackground.draw(canvas); - } else { - if (mBackground != null) { - mBackground.draw(canvas); - } - if (mStackedBackground != null && mIsStacked) { - mStackedBackground.draw(canvas); - } - } - } - - //This causes the animation reflection to fail on pre-HC platforms - //@Override - //public android.view.ActionMode startActionModeForChild(View child, android.view.ActionMode.Callback callback) { - // // No starting an action mode for an action bar child! (Where would it go?) - // return null; - //} - - @Override - public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - - if (mActionBarView == null) return; - - final LayoutParams lp = (LayoutParams) mActionBarView.getLayoutParams(); - final int actionBarViewHeight = mActionBarView.isCollapsed() ? 0 : - mActionBarView.getMeasuredHeight() + lp.topMargin + lp.bottomMargin; - - if (mTabContainer != null && mTabContainer.getVisibility() != GONE) { - final int mode = MeasureSpec.getMode(heightMeasureSpec); - if (mode == MeasureSpec.AT_MOST) { - final int maxHeight = MeasureSpec.getSize(heightMeasureSpec); - setMeasuredDimension(getMeasuredWidth(), - Math.min(actionBarViewHeight + mTabContainer.getMeasuredHeight(), - maxHeight)); - } - } - } - - @Override - public void onLayout(boolean changed, int l, int t, int r, int b) { - super.onLayout(changed, l, t, r, b); - - final boolean hasTabs = mTabContainer != null && mTabContainer.getVisibility() != GONE; - - if (mTabContainer != null && mTabContainer.getVisibility() != GONE) { - final int containerHeight = getMeasuredHeight(); - final int tabHeight = mTabContainer.getMeasuredHeight(); - - if ((mActionBarView.getDisplayOptions() & ActionBar.DISPLAY_SHOW_HOME) == 0) { - // Not showing home, put tabs on top. - final int count = getChildCount(); - for (int i = 0; i < count; i++) { - final View child = getChildAt(i); - - if (child == mTabContainer) continue; - - if (!mActionBarView.isCollapsed()) { - child.offsetTopAndBottom(tabHeight); - } - } - mTabContainer.layout(l, 0, r, tabHeight); - } else { - mTabContainer.layout(l, containerHeight - tabHeight, r, containerHeight); - } - } - - boolean needsInvalidate = false; - if (mIsSplit) { - if (mSplitBackground != null) { - mSplitBackground.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight()); - needsInvalidate = true; - } - } else { - if (mBackground != null) { - mBackground.setBounds(mActionBarView.getLeft(), mActionBarView.getTop(), - mActionBarView.getRight(), mActionBarView.getBottom()); - needsInvalidate = true; - } - if ((mIsStacked = hasTabs && mStackedBackground != null)) { - mStackedBackground.setBounds(mTabContainer.getLeft(), mTabContainer.getTop(), - mTabContainer.getRight(), mTabContainer.getBottom()); - needsInvalidate = true; - } - } - - if (needsInvalidate) { - invalidate(); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContextView.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContextView.java deleted file mode 100755 index 9ec250f38..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContextView.java +++ /dev/null @@ -1,518 +0,0 @@ -/* - * 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.internal.widget; - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.drawable.Drawable; -import android.text.TextUtils; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.accessibility.AccessibilityEvent; -import android.view.animation.DecelerateInterpolator; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.actionbarsherlock.R; -import com.actionbarsherlock.internal.nineoldandroids.animation.Animator; -import com.actionbarsherlock.internal.nineoldandroids.animation.Animator.AnimatorListener; -import com.actionbarsherlock.internal.nineoldandroids.animation.AnimatorSet; -import com.actionbarsherlock.internal.nineoldandroids.animation.ObjectAnimator; -import com.actionbarsherlock.internal.nineoldandroids.view.animation.AnimatorProxy; -import com.actionbarsherlock.internal.nineoldandroids.widget.NineLinearLayout; -import com.actionbarsherlock.internal.view.menu.ActionMenuPresenter; -import com.actionbarsherlock.internal.view.menu.ActionMenuView; -import com.actionbarsherlock.internal.view.menu.MenuBuilder; -import com.actionbarsherlock.view.ActionMode; - -/** - * @hide - */ -public class ActionBarContextView extends AbsActionBarView implements AnimatorListener { - //UNUSED private static final String TAG = "ActionBarContextView"; - - private CharSequence mTitle; - private CharSequence mSubtitle; - - private NineLinearLayout mClose; - private View mCustomView; - private LinearLayout mTitleLayout; - private TextView mTitleView; - private TextView mSubtitleView; - private int mTitleStyleRes; - private int mSubtitleStyleRes; - private Drawable mSplitBackground; - - private Animator mCurrentAnimation; - private boolean mAnimateInOnLayout; - private int mAnimationMode; - - private static final int ANIMATE_IDLE = 0; - private static final int ANIMATE_IN = 1; - private static final int ANIMATE_OUT = 2; - - public ActionBarContextView(Context context) { - this(context, null); - } - - public ActionBarContextView(Context context, AttributeSet attrs) { - this(context, attrs, R.attr.actionModeStyle); - } - - public ActionBarContextView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - - TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SherlockActionMode, defStyle, 0); - setBackgroundDrawable(a.getDrawable( - R.styleable.SherlockActionMode_background)); - mTitleStyleRes = a.getResourceId( - R.styleable.SherlockActionMode_titleTextStyle, 0); - mSubtitleStyleRes = a.getResourceId( - R.styleable.SherlockActionMode_subtitleTextStyle, 0); - - mContentHeight = a.getLayoutDimension( - R.styleable.SherlockActionMode_height, 0); - - mSplitBackground = a.getDrawable( - R.styleable.SherlockActionMode_backgroundSplit); - - a.recycle(); - } - - @Override - public void onDetachedFromWindow() { - super.onDetachedFromWindow(); - if (mActionMenuPresenter != null) { - mActionMenuPresenter.hideOverflowMenu(); - mActionMenuPresenter.hideSubMenus(); - } - } - - @Override - public void setSplitActionBar(boolean split) { - if (mSplitActionBar != split) { - if (mActionMenuPresenter != null) { - // Mode is already active; move everything over and adjust the menu itself. - final LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, - LayoutParams.MATCH_PARENT); - if (!split) { - mMenuView = (ActionMenuView) mActionMenuPresenter.getMenuView(this); - mMenuView.setBackgroundDrawable(null); - final ViewGroup oldParent = (ViewGroup) mMenuView.getParent(); - if (oldParent != null) oldParent.removeView(mMenuView); - addView(mMenuView, layoutParams); - } else { - // Allow full screen width in split mode. - mActionMenuPresenter.setWidthLimit( - getContext().getResources().getDisplayMetrics().widthPixels, true); - // No limit to the item count; use whatever will fit. - mActionMenuPresenter.setItemLimit(Integer.MAX_VALUE); - // Span the whole width - layoutParams.width = LayoutParams.MATCH_PARENT; - layoutParams.height = mContentHeight; - mMenuView = (ActionMenuView) mActionMenuPresenter.getMenuView(this); - mMenuView.setBackgroundDrawable(mSplitBackground); - final ViewGroup oldParent = (ViewGroup) mMenuView.getParent(); - if (oldParent != null) oldParent.removeView(mMenuView); - mSplitView.addView(mMenuView, layoutParams); - } - } - super.setSplitActionBar(split); - } - } - - public void setContentHeight(int height) { - mContentHeight = height; - } - - public void setCustomView(View view) { - if (mCustomView != null) { - removeView(mCustomView); - } - mCustomView = view; - if (mTitleLayout != null) { - removeView(mTitleLayout); - mTitleLayout = null; - } - if (view != null) { - addView(view); - } - requestLayout(); - } - - public void setTitle(CharSequence title) { - mTitle = title; - initTitle(); - } - - public void setSubtitle(CharSequence subtitle) { - mSubtitle = subtitle; - initTitle(); - } - - public CharSequence getTitle() { - return mTitle; - } - - public CharSequence getSubtitle() { - return mSubtitle; - } - - private void initTitle() { - if (mTitleLayout == null) { - LayoutInflater inflater = LayoutInflater.from(getContext()); - inflater.inflate(R.layout.abs__action_bar_title_item, this); - mTitleLayout = (LinearLayout) getChildAt(getChildCount() - 1); - mTitleView = (TextView) mTitleLayout.findViewById(R.id.abs__action_bar_title); - mSubtitleView = (TextView) mTitleLayout.findViewById(R.id.abs__action_bar_subtitle); - if (mTitleStyleRes != 0) { - mTitleView.setTextAppearance(mContext, mTitleStyleRes); - } - if (mSubtitleStyleRes != 0) { - mSubtitleView.setTextAppearance(mContext, mSubtitleStyleRes); - } - } - - mTitleView.setText(mTitle); - mSubtitleView.setText(mSubtitle); - - final boolean hasTitle = !TextUtils.isEmpty(mTitle); - final boolean hasSubtitle = !TextUtils.isEmpty(mSubtitle); - mSubtitleView.setVisibility(hasSubtitle ? VISIBLE : GONE); - mTitleLayout.setVisibility(hasTitle || hasSubtitle ? VISIBLE : GONE); - if (mTitleLayout.getParent() == null) { - addView(mTitleLayout); - } - } - - public void initForMode(final ActionMode mode) { - if (mClose == null) { - LayoutInflater inflater = LayoutInflater.from(mContext); - mClose = (NineLinearLayout)inflater.inflate(R.layout.abs__action_mode_close_item, this, false); - addView(mClose); - } else if (mClose.getParent() == null) { - addView(mClose); - } - - View closeButton = mClose.findViewById(R.id.abs__action_mode_close_button); - closeButton.setOnClickListener(new OnClickListener() { - public void onClick(View v) { - mode.finish(); - } - }); - - final MenuBuilder menu = (MenuBuilder) mode.getMenu(); - if (mActionMenuPresenter != null) { - mActionMenuPresenter.dismissPopupMenus(); - } - mActionMenuPresenter = new ActionMenuPresenter(mContext); - mActionMenuPresenter.setReserveOverflow(true); - - final LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, - LayoutParams.MATCH_PARENT); - if (!mSplitActionBar) { - menu.addMenuPresenter(mActionMenuPresenter); - mMenuView = (ActionMenuView) mActionMenuPresenter.getMenuView(this); - mMenuView.setBackgroundDrawable(null); - addView(mMenuView, layoutParams); - } else { - // Allow full screen width in split mode. - mActionMenuPresenter.setWidthLimit( - getContext().getResources().getDisplayMetrics().widthPixels, true); - // No limit to the item count; use whatever will fit. - mActionMenuPresenter.setItemLimit(Integer.MAX_VALUE); - // Span the whole width - layoutParams.width = LayoutParams.MATCH_PARENT; - layoutParams.height = mContentHeight; - menu.addMenuPresenter(mActionMenuPresenter); - mMenuView = (ActionMenuView) mActionMenuPresenter.getMenuView(this); - mMenuView.setBackgroundDrawable(mSplitBackground); - mSplitView.addView(mMenuView, layoutParams); - } - - mAnimateInOnLayout = true; - } - - public void closeMode() { - if (mAnimationMode == ANIMATE_OUT) { - // Called again during close; just finish what we were doing. - return; - } - if (mClose == null) { - killMode(); - return; - } - - finishAnimation(); - mAnimationMode = ANIMATE_OUT; - mCurrentAnimation = makeOutAnimation(); - mCurrentAnimation.start(); - } - - private void finishAnimation() { - final Animator a = mCurrentAnimation; - if (a != null) { - mCurrentAnimation = null; - a.end(); - } - } - - public void killMode() { - finishAnimation(); - removeAllViews(); - if (mSplitView != null) { - mSplitView.removeView(mMenuView); - } - mCustomView = null; - mMenuView = null; - mAnimateInOnLayout = false; - } - - @Override - public boolean showOverflowMenu() { - if (mActionMenuPresenter != null) { - return mActionMenuPresenter.showOverflowMenu(); - } - return false; - } - - @Override - public boolean hideOverflowMenu() { - if (mActionMenuPresenter != null) { - return mActionMenuPresenter.hideOverflowMenu(); - } - return false; - } - - @Override - public boolean isOverflowMenuShowing() { - if (mActionMenuPresenter != null) { - return mActionMenuPresenter.isOverflowMenuShowing(); - } - return false; - } - - @Override - protected ViewGroup.LayoutParams generateDefaultLayoutParams() { - // Used by custom views if they don't supply layout params. Everything else - // added to an ActionBarContextView should have them already. - return new MarginLayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); - } - - @Override - public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs) { - return new MarginLayoutParams(getContext(), attrs); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - final int widthMode = MeasureSpec.getMode(widthMeasureSpec); - if (widthMode != MeasureSpec.EXACTLY) { - throw new IllegalStateException(getClass().getSimpleName() + " can only be used " + - "with android:layout_width=\"match_parent\" (or fill_parent)"); - } - - final int heightMode = MeasureSpec.getMode(heightMeasureSpec); - if (heightMode == MeasureSpec.UNSPECIFIED) { - throw new IllegalStateException(getClass().getSimpleName() + " can only be used " + - "with android:layout_height=\"wrap_content\""); - } - - final int contentWidth = MeasureSpec.getSize(widthMeasureSpec); - - int maxHeight = mContentHeight > 0 ? - mContentHeight : MeasureSpec.getSize(heightMeasureSpec); - - final int verticalPadding = getPaddingTop() + getPaddingBottom(); - int availableWidth = contentWidth - getPaddingLeft() - getPaddingRight(); - final int height = maxHeight - verticalPadding; - final int childSpecHeight = MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST); - - if (mClose != null) { - availableWidth = measureChildView(mClose, availableWidth, childSpecHeight, 0); - MarginLayoutParams lp = (MarginLayoutParams) mClose.getLayoutParams(); - availableWidth -= lp.leftMargin + lp.rightMargin; - } - - if (mMenuView != null && mMenuView.getParent() == this) { - availableWidth = measureChildView(mMenuView, availableWidth, - childSpecHeight, 0); - } - - if (mTitleLayout != null && mCustomView == null) { - availableWidth = measureChildView(mTitleLayout, availableWidth, childSpecHeight, 0); - } - - if (mCustomView != null) { - ViewGroup.LayoutParams lp = mCustomView.getLayoutParams(); - final int customWidthMode = lp.width != LayoutParams.WRAP_CONTENT ? - MeasureSpec.EXACTLY : MeasureSpec.AT_MOST; - final int customWidth = lp.width >= 0 ? - Math.min(lp.width, availableWidth) : availableWidth; - final int customHeightMode = lp.height != LayoutParams.WRAP_CONTENT ? - MeasureSpec.EXACTLY : MeasureSpec.AT_MOST; - final int customHeight = lp.height >= 0 ? - Math.min(lp.height, height) : height; - mCustomView.measure(MeasureSpec.makeMeasureSpec(customWidth, customWidthMode), - MeasureSpec.makeMeasureSpec(customHeight, customHeightMode)); - } - - if (mContentHeight <= 0) { - int measuredHeight = 0; - final int count = getChildCount(); - for (int i = 0; i < count; i++) { - View v = getChildAt(i); - int paddedViewHeight = v.getMeasuredHeight() + verticalPadding; - if (paddedViewHeight > measuredHeight) { - measuredHeight = paddedViewHeight; - } - } - setMeasuredDimension(contentWidth, measuredHeight); - } else { - setMeasuredDimension(contentWidth, maxHeight); - } - } - - private Animator makeInAnimation() { - mClose.setTranslationX(-mClose.getWidth() - - ((MarginLayoutParams) mClose.getLayoutParams()).leftMargin); - ObjectAnimator buttonAnimator = ObjectAnimator.ofFloat(mClose, "translationX", 0); - buttonAnimator.setDuration(200); - buttonAnimator.addListener(this); - buttonAnimator.setInterpolator(new DecelerateInterpolator()); - - AnimatorSet set = new AnimatorSet(); - AnimatorSet.Builder b = set.play(buttonAnimator); - - if (mMenuView != null) { - final int count = mMenuView.getChildCount(); - if (count > 0) { - for (int i = count - 1, j = 0; i >= 0; i--, j++) { - AnimatorProxy child = AnimatorProxy.wrap(mMenuView.getChildAt(i)); - child.setScaleY(0); - ObjectAnimator a = ObjectAnimator.ofFloat(child, "scaleY", 0, 1); - a.setDuration(100); - a.setStartDelay(j * 70); - b.with(a); - } - } - } - - return set; - } - - private Animator makeOutAnimation() { - ObjectAnimator buttonAnimator = ObjectAnimator.ofFloat(mClose, "translationX", - -mClose.getWidth() - ((MarginLayoutParams) mClose.getLayoutParams()).leftMargin); - buttonAnimator.setDuration(200); - buttonAnimator.addListener(this); - buttonAnimator.setInterpolator(new DecelerateInterpolator()); - - AnimatorSet set = new AnimatorSet(); - AnimatorSet.Builder b = set.play(buttonAnimator); - - if (mMenuView != null) { - final int count = mMenuView.getChildCount(); - if (count > 0) { - for (int i = 0; i < 0; i++) { - AnimatorProxy child = AnimatorProxy.wrap(mMenuView.getChildAt(i)); - child.setScaleY(0); - ObjectAnimator a = ObjectAnimator.ofFloat(child, "scaleY", 0); - a.setDuration(100); - a.setStartDelay(i * 70); - b.with(a); - } - } - } - - return set; - } - - @Override - protected void onLayout(boolean changed, int l, int t, int r, int b) { - int x = getPaddingLeft(); - final int y = getPaddingTop(); - final int contentHeight = b - t - getPaddingTop() - getPaddingBottom(); - - if (mClose != null && mClose.getVisibility() != GONE) { - MarginLayoutParams lp = (MarginLayoutParams) mClose.getLayoutParams(); - x += lp.leftMargin; - x += positionChild(mClose, x, y, contentHeight); - x += lp.rightMargin; - - if (mAnimateInOnLayout) { - mAnimationMode = ANIMATE_IN; - mCurrentAnimation = makeInAnimation(); - mCurrentAnimation.start(); - mAnimateInOnLayout = false; - } - } - - if (mTitleLayout != null && mCustomView == null) { - x += positionChild(mTitleLayout, x, y, contentHeight); - } - - if (mCustomView != null) { - x += positionChild(mCustomView, x, y, contentHeight); - } - - x = r - l - getPaddingRight(); - - if (mMenuView != null) { - x -= positionChildInverse(mMenuView, x, y, contentHeight); - } - } - - @Override - public void onAnimationStart(Animator animation) { - } - - @Override - public void onAnimationEnd(Animator animation) { - if (mAnimationMode == ANIMATE_OUT) { - killMode(); - } - mAnimationMode = ANIMATE_IDLE; - } - - @Override - public void onAnimationCancel(Animator animation) { - } - - @Override - public void onAnimationRepeat(Animator animation) { - } - - @Override - public boolean shouldDelayChildPressedState() { - return false; - } - - @Override - public void onInitializeAccessibilityEvent(AccessibilityEvent event) { - if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) { - // Action mode started - //TODO event.setSource(this); - event.setClassName(getClass().getName()); - event.setPackageName(getContext().getPackageName()); - event.setContentDescription(mTitle); - } else { - //TODO super.onInitializeAccessibilityEvent(event); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarView.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarView.java deleted file mode 100755 index 4636de17f..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarView.java +++ /dev/null @@ -1,1548 +0,0 @@ -/* - * 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.internal.widget; - -import org.xmlpull.v1.XmlPullParser; -import android.app.Activity; -import android.content.Context; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; -import android.content.res.AssetManager; -import android.content.res.Configuration; -import android.content.res.TypedArray; -import android.content.res.XmlResourceParser; -import android.graphics.drawable.Drawable; -import android.os.Build; -import android.os.Parcel; -import android.os.Parcelable; -import android.text.TextUtils; -import android.util.AttributeSet; -import android.util.Log; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewParent; -import android.view.accessibility.AccessibilityEvent; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.SpinnerAdapter; -import android.widget.TextView; - -import com.actionbarsherlock.R; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.app.ActionBar.OnNavigationListener; -import com.actionbarsherlock.internal.ActionBarSherlockCompat; -import com.actionbarsherlock.internal.view.menu.ActionMenuItem; -import com.actionbarsherlock.internal.view.menu.ActionMenuPresenter; -import com.actionbarsherlock.internal.view.menu.ActionMenuView; -import com.actionbarsherlock.internal.view.menu.MenuBuilder; -import com.actionbarsherlock.internal.view.menu.MenuItemImpl; -import com.actionbarsherlock.internal.view.menu.MenuPresenter; -import com.actionbarsherlock.internal.view.menu.MenuView; -import com.actionbarsherlock.internal.view.menu.SubMenuBuilder; -import com.actionbarsherlock.view.CollapsibleActionView; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuItem; -import com.actionbarsherlock.view.Window; - -import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoolean; - -/** - * @hide - */ -public class ActionBarView extends AbsActionBarView { - private static final String TAG = "ActionBarView"; - private static final boolean DEBUG = false; - - /** - * Display options applied by default - */ - public static final int DISPLAY_DEFAULT = 0; - - /** - * Display options that require re-layout as opposed to a simple invalidate - */ - private static final int DISPLAY_RELAYOUT_MASK = - ActionBar.DISPLAY_SHOW_HOME | - ActionBar.DISPLAY_USE_LOGO | - ActionBar.DISPLAY_HOME_AS_UP | - ActionBar.DISPLAY_SHOW_CUSTOM | - ActionBar.DISPLAY_SHOW_TITLE; - - private static final int DEFAULT_CUSTOM_GRAVITY = Gravity.LEFT | Gravity.CENTER_VERTICAL; - - private int mNavigationMode; - private int mDisplayOptions = -1; - private CharSequence mTitle; - private CharSequence mSubtitle; - private Drawable mIcon; - private Drawable mLogo; - - private HomeView mHomeLayout; - private HomeView mExpandedHomeLayout; - private LinearLayout mTitleLayout; - private TextView mTitleView; - private TextView mSubtitleView; - private View mTitleUpView; - - private IcsSpinner mSpinner; - private IcsLinearLayout mListNavLayout; - private ScrollingTabContainerView mTabScrollView; - private View mCustomNavView; - private IcsProgressBar mProgressView; - private IcsProgressBar mIndeterminateProgressView; - - private int mProgressBarPadding; - private int mItemPadding; - - private int mTitleStyleRes; - private int mSubtitleStyleRes; - private int mProgressStyle; - private int mIndeterminateProgressStyle; - - private boolean mUserTitle; - private boolean mIncludeTabs; - private boolean mIsCollapsable; - private boolean mIsCollapsed; - - private MenuBuilder mOptionsMenu; - - private ActionBarContextView mContextView; - - private ActionMenuItem mLogoNavItem; - - private SpinnerAdapter mSpinnerAdapter; - private OnNavigationListener mCallback; - - //UNUSED private Runnable mTabSelector; - - private ExpandedActionViewMenuPresenter mExpandedMenuPresenter; - View mExpandedActionView; - - Window.Callback mWindowCallback; - - @SuppressWarnings("rawtypes") - private final IcsAdapterView.OnItemSelectedListener mNavItemSelectedListener = - new IcsAdapterView.OnItemSelectedListener() { - public void onItemSelected(IcsAdapterView parent, View view, int position, long id) { - if (mCallback != null) { - mCallback.onNavigationItemSelected(position, id); - } - } - public void onNothingSelected(IcsAdapterView parent) { - // Do nothing - } - }; - - private final OnClickListener mExpandedActionViewUpListener = new OnClickListener() { - @Override - public void onClick(View v) { - final MenuItemImpl item = mExpandedMenuPresenter.mCurrentExpandedItem; - if (item != null) { - item.collapseActionView(); - } - } - }; - - private final OnClickListener mUpClickListener = new OnClickListener() { - public void onClick(View v) { - mWindowCallback.onMenuItemSelected(Window.FEATURE_OPTIONS_PANEL, mLogoNavItem); - } - }; - - public ActionBarView(Context context, AttributeSet attrs) { - super(context, attrs); - - // Background is always provided by the container. - setBackgroundResource(0); - - TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SherlockActionBar, - R.attr.actionBarStyle, 0); - - ApplicationInfo appInfo = context.getApplicationInfo(); - PackageManager pm = context.getPackageManager(); - mNavigationMode = a.getInt(R.styleable.SherlockActionBar_navigationMode, - ActionBar.NAVIGATION_MODE_STANDARD); - mTitle = a.getText(R.styleable.SherlockActionBar_title); - mSubtitle = a.getText(R.styleable.SherlockActionBar_subtitle); - - mLogo = a.getDrawable(R.styleable.SherlockActionBar_logo); - if (mLogo == null) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { - if (context instanceof Activity) { - //Even though native methods existed in API 9 and 10 they don't work - //so just parse the manifest to look for the logo pre-Honeycomb - final int resId = loadLogoFromManifest((Activity) context); - if (resId != 0) { - mLogo = context.getResources().getDrawable(resId); - } - } - } else { - if (context instanceof Activity) { - try { - mLogo = pm.getActivityLogo(((Activity) context).getComponentName()); - } catch (NameNotFoundException e) { - Log.e(TAG, "Activity component name not found!", e); - } - } - if (mLogo == null) { - mLogo = appInfo.loadLogo(pm); - } - } - } - - mIcon = a.getDrawable(R.styleable.SherlockActionBar_icon); - if (mIcon == null) { - if (context instanceof Activity) { - try { - mIcon = pm.getActivityIcon(((Activity) context).getComponentName()); - } catch (NameNotFoundException e) { - Log.e(TAG, "Activity component name not found!", e); - } - } - if (mIcon == null) { - mIcon = appInfo.loadIcon(pm); - } - } - - final LayoutInflater inflater = LayoutInflater.from(context); - - final int homeResId = a.getResourceId( - R.styleable.SherlockActionBar_homeLayout, - R.layout.abs__action_bar_home); - - mHomeLayout = (HomeView) inflater.inflate(homeResId, this, false); - - mExpandedHomeLayout = (HomeView) inflater.inflate(homeResId, this, false); - mExpandedHomeLayout.setUp(true); - mExpandedHomeLayout.setOnClickListener(mExpandedActionViewUpListener); - mExpandedHomeLayout.setContentDescription(getResources().getText( - R.string.abs__action_bar_up_description)); - - mTitleStyleRes = a.getResourceId(R.styleable.SherlockActionBar_titleTextStyle, 0); - mSubtitleStyleRes = a.getResourceId(R.styleable.SherlockActionBar_subtitleTextStyle, 0); - mProgressStyle = a.getResourceId(R.styleable.SherlockActionBar_progressBarStyle, 0); - mIndeterminateProgressStyle = a.getResourceId( - R.styleable.SherlockActionBar_indeterminateProgressStyle, 0); - - mProgressBarPadding = a.getDimensionPixelOffset(R.styleable.SherlockActionBar_progressBarPadding, 0); - mItemPadding = a.getDimensionPixelOffset(R.styleable.SherlockActionBar_itemPadding, 0); - - setDisplayOptions(a.getInt(R.styleable.SherlockActionBar_displayOptions, DISPLAY_DEFAULT)); - - final int customNavId = a.getResourceId(R.styleable.SherlockActionBar_customNavigationLayout, 0); - if (customNavId != 0) { - mCustomNavView = inflater.inflate(customNavId, this, false); - mNavigationMode = ActionBar.NAVIGATION_MODE_STANDARD; - setDisplayOptions(mDisplayOptions | ActionBar.DISPLAY_SHOW_CUSTOM); - } - - mContentHeight = a.getLayoutDimension(R.styleable.SherlockActionBar_height, 0); - - a.recycle(); - - mLogoNavItem = new ActionMenuItem(context, 0, android.R.id.home, 0, 0, mTitle); - mHomeLayout.setOnClickListener(mUpClickListener); - mHomeLayout.setClickable(true); - mHomeLayout.setFocusable(true); - } - - /** - * Attempt to programmatically load the logo from the manifest file of an - * activity by using an XML pull parser. This should allow us to read the - * logo attribute regardless of the platform it is being run on. - * - * @param activity Activity instance. - * @return Logo resource ID. - */ - private static int loadLogoFromManifest(Activity activity) { - int logo = 0; - try { - final String thisPackage = activity.getClass().getName(); - if (DEBUG) Log.i(TAG, "Parsing AndroidManifest.xml for " + thisPackage); - - final String packageName = activity.getApplicationInfo().packageName; - final AssetManager am = activity.createPackageContext(packageName, 0).getAssets(); - final XmlResourceParser xml = am.openXmlResourceParser("AndroidManifest.xml"); - - int eventType = xml.getEventType(); - while (eventType != XmlPullParser.END_DOCUMENT) { - if (eventType == XmlPullParser.START_TAG) { - String name = xml.getName(); - - if ("application".equals(name)) { - //Check if the has the attribute - if (DEBUG) Log.d(TAG, "Got "); - - for (int i = xml.getAttributeCount() - 1; i >= 0; i--) { - if (DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i)); - - if ("logo".equals(xml.getAttributeName(i))) { - logo = xml.getAttributeResourceValue(i, 0); - break; //out of for loop - } - } - } else if ("activity".equals(name)) { - //Check if the is us and has the attribute - if (DEBUG) Log.d(TAG, "Got "); - Integer activityLogo = null; - String activityPackage = null; - boolean isOurActivity = false; - - for (int i = xml.getAttributeCount() - 1; i >= 0; i--) { - if (DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i)); - - //We need both uiOptions and name attributes - String attrName = xml.getAttributeName(i); - if ("logo".equals(attrName)) { - activityLogo = xml.getAttributeResourceValue(i, 0); - } else if ("name".equals(attrName)) { - activityPackage = ActionBarSherlockCompat.cleanActivityName(packageName, xml.getAttributeValue(i)); - if (!thisPackage.equals(activityPackage)) { - break; //on to the next - } - isOurActivity = true; - } - - //Make sure we have both attributes before processing - if ((activityLogo != null) && (activityPackage != null)) { - //Our activity, logo specified, override with our value - logo = activityLogo.intValue(); - } - } - if (isOurActivity) { - //If we matched our activity but it had no logo don't - //do any more processing of the manifest - break; - } - } - } - eventType = xml.nextToken(); - } - } catch (Exception e) { - e.printStackTrace(); - } - if (DEBUG) Log.i(TAG, "Returning " + Integer.toHexString(logo)); - return logo; - } - - /* - * Must be public so we can dispatch pre-2.2 via ActionBarImpl. - */ - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - - mTitleView = null; - mSubtitleView = null; - mTitleUpView = null; - if (mTitleLayout != null && mTitleLayout.getParent() == this) { - removeView(mTitleLayout); - } - mTitleLayout = null; - if ((mDisplayOptions & ActionBar.DISPLAY_SHOW_TITLE) != 0) { - initTitle(); - } - - if (mTabScrollView != null && mIncludeTabs) { - ViewGroup.LayoutParams lp = mTabScrollView.getLayoutParams(); - if (lp != null) { - lp.width = LayoutParams.WRAP_CONTENT; - lp.height = LayoutParams.MATCH_PARENT; - } - mTabScrollView.setAllowCollapse(true); - } - } - - /** - * Set the window callback used to invoke menu items; used for dispatching home button presses. - * @param cb Window callback to dispatch to - */ - public void setWindowCallback(Window.Callback cb) { - mWindowCallback = cb; - } - - @Override - public void onDetachedFromWindow() { - super.onDetachedFromWindow(); - //UNUSED removeCallbacks(mTabSelector); - if (mActionMenuPresenter != null) { - mActionMenuPresenter.hideOverflowMenu(); - mActionMenuPresenter.hideSubMenus(); - } - } - - @Override - public boolean shouldDelayChildPressedState() { - return false; - } - - public void initProgress() { - mProgressView = new IcsProgressBar(mContext, null, 0, mProgressStyle); - mProgressView.setId(R.id.abs__progress_horizontal); - mProgressView.setMax(10000); - addView(mProgressView); - } - - public void initIndeterminateProgress() { - mIndeterminateProgressView = new IcsProgressBar(mContext, null, 0, mIndeterminateProgressStyle); - mIndeterminateProgressView.setId(R.id.abs__progress_circular); - addView(mIndeterminateProgressView); - } - - @Override - public void setSplitActionBar(boolean splitActionBar) { - if (mSplitActionBar != splitActionBar) { - if (mMenuView != null) { - final ViewGroup oldParent = (ViewGroup) mMenuView.getParent(); - if (oldParent != null) { - oldParent.removeView(mMenuView); - } - if (splitActionBar) { - if (mSplitView != null) { - mSplitView.addView(mMenuView); - } - } else { - addView(mMenuView); - } - } - if (mSplitView != null) { - mSplitView.setVisibility(splitActionBar ? VISIBLE : GONE); - } - super.setSplitActionBar(splitActionBar); - } - } - - public boolean isSplitActionBar() { - return mSplitActionBar; - } - - public boolean hasEmbeddedTabs() { - return mIncludeTabs; - } - - public void setEmbeddedTabView(ScrollingTabContainerView tabs) { - if (mTabScrollView != null) { - removeView(mTabScrollView); - } - mTabScrollView = tabs; - mIncludeTabs = tabs != null; - if (mIncludeTabs && mNavigationMode == ActionBar.NAVIGATION_MODE_TABS) { - addView(mTabScrollView); - ViewGroup.LayoutParams lp = mTabScrollView.getLayoutParams(); - lp.width = LayoutParams.WRAP_CONTENT; - lp.height = LayoutParams.MATCH_PARENT; - tabs.setAllowCollapse(true); - } - } - - public void setCallback(OnNavigationListener callback) { - mCallback = callback; - } - - public void setMenu(Menu menu, MenuPresenter.Callback cb) { - if (menu == mOptionsMenu) return; - - if (mOptionsMenu != null) { - mOptionsMenu.removeMenuPresenter(mActionMenuPresenter); - mOptionsMenu.removeMenuPresenter(mExpandedMenuPresenter); - } - - MenuBuilder builder = (MenuBuilder) menu; - mOptionsMenu = builder; - if (mMenuView != null) { - final ViewGroup oldParent = (ViewGroup) mMenuView.getParent(); - if (oldParent != null) { - oldParent.removeView(mMenuView); - } - } - if (mActionMenuPresenter == null) { - mActionMenuPresenter = new ActionMenuPresenter(mContext); - mActionMenuPresenter.setCallback(cb); - mActionMenuPresenter.setId(R.id.abs__action_menu_presenter); - mExpandedMenuPresenter = new ExpandedActionViewMenuPresenter(); - } - - ActionMenuView menuView; - final LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, - LayoutParams.MATCH_PARENT); - if (!mSplitActionBar) { - mActionMenuPresenter.setExpandedActionViewsExclusive( - getResources_getBoolean(getContext(), - R.bool.abs__action_bar_expanded_action_views_exclusive)); - configPresenters(builder); - menuView = (ActionMenuView) mActionMenuPresenter.getMenuView(this); - final ViewGroup oldParent = (ViewGroup) menuView.getParent(); - if (oldParent != null && oldParent != this) { - oldParent.removeView(menuView); - } - addView(menuView, layoutParams); - } else { - mActionMenuPresenter.setExpandedActionViewsExclusive(false); - // Allow full screen width in split mode. - mActionMenuPresenter.setWidthLimit( - getContext().getResources().getDisplayMetrics().widthPixels, true); - // No limit to the item count; use whatever will fit. - mActionMenuPresenter.setItemLimit(Integer.MAX_VALUE); - // Span the whole width - layoutParams.width = LayoutParams.MATCH_PARENT; - configPresenters(builder); - menuView = (ActionMenuView) mActionMenuPresenter.getMenuView(this); - if (mSplitView != null) { - final ViewGroup oldParent = (ViewGroup) menuView.getParent(); - if (oldParent != null && oldParent != mSplitView) { - oldParent.removeView(menuView); - } - menuView.setVisibility(getAnimatedVisibility()); - mSplitView.addView(menuView, layoutParams); - } else { - // We'll add this later if we missed it this time. - menuView.setLayoutParams(layoutParams); - } - } - mMenuView = menuView; - } - - private void configPresenters(MenuBuilder builder) { - if (builder != null) { - builder.addMenuPresenter(mActionMenuPresenter); - builder.addMenuPresenter(mExpandedMenuPresenter); - } else { - mActionMenuPresenter.initForMenu(mContext, null); - mExpandedMenuPresenter.initForMenu(mContext, null); - mActionMenuPresenter.updateMenuView(true); - mExpandedMenuPresenter.updateMenuView(true); - } - } - - public boolean hasExpandedActionView() { - return mExpandedMenuPresenter != null && - mExpandedMenuPresenter.mCurrentExpandedItem != null; - } - - public void collapseActionView() { - final MenuItemImpl item = mExpandedMenuPresenter == null ? null : - mExpandedMenuPresenter.mCurrentExpandedItem; - if (item != null) { - item.collapseActionView(); - } - } - - public void setCustomNavigationView(View view) { - final boolean showCustom = (mDisplayOptions & ActionBar.DISPLAY_SHOW_CUSTOM) != 0; - if (mCustomNavView != null && showCustom) { - removeView(mCustomNavView); - } - mCustomNavView = view; - if (mCustomNavView != null && showCustom) { - addView(mCustomNavView); - } - } - - public CharSequence getTitle() { - return mTitle; - } - - /** - * Set the action bar title. This will always replace or override window titles. - * @param title Title to set - * - * @see #setWindowTitle(CharSequence) - */ - public void setTitle(CharSequence title) { - mUserTitle = true; - setTitleImpl(title); - } - - /** - * Set the window title. A window title will always be replaced or overridden by a user title. - * @param title Title to set - * - * @see #setTitle(CharSequence) - */ - public void setWindowTitle(CharSequence title) { - if (!mUserTitle) { - setTitleImpl(title); - } - } - - private void setTitleImpl(CharSequence title) { - mTitle = title; - if (mTitleView != null) { - mTitleView.setText(title); - final boolean visible = mExpandedActionView == null && - (mDisplayOptions & ActionBar.DISPLAY_SHOW_TITLE) != 0 && - (!TextUtils.isEmpty(mTitle) || !TextUtils.isEmpty(mSubtitle)); - mTitleLayout.setVisibility(visible ? VISIBLE : GONE); - } - if (mLogoNavItem != null) { - mLogoNavItem.setTitle(title); - } - } - - public CharSequence getSubtitle() { - return mSubtitle; - } - - public void setSubtitle(CharSequence subtitle) { - mSubtitle = subtitle; - if (mSubtitleView != null) { - mSubtitleView.setText(subtitle); - mSubtitleView.setVisibility(subtitle != null ? VISIBLE : GONE); - final boolean visible = mExpandedActionView == null && - (mDisplayOptions & ActionBar.DISPLAY_SHOW_TITLE) != 0 && - (!TextUtils.isEmpty(mTitle) || !TextUtils.isEmpty(mSubtitle)); - mTitleLayout.setVisibility(visible ? VISIBLE : GONE); - } - } - - public void setHomeButtonEnabled(boolean enable) { - mHomeLayout.setEnabled(enable); - mHomeLayout.setFocusable(enable); - // Make sure the home button has an accurate content description for accessibility. - if (!enable) { - mHomeLayout.setContentDescription(null); - } else if ((mDisplayOptions & ActionBar.DISPLAY_HOME_AS_UP) != 0) { - mHomeLayout.setContentDescription(mContext.getResources().getText( - R.string.abs__action_bar_up_description)); - } else { - mHomeLayout.setContentDescription(mContext.getResources().getText( - R.string.abs__action_bar_home_description)); - } - } - - public void setDisplayOptions(int options) { - final int flagsChanged = mDisplayOptions == -1 ? -1 : options ^ mDisplayOptions; - mDisplayOptions = options; - - if ((flagsChanged & DISPLAY_RELAYOUT_MASK) != 0) { - final boolean showHome = (options & ActionBar.DISPLAY_SHOW_HOME) != 0; - final int vis = showHome && mExpandedActionView == null ? VISIBLE : GONE; - mHomeLayout.setVisibility(vis); - - if ((flagsChanged & ActionBar.DISPLAY_HOME_AS_UP) != 0) { - final boolean setUp = (options & ActionBar.DISPLAY_HOME_AS_UP) != 0; - mHomeLayout.setUp(setUp); - - // Showing home as up implicitly enables interaction with it. - // In honeycomb it was always enabled, so make this transition - // a bit easier for developers in the common case. - // (It would be silly to show it as up without responding to it.) - if (setUp) { - setHomeButtonEnabled(true); - } - } - - if ((flagsChanged & ActionBar.DISPLAY_USE_LOGO) != 0) { - final boolean logoVis = mLogo != null && (options & ActionBar.DISPLAY_USE_LOGO) != 0; - mHomeLayout.setIcon(logoVis ? mLogo : mIcon); - } - - if ((flagsChanged & ActionBar.DISPLAY_SHOW_TITLE) != 0) { - if ((options & ActionBar.DISPLAY_SHOW_TITLE) != 0) { - initTitle(); - } else { - removeView(mTitleLayout); - } - } - - if (mTitleLayout != null && (flagsChanged & - (ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_HOME)) != 0) { - final boolean homeAsUp = (mDisplayOptions & ActionBar.DISPLAY_HOME_AS_UP) != 0; - mTitleUpView.setVisibility(!showHome ? (homeAsUp ? VISIBLE : INVISIBLE) : GONE); - mTitleLayout.setEnabled(!showHome && homeAsUp); - } - - if ((flagsChanged & ActionBar.DISPLAY_SHOW_CUSTOM) != 0 && mCustomNavView != null) { - if ((options & ActionBar.DISPLAY_SHOW_CUSTOM) != 0) { - addView(mCustomNavView); - } else { - removeView(mCustomNavView); - } - } - - requestLayout(); - } else { - invalidate(); - } - - // Make sure the home button has an accurate content description for accessibility. - if (!mHomeLayout.isEnabled()) { - mHomeLayout.setContentDescription(null); - } else if ((options & ActionBar.DISPLAY_HOME_AS_UP) != 0) { - mHomeLayout.setContentDescription(mContext.getResources().getText( - R.string.abs__action_bar_up_description)); - } else { - mHomeLayout.setContentDescription(mContext.getResources().getText( - R.string.abs__action_bar_home_description)); - } - } - - public void setIcon(Drawable icon) { - mIcon = icon; - if (icon != null && - ((mDisplayOptions & ActionBar.DISPLAY_USE_LOGO) == 0 || mLogo == null)) { - mHomeLayout.setIcon(icon); - } - } - - public void setIcon(int resId) { - setIcon(mContext.getResources().getDrawable(resId)); - } - - public void setLogo(Drawable logo) { - mLogo = logo; - if (logo != null && (mDisplayOptions & ActionBar.DISPLAY_USE_LOGO) != 0) { - mHomeLayout.setIcon(logo); - } - } - - public void setLogo(int resId) { - setLogo(mContext.getResources().getDrawable(resId)); - } - - public void setNavigationMode(int mode) { - final int oldMode = mNavigationMode; - if (mode != oldMode) { - switch (oldMode) { - case ActionBar.NAVIGATION_MODE_LIST: - if (mListNavLayout != null) { - removeView(mListNavLayout); - } - break; - case ActionBar.NAVIGATION_MODE_TABS: - if (mTabScrollView != null && mIncludeTabs) { - removeView(mTabScrollView); - } - } - - switch (mode) { - case ActionBar.NAVIGATION_MODE_LIST: - if (mSpinner == null) { - mSpinner = new IcsSpinner(mContext, null, - R.attr.actionDropDownStyle); - mListNavLayout = (IcsLinearLayout) LayoutInflater.from(mContext) - .inflate(R.layout.abs__action_bar_tab_bar_view, null); - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( - LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); - params.gravity = Gravity.CENTER; - mListNavLayout.addView(mSpinner, params); - } - if (mSpinner.getAdapter() != mSpinnerAdapter) { - mSpinner.setAdapter(mSpinnerAdapter); - } - mSpinner.setOnItemSelectedListener(mNavItemSelectedListener); - addView(mListNavLayout); - break; - case ActionBar.NAVIGATION_MODE_TABS: - if (mTabScrollView != null && mIncludeTabs) { - addView(mTabScrollView); - } - break; - } - mNavigationMode = mode; - requestLayout(); - } - } - - public void setDropdownAdapter(SpinnerAdapter adapter) { - mSpinnerAdapter = adapter; - if (mSpinner != null) { - mSpinner.setAdapter(adapter); - } - } - - public SpinnerAdapter getDropdownAdapter() { - return mSpinnerAdapter; - } - - public void setDropdownSelectedPosition(int position) { - mSpinner.setSelection(position); - } - - public int getDropdownSelectedPosition() { - return mSpinner.getSelectedItemPosition(); - } - - public View getCustomNavigationView() { - return mCustomNavView; - } - - public int getNavigationMode() { - return mNavigationMode; - } - - public int getDisplayOptions() { - return mDisplayOptions; - } - - @Override - protected ViewGroup.LayoutParams generateDefaultLayoutParams() { - // Used by custom nav views if they don't supply layout params. Everything else - // added to an ActionBarView should have them already. - return new ActionBar.LayoutParams(DEFAULT_CUSTOM_GRAVITY); - } - - @Override - protected void onFinishInflate() { - super.onFinishInflate(); - - addView(mHomeLayout); - - if (mCustomNavView != null && (mDisplayOptions & ActionBar.DISPLAY_SHOW_CUSTOM) != 0) { - final ViewParent parent = mCustomNavView.getParent(); - if (parent != this) { - if (parent instanceof ViewGroup) { - ((ViewGroup) parent).removeView(mCustomNavView); - } - addView(mCustomNavView); - } - } - } - - private void initTitle() { - if (mTitleLayout == null) { - LayoutInflater inflater = LayoutInflater.from(getContext()); - mTitleLayout = (LinearLayout) inflater.inflate(R.layout.abs__action_bar_title_item, - this, false); - mTitleView = (TextView) mTitleLayout.findViewById(R.id.abs__action_bar_title); - mSubtitleView = (TextView) mTitleLayout.findViewById(R.id.abs__action_bar_subtitle); - mTitleUpView = mTitleLayout.findViewById(R.id.abs__up); - - mTitleLayout.setOnClickListener(mUpClickListener); - - if (mTitleStyleRes != 0) { - mTitleView.setTextAppearance(mContext, mTitleStyleRes); - } - if (mTitle != null) { - mTitleView.setText(mTitle); - } - - if (mSubtitleStyleRes != 0) { - mSubtitleView.setTextAppearance(mContext, mSubtitleStyleRes); - } - if (mSubtitle != null) { - mSubtitleView.setText(mSubtitle); - mSubtitleView.setVisibility(VISIBLE); - } - - final boolean homeAsUp = (mDisplayOptions & ActionBar.DISPLAY_HOME_AS_UP) != 0; - final boolean showHome = (mDisplayOptions & ActionBar.DISPLAY_SHOW_HOME) != 0; - mTitleUpView.setVisibility(!showHome ? (homeAsUp ? VISIBLE : INVISIBLE) : GONE); - mTitleLayout.setEnabled(homeAsUp && !showHome); - } - - addView(mTitleLayout); - if (mExpandedActionView != null || - (TextUtils.isEmpty(mTitle) && TextUtils.isEmpty(mSubtitle))) { - // Don't show while in expanded mode or with empty text - mTitleLayout.setVisibility(GONE); - } - } - - public void setContextView(ActionBarContextView view) { - mContextView = view; - } - - public void setCollapsable(boolean collapsable) { - mIsCollapsable = collapsable; - } - - public boolean isCollapsed() { - return mIsCollapsed; - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - final int childCount = getChildCount(); - if (mIsCollapsable) { - int visibleChildren = 0; - for (int i = 0; i < childCount; i++) { - final View child = getChildAt(i); - if (child.getVisibility() != GONE && - !(child == mMenuView && mMenuView.getChildCount() == 0)) { - visibleChildren++; - } - } - - if (visibleChildren == 0) { - // No size for an empty action bar when collapsable. - setMeasuredDimension(0, 0); - mIsCollapsed = true; - return; - } - } - mIsCollapsed = false; - - int widthMode = MeasureSpec.getMode(widthMeasureSpec); - if (widthMode != MeasureSpec.EXACTLY) { - throw new IllegalStateException(getClass().getSimpleName() + " can only be used " + - "with android:layout_width=\"match_parent\" (or fill_parent)"); - } - - int heightMode = MeasureSpec.getMode(heightMeasureSpec); - if (heightMode != MeasureSpec.AT_MOST) { - throw new IllegalStateException(getClass().getSimpleName() + " can only be used " + - "with android:layout_height=\"wrap_content\""); - } - - int contentWidth = MeasureSpec.getSize(widthMeasureSpec); - - int maxHeight = mContentHeight > 0 ? - mContentHeight : MeasureSpec.getSize(heightMeasureSpec); - - final int verticalPadding = getPaddingTop() + getPaddingBottom(); - final int paddingLeft = getPaddingLeft(); - final int paddingRight = getPaddingRight(); - final int height = maxHeight - verticalPadding; - final int childSpecHeight = MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST); - - int availableWidth = contentWidth - paddingLeft - paddingRight; - int leftOfCenter = availableWidth / 2; - int rightOfCenter = leftOfCenter; - - HomeView homeLayout = mExpandedActionView != null ? mExpandedHomeLayout : mHomeLayout; - - if (homeLayout.getVisibility() != GONE) { - final ViewGroup.LayoutParams lp = homeLayout.getLayoutParams(); - int homeWidthSpec; - if (lp.width < 0) { - homeWidthSpec = MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST); - } else { - homeWidthSpec = MeasureSpec.makeMeasureSpec(lp.width, MeasureSpec.EXACTLY); - } - homeLayout.measure(homeWidthSpec, - MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); - final int homeWidth = homeLayout.getMeasuredWidth() + homeLayout.getLeftOffset(); - availableWidth = Math.max(0, availableWidth - homeWidth); - leftOfCenter = Math.max(0, availableWidth - homeWidth); - } - - if (mMenuView != null && mMenuView.getParent() == this) { - availableWidth = measureChildView(mMenuView, availableWidth, - childSpecHeight, 0); - rightOfCenter = Math.max(0, rightOfCenter - mMenuView.getMeasuredWidth()); - } - - if (mIndeterminateProgressView != null && - mIndeterminateProgressView.getVisibility() != GONE) { - availableWidth = measureChildView(mIndeterminateProgressView, availableWidth, - childSpecHeight, 0); - rightOfCenter = Math.max(0, - rightOfCenter - mIndeterminateProgressView.getMeasuredWidth()); - } - - final boolean showTitle = mTitleLayout != null && mTitleLayout.getVisibility() != GONE && - (mDisplayOptions & ActionBar.DISPLAY_SHOW_TITLE) != 0; - - if (mExpandedActionView == null) { - switch (mNavigationMode) { - case ActionBar.NAVIGATION_MODE_LIST: - if (mListNavLayout != null) { - final int itemPaddingSize = showTitle ? mItemPadding * 2 : mItemPadding; - availableWidth = Math.max(0, availableWidth - itemPaddingSize); - leftOfCenter = Math.max(0, leftOfCenter - itemPaddingSize); - mListNavLayout.measure( - MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST), - MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); - final int listNavWidth = mListNavLayout.getMeasuredWidth(); - availableWidth = Math.max(0, availableWidth - listNavWidth); - leftOfCenter = Math.max(0, leftOfCenter - listNavWidth); - } - break; - case ActionBar.NAVIGATION_MODE_TABS: - if (mTabScrollView != null) { - final int itemPaddingSize = showTitle ? mItemPadding * 2 : mItemPadding; - availableWidth = Math.max(0, availableWidth - itemPaddingSize); - leftOfCenter = Math.max(0, leftOfCenter - itemPaddingSize); - mTabScrollView.measure( - MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST), - MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); - final int tabWidth = mTabScrollView.getMeasuredWidth(); - availableWidth = Math.max(0, availableWidth - tabWidth); - leftOfCenter = Math.max(0, leftOfCenter - tabWidth); - } - break; - } - } - - View customView = null; - if (mExpandedActionView != null) { - customView = mExpandedActionView; - } else if ((mDisplayOptions & ActionBar.DISPLAY_SHOW_CUSTOM) != 0 && - mCustomNavView != null) { - customView = mCustomNavView; - } - - if (customView != null) { - final ViewGroup.LayoutParams lp = generateLayoutParams(customView.getLayoutParams()); - final ActionBar.LayoutParams ablp = lp instanceof ActionBar.LayoutParams ? - (ActionBar.LayoutParams) lp : null; - - int horizontalMargin = 0; - int verticalMargin = 0; - if (ablp != null) { - horizontalMargin = ablp.leftMargin + ablp.rightMargin; - verticalMargin = ablp.topMargin + ablp.bottomMargin; - } - - // If the action bar is wrapping to its content height, don't allow a custom - // view to MATCH_PARENT. - int customNavHeightMode; - if (mContentHeight <= 0) { - customNavHeightMode = MeasureSpec.AT_MOST; - } else { - customNavHeightMode = lp.height != LayoutParams.WRAP_CONTENT ? - MeasureSpec.EXACTLY : MeasureSpec.AT_MOST; - } - final int customNavHeight = Math.max(0, - (lp.height >= 0 ? Math.min(lp.height, height) : height) - verticalMargin); - - final int customNavWidthMode = lp.width != LayoutParams.WRAP_CONTENT ? - MeasureSpec.EXACTLY : MeasureSpec.AT_MOST; - int customNavWidth = Math.max(0, - (lp.width >= 0 ? Math.min(lp.width, availableWidth) : availableWidth) - - horizontalMargin); - final int hgrav = (ablp != null ? ablp.gravity : DEFAULT_CUSTOM_GRAVITY) & - Gravity.HORIZONTAL_GRAVITY_MASK; - - // Centering a custom view is treated specially; we try to center within the whole - // action bar rather than in the available space. - if (hgrav == Gravity.CENTER_HORIZONTAL && lp.width == LayoutParams.MATCH_PARENT) { - customNavWidth = Math.min(leftOfCenter, rightOfCenter) * 2; - } - - customView.measure( - MeasureSpec.makeMeasureSpec(customNavWidth, customNavWidthMode), - MeasureSpec.makeMeasureSpec(customNavHeight, customNavHeightMode)); - availableWidth -= horizontalMargin + customView.getMeasuredWidth(); - } - - if (mExpandedActionView == null && showTitle) { - availableWidth = measureChildView(mTitleLayout, availableWidth, - MeasureSpec.makeMeasureSpec(mContentHeight, MeasureSpec.EXACTLY), 0); - leftOfCenter = Math.max(0, leftOfCenter - mTitleLayout.getMeasuredWidth()); - } - - if (mContentHeight <= 0) { - int measuredHeight = 0; - for (int i = 0; i < childCount; i++) { - View v = getChildAt(i); - int paddedViewHeight = v.getMeasuredHeight() + verticalPadding; - if (paddedViewHeight > measuredHeight) { - measuredHeight = paddedViewHeight; - } - } - setMeasuredDimension(contentWidth, measuredHeight); - } else { - setMeasuredDimension(contentWidth, maxHeight); - } - - if (mContextView != null) { - mContextView.setContentHeight(getMeasuredHeight()); - } - - if (mProgressView != null && mProgressView.getVisibility() != GONE) { - mProgressView.measure(MeasureSpec.makeMeasureSpec( - contentWidth - mProgressBarPadding * 2, MeasureSpec.EXACTLY), - MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.AT_MOST)); - } - } - - @Override - protected void onLayout(boolean changed, int l, int t, int r, int b) { - int x = getPaddingLeft(); - final int y = getPaddingTop(); - final int contentHeight = b - t - getPaddingTop() - getPaddingBottom(); - - if (contentHeight <= 0) { - // Nothing to do if we can't see anything. - return; - } - - HomeView homeLayout = mExpandedActionView != null ? mExpandedHomeLayout : mHomeLayout; - if (homeLayout.getVisibility() != GONE) { - final int leftOffset = homeLayout.getLeftOffset(); - x += positionChild(homeLayout, x + leftOffset, y, contentHeight) + leftOffset; - } - - if (mExpandedActionView == null) { - final boolean showTitle = mTitleLayout != null && mTitleLayout.getVisibility() != GONE && - (mDisplayOptions & ActionBar.DISPLAY_SHOW_TITLE) != 0; - if (showTitle) { - x += positionChild(mTitleLayout, x, y, contentHeight); - } - - switch (mNavigationMode) { - case ActionBar.NAVIGATION_MODE_STANDARD: - break; - case ActionBar.NAVIGATION_MODE_LIST: - if (mListNavLayout != null) { - if (showTitle) x += mItemPadding; - x += positionChild(mListNavLayout, x, y, contentHeight) + mItemPadding; - } - break; - case ActionBar.NAVIGATION_MODE_TABS: - if (mTabScrollView != null) { - if (showTitle) x += mItemPadding; - x += positionChild(mTabScrollView, x, y, contentHeight) + mItemPadding; - } - break; - } - } - - int menuLeft = r - l - getPaddingRight(); - if (mMenuView != null && mMenuView.getParent() == this) { - positionChildInverse(mMenuView, menuLeft, y, contentHeight); - menuLeft -= mMenuView.getMeasuredWidth(); - } - - if (mIndeterminateProgressView != null && - mIndeterminateProgressView.getVisibility() != GONE) { - positionChildInverse(mIndeterminateProgressView, menuLeft, y, contentHeight); - menuLeft -= mIndeterminateProgressView.getMeasuredWidth(); - } - - View customView = null; - if (mExpandedActionView != null) { - customView = mExpandedActionView; - } else if ((mDisplayOptions & ActionBar.DISPLAY_SHOW_CUSTOM) != 0 && - mCustomNavView != null) { - customView = mCustomNavView; - } - if (customView != null) { - ViewGroup.LayoutParams lp = customView.getLayoutParams(); - final ActionBar.LayoutParams ablp = lp instanceof ActionBar.LayoutParams ? - (ActionBar.LayoutParams) lp : null; - - final int gravity = ablp != null ? ablp.gravity : DEFAULT_CUSTOM_GRAVITY; - final int navWidth = customView.getMeasuredWidth(); - - int topMargin = 0; - int bottomMargin = 0; - if (ablp != null) { - x += ablp.leftMargin; - menuLeft -= ablp.rightMargin; - topMargin = ablp.topMargin; - bottomMargin = ablp.bottomMargin; - } - - int hgravity = gravity & Gravity.HORIZONTAL_GRAVITY_MASK; - // See if we actually have room to truly center; if not push against left or right. - if (hgravity == Gravity.CENTER_HORIZONTAL) { - final int centeredLeft = ((getRight() - getLeft()) - navWidth) / 2; - if (centeredLeft < x) { - hgravity = Gravity.LEFT; - } else if (centeredLeft + navWidth > menuLeft) { - hgravity = Gravity.RIGHT; - } - } else if (gravity == -1) { - hgravity = Gravity.LEFT; - } - - int xpos = 0; - switch (hgravity) { - case Gravity.CENTER_HORIZONTAL: - xpos = ((getRight() - getLeft()) - navWidth) / 2; - break; - case Gravity.LEFT: - xpos = x; - break; - case Gravity.RIGHT: - xpos = menuLeft - navWidth; - break; - } - - int vgravity = gravity & Gravity.VERTICAL_GRAVITY_MASK; - - if (gravity == -1) { - vgravity = Gravity.CENTER_VERTICAL; - } - - int ypos = 0; - switch (vgravity) { - case Gravity.CENTER_VERTICAL: - final int paddedTop = getPaddingTop(); - final int paddedBottom = getBottom() - getTop() - getPaddingBottom(); - ypos = ((paddedBottom - paddedTop) - customView.getMeasuredHeight()) / 2; - break; - case Gravity.TOP: - ypos = getPaddingTop() + topMargin; - break; - case Gravity.BOTTOM: - ypos = getHeight() - getPaddingBottom() - customView.getMeasuredHeight() - - bottomMargin; - break; - } - final int customWidth = customView.getMeasuredWidth(); - customView.layout(xpos, ypos, xpos + customWidth, - ypos + customView.getMeasuredHeight()); - x += customWidth; - } - - if (mProgressView != null) { - mProgressView.bringToFront(); - final int halfProgressHeight = mProgressView.getMeasuredHeight() / 2; - mProgressView.layout(mProgressBarPadding, -halfProgressHeight, - mProgressBarPadding + mProgressView.getMeasuredWidth(), halfProgressHeight); - } - } - - @Override - public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs) { - return new ActionBar.LayoutParams(getContext(), attrs); - } - - @Override - public ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) { - if (lp == null) { - lp = generateDefaultLayoutParams(); - } - return lp; - } - - @Override - public Parcelable onSaveInstanceState() { - Parcelable superState = super.onSaveInstanceState(); - SavedState state = new SavedState(superState); - - if (mExpandedMenuPresenter != null && mExpandedMenuPresenter.mCurrentExpandedItem != null) { - state.expandedMenuItemId = mExpandedMenuPresenter.mCurrentExpandedItem.getItemId(); - } - - state.isOverflowOpen = isOverflowMenuShowing(); - - return state; - } - - @Override - public void onRestoreInstanceState(Parcelable p) { - SavedState state = (SavedState) p; - - super.onRestoreInstanceState(state.getSuperState()); - - if (state.expandedMenuItemId != 0 && - mExpandedMenuPresenter != null && mOptionsMenu != null) { - final MenuItem item = mOptionsMenu.findItem(state.expandedMenuItemId); - if (item != null) { - item.expandActionView(); - } - } - - if (state.isOverflowOpen) { - postShowOverflowMenu(); - } - } - - static class SavedState extends BaseSavedState { - int expandedMenuItemId; - boolean isOverflowOpen; - - SavedState(Parcelable superState) { - super(superState); - } - - private SavedState(Parcel in) { - super(in); - expandedMenuItemId = in.readInt(); - isOverflowOpen = in.readInt() != 0; - } - - @Override - public void writeToParcel(Parcel out, int flags) { - super.writeToParcel(out, flags); - out.writeInt(expandedMenuItemId); - out.writeInt(isOverflowOpen ? 1 : 0); - } - - public static final Parcelable.Creator CREATOR = - new Parcelable.Creator() { - public SavedState createFromParcel(Parcel in) { - return new SavedState(in); - } - - public SavedState[] newArray(int size) { - return new SavedState[size]; - } - }; - } - - public static class HomeView extends FrameLayout { - private View mUpView; - private ImageView mIconView; - private int mUpWidth; - - public HomeView(Context context) { - this(context, null); - } - - public HomeView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public void setUp(boolean isUp) { - mUpView.setVisibility(isUp ? VISIBLE : GONE); - } - - public void setIcon(Drawable icon) { - mIconView.setImageDrawable(icon); - } - - @Override - public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { - onPopulateAccessibilityEvent(event); - return true; - } - - @Override - public void onPopulateAccessibilityEvent(AccessibilityEvent event) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { - super.onPopulateAccessibilityEvent(event); - } - final CharSequence cdesc = getContentDescription(); - if (!TextUtils.isEmpty(cdesc)) { - event.getText().add(cdesc); - } - } - - @Override - public boolean dispatchHoverEvent(MotionEvent event) { - // Don't allow children to hover; we want this to be treated as a single component. - return onHoverEvent(event); - } - - @Override - protected void onFinishInflate() { - mUpView = findViewById(R.id.abs__up); - mIconView = (ImageView) findViewById(R.id.abs__home); - } - - public int getLeftOffset() { - return mUpView.getVisibility() == GONE ? mUpWidth : 0; - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - measureChildWithMargins(mUpView, widthMeasureSpec, 0, heightMeasureSpec, 0); - final LayoutParams upLp = (LayoutParams) mUpView.getLayoutParams(); - mUpWidth = upLp.leftMargin + mUpView.getMeasuredWidth() + upLp.rightMargin; - int width = mUpView.getVisibility() == GONE ? 0 : mUpWidth; - int height = upLp.topMargin + mUpView.getMeasuredHeight() + upLp.bottomMargin; - measureChildWithMargins(mIconView, widthMeasureSpec, width, heightMeasureSpec, 0); - final LayoutParams iconLp = (LayoutParams) mIconView.getLayoutParams(); - width += iconLp.leftMargin + mIconView.getMeasuredWidth() + iconLp.rightMargin; - height = Math.max(height, - iconLp.topMargin + mIconView.getMeasuredHeight() + iconLp.bottomMargin); - - final int widthMode = MeasureSpec.getMode(widthMeasureSpec); - final int heightMode = MeasureSpec.getMode(heightMeasureSpec); - final int widthSize = MeasureSpec.getSize(widthMeasureSpec); - final int heightSize = MeasureSpec.getSize(heightMeasureSpec); - - switch (widthMode) { - case MeasureSpec.AT_MOST: - width = Math.min(width, widthSize); - break; - case MeasureSpec.EXACTLY: - width = widthSize; - break; - case MeasureSpec.UNSPECIFIED: - default: - break; - } - switch (heightMode) { - case MeasureSpec.AT_MOST: - height = Math.min(height, heightSize); - break; - case MeasureSpec.EXACTLY: - height = heightSize; - break; - case MeasureSpec.UNSPECIFIED: - default: - break; - } - setMeasuredDimension(width, height); - } - - @Override - protected void onLayout(boolean changed, int l, int t, int r, int b) { - final int vCenter = (b - t) / 2; - //UNUSED int width = r - l; - int upOffset = 0; - if (mUpView.getVisibility() != GONE) { - final LayoutParams upLp = (LayoutParams) mUpView.getLayoutParams(); - final int upHeight = mUpView.getMeasuredHeight(); - final int upWidth = mUpView.getMeasuredWidth(); - final int upTop = vCenter - upHeight / 2; - mUpView.layout(0, upTop, upWidth, upTop + upHeight); - upOffset = upLp.leftMargin + upWidth + upLp.rightMargin; - //UNUSED width -= upOffset; - l += upOffset; - } - final LayoutParams iconLp = (LayoutParams) mIconView.getLayoutParams(); - final int iconHeight = mIconView.getMeasuredHeight(); - final int iconWidth = mIconView.getMeasuredWidth(); - final int hCenter = (r - l) / 2; - final int iconLeft = upOffset + Math.max(iconLp.leftMargin, hCenter - iconWidth / 2); - final int iconTop = Math.max(iconLp.topMargin, vCenter - iconHeight / 2); - mIconView.layout(iconLeft, iconTop, iconLeft + iconWidth, iconTop + iconHeight); - } - } - - private class ExpandedActionViewMenuPresenter implements MenuPresenter { - MenuBuilder mMenu; - MenuItemImpl mCurrentExpandedItem; - - @Override - public void initForMenu(Context context, MenuBuilder menu) { - // Clear the expanded action view when menus change. - if (mMenu != null && mCurrentExpandedItem != null) { - mMenu.collapseItemActionView(mCurrentExpandedItem); - } - mMenu = menu; - } - - @Override - public MenuView getMenuView(ViewGroup root) { - return null; - } - - @Override - public void updateMenuView(boolean cleared) { - // Make sure the expanded item we have is still there. - if (mCurrentExpandedItem != null) { - boolean found = false; - - if (mMenu != null) { - final int count = mMenu.size(); - for (int i = 0; i < count; i++) { - final MenuItem item = mMenu.getItem(i); - if (item == mCurrentExpandedItem) { - found = true; - break; - } - } - } - - if (!found) { - // The item we had expanded disappeared. Collapse. - collapseItemActionView(mMenu, mCurrentExpandedItem); - } - } - } - - @Override - public void setCallback(Callback cb) { - } - - @Override - public boolean onSubMenuSelected(SubMenuBuilder subMenu) { - return false; - } - - @Override - public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { - } - - @Override - public boolean flagActionItems() { - return false; - } - - @Override - public boolean expandItemActionView(MenuBuilder menu, MenuItemImpl item) { - mExpandedActionView = item.getActionView(); - mExpandedHomeLayout.setIcon(mIcon.getConstantState().newDrawable(/* TODO getResources() */)); - mCurrentExpandedItem = item; - if (mExpandedActionView.getParent() != ActionBarView.this) { - addView(mExpandedActionView); - } - if (mExpandedHomeLayout.getParent() != ActionBarView.this) { - addView(mExpandedHomeLayout); - } - mHomeLayout.setVisibility(GONE); - if (mTitleLayout != null) mTitleLayout.setVisibility(GONE); - if (mTabScrollView != null) mTabScrollView.setVisibility(GONE); - if (mSpinner != null) mSpinner.setVisibility(GONE); - if (mCustomNavView != null) mCustomNavView.setVisibility(GONE); - requestLayout(); - item.setActionViewExpanded(true); - - if (mExpandedActionView instanceof CollapsibleActionView) { - ((CollapsibleActionView) mExpandedActionView).onActionViewExpanded(); - } - - return true; - } - - @Override - public boolean collapseItemActionView(MenuBuilder menu, MenuItemImpl item) { - // Do this before detaching the actionview from the hierarchy, in case - // it needs to dismiss the soft keyboard, etc. - if (mExpandedActionView instanceof CollapsibleActionView) { - ((CollapsibleActionView) mExpandedActionView).onActionViewCollapsed(); - } - - removeView(mExpandedActionView); - removeView(mExpandedHomeLayout); - mExpandedActionView = null; - if ((mDisplayOptions & ActionBar.DISPLAY_SHOW_HOME) != 0) { - mHomeLayout.setVisibility(VISIBLE); - } - if ((mDisplayOptions & ActionBar.DISPLAY_SHOW_TITLE) != 0) { - if (mTitleLayout == null) { - initTitle(); - } else { - mTitleLayout.setVisibility(VISIBLE); - } - } - if (mTabScrollView != null && mNavigationMode == ActionBar.NAVIGATION_MODE_TABS) { - mTabScrollView.setVisibility(VISIBLE); - } - if (mSpinner != null && mNavigationMode == ActionBar.NAVIGATION_MODE_LIST) { - mSpinner.setVisibility(VISIBLE); - } - if (mCustomNavView != null && (mDisplayOptions & ActionBar.DISPLAY_SHOW_CUSTOM) != 0) { - mCustomNavView.setVisibility(VISIBLE); - } - mExpandedHomeLayout.setIcon(null); - mCurrentExpandedItem = null; - requestLayout(); - item.setActionViewExpanded(false); - - return true; - } - - @Override - public int getId() { - return 0; - } - - @Override - public Parcelable onSaveInstanceState() { - return null; - } - - @Override - public void onRestoreInstanceState(Parcelable state) { - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingButton.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingButton.java deleted file mode 100755 index fa3698f3b..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingButton.java +++ /dev/null @@ -1,40 +0,0 @@ -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.Button; - -public class CapitalizingButton extends Button { - 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; - - private static final int[] R_styleable_Button = new int[] { - android.R.attr.textAllCaps - }; - private static final int R_styleable_Button_textAllCaps = 0; - - private boolean mAllCaps; - - public CapitalizingButton(Context context, AttributeSet attrs) { - super(context, attrs); - - TypedArray a = context.obtainStyledAttributes(attrs, R_styleable_Button); - mAllCaps = a.getBoolean(R_styleable_Button_textAllCaps, true); - a.recycle(); - } - - public void setTextCompat(CharSequence text) { - if (SANS_ICE_CREAM && mAllCaps && text != null) { - if (IS_GINGERBREAD) { - setText(text.toString().toUpperCase(Locale.ROOT)); - } else { - setText(text.toString().toUpperCase()); - } - } else { - setText(text); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingTextView.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingTextView.java deleted file mode 100755 index 673ec554f..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingTextView.java +++ /dev/null @@ -1,44 +0,0 @@ -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; - -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; - - private static final int[] R_styleable_TextView = new int[] { - android.R.attr.textAllCaps - }; - private static final int R_styleable_TextView_textAllCaps = 0; - - private boolean mAllCaps; - - public CapitalizingTextView(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public CapitalizingTextView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - - TypedArray a = context.obtainStyledAttributes(attrs, R_styleable_TextView, defStyle, 0); - mAllCaps = a.getBoolean(R_styleable_TextView_textAllCaps, true); - a.recycle(); - } - - public void setTextCompat(CharSequence text) { - if (SANS_ICE_CREAM && mAllCaps && text != null) { - if (IS_GINGERBREAD) { - setText(text.toString().toUpperCase(Locale.ROOT)); - } else { - setText(text.toString().toUpperCase()); - } - } else { - setText(text); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/FakeDialogPhoneWindow.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/FakeDialogPhoneWindow.java deleted file mode 100755 index ad1b4f0a8..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/FakeDialogPhoneWindow.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.actionbarsherlock.internal.widget; - -import static android.view.View.MeasureSpec.EXACTLY; -import android.content.Context; -import android.content.res.TypedArray; -import android.util.AttributeSet; -import android.util.DisplayMetrics; -import android.util.TypedValue; -import android.widget.LinearLayout; -import com.actionbarsherlock.R; - -public class FakeDialogPhoneWindow extends LinearLayout { - final TypedValue mMinWidthMajor = new TypedValue(); - final TypedValue mMinWidthMinor = new TypedValue(); - - public FakeDialogPhoneWindow(Context context, AttributeSet attrs) { - super(context, attrs); - - TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SherlockTheme); - - a.getValue(R.styleable.SherlockTheme_windowMinWidthMajor, mMinWidthMajor); - a.getValue(R.styleable.SherlockTheme_windowMinWidthMinor, mMinWidthMinor); - - a.recycle(); - } - - /* Stolen from PhoneWindow */ - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - final DisplayMetrics metrics = getContext().getResources().getDisplayMetrics(); - final boolean isPortrait = metrics.widthPixels < metrics.heightPixels; - - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - - int width = getMeasuredWidth(); - boolean measure = false; - - widthMeasureSpec = MeasureSpec.makeMeasureSpec(width, EXACTLY); - - final TypedValue tv = isPortrait ? mMinWidthMinor : mMinWidthMajor; - - if (tv.type != TypedValue.TYPE_NULL) { - final int min; - if (tv.type == TypedValue.TYPE_DIMENSION) { - min = (int)tv.getDimension(metrics); - } else if (tv.type == TypedValue.TYPE_FRACTION) { - min = (int)tv.getFraction(metrics.widthPixels, metrics.widthPixels); - } else { - min = 0; - } - - if (width < min) { - widthMeasureSpec = MeasureSpec.makeMeasureSpec(min, EXACTLY); - measure = true; - } - } - - // TODO: Support height? - - if (measure) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsAbsSpinner.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsAbsSpinner.java deleted file mode 100755 index ce0cb3bca..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsAbsSpinner.java +++ /dev/null @@ -1,479 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.internal.widget; - -import android.content.Context; -import android.database.DataSetObserver; -import android.graphics.Rect; -import android.os.Build; -import android.os.Parcel; -import android.os.Parcelable; -import android.util.AttributeSet; -import android.util.SparseArray; -import android.view.View; -import android.view.ViewGroup; -import android.widget.SpinnerAdapter; - -/** - * An abstract base class for spinner widgets. SDK users will probably not - * need to use this class. - * - * @attr ref android.R.styleable#AbsSpinner_entries - */ -public abstract class IcsAbsSpinner extends IcsAdapterView { - private static final boolean IS_HONEYCOMB = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB; - - SpinnerAdapter mAdapter; - - int mHeightMeasureSpec; - int mWidthMeasureSpec; - boolean mBlockLayoutRequests; - - int mSelectionLeftPadding = 0; - int mSelectionTopPadding = 0; - int mSelectionRightPadding = 0; - int mSelectionBottomPadding = 0; - final Rect mSpinnerPadding = new Rect(); - - final RecycleBin mRecycler = new RecycleBin(); - private DataSetObserver mDataSetObserver; - - /** Temporary frame to hold a child View's frame rectangle */ - private Rect mTouchFrame; - - public IcsAbsSpinner(Context context) { - super(context); - initAbsSpinner(); - } - - public IcsAbsSpinner(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public IcsAbsSpinner(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - initAbsSpinner(); - - /* - TypedArray a = context.obtainStyledAttributes(attrs, - com.android.internal.R.styleable.AbsSpinner, defStyle, 0); - - CharSequence[] entries = a.getTextArray(R.styleable.AbsSpinner_entries); - if (entries != null) { - ArrayAdapter adapter = - new ArrayAdapter(context, - R.layout.simple_spinner_item, entries); - adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item); - setAdapter(adapter); - } - - a.recycle(); - */ - } - - /** - * Common code for different constructor flavors - */ - private void initAbsSpinner() { - setFocusable(true); - setWillNotDraw(false); - } - - /** - * The Adapter is used to provide the data which backs this Spinner. - * It also provides methods to transform spinner items based on their position - * relative to the selected item. - * @param adapter The SpinnerAdapter to use for this Spinner - */ - @Override - public void setAdapter(SpinnerAdapter adapter) { - if (null != mAdapter) { - mAdapter.unregisterDataSetObserver(mDataSetObserver); - resetList(); - } - - mAdapter = adapter; - - mOldSelectedPosition = INVALID_POSITION; - mOldSelectedRowId = INVALID_ROW_ID; - - if (mAdapter != null) { - mOldItemCount = mItemCount; - mItemCount = mAdapter.getCount(); - checkFocus(); - - mDataSetObserver = new AdapterDataSetObserver(); - mAdapter.registerDataSetObserver(mDataSetObserver); - - int position = mItemCount > 0 ? 0 : INVALID_POSITION; - - setSelectedPositionInt(position); - setNextSelectedPositionInt(position); - - if (mItemCount == 0) { - // Nothing selected - checkSelectionChanged(); - } - - } else { - checkFocus(); - resetList(); - // Nothing selected - checkSelectionChanged(); - } - - requestLayout(); - } - - /** - * Clear out all children from the list - */ - void resetList() { - mDataChanged = false; - mNeedSync = false; - - removeAllViewsInLayout(); - mOldSelectedPosition = INVALID_POSITION; - mOldSelectedRowId = INVALID_ROW_ID; - - setSelectedPositionInt(INVALID_POSITION); - setNextSelectedPositionInt(INVALID_POSITION); - invalidate(); - } - - /** - * @see android.view.View#measure(int, int) - * - * Figure out the dimensions of this Spinner. The width comes from - * the widthMeasureSpec as Spinnners can't have their width set to - * UNSPECIFIED. The height is based on the height of the selected item - * plus padding. - */ - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - int widthMode = MeasureSpec.getMode(widthMeasureSpec); - int widthSize; - int heightSize; - - final int mPaddingLeft = getPaddingLeft(); - final int mPaddingTop = getPaddingTop(); - final int mPaddingRight = getPaddingRight(); - final int mPaddingBottom = getPaddingBottom(); - - mSpinnerPadding.left = mPaddingLeft > mSelectionLeftPadding ? mPaddingLeft - : mSelectionLeftPadding; - mSpinnerPadding.top = mPaddingTop > mSelectionTopPadding ? mPaddingTop - : mSelectionTopPadding; - mSpinnerPadding.right = mPaddingRight > mSelectionRightPadding ? mPaddingRight - : mSelectionRightPadding; - mSpinnerPadding.bottom = mPaddingBottom > mSelectionBottomPadding ? mPaddingBottom - : mSelectionBottomPadding; - - if (mDataChanged) { - handleDataChanged(); - } - - int preferredHeight = 0; - int preferredWidth = 0; - boolean needsMeasuring = true; - - int selectedPosition = getSelectedItemPosition(); - if (selectedPosition >= 0 && mAdapter != null && selectedPosition < mAdapter.getCount()) { - // Try looking in the recycler. (Maybe we were measured once already) - View view = mRecycler.get(selectedPosition); - if (view == null) { - // Make a new one - view = mAdapter.getView(selectedPosition, null, this); - } - - if (view != null) { - // Put in recycler for re-measuring and/or layout - mRecycler.put(selectedPosition, view); - } - - if (view != null) { - if (view.getLayoutParams() == null) { - mBlockLayoutRequests = true; - view.setLayoutParams(generateDefaultLayoutParams()); - mBlockLayoutRequests = false; - } - measureChild(view, widthMeasureSpec, heightMeasureSpec); - - preferredHeight = getChildHeight(view) + mSpinnerPadding.top + mSpinnerPadding.bottom; - preferredWidth = getChildWidth(view) + mSpinnerPadding.left + mSpinnerPadding.right; - - needsMeasuring = false; - } - } - - if (needsMeasuring) { - // No views -- just use padding - preferredHeight = mSpinnerPadding.top + mSpinnerPadding.bottom; - if (widthMode == MeasureSpec.UNSPECIFIED) { - preferredWidth = mSpinnerPadding.left + mSpinnerPadding.right; - } - } - - preferredHeight = Math.max(preferredHeight, getSuggestedMinimumHeight()); - preferredWidth = Math.max(preferredWidth, getSuggestedMinimumWidth()); - - if (IS_HONEYCOMB) { - heightSize = resolveSizeAndState(preferredHeight, heightMeasureSpec, 0); - widthSize = resolveSizeAndState(preferredWidth, widthMeasureSpec, 0); - } else { - heightSize = resolveSize(preferredHeight, heightMeasureSpec); - widthSize = resolveSize(preferredWidth, widthMeasureSpec); - } - - setMeasuredDimension(widthSize, heightSize); - mHeightMeasureSpec = heightMeasureSpec; - mWidthMeasureSpec = widthMeasureSpec; - } - - int getChildHeight(View child) { - return child.getMeasuredHeight(); - } - - int getChildWidth(View child) { - return child.getMeasuredWidth(); - } - - @Override - protected ViewGroup.LayoutParams generateDefaultLayoutParams() { - return new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT); - } - - void recycleAllViews() { - final int childCount = getChildCount(); - final IcsAbsSpinner.RecycleBin recycleBin = mRecycler; - final int position = mFirstPosition; - - // All views go in recycler - for (int i = 0; i < childCount; i++) { - View v = getChildAt(i); - int index = position + i; - recycleBin.put(index, v); - } - } - - /** - * Jump directly to a specific item in the adapter data. - */ - public void setSelection(int position, boolean animate) { - // Animate only if requested position is already on screen somewhere - boolean shouldAnimate = animate && mFirstPosition <= position && - position <= mFirstPosition + getChildCount() - 1; - setSelectionInt(position, shouldAnimate); - } - - @Override - public void setSelection(int position) { - setNextSelectedPositionInt(position); - requestLayout(); - invalidate(); - } - - - /** - * Makes the item at the supplied position selected. - * - * @param position Position to select - * @param animate Should the transition be animated - * - */ - void setSelectionInt(int position, boolean animate) { - if (position != mOldSelectedPosition) { - mBlockLayoutRequests = true; - int delta = position - mSelectedPosition; - setNextSelectedPositionInt(position); - layout(delta, animate); - mBlockLayoutRequests = false; - } - } - - abstract void layout(int delta, boolean animate); - - @Override - public View getSelectedView() { - if (mItemCount > 0 && mSelectedPosition >= 0) { - return getChildAt(mSelectedPosition - mFirstPosition); - } else { - return null; - } - } - - /** - * Override to prevent spamming ourselves with layout requests - * as we place views - * - * @see android.view.View#requestLayout() - */ - @Override - public void requestLayout() { - if (!mBlockLayoutRequests) { - super.requestLayout(); - } - } - - @Override - public SpinnerAdapter getAdapter() { - return mAdapter; - } - - @Override - public int getCount() { - return mItemCount; - } - - /** - * Maps a point to a position in the list. - * - * @param x X in local coordinate - * @param y Y in local coordinate - * @return The position of the item which contains the specified point, or - * {@link #INVALID_POSITION} if the point does not intersect an item. - */ - public int pointToPosition(int x, int y) { - Rect frame = mTouchFrame; - if (frame == null) { - mTouchFrame = new Rect(); - frame = mTouchFrame; - } - - final int count = getChildCount(); - for (int i = count - 1; i >= 0; i--) { - View child = getChildAt(i); - if (child.getVisibility() == View.VISIBLE) { - child.getHitRect(frame); - if (frame.contains(x, y)) { - return mFirstPosition + i; - } - } - } - return INVALID_POSITION; - } - - static class SavedState extends BaseSavedState { - long selectedId; - int position; - - /** - * Constructor called from {@link AbsSpinner#onSaveInstanceState()} - */ - SavedState(Parcelable superState) { - super(superState); - } - - /** - * Constructor called from {@link #CREATOR} - */ - private SavedState(Parcel in) { - super(in); - selectedId = in.readLong(); - position = in.readInt(); - } - - @Override - public void writeToParcel(Parcel out, int flags) { - super.writeToParcel(out, flags); - out.writeLong(selectedId); - out.writeInt(position); - } - - @Override - public String toString() { - return "AbsSpinner.SavedState{" - + Integer.toHexString(System.identityHashCode(this)) - + " selectedId=" + selectedId - + " position=" + position + "}"; - } - - public static final Parcelable.Creator CREATOR - = new Parcelable.Creator() { - public SavedState createFromParcel(Parcel in) { - return new SavedState(in); - } - - public SavedState[] newArray(int size) { - return new SavedState[size]; - } - }; - } - - @Override - public Parcelable onSaveInstanceState() { - Parcelable superState = super.onSaveInstanceState(); - SavedState ss = new SavedState(superState); - ss.selectedId = getSelectedItemId(); - if (ss.selectedId >= 0) { - ss.position = getSelectedItemPosition(); - } else { - ss.position = INVALID_POSITION; - } - return ss; - } - - @Override - public void onRestoreInstanceState(Parcelable state) { - SavedState ss = (SavedState) state; - - super.onRestoreInstanceState(ss.getSuperState()); - - if (ss.selectedId >= 0) { - mDataChanged = true; - mNeedSync = true; - mSyncRowId = ss.selectedId; - mSyncPosition = ss.position; - mSyncMode = SYNC_SELECTED_POSITION; - requestLayout(); - } - } - - class RecycleBin { - private final SparseArray mScrapHeap = new SparseArray(); - - public void put(int position, View v) { - mScrapHeap.put(position, v); - } - - View get(int position) { - // System.out.print("Looking for " + position); - View result = mScrapHeap.get(position); - if (result != null) { - // System.out.println(" HIT"); - mScrapHeap.delete(position); - } else { - // System.out.println(" MISS"); - } - return result; - } - - void clear() { - final SparseArray scrapHeap = mScrapHeap; - final int count = scrapHeap.size(); - for (int i = 0; i < count; i++) { - final View view = scrapHeap.valueAt(i); - if (view != null) { - removeDetachedView(view, true); - } - } - scrapHeap.clear(); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsAdapterView.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsAdapterView.java deleted file mode 100755 index c786dc5c1..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsAdapterView.java +++ /dev/null @@ -1,1160 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.internal.widget; - -import android.content.Context; -import android.database.DataSetObserver; -import android.os.Parcelable; -import android.os.SystemClock; -import android.util.AttributeSet; -import android.util.SparseArray; -import android.view.ContextMenu; -import android.view.SoundEffectConstants; -import android.view.View; -import android.view.ViewDebug; -import android.view.ViewGroup; -import android.view.accessibility.AccessibilityEvent; -import android.view.accessibility.AccessibilityNodeInfo; -import android.widget.Adapter; -import android.widget.AdapterView.OnItemClickListener; -import android.widget.ListView; - - -/** - * An AdapterView is a view whose children are determined by an {@link Adapter}. - * - *

- * See {@link ListView}, {@link GridView}, {@link Spinner} and - * {@link Gallery} for commonly used subclasses of AdapterView. - * - *

- *

Developer Guides

- *

For more information about using AdapterView, read the - * Binding to Data with AdapterView - * developer guide.

- */ -public abstract class IcsAdapterView extends ViewGroup { - - /** - * The item view type returned by {@link Adapter#getItemViewType(int)} when - * the adapter does not want the item's view recycled. - */ - public static final int ITEM_VIEW_TYPE_IGNORE = -1; - - /** - * The item view type returned by {@link Adapter#getItemViewType(int)} when - * the item is a header or footer. - */ - public static final int ITEM_VIEW_TYPE_HEADER_OR_FOOTER = -2; - - /** - * The position of the first child displayed - */ - @ViewDebug.ExportedProperty(category = "scrolling") - int mFirstPosition = 0; - - /** - * The offset in pixels from the top of the AdapterView to the top - * of the view to select during the next layout. - */ - int mSpecificTop; - - /** - * Position from which to start looking for mSyncRowId - */ - int mSyncPosition; - - /** - * Row id to look for when data has changed - */ - long mSyncRowId = INVALID_ROW_ID; - - /** - * Height of the view when mSyncPosition and mSyncRowId where set - */ - long mSyncHeight; - - /** - * True if we need to sync to mSyncRowId - */ - boolean mNeedSync = false; - - /** - * Indicates whether to sync based on the selection or position. Possible - * values are {@link #SYNC_SELECTED_POSITION} or - * {@link #SYNC_FIRST_POSITION}. - */ - int mSyncMode; - - /** - * Our height after the last layout - */ - private int mLayoutHeight; - - /** - * Sync based on the selected child - */ - static final int SYNC_SELECTED_POSITION = 0; - - /** - * Sync based on the first child displayed - */ - static final int SYNC_FIRST_POSITION = 1; - - /** - * Maximum amount of time to spend in {@link #findSyncPosition()} - */ - static final int SYNC_MAX_DURATION_MILLIS = 100; - - /** - * Indicates that this view is currently being laid out. - */ - boolean mInLayout = false; - - /** - * The listener that receives notifications when an item is selected. - */ - OnItemSelectedListener mOnItemSelectedListener; - - /** - * The listener that receives notifications when an item is clicked. - */ - OnItemClickListener mOnItemClickListener; - - /** - * The listener that receives notifications when an item is long clicked. - */ - OnItemLongClickListener mOnItemLongClickListener; - - /** - * True if the data has changed since the last layout - */ - boolean mDataChanged; - - /** - * The position within the adapter's data set of the item to select - * during the next layout. - */ - @ViewDebug.ExportedProperty(category = "list") - int mNextSelectedPosition = INVALID_POSITION; - - /** - * The item id of the item to select during the next layout. - */ - long mNextSelectedRowId = INVALID_ROW_ID; - - /** - * The position within the adapter's data set of the currently selected item. - */ - @ViewDebug.ExportedProperty(category = "list") - int mSelectedPosition = INVALID_POSITION; - - /** - * The item id of the currently selected item. - */ - long mSelectedRowId = INVALID_ROW_ID; - - /** - * View to show if there are no items to show. - */ - private View mEmptyView; - - /** - * The number of items in the current adapter. - */ - @ViewDebug.ExportedProperty(category = "list") - int mItemCount; - - /** - * The number of items in the adapter before a data changed event occurred. - */ - int mOldItemCount; - - /** - * Represents an invalid position. All valid positions are in the range 0 to 1 less than the - * number of items in the current adapter. - */ - public static final int INVALID_POSITION = -1; - - /** - * Represents an empty or invalid row id - */ - public static final long INVALID_ROW_ID = Long.MIN_VALUE; - - /** - * The last selected position we used when notifying - */ - int mOldSelectedPosition = INVALID_POSITION; - - /** - * The id of the last selected position we used when notifying - */ - long mOldSelectedRowId = INVALID_ROW_ID; - - /** - * Indicates what focusable state is requested when calling setFocusable(). - * In addition to this, this view has other criteria for actually - * determining the focusable state (such as whether its empty or the text - * filter is shown). - * - * @see #setFocusable(boolean) - * @see #checkFocus() - */ - private boolean mDesiredFocusableState; - private boolean mDesiredFocusableInTouchModeState; - - private SelectionNotifier mSelectionNotifier; - /** - * When set to true, calls to requestLayout() will not propagate up the parent hierarchy. - * This is used to layout the children during a layout pass. - */ - boolean mBlockLayoutRequests = false; - - public IcsAdapterView(Context context) { - super(context); - } - - public IcsAdapterView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public IcsAdapterView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - } - - /** - * Register a callback to be invoked when an item in this AdapterView has - * been clicked. - * - * @param listener The callback that will be invoked. - */ - public void setOnItemClickListener(OnItemClickListener listener) { - mOnItemClickListener = listener; - } - - /** - * @return The callback to be invoked with an item in this AdapterView has - * been clicked, or null id no callback has been set. - */ - public final OnItemClickListener getOnItemClickListener() { - return mOnItemClickListener; - } - - /** - * Call the OnItemClickListener, if it is defined. - * - * @param view The view within the AdapterView that was clicked. - * @param position The position of the view in the adapter. - * @param id The row id of the item that was clicked. - * @return True if there was an assigned OnItemClickListener that was - * called, false otherwise is returned. - */ - public boolean performItemClick(View view, int position, long id) { - if (mOnItemClickListener != null) { - playSoundEffect(SoundEffectConstants.CLICK); - if (view != null) { - view.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); - } - mOnItemClickListener.onItemClick(/*this*/null, view, position, id); - return true; - } - - return false; - } - - /** - * Interface definition for a callback to be invoked when an item in this - * view has been clicked and held. - */ - public interface OnItemLongClickListener { - /** - * Callback method to be invoked when an item in this view has been - * clicked and held. - * - * Implementers can call getItemAtPosition(position) if they need to access - * the data associated with the selected item. - * - * @param parent The AbsListView where the click happened - * @param view The view within the AbsListView that was clicked - * @param position The position of the view in the list - * @param id The row id of the item that was clicked - * - * @return true if the callback consumed the long click, false otherwise - */ - boolean onItemLongClick(IcsAdapterView parent, View view, int position, long id); - } - - - /** - * Register a callback to be invoked when an item in this AdapterView has - * been clicked and held - * - * @param listener The callback that will run - */ - public void setOnItemLongClickListener(OnItemLongClickListener listener) { - if (!isLongClickable()) { - setLongClickable(true); - } - mOnItemLongClickListener = listener; - } - - /** - * @return The callback to be invoked with an item in this AdapterView has - * been clicked and held, or null id no callback as been set. - */ - public final OnItemLongClickListener getOnItemLongClickListener() { - return mOnItemLongClickListener; - } - - /** - * Interface definition for a callback to be invoked when - * an item in this view has been selected. - */ - public interface OnItemSelectedListener { - /** - *

Callback method to be invoked when an item in this view has been - * selected. This callback is invoked only when the newly selected - * position is different from the previously selected position or if - * there was no selected item.

- * - * Impelmenters can call getItemAtPosition(position) if they need to access the - * data associated with the selected item. - * - * @param parent The AdapterView where the selection happened - * @param view The view within the AdapterView that was clicked - * @param position The position of the view in the adapter - * @param id The row id of the item that is selected - */ - void onItemSelected(IcsAdapterView parent, View view, int position, long id); - - /** - * Callback method to be invoked when the selection disappears from this - * view. The selection can disappear for instance when touch is activated - * or when the adapter becomes empty. - * - * @param parent The AdapterView that now contains no selected item. - */ - void onNothingSelected(IcsAdapterView parent); - } - - - /** - * Register a callback to be invoked when an item in this AdapterView has - * been selected. - * - * @param listener The callback that will run - */ - public void setOnItemSelectedListener(OnItemSelectedListener listener) { - mOnItemSelectedListener = listener; - } - - public final OnItemSelectedListener getOnItemSelectedListener() { - return mOnItemSelectedListener; - } - - /** - * Extra menu information provided to the - * {@link android.view.View.OnCreateContextMenuListener#onCreateContextMenu(ContextMenu, View, ContextMenuInfo) } - * callback when a context menu is brought up for this AdapterView. - * - */ - public static class AdapterContextMenuInfo implements ContextMenu.ContextMenuInfo { - - public AdapterContextMenuInfo(View targetView, int position, long id) { - this.targetView = targetView; - this.position = position; - this.id = id; - } - - /** - * The child view for which the context menu is being displayed. This - * will be one of the children of this AdapterView. - */ - public View targetView; - - /** - * The position in the adapter for which the context menu is being - * displayed. - */ - public int position; - - /** - * The row id of the item for which the context menu is being displayed. - */ - public long id; - } - - /** - * Returns the adapter currently associated with this widget. - * - * @return The adapter used to provide this view's content. - */ - public abstract T getAdapter(); - - /** - * Sets the adapter that provides the data and the views to represent the data - * in this widget. - * - * @param adapter The adapter to use to create this view's content. - */ - public abstract void setAdapter(T adapter); - - /** - * This method is not supported and throws an UnsupportedOperationException when called. - * - * @param child Ignored. - * - * @throws UnsupportedOperationException Every time this method is invoked. - */ - @Override - public void addView(View child) { - throw new UnsupportedOperationException("addView(View) is not supported in AdapterView"); - } - - /** - * This method is not supported and throws an UnsupportedOperationException when called. - * - * @param child Ignored. - * @param index Ignored. - * - * @throws UnsupportedOperationException Every time this method is invoked. - */ - @Override - public void addView(View child, int index) { - throw new UnsupportedOperationException("addView(View, int) is not supported in AdapterView"); - } - - /** - * This method is not supported and throws an UnsupportedOperationException when called. - * - * @param child Ignored. - * @param params Ignored. - * - * @throws UnsupportedOperationException Every time this method is invoked. - */ - @Override - public void addView(View child, LayoutParams params) { - throw new UnsupportedOperationException("addView(View, LayoutParams) " - + "is not supported in AdapterView"); - } - - /** - * This method is not supported and throws an UnsupportedOperationException when called. - * - * @param child Ignored. - * @param index Ignored. - * @param params Ignored. - * - * @throws UnsupportedOperationException Every time this method is invoked. - */ - @Override - public void addView(View child, int index, LayoutParams params) { - throw new UnsupportedOperationException("addView(View, int, LayoutParams) " - + "is not supported in AdapterView"); - } - - /** - * This method is not supported and throws an UnsupportedOperationException when called. - * - * @param child Ignored. - * - * @throws UnsupportedOperationException Every time this method is invoked. - */ - @Override - public void removeView(View child) { - throw new UnsupportedOperationException("removeView(View) is not supported in AdapterView"); - } - - /** - * This method is not supported and throws an UnsupportedOperationException when called. - * - * @param index Ignored. - * - * @throws UnsupportedOperationException Every time this method is invoked. - */ - @Override - public void removeViewAt(int index) { - throw new UnsupportedOperationException("removeViewAt(int) is not supported in AdapterView"); - } - - /** - * This method is not supported and throws an UnsupportedOperationException when called. - * - * @throws UnsupportedOperationException Every time this method is invoked. - */ - @Override - public void removeAllViews() { - throw new UnsupportedOperationException("removeAllViews() is not supported in AdapterView"); - } - - @Override - protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - mLayoutHeight = getHeight(); - } - - /** - * Return the position of the currently selected item within the adapter's data set - * - * @return int Position (starting at 0), or {@link #INVALID_POSITION} if there is nothing selected. - */ - @ViewDebug.CapturedViewProperty - public int getSelectedItemPosition() { - return mNextSelectedPosition; - } - - /** - * @return The id corresponding to the currently selected item, or {@link #INVALID_ROW_ID} - * if nothing is selected. - */ - @ViewDebug.CapturedViewProperty - public long getSelectedItemId() { - return mNextSelectedRowId; - } - - /** - * @return The view corresponding to the currently selected item, or null - * if nothing is selected - */ - public abstract View getSelectedView(); - - /** - * @return The data corresponding to the currently selected item, or - * null if there is nothing selected. - */ - public Object getSelectedItem() { - T adapter = getAdapter(); - int selection = getSelectedItemPosition(); - if (adapter != null && adapter.getCount() > 0 && selection >= 0) { - return adapter.getItem(selection); - } else { - return null; - } - } - - /** - * @return The number of items owned by the Adapter associated with this - * AdapterView. (This is the number of data items, which may be - * larger than the number of visible views.) - */ - @ViewDebug.CapturedViewProperty - public int getCount() { - return mItemCount; - } - - /** - * Get the position within the adapter's data set for the view, where view is a an adapter item - * or a descendant of an adapter item. - * - * @param view an adapter item, or a descendant of an adapter item. This must be visible in this - * AdapterView at the time of the call. - * @return the position within the adapter's data set of the view, or {@link #INVALID_POSITION} - * if the view does not correspond to a list item (or it is not currently visible). - */ - public int getPositionForView(View view) { - View listItem = view; - try { - View v; - while (!(v = (View) listItem.getParent()).equals(this)) { - listItem = v; - } - } catch (ClassCastException e) { - // We made it up to the window without find this list view - return INVALID_POSITION; - } - - // Search the children for the list item - final int childCount = getChildCount(); - for (int i = 0; i < childCount; i++) { - if (getChildAt(i).equals(listItem)) { - return mFirstPosition + i; - } - } - - // Child not found! - return INVALID_POSITION; - } - - /** - * Returns the position within the adapter's data set for the first item - * displayed on screen. - * - * @return The position within the adapter's data set - */ - public int getFirstVisiblePosition() { - return mFirstPosition; - } - - /** - * Returns the position within the adapter's data set for the last item - * displayed on screen. - * - * @return The position within the adapter's data set - */ - public int getLastVisiblePosition() { - return mFirstPosition + getChildCount() - 1; - } - - /** - * Sets the currently selected item. To support accessibility subclasses that - * override this method must invoke the overriden super method first. - * - * @param position Index (starting at 0) of the data item to be selected. - */ - public abstract void setSelection(int position); - - /** - * Sets the view to show if the adapter is empty - */ - public void setEmptyView(View emptyView) { - mEmptyView = emptyView; - - final T adapter = getAdapter(); - final boolean empty = ((adapter == null) || adapter.isEmpty()); - updateEmptyStatus(empty); - } - - /** - * When the current adapter is empty, the AdapterView can display a special view - * call the empty view. The empty view is used to provide feedback to the user - * that no data is available in this AdapterView. - * - * @return The view to show if the adapter is empty. - */ - public View getEmptyView() { - return mEmptyView; - } - - /** - * Indicates whether this view is in filter mode. Filter mode can for instance - * be enabled by a user when typing on the keyboard. - * - * @return True if the view is in filter mode, false otherwise. - */ - boolean isInFilterMode() { - return false; - } - - @Override - public void setFocusable(boolean focusable) { - final T adapter = getAdapter(); - final boolean empty = adapter == null || adapter.getCount() == 0; - - mDesiredFocusableState = focusable; - if (!focusable) { - mDesiredFocusableInTouchModeState = false; - } - - super.setFocusable(focusable && (!empty || isInFilterMode())); - } - - @Override - public void setFocusableInTouchMode(boolean focusable) { - final T adapter = getAdapter(); - final boolean empty = adapter == null || adapter.getCount() == 0; - - mDesiredFocusableInTouchModeState = focusable; - if (focusable) { - mDesiredFocusableState = true; - } - - super.setFocusableInTouchMode(focusable && (!empty || isInFilterMode())); - } - - void checkFocus() { - final T adapter = getAdapter(); - final boolean empty = adapter == null || adapter.getCount() == 0; - final boolean focusable = !empty || isInFilterMode(); - // The order in which we set focusable in touch mode/focusable may matter - // for the client, see View.setFocusableInTouchMode() comments for more - // details - super.setFocusableInTouchMode(focusable && mDesiredFocusableInTouchModeState); - super.setFocusable(focusable && mDesiredFocusableState); - if (mEmptyView != null) { - updateEmptyStatus((adapter == null) || adapter.isEmpty()); - } - } - - /** - * Update the status of the list based on the empty parameter. If empty is true and - * we have an empty view, display it. In all the other cases, make sure that the listview - * is VISIBLE and that the empty view is GONE (if it's not null). - */ - private void updateEmptyStatus(boolean empty) { - if (isInFilterMode()) { - empty = false; - } - - if (empty) { - if (mEmptyView != null) { - mEmptyView.setVisibility(View.VISIBLE); - setVisibility(View.GONE); - } else { - // If the caller just removed our empty view, make sure the list view is visible - setVisibility(View.VISIBLE); - } - - // We are now GONE, so pending layouts will not be dispatched. - // Force one here to make sure that the state of the list matches - // the state of the adapter. - if (mDataChanged) { - this.onLayout(false, getLeft(), getTop(), getRight(), getBottom()); - } - } else { - if (mEmptyView != null) mEmptyView.setVisibility(View.GONE); - setVisibility(View.VISIBLE); - } - } - - /** - * Gets the data associated with the specified position in the list. - * - * @param position Which data to get - * @return The data associated with the specified position in the list - */ - public Object getItemAtPosition(int position) { - T adapter = getAdapter(); - return (adapter == null || position < 0) ? null : adapter.getItem(position); - } - - public long getItemIdAtPosition(int position) { - T adapter = getAdapter(); - return (adapter == null || position < 0) ? INVALID_ROW_ID : adapter.getItemId(position); - } - - @Override - public void setOnClickListener(OnClickListener l) { - throw new RuntimeException("Don't call setOnClickListener for an AdapterView. " - + "You probably want setOnItemClickListener instead"); - } - - /** - * Override to prevent freezing of any views created by the adapter. - */ - @Override - protected void dispatchSaveInstanceState(SparseArray container) { - dispatchFreezeSelfOnly(container); - } - - /** - * Override to prevent thawing of any views created by the adapter. - */ - @Override - protected void dispatchRestoreInstanceState(SparseArray container) { - dispatchThawSelfOnly(container); - } - - class AdapterDataSetObserver extends DataSetObserver { - - private Parcelable mInstanceState = null; - - @Override - public void onChanged() { - mDataChanged = true; - mOldItemCount = mItemCount; - mItemCount = getAdapter().getCount(); - - // Detect the case where a cursor that was previously invalidated has - // been repopulated with new data. - if (IcsAdapterView.this.getAdapter().hasStableIds() && mInstanceState != null - && mOldItemCount == 0 && mItemCount > 0) { - IcsAdapterView.this.onRestoreInstanceState(mInstanceState); - mInstanceState = null; - } else { - rememberSyncState(); - } - checkFocus(); - requestLayout(); - } - - @Override - public void onInvalidated() { - mDataChanged = true; - - if (IcsAdapterView.this.getAdapter().hasStableIds()) { - // Remember the current state for the case where our hosting activity is being - // stopped and later restarted - mInstanceState = IcsAdapterView.this.onSaveInstanceState(); - } - - // Data is invalid so we should reset our state - mOldItemCount = mItemCount; - mItemCount = 0; - mSelectedPosition = INVALID_POSITION; - mSelectedRowId = INVALID_ROW_ID; - mNextSelectedPosition = INVALID_POSITION; - mNextSelectedRowId = INVALID_ROW_ID; - mNeedSync = false; - - checkFocus(); - requestLayout(); - } - - public void clearSavedState() { - mInstanceState = null; - } - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - removeCallbacks(mSelectionNotifier); - } - - private class SelectionNotifier implements Runnable { - public void run() { - if (mDataChanged) { - // Data has changed between when this SelectionNotifier - // was posted and now. We need to wait until the AdapterView - // has been synched to the new data. - if (getAdapter() != null) { - post(this); - } - } else { - fireOnSelected(); - } - } - } - - void selectionChanged() { - if (mOnItemSelectedListener != null) { - if (mInLayout || mBlockLayoutRequests) { - // If we are in a layout traversal, defer notification - // by posting. This ensures that the view tree is - // in a consistent state and is able to accomodate - // new layout or invalidate requests. - if (mSelectionNotifier == null) { - mSelectionNotifier = new SelectionNotifier(); - } - post(mSelectionNotifier); - } else { - fireOnSelected(); - } - } - - // we fire selection events here not in View - if (mSelectedPosition != ListView.INVALID_POSITION && isShown() && !isInTouchMode()) { - sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED); - } - } - - private void fireOnSelected() { - if (mOnItemSelectedListener == null) - return; - - int selection = this.getSelectedItemPosition(); - if (selection >= 0) { - View v = getSelectedView(); - mOnItemSelectedListener.onItemSelected(this, v, selection, - getAdapter().getItemId(selection)); - } else { - mOnItemSelectedListener.onNothingSelected(this); - } - } - - @Override - public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { - View selectedView = getSelectedView(); - if (selectedView != null && selectedView.getVisibility() == VISIBLE - && selectedView.dispatchPopulateAccessibilityEvent(event)) { - return true; - } - return false; - } - - @Override - public boolean onRequestSendAccessibilityEvent(View child, AccessibilityEvent event) { - if (super.onRequestSendAccessibilityEvent(child, event)) { - // Add a record for ourselves as well. - AccessibilityEvent record = AccessibilityEvent.obtain(); - onInitializeAccessibilityEvent(record); - // Populate with the text of the requesting child. - child.dispatchPopulateAccessibilityEvent(record); - event.appendRecord(record); - return true; - } - return false; - } - - @Override - public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { - super.onInitializeAccessibilityNodeInfo(info); - info.setScrollable(isScrollableForAccessibility()); - View selectedView = getSelectedView(); - if (selectedView != null) { - info.setEnabled(selectedView.isEnabled()); - } - } - - @Override - public void onInitializeAccessibilityEvent(AccessibilityEvent event) { - super.onInitializeAccessibilityEvent(event); - event.setScrollable(isScrollableForAccessibility()); - View selectedView = getSelectedView(); - if (selectedView != null) { - event.setEnabled(selectedView.isEnabled()); - } - event.setCurrentItemIndex(getSelectedItemPosition()); - event.setFromIndex(getFirstVisiblePosition()); - event.setToIndex(getLastVisiblePosition()); - event.setItemCount(getCount()); - } - - private boolean isScrollableForAccessibility() { - T adapter = getAdapter(); - if (adapter != null) { - final int itemCount = adapter.getCount(); - return itemCount > 0 - && (getFirstVisiblePosition() > 0 || getLastVisiblePosition() < itemCount - 1); - } - return false; - } - - @Override - protected boolean canAnimate() { - return super.canAnimate() && mItemCount > 0; - } - - void handleDataChanged() { - final int count = mItemCount; - boolean found = false; - - if (count > 0) { - - int newPos; - - // Find the row we are supposed to sync to - if (mNeedSync) { - // Update this first, since setNextSelectedPositionInt inspects - // it - mNeedSync = false; - - // See if we can find a position in the new data with the same - // id as the old selection - newPos = findSyncPosition(); - if (newPos >= 0) { - // Verify that new selection is selectable - int selectablePos = lookForSelectablePosition(newPos, true); - if (selectablePos == newPos) { - // Same row id is selected - setNextSelectedPositionInt(newPos); - found = true; - } - } - } - if (!found) { - // Try to use the same position if we can't find matching data - newPos = getSelectedItemPosition(); - - // Pin position to the available range - if (newPos >= count) { - newPos = count - 1; - } - if (newPos < 0) { - newPos = 0; - } - - // Make sure we select something selectable -- first look down - int selectablePos = lookForSelectablePosition(newPos, true); - if (selectablePos < 0) { - // Looking down didn't work -- try looking up - selectablePos = lookForSelectablePosition(newPos, false); - } - if (selectablePos >= 0) { - setNextSelectedPositionInt(selectablePos); - checkSelectionChanged(); - found = true; - } - } - } - if (!found) { - // Nothing is selected - mSelectedPosition = INVALID_POSITION; - mSelectedRowId = INVALID_ROW_ID; - mNextSelectedPosition = INVALID_POSITION; - mNextSelectedRowId = INVALID_ROW_ID; - mNeedSync = false; - checkSelectionChanged(); - } - } - - void checkSelectionChanged() { - if ((mSelectedPosition != mOldSelectedPosition) || (mSelectedRowId != mOldSelectedRowId)) { - selectionChanged(); - mOldSelectedPosition = mSelectedPosition; - mOldSelectedRowId = mSelectedRowId; - } - } - - /** - * Searches the adapter for a position matching mSyncRowId. The search starts at mSyncPosition - * and then alternates between moving up and moving down until 1) we find the right position, or - * 2) we run out of time, or 3) we have looked at every position - * - * @return Position of the row that matches mSyncRowId, or {@link #INVALID_POSITION} if it can't - * be found - */ - int findSyncPosition() { - int count = mItemCount; - - if (count == 0) { - return INVALID_POSITION; - } - - long idToMatch = mSyncRowId; - int seed = mSyncPosition; - - // If there isn't a selection don't hunt for it - if (idToMatch == INVALID_ROW_ID) { - return INVALID_POSITION; - } - - // Pin seed to reasonable values - seed = Math.max(0, seed); - seed = Math.min(count - 1, seed); - - long endTime = SystemClock.uptimeMillis() + SYNC_MAX_DURATION_MILLIS; - - long rowId; - - // first position scanned so far - int first = seed; - - // last position scanned so far - int last = seed; - - // True if we should move down on the next iteration - boolean next = false; - - // True when we have looked at the first item in the data - boolean hitFirst; - - // True when we have looked at the last item in the data - boolean hitLast; - - // Get the item ID locally (instead of getItemIdAtPosition), so - // we need the adapter - T adapter = getAdapter(); - if (adapter == null) { - return INVALID_POSITION; - } - - while (SystemClock.uptimeMillis() <= endTime) { - rowId = adapter.getItemId(seed); - if (rowId == idToMatch) { - // Found it! - return seed; - } - - hitLast = last == count - 1; - hitFirst = first == 0; - - if (hitLast && hitFirst) { - // Looked at everything - break; - } - - if (hitFirst || (next && !hitLast)) { - // Either we hit the top, or we are trying to move down - last++; - seed = last; - // Try going up next time - next = false; - } else if (hitLast || (!next && !hitFirst)) { - // Either we hit the bottom, or we are trying to move up - first--; - seed = first; - // Try going down next time - next = true; - } - - } - - return INVALID_POSITION; - } - - /** - * Find a position that can be selected (i.e., is not a separator). - * - * @param position The starting position to look at. - * @param lookDown Whether to look down for other positions. - * @return The next selectable position starting at position and then searching either up or - * down. Returns {@link #INVALID_POSITION} if nothing can be found. - */ - int lookForSelectablePosition(int position, boolean lookDown) { - return position; - } - - /** - * Utility to keep mSelectedPosition and mSelectedRowId in sync - * @param position Our current position - */ - void setSelectedPositionInt(int position) { - mSelectedPosition = position; - mSelectedRowId = getItemIdAtPosition(position); - } - - /** - * Utility to keep mNextSelectedPosition and mNextSelectedRowId in sync - * @param position Intended value for mSelectedPosition the next time we go - * through layout - */ - void setNextSelectedPositionInt(int position) { - mNextSelectedPosition = position; - mNextSelectedRowId = getItemIdAtPosition(position); - // If we are trying to sync to the selection, update that too - if (mNeedSync && mSyncMode == SYNC_SELECTED_POSITION && position >= 0) { - mSyncPosition = position; - mSyncRowId = mNextSelectedRowId; - } - } - - /** - * Remember enough information to restore the screen state when the data has - * changed. - * - */ - void rememberSyncState() { - if (getChildCount() > 0) { - mNeedSync = true; - mSyncHeight = mLayoutHeight; - if (mSelectedPosition >= 0) { - // Sync the selection state - View v = getChildAt(mSelectedPosition - mFirstPosition); - mSyncRowId = mNextSelectedRowId; - mSyncPosition = mNextSelectedPosition; - if (v != null) { - mSpecificTop = v.getTop(); - } - mSyncMode = SYNC_SELECTED_POSITION; - } else { - // Sync the based on the offset of the first view - View v = getChildAt(0); - T adapter = getAdapter(); - if (mFirstPosition >= 0 && mFirstPosition < adapter.getCount()) { - mSyncRowId = adapter.getItemId(mFirstPosition); - } else { - mSyncRowId = NO_ID; - } - mSyncPosition = mFirstPosition; - if (v != null) { - mSpecificTop = v.getTop(); - } - mSyncMode = SYNC_FIRST_POSITION; - } - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsLinearLayout.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsLinearLayout.java deleted file mode 100755 index 1b4463a59..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsLinearLayout.java +++ /dev/null @@ -1,272 +0,0 @@ -package com.actionbarsherlock.internal.widget; - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.Canvas; -import android.graphics.drawable.Drawable; -import android.util.AttributeSet; -import android.view.View; -import com.actionbarsherlock.internal.nineoldandroids.widget.NineLinearLayout; - -/** - * A simple extension of a regular linear layout that supports the divider API - * of Android 4.0+. The dividers are added adjacent to the children by changing - * their layout params. If you need to rely on the margins which fall in the - * same orientation as the layout you should wrap the child in a simple - * {@link android.widget.FrameLayout} so it can receive the margin. - */ -public class IcsLinearLayout extends NineLinearLayout { - private static final int[] LinearLayout = new int[] { - /* 0 */ android.R.attr.divider, - /* 1 */ android.R.attr.showDividers, - /* 2 */ 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; - - /** - * Don't show any dividers. - */ - public static final int SHOW_DIVIDER_NONE = 0; - /** - * Show a divider at the beginning of the group. - */ - public static final int SHOW_DIVIDER_BEGINNING = 1; - /** - * Show dividers between each item in the group. - */ - public static final int SHOW_DIVIDER_MIDDLE = 2; - /** - * Show a divider at the end of the group. - */ - public static final int SHOW_DIVIDER_END = 4; - - - private Drawable mDivider; - private int mDividerWidth; - private int mDividerHeight; - private int mShowDividers; - private int mDividerPadding; - - - public IcsLinearLayout(Context context, AttributeSet attrs) { - super(context, attrs); - - TypedArray a = context.obtainStyledAttributes(attrs, /*com.android.internal.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); - - a.recycle(); - } - - /** - * Set how dividers should be shown between items in this layout - * - * @param showDividers One or more of {@link #SHOW_DIVIDER_BEGINNING}, - * {@link #SHOW_DIVIDER_MIDDLE}, or {@link #SHOW_DIVIDER_END}, - * or {@link #SHOW_DIVIDER_NONE} to show no dividers. - */ - public void setShowDividers(int showDividers) { - if (showDividers != mShowDividers) { - requestLayout(); - invalidate(); //XXX This is required if you are toggling a divider off - } - mShowDividers = showDividers; - } - - /** - * @return A flag set indicating how dividers should be shown around items. - * @see #setShowDividers(int) - */ - public int getShowDividers() { - return mShowDividers; - } - - /** - * Set a drawable to be used as a divider between items. - * @param divider Drawable that will divide each item. - * @see #setShowDividers(int) - */ - public void setDividerDrawable(Drawable divider) { - if (divider == mDivider) { - return; - } - mDivider = divider; - if (divider != null) { - mDividerWidth = divider.getIntrinsicWidth(); - mDividerHeight = divider.getIntrinsicHeight(); - } else { - mDividerWidth = 0; - mDividerHeight = 0; - } - setWillNotDraw(divider == null); - requestLayout(); - } - - /** - * Set padding displayed on both ends of dividers. - * - * @param padding Padding value in pixels that will be applied to each end - * - * @see #setShowDividers(int) - * @see #setDividerDrawable(Drawable) - * @see #getDividerPadding() - */ - public void setDividerPadding(int padding) { - mDividerPadding = padding; - } - - /** - * Get the padding size used to inset dividers in pixels - * - * @see #setShowDividers(int) - * @see #setDividerDrawable(Drawable) - * @see #setDividerPadding(int) - */ - public int getDividerPadding() { - return mDividerPadding; - } - - /** - * Get the width of the current divider drawable. - * - * @hide Used internally by framework. - */ - public int getDividerWidth() { - return mDividerWidth; - } - - @Override - protected void measureChildWithMargins(View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed) { - final int index = indexOfChild(child); - final int orientation = getOrientation(); - final LayoutParams params = (LayoutParams) child.getLayoutParams(); - if (hasDividerBeforeChildAt(index)) { - if (orientation == VERTICAL) { - //Account for the divider by pushing everything up - params.topMargin = mDividerHeight; - } else { - //Account for the divider by pushing everything left - params.leftMargin = mDividerWidth; - } - } - - final int count = getChildCount(); - if (index == count - 1) { - if (hasDividerBeforeChildAt(count)) { - if (orientation == VERTICAL) { - params.bottomMargin = mDividerHeight; - } else { - params.rightMargin = mDividerWidth; - } - } - } - super.measureChildWithMargins(child, parentWidthMeasureSpec, widthUsed, parentHeightMeasureSpec, heightUsed); - } - - @Override - protected void onDraw(Canvas canvas) { - if (mDivider != null) { - if (getOrientation() == VERTICAL) { - drawDividersVertical(canvas); - } else { - drawDividersHorizontal(canvas); - } - } - super.onDraw(canvas); - } - - void drawDividersVertical(Canvas canvas) { - final int count = getChildCount(); - for (int i = 0; i < count; i++) { - final View child = getChildAt(i); - - if (child != null && child.getVisibility() != GONE) { - if (hasDividerBeforeChildAt(i)) { - final LayoutParams lp = (LayoutParams) child.getLayoutParams(); - final int top = child.getTop() - lp.topMargin/* - mDividerHeight*/; - drawHorizontalDivider(canvas, top); - } - } - } - - if (hasDividerBeforeChildAt(count)) { - final View child = getChildAt(count - 1); - int bottom = 0; - if (child == null) { - bottom = getHeight() - getPaddingBottom() - mDividerHeight; - } else { - final LayoutParams lp = (LayoutParams) child.getLayoutParams(); - bottom = child.getBottom()/* + lp.bottomMargin*/; - } - drawHorizontalDivider(canvas, bottom); - } - } - - void drawDividersHorizontal(Canvas canvas) { - final int count = getChildCount(); - for (int i = 0; i < count; i++) { - final View child = getChildAt(i); - - if (child != null && child.getVisibility() != GONE) { - if (hasDividerBeforeChildAt(i)) { - final LayoutParams lp = (LayoutParams) child.getLayoutParams(); - final int left = child.getLeft() - lp.leftMargin/* - mDividerWidth*/; - drawVerticalDivider(canvas, left); - } - } - } - - if (hasDividerBeforeChildAt(count)) { - final View child = getChildAt(count - 1); - int right = 0; - if (child == null) { - right = getWidth() - getPaddingRight() - mDividerWidth; - } else { - final LayoutParams lp = (LayoutParams) child.getLayoutParams(); - right = child.getRight()/* + lp.rightMargin*/; - } - drawVerticalDivider(canvas, right); - } - } - - void drawHorizontalDivider(Canvas canvas, int top) { - mDivider.setBounds(getPaddingLeft() + mDividerPadding, top, - getWidth() - getPaddingRight() - mDividerPadding, top + mDividerHeight); - mDivider.draw(canvas); - } - - void drawVerticalDivider(Canvas canvas, int left) { - mDivider.setBounds(left, getPaddingTop() + mDividerPadding, - left + mDividerWidth, getHeight() - getPaddingBottom() - mDividerPadding); - mDivider.draw(canvas); - } - - /** - * Determines where to position dividers between children. - * - * @param childIndex Index of child to check for preceding divider - * @return true if there should be a divider before the child at childIndex - * @hide Pending API consideration. Currently only used internally by the system. - */ - protected boolean hasDividerBeforeChildAt(int childIndex) { - if (childIndex == 0) { - return (mShowDividers & SHOW_DIVIDER_BEGINNING) != 0; - } else if (childIndex == getChildCount()) { - return (mShowDividers & SHOW_DIVIDER_END) != 0; - } else if ((mShowDividers & SHOW_DIVIDER_MIDDLE) != 0) { - boolean hasVisibleViewBefore = false; - for (int i = childIndex - 1; i >= 0; i--) { - if (getChildAt(i).getVisibility() != GONE) { - hasVisibleViewBefore = true; - break; - } - } - return hasVisibleViewBefore; - } - return false; - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsListPopupWindow.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsListPopupWindow.java deleted file mode 100755 index d13c6cea9..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsListPopupWindow.java +++ /dev/null @@ -1,644 +0,0 @@ -package com.actionbarsherlock.internal.widget; - -import com.actionbarsherlock.R; - -import android.content.Context; -import android.content.res.Resources; -import android.database.DataSetObserver; -import android.graphics.Rect; -import android.graphics.drawable.Drawable; -import android.os.Build; -import android.os.Handler; -import android.util.AttributeSet; -import android.view.ContextThemeWrapper; -import android.view.MotionEvent; -import android.view.View; -import android.view.View.MeasureSpec; -import android.view.View.OnTouchListener; -import android.view.ViewGroup; -import android.view.ViewParent; -import android.widget.AbsListView; -import android.widget.AdapterView; -import android.widget.LinearLayout; -import android.widget.ListAdapter; -import android.widget.ListView; -import android.widget.PopupWindow; - -/** - * A proxy between pre- and post-Honeycomb implementations of this class. - */ -public class IcsListPopupWindow { - /** - * This value controls the length of time that the user - * must leave a pointer down without scrolling to expand - * the autocomplete dropdown list to cover the IME. - */ - private static final int EXPAND_LIST_TIMEOUT = 250; - - private Context mContext; - private PopupWindow mPopup; - private ListAdapter mAdapter; - private DropDownListView mDropDownList; - - private int mDropDownHeight = ViewGroup.LayoutParams.WRAP_CONTENT; - private int mDropDownWidth = ViewGroup.LayoutParams.WRAP_CONTENT; - private int mDropDownHorizontalOffset; - private int mDropDownVerticalOffset; - private boolean mDropDownVerticalOffsetSet; - - private int mListItemExpandMaximum = Integer.MAX_VALUE; - - private View mPromptView; - private int mPromptPosition = POSITION_PROMPT_ABOVE; - - private DataSetObserver mObserver; - - private View mDropDownAnchorView; - - private Drawable mDropDownListHighlight; - - private AdapterView.OnItemClickListener mItemClickListener; - private AdapterView.OnItemSelectedListener mItemSelectedListener; - - private final ResizePopupRunnable mResizePopupRunnable = new ResizePopupRunnable(); - private final PopupTouchInterceptor mTouchInterceptor = new PopupTouchInterceptor(); - private final PopupScrollListener mScrollListener = new PopupScrollListener(); - private final ListSelectorHider mHideSelector = new ListSelectorHider(); - - private Handler mHandler = new Handler(); - - private Rect mTempRect = new Rect(); - - private boolean mModal; - - public static final int POSITION_PROMPT_ABOVE = 0; - public static final int POSITION_PROMPT_BELOW = 1; - - public IcsListPopupWindow(Context context) { - this(context, null, R.attr.listPopupWindowStyle); - } - - public IcsListPopupWindow(Context context, AttributeSet attrs, int defStyleAttr) { - mContext = context; - mPopup = new PopupWindow(context, attrs, defStyleAttr); - mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); - } - - public IcsListPopupWindow(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - mContext = context; - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { - Context wrapped = new ContextThemeWrapper(context, defStyleRes); - mPopup = new PopupWindow(wrapped, attrs, defStyleAttr); - } else { - mPopup = new PopupWindow(context, attrs, defStyleAttr, defStyleRes); - } - mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); - } - - public void setAdapter(ListAdapter adapter) { - if (mObserver == null) { - mObserver = new PopupDataSetObserver(); - } else if (mAdapter != null) { - mAdapter.unregisterDataSetObserver(mObserver); - } - mAdapter = adapter; - if (mAdapter != null) { - adapter.registerDataSetObserver(mObserver); - } - - if (mDropDownList != null) { - mDropDownList.setAdapter(mAdapter); - } - } - - public void setPromptPosition(int position) { - mPromptPosition = position; - } - - public void setModal(boolean modal) { - mModal = true; - mPopup.setFocusable(modal); - } - - public void setBackgroundDrawable(Drawable d) { - mPopup.setBackgroundDrawable(d); - } - - public void setAnchorView(View anchor) { - mDropDownAnchorView = anchor; - } - - public void setHorizontalOffset(int offset) { - mDropDownHorizontalOffset = offset; - } - - public void setVerticalOffset(int offset) { - mDropDownVerticalOffset = offset; - mDropDownVerticalOffsetSet = true; - } - - public void setContentWidth(int width) { - Drawable popupBackground = mPopup.getBackground(); - if (popupBackground != null) { - popupBackground.getPadding(mTempRect); - mDropDownWidth = mTempRect.left + mTempRect.right + width; - } else { - mDropDownWidth = width; - } - } - - public void setOnItemClickListener(AdapterView.OnItemClickListener clickListener) { - mItemClickListener = clickListener; - } - - public void show() { - int height = buildDropDown(); - - int widthSpec = 0; - int heightSpec = 0; - - boolean noInputMethod = isInputMethodNotNeeded(); - //XXX mPopup.setAllowScrollingAnchorParent(!noInputMethod); - - if (mPopup.isShowing()) { - if (mDropDownWidth == ViewGroup.LayoutParams.MATCH_PARENT) { - // The call to PopupWindow's update method below can accept -1 for any - // value you do not want to update. - widthSpec = -1; - } else if (mDropDownWidth == ViewGroup.LayoutParams.WRAP_CONTENT) { - widthSpec = mDropDownAnchorView.getWidth(); - } else { - widthSpec = mDropDownWidth; - } - - if (mDropDownHeight == ViewGroup.LayoutParams.MATCH_PARENT) { - // The call to PopupWindow's update method below can accept -1 for any - // value you do not want to update. - heightSpec = noInputMethod ? height : ViewGroup.LayoutParams.MATCH_PARENT; - if (noInputMethod) { - mPopup.setWindowLayoutMode( - mDropDownWidth == ViewGroup.LayoutParams.MATCH_PARENT ? - ViewGroup.LayoutParams.MATCH_PARENT : 0, 0); - } else { - mPopup.setWindowLayoutMode( - mDropDownWidth == ViewGroup.LayoutParams.MATCH_PARENT ? - ViewGroup.LayoutParams.MATCH_PARENT : 0, - ViewGroup.LayoutParams.MATCH_PARENT); - } - } else if (mDropDownHeight == ViewGroup.LayoutParams.WRAP_CONTENT) { - heightSpec = height; - } else { - heightSpec = mDropDownHeight; - } - - mPopup.setOutsideTouchable(true); - - mPopup.update(mDropDownAnchorView, mDropDownHorizontalOffset, - mDropDownVerticalOffset, widthSpec, heightSpec); - } else { - if (mDropDownWidth == ViewGroup.LayoutParams.MATCH_PARENT) { - widthSpec = ViewGroup.LayoutParams.MATCH_PARENT; - } else { - if (mDropDownWidth == ViewGroup.LayoutParams.WRAP_CONTENT) { - mPopup.setWidth(mDropDownAnchorView.getWidth()); - } else { - mPopup.setWidth(mDropDownWidth); - } - } - - if (mDropDownHeight == ViewGroup.LayoutParams.MATCH_PARENT) { - heightSpec = ViewGroup.LayoutParams.MATCH_PARENT; - } else { - if (mDropDownHeight == ViewGroup.LayoutParams.WRAP_CONTENT) { - mPopup.setHeight(height); - } else { - mPopup.setHeight(mDropDownHeight); - } - } - - mPopup.setWindowLayoutMode(widthSpec, heightSpec); - //XXX mPopup.setClipToScreenEnabled(true); - - // use outside touchable to dismiss drop down when touching outside of it, so - // only set this if the dropdown is not always visible - mPopup.setOutsideTouchable(true); - mPopup.setTouchInterceptor(mTouchInterceptor); - mPopup.showAsDropDown(mDropDownAnchorView, - mDropDownHorizontalOffset, mDropDownVerticalOffset); - mDropDownList.setSelection(ListView.INVALID_POSITION); - - if (!mModal || mDropDownList.isInTouchMode()) { - clearListSelection(); - } - if (!mModal) { - mHandler.post(mHideSelector); - } - } - } - - public void dismiss() { - mPopup.dismiss(); - if (mPromptView != null) { - final ViewParent parent = mPromptView.getParent(); - if (parent instanceof ViewGroup) { - final ViewGroup group = (ViewGroup) parent; - group.removeView(mPromptView); - } - } - mPopup.setContentView(null); - mDropDownList = null; - mHandler.removeCallbacks(mResizePopupRunnable); - } - - public void setOnDismissListener(PopupWindow.OnDismissListener listener) { - mPopup.setOnDismissListener(listener); - } - - public void setInputMethodMode(int mode) { - mPopup.setInputMethodMode(mode); - } - - public void clearListSelection() { - final DropDownListView list = mDropDownList; - if (list != null) { - // WARNING: Please read the comment where mListSelectionHidden is declared - list.mListSelectionHidden = true; - //XXX list.hideSelector(); - list.requestLayout(); - } - } - - public boolean isShowing() { - return mPopup.isShowing(); - } - - private boolean isInputMethodNotNeeded() { - return mPopup.getInputMethodMode() == PopupWindow.INPUT_METHOD_NOT_NEEDED; - } - - public ListView getListView() { - return mDropDownList; - } - - private int buildDropDown() { - ViewGroup dropDownView; - int otherHeights = 0; - - if (mDropDownList == null) { - Context context = mContext; - - mDropDownList = new DropDownListView(context, !mModal); - if (mDropDownListHighlight != null) { - mDropDownList.setSelector(mDropDownListHighlight); - } - mDropDownList.setAdapter(mAdapter); - mDropDownList.setOnItemClickListener(mItemClickListener); - mDropDownList.setFocusable(true); - mDropDownList.setFocusableInTouchMode(true); - mDropDownList.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - public void onItemSelected(AdapterView parent, View view, - int position, long id) { - - if (position != -1) { - DropDownListView dropDownList = mDropDownList; - - if (dropDownList != null) { - dropDownList.mListSelectionHidden = false; - } - } - } - - public void onNothingSelected(AdapterView parent) { - } - }); - mDropDownList.setOnScrollListener(mScrollListener); - - if (mItemSelectedListener != null) { - mDropDownList.setOnItemSelectedListener(mItemSelectedListener); - } - - dropDownView = mDropDownList; - - View hintView = mPromptView; - if (hintView != null) { - // if an hint has been specified, we accomodate more space for it and - // add a text view in the drop down menu, at the bottom of the list - LinearLayout hintContainer = new LinearLayout(context); - hintContainer.setOrientation(LinearLayout.VERTICAL); - - LinearLayout.LayoutParams hintParams = new LinearLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, 0, 1.0f - ); - - switch (mPromptPosition) { - case POSITION_PROMPT_BELOW: - hintContainer.addView(dropDownView, hintParams); - hintContainer.addView(hintView); - break; - - case POSITION_PROMPT_ABOVE: - hintContainer.addView(hintView); - hintContainer.addView(dropDownView, hintParams); - break; - - default: - break; - } - - // measure the hint's height to find how much more vertical space - // we need to add to the drop down's height - int widthSpec = MeasureSpec.makeMeasureSpec(mDropDownWidth, MeasureSpec.AT_MOST); - int heightSpec = MeasureSpec.UNSPECIFIED; - hintView.measure(widthSpec, heightSpec); - - hintParams = (LinearLayout.LayoutParams) hintView.getLayoutParams(); - otherHeights = hintView.getMeasuredHeight() + hintParams.topMargin - + hintParams.bottomMargin; - - dropDownView = hintContainer; - } - - mPopup.setContentView(dropDownView); - } else { - dropDownView = (ViewGroup) mPopup.getContentView(); - final View view = mPromptView; - if (view != null) { - LinearLayout.LayoutParams hintParams = - (LinearLayout.LayoutParams) view.getLayoutParams(); - otherHeights = view.getMeasuredHeight() + hintParams.topMargin - + hintParams.bottomMargin; - } - } - - // getMaxAvailableHeight() subtracts the padding, so we put it back - // to get the available height for the whole window - int padding = 0; - Drawable background = mPopup.getBackground(); - if (background != null) { - background.getPadding(mTempRect); - padding = mTempRect.top + mTempRect.bottom; - - // If we don't have an explicit vertical offset, determine one from the window - // background so that content will line up. - if (!mDropDownVerticalOffsetSet) { - mDropDownVerticalOffset = -mTempRect.top; - } - } - - // Max height available on the screen for a popup. - boolean ignoreBottomDecorations = - mPopup.getInputMethodMode() == PopupWindow.INPUT_METHOD_NOT_NEEDED; - final int maxHeight = /*mPopup.*/getMaxAvailableHeight( - mDropDownAnchorView, mDropDownVerticalOffset, ignoreBottomDecorations); - - if (mDropDownHeight == ViewGroup.LayoutParams.MATCH_PARENT) { - return maxHeight + padding; - } - - final int listContent = /*mDropDownList.*/measureHeightOfChildren(MeasureSpec.UNSPECIFIED, - 0, -1/*ListView.NO_POSITION*/, maxHeight - otherHeights, -1); - // add padding only if the list has items in it, that way we don't show - // the popup if it is not needed - if (listContent > 0) otherHeights += padding; - - return listContent + otherHeights; - } - - private int getMaxAvailableHeight(View anchor, int yOffset, boolean ignoreBottomDecorations) { - final Rect displayFrame = new Rect(); - anchor.getWindowVisibleDisplayFrame(displayFrame); - - final int[] anchorPos = new int[2]; - anchor.getLocationOnScreen(anchorPos); - - int bottomEdge = displayFrame.bottom; - if (ignoreBottomDecorations) { - Resources res = anchor.getContext().getResources(); - bottomEdge = res.getDisplayMetrics().heightPixels; - } - final int distanceToBottom = bottomEdge - (anchorPos[1] + anchor.getHeight()) - yOffset; - final int distanceToTop = anchorPos[1] - displayFrame.top + yOffset; - - // anchorPos[1] is distance from anchor to top of screen - int returnedHeight = Math.max(distanceToBottom, distanceToTop); - if (mPopup.getBackground() != null) { - mPopup.getBackground().getPadding(mTempRect); - returnedHeight -= mTempRect.top + mTempRect.bottom; - } - - return returnedHeight; - } - - private int measureHeightOfChildren(int widthMeasureSpec, int startPosition, int endPosition, - final int maxHeight, int disallowPartialChildPosition) { - - final ListAdapter adapter = mAdapter; - if (adapter == null) { - return mDropDownList.getListPaddingTop() + mDropDownList.getListPaddingBottom(); - } - - // Include the padding of the list - int returnedHeight = mDropDownList.getListPaddingTop() + mDropDownList.getListPaddingBottom(); - final int dividerHeight = ((mDropDownList.getDividerHeight() > 0) && mDropDownList.getDivider() != null) ? mDropDownList.getDividerHeight() : 0; - // The previous height value that was less than maxHeight and contained - // no partial children - int prevHeightWithoutPartialChild = 0; - int i; - View child; - - // mItemCount - 1 since endPosition parameter is inclusive - endPosition = (endPosition == -1/*NO_POSITION*/) ? adapter.getCount() - 1 : endPosition; - - for (i = startPosition; i <= endPosition; ++i) { - child = mAdapter.getView(i, null, mDropDownList); - if (mDropDownList.getCacheColorHint() != 0) { - child.setDrawingCacheBackgroundColor(mDropDownList.getCacheColorHint()); - } - - measureScrapChild(child, i, widthMeasureSpec); - - if (i > 0) { - // Count the divider for all but one child - returnedHeight += dividerHeight; - } - - returnedHeight += child.getMeasuredHeight(); - - if (returnedHeight >= maxHeight) { - // We went over, figure out which height to return. If returnedHeight > maxHeight, - // then the i'th position did not fit completely. - return (disallowPartialChildPosition >= 0) // Disallowing is enabled (> -1) - && (i > disallowPartialChildPosition) // We've past the min pos - && (prevHeightWithoutPartialChild > 0) // We have a prev height - && (returnedHeight != maxHeight) // i'th child did not fit completely - ? prevHeightWithoutPartialChild - : maxHeight; - } - - if ((disallowPartialChildPosition >= 0) && (i >= disallowPartialChildPosition)) { - prevHeightWithoutPartialChild = returnedHeight; - } - } - - // At this point, we went through the range of children, and they each - // completely fit, so return the returnedHeight - return returnedHeight; - } - private void measureScrapChild(View child, int position, int widthMeasureSpec) { - ListView.LayoutParams p = (ListView.LayoutParams) child.getLayoutParams(); - if (p == null) { - p = new ListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT, 0); - child.setLayoutParams(p); - } - //XXX p.viewType = mAdapter.getItemViewType(position); - //XXX p.forceAdd = true; - - int childWidthSpec = ViewGroup.getChildMeasureSpec(widthMeasureSpec, - mDropDownList.getPaddingLeft() + mDropDownList.getPaddingRight(), p.width); - int lpHeight = p.height; - int childHeightSpec; - if (lpHeight > 0) { - childHeightSpec = MeasureSpec.makeMeasureSpec(lpHeight, MeasureSpec.EXACTLY); - } else { - childHeightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - } - child.measure(childWidthSpec, childHeightSpec); - } - - private static class DropDownListView extends ListView { - /* - * WARNING: This is a workaround for a touch mode issue. - * - * Touch mode is propagated lazily to windows. This causes problems in - * the following scenario: - * - Type something in the AutoCompleteTextView and get some results - * - Move down with the d-pad to select an item in the list - * - Move up with the d-pad until the selection disappears - * - Type more text in the AutoCompleteTextView *using the soft keyboard* - * and get new results; you are now in touch mode - * - The selection comes back on the first item in the list, even though - * the list is supposed to be in touch mode - * - * Using the soft keyboard triggers the touch mode change but that change - * is propagated to our window only after the first list layout, therefore - * after the list attempts to resurrect the selection. - * - * The trick to work around this issue is to pretend the list is in touch - * mode when we know that the selection should not appear, that is when - * we know the user moved the selection away from the list. - * - * This boolean is set to true whenever we explicitly hide the list's - * selection and reset to false whenever we know the user moved the - * selection back to the list. - * - * When this boolean is true, isInTouchMode() returns true, otherwise it - * returns super.isInTouchMode(). - */ - private boolean mListSelectionHidden; - - private boolean mHijackFocus; - - public DropDownListView(Context context, boolean hijackFocus) { - super(context, null, /*com.android.internal.*/R.attr.dropDownListViewStyle); - mHijackFocus = hijackFocus; - // TODO: Add an API to control this - setCacheColorHint(0); // Transparent, since the background drawable could be anything. - } - - //XXX @Override - //View obtainView(int position, boolean[] isScrap) { - // View view = super.obtainView(position, isScrap); - - // if (view instanceof TextView) { - // ((TextView) view).setHorizontallyScrolling(true); - // } - - // return view; - //} - - @Override - public boolean isInTouchMode() { - // WARNING: Please read the comment where mListSelectionHidden is declared - return (mHijackFocus && mListSelectionHidden) || super.isInTouchMode(); - } - - @Override - public boolean hasWindowFocus() { - return mHijackFocus || super.hasWindowFocus(); - } - - @Override - public boolean isFocused() { - return mHijackFocus || super.isFocused(); - } - - @Override - public boolean hasFocus() { - return mHijackFocus || super.hasFocus(); - } - } - - private class PopupDataSetObserver extends DataSetObserver { - @Override - public void onChanged() { - if (isShowing()) { - // Resize the popup to fit new content - show(); - } - } - - @Override - public void onInvalidated() { - dismiss(); - } - } - - private class ListSelectorHider implements Runnable { - public void run() { - clearListSelection(); - } - } - - private class ResizePopupRunnable implements Runnable { - public void run() { - if (mDropDownList != null && mDropDownList.getCount() > mDropDownList.getChildCount() && - mDropDownList.getChildCount() <= mListItemExpandMaximum) { - mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED); - show(); - } - } - } - - private class PopupTouchInterceptor implements OnTouchListener { - public boolean onTouch(View v, MotionEvent event) { - final int action = event.getAction(); - final int x = (int) event.getX(); - final int y = (int) event.getY(); - - if (action == MotionEvent.ACTION_DOWN && - mPopup != null && mPopup.isShowing() && - (x >= 0 && x < mPopup.getWidth() && y >= 0 && y < mPopup.getHeight())) { - mHandler.postDelayed(mResizePopupRunnable, EXPAND_LIST_TIMEOUT); - } else if (action == MotionEvent.ACTION_UP) { - mHandler.removeCallbacks(mResizePopupRunnable); - } - return false; - } - } - - private class PopupScrollListener implements ListView.OnScrollListener { - public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, - int totalItemCount) { - - } - - public void onScrollStateChanged(AbsListView view, int scrollState) { - if (scrollState == SCROLL_STATE_TOUCH_SCROLL && - !isInputMethodNotNeeded() && mPopup.getContentView() != null) { - mHandler.removeCallbacks(mResizePopupRunnable); - mResizePopupRunnable.run(); - } - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsProgressBar.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsProgressBar.java deleted file mode 100755 index 1c02d4aca..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsProgressBar.java +++ /dev/null @@ -1,1193 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.internal.widget; - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.Bitmap; -import android.graphics.BitmapShader; -import android.graphics.Canvas; -import android.graphics.Rect; -import android.graphics.Shader; -import android.graphics.drawable.Animatable; -import android.graphics.drawable.AnimationDrawable; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.ClipDrawable; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.LayerDrawable; -import android.graphics.drawable.ShapeDrawable; -import android.graphics.drawable.shapes.RoundRectShape; -import android.graphics.drawable.shapes.Shape; -import android.os.Build; -import android.os.Parcel; -import android.os.Parcelable; -import android.os.SystemClock; -import android.util.AttributeSet; -import android.view.Gravity; -import android.view.View; -import android.view.ViewDebug; -import android.view.accessibility.AccessibilityEvent; -import android.view.accessibility.AccessibilityManager; -import android.view.animation.AlphaAnimation; -import android.view.animation.Animation; -import android.view.animation.AnimationUtils; -import android.view.animation.Interpolator; -import android.view.animation.LinearInterpolator; -import android.view.animation.Transformation; -import android.widget.RemoteViews.RemoteView; - - -/** - *

- * Visual indicator of progress in some operation. Displays a bar to the user - * representing how far the operation has progressed; the application can - * change the amount of progress (modifying the length of the bar) as it moves - * forward. There is also a secondary progress displayable on a progress bar - * which is useful for displaying intermediate progress, such as the buffer - * level during a streaming playback progress bar. - *

- * - *

- * A progress bar can also be made indeterminate. In indeterminate mode, the - * progress bar shows a cyclic animation without an indication of progress. This mode is used by - * applications when the length of the task is unknown. The indeterminate progress bar can be either - * a spinning wheel or a horizontal bar. - *

- * - *

The following code example shows how a progress bar can be used from - * a worker thread to update the user interface to notify the user of progress: - *

- * - *
- * public class MyActivity extends Activity {
- *     private static final int PROGRESS = 0x1;
- *
- *     private ProgressBar mProgress;
- *     private int mProgressStatus = 0;
- *
- *     private Handler mHandler = new Handler();
- *
- *     protected void onCreate(Bundle icicle) {
- *         super.onCreate(icicle);
- *
- *         setContentView(R.layout.progressbar_activity);
- *
- *         mProgress = (ProgressBar) findViewById(R.id.progress_bar);
- *
- *         // Start lengthy operation in a background thread
- *         new Thread(new Runnable() {
- *             public void run() {
- *                 while (mProgressStatus < 100) {
- *                     mProgressStatus = doWork();
- *
- *                     // Update the progress bar
- *                     mHandler.post(new Runnable() {
- *                         public void run() {
- *                             mProgress.setProgress(mProgressStatus);
- *                         }
- *                     });
- *                 }
- *             }
- *         }).start();
- *     }
- * }
- * - *

To add a progress bar to a layout file, you can use the {@code <ProgressBar>} element. - * By default, the progress bar is a spinning wheel (an indeterminate indicator). To change to a - * horizontal progress bar, apply the {@link android.R.style#Widget_ProgressBar_Horizontal - * Widget.ProgressBar.Horizontal} style, like so:

- * - *
- * <ProgressBar
- *     style="@android:style/Widget.ProgressBar.Horizontal"
- *     ... />
- * - *

If you will use the progress bar to show real progress, you must use the horizontal bar. You - * can then increment the progress with {@link #incrementProgressBy incrementProgressBy()} or - * {@link #setProgress setProgress()}. By default, the progress bar is full when it reaches 100. If - * necessary, you can adjust the maximum value (the value for a full bar) using the {@link - * android.R.styleable#ProgressBar_max android:max} attribute. Other attributes available are listed - * below.

- * - *

Another common style to apply to the progress bar is {@link - * android.R.style#Widget_ProgressBar_Small Widget.ProgressBar.Small}, which shows a smaller - * version of the spinning wheel—useful when waiting for content to load. - * For example, you can insert this kind of progress bar into your default layout for - * a view that will be populated by some content fetched from the Internet—the spinning wheel - * appears immediately and when your application receives the content, it replaces the progress bar - * with the loaded content. For example:

- * - *
- * <LinearLayout
- *     android:orientation="horizontal"
- *     ... >
- *     <ProgressBar
- *         android:layout_width="wrap_content"
- *         android:layout_height="wrap_content"
- *         style="@android:style/Widget.ProgressBar.Small"
- *         android:layout_marginRight="5dp" />
- *     <TextView
- *         android:layout_width="wrap_content"
- *         android:layout_height="wrap_content"
- *         android:text="@string/loading" />
- * </LinearLayout>
- * - *

Other progress bar styles provided by the system include:

- *
    - *
  • {@link android.R.style#Widget_ProgressBar_Horizontal Widget.ProgressBar.Horizontal}
  • - *
  • {@link android.R.style#Widget_ProgressBar_Small Widget.ProgressBar.Small}
  • - *
  • {@link android.R.style#Widget_ProgressBar_Large Widget.ProgressBar.Large}
  • - *
  • {@link android.R.style#Widget_ProgressBar_Inverse Widget.ProgressBar.Inverse}
  • - *
  • {@link android.R.style#Widget_ProgressBar_Small_Inverse - * Widget.ProgressBar.Small.Inverse}
  • - *
  • {@link android.R.style#Widget_ProgressBar_Large_Inverse - * Widget.ProgressBar.Large.Inverse}
  • - *
- *

The "inverse" styles provide an inverse color scheme for the spinner, which may be necessary - * if your application uses a light colored theme (a white background).

- * - *

- * See {@link android.R.styleable#ProgressBar ProgressBar Attributes}, - * {@link android.R.styleable#View View Attributes} - *

- * - * @attr ref android.R.styleable#ProgressBar_animationResolution - * @attr ref android.R.styleable#ProgressBar_indeterminate - * @attr ref android.R.styleable#ProgressBar_indeterminateBehavior - * @attr ref android.R.styleable#ProgressBar_indeterminateDrawable - * @attr ref android.R.styleable#ProgressBar_indeterminateDuration - * @attr ref android.R.styleable#ProgressBar_indeterminateOnly - * @attr ref android.R.styleable#ProgressBar_interpolator - * @attr ref android.R.styleable#ProgressBar_max - * @attr ref android.R.styleable#ProgressBar_maxHeight - * @attr ref android.R.styleable#ProgressBar_maxWidth - * @attr ref android.R.styleable#ProgressBar_minHeight - * @attr ref android.R.styleable#ProgressBar_minWidth - * @attr ref android.R.styleable#ProgressBar_progress - * @attr ref android.R.styleable#ProgressBar_progressDrawable - * @attr ref android.R.styleable#ProgressBar_secondaryProgress - */ -@RemoteView -public class IcsProgressBar extends View { - private static final boolean IS_HONEYCOMB = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB; - private static final int MAX_LEVEL = 10000; - private static final int ANIMATION_RESOLUTION = 200; - private static final int TIMEOUT_SEND_ACCESSIBILITY_EVENT = 200; - - private static final int[] ProgressBar = new int[] { - android.R.attr.maxWidth, - android.R.attr.maxHeight, - android.R.attr.max, - android.R.attr.progress, - android.R.attr.secondaryProgress, - android.R.attr.indeterminate, - android.R.attr.indeterminateOnly, - android.R.attr.indeterminateDrawable, - android.R.attr.progressDrawable, - android.R.attr.indeterminateDuration, - android.R.attr.indeterminateBehavior, - android.R.attr.minWidth, - android.R.attr.minHeight, - android.R.attr.interpolator, - android.R.attr.animationResolution, - }; - private static final int ProgressBar_maxWidth = 0; - private static final int ProgressBar_maxHeight = 1; - private static final int ProgressBar_max = 2; - private static final int ProgressBar_progress = 3; - private static final int ProgressBar_secondaryProgress = 4; - private static final int ProgressBar_indeterminate = 5; - private static final int ProgressBar_indeterminateOnly = 6; - private static final int ProgressBar_indeterminateDrawable = 7; - private static final int ProgressBar_progressDrawable = 8; - private static final int ProgressBar_indeterminateDuration = 9; - private static final int ProgressBar_indeterminateBehavior = 10; - private static final int ProgressBar_minWidth = 11; - private static final int ProgressBar_minHeight = 12; - private static final int ProgressBar_interpolator = 13; - private static final int ProgressBar_animationResolution = 14; - - int mMinWidth; - int mMaxWidth; - int mMinHeight; - int mMaxHeight; - - private int mProgress; - private int mSecondaryProgress; - private int mMax; - - private int mBehavior; - private int mDuration; - private boolean mIndeterminate; - private boolean mOnlyIndeterminate; - private Transformation mTransformation; - private AlphaAnimation mAnimation; - private Drawable mIndeterminateDrawable; - private int mIndeterminateRealLeft; - private int mIndeterminateRealTop; - private Drawable mProgressDrawable; - private Drawable mCurrentDrawable; - Bitmap mSampleTile; - private boolean mNoInvalidate; - private Interpolator mInterpolator; - private RefreshProgressRunnable mRefreshProgressRunnable; - private long mUiThreadId; - private boolean mShouldStartAnimationDrawable; - private long mLastDrawTime; - - private boolean mInDrawing; - - private int mAnimationResolution; - - private AccessibilityManager mAccessibilityManager; - private AccessibilityEventSender mAccessibilityEventSender; - - /** - * Create a new progress bar with range 0...100 and initial progress of 0. - * @param context the application environment - */ - public IcsProgressBar(Context context) { - this(context, null); - } - - public IcsProgressBar(Context context, AttributeSet attrs) { - this(context, attrs, android.R.attr.progressBarStyle); - } - - public IcsProgressBar(Context context, AttributeSet attrs, int defStyle) { - this(context, attrs, defStyle, 0); - } - - /** - * @hide - */ - public IcsProgressBar(Context context, AttributeSet attrs, int defStyle, int styleRes) { - super(context, attrs, defStyle); - mUiThreadId = Thread.currentThread().getId(); - initProgressBar(); - - TypedArray a = - context.obtainStyledAttributes(attrs, /*R.styleable.*/ProgressBar, defStyle, styleRes); - - mNoInvalidate = true; - - Drawable drawable = a.getDrawable(/*R.styleable.*/ProgressBar_progressDrawable); - if (drawable != null) { - drawable = tileify(drawable, false); - // Calling this method can set mMaxHeight, make sure the corresponding - // XML attribute for mMaxHeight is read after calling this method - setProgressDrawable(drawable); - } - - - mDuration = a.getInt(/*R.styleable.*/ProgressBar_indeterminateDuration, mDuration); - - mMinWidth = a.getDimensionPixelSize(/*R.styleable.*/ProgressBar_minWidth, mMinWidth); - mMaxWidth = a.getDimensionPixelSize(/*R.styleable.*/ProgressBar_maxWidth, mMaxWidth); - mMinHeight = a.getDimensionPixelSize(/*R.styleable.*/ProgressBar_minHeight, mMinHeight); - mMaxHeight = a.getDimensionPixelSize(/*R.styleable.*/ProgressBar_maxHeight, mMaxHeight); - - mBehavior = a.getInt(/*R.styleable.*/ProgressBar_indeterminateBehavior, mBehavior); - - final int resID = a.getResourceId( - /*com.android.internal.R.styleable.*/ProgressBar_interpolator, - android.R.anim.linear_interpolator); // default to linear interpolator - if (resID > 0) { - setInterpolator(context, resID); - } - - setMax(a.getInt(/*R.styleable.*/ProgressBar_max, mMax)); - - setProgress(a.getInt(/*R.styleable.*/ProgressBar_progress, mProgress)); - - setSecondaryProgress( - a.getInt(/*R.styleable.*/ProgressBar_secondaryProgress, mSecondaryProgress)); - - drawable = a.getDrawable(/*R.styleable.*/ProgressBar_indeterminateDrawable); - if (drawable != null) { - drawable = tileifyIndeterminate(drawable); - setIndeterminateDrawable(drawable); - } - - mOnlyIndeterminate = a.getBoolean( - /*R.styleable.*/ProgressBar_indeterminateOnly, mOnlyIndeterminate); - - mNoInvalidate = false; - - setIndeterminate(mOnlyIndeterminate || a.getBoolean( - /*R.styleable.*/ProgressBar_indeterminate, mIndeterminate)); - - mAnimationResolution = a.getInteger(/*R.styleable.*/ProgressBar_animationResolution, - ANIMATION_RESOLUTION); - - a.recycle(); - - mAccessibilityManager = (AccessibilityManager)context.getSystemService(Context.ACCESSIBILITY_SERVICE); - } - - /** - * Converts a drawable to a tiled version of itself. It will recursively - * traverse layer and state list drawables. - */ - private Drawable tileify(Drawable drawable, boolean clip) { - - if (drawable instanceof LayerDrawable) { - LayerDrawable background = (LayerDrawable) drawable; - final int N = background.getNumberOfLayers(); - Drawable[] outDrawables = new Drawable[N]; - - for (int i = 0; i < N; i++) { - int id = background.getId(i); - outDrawables[i] = tileify(background.getDrawable(i), - (id == android.R.id.progress || id == android.R.id.secondaryProgress)); - } - - LayerDrawable newBg = new LayerDrawable(outDrawables); - - for (int i = 0; i < N; i++) { - newBg.setId(i, background.getId(i)); - } - - return newBg; - - }/* else if (drawable instanceof StateListDrawable) { - StateListDrawable in = (StateListDrawable) drawable; - StateListDrawable out = new StateListDrawable(); - int numStates = in.getStateCount(); - for (int i = 0; i < numStates; i++) { - out.addState(in.getStateSet(i), tileify(in.getStateDrawable(i), clip)); - } - return out; - - }*/ else if (drawable instanceof BitmapDrawable) { - final Bitmap tileBitmap = ((BitmapDrawable) drawable).getBitmap(); - if (mSampleTile == null) { - mSampleTile = tileBitmap; - } - - final ShapeDrawable shapeDrawable = new ShapeDrawable(getDrawableShape()); - - final BitmapShader bitmapShader = new BitmapShader(tileBitmap, - Shader.TileMode.REPEAT, Shader.TileMode.CLAMP); - shapeDrawable.getPaint().setShader(bitmapShader); - - return (clip) ? new ClipDrawable(shapeDrawable, Gravity.LEFT, - ClipDrawable.HORIZONTAL) : shapeDrawable; - } - - return drawable; - } - - Shape getDrawableShape() { - final float[] roundedCorners = new float[] { 5, 5, 5, 5, 5, 5, 5, 5 }; - return new RoundRectShape(roundedCorners, null, null); - } - - /** - * Convert a AnimationDrawable for use as a barberpole animation. - * Each frame of the animation is wrapped in a ClipDrawable and - * given a tiling BitmapShader. - */ - private Drawable tileifyIndeterminate(Drawable drawable) { - if (drawable instanceof AnimationDrawable) { - AnimationDrawable background = (AnimationDrawable) drawable; - final int N = background.getNumberOfFrames(); - AnimationDrawable newBg = new AnimationDrawable(); - newBg.setOneShot(background.isOneShot()); - - for (int i = 0; i < N; i++) { - Drawable frame = tileify(background.getFrame(i), true); - frame.setLevel(10000); - newBg.addFrame(frame, background.getDuration(i)); - } - newBg.setLevel(10000); - drawable = newBg; - } - return drawable; - } - - /** - *

- * Initialize the progress bar's default values: - *

- *
    - *
  • progress = 0
  • - *
  • max = 100
  • - *
  • animation duration = 4000 ms
  • - *
  • indeterminate = false
  • - *
  • behavior = repeat
  • - *
- */ - private void initProgressBar() { - mMax = 100; - mProgress = 0; - mSecondaryProgress = 0; - mIndeterminate = false; - mOnlyIndeterminate = false; - mDuration = 4000; - mBehavior = AlphaAnimation.RESTART; - mMinWidth = 24; - mMaxWidth = 48; - mMinHeight = 24; - mMaxHeight = 48; - } - - /** - *

Indicate whether this progress bar is in indeterminate mode.

- * - * @return true if the progress bar is in indeterminate mode - */ - @ViewDebug.ExportedProperty(category = "progress") - public synchronized boolean isIndeterminate() { - return mIndeterminate; - } - - /** - *

Change the indeterminate mode for this progress bar. In indeterminate - * mode, the progress is ignored and the progress bar shows an infinite - * animation instead.

- * - * If this progress bar's style only supports indeterminate mode (such as the circular - * progress bars), then this will be ignored. - * - * @param indeterminate true to enable the indeterminate mode - */ - public synchronized void setIndeterminate(boolean indeterminate) { - if ((!mOnlyIndeterminate || !mIndeterminate) && indeterminate != mIndeterminate) { - mIndeterminate = indeterminate; - - if (indeterminate) { - // swap between indeterminate and regular backgrounds - mCurrentDrawable = mIndeterminateDrawable; - startAnimation(); - } else { - mCurrentDrawable = mProgressDrawable; - stopAnimation(); - } - } - } - - /** - *

Get the drawable used to draw the progress bar in - * indeterminate mode.

- * - * @return a {@link android.graphics.drawable.Drawable} instance - * - * @see #setIndeterminateDrawable(android.graphics.drawable.Drawable) - * @see #setIndeterminate(boolean) - */ - public Drawable getIndeterminateDrawable() { - return mIndeterminateDrawable; - } - - /** - *

Define the drawable used to draw the progress bar in - * indeterminate mode.

- * - * @param d the new drawable - * - * @see #getIndeterminateDrawable() - * @see #setIndeterminate(boolean) - */ - public void setIndeterminateDrawable(Drawable d) { - if (d != null) { - d.setCallback(this); - } - mIndeterminateDrawable = d; - if (mIndeterminate) { - mCurrentDrawable = d; - postInvalidate(); - } - } - - /** - *

Get the drawable used to draw the progress bar in - * progress mode.

- * - * @return a {@link android.graphics.drawable.Drawable} instance - * - * @see #setProgressDrawable(android.graphics.drawable.Drawable) - * @see #setIndeterminate(boolean) - */ - public Drawable getProgressDrawable() { - return mProgressDrawable; - } - - /** - *

Define the drawable used to draw the progress bar in - * progress mode.

- * - * @param d the new drawable - * - * @see #getProgressDrawable() - * @see #setIndeterminate(boolean) - */ - public void setProgressDrawable(Drawable d) { - boolean needUpdate; - if (mProgressDrawable != null && d != mProgressDrawable) { - mProgressDrawable.setCallback(null); - needUpdate = true; - } else { - needUpdate = false; - } - - if (d != null) { - d.setCallback(this); - - // Make sure the ProgressBar is always tall enough - int drawableHeight = d.getMinimumHeight(); - if (mMaxHeight < drawableHeight) { - mMaxHeight = drawableHeight; - requestLayout(); - } - } - mProgressDrawable = d; - if (!mIndeterminate) { - mCurrentDrawable = d; - postInvalidate(); - } - - if (needUpdate) { - updateDrawableBounds(getWidth(), getHeight()); - updateDrawableState(); - doRefreshProgress(android.R.id.progress, mProgress, false, false); - doRefreshProgress(android.R.id.secondaryProgress, mSecondaryProgress, false, false); - } - } - - /** - * @return The drawable currently used to draw the progress bar - */ - Drawable getCurrentDrawable() { - return mCurrentDrawable; - } - - @Override - protected boolean verifyDrawable(Drawable who) { - return who == mProgressDrawable || who == mIndeterminateDrawable - || super.verifyDrawable(who); - } - - @Override - public void jumpDrawablesToCurrentState() { - super.jumpDrawablesToCurrentState(); - if (mProgressDrawable != null) mProgressDrawable.jumpToCurrentState(); - if (mIndeterminateDrawable != null) mIndeterminateDrawable.jumpToCurrentState(); - } - - @Override - public void postInvalidate() { - if (!mNoInvalidate) { - super.postInvalidate(); - } - } - - private class RefreshProgressRunnable implements Runnable { - - private int mId; - private int mProgress; - private boolean mFromUser; - - RefreshProgressRunnable(int id, int progress, boolean fromUser) { - mId = id; - mProgress = progress; - mFromUser = fromUser; - } - - public void run() { - doRefreshProgress(mId, mProgress, mFromUser, true); - // Put ourselves back in the cache when we are done - mRefreshProgressRunnable = this; - } - - public void setup(int id, int progress, boolean fromUser) { - mId = id; - mProgress = progress; - mFromUser = fromUser; - } - - } - - private synchronized void doRefreshProgress(int id, int progress, boolean fromUser, - boolean callBackToApp) { - float scale = mMax > 0 ? (float) progress / (float) mMax : 0; - final Drawable d = mCurrentDrawable; - if (d != null) { - Drawable progressDrawable = null; - - if (d instanceof LayerDrawable) { - progressDrawable = ((LayerDrawable) d).findDrawableByLayerId(id); - } - - final int level = (int) (scale * MAX_LEVEL); - (progressDrawable != null ? progressDrawable : d).setLevel(level); - } else { - invalidate(); - } - - if (callBackToApp && id == android.R.id.progress) { - onProgressRefresh(scale, fromUser); - } - } - - void onProgressRefresh(float scale, boolean fromUser) { - if (mAccessibilityManager.isEnabled()) { - scheduleAccessibilityEventSender(); - } - } - - private synchronized void refreshProgress(int id, int progress, boolean fromUser) { - if (mUiThreadId == Thread.currentThread().getId()) { - doRefreshProgress(id, progress, fromUser, true); - } else { - RefreshProgressRunnable r; - if (mRefreshProgressRunnable != null) { - // Use cached RefreshProgressRunnable if available - r = mRefreshProgressRunnable; - // Uncache it - mRefreshProgressRunnable = null; - r.setup(id, progress, fromUser); - } else { - // Make a new one - r = new RefreshProgressRunnable(id, progress, fromUser); - } - post(r); - } - } - - /** - *

Set the current progress to the specified value. Does not do anything - * if the progress bar is in indeterminate mode.

- * - * @param progress the new progress, between 0 and {@link #getMax()} - * - * @see #setIndeterminate(boolean) - * @see #isIndeterminate() - * @see #getProgress() - * @see #incrementProgressBy(int) - */ - public synchronized void setProgress(int progress) { - setProgress(progress, false); - } - - synchronized void setProgress(int progress, boolean fromUser) { - if (mIndeterminate) { - return; - } - - if (progress < 0) { - progress = 0; - } - - if (progress > mMax) { - progress = mMax; - } - - if (progress != mProgress) { - mProgress = progress; - refreshProgress(android.R.id.progress, mProgress, fromUser); - } - } - - /** - *

- * Set the current secondary progress to the specified value. Does not do - * anything if the progress bar is in indeterminate mode. - *

- * - * @param secondaryProgress the new secondary progress, between 0 and {@link #getMax()} - * @see #setIndeterminate(boolean) - * @see #isIndeterminate() - * @see #getSecondaryProgress() - * @see #incrementSecondaryProgressBy(int) - */ - public synchronized void setSecondaryProgress(int secondaryProgress) { - if (mIndeterminate) { - return; - } - - if (secondaryProgress < 0) { - secondaryProgress = 0; - } - - if (secondaryProgress > mMax) { - secondaryProgress = mMax; - } - - if (secondaryProgress != mSecondaryProgress) { - mSecondaryProgress = secondaryProgress; - refreshProgress(android.R.id.secondaryProgress, mSecondaryProgress, false); - } - } - - /** - *

Get the progress bar's current level of progress. Return 0 when the - * progress bar is in indeterminate mode.

- * - * @return the current progress, between 0 and {@link #getMax()} - * - * @see #setIndeterminate(boolean) - * @see #isIndeterminate() - * @see #setProgress(int) - * @see #setMax(int) - * @see #getMax() - */ - @ViewDebug.ExportedProperty(category = "progress") - public synchronized int getProgress() { - return mIndeterminate ? 0 : mProgress; - } - - /** - *

Get the progress bar's current level of secondary progress. Return 0 when the - * progress bar is in indeterminate mode.

- * - * @return the current secondary progress, between 0 and {@link #getMax()} - * - * @see #setIndeterminate(boolean) - * @see #isIndeterminate() - * @see #setSecondaryProgress(int) - * @see #setMax(int) - * @see #getMax() - */ - @ViewDebug.ExportedProperty(category = "progress") - public synchronized int getSecondaryProgress() { - return mIndeterminate ? 0 : mSecondaryProgress; - } - - /** - *

Return the upper limit of this progress bar's range.

- * - * @return a positive integer - * - * @see #setMax(int) - * @see #getProgress() - * @see #getSecondaryProgress() - */ - @ViewDebug.ExportedProperty(category = "progress") - public synchronized int getMax() { - return mMax; - } - - /** - *

Set the range of the progress bar to 0...max.

- * - * @param max the upper range of this progress bar - * - * @see #getMax() - * @see #setProgress(int) - * @see #setSecondaryProgress(int) - */ - public synchronized void setMax(int max) { - if (max < 0) { - max = 0; - } - if (max != mMax) { - mMax = max; - postInvalidate(); - - if (mProgress > max) { - mProgress = max; - } - refreshProgress(android.R.id.progress, mProgress, false); - } - } - - /** - *

Increase the progress bar's progress by the specified amount.

- * - * @param diff the amount by which the progress must be increased - * - * @see #setProgress(int) - */ - public synchronized final void incrementProgressBy(int diff) { - setProgress(mProgress + diff); - } - - /** - *

Increase the progress bar's secondary progress by the specified amount.

- * - * @param diff the amount by which the secondary progress must be increased - * - * @see #setSecondaryProgress(int) - */ - public synchronized final void incrementSecondaryProgressBy(int diff) { - setSecondaryProgress(mSecondaryProgress + diff); - } - - /** - *

Start the indeterminate progress animation.

- */ - void startAnimation() { - if (getVisibility() != VISIBLE) { - return; - } - - if (mIndeterminateDrawable instanceof Animatable) { - mShouldStartAnimationDrawable = true; - mAnimation = null; - } else { - if (mInterpolator == null) { - mInterpolator = new LinearInterpolator(); - } - - mTransformation = new Transformation(); - mAnimation = new AlphaAnimation(0.0f, 1.0f); - mAnimation.setRepeatMode(mBehavior); - mAnimation.setRepeatCount(Animation.INFINITE); - mAnimation.setDuration(mDuration); - mAnimation.setInterpolator(mInterpolator); - mAnimation.setStartTime(Animation.START_ON_FIRST_FRAME); - } - postInvalidate(); - } - - /** - *

Stop the indeterminate progress animation.

- */ - void stopAnimation() { - mAnimation = null; - mTransformation = null; - if (mIndeterminateDrawable instanceof Animatable) { - ((Animatable) mIndeterminateDrawable).stop(); - mShouldStartAnimationDrawable = false; - } - postInvalidate(); - } - - /** - * Sets the acceleration curve for the indeterminate animation. - * The interpolator is loaded as a resource from the specified context. - * - * @param context The application environment - * @param resID The resource identifier of the interpolator to load - */ - public void setInterpolator(Context context, int resID) { - setInterpolator(AnimationUtils.loadInterpolator(context, resID)); - } - - /** - * Sets the acceleration curve for the indeterminate animation. - * Defaults to a linear interpolation. - * - * @param interpolator The interpolator which defines the acceleration curve - */ - public void setInterpolator(Interpolator interpolator) { - mInterpolator = interpolator; - } - - /** - * Gets the acceleration curve type for the indeterminate animation. - * - * @return the {@link Interpolator} associated to this animation - */ - public Interpolator getInterpolator() { - return mInterpolator; - } - - @Override - public void setVisibility(int v) { - if (getVisibility() != v) { - super.setVisibility(v); - - if (mIndeterminate) { - // let's be nice with the UI thread - if (v == GONE || v == INVISIBLE) { - stopAnimation(); - } else { - startAnimation(); - } - } - } - } - - @Override - protected void onVisibilityChanged(View changedView, int visibility) { - super.onVisibilityChanged(changedView, visibility); - - if (mIndeterminate) { - // let's be nice with the UI thread - if (visibility == GONE || visibility == INVISIBLE) { - stopAnimation(); - } else { - startAnimation(); - } - } - } - - @Override - public void invalidateDrawable(Drawable dr) { - if (!mInDrawing) { - if (verifyDrawable(dr)) { - final Rect dirty = dr.getBounds(); - final int scrollX = getScrollX() + getPaddingLeft(); - final int scrollY = getScrollY() + getPaddingTop(); - - invalidate(dirty.left + scrollX, dirty.top + scrollY, - dirty.right + scrollX, dirty.bottom + scrollY); - } else { - super.invalidateDrawable(dr); - } - } - } - - /** - * @hide - * - @Override - public int getResolvedLayoutDirection(Drawable who) { - return (who == mProgressDrawable || who == mIndeterminateDrawable) ? - getResolvedLayoutDirection() : super.getResolvedLayoutDirection(who); - } - */ - - @Override - protected void onSizeChanged(int w, int h, int oldw, int oldh) { - updateDrawableBounds(w, h); - } - - private void updateDrawableBounds(int w, int h) { - // onDraw will translate the canvas so we draw starting at 0,0 - int right = w - getPaddingRight() - getPaddingLeft(); - int bottom = h - getPaddingBottom() - getPaddingTop(); - int top = 0; - int left = 0; - - if (mIndeterminateDrawable != null) { - // Aspect ratio logic does not apply to AnimationDrawables - if (mOnlyIndeterminate && !(mIndeterminateDrawable instanceof AnimationDrawable)) { - // Maintain aspect ratio. Certain kinds of animated drawables - // get very confused otherwise. - final int intrinsicWidth = mIndeterminateDrawable.getIntrinsicWidth(); - final int intrinsicHeight = mIndeterminateDrawable.getIntrinsicHeight(); - final float intrinsicAspect = (float) intrinsicWidth / intrinsicHeight; - final float boundAspect = (float) w / h; - if (intrinsicAspect != boundAspect) { - if (boundAspect > intrinsicAspect) { - // New width is larger. Make it smaller to match height. - final int width = (int) (h * intrinsicAspect); - left = (w - width) / 2; - right = left + width; - } else { - // New height is larger. Make it smaller to match width. - final int height = (int) (w * (1 / intrinsicAspect)); - top = (h - height) / 2; - bottom = top + height; - } - } - } - mIndeterminateDrawable.setBounds(0, 0, right - left, bottom - top); - mIndeterminateRealLeft = left; - mIndeterminateRealTop = top; - } - - if (mProgressDrawable != null) { - mProgressDrawable.setBounds(0, 0, right, bottom); - } - } - - @Override - protected synchronized void onDraw(Canvas canvas) { - super.onDraw(canvas); - - Drawable d = mCurrentDrawable; - if (d != null) { - // Translate canvas so a indeterminate circular progress bar with padding - // rotates properly in its animation - canvas.save(); - canvas.translate(getPaddingLeft() + mIndeterminateRealLeft, getPaddingTop() + mIndeterminateRealTop); - long time = getDrawingTime(); - if (mAnimation != null) { - mAnimation.getTransformation(time, mTransformation); - float scale = mTransformation.getAlpha(); - try { - mInDrawing = true; - d.setLevel((int) (scale * MAX_LEVEL)); - } finally { - mInDrawing = false; - } - if (SystemClock.uptimeMillis() - mLastDrawTime >= mAnimationResolution) { - mLastDrawTime = SystemClock.uptimeMillis(); - postInvalidateDelayed(mAnimationResolution); - } - } - d.draw(canvas); - canvas.restore(); - if (mShouldStartAnimationDrawable && d instanceof Animatable) { - ((Animatable) d).start(); - mShouldStartAnimationDrawable = false; - } - } - } - - @Override - protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - Drawable d = mCurrentDrawable; - - int dw = 0; - int dh = 0; - if (d != null) { - dw = Math.max(mMinWidth, Math.min(mMaxWidth, d.getIntrinsicWidth())); - dh = Math.max(mMinHeight, Math.min(mMaxHeight, d.getIntrinsicHeight())); - } - updateDrawableState(); - dw += getPaddingLeft() + getPaddingRight(); - dh += getPaddingTop() + getPaddingBottom(); - - if (IS_HONEYCOMB) { - setMeasuredDimension(View.resolveSizeAndState(dw, widthMeasureSpec, 0), - View.resolveSizeAndState(dh, heightMeasureSpec, 0)); - } else { - setMeasuredDimension(View.resolveSize(dw, widthMeasureSpec), - View.resolveSize(dh, heightMeasureSpec)); - } - } - - @Override - protected void drawableStateChanged() { - super.drawableStateChanged(); - updateDrawableState(); - } - - private void updateDrawableState() { - int[] state = getDrawableState(); - - if (mProgressDrawable != null && mProgressDrawable.isStateful()) { - mProgressDrawable.setState(state); - } - - if (mIndeterminateDrawable != null && mIndeterminateDrawable.isStateful()) { - mIndeterminateDrawable.setState(state); - } - } - - static class SavedState extends BaseSavedState { - int progress; - int secondaryProgress; - - /** - * Constructor called from {@link IcsProgressBar#onSaveInstanceState()} - */ - SavedState(Parcelable superState) { - super(superState); - } - - /** - * Constructor called from {@link #CREATOR} - */ - private SavedState(Parcel in) { - super(in); - progress = in.readInt(); - secondaryProgress = in.readInt(); - } - - @Override - public void writeToParcel(Parcel out, int flags) { - super.writeToParcel(out, flags); - out.writeInt(progress); - out.writeInt(secondaryProgress); - } - - public static final Parcelable.Creator CREATOR - = new Parcelable.Creator() { - public SavedState createFromParcel(Parcel in) { - return new SavedState(in); - } - - public SavedState[] newArray(int size) { - return new SavedState[size]; - } - }; - } - - @Override - public Parcelable onSaveInstanceState() { - // Force our ancestor class to save its state - Parcelable superState = super.onSaveInstanceState(); - SavedState ss = new SavedState(superState); - - ss.progress = mProgress; - ss.secondaryProgress = mSecondaryProgress; - - return ss; - } - - @Override - public void onRestoreInstanceState(Parcelable state) { - SavedState ss = (SavedState) state; - super.onRestoreInstanceState(ss.getSuperState()); - - setProgress(ss.progress); - setSecondaryProgress(ss.secondaryProgress); - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - if (mIndeterminate) { - startAnimation(); - } - } - - @Override - protected void onDetachedFromWindow() { - if (mIndeterminate) { - stopAnimation(); - } - if(mRefreshProgressRunnable != null) { - removeCallbacks(mRefreshProgressRunnable); - } - if (mAccessibilityEventSender != null) { - removeCallbacks(mAccessibilityEventSender); - } - // This should come after stopAnimation(), otherwise an invalidate message remains in the - // queue, which can prevent the entire view hierarchy from being GC'ed during a rotation - super.onDetachedFromWindow(); - } - - @Override - public void onInitializeAccessibilityEvent(AccessibilityEvent event) { - super.onInitializeAccessibilityEvent(event); - event.setItemCount(mMax); - event.setCurrentItemIndex(mProgress); - } - - /** - * Schedule a command for sending an accessibility event. - *
- * Note: A command is used to ensure that accessibility events - * are sent at most one in a given time frame to save - * system resources while the progress changes quickly. - */ - private void scheduleAccessibilityEventSender() { - if (mAccessibilityEventSender == null) { - mAccessibilityEventSender = new AccessibilityEventSender(); - } else { - removeCallbacks(mAccessibilityEventSender); - } - postDelayed(mAccessibilityEventSender, TIMEOUT_SEND_ACCESSIBILITY_EVENT); - } - - /** - * Command for sending an accessibility event. - */ - private class AccessibilityEventSender implements Runnable { - public void run() { - sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsSpinner.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsSpinner.java deleted file mode 100755 index 038d1e031..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsSpinner.java +++ /dev/null @@ -1,703 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.internal.widget; - -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import com.actionbarsherlock.R; -import android.content.Context; -import android.content.DialogInterface; -import android.content.DialogInterface.OnClickListener; -import android.content.res.TypedArray; -import android.database.DataSetObserver; -import android.graphics.Rect; -import android.graphics.drawable.Drawable; -import android.util.AttributeSet; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemClickListener; -import android.widget.ListAdapter; -import android.widget.ListView; -import android.widget.PopupWindow; -import android.widget.SpinnerAdapter; - - -/** - * A view that displays one child at a time and lets the user pick among them. - * The items in the Spinner come from the {@link Adapter} associated with - * this view. - * - *

See the Spinner - * tutorial.

- * - * @attr ref android.R.styleable#Spinner_prompt - */ -public class IcsSpinner extends IcsAbsSpinner implements OnClickListener { - //private static final String TAG = "Spinner"; - - // Only measure this many items to get a decent max width. - private static final int MAX_ITEMS_MEASURED = 15; - - /** - * Use a dialog window for selecting spinner options. - */ - //public static final int MODE_DIALOG = 0; - - /** - * Use a dropdown anchored to the Spinner for selecting spinner options. - */ - public static final int MODE_DROPDOWN = 1; - - /** - * Use the theme-supplied value to select the dropdown mode. - */ - //private static final int MODE_THEME = -1; - - private SpinnerPopup mPopup; - private DropDownAdapter mTempAdapter; - int mDropDownWidth; - - private int mGravity; - private boolean mDisableChildrenWhenDisabled; - - private Rect mTempRect = new Rect(); - - public IcsSpinner(Context context, AttributeSet attrs) { - this(context, attrs, R.attr.actionDropDownStyle); - } - - /** - * Construct a new spinner with the given context's theme, the supplied attribute set, - * and default style. - * - * @param context The Context the view is running in, through which it can - * access the current theme, resources, etc. - * @param attrs The attributes of the XML tag that is inflating the view. - * @param defStyle The default style to apply to this view. If 0, no style - * will be applied (beyond what is included in the theme). This may - * either be an attribute resource, whose value will be retrieved - * from the current theme, or an explicit style resource. - */ - public IcsSpinner(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - - TypedArray a = context.obtainStyledAttributes(attrs, - R.styleable.SherlockSpinner, defStyle, 0); - - - DropdownPopup popup = new DropdownPopup(context, attrs, defStyle); - - mDropDownWidth = a.getLayoutDimension( - R.styleable.SherlockSpinner_android_dropDownWidth, - ViewGroup.LayoutParams.WRAP_CONTENT); - popup.setBackgroundDrawable(a.getDrawable( - R.styleable.SherlockSpinner_android_popupBackground)); - final int verticalOffset = a.getDimensionPixelOffset( - R.styleable.SherlockSpinner_android_dropDownVerticalOffset, 0); - if (verticalOffset != 0) { - popup.setVerticalOffset(verticalOffset); - } - - final int horizontalOffset = a.getDimensionPixelOffset( - R.styleable.SherlockSpinner_android_dropDownHorizontalOffset, 0); - if (horizontalOffset != 0) { - popup.setHorizontalOffset(horizontalOffset); - } - - mPopup = popup; - - mGravity = a.getInt(R.styleable.SherlockSpinner_android_gravity, Gravity.CENTER); - - mPopup.setPromptText(a.getString(R.styleable.SherlockSpinner_android_prompt)); - - mDisableChildrenWhenDisabled = true; - - a.recycle(); - - // Base constructor can call setAdapter before we initialize mPopup. - // Finish setting things up if this happened. - if (mTempAdapter != null) { - mPopup.setAdapter(mTempAdapter); - mTempAdapter = null; - } - } - - @Override - public void setEnabled(boolean enabled) { - super.setEnabled(enabled); - if (mDisableChildrenWhenDisabled) { - final int count = getChildCount(); - for (int i = 0; i < count; i++) { - getChildAt(i).setEnabled(enabled); - } - } - } - - /** - * Describes how the selected item view is positioned. Currently only the horizontal component - * is used. The default is determined by the current theme. - * - * @param gravity See {@link android.view.Gravity} - * - * @attr ref android.R.styleable#Spinner_gravity - */ - public void setGravity(int gravity) { - if (mGravity != gravity) { - if ((gravity & Gravity.HORIZONTAL_GRAVITY_MASK) == 0) { - gravity |= Gravity.LEFT; - } - mGravity = gravity; - requestLayout(); - } - } - - @Override - public void setAdapter(SpinnerAdapter adapter) { - super.setAdapter(adapter); - - if (mPopup != null) { - mPopup.setAdapter(new DropDownAdapter(adapter)); - } else { - mTempAdapter = new DropDownAdapter(adapter); - } - } - - @Override - public int getBaseline() { - View child = null; - - if (getChildCount() > 0) { - child = getChildAt(0); - } else if (mAdapter != null && mAdapter.getCount() > 0) { - child = makeAndAddView(0); - mRecycler.put(0, child); - removeAllViewsInLayout(); - } - - if (child != null) { - final int childBaseline = child.getBaseline(); - return childBaseline >= 0 ? child.getTop() + childBaseline : -1; - } else { - return -1; - } - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - - if (mPopup != null && mPopup.isShowing()) { - mPopup.dismiss(); - } - } - - /** - *

A spinner does not support item click events. Calling this method - * will raise an exception.

- * - * @param l this listener will be ignored - */ - @Override - public void setOnItemClickListener(OnItemClickListener l) { - throw new RuntimeException("setOnItemClickListener cannot be used with a spinner."); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - if (mPopup != null && MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.AT_MOST) { - final int measuredWidth = getMeasuredWidth(); - setMeasuredDimension(Math.min(Math.max(measuredWidth, - measureContentWidth(getAdapter(), getBackground())), - MeasureSpec.getSize(widthMeasureSpec)), - getMeasuredHeight()); - } - } - - /** - * @see android.view.View#onLayout(boolean,int,int,int,int) - * - * Creates and positions all views - * - */ - @Override - protected void onLayout(boolean changed, int l, int t, int r, int b) { - super.onLayout(changed, l, t, r, b); - mInLayout = true; - layout(0, false); - mInLayout = false; - } - - /** - * Creates and positions all views for this Spinner. - * - * @param delta Change in the selected position. +1 moves selection is moving to the right, - * so views are scrolling to the left. -1 means selection is moving to the left. - */ - @Override - void layout(int delta, boolean animate) { - int childrenLeft = mSpinnerPadding.left; - int childrenWidth = getRight() - getLeft() - mSpinnerPadding.left - mSpinnerPadding.right; - - if (mDataChanged) { - handleDataChanged(); - } - - // Handle the empty set by removing all views - if (mItemCount == 0) { - resetList(); - return; - } - - if (mNextSelectedPosition >= 0) { - setSelectedPositionInt(mNextSelectedPosition); - } - - recycleAllViews(); - - // Clear out old views - removeAllViewsInLayout(); - - // Make selected view and position it - mFirstPosition = mSelectedPosition; - View sel = makeAndAddView(mSelectedPosition); - int width = sel.getMeasuredWidth(); - int selectedOffset = childrenLeft; - switch (mGravity & Gravity.HORIZONTAL_GRAVITY_MASK) { - case Gravity.CENTER_HORIZONTAL: - selectedOffset = childrenLeft + (childrenWidth / 2) - (width / 2); - break; - case Gravity.RIGHT: - selectedOffset = childrenLeft + childrenWidth - width; - break; - } - sel.offsetLeftAndRight(selectedOffset); - - // Flush any cached views that did not get reused above - mRecycler.clear(); - - invalidate(); - - checkSelectionChanged(); - - mDataChanged = false; - mNeedSync = false; - setNextSelectedPositionInt(mSelectedPosition); - } - - /** - * Obtain a view, either by pulling an existing view from the recycler or - * by getting a new one from the adapter. If we are animating, make sure - * there is enough information in the view's layout parameters to animate - * from the old to new positions. - * - * @param position Position in the spinner for the view to obtain - * @return A view that has been added to the spinner - */ - private View makeAndAddView(int position) { - - View child; - - if (!mDataChanged) { - child = mRecycler.get(position); - if (child != null) { - // Position the view - setUpChild(child); - - return child; - } - } - - // Nothing found in the recycler -- ask the adapter for a view - child = mAdapter.getView(position, null, this); - - // Position the view - setUpChild(child); - - return child; - } - - /** - * Helper for makeAndAddView to set the position of a view - * and fill out its layout paramters. - * - * @param child The view to position - */ - private void setUpChild(View child) { - - // Respect layout params that are already in the view. Otherwise - // make some up... - ViewGroup.LayoutParams lp = child.getLayoutParams(); - if (lp == null) { - lp = generateDefaultLayoutParams(); - } - - addViewInLayout(child, 0, lp); - - child.setSelected(hasFocus()); - if (mDisableChildrenWhenDisabled) { - child.setEnabled(isEnabled()); - } - - // Get measure specs - int childHeightSpec = ViewGroup.getChildMeasureSpec(mHeightMeasureSpec, - mSpinnerPadding.top + mSpinnerPadding.bottom, lp.height); - int childWidthSpec = ViewGroup.getChildMeasureSpec(mWidthMeasureSpec, - mSpinnerPadding.left + mSpinnerPadding.right, lp.width); - - // Measure child - child.measure(childWidthSpec, childHeightSpec); - - int childLeft; - int childRight; - - // Position vertically based on gravity setting - int childTop = mSpinnerPadding.top - + ((getMeasuredHeight() - mSpinnerPadding.bottom - - mSpinnerPadding.top - child.getMeasuredHeight()) / 2); - int childBottom = childTop + child.getMeasuredHeight(); - - int width = child.getMeasuredWidth(); - childLeft = 0; - childRight = childLeft + width; - - child.layout(childLeft, childTop, childRight, childBottom); - } - - @Override - public boolean performClick() { - boolean handled = super.performClick(); - - if (!handled) { - handled = true; - - if (!mPopup.isShowing()) { - mPopup.show(); - } - } - - return handled; - } - - public void onClick(DialogInterface dialog, int which) { - setSelection(which); - dialog.dismiss(); - } - - /** - * Sets the prompt to display when the dialog is shown. - * @param prompt the prompt to set - */ - public void setPrompt(CharSequence prompt) { - mPopup.setPromptText(prompt); - } - - /** - * Sets the prompt to display when the dialog is shown. - * @param promptId the resource ID of the prompt to display when the dialog is shown - */ - public void setPromptId(int promptId) { - setPrompt(getContext().getText(promptId)); - } - - /** - * @return The prompt to display when the dialog is shown - */ - public CharSequence getPrompt() { - return mPopup.getHintText(); - } - - int measureContentWidth(SpinnerAdapter adapter, Drawable background) { - if (adapter == null) { - return 0; - } - - int width = 0; - View itemView = null; - int itemType = 0; - final int widthMeasureSpec = - MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - final int heightMeasureSpec = - MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - - // Make sure the number of items we'll measure is capped. If it's a huge data set - // with wildly varying sizes, oh well. - int start = Math.max(0, getSelectedItemPosition()); - final int end = Math.min(adapter.getCount(), start + MAX_ITEMS_MEASURED); - final int count = end - start; - start = Math.max(0, start - (MAX_ITEMS_MEASURED - count)); - for (int i = start; i < end; i++) { - final int positionType = adapter.getItemViewType(i); - if (positionType != itemType) { - itemType = positionType; - itemView = null; - } - itemView = adapter.getView(i, itemView, this); - if (itemView.getLayoutParams() == null) { - itemView.setLayoutParams(new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.WRAP_CONTENT, - ViewGroup.LayoutParams.WRAP_CONTENT)); - } - itemView.measure(widthMeasureSpec, heightMeasureSpec); - width = Math.max(width, itemView.getMeasuredWidth()); - } - - // Add background padding to measured width - if (background != null) { - background.getPadding(mTempRect); - width += mTempRect.left + mTempRect.right; - } - - return width; - } - - /** - *

Wrapper class for an Adapter. Transforms the embedded Adapter instance - * into a ListAdapter.

- */ - private static class DropDownAdapter implements ListAdapter, SpinnerAdapter { - private SpinnerAdapter mAdapter; - private ListAdapter mListAdapter; - - /** - *

Creates a new ListAdapter wrapper for the specified adapter.

- * - * @param adapter the Adapter to transform into a ListAdapter - */ - public DropDownAdapter(SpinnerAdapter adapter) { - this.mAdapter = adapter; - if (adapter instanceof ListAdapter) { - this.mListAdapter = (ListAdapter) adapter; - } - } - - public int getCount() { - return mAdapter == null ? 0 : mAdapter.getCount(); - } - - public Object getItem(int position) { - return mAdapter == null ? null : mAdapter.getItem(position); - } - - public long getItemId(int position) { - return mAdapter == null ? -1 : mAdapter.getItemId(position); - } - - public View getView(int position, View convertView, ViewGroup parent) { - return getDropDownView(position, convertView, parent); - } - - public View getDropDownView(int position, View convertView, ViewGroup parent) { - return mAdapter == null ? null : - mAdapter.getDropDownView(position, convertView, parent); - } - - public boolean hasStableIds() { - return mAdapter != null && mAdapter.hasStableIds(); - } - - public void registerDataSetObserver(DataSetObserver observer) { - if (mAdapter != null) { - mAdapter.registerDataSetObserver(observer); - } - } - - public void unregisterDataSetObserver(DataSetObserver observer) { - if (mAdapter != null) { - mAdapter.unregisterDataSetObserver(observer); - } - } - - /** - * If the wrapped SpinnerAdapter is also a ListAdapter, delegate this call. - * Otherwise, return true. - */ - public boolean areAllItemsEnabled() { - final ListAdapter adapter = mListAdapter; - if (adapter != null) { - return adapter.areAllItemsEnabled(); - } else { - return true; - } - } - - /** - * If the wrapped SpinnerAdapter is also a ListAdapter, delegate this call. - * Otherwise, return true. - */ - public boolean isEnabled(int position) { - final ListAdapter adapter = mListAdapter; - if (adapter != null) { - return adapter.isEnabled(position); - } else { - return true; - } - } - - public int getItemViewType(int position) { - return 0; - } - - public int getViewTypeCount() { - return 1; - } - - public boolean isEmpty() { - return getCount() == 0; - } - } - - /** - * Implements some sort of popup selection interface for selecting a spinner option. - * Allows for different spinner modes. - */ - private interface SpinnerPopup { - public void setAdapter(ListAdapter adapter); - - /** - * Show the popup - */ - public void show(); - - /** - * Dismiss the popup - */ - public void dismiss(); - - /** - * @return true if the popup is showing, false otherwise. - */ - public boolean isShowing(); - - /** - * Set hint text to be displayed to the user. This should provide - * a description of the choice being made. - * @param hintText Hint text to set. - */ - public void setPromptText(CharSequence hintText); - public CharSequence getHintText(); - } - - /* - private class DialogPopup implements SpinnerPopup, DialogInterface.OnClickListener { - private AlertDialog mPopup; - private ListAdapter mListAdapter; - private CharSequence mPrompt; - - public void dismiss() { - mPopup.dismiss(); - mPopup = null; - } - - public boolean isShowing() { - return mPopup != null ? mPopup.isShowing() : false; - } - - public void setAdapter(ListAdapter adapter) { - mListAdapter = adapter; - } - - public void setPromptText(CharSequence hintText) { - mPrompt = hintText; - } - - public CharSequence getHintText() { - return mPrompt; - } - - public void show() { - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - if (mPrompt != null) { - builder.setTitle(mPrompt); - } - mPopup = builder.setSingleChoiceItems(mListAdapter, - getSelectedItemPosition(), this).show(); - } - - public void onClick(DialogInterface dialog, int which) { - setSelection(which); - dismiss(); - } - } - */ - - private class DropdownPopup extends IcsListPopupWindow implements SpinnerPopup { - private CharSequence mHintText; - private ListAdapter mAdapter; - - public DropdownPopup(Context context, AttributeSet attrs, int defStyleRes) { - super(context, attrs, 0, defStyleRes); - - setAnchorView(IcsSpinner.this); - setModal(true); - setPromptPosition(POSITION_PROMPT_ABOVE); - setOnItemClickListener(new OnItemClickListener() { - @SuppressWarnings("rawtypes") - public void onItemClick(AdapterView parent, View v, int position, long id) { - IcsSpinner.this.setSelection(position); - dismiss(); - } - }); - } - - @Override - public void setAdapter(ListAdapter adapter) { - super.setAdapter(adapter); - mAdapter = adapter; - } - - public CharSequence getHintText() { - return mHintText; - } - - public void setPromptText(CharSequence hintText) { - // Hint text is ignored for dropdowns, but maintain it here. - mHintText = hintText; - } - - @Override - public void show() { - final int spinnerPaddingLeft = IcsSpinner.this.getPaddingLeft(); - if (mDropDownWidth == WRAP_CONTENT) { - final int spinnerWidth = IcsSpinner.this.getWidth(); - final int spinnerPaddingRight = IcsSpinner.this.getPaddingRight(); - setContentWidth(Math.max( - measureContentWidth((SpinnerAdapter) mAdapter, getBackground()), - spinnerWidth - spinnerPaddingLeft - spinnerPaddingRight)); - } else if (mDropDownWidth == MATCH_PARENT) { - final int spinnerWidth = IcsSpinner.this.getWidth(); - final int spinnerPaddingRight = IcsSpinner.this.getPaddingRight(); - setContentWidth(spinnerWidth - spinnerPaddingLeft - spinnerPaddingRight); - } else { - setContentWidth(mDropDownWidth); - } - final Drawable background = getBackground(); - int bgOffset = 0; - if (background != null) { - background.getPadding(mTempRect); - bgOffset = -mTempRect.left; - } - setHorizontalOffset(bgOffset + spinnerPaddingLeft); - setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED); - super.show(); - getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); - setSelection(IcsSpinner.this.getSelectedItemPosition()); - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsView.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsView.java deleted file mode 100755 index a7185d082..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsView.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.actionbarsherlock.internal.widget; - -import android.view.View; - -final class IcsView { - //No instances - private IcsView() {} - - /** - * Return only the state bits of {@link #getMeasuredWidthAndState()} - * and {@link #getMeasuredHeightAndState()}, combined into one integer. - * The width component is in the regular bits {@link #MEASURED_STATE_MASK} - * and the height component is at the shifted bits - * {@link #MEASURED_HEIGHT_STATE_SHIFT}>>{@link #MEASURED_STATE_MASK}. - */ - public static int getMeasuredStateInt(View child) { - return (child.getMeasuredWidth()&View.MEASURED_STATE_MASK) - | ((child.getMeasuredHeight()>>View.MEASURED_HEIGHT_STATE_SHIFT) - & (View.MEASURED_STATE_MASK>>View.MEASURED_HEIGHT_STATE_SHIFT)); - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.java deleted file mode 100755 index 1a532e06c..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.java +++ /dev/null @@ -1,545 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.actionbarsherlock.internal.widget; - -import android.content.Context; -import android.content.res.Configuration; -import android.content.res.TypedArray; -import android.graphics.drawable.Drawable; -import android.text.TextUtils.TruncateAt; -import android.util.AttributeSet; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewParent; -import android.view.animation.DecelerateInterpolator; -import android.view.animation.Interpolator; -import android.widget.BaseAdapter; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.ListView; -import com.actionbarsherlock.R; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.internal.nineoldandroids.animation.Animator; -import com.actionbarsherlock.internal.nineoldandroids.animation.ObjectAnimator; -import com.actionbarsherlock.internal.nineoldandroids.widget.NineHorizontalScrollView; - -/** - * This widget implements the dynamic action bar tab behavior that can change - * across different configurations or circumstances. - */ -public class ScrollingTabContainerView extends NineHorizontalScrollView - implements IcsAdapterView.OnItemSelectedListener { - //UNUSED private static final String TAG = "ScrollingTabContainerView"; - Runnable mTabSelector; - private TabClickListener mTabClickListener; - - private IcsLinearLayout mTabLayout; - private IcsSpinner mTabSpinner; - private boolean mAllowCollapse; - - private LayoutInflater mInflater; - - int mMaxTabWidth; - private int mContentHeight; - private int mSelectedTabIndex; - - protected Animator mVisibilityAnim; - protected final VisibilityAnimListener mVisAnimListener = new VisibilityAnimListener(); - - private static final /*Time*/Interpolator sAlphaInterpolator = new DecelerateInterpolator(); - - private static final int FADE_DURATION = 200; - - public ScrollingTabContainerView(Context context) { - super(context); - setHorizontalScrollBarEnabled(false); - - TypedArray a = getContext().obtainStyledAttributes(null, R.styleable.SherlockActionBar, - R.attr.actionBarStyle, 0); - setContentHeight(a.getLayoutDimension(R.styleable.SherlockActionBar_height, 0)); - a.recycle(); - - mInflater = LayoutInflater.from(context); - - mTabLayout = createTabLayout(); - addView(mTabLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, - ViewGroup.LayoutParams.MATCH_PARENT)); - } - - @Override - public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - final int widthMode = MeasureSpec.getMode(widthMeasureSpec); - final boolean lockedExpanded = widthMode == MeasureSpec.EXACTLY; - setFillViewport(lockedExpanded); - - final int childCount = mTabLayout.getChildCount(); - if (childCount > 1 && - (widthMode == MeasureSpec.EXACTLY || widthMode == MeasureSpec.AT_MOST)) { - if (childCount > 2) { - mMaxTabWidth = (int) (MeasureSpec.getSize(widthMeasureSpec) * 0.4f); - } else { - mMaxTabWidth = MeasureSpec.getSize(widthMeasureSpec) / 2; - } - } else { - mMaxTabWidth = -1; - } - - heightMeasureSpec = MeasureSpec.makeMeasureSpec(mContentHeight, MeasureSpec.EXACTLY); - - final boolean canCollapse = !lockedExpanded && mAllowCollapse; - - if (canCollapse) { - // See if we should expand - mTabLayout.measure(MeasureSpec.UNSPECIFIED, heightMeasureSpec); - if (mTabLayout.getMeasuredWidth() > MeasureSpec.getSize(widthMeasureSpec)) { - performCollapse(); - } else { - performExpand(); - } - } else { - performExpand(); - } - - final int oldWidth = getMeasuredWidth(); - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - final int newWidth = getMeasuredWidth(); - - if (lockedExpanded && oldWidth != newWidth) { - // Recenter the tab display if we're at a new (scrollable) size. - setTabSelected(mSelectedTabIndex); - } - } - - /** - * Indicates whether this view is collapsed into a dropdown menu instead - * of traditional tabs. - * @return true if showing as a spinner - */ - private boolean isCollapsed() { - return mTabSpinner != null && mTabSpinner.getParent() == this; - } - - public void setAllowCollapse(boolean allowCollapse) { - mAllowCollapse = allowCollapse; - } - - private void performCollapse() { - if (isCollapsed()) return; - - if (mTabSpinner == null) { - mTabSpinner = createSpinner(); - } - removeView(mTabLayout); - addView(mTabSpinner, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, - ViewGroup.LayoutParams.MATCH_PARENT)); - if (mTabSpinner.getAdapter() == null) { - mTabSpinner.setAdapter(new TabAdapter()); - } - if (mTabSelector != null) { - removeCallbacks(mTabSelector); - mTabSelector = null; - } - mTabSpinner.setSelection(mSelectedTabIndex); - } - - private boolean performExpand() { - if (!isCollapsed()) return false; - - removeView(mTabSpinner); - addView(mTabLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, - ViewGroup.LayoutParams.MATCH_PARENT)); - setTabSelected(mTabSpinner.getSelectedItemPosition()); - return false; - } - - public void setTabSelected(int position) { - mSelectedTabIndex = position; - final int tabCount = mTabLayout.getChildCount(); - for (int i = 0; i < tabCount; i++) { - final View child = mTabLayout.getChildAt(i); - final boolean isSelected = i == position; - child.setSelected(isSelected); - if (isSelected) { - animateToTab(position); - } - } - } - - public void setContentHeight(int contentHeight) { - mContentHeight = contentHeight; - requestLayout(); - } - - private IcsLinearLayout createTabLayout() { - final IcsLinearLayout tabLayout = (IcsLinearLayout) LayoutInflater.from(getContext()) - .inflate(R.layout.abs__action_bar_tab_bar_view, null); - tabLayout.setLayoutParams(new LinearLayout.LayoutParams( - LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT)); - return tabLayout; - } - - private IcsSpinner createSpinner() { - final IcsSpinner spinner = new IcsSpinner(getContext(), null, - R.attr.actionDropDownStyle); - spinner.setLayoutParams(new LinearLayout.LayoutParams( - LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT)); - spinner.setOnItemSelectedListener(this); - return spinner; - } - - @Override - protected void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - - // Action bar can change size on configuration changes. - // Reread the desired height from the theme-specified style. - TypedArray a = getContext().obtainStyledAttributes(null, R.styleable.SherlockActionBar, - R.attr.actionBarStyle, 0); - setContentHeight(a.getLayoutDimension(R.styleable.SherlockActionBar_height, 0)); - a.recycle(); - } - - public void animateToVisibility(int visibility) { - if (mVisibilityAnim != null) { - mVisibilityAnim.cancel(); - } - if (visibility == VISIBLE) { - if (getVisibility() != VISIBLE) { - setAlpha(0); - } - ObjectAnimator anim = ObjectAnimator.ofFloat(this, "alpha", 1); - anim.setDuration(FADE_DURATION); - anim.setInterpolator(sAlphaInterpolator); - - anim.addListener(mVisAnimListener.withFinalVisibility(visibility)); - anim.start(); - } else { - ObjectAnimator anim = ObjectAnimator.ofFloat(this, "alpha", 0); - anim.setDuration(FADE_DURATION); - anim.setInterpolator(sAlphaInterpolator); - - anim.addListener(mVisAnimListener.withFinalVisibility(visibility)); - anim.start(); - } - } - - public void animateToTab(final int position) { - final View tabView = mTabLayout.getChildAt(position); - if (mTabSelector != null) { - removeCallbacks(mTabSelector); - } - mTabSelector = new Runnable() { - public void run() { - final int scrollPos = tabView.getLeft() - (getWidth() - tabView.getWidth()) / 2; - smoothScrollTo(scrollPos, 0); - mTabSelector = null; - } - }; - post(mTabSelector); - } - - @Override - public void onAttachedToWindow() { - super.onAttachedToWindow(); - if (mTabSelector != null) { - // Re-post the selector we saved - post(mTabSelector); - } - } - - @Override - public void onDetachedFromWindow() { - super.onDetachedFromWindow(); - if (mTabSelector != null) { - removeCallbacks(mTabSelector); - } - } - - private TabView createTabView(ActionBar.Tab tab, boolean forAdapter) { - //Workaround for not being able to pass a defStyle on pre-3.0 - final TabView tabView = (TabView)mInflater.inflate(R.layout.abs__action_bar_tab, null); - tabView.init(this, tab, forAdapter); - - if (forAdapter) { - tabView.setBackgroundDrawable(null); - tabView.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT, - mContentHeight)); - } else { - tabView.setFocusable(true); - - if (mTabClickListener == null) { - mTabClickListener = new TabClickListener(); - } - tabView.setOnClickListener(mTabClickListener); - } - return tabView; - } - - public void addTab(ActionBar.Tab tab, boolean setSelected) { - TabView tabView = createTabView(tab, false); - mTabLayout.addView(tabView, new IcsLinearLayout.LayoutParams(0, - LayoutParams.MATCH_PARENT, 1)); - if (mTabSpinner != null) { - ((TabAdapter) mTabSpinner.getAdapter()).notifyDataSetChanged(); - } - if (setSelected) { - tabView.setSelected(true); - } - if (mAllowCollapse) { - requestLayout(); - } - } - - public void addTab(ActionBar.Tab tab, int position, boolean setSelected) { - final TabView tabView = createTabView(tab, false); - mTabLayout.addView(tabView, position, new IcsLinearLayout.LayoutParams( - 0, LayoutParams.MATCH_PARENT, 1)); - if (mTabSpinner != null) { - ((TabAdapter) mTabSpinner.getAdapter()).notifyDataSetChanged(); - } - if (setSelected) { - tabView.setSelected(true); - } - if (mAllowCollapse) { - requestLayout(); - } - } - - public void updateTab(int position) { - ((TabView) mTabLayout.getChildAt(position)).update(); - if (mTabSpinner != null) { - ((TabAdapter) mTabSpinner.getAdapter()).notifyDataSetChanged(); - } - if (mAllowCollapse) { - requestLayout(); - } - } - - public void removeTabAt(int position) { - mTabLayout.removeViewAt(position); - if (mTabSpinner != null) { - ((TabAdapter) mTabSpinner.getAdapter()).notifyDataSetChanged(); - } - if (mAllowCollapse) { - requestLayout(); - } - } - - public void removeAllTabs() { - mTabLayout.removeAllViews(); - if (mTabSpinner != null) { - ((TabAdapter) mTabSpinner.getAdapter()).notifyDataSetChanged(); - } - if (mAllowCollapse) { - requestLayout(); - } - } - - @Override - public void onItemSelected(IcsAdapterView parent, View view, int position, long id) { - TabView tabView = (TabView) view; - tabView.getTab().select(); - } - - @Override - public void onNothingSelected(IcsAdapterView parent) { - } - - public static class TabView extends LinearLayout { - private ScrollingTabContainerView mParent; - private ActionBar.Tab mTab; - private CapitalizingTextView mTextView; - private ImageView mIconView; - private View mCustomView; - - public TabView(Context context, AttributeSet attrs) { - //TODO super(context, null, R.attr.actionBarTabStyle); - super(context, attrs); - } - - public void init(ScrollingTabContainerView parent, ActionBar.Tab tab, boolean forList) { - mParent = parent; - mTab = tab; - - if (forList) { - setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL); - } - - update(); - } - - public void bindTab(ActionBar.Tab tab) { - mTab = tab; - update(); - } - - @Override - public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - - // Re-measure if we went beyond our maximum size. - if (mParent.mMaxTabWidth > 0 && getMeasuredWidth() > mParent.mMaxTabWidth) { - super.onMeasure(MeasureSpec.makeMeasureSpec(mParent.mMaxTabWidth, MeasureSpec.EXACTLY), - heightMeasureSpec); - } - } - - public void update() { - final ActionBar.Tab tab = mTab; - final View custom = tab.getCustomView(); - if (custom != null) { - final ViewParent customParent = custom.getParent(); - if (customParent != this) { - if (customParent != null) ((ViewGroup) customParent).removeView(custom); - addView(custom); - } - mCustomView = custom; - if (mTextView != null) mTextView.setVisibility(GONE); - if (mIconView != null) { - mIconView.setVisibility(GONE); - mIconView.setImageDrawable(null); - } - } else { - if (mCustomView != null) { - removeView(mCustomView); - mCustomView = null; - } - - final Drawable icon = tab.getIcon(); - final CharSequence text = tab.getText(); - - if (icon != null) { - if (mIconView == null) { - ImageView iconView = new ImageView(getContext()); - LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, - LayoutParams.WRAP_CONTENT); - lp.gravity = Gravity.CENTER_VERTICAL; - iconView.setLayoutParams(lp); - addView(iconView, 0); - mIconView = iconView; - } - mIconView.setImageDrawable(icon); - mIconView.setVisibility(VISIBLE); - } else if (mIconView != null) { - mIconView.setVisibility(GONE); - mIconView.setImageDrawable(null); - } - - if (text != null) { - if (mTextView == null) { - CapitalizingTextView textView = new CapitalizingTextView(getContext(), null, - R.attr.actionBarTabTextStyle); - textView.setEllipsize(TruncateAt.END); - LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, - LayoutParams.WRAP_CONTENT); - lp.gravity = Gravity.CENTER_VERTICAL; - textView.setLayoutParams(lp); - addView(textView); - mTextView = textView; - } - mTextView.setTextCompat(text); - mTextView.setVisibility(VISIBLE); - } else if (mTextView != null) { - mTextView.setVisibility(GONE); - mTextView.setText(null); - } - - if (mIconView != null) { - mIconView.setContentDescription(tab.getContentDescription()); - } - } - } - - public ActionBar.Tab getTab() { - return mTab; - } - } - - private class TabAdapter extends BaseAdapter { - @Override - public int getCount() { - return mTabLayout.getChildCount(); - } - - @Override - public Object getItem(int position) { - return ((TabView) mTabLayout.getChildAt(position)).getTab(); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - if (convertView == null) { - convertView = createTabView((ActionBar.Tab) getItem(position), true); - } else { - ((TabView) convertView).bindTab((ActionBar.Tab) getItem(position)); - } - return convertView; - } - } - - private class TabClickListener implements OnClickListener { - public void onClick(View view) { - TabView tabView = (TabView) view; - tabView.getTab().select(); - final int tabCount = mTabLayout.getChildCount(); - for (int i = 0; i < tabCount; i++) { - final View child = mTabLayout.getChildAt(i); - child.setSelected(child == view); - } - } - } - - protected class VisibilityAnimListener implements Animator.AnimatorListener { - private boolean mCanceled = false; - private int mFinalVisibility; - - public VisibilityAnimListener withFinalVisibility(int visibility) { - mFinalVisibility = visibility; - return this; - } - - @Override - public void onAnimationStart(Animator animation) { - setVisibility(VISIBLE); - mVisibilityAnim = animation; - mCanceled = false; - } - - @Override - public void onAnimationEnd(Animator animation) { - if (mCanceled) return; - - mVisibilityAnim = null; - setVisibility(mFinalVisibility); - } - - @Override - public void onAnimationCancel(Animator animation) { - mCanceled = true; - } - - @Override - public void onAnimationRepeat(Animator animation) { - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/ActionMode.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/view/ActionMode.java deleted file mode 100755 index 81b4cd4d2..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/ActionMode.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * 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.view; - -import android.view.View; - - -/** - * Represents a contextual mode of the user interface. Action modes can be used for - * modal interactions with content and replace parts of the normal UI until finished. - * Examples of good action modes include selection modes, search, content editing, etc. - */ -public abstract class ActionMode { - private Object mTag; - - /** - * Set a tag object associated with this ActionMode. - * - *

Like the tag available to views, this allows applications to associate arbitrary - * data with an ActionMode for later reference. - * - * @param tag Tag to associate with this ActionMode - * - * @see #getTag() - */ - public void setTag(Object tag) { - mTag = tag; - } - - /** - * Retrieve the tag object associated with this ActionMode. - * - *

Like the tag available to views, this allows applications to associate arbitrary - * data with an ActionMode for later reference. - * - * @return Tag associated with this ActionMode - * - * @see #setTag(Object) - */ - public Object getTag() { - return mTag; - } - - /** - * Set the title of the action mode. This method will have no visible effect if - * a custom view has been set. - * - * @param title Title string to set - * - * @see #setTitle(int) - * @see #setCustomView(View) - */ - public abstract void setTitle(CharSequence title); - - /** - * Set the title of the action mode. This method will have no visible effect if - * a custom view has been set. - * - * @param resId Resource ID of a string to set as the title - * - * @see #setTitle(CharSequence) - * @see #setCustomView(View) - */ - public abstract void setTitle(int resId); - - /** - * Set the subtitle of the action mode. This method will have no visible effect if - * a custom view has been set. - * - * @param subtitle Subtitle string to set - * - * @see #setSubtitle(int) - * @see #setCustomView(View) - */ - public abstract void setSubtitle(CharSequence subtitle); - - /** - * Set the subtitle of the action mode. This method will have no visible effect if - * a custom view has been set. - * - * @param resId Resource ID of a string to set as the subtitle - * - * @see #setSubtitle(CharSequence) - * @see #setCustomView(View) - */ - public abstract void setSubtitle(int resId); - - /** - * Set a custom view for this action mode. The custom view will take the place of - * the title and subtitle. Useful for things like search boxes. - * - * @param view Custom view to use in place of the title/subtitle. - * - * @see #setTitle(CharSequence) - * @see #setSubtitle(CharSequence) - */ - public abstract void setCustomView(View view); - - /** - * Invalidate the action mode and refresh menu content. The mode's - * {@link ActionMode.Callback} will have its - * {@link Callback#onPrepareActionMode(ActionMode, Menu)} method called. - * If it returns true the menu will be scanned for updated content and any relevant changes - * will be reflected to the user. - */ - public abstract void invalidate(); - - /** - * Finish and close this action mode. The action mode's {@link ActionMode.Callback} will - * have its {@link Callback#onDestroyActionMode(ActionMode)} method called. - */ - public abstract void finish(); - - /** - * Returns the menu of actions that this action mode presents. - * @return The action mode's menu. - */ - public abstract Menu getMenu(); - - /** - * Returns the current title of this action mode. - * @return Title text - */ - public abstract CharSequence getTitle(); - - /** - * Returns the current subtitle of this action mode. - * @return Subtitle text - */ - public abstract CharSequence getSubtitle(); - - /** - * Returns the current custom view for this action mode. - * @return The current custom view - */ - public abstract View getCustomView(); - - /** - * Returns a {@link MenuInflater} with the ActionMode's context. - */ - public abstract MenuInflater getMenuInflater(); - - /** - * Returns whether the UI presenting this action mode can take focus or not. - * This is used by internal components within the framework that would otherwise - * present an action mode UI that requires focus, such as an EditText as a custom view. - * - * @return true if the UI used to show this action mode can take focus - * @hide Internal use only - */ - public boolean isUiFocusable() { - return true; - } - - /** - * Callback interface for action modes. Supplied to - * {@link View#startActionMode(Callback)}, a Callback - * configures and handles events raised by a user's interaction with an action mode. - * - *

An action mode's lifecycle is as follows: - *

    - *
  • {@link Callback#onCreateActionMode(ActionMode, Menu)} once on initial - * creation
  • - *
  • {@link Callback#onPrepareActionMode(ActionMode, Menu)} after creation - * and any time the {@link ActionMode} is invalidated
  • - *
  • {@link Callback#onActionItemClicked(ActionMode, MenuItem)} any time a - * contextual action button is clicked
  • - *
  • {@link Callback#onDestroyActionMode(ActionMode)} when the action mode - * is closed
  • - *
- */ - public interface Callback { - /** - * Called when action mode is first created. The menu supplied will be used to - * generate action buttons for the action mode. - * - * @param mode ActionMode being created - * @param menu Menu used to populate action buttons - * @return true if the action mode should be created, false if entering this - * mode should be aborted. - */ - public boolean onCreateActionMode(ActionMode mode, Menu menu); - - /** - * Called to refresh an action mode's action menu whenever it is invalidated. - * - * @param mode ActionMode being prepared - * @param menu Menu used to populate action buttons - * @return true if the menu or action mode was updated, false otherwise. - */ - public boolean onPrepareActionMode(ActionMode mode, Menu menu); - - /** - * Called to report a user click on an action button. - * - * @param mode The current ActionMode - * @param item The item that was clicked - * @return true if this callback handled the event, false if the standard MenuItem - * invocation should continue. - */ - public boolean onActionItemClicked(ActionMode mode, MenuItem item); - - /** - * Called when an action mode is about to be exited and destroyed. - * - * @param mode The current ActionMode being destroyed - */ - public void onDestroyActionMode(ActionMode mode); - } -} \ No newline at end of file diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/ActionProvider.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/view/ActionProvider.java deleted file mode 100755 index ae7cb1fe0..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/ActionProvider.java +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.view; - -import android.content.Context; -import android.view.View; - -/** - * This class is a mediator for accomplishing a given task, for example sharing a file. - * It is responsible for creating a view that performs an action that accomplishes the task. - * This class also implements other functions such a performing a default action. - *

- * An ActionProvider can be optionally specified for a {@link MenuItem} and in such a - * case it will be responsible for creating the action view that appears in the - * {@link android.app.ActionBar} as a substitute for the menu item when the item is - * displayed as an action item. Also the provider is responsible for performing a - * default action if a menu item placed on the overflow menu of the ActionBar is - * selected and none of the menu item callbacks has handled the selection. For this - * case the provider can also optionally provide a sub-menu for accomplishing the - * task at hand. - *

- *

- * There are two ways for using an action provider for creating and handling of action views: - *

    - *
  • - * Setting the action provider on a {@link MenuItem} directly by calling - * {@link MenuItem#setActionProvider(ActionProvider)}. - *
  • - *
  • - * Declaring the action provider in the menu XML resource. For example: - *
    - * 
    - *   <item android:id="@+id/my_menu_item"
    - *     android:title="Title"
    - *     android:icon="@drawable/my_menu_item_icon"
    - *     android:showAsAction="ifRoom"
    - *     android:actionProviderClass="foo.bar.SomeActionProvider" />
    - * 
    - * 
    - *
  • - *
- *

- * - * @see MenuItem#setActionProvider(ActionProvider) - * @see MenuItem#getActionProvider() - */ -public abstract class ActionProvider { - private SubUiVisibilityListener mSubUiVisibilityListener; - - /** - * Creates a new instance. - * - * @param context Context for accessing resources. - */ - public ActionProvider(Context context) { - } - - /** - * Factory method for creating new action views. - * - * @return A new action view. - */ - public abstract View onCreateActionView(); - - /** - * Performs an optional default action. - *

- * For the case of an action provider placed in a menu item not shown as an action this - * method is invoked if previous callbacks for processing menu selection has handled - * the event. - *

- *

- * A menu item selection is processed in the following order: - *

    - *
  • - * Receiving a call to {@link MenuItem.OnMenuItemClickListener#onMenuItemClick - * MenuItem.OnMenuItemClickListener.onMenuItemClick}. - *
  • - *
  • - * Receiving a call to {@link android.app.Activity#onOptionsItemSelected(MenuItem) - * Activity.onOptionsItemSelected(MenuItem)} - *
  • - *
  • - * Receiving a call to {@link android.app.Fragment#onOptionsItemSelected(MenuItem) - * Fragment.onOptionsItemSelected(MenuItem)} - *
  • - *
  • - * Launching the {@link android.content.Intent} set via - * {@link MenuItem#setIntent(android.content.Intent) MenuItem.setIntent(android.content.Intent)} - *
  • - *
  • - * Invoking this method. - *
  • - *
- *

- *

- * The default implementation does not perform any action and returns false. - *

- */ - public boolean onPerformDefaultAction() { - return false; - } - - /** - * Determines if this ActionProvider has a submenu associated with it. - * - *

Associated submenus will be shown when an action view is not. This - * provider instance will receive a call to {@link #onPrepareSubMenu(SubMenu)} - * after the call to {@link #onPerformDefaultAction()} and before a submenu is - * displayed to the user. - * - * @return true if the item backed by this provider should have an associated submenu - */ - public boolean hasSubMenu() { - return false; - } - - /** - * Called to prepare an associated submenu for the menu item backed by this ActionProvider. - * - *

if {@link #hasSubMenu()} returns true, this method will be called when the - * menu item is selected to prepare the submenu for presentation to the user. Apps - * may use this to create or alter submenu content right before display. - * - * @param subMenu Submenu that will be displayed - */ - public void onPrepareSubMenu(SubMenu subMenu) { - } - - /** - * Notify the system that the visibility of an action view's sub-UI such as - * an anchored popup has changed. This will affect how other system - * visibility notifications occur. - * - * @hide Pending future API approval - */ - public void subUiVisibilityChanged(boolean isVisible) { - if (mSubUiVisibilityListener != null) { - mSubUiVisibilityListener.onSubUiVisibilityChanged(isVisible); - } - } - - /** - * @hide Internal use only - */ - public void setSubUiVisibilityListener(SubUiVisibilityListener listener) { - mSubUiVisibilityListener = listener; - } - - /** - * @hide Internal use only - */ - public interface SubUiVisibilityListener { - public void onSubUiVisibilityChanged(boolean isVisible); - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/CollapsibleActionView.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/view/CollapsibleActionView.java deleted file mode 100755 index 43281b013..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/CollapsibleActionView.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.view; - -/** - * When a {@link View} implements this interface it will receive callbacks - * when expanded or collapsed as an action view alongside the optional, - * app-specified callbacks to {@link OnActionExpandListener}. - * - *

See {@link MenuItem} for more information about action views. - * See {@link android.app.ActionBar} for more information about the action bar. - */ -public interface CollapsibleActionView { - /** - * Called when this view is expanded as an action view. - * See {@link MenuItem#expandActionView()}. - */ - public void onActionViewExpanded(); - - /** - * Called when this view is collapsed as an action view. - * See {@link MenuItem#collapseActionView()}. - */ - public void onActionViewCollapsed(); -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/Menu.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/view/Menu.java deleted file mode 100755 index 951f4ccef..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/Menu.java +++ /dev/null @@ -1,447 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.view; - -import android.content.ComponentName; -import android.content.Intent; -import android.view.KeyEvent; - -/** - * Interface for managing the items in a menu. - *

- * By default, every Activity supports an options menu of actions or options. - * You can add items to this menu and handle clicks on your additions. The - * easiest way of adding menu items is inflating an XML file into the - * {@link Menu} via {@link MenuInflater}. The easiest way of attaching code to - * clicks is via {@link Activity#onOptionsItemSelected(MenuItem)} and - * {@link Activity#onContextItemSelected(MenuItem)}. - *

- * Different menu types support different features: - *

    - *
  1. Context menus: Do not support item shortcuts and item icons. - *
  2. Options menus: The icon menus do not support item check - * marks and only show the item's - * {@link MenuItem#setTitleCondensed(CharSequence) condensed title}. The - * expanded menus (only available if six or more menu items are visible, - * reached via the 'More' item in the icon menu) do not show item icons, and - * item check marks are discouraged. - *
  3. Sub menus: Do not support item icons, or nested sub menus. - *
- * - *
- *

Developer Guides

- *

For more information about creating menus, read the - * Menus developer guide.

- *
- */ -public interface Menu { - - /** - * This is the part of an order integer that the user can provide. - * @hide - */ - static final int USER_MASK = 0x0000ffff; - /** - * Bit shift of the user portion of the order integer. - * @hide - */ - static final int USER_SHIFT = 0; - - /** - * This is the part of an order integer that supplies the category of the - * item. - * @hide - */ - static final int CATEGORY_MASK = 0xffff0000; - /** - * Bit shift of the category portion of the order integer. - * @hide - */ - static final int CATEGORY_SHIFT = 16; - - /** - * Value to use for group and item identifier integers when you don't care - * about them. - */ - static final int NONE = 0; - - /** - * First value for group and item identifier integers. - */ - static final int FIRST = 1; - - // Implementation note: Keep these CATEGORY_* in sync with the category enum - // in attrs.xml - - /** - * Category code for the order integer for items/groups that are part of a - * container -- or/add this with your base value. - */ - static final int CATEGORY_CONTAINER = 0x00010000; - - /** - * Category code for the order integer for items/groups that are provided by - * the system -- or/add this with your base value. - */ - static final int CATEGORY_SYSTEM = 0x00020000; - - /** - * Category code for the order integer for items/groups that are - * user-supplied secondary (infrequently used) options -- or/add this with - * your base value. - */ - static final int CATEGORY_SECONDARY = 0x00030000; - - /** - * Category code for the order integer for items/groups that are - * alternative actions on the data that is currently displayed -- or/add - * this with your base value. - */ - static final int CATEGORY_ALTERNATIVE = 0x00040000; - - /** - * Flag for {@link #addIntentOptions}: if set, do not automatically remove - * any existing menu items in the same group. - */ - static final int FLAG_APPEND_TO_GROUP = 0x0001; - - /** - * Flag for {@link #performShortcut}: if set, do not close the menu after - * executing the shortcut. - */ - static final int FLAG_PERFORM_NO_CLOSE = 0x0001; - - /** - * Flag for {@link #performShortcut(int, KeyEvent, int)}: if set, always - * close the menu after executing the shortcut. Closing the menu also resets - * the prepared state. - */ - static final int FLAG_ALWAYS_PERFORM_CLOSE = 0x0002; - - /** - * Add a new item to the menu. This item displays the given title for its - * label. - * - * @param title The text to display for the item. - * @return The newly added menu item. - */ - public MenuItem add(CharSequence title); - - /** - * Add a new item to the menu. This item displays the given title for its - * label. - * - * @param titleRes Resource identifier of title string. - * @return The newly added menu item. - */ - public MenuItem add(int titleRes); - - /** - * Add a new item to the menu. This item displays the given title for its - * label. - * - * @param groupId The group identifier that this item should be part of. - * This can be used to define groups of items for batch state - * changes. Normally use {@link #NONE} if an item should not be in a - * group. - * @param itemId Unique item ID. Use {@link #NONE} if you do not need a - * unique ID. - * @param order The order for the item. Use {@link #NONE} if you do not care - * about the order. See {@link MenuItem#getOrder()}. - * @param title The text to display for the item. - * @return The newly added menu item. - */ - public MenuItem add(int groupId, int itemId, int order, CharSequence title); - - /** - * Variation on {@link #add(int, int, int, CharSequence)} that takes a - * string resource identifier instead of the string itself. - * - * @param groupId The group identifier that this item should be part of. - * This can also be used to define groups of items for batch state - * changes. Normally use {@link #NONE} if an item should not be in a - * group. - * @param itemId Unique item ID. Use {@link #NONE} if you do not need a - * unique ID. - * @param order The order for the item. Use {@link #NONE} if you do not care - * about the order. See {@link MenuItem#getOrder()}. - * @param titleRes Resource identifier of title string. - * @return The newly added menu item. - */ - public MenuItem add(int groupId, int itemId, int order, int titleRes); - - /** - * Add a new sub-menu to the menu. This item displays the given title for - * its label. To modify other attributes on the submenu's menu item, use - * {@link SubMenu#getItem()}. - * - * @param title The text to display for the item. - * @return The newly added sub-menu - */ - SubMenu addSubMenu(final CharSequence title); - - /** - * Add a new sub-menu to the menu. This item displays the given title for - * its label. To modify other attributes on the submenu's menu item, use - * {@link SubMenu#getItem()}. - * - * @param titleRes Resource identifier of title string. - * @return The newly added sub-menu - */ - SubMenu addSubMenu(final int titleRes); - - /** - * Add a new sub-menu to the menu. This item displays the given - * title for its label. To modify other attributes on the - * submenu's menu item, use {@link SubMenu#getItem()}. - *

- * Note that you can only have one level of sub-menus, i.e. you cannnot add - * a subMenu to a subMenu: An {@link UnsupportedOperationException} will be - * thrown if you try. - * - * @param groupId The group identifier that this item should be part of. - * This can also be used to define groups of items for batch state - * changes. Normally use {@link #NONE} if an item should not be in a - * group. - * @param itemId Unique item ID. Use {@link #NONE} if you do not need a - * unique ID. - * @param order The order for the item. Use {@link #NONE} if you do not care - * about the order. See {@link MenuItem#getOrder()}. - * @param title The text to display for the item. - * @return The newly added sub-menu - */ - SubMenu addSubMenu(final int groupId, final int itemId, int order, final CharSequence title); - - /** - * Variation on {@link #addSubMenu(int, int, int, CharSequence)} that takes - * a string resource identifier for the title instead of the string itself. - * - * @param groupId The group identifier that this item should be part of. - * This can also be used to define groups of items for batch state - * changes. Normally use {@link #NONE} if an item should not be in a group. - * @param itemId Unique item ID. Use {@link #NONE} if you do not need a unique ID. - * @param order The order for the item. Use {@link #NONE} if you do not care about the - * order. See {@link MenuItem#getOrder()}. - * @param titleRes Resource identifier of title string. - * @return The newly added sub-menu - */ - SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes); - - /** - * Add a group of menu items corresponding to actions that can be performed - * for a particular Intent. The Intent is most often configured with a null - * action, the data that the current activity is working with, and includes - * either the {@link Intent#CATEGORY_ALTERNATIVE} or - * {@link Intent#CATEGORY_SELECTED_ALTERNATIVE} to find activities that have - * said they would like to be included as optional action. You can, however, - * use any Intent you want. - * - *

- * See {@link android.content.pm.PackageManager#queryIntentActivityOptions} - * for more * details on the caller, specifics, and - * intent arguments. The list returned by that function is used - * to populate the resulting menu items. - * - *

- * All of the menu items of possible options for the intent will be added - * with the given group and id. You can use the group to control ordering of - * the items in relation to other items in the menu. Normally this function - * will automatically remove any existing items in the menu in the same - * group and place a divider above and below the added items; this behavior - * can be modified with the flags parameter. For each of the - * generated items {@link MenuItem#setIntent} is called to associate the - * appropriate Intent with the item; this means the activity will - * automatically be started for you without having to do anything else. - * - * @param groupId The group identifier that the items should be part of. - * This can also be used to define groups of items for batch state - * changes. Normally use {@link #NONE} if the items should not be in - * a group. - * @param itemId Unique item ID. Use {@link #NONE} if you do not need a - * unique ID. - * @param order The order for the items. Use {@link #NONE} if you do not - * care about the order. See {@link MenuItem#getOrder()}. - * @param caller The current activity component name as defined by - * queryIntentActivityOptions(). - * @param specifics Specific items to place first as defined by - * queryIntentActivityOptions(). - * @param intent Intent describing the kinds of items to populate in the - * list as defined by queryIntentActivityOptions(). - * @param flags Additional options controlling how the items are added. - * @param outSpecificItems Optional array in which to place the menu items - * that were generated for each of the specifics that were - * requested. Entries may be null if no activity was found for that - * specific action. - * @return The number of menu items that were added. - * - * @see #FLAG_APPEND_TO_GROUP - * @see MenuItem#setIntent - * @see android.content.pm.PackageManager#queryIntentActivityOptions - */ - public int addIntentOptions(int groupId, int itemId, int order, - ComponentName caller, Intent[] specifics, - Intent intent, int flags, MenuItem[] outSpecificItems); - - /** - * Remove the item with the given identifier. - * - * @param id The item to be removed. If there is no item with this - * identifier, nothing happens. - */ - public void removeItem(int id); - - /** - * Remove all items in the given group. - * - * @param groupId The group to be removed. If there are no items in this - * group, nothing happens. - */ - public void removeGroup(int groupId); - - /** - * Remove all existing items from the menu, leaving it empty as if it had - * just been created. - */ - public void clear(); - - /** - * Control whether a particular group of items can show a check mark. This - * is similar to calling {@link MenuItem#setCheckable} on all of the menu items - * with the given group identifier, but in addition you can control whether - * this group contains a mutually-exclusive set items. This should be called - * after the items of the group have been added to the menu. - * - * @param group The group of items to operate on. - * @param checkable Set to true to allow a check mark, false to - * disallow. The default is false. - * @param exclusive If set to true, only one item in this group can be - * checked at a time; checking an item will automatically - * uncheck all others in the group. If set to false, each - * item can be checked independently of the others. - * - * @see MenuItem#setCheckable - * @see MenuItem#setChecked - */ - public void setGroupCheckable(int group, boolean checkable, boolean exclusive); - - /** - * Show or hide all menu items that are in the given group. - * - * @param group The group of items to operate on. - * @param visible If true the items are visible, else they are hidden. - * - * @see MenuItem#setVisible - */ - public void setGroupVisible(int group, boolean visible); - - /** - * Enable or disable all menu items that are in the given group. - * - * @param group The group of items to operate on. - * @param enabled If true the items will be enabled, else they will be disabled. - * - * @see MenuItem#setEnabled - */ - public void setGroupEnabled(int group, boolean enabled); - - /** - * Return whether the menu currently has item items that are visible. - * - * @return True if there is one or more item visible, - * else false. - */ - public boolean hasVisibleItems(); - - /** - * Return the menu item with a particular identifier. - * - * @param id The identifier to find. - * - * @return The menu item object, or null if there is no item with - * this identifier. - */ - public MenuItem findItem(int id); - - /** - * Get the number of items in the menu. Note that this will change any - * times items are added or removed from the menu. - * - * @return The item count. - */ - public int size(); - - /** - * Gets the menu item at the given index. - * - * @param index The index of the menu item to return. - * @return The menu item. - * @exception IndexOutOfBoundsException - * when {@code index < 0 || >= size()} - */ - public MenuItem getItem(int index); - - /** - * Closes the menu, if open. - */ - public void close(); - - /** - * Execute the menu item action associated with the given shortcut - * character. - * - * @param keyCode The keycode of the shortcut key. - * @param event Key event message. - * @param flags Additional option flags or 0. - * - * @return If the given shortcut exists and is shown, returns - * true; else returns false. - * - * @see #FLAG_PERFORM_NO_CLOSE - */ - public boolean performShortcut(int keyCode, KeyEvent event, int flags); - - /** - * Is a keypress one of the defined shortcut keys for this window. - * @param keyCode the key code from {@link KeyEvent} to check. - * @param event the {@link KeyEvent} to use to help check. - */ - boolean isShortcutKey(int keyCode, KeyEvent event); - - /** - * Execute the menu item action associated with the given menu identifier. - * - * @param id Identifier associated with the menu item. - * @param flags Additional option flags or 0. - * - * @return If the given identifier exists and is shown, returns - * true; else returns false. - * - * @see #FLAG_PERFORM_NO_CLOSE - */ - public boolean performIdentifierAction(int id, int flags); - - - /** - * Control whether the menu should be running in qwerty mode (alphabetic - * shortcuts) or 12-key mode (numeric shortcuts). - * - * @param isQwerty If true the menu will use alphabetic shortcuts; else it - * will use numeric shortcuts. - */ - public void setQwertyMode(boolean isQwerty); -} - diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/MenuInflater.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/view/MenuInflater.java deleted file mode 100755 index 969459749..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/MenuInflater.java +++ /dev/null @@ -1,472 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * 2011 Jake Wharton - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.view; - -import java.io.IOException; -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import org.xmlpull.v1.XmlPullParser; -import org.xmlpull.v1.XmlPullParserException; -import android.content.Context; -import android.content.res.TypedArray; -import android.content.res.XmlResourceParser; -import android.util.AttributeSet; -import android.util.Log; -import android.util.TypedValue; -import android.util.Xml; -import android.view.InflateException; -import android.view.View; - -import com.actionbarsherlock.R; -import com.actionbarsherlock.internal.view.menu.MenuItemImpl; - -/** - * This class is used to instantiate menu XML files into Menu objects. - *

- * For performance reasons, menu inflation relies heavily on pre-processing of - * XML files that is done at build time. Therefore, it is not currently possible - * to use MenuInflater with an XmlPullParser over a plain XML file at runtime; - * it only works with an XmlPullParser returned from a compiled resource (R. - * something file.) - */ -public class MenuInflater { - private static final String LOG_TAG = "MenuInflater"; - - /** Menu tag name in XML. */ - private static final String XML_MENU = "menu"; - - /** Group tag name in XML. */ - private static final String XML_GROUP = "group"; - - /** Item tag name in XML. */ - private static final String XML_ITEM = "item"; - - private static final int NO_ID = 0; - - private static final Class[] ACTION_VIEW_CONSTRUCTOR_SIGNATURE = new Class[] {Context.class}; - - private static final Class[] ACTION_PROVIDER_CONSTRUCTOR_SIGNATURE = ACTION_VIEW_CONSTRUCTOR_SIGNATURE; - - private final Object[] mActionViewConstructorArguments; - - private final Object[] mActionProviderConstructorArguments; - - private Context mContext; - - /** - * Constructs a menu inflater. - * - * @see Activity#getMenuInflater() - */ - public MenuInflater(Context context) { - mContext = context; - mActionViewConstructorArguments = new Object[] {context}; - mActionProviderConstructorArguments = mActionViewConstructorArguments; - } - - /** - * Inflate a menu hierarchy from the specified XML resource. Throws - * {@link InflateException} if there is an error. - * - * @param menuRes Resource ID for an XML layout resource to load (e.g., - * R.menu.main_activity) - * @param menu The Menu to inflate into. The items and submenus will be - * added to this Menu. - */ - public void inflate(int menuRes, Menu menu) { - XmlResourceParser parser = null; - try { - parser = mContext.getResources().getLayout(menuRes); - AttributeSet attrs = Xml.asAttributeSet(parser); - - parseMenu(parser, attrs, menu); - } catch (XmlPullParserException e) { - throw new InflateException("Error inflating menu XML", e); - } catch (IOException e) { - throw new InflateException("Error inflating menu XML", e); - } finally { - if (parser != null) parser.close(); - } - } - - /** - * Called internally to fill the given menu. If a sub menu is seen, it will - * call this recursively. - */ - private void parseMenu(XmlPullParser parser, AttributeSet attrs, Menu menu) - throws XmlPullParserException, IOException { - MenuState menuState = new MenuState(menu); - - int eventType = parser.getEventType(); - String tagName; - boolean lookingForEndOfUnknownTag = false; - String unknownTagName = null; - - // This loop will skip to the menu start tag - do { - if (eventType == XmlPullParser.START_TAG) { - tagName = parser.getName(); - if (tagName.equals(XML_MENU)) { - // Go to next tag - eventType = parser.next(); - break; - } - - throw new RuntimeException("Expecting menu, got " + tagName); - } - eventType = parser.next(); - } while (eventType != XmlPullParser.END_DOCUMENT); - - boolean reachedEndOfMenu = false; - while (!reachedEndOfMenu) { - switch (eventType) { - case XmlPullParser.START_TAG: - if (lookingForEndOfUnknownTag) { - break; - } - - tagName = parser.getName(); - if (tagName.equals(XML_GROUP)) { - menuState.readGroup(attrs); - } else if (tagName.equals(XML_ITEM)) { - menuState.readItem(attrs); - } else if (tagName.equals(XML_MENU)) { - // A menu start tag denotes a submenu for an item - SubMenu subMenu = menuState.addSubMenuItem(); - - // Parse the submenu into returned SubMenu - parseMenu(parser, attrs, subMenu); - } else { - lookingForEndOfUnknownTag = true; - unknownTagName = tagName; - } - break; - - case XmlPullParser.END_TAG: - tagName = parser.getName(); - if (lookingForEndOfUnknownTag && tagName.equals(unknownTagName)) { - lookingForEndOfUnknownTag = false; - unknownTagName = null; - } else if (tagName.equals(XML_GROUP)) { - menuState.resetGroup(); - } else if (tagName.equals(XML_ITEM)) { - // Add the item if it hasn't been added (if the item was - // a submenu, it would have been added already) - if (!menuState.hasAddedItem()) { - if (menuState.itemActionProvider != null && - menuState.itemActionProvider.hasSubMenu()) { - menuState.addSubMenuItem(); - } else { - menuState.addItem(); - } - } - } else if (tagName.equals(XML_MENU)) { - reachedEndOfMenu = true; - } - break; - - case XmlPullParser.END_DOCUMENT: - throw new RuntimeException("Unexpected end of document"); - } - - eventType = parser.next(); - } - } - - private static class InflatedOnMenuItemClickListener - implements MenuItem.OnMenuItemClickListener { - private static final Class[] PARAM_TYPES = new Class[] { MenuItem.class }; - - private Context mContext; - private Method mMethod; - - public InflatedOnMenuItemClickListener(Context context, String methodName) { - mContext = context; - Class c = context.getClass(); - try { - mMethod = c.getMethod(methodName, PARAM_TYPES); - } catch (Exception e) { - InflateException ex = new InflateException( - "Couldn't resolve menu item onClick handler " + methodName + - " in class " + c.getName()); - ex.initCause(e); - throw ex; - } - } - - public boolean onMenuItemClick(MenuItem item) { - try { - if (mMethod.getReturnType() == Boolean.TYPE) { - return (Boolean) mMethod.invoke(mContext, item); - } else { - mMethod.invoke(mContext, item); - return true; - } - } catch (Exception e) { - throw new RuntimeException(e); - } - } - } - - /** - * State for the current menu. - *

- * Groups can not be nested unless there is another menu (which will have - * its state class). - */ - private class MenuState { - private Menu menu; - - /* - * Group state is set on items as they are added, allowing an item to - * override its group state. (As opposed to set on items at the group end tag.) - */ - private int groupId; - private int groupCategory; - private int groupOrder; - private int groupCheckable; - private boolean groupVisible; - private boolean groupEnabled; - - private boolean itemAdded; - private int itemId; - private int itemCategoryOrder; - private CharSequence itemTitle; - private CharSequence itemTitleCondensed; - private int itemIconResId; - private char itemAlphabeticShortcut; - private char itemNumericShortcut; - /** - * Sync to attrs.xml enum: - * - 0: none - * - 1: all - * - 2: exclusive - */ - private int itemCheckable; - private boolean itemChecked; - private boolean itemVisible; - private boolean itemEnabled; - - /** - * Sync to attrs.xml enum, values in MenuItem: - * - 0: never - * - 1: ifRoom - * - 2: always - * - -1: Safe sentinel for "no value". - */ - private int itemShowAsAction; - - private int itemActionViewLayout; - private String itemActionViewClassName; - private String itemActionProviderClassName; - - private String itemListenerMethodName; - - private ActionProvider itemActionProvider; - - private static final int defaultGroupId = NO_ID; - private static final int defaultItemId = NO_ID; - private static final int defaultItemCategory = 0; - private static final int defaultItemOrder = 0; - private static final int defaultItemCheckable = 0; - private static final boolean defaultItemChecked = false; - private static final boolean defaultItemVisible = true; - private static final boolean defaultItemEnabled = true; - - public MenuState(final Menu menu) { - this.menu = menu; - - resetGroup(); - } - - public void resetGroup() { - groupId = defaultGroupId; - groupCategory = defaultItemCategory; - groupOrder = defaultItemOrder; - groupCheckable = defaultItemCheckable; - groupVisible = defaultItemVisible; - groupEnabled = defaultItemEnabled; - } - - /** - * Called when the parser is pointing to a group tag. - */ - public void readGroup(AttributeSet attrs) { - TypedArray a = mContext.obtainStyledAttributes(attrs, - R.styleable.SherlockMenuGroup); - - groupId = a.getResourceId(R.styleable.SherlockMenuGroup_android_id, defaultGroupId); - groupCategory = a.getInt(R.styleable.SherlockMenuGroup_android_menuCategory, defaultItemCategory); - groupOrder = a.getInt(R.styleable.SherlockMenuGroup_android_orderInCategory, defaultItemOrder); - groupCheckable = a.getInt(R.styleable.SherlockMenuGroup_android_checkableBehavior, defaultItemCheckable); - groupVisible = a.getBoolean(R.styleable.SherlockMenuGroup_android_visible, defaultItemVisible); - groupEnabled = a.getBoolean(R.styleable.SherlockMenuGroup_android_enabled, defaultItemEnabled); - - a.recycle(); - } - - /** - * Called when the parser is pointing to an item tag. - */ - public void readItem(AttributeSet attrs) { - TypedArray a = mContext.obtainStyledAttributes(attrs, - R.styleable.SherlockMenuItem); - - // Inherit attributes from the group as default value - itemId = a.getResourceId(R.styleable.SherlockMenuItem_android_id, defaultItemId); - final int category = a.getInt(R.styleable.SherlockMenuItem_android_menuCategory, groupCategory); - final int order = a.getInt(R.styleable.SherlockMenuItem_android_orderInCategory, groupOrder); - itemCategoryOrder = (category & Menu.CATEGORY_MASK) | (order & Menu.USER_MASK); - itemTitle = a.getText(R.styleable.SherlockMenuItem_android_title); - itemTitleCondensed = a.getText(R.styleable.SherlockMenuItem_android_titleCondensed); - itemIconResId = a.getResourceId(R.styleable.SherlockMenuItem_android_icon, 0); - itemAlphabeticShortcut = - getShortcut(a.getString(R.styleable.SherlockMenuItem_android_alphabeticShortcut)); - itemNumericShortcut = - getShortcut(a.getString(R.styleable.SherlockMenuItem_android_numericShortcut)); - if (a.hasValue(R.styleable.SherlockMenuItem_android_checkable)) { - // Item has attribute checkable, use it - itemCheckable = a.getBoolean(R.styleable.SherlockMenuItem_android_checkable, false) ? 1 : 0; - } else { - // Item does not have attribute, use the group's (group can have one more state - // for checkable that represents the exclusive checkable) - itemCheckable = groupCheckable; - } - - itemChecked = a.getBoolean(R.styleable.SherlockMenuItem_android_checked, defaultItemChecked); - itemVisible = a.getBoolean(R.styleable.SherlockMenuItem_android_visible, groupVisible); - itemEnabled = a.getBoolean(R.styleable.SherlockMenuItem_android_enabled, groupEnabled); - - TypedValue value = new TypedValue(); - a.getValue(R.styleable.SherlockMenuItem_android_showAsAction, value); - itemShowAsAction = value.type == TypedValue.TYPE_INT_HEX ? value.data : -1; - - 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); - - final boolean hasActionProvider = itemActionProviderClassName != null; - if (hasActionProvider && itemActionViewLayout == 0 && itemActionViewClassName == null) { - itemActionProvider = newInstance(itemActionProviderClassName, - ACTION_PROVIDER_CONSTRUCTOR_SIGNATURE, - mActionProviderConstructorArguments); - } else { - if (hasActionProvider) { - Log.w(LOG_TAG, "Ignoring attribute 'actionProviderClass'." - + " Action view already specified."); - } - itemActionProvider = null; - } - - a.recycle(); - - itemAdded = false; - } - - private char getShortcut(String shortcutString) { - if (shortcutString == null) { - return 0; - } else { - return shortcutString.charAt(0); - } - } - - private void setItem(MenuItem item) { - item.setChecked(itemChecked) - .setVisible(itemVisible) - .setEnabled(itemEnabled) - .setCheckable(itemCheckable >= 1) - .setTitleCondensed(itemTitleCondensed) - .setIcon(itemIconResId) - .setAlphabeticShortcut(itemAlphabeticShortcut) - .setNumericShortcut(itemNumericShortcut); - - if (itemShowAsAction >= 0) { - item.setShowAsAction(itemShowAsAction); - } - - if (itemListenerMethodName != null) { - if (mContext.isRestricted()) { - throw new IllegalStateException("The android:onClick attribute cannot " - + "be used within a restricted context"); - } - item.setOnMenuItemClickListener( - new InflatedOnMenuItemClickListener(mContext, itemListenerMethodName)); - } - - if (itemCheckable >= 2) { - if (item instanceof MenuItemImpl) { - MenuItemImpl impl = (MenuItemImpl) item; - impl.setExclusiveCheckable(true); - } else { - menu.setGroupCheckable(groupId, true, true); - } - } - - boolean actionViewSpecified = false; - if (itemActionViewClassName != null) { - View actionView = (View) newInstance(itemActionViewClassName, - ACTION_VIEW_CONSTRUCTOR_SIGNATURE, mActionViewConstructorArguments); - item.setActionView(actionView); - actionViewSpecified = true; - } - if (itemActionViewLayout > 0) { - if (!actionViewSpecified) { - item.setActionView(itemActionViewLayout); - actionViewSpecified = true; - } else { - Log.w(LOG_TAG, "Ignoring attribute 'itemActionViewLayout'." - + " Action view already specified."); - } - } - if (itemActionProvider != null) { - item.setActionProvider(itemActionProvider); - } - } - - public void addItem() { - itemAdded = true; - setItem(menu.add(groupId, itemId, itemCategoryOrder, itemTitle)); - } - - public SubMenu addSubMenuItem() { - itemAdded = true; - SubMenu subMenu = menu.addSubMenu(groupId, itemId, itemCategoryOrder, itemTitle); - setItem(subMenu.getItem()); - return subMenu; - } - - public boolean hasAddedItem() { - return itemAdded; - } - - @SuppressWarnings("unchecked") - private T newInstance(String className, Class[] constructorSignature, - Object[] arguments) { - try { - Class clazz = mContext.getClassLoader().loadClass(className); - Constructor constructor = clazz.getConstructor(constructorSignature); - return (T) constructor.newInstance(arguments); - } catch (Exception e) { - Log.w(LOG_TAG, "Cannot instantiate class: " + className, e); - } - return null; - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/MenuItem.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/view/MenuItem.java deleted file mode 100755 index 7fc3aa430..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/MenuItem.java +++ /dev/null @@ -1,598 +0,0 @@ -/* - * Copyright (C) 2008 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.view; - -import android.content.Intent; -import android.graphics.drawable.Drawable; -import android.view.ContextMenu.ContextMenuInfo; -import android.view.View; - -/** - * Interface for direct access to a previously created menu item. - *

- * An Item is returned by calling one of the {@link android.view.Menu#add} - * methods. - *

- * For a feature set of specific menu types, see {@link Menu}. - * - *

- *

Developer Guides

- *

For information about creating menus, read the - * Menus developer guide.

- *
- */ -public interface MenuItem { - /* - * These should be kept in sync with attrs.xml enum constants for showAsAction - */ - /** Never show this item as a button in an Action Bar. */ - public static final int SHOW_AS_ACTION_NEVER = android.view.MenuItem.SHOW_AS_ACTION_NEVER; - /** Show this item as a button in an Action Bar if the system decides there is room for it. */ - public static final int SHOW_AS_ACTION_IF_ROOM = android.view.MenuItem.SHOW_AS_ACTION_IF_ROOM; - /** - * Always show this item as a button in an Action Bar. - * Use sparingly! If too many items are set to always show in the Action Bar it can - * crowd the Action Bar and degrade the user experience on devices with smaller screens. - * A good rule of thumb is to have no more than 2 items set to always show at a time. - */ - public static final int SHOW_AS_ACTION_ALWAYS = android.view.MenuItem.SHOW_AS_ACTION_ALWAYS; - - /** - * When this item is in the action bar, always show it with a text label even if - * it also has an icon specified. - */ - public static final int SHOW_AS_ACTION_WITH_TEXT = android.view.MenuItem.SHOW_AS_ACTION_WITH_TEXT; - - /** - * This item's action view collapses to a normal menu item. - * When expanded, the action view temporarily takes over - * a larger segment of its container. - */ - public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = android.view.MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW; - - /** - * Interface definition for a callback to be invoked when a menu item is - * clicked. - * - * @see Activity#onContextItemSelected(MenuItem) - * @see Activity#onOptionsItemSelected(MenuItem) - */ - public interface OnMenuItemClickListener { - /** - * Called when a menu item has been invoked. This is the first code - * that is executed; if it returns true, no other callbacks will be - * executed. - * - * @param item The menu item that was invoked. - * - * @return Return true to consume this click and prevent others from - * executing. - */ - public boolean onMenuItemClick(MenuItem item); - } - - /** - * Interface definition for a callback to be invoked when a menu item - * marked with {@link MenuItem#SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW} is - * expanded or collapsed. - * - * @see MenuItem#expandActionView() - * @see MenuItem#collapseActionView() - * @see MenuItem#setShowAsActionFlags(int) - */ - public interface OnActionExpandListener { - /** - * Called when a menu item with {@link MenuItem#SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW} - * is expanded. - * @param item Item that was expanded - * @return true if the item should expand, false if expansion should be suppressed. - */ - public boolean onMenuItemActionExpand(MenuItem item); - - /** - * Called when a menu item with {@link MenuItem#SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW} - * is collapsed. - * @param item Item that was collapsed - * @return true if the item should collapse, false if collapsing should be suppressed. - */ - public boolean onMenuItemActionCollapse(MenuItem item); - } - - /** - * Return the identifier for this menu item. The identifier can not - * be changed after the menu is created. - * - * @return The menu item's identifier. - */ - public int getItemId(); - - /** - * Return the group identifier that this menu item is part of. The group - * identifier can not be changed after the menu is created. - * - * @return The menu item's group identifier. - */ - public int getGroupId(); - - /** - * Return the category and order within the category of this item. This - * item will be shown before all items (within its category) that have - * order greater than this value. - *

- * An order integer contains the item's category (the upper bits of the - * integer; set by or/add the category with the order within the - * category) and the ordering of the item within that category (the - * lower bits). Example categories are {@link Menu#CATEGORY_SYSTEM}, - * {@link Menu#CATEGORY_SECONDARY}, {@link Menu#CATEGORY_ALTERNATIVE}, - * {@link Menu#CATEGORY_CONTAINER}. See {@link Menu} for a full list. - * - * @return The order of this item. - */ - public int getOrder(); - - /** - * Change the title associated with this item. - * - * @param title The new text to be displayed. - * @return This Item so additional setters can be called. - */ - public MenuItem setTitle(CharSequence title); - - /** - * Change the title associated with this item. - *

- * Some menu types do not sufficient space to show the full title, and - * instead a condensed title is preferred. See {@link Menu} for more - * information. - * - * @param title The resource id of the new text to be displayed. - * @return This Item so additional setters can be called. - * @see #setTitleCondensed(CharSequence) - */ - - public MenuItem setTitle(int title); - - /** - * Retrieve the current title of the item. - * - * @return The title. - */ - public CharSequence getTitle(); - - /** - * Change the condensed title associated with this item. The condensed - * title is used in situations where the normal title may be too long to - * be displayed. - * - * @param title The new text to be displayed as the condensed title. - * @return This Item so additional setters can be called. - */ - public MenuItem setTitleCondensed(CharSequence title); - - /** - * Retrieve the current condensed title of the item. If a condensed - * title was never set, it will return the normal title. - * - * @return The condensed title, if it exists. - * Otherwise the normal title. - */ - public CharSequence getTitleCondensed(); - - /** - * Change the icon associated with this item. This icon will not always be - * shown, so the title should be sufficient in describing this item. See - * {@link Menu} for the menu types that support icons. - * - * @param icon The new icon (as a Drawable) to be displayed. - * @return This Item so additional setters can be called. - */ - public MenuItem setIcon(Drawable icon); - - /** - * Change the icon associated with this item. This icon will not always be - * shown, so the title should be sufficient in describing this item. See - * {@link Menu} for the menu types that support icons. - *

- * This method will set the resource ID of the icon which will be used to - * lazily get the Drawable when this item is being shown. - * - * @param iconRes The new icon (as a resource ID) to be displayed. - * @return This Item so additional setters can be called. - */ - public MenuItem setIcon(int iconRes); - - /** - * Returns the icon for this item as a Drawable (getting it from resources if it hasn't been - * loaded before). - * - * @return The icon as a Drawable. - */ - public Drawable getIcon(); - - /** - * Change the Intent associated with this item. By default there is no - * Intent associated with a menu item. If you set one, and nothing - * else handles the item, then the default behavior will be to call - * {@link android.content.Context#startActivity} with the given Intent. - * - *

Note that setIntent() can not be used with the versions of - * {@link Menu#add} that take a Runnable, because {@link Runnable#run} - * does not return a value so there is no way to tell if it handled the - * item. In this case it is assumed that the Runnable always handles - * the item, and the intent will never be started. - * - * @see #getIntent - * @param intent The Intent to associated with the item. This Intent - * object is not copied, so be careful not to - * modify it later. - * @return This Item so additional setters can be called. - */ - public MenuItem setIntent(Intent intent); - - /** - * Return the Intent associated with this item. This returns a - * reference to the Intent which you can change as desired to modify - * what the Item is holding. - * - * @see #setIntent - * @return Returns the last value supplied to {@link #setIntent}, or - * null. - */ - public Intent getIntent(); - - /** - * Change both the numeric and alphabetic shortcut associated with this - * item. Note that the shortcut will be triggered when the key that - * generates the given character is pressed alone or along with with the alt - * key. Also note that case is not significant and that alphabetic shortcut - * characters will be displayed in lower case. - *

- * See {@link Menu} for the menu types that support shortcuts. - * - * @param numericChar The numeric shortcut key. This is the shortcut when - * using a numeric (e.g., 12-key) keyboard. - * @param alphaChar The alphabetic shortcut key. This is the shortcut when - * using a keyboard with alphabetic keys. - * @return This Item so additional setters can be called. - */ - public MenuItem setShortcut(char numericChar, char alphaChar); - - /** - * Change the numeric shortcut associated with this item. - *

- * See {@link Menu} for the menu types that support shortcuts. - * - * @param numericChar The numeric shortcut key. This is the shortcut when - * using a 12-key (numeric) keyboard. - * @return This Item so additional setters can be called. - */ - public MenuItem setNumericShortcut(char numericChar); - - /** - * Return the char for this menu item's numeric (12-key) shortcut. - * - * @return Numeric character to use as a shortcut. - */ - public char getNumericShortcut(); - - /** - * Change the alphabetic shortcut associated with this item. The shortcut - * will be triggered when the key that generates the given character is - * pressed alone or along with with the alt key. Case is not significant and - * shortcut characters will be displayed in lower case. Note that menu items - * with the characters '\b' or '\n' as shortcuts will get triggered by the - * Delete key or Carriage Return key, respectively. - *

- * See {@link Menu} for the menu types that support shortcuts. - * - * @param alphaChar The alphabetic shortcut key. This is the shortcut when - * using a keyboard with alphabetic keys. - * @return This Item so additional setters can be called. - */ - public MenuItem setAlphabeticShortcut(char alphaChar); - - /** - * Return the char for this menu item's alphabetic shortcut. - * - * @return Alphabetic character to use as a shortcut. - */ - public char getAlphabeticShortcut(); - - /** - * Control whether this item can display a check mark. Setting this does - * not actually display a check mark (see {@link #setChecked} for that); - * rather, it ensures there is room in the item in which to display a - * check mark. - *

- * See {@link Menu} for the menu types that support check marks. - * - * @param checkable Set to true to allow a check mark, false to - * disallow. The default is false. - * @see #setChecked - * @see #isCheckable - * @see Menu#setGroupCheckable - * @return This Item so additional setters can be called. - */ - public MenuItem setCheckable(boolean checkable); - - /** - * Return whether the item can currently display a check mark. - * - * @return If a check mark can be displayed, returns true. - * - * @see #setCheckable - */ - public boolean isCheckable(); - - /** - * Control whether this item is shown with a check mark. Note that you - * must first have enabled checking with {@link #setCheckable} or else - * the check mark will not appear. If this item is a member of a group that contains - * mutually-exclusive items (set via {@link Menu#setGroupCheckable(int, boolean, boolean)}, - * the other items in the group will be unchecked. - *

- * See {@link Menu} for the menu types that support check marks. - * - * @see #setCheckable - * @see #isChecked - * @see Menu#setGroupCheckable - * @param checked Set to true to display a check mark, false to hide - * it. The default value is false. - * @return This Item so additional setters can be called. - */ - public MenuItem setChecked(boolean checked); - - /** - * Return whether the item is currently displaying a check mark. - * - * @return If a check mark is displayed, returns true. - * - * @see #setChecked - */ - public boolean isChecked(); - - /** - * Sets the visibility of the menu item. Even if a menu item is not visible, - * it may still be invoked via its shortcut (to completely disable an item, - * set it to invisible and {@link #setEnabled(boolean) disabled}). - * - * @param visible If true then the item will be visible; if false it is - * hidden. - * @return This Item so additional setters can be called. - */ - public MenuItem setVisible(boolean visible); - - /** - * Return the visibility of the menu item. - * - * @return If true the item is visible; else it is hidden. - */ - public boolean isVisible(); - - /** - * Sets whether the menu item is enabled. Disabling a menu item will not - * allow it to be invoked via its shortcut. The menu item will still be - * visible. - * - * @param enabled If true then the item will be invokable; if false it is - * won't be invokable. - * @return This Item so additional setters can be called. - */ - public MenuItem setEnabled(boolean enabled); - - /** - * Return the enabled state of the menu item. - * - * @return If true the item is enabled and hence invokable; else it is not. - */ - public boolean isEnabled(); - - /** - * Check whether this item has an associated sub-menu. I.e. it is a - * sub-menu of another menu. - * - * @return If true this item has a menu; else it is a - * normal item. - */ - public boolean hasSubMenu(); - - /** - * Get the sub-menu to be invoked when this item is selected, if it has - * one. See {@link #hasSubMenu()}. - * - * @return The associated menu if there is one, else null - */ - public SubMenu getSubMenu(); - - /** - * Set a custom listener for invocation of this menu item. In most - * situations, it is more efficient and easier to use - * {@link Activity#onOptionsItemSelected(MenuItem)} or - * {@link Activity#onContextItemSelected(MenuItem)}. - * - * @param menuItemClickListener The object to receive invokations. - * @return This Item so additional setters can be called. - * @see Activity#onOptionsItemSelected(MenuItem) - * @see Activity#onContextItemSelected(MenuItem) - */ - public MenuItem setOnMenuItemClickListener(MenuItem.OnMenuItemClickListener menuItemClickListener); - - /** - * Gets the extra information linked to this menu item. This extra - * information is set by the View that added this menu item to the - * menu. - * - * @see OnCreateContextMenuListener - * @return The extra information linked to the View that added this - * menu item to the menu. This can be null. - */ - public ContextMenuInfo getMenuInfo(); - - /** - * Sets how this item should display in the presence of an Action Bar. - * The parameter actionEnum is a flag set. One of {@link #SHOW_AS_ACTION_ALWAYS}, - * {@link #SHOW_AS_ACTION_IF_ROOM}, or {@link #SHOW_AS_ACTION_NEVER} should - * be used, and you may optionally OR the value with {@link #SHOW_AS_ACTION_WITH_TEXT}. - * SHOW_AS_ACTION_WITH_TEXT requests that when the item is shown as an action, - * it should be shown with a text label. - * - * @param actionEnum How the item should display. One of - * {@link #SHOW_AS_ACTION_ALWAYS}, {@link #SHOW_AS_ACTION_IF_ROOM}, or - * {@link #SHOW_AS_ACTION_NEVER}. SHOW_AS_ACTION_NEVER is the default. - * - * @see android.app.ActionBar - * @see #setActionView(View) - */ - public void setShowAsAction(int actionEnum); - - /** - * Sets how this item should display in the presence of an Action Bar. - * The parameter actionEnum is a flag set. One of {@link #SHOW_AS_ACTION_ALWAYS}, - * {@link #SHOW_AS_ACTION_IF_ROOM}, or {@link #SHOW_AS_ACTION_NEVER} should - * be used, and you may optionally OR the value with {@link #SHOW_AS_ACTION_WITH_TEXT}. - * SHOW_AS_ACTION_WITH_TEXT requests that when the item is shown as an action, - * it should be shown with a text label. - * - *

Note: This method differs from {@link #setShowAsAction(int)} only in that it - * returns the current MenuItem instance for call chaining. - * - * @param actionEnum How the item should display. One of - * {@link #SHOW_AS_ACTION_ALWAYS}, {@link #SHOW_AS_ACTION_IF_ROOM}, or - * {@link #SHOW_AS_ACTION_NEVER}. SHOW_AS_ACTION_NEVER is the default. - * - * @see android.app.ActionBar - * @see #setActionView(View) - * @return This MenuItem instance for call chaining. - */ - public MenuItem setShowAsActionFlags(int actionEnum); - - /** - * Set an action view for this menu item. An action view will be displayed in place - * of an automatically generated menu item element in the UI when this item is shown - * as an action within a parent. - *

- * Note: Setting an action view overrides the action provider - * set via {@link #setActionProvider(ActionProvider)}. - *

- * - * @param view View to use for presenting this item to the user. - * @return This Item so additional setters can be called. - * - * @see #setShowAsAction(int) - */ - public MenuItem setActionView(View view); - - /** - * Set an action view for this menu item. An action view will be displayed in place - * of an automatically generated menu item element in the UI when this item is shown - * as an action within a parent. - *

- * Note: Setting an action view overrides the action provider - * set via {@link #setActionProvider(ActionProvider)}. - *

- * - * @param resId Layout resource to use for presenting this item to the user. - * @return This Item so additional setters can be called. - * - * @see #setShowAsAction(int) - */ - public MenuItem setActionView(int resId); - - /** - * Returns the currently set action view for this menu item. - * - * @return This item's action view - * - * @see #setActionView(View) - * @see #setShowAsAction(int) - */ - public View getActionView(); - - /** - * Sets the {@link ActionProvider} responsible for creating an action view if - * the item is placed on the action bar. The provider also provides a default - * action invoked if the item is placed in the overflow menu. - *

- * Note: Setting an action provider overrides the action view - * set via {@link #setActionView(int)} or {@link #setActionView(View)}. - *

- * - * @param actionProvider The action provider. - * @return This Item so additional setters can be called. - * - * @see ActionProvider - */ - public MenuItem setActionProvider(ActionProvider actionProvider); - - /** - * Gets the {@link ActionProvider}. - * - * @return The action provider. - * - * @see ActionProvider - * @see #setActionProvider(ActionProvider) - */ - public ActionProvider getActionProvider(); - - /** - * Expand the action view associated with this menu item. - * The menu item must have an action view set, as well as - * the showAsAction flag {@link #SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW}. - * If a listener has been set using {@link #setOnActionExpandListener(OnActionExpandListener)} - * it will have its {@link OnActionExpandListener#onMenuItemActionExpand(MenuItem)} - * method invoked. The listener may return false from this method to prevent expanding - * the action view. - * - * @return true if the action view was expanded, false otherwise. - */ - public boolean expandActionView(); - - /** - * Collapse the action view associated with this menu item. - * The menu item must have an action view set, as well as the showAsAction flag - * {@link #SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW}. If a listener has been set using - * {@link #setOnActionExpandListener(OnActionExpandListener)} it will have its - * {@link OnActionExpandListener#onMenuItemActionCollapse(MenuItem)} method invoked. - * The listener may return false from this method to prevent collapsing the action view. - * - * @return true if the action view was collapsed, false otherwise. - */ - public boolean collapseActionView(); - - /** - * Returns true if this menu item's action view has been expanded. - * - * @return true if the item's action view is expanded, false otherwise. - * - * @see #expandActionView() - * @see #collapseActionView() - * @see #SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW - * @see OnActionExpandListener - */ - public boolean isActionViewExpanded(); - - /** - * Set an {@link OnActionExpandListener} on this menu item to be notified when - * the associated action view is expanded or collapsed. The menu item must - * be configured to expand or collapse its action view using the flag - * {@link #SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW}. - * - * @param listener Listener that will respond to expand/collapse events - * @return This menu item instance for call chaining - */ - public MenuItem setOnActionExpandListener(OnActionExpandListener listener); -} \ No newline at end of file diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/SubMenu.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/view/SubMenu.java deleted file mode 100755 index 397fd1c2d..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/SubMenu.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.view; - -import android.graphics.drawable.Drawable; -import android.view.View; - -/** - * Subclass of {@link Menu} for sub menus. - *

- * Sub menus do not support item icons, or nested sub menus. - * - *

- *

Developer Guides

- *

For information about creating menus, read the - * Menus developer guide.

- *
- */ - -public interface SubMenu extends Menu { - /** - * Sets the submenu header's title to the title given in titleRes - * resource identifier. - * - * @param titleRes The string resource identifier used for the title. - * @return This SubMenu so additional setters can be called. - */ - public SubMenu setHeaderTitle(int titleRes); - - /** - * Sets the submenu header's title to the title given in title. - * - * @param title The character sequence used for the title. - * @return This SubMenu so additional setters can be called. - */ - public SubMenu setHeaderTitle(CharSequence title); - - /** - * Sets the submenu header's icon to the icon given in iconRes - * resource id. - * - * @param iconRes The resource identifier used for the icon. - * @return This SubMenu so additional setters can be called. - */ - public SubMenu setHeaderIcon(int iconRes); - - /** - * Sets the submenu header's icon to the icon given in icon - * {@link Drawable}. - * - * @param icon The {@link Drawable} used for the icon. - * @return This SubMenu so additional setters can be called. - */ - public SubMenu setHeaderIcon(Drawable icon); - - /** - * Sets the header of the submenu to the {@link View} given in - * view. This replaces the header title and icon (and those - * replace this). - * - * @param view The {@link View} used for the header. - * @return This SubMenu so additional setters can be called. - */ - public SubMenu setHeaderView(View view); - - /** - * Clears the header of the submenu. - */ - public void clearHeader(); - - /** - * Change the icon associated with this submenu's item in its parent menu. - * - * @see MenuItem#setIcon(int) - * @param iconRes The new icon (as a resource ID) to be displayed. - * @return This SubMenu so additional setters can be called. - */ - public SubMenu setIcon(int iconRes); - - /** - * Change the icon associated with this submenu's item in its parent menu. - * - * @see MenuItem#setIcon(Drawable) - * @param icon The new icon (as a Drawable) to be displayed. - * @return This SubMenu so additional setters can be called. - */ - public SubMenu setIcon(Drawable icon); - - /** - * Gets the {@link MenuItem} that represents this submenu in the parent - * menu. Use this for setting additional item attributes. - * - * @return The {@link MenuItem} that launches the submenu when invoked. - */ - public MenuItem getItem(); -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/Window.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/view/Window.java deleted file mode 100755 index a340a4291..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/view/Window.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * Copyright (C) 2011 Jake Wharton - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.view; - -import android.content.Context; - -/** - *

Abstract base class for a top-level window look and behavior policy. An - * instance of this class should be used as the top-level view added to the - * window manager. It provides standard UI policies such as a background, title - * area, default key processing, etc.

- * - *

The only existing implementation of this abstract class is - * android.policy.PhoneWindow, which you should instantiate when needing a - * Window. Eventually that class will be refactored and a factory method added - * for creating Window instances without knowing about a particular - * implementation.

- */ -public abstract class Window extends android.view.Window { - public static final long FEATURE_ACTION_BAR = android.view.Window.FEATURE_ACTION_BAR; - public static final long FEATURE_ACTION_BAR_OVERLAY = android.view.Window.FEATURE_ACTION_BAR_OVERLAY; - public static final long FEATURE_ACTION_MODE_OVERLAY = android.view.Window.FEATURE_ACTION_MODE_OVERLAY; - public static final long FEATURE_NO_TITLE = android.view.Window.FEATURE_NO_TITLE; - public static final long FEATURE_PROGRESS = android.view.Window.FEATURE_PROGRESS; - public static final long FEATURE_INDETERMINATE_PROGRESS = android.view.Window.FEATURE_INDETERMINATE_PROGRESS; - - /** - * Create a new instance for a context. - * - * @param context Context. - */ - private Window(Context context) { - super(context); - } - - - public interface Callback { - /** - * Called when a panel's menu item has been selected by the user. - * - * @param featureId The panel that the menu is in. - * @param item The menu item that was selected. - * - * @return boolean Return true to finish processing of selection, or - * false to perform the normal menu handling (calling its - * Runnable or sending a Message to its target Handler). - */ - public boolean onMenuItemSelected(int featureId, MenuItem item); - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserModel.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserModel.java deleted file mode 100755 index 379207471..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserModel.java +++ /dev/null @@ -1,1131 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.widget; - -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.pm.ResolveInfo; -import android.database.DataSetObservable; -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; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.math.BigDecimal; -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; - -/** - *

- * This class represents a data model for choosing a component for handing a - * given {@link Intent}. The model is responsible for querying the system for - * activities that can handle the given intent and order found activities - * based on historical data of previous choices. The historical data is stored - * in an application private file. If a client does not want to have persistent - * choice history the file can be omitted, thus the activities will be ordered - * based on historical usage for the current session. - *

- *

- * For each backing history file there is a singleton instance of this class. Thus, - * several clients that specify the same history file will share the same model. Note - * that if multiple clients are sharing the same model they should implement semantically - * equivalent functionality since setting the model intent will change the found - * activities and they may be inconsistent with the functionality of some of the clients. - * For example, choosing a share activity can be implemented by a single backing - * model and two different views for performing the selection. If however, one of the - * views is used for sharing but the other for importing, for example, then each - * view should be backed by a separate model. - *

- *

- * The way clients interact with this class is as follows: - *

- *

- *

- * 
- *  // Get a model and set it to a couple of clients with semantically similar function.
- *  ActivityChooserModel dataModel =
- *      ActivityChooserModel.get(context, "task_specific_history_file_name.xml");
- *
- *  ActivityChooserModelClient modelClient1 = getActivityChooserModelClient1();
- *  modelClient1.setActivityChooserModel(dataModel);
- *
- *  ActivityChooserModelClient modelClient2 = getActivityChooserModelClient2();
- *  modelClient2.setActivityChooserModel(dataModel);
- *
- *  // Set an intent to choose a an activity for.
- *  dataModel.setIntent(intent);
- * 
- * 
- * 

- *

- * Note: This class is thread safe. - *

- * - * @hide - */ -class ActivityChooserModel extends DataSetObservable { - - /** - * Client that utilizes an {@link ActivityChooserModel}. - */ - public interface ActivityChooserModelClient { - - /** - * Sets the {@link ActivityChooserModel}. - * - * @param dataModel The model. - */ - public void setActivityChooserModel(ActivityChooserModel dataModel); - } - - /** - * Defines a sorter that is responsible for sorting the activities - * based on the provided historical choices and an intent. - */ - public interface ActivitySorter { - - /** - * Sorts the activities in descending order of relevance - * based on previous history and an intent. - * - * @param intent The {@link Intent}. - * @param activities Activities to be sorted. - * @param historicalRecords Historical records. - */ - // This cannot be done by a simple comparator since an Activity weight - // is computed from history. Note that Activity implements Comparable. - public void sort(Intent intent, List activities, - List historicalRecords); - } - - /** - * Listener for choosing an activity. - */ - public interface OnChooseActivityListener { - - /** - * Called when an activity has been chosen. The client can decide whether - * an activity can be chosen and if so the caller of - * {@link ActivityChooserModel#chooseActivity(int)} will receive and {@link Intent} - * for launching it. - *

- * Note: Modifying the intent is not permitted and - * any changes to the latter will be ignored. - *

- * - * @param host The listener's host model. - * @param intent The intent for launching the chosen activity. - * @return Whether the intent is handled and should not be delivered to clients. - * - * @see ActivityChooserModel#chooseActivity(int) - */ - public boolean onChooseActivity(ActivityChooserModel host, Intent intent); - } - - /** - * Flag for selecting debug mode. - */ - private static final boolean DEBUG = false; - - /** - * Tag used for logging. - */ - private static final String LOG_TAG = ActivityChooserModel.class.getSimpleName(); - - /** - * The root tag in the history file. - */ - private static final String TAG_HISTORICAL_RECORDS = "historical-records"; - - /** - * The tag for a record in the history file. - */ - private static final String TAG_HISTORICAL_RECORD = "historical-record"; - - /** - * Attribute for the activity. - */ - private static final String ATTRIBUTE_ACTIVITY = "activity"; - - /** - * Attribute for the choice time. - */ - private static final String ATTRIBUTE_TIME = "time"; - - /** - * Attribute for the choice weight. - */ - private static final String ATTRIBUTE_WEIGHT = "weight"; - - /** - * The default name of the choice history file. - */ - public static final String DEFAULT_HISTORY_FILE_NAME = - "activity_choser_model_history.xml"; - - /** - * The default maximal length of the choice history. - */ - public static final int DEFAULT_HISTORY_MAX_LENGTH = 50; - - /** - * The amount with which to inflate a chosen activity when set as default. - */ - private static final int DEFAULT_ACTIVITY_INFLATION = 5; - - /** - * Default weight for a choice record. - */ - private static final float DEFAULT_HISTORICAL_RECORD_WEIGHT = 1.0f; - - /** - * The extension of the history file. - */ - private static final String HISTORY_FILE_EXTENSION = ".xml"; - - /** - * An invalid item index. - */ - private static final int INVALID_INDEX = -1; - - /** - * Lock to guard the model registry. - */ - private static final Object sRegistryLock = new Object(); - - /** - * This the registry for data models. - */ - private static final Map sDataModelRegistry = - new HashMap(); - - /** - * Lock for synchronizing on this instance. - */ - private final Object mInstanceLock = new Object(); - - /** - * List of activities that can handle the current intent. - */ - private final List mActivites = new ArrayList(); - - /** - * List with historical choice records. - */ - private final List mHistoricalRecords = new ArrayList(); - - /** - * Context for accessing resources. - */ - private final Context mContext; - - /** - * The name of the history file that backs this model. - */ - private final String mHistoryFileName; - - /** - * The intent for which a activity is being chosen. - */ - private Intent mIntent; - - /** - * The sorter for ordering activities based on intent and past choices. - */ - private ActivitySorter mActivitySorter = new DefaultSorter(); - - /** - * The maximal length of the choice history. - */ - private int mHistoryMaxSize = DEFAULT_HISTORY_MAX_LENGTH; - - /** - * Flag whether choice history can be read. In general many clients can - * share the same data model and {@link #readHistoricalData()} may be called - * by arbitrary of them any number of times. Therefore, this class guarantees - * that the very first read succeeds and subsequent reads can be performed - * only after a call to {@link #persistHistoricalData()} followed by change - * of the share records. - */ - private boolean mCanReadHistoricalData = true; - - /** - * Flag whether the choice history was read. This is used to enforce that - * before calling {@link #persistHistoricalData()} a call to - * {@link #persistHistoricalData()} has been made. This aims to avoid a - * scenario in which a choice history file exits, it is not read yet and - * it is overwritten. Note that always all historical records are read in - * full and the file is rewritten. This is necessary since we need to - * purge old records that are outside of the sliding window of past choices. - */ - private boolean mReadShareHistoryCalled = false; - - /** - * Flag whether the choice records have changed. In general many clients can - * share the same data model and {@link #persistHistoricalData()} may be called - * by arbitrary of them any number of times. Therefore, this class guarantees - * that choice history will be persisted only if it has changed. - */ - private boolean mHistoricalRecordsChanged = true; - - /** - * Hander for scheduling work on client tread. - */ - private final Handler mHandler = new Handler(); - - /** - * Policy for controlling how the model handles chosen activities. - */ - private OnChooseActivityListener mActivityChoserModelPolicy; - - /** - * Gets the data model backed by the contents of the provided file with historical data. - * Note that only one data model is backed by a given file, thus multiple calls with - * the same file name will return the same model instance. If no such instance is present - * it is created. - *

- * Note: To use the default historical data file clients should explicitly - * pass as file name {@link #DEFAULT_HISTORY_FILE_NAME}. If no persistence of the choice - * history is desired clients should pass null for the file name. In such - * case a new model is returned for each invocation. - *

- * - *

- * Always use difference historical data files for semantically different actions. - * For example, sharing is different from importing. - *

- * - * @param context Context for loading resources. - * @param historyFileName File name with choice history, null - * if the model should not be backed by a file. In this case the activities - * will be ordered only by data from the current session. - * - * @return The model. - */ - public static ActivityChooserModel get(Context context, String historyFileName) { - synchronized (sRegistryLock) { - ActivityChooserModel dataModel = sDataModelRegistry.get(historyFileName); - if (dataModel == null) { - dataModel = new ActivityChooserModel(context, historyFileName); - sDataModelRegistry.put(historyFileName, dataModel); - } - dataModel.readHistoricalData(); - return dataModel; - } - } - - /** - * Creates a new instance. - * - * @param context Context for loading resources. - * @param historyFileName The history XML file. - */ - private ActivityChooserModel(Context context, String historyFileName) { - mContext = context.getApplicationContext(); - if (!TextUtils.isEmpty(historyFileName) - && !historyFileName.endsWith(HISTORY_FILE_EXTENSION)) { - mHistoryFileName = historyFileName + HISTORY_FILE_EXTENSION; - } else { - mHistoryFileName = historyFileName; - } - } - - /** - * Sets an intent for which to choose a activity. - *

- * Note: Clients must set only semantically similar - * intents for each data model. - *

- * - * @param intent The intent. - */ - public void setIntent(Intent intent) { - synchronized (mInstanceLock) { - if (mIntent == intent) { - return; - } - mIntent = intent; - loadActivitiesLocked(); - } - } - - /** - * Gets the intent for which a activity is being chosen. - * - * @return The intent. - */ - public Intent getIntent() { - synchronized (mInstanceLock) { - return mIntent; - } - } - - /** - * Gets the number of activities that can handle the intent. - * - * @return The activity count. - * - * @see #setIntent(Intent) - */ - public int getActivityCount() { - synchronized (mInstanceLock) { - return mActivites.size(); - } - } - - /** - * Gets an activity at a given index. - * - * @return The activity. - * - * @see ActivityResolveInfo - * @see #setIntent(Intent) - */ - public ResolveInfo getActivity(int index) { - synchronized (mInstanceLock) { - return mActivites.get(index).resolveInfo; - } - } - - /** - * Gets the index of a the given activity. - * - * @param activity The activity index. - * - * @return The index if found, -1 otherwise. - */ - public int getActivityIndex(ResolveInfo activity) { - List activities = mActivites; - final int activityCount = activities.size(); - for (int i = 0; i < activityCount; i++) { - ActivityResolveInfo currentActivity = activities.get(i); - if (currentActivity.resolveInfo == activity) { - return i; - } - } - return INVALID_INDEX; - } - - /** - * Chooses a activity to handle the current intent. This will result in - * adding a historical record for that action and construct intent with - * its component name set such that it can be immediately started by the - * client. - *

- * Note: By calling this method the client guarantees - * that the returned intent will be started. This intent is returned to - * the client solely to let additional customization before the start. - *

- * - * @return An {@link Intent} for launching the activity or null if the - * policy has consumed the intent. - * - * @see HistoricalRecord - * @see OnChooseActivityListener - */ - public Intent chooseActivity(int index) { - ActivityResolveInfo chosenActivity = mActivites.get(index); - - ComponentName chosenName = new ComponentName( - chosenActivity.resolveInfo.activityInfo.packageName, - chosenActivity.resolveInfo.activityInfo.name); - - Intent choiceIntent = new Intent(mIntent); - choiceIntent.setComponent(chosenName); - - if (mActivityChoserModelPolicy != null) { - // Do not allow the policy to change the intent. - Intent choiceIntentCopy = new Intent(choiceIntent); - final boolean handled = mActivityChoserModelPolicy.onChooseActivity(this, - choiceIntentCopy); - if (handled) { - return null; - } - } - - HistoricalRecord historicalRecord = new HistoricalRecord(chosenName, - System.currentTimeMillis(), DEFAULT_HISTORICAL_RECORD_WEIGHT); - addHisoricalRecord(historicalRecord); - - return choiceIntent; - } - - /** - * Sets the listener for choosing an activity. - * - * @param listener The listener. - */ - public void setOnChooseActivityListener(OnChooseActivityListener listener) { - mActivityChoserModelPolicy = listener; - } - - /** - * Gets the default activity, The default activity is defined as the one - * with highest rank i.e. the first one in the list of activities that can - * handle the intent. - * - * @return The default activity, null id not activities. - * - * @see #getActivity(int) - */ - public ResolveInfo getDefaultActivity() { - synchronized (mInstanceLock) { - if (!mActivites.isEmpty()) { - return mActivites.get(0).resolveInfo; - } - } - return null; - } - - /** - * Sets the default activity. The default activity is set by adding a - * historical record with weight high enough that this activity will - * become the highest ranked. Such a strategy guarantees that the default - * will eventually change if not used. Also the weight of the record for - * setting a default is inflated with a constant amount to guarantee that - * it will stay as default for awhile. - * - * @param index The index of the activity to set as default. - */ - public void setDefaultActivity(int index) { - ActivityResolveInfo newDefaultActivity = mActivites.get(index); - ActivityResolveInfo oldDefaultActivity = mActivites.get(0); - - final float weight; - if (oldDefaultActivity != null) { - // Add a record with weight enough to boost the chosen at the top. - weight = oldDefaultActivity.weight - newDefaultActivity.weight - + DEFAULT_ACTIVITY_INFLATION; - } else { - weight = DEFAULT_HISTORICAL_RECORD_WEIGHT; - } - - ComponentName defaultName = new ComponentName( - newDefaultActivity.resolveInfo.activityInfo.packageName, - newDefaultActivity.resolveInfo.activityInfo.name); - HistoricalRecord historicalRecord = new HistoricalRecord(defaultName, - System.currentTimeMillis(), weight); - addHisoricalRecord(historicalRecord); - } - - /** - * Reads the history data from the backing file if the latter - * was provided. Calling this method more than once before a call - * to {@link #persistHistoricalData()} has been made has no effect. - *

- * Note: Historical data is read asynchronously and - * as soon as the reading is completed any registered - * {@link DataSetObserver}s will be notified. Also no historical - * data is read until this method is invoked. - *

- */ - private void readHistoricalData() { - synchronized (mInstanceLock) { - if (!mCanReadHistoricalData || !mHistoricalRecordsChanged) { - return; - } - mCanReadHistoricalData = false; - mReadShareHistoryCalled = true; - if (!TextUtils.isEmpty(mHistoryFileName)) { - /*AsyncTask.*/SERIAL_EXECUTOR.execute(new HistoryLoader()); - } - } - } - - 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(); - } - } - } - - /** - * Persists the history data to the backing file if the latter - * was provided. Calling this method before a call to {@link #readHistoricalData()} - * throws an exception. Calling this method more than one without choosing an - * activity has not effect. - * - * @throws IllegalStateException If this method is called before a call to - * {@link #readHistoricalData()}. - */ - private void persistHistoricalData() { - synchronized (mInstanceLock) { - if (!mReadShareHistoryCalled) { - throw new IllegalStateException("No preceding call to #readHistoricalData"); - } - if (!mHistoricalRecordsChanged) { - return; - } - mHistoricalRecordsChanged = false; - mCanReadHistoricalData = true; - if (!TextUtils.isEmpty(mHistoryFileName)) { - /*AsyncTask.*/SERIAL_EXECUTOR.execute(new HistoryPersister()); - } - } - } - - /** - * Sets the sorter for ordering activities based on historical data and an intent. - * - * @param activitySorter The sorter. - * - * @see ActivitySorter - */ - public void setActivitySorter(ActivitySorter activitySorter) { - synchronized (mInstanceLock) { - if (mActivitySorter == activitySorter) { - return; - } - mActivitySorter = activitySorter; - sortActivities(); - } - } - - /** - * Sorts the activities based on history and an intent. If - * a sorter is not specified this a default implementation is used. - * - * @see #setActivitySorter(ActivitySorter) - */ - private void sortActivities() { - synchronized (mInstanceLock) { - if (mActivitySorter != null && !mActivites.isEmpty()) { - mActivitySorter.sort(mIntent, mActivites, - Collections.unmodifiableList(mHistoricalRecords)); - notifyChanged(); - } - } - } - - /** - * Sets the maximal size of the historical data. Defaults to - * {@link #DEFAULT_HISTORY_MAX_LENGTH} - *

- * Note: Setting this property will immediately - * enforce the specified max history size by dropping enough old - * historical records to enforce the desired size. Thus, any - * records that exceed the history size will be discarded and - * irreversibly lost. - *

- * - * @param historyMaxSize The max history size. - */ - public void setHistoryMaxSize(int historyMaxSize) { - synchronized (mInstanceLock) { - if (mHistoryMaxSize == historyMaxSize) { - return; - } - mHistoryMaxSize = historyMaxSize; - pruneExcessiveHistoricalRecordsLocked(); - sortActivities(); - } - } - - /** - * Gets the history max size. - * - * @return The history max size. - */ - public int getHistoryMaxSize() { - synchronized (mInstanceLock) { - return mHistoryMaxSize; - } - } - - /** - * Gets the history size. - * - * @return The history size. - */ - public int getHistorySize() { - synchronized (mInstanceLock) { - return mHistoricalRecords.size(); - } - } - - /** - * Adds a historical record. - * - * @param historicalRecord The record to add. - * @return True if the record was added. - */ - private boolean addHisoricalRecord(HistoricalRecord historicalRecord) { - synchronized (mInstanceLock) { - final boolean added = mHistoricalRecords.add(historicalRecord); - if (added) { - mHistoricalRecordsChanged = true; - pruneExcessiveHistoricalRecordsLocked(); - persistHistoricalData(); - sortActivities(); - } - return added; - } - } - - /** - * Prunes older excessive records to guarantee {@link #mHistoryMaxSize}. - */ - private void pruneExcessiveHistoricalRecordsLocked() { - List choiceRecords = mHistoricalRecords; - final int pruneCount = choiceRecords.size() - mHistoryMaxSize; - if (pruneCount <= 0) { - return; - } - mHistoricalRecordsChanged = true; - for (int i = 0; i < pruneCount; i++) { - HistoricalRecord prunedRecord = choiceRecords.remove(0); - if (DEBUG) { - Log.i(LOG_TAG, "Pruned: " + prunedRecord); - } - } - } - - /** - * Loads the activities. - */ - private void loadActivitiesLocked() { - mActivites.clear(); - if (mIntent != null) { - List resolveInfos = - mContext.getPackageManager().queryIntentActivities(mIntent, 0); - final int resolveInfoCount = resolveInfos.size(); - for (int i = 0; i < resolveInfoCount; i++) { - ResolveInfo resolveInfo = resolveInfos.get(i); - mActivites.add(new ActivityResolveInfo(resolveInfo)); - } - sortActivities(); - } else { - notifyChanged(); - } - } - - /** - * Represents a record in the history. - */ - public final static class HistoricalRecord { - - /** - * The activity name. - */ - public final ComponentName activity; - - /** - * The choice time. - */ - public final long time; - - /** - * The record weight. - */ - public final float weight; - - /** - * Creates a new instance. - * - * @param activityName The activity component name flattened to string. - * @param time The time the activity was chosen. - * @param weight The weight of the record. - */ - public HistoricalRecord(String activityName, long time, float weight) { - this(ComponentName.unflattenFromString(activityName), time, weight); - } - - /** - * Creates a new instance. - * - * @param activityName The activity name. - * @param time The time the activity was chosen. - * @param weight The weight of the record. - */ - public HistoricalRecord(ComponentName activityName, long time, float weight) { - this.activity = activityName; - this.time = time; - this.weight = weight; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((activity == null) ? 0 : activity.hashCode()); - result = prime * result + (int) (time ^ (time >>> 32)); - result = prime * result + Float.floatToIntBits(weight); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - HistoricalRecord other = (HistoricalRecord) obj; - if (activity == null) { - if (other.activity != null) { - return false; - } - } else if (!activity.equals(other.activity)) { - return false; - } - if (time != other.time) { - return false; - } - if (Float.floatToIntBits(weight) != Float.floatToIntBits(other.weight)) { - return false; - } - return true; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("["); - builder.append("; activity:").append(activity); - builder.append("; time:").append(time); - builder.append("; weight:").append(new BigDecimal(weight)); - builder.append("]"); - return builder.toString(); - } - } - - /** - * Represents an activity. - */ - public final class ActivityResolveInfo implements Comparable { - - /** - * The {@link ResolveInfo} of the activity. - */ - public final ResolveInfo resolveInfo; - - /** - * Weight of the activity. Useful for sorting. - */ - public float weight; - - /** - * Creates a new instance. - * - * @param resolveInfo activity {@link ResolveInfo}. - */ - public ActivityResolveInfo(ResolveInfo resolveInfo) { - this.resolveInfo = resolveInfo; - } - - @Override - public int hashCode() { - return 31 + Float.floatToIntBits(weight); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - ActivityResolveInfo other = (ActivityResolveInfo) obj; - if (Float.floatToIntBits(weight) != Float.floatToIntBits(other.weight)) { - return false; - } - return true; - } - - public int compareTo(ActivityResolveInfo another) { - return Float.floatToIntBits(another.weight) - Float.floatToIntBits(weight); - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("["); - builder.append("resolveInfo:").append(resolveInfo.toString()); - builder.append("; weight:").append(new BigDecimal(weight)); - builder.append("]"); - return builder.toString(); - } - } - - /** - * Default activity sorter implementation. - */ - private final class DefaultSorter implements ActivitySorter { - private static final float WEIGHT_DECAY_COEFFICIENT = 0.95f; - - private final Map mPackageNameToActivityMap = - new HashMap(); - - public void sort(Intent intent, List activities, - List historicalRecords) { - Map packageNameToActivityMap = - mPackageNameToActivityMap; - packageNameToActivityMap.clear(); - - final int activityCount = activities.size(); - for (int i = 0; i < activityCount; i++) { - ActivityResolveInfo activity = activities.get(i); - activity.weight = 0.0f; - String packageName = activity.resolveInfo.activityInfo.packageName; - packageNameToActivityMap.put(packageName, activity); - } - - final int lastShareIndex = historicalRecords.size() - 1; - float nextRecordWeight = 1; - for (int i = lastShareIndex; i >= 0; i--) { - HistoricalRecord historicalRecord = historicalRecords.get(i); - String packageName = historicalRecord.activity.getPackageName(); - ActivityResolveInfo activity = packageNameToActivityMap.get(packageName); - if (activity != null) { - activity.weight += historicalRecord.weight * nextRecordWeight; - nextRecordWeight = nextRecordWeight * WEIGHT_DECAY_COEFFICIENT; - } - } - - Collections.sort(activities); - - if (DEBUG) { - for (int i = 0; i < activityCount; i++) { - Log.i(LOG_TAG, "Sorted: " + activities.get(i)); - } - } - } - } - - /** - * Command for reading the historical records from a file off the UI thread. - */ - private final class HistoryLoader implements Runnable { - - public void run() { - FileInputStream fis = null; - try { - fis = mContext.openFileInput(mHistoryFileName); - } catch (FileNotFoundException fnfe) { - if (DEBUG) { - Log.i(LOG_TAG, "Could not open historical records file: " + mHistoryFileName); - } - return; - } - try { - XmlPullParser parser = Xml.newPullParser(); - parser.setInput(fis, null); - - int type = XmlPullParser.START_DOCUMENT; - while (type != XmlPullParser.END_DOCUMENT && type != XmlPullParser.START_TAG) { - type = parser.next(); - } - - if (!TAG_HISTORICAL_RECORDS.equals(parser.getName())) { - throw new XmlPullParserException("Share records file does not start with " - + TAG_HISTORICAL_RECORDS + " tag."); - } - - List readRecords = new ArrayList(); - - while (true) { - type = parser.next(); - if (type == XmlPullParser.END_DOCUMENT) { - break; - } - if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { - continue; - } - String nodeName = parser.getName(); - if (!TAG_HISTORICAL_RECORD.equals(nodeName)) { - throw new XmlPullParserException("Share records file not well-formed."); - } - - String activity = parser.getAttributeValue(null, ATTRIBUTE_ACTIVITY); - final long time = - Long.parseLong(parser.getAttributeValue(null, ATTRIBUTE_TIME)); - final float weight = - Float.parseFloat(parser.getAttributeValue(null, ATTRIBUTE_WEIGHT)); - - HistoricalRecord readRecord = new HistoricalRecord(activity, time, - weight); - readRecords.add(readRecord); - - if (DEBUG) { - Log.i(LOG_TAG, "Read " + readRecord.toString()); - } - } - - if (DEBUG) { - Log.i(LOG_TAG, "Read " + readRecords.size() + " historical records."); - } - - synchronized (mInstanceLock) { - Set uniqueShareRecords = - new LinkedHashSet(readRecords); - - // Make sure no duplicates. Example: Read a file with - // one record, add one record, persist the two records, - // add a record, read the persisted records - the - // read two records should not be added again. - List historicalRecords = mHistoricalRecords; - final int historicalRecordsCount = historicalRecords.size(); - for (int i = historicalRecordsCount - 1; i >= 0; i--) { - HistoricalRecord historicalRecord = historicalRecords.get(i); - uniqueShareRecords.add(historicalRecord); - } - - if (historicalRecords.size() == uniqueShareRecords.size()) { - return; - } - - // Make sure the oldest records go to the end. - historicalRecords.clear(); - historicalRecords.addAll(uniqueShareRecords); - - mHistoricalRecordsChanged = true; - - // Do this on the client thread since the client may be on the UI - // thread, wait for data changes which happen during sorting, and - // perform UI modification based on the data change. - mHandler.post(new Runnable() { - public void run() { - pruneExcessiveHistoricalRecordsLocked(); - sortActivities(); - } - }); - } - } catch (XmlPullParserException xppe) { - Log.e(LOG_TAG, "Error reading historical recrod file: " + mHistoryFileName, xppe); - } catch (IOException ioe) { - Log.e(LOG_TAG, "Error reading historical recrod file: " + mHistoryFileName, ioe); - } finally { - if (fis != null) { - try { - fis.close(); - } catch (IOException ioe) { - /* ignore */ - } - } - } - } - } - - /** - * Command for persisting the historical records to a file off the UI thread. - */ - private final class HistoryPersister implements Runnable { - - public void run() { - FileOutputStream fos = null; - List records = null; - - synchronized (mInstanceLock) { - records = new ArrayList(mHistoricalRecords); - } - - try { - fos = mContext.openFileOutput(mHistoryFileName, Context.MODE_PRIVATE); - } catch (FileNotFoundException fnfe) { - Log.e(LOG_TAG, "Error writing historical recrod file: " + mHistoryFileName, fnfe); - return; - } - - XmlSerializer serializer = Xml.newSerializer(); - - try { - serializer.setOutput(fos, null); - serializer.startDocument("UTF-8", true); - serializer.startTag(null, TAG_HISTORICAL_RECORDS); - - final int recordCount = records.size(); - for (int i = 0; i < recordCount; i++) { - HistoricalRecord record = records.remove(0); - serializer.startTag(null, TAG_HISTORICAL_RECORD); - serializer.attribute(null, ATTRIBUTE_ACTIVITY, record.activity.flattenToString()); - serializer.attribute(null, ATTRIBUTE_TIME, String.valueOf(record.time)); - serializer.attribute(null, ATTRIBUTE_WEIGHT, String.valueOf(record.weight)); - serializer.endTag(null, TAG_HISTORICAL_RECORD); - if (DEBUG) { - Log.i(LOG_TAG, "Wrote " + record.toString()); - } - } - - serializer.endTag(null, TAG_HISTORICAL_RECORDS); - serializer.endDocument(); - - if (DEBUG) { - Log.i(LOG_TAG, "Wrote " + recordCount + " historical records."); - } - } catch (IllegalArgumentException iae) { - Log.e(LOG_TAG, "Error writing historical recrod file: " + mHistoryFileName, iae); - } catch (IllegalStateException ise) { - Log.e(LOG_TAG, "Error writing historical recrod file: " + mHistoryFileName, ise); - } catch (IOException ioe) { - Log.e(LOG_TAG, "Error writing historical recrod file: " + mHistoryFileName, ioe); - } finally { - if (fos != null) { - try { - fos.close(); - } catch (IOException e) { - /* ignore */ - } - } - } - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserView.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserView.java deleted file mode 100755 index da13bc99f..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserView.java +++ /dev/null @@ -1,818 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.widget; - -import android.os.Build; -import com.actionbarsherlock.R; -import com.actionbarsherlock.internal.widget.IcsLinearLayout; -import com.actionbarsherlock.internal.widget.IcsListPopupWindow; -import com.actionbarsherlock.view.ActionProvider; -import com.actionbarsherlock.widget.ActivityChooserModel.ActivityChooserModelClient; -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.content.res.Resources; -import android.content.res.TypedArray; -import android.database.DataSetObserver; -import android.graphics.drawable.Drawable; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewTreeObserver; -import android.view.ViewTreeObserver.OnGlobalLayoutListener; -import android.widget.AdapterView; -import android.widget.BaseAdapter; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.PopupWindow; -import android.widget.TextView; - -/** - * This class is a view for choosing an activity for handling a given {@link Intent}. - *

- * The view is composed of two adjacent buttons: - *

    - *
  • - * The left button is an immediate action and allows one click activity choosing. - * Tapping this button immediately executes the intent without requiring any further - * user input. Long press on this button shows a popup for changing the default - * activity. - *
  • - *
  • - * The right button is an overflow action and provides an optimized menu - * of additional activities. Tapping this button shows a popup anchored to this - * view, listing the most frequently used activities. This list is initially - * limited to a small number of items in frequency used order. The last item, - * "Show all..." serves as an affordance to display all available activities. - *
  • - *
- *

- * - * @hide - */ -class ActivityChooserView extends ViewGroup implements ActivityChooserModelClient { - - /** - * An adapter for displaying the activities in an {@link AdapterView}. - */ - private final ActivityChooserViewAdapter mAdapter; - - /** - * Implementation of various interfaces to avoid publishing them in the APIs. - */ - private final Callbacks mCallbacks; - - /** - * The content of this view. - */ - private final IcsLinearLayout mActivityChooserContent; - - /** - * Stores the background drawable to allow hiding and latter showing. - */ - private final Drawable mActivityChooserContentBackground; - - /** - * The expand activities action button; - */ - private final FrameLayout mExpandActivityOverflowButton; - - /** - * The image for the expand activities action button; - */ - private final ImageView mExpandActivityOverflowButtonImage; - - /** - * The default activities action button; - */ - private final FrameLayout mDefaultActivityButton; - - /** - * The image for the default activities action button; - */ - private final ImageView mDefaultActivityButtonImage; - - /** - * The maximal width of the list popup. - */ - private final int mListPopupMaxWidth; - - /** - * The ActionProvider hosting this view, if applicable. - */ - ActionProvider mProvider; - - /** - * Observer for the model data. - */ - private final DataSetObserver mModelDataSetOberver = new DataSetObserver() { - - @Override - public void onChanged() { - super.onChanged(); - mAdapter.notifyDataSetChanged(); - } - @Override - public void onInvalidated() { - super.onInvalidated(); - mAdapter.notifyDataSetInvalidated(); - } - }; - - private final OnGlobalLayoutListener mOnGlobalLayoutListener = new OnGlobalLayoutListener() { - @Override - public void onGlobalLayout() { - if (isShowingPopup()) { - if (!isShown()) { - getListPopupWindow().dismiss(); - } else { - getListPopupWindow().show(); - if (mProvider != null) { - mProvider.subUiVisibilityChanged(true); - } - } - } - } - }; - - /** - * Popup window for showing the activity overflow list. - */ - private IcsListPopupWindow mListPopupWindow; - - /** - * Listener for the dismissal of the popup/alert. - */ - private PopupWindow.OnDismissListener mOnDismissListener; - - /** - * Flag whether a default activity currently being selected. - */ - private boolean mIsSelectingDefaultActivity; - - /** - * The count of activities in the popup. - */ - private int mInitialActivityCount = ActivityChooserViewAdapter.MAX_ACTIVITY_COUNT_DEFAULT; - - /** - * Flag whether this view is attached to a window. - */ - private boolean mIsAttachedToWindow; - - /** - * String resource for formatting content description of the default target. - */ - private int mDefaultActionButtonContentDescription; - - private final Context mContext; - - /** - * Create a new instance. - * - * @param context The application environment. - */ - public ActivityChooserView(Context context) { - this(context, null); - } - - /** - * Create a new instance. - * - * @param context The application environment. - * @param attrs A collection of attributes. - */ - public ActivityChooserView(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - /** - * Create a new instance. - * - * @param context The application environment. - * @param attrs A collection of attributes. - * @param defStyle The default style to apply to this view. - */ - public ActivityChooserView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - mContext = context; - - TypedArray attributesArray = context.obtainStyledAttributes(attrs, - R.styleable.SherlockActivityChooserView, defStyle, 0); - - mInitialActivityCount = attributesArray.getInt( - R.styleable.SherlockActivityChooserView_initialActivityCount, - ActivityChooserViewAdapter.MAX_ACTIVITY_COUNT_DEFAULT); - - Drawable expandActivityOverflowButtonDrawable = attributesArray.getDrawable( - R.styleable.SherlockActivityChooserView_expandActivityOverflowButtonDrawable); - - attributesArray.recycle(); - - LayoutInflater inflater = LayoutInflater.from(mContext); - inflater.inflate(R.layout.abs__activity_chooser_view, this, true); - - mCallbacks = new Callbacks(); - - mActivityChooserContent = (IcsLinearLayout) findViewById(R.id.abs__activity_chooser_view_content); - mActivityChooserContentBackground = mActivityChooserContent.getBackground(); - - mDefaultActivityButton = (FrameLayout) findViewById(R.id.abs__default_activity_button); - mDefaultActivityButton.setOnClickListener(mCallbacks); - mDefaultActivityButton.setOnLongClickListener(mCallbacks); - mDefaultActivityButtonImage = (ImageView) mDefaultActivityButton.findViewById(R.id.abs__image); - - mExpandActivityOverflowButton = (FrameLayout) findViewById(R.id.abs__expand_activities_button); - mExpandActivityOverflowButton.setOnClickListener(mCallbacks); - mExpandActivityOverflowButtonImage = - (ImageView) mExpandActivityOverflowButton.findViewById(R.id.abs__image); - mExpandActivityOverflowButtonImage.setImageDrawable(expandActivityOverflowButtonDrawable); - - mAdapter = new ActivityChooserViewAdapter(); - mAdapter.registerDataSetObserver(new DataSetObserver() { - @Override - public void onChanged() { - super.onChanged(); - updateAppearance(); - } - }); - - Resources resources = context.getResources(); - mListPopupMaxWidth = Math.max(resources.getDisplayMetrics().widthPixels / 2, - resources.getDimensionPixelSize(R.dimen.abs__config_prefDialogWidth)); - } - - /** - * {@inheritDoc} - */ - public void setActivityChooserModel(ActivityChooserModel dataModel) { - mAdapter.setDataModel(dataModel); - if (isShowingPopup()) { - dismissPopup(); - showPopup(); - } - } - - /** - * Sets the background for the button that expands the activity - * overflow list. - * - * Note: Clients would like to set this drawable - * as a clue about the action the chosen activity will perform. For - * example, if a share activity is to be chosen the drawable should - * give a clue that sharing is to be performed. - * - * @param drawable The drawable. - */ - public void setExpandActivityOverflowButtonDrawable(Drawable drawable) { - mExpandActivityOverflowButtonImage.setImageDrawable(drawable); - } - - /** - * Sets the content description for the button that expands the activity - * overflow list. - * - * description as a clue about the action performed by the button. - * For example, if a share activity is to be chosen the content - * description should be something like "Share with". - * - * @param resourceId The content description resource id. - */ - public void setExpandActivityOverflowButtonContentDescription(int resourceId) { - CharSequence contentDescription = mContext.getString(resourceId); - mExpandActivityOverflowButtonImage.setContentDescription(contentDescription); - } - - /** - * Set the provider hosting this view, if applicable. - * @hide Internal use only - */ - public void setProvider(ActionProvider provider) { - mProvider = provider; - } - - /** - * Shows the popup window with activities. - * - * @return True if the popup was shown, false if already showing. - */ - public boolean showPopup() { - if (isShowingPopup() || !mIsAttachedToWindow) { - return false; - } - mIsSelectingDefaultActivity = false; - showPopupUnchecked(mInitialActivityCount); - return true; - } - - /** - * Shows the popup no matter if it was already showing. - * - * @param maxActivityCount The max number of activities to display. - */ - private void showPopupUnchecked(int maxActivityCount) { - if (mAdapter.getDataModel() == null) { - throw new IllegalStateException("No data model. Did you call #setDataModel?"); - } - - getViewTreeObserver().addOnGlobalLayoutListener(mOnGlobalLayoutListener); - - final boolean defaultActivityButtonShown = - mDefaultActivityButton.getVisibility() == VISIBLE; - - final int activityCount = mAdapter.getActivityCount(); - final int maxActivityCountOffset = defaultActivityButtonShown ? 1 : 0; - if (maxActivityCount != ActivityChooserViewAdapter.MAX_ACTIVITY_COUNT_UNLIMITED - && activityCount > maxActivityCount + maxActivityCountOffset) { - mAdapter.setShowFooterView(true); - mAdapter.setMaxActivityCount(maxActivityCount - 1); - } else { - mAdapter.setShowFooterView(false); - mAdapter.setMaxActivityCount(maxActivityCount); - } - - IcsListPopupWindow popupWindow = getListPopupWindow(); - if (!popupWindow.isShowing()) { - if (mIsSelectingDefaultActivity || !defaultActivityButtonShown) { - mAdapter.setShowDefaultActivity(true, defaultActivityButtonShown); - } else { - mAdapter.setShowDefaultActivity(false, false); - } - final int contentWidth = Math.min(mAdapter.measureContentWidth(), mListPopupMaxWidth); - popupWindow.setContentWidth(contentWidth); - popupWindow.show(); - if (mProvider != null) { - mProvider.subUiVisibilityChanged(true); - } - popupWindow.getListView().setContentDescription(mContext.getString( - R.string.abs__activitychooserview_choose_application)); - } - } - - /** - * Dismisses the popup window with activities. - * - * @return True if dismissed, false if already dismissed. - */ - public boolean dismissPopup() { - if (isShowingPopup()) { - getListPopupWindow().dismiss(); - ViewTreeObserver viewTreeObserver = getViewTreeObserver(); - if (viewTreeObserver.isAlive()) { - viewTreeObserver.removeGlobalOnLayoutListener(mOnGlobalLayoutListener); - } - } - return true; - } - - /** - * Gets whether the popup window with activities is shown. - * - * @return True if the popup is shown. - */ - public boolean isShowingPopup() { - return getListPopupWindow().isShowing(); - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - ActivityChooserModel dataModel = mAdapter.getDataModel(); - if (dataModel != null) { - dataModel.registerObserver(mModelDataSetOberver); - } - mIsAttachedToWindow = true; - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - ActivityChooserModel dataModel = mAdapter.getDataModel(); - if (dataModel != null) { - dataModel.unregisterObserver(mModelDataSetOberver); - } - ViewTreeObserver viewTreeObserver = getViewTreeObserver(); - if (viewTreeObserver.isAlive()) { - viewTreeObserver.removeGlobalOnLayoutListener(mOnGlobalLayoutListener); - } - mIsAttachedToWindow = false; - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - View child = mActivityChooserContent; - // If the default action is not visible we want to be as tall as the - // ActionBar so if this widget is used in the latter it will look as - // a normal action button. - if (mDefaultActivityButton.getVisibility() != VISIBLE) { - heightMeasureSpec = MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(heightMeasureSpec), - MeasureSpec.EXACTLY); - } - measureChild(child, widthMeasureSpec, heightMeasureSpec); - setMeasuredDimension(child.getMeasuredWidth(), child.getMeasuredHeight()); - } - - @Override - protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - mActivityChooserContent.layout(0, 0, right - left, bottom - top); - if (getListPopupWindow().isShowing()) { - showPopupUnchecked(mAdapter.getMaxActivityCount()); - } else { - dismissPopup(); - } - } - - public ActivityChooserModel getDataModel() { - return mAdapter.getDataModel(); - } - - /** - * Sets a listener to receive a callback when the popup is dismissed. - * - * @param listener The listener to be notified. - */ - public void setOnDismissListener(PopupWindow.OnDismissListener listener) { - mOnDismissListener = listener; - } - - /** - * Sets the initial count of items shown in the activities popup - * i.e. the items before the popup is expanded. This is an upper - * bound since it is not guaranteed that such number of intent - * handlers exist. - * - * @param itemCount The initial popup item count. - */ - public void setInitialActivityCount(int itemCount) { - mInitialActivityCount = itemCount; - } - - /** - * Sets a content description of the default action button. This - * resource should be a string taking one formatting argument and - * will be used for formatting the content description of the button - * dynamically as the default target changes. For example, a resource - * pointing to the string "share with %1$s" will result in a content - * description "share with Bluetooth" for the Bluetooth activity. - * - * @param resourceId The resource id. - */ - public void setDefaultActionButtonContentDescription(int resourceId) { - mDefaultActionButtonContentDescription = resourceId; - } - - /** - * Gets the list popup window which is lazily initialized. - * - * @return The popup. - */ - private IcsListPopupWindow getListPopupWindow() { - if (mListPopupWindow == null) { - mListPopupWindow = new IcsListPopupWindow(getContext()); - mListPopupWindow.setAdapter(mAdapter); - mListPopupWindow.setAnchorView(ActivityChooserView.this); - mListPopupWindow.setModal(true); - mListPopupWindow.setOnItemClickListener(mCallbacks); - mListPopupWindow.setOnDismissListener(mCallbacks); - } - return mListPopupWindow; - } - - /** - * Updates the buttons state. - */ - private void updateAppearance() { - // Expand overflow button. - if (mAdapter.getCount() > 0) { - mExpandActivityOverflowButton.setEnabled(true); - } else { - mExpandActivityOverflowButton.setEnabled(false); - } - // Default activity button. - final int activityCount = mAdapter.getActivityCount(); - final int historySize = mAdapter.getHistorySize(); - if (activityCount > 0 && historySize > 0) { - mDefaultActivityButton.setVisibility(VISIBLE); - ResolveInfo activity = mAdapter.getDefaultActivity(); - PackageManager packageManager = mContext.getPackageManager(); - mDefaultActivityButtonImage.setImageDrawable(activity.loadIcon(packageManager)); - if (mDefaultActionButtonContentDescription != 0) { - CharSequence label = activity.loadLabel(packageManager); - String contentDescription = mContext.getString( - mDefaultActionButtonContentDescription, label); - mDefaultActivityButton.setContentDescription(contentDescription); - } - } else { - mDefaultActivityButton.setVisibility(View.GONE); - } - // Activity chooser content. - if (mDefaultActivityButton.getVisibility() == VISIBLE) { - mActivityChooserContent.setBackgroundDrawable(mActivityChooserContentBackground); - } else { - mActivityChooserContent.setBackgroundDrawable(null); - } - } - - /** - * Interface implementation to avoid publishing them in the APIs. - */ - private class Callbacks implements AdapterView.OnItemClickListener, - View.OnClickListener, View.OnLongClickListener, PopupWindow.OnDismissListener { - - // AdapterView#OnItemClickListener - public void onItemClick(AdapterView parent, View view, int position, long id) { - ActivityChooserViewAdapter adapter = (ActivityChooserViewAdapter) parent.getAdapter(); - final int itemViewType = adapter.getItemViewType(position); - switch (itemViewType) { - case ActivityChooserViewAdapter.ITEM_VIEW_TYPE_FOOTER: { - showPopupUnchecked(ActivityChooserViewAdapter.MAX_ACTIVITY_COUNT_UNLIMITED); - } break; - case ActivityChooserViewAdapter.ITEM_VIEW_TYPE_ACTIVITY: { - dismissPopup(); - if (mIsSelectingDefaultActivity) { - // The item at position zero is the default already. - if (position > 0) { - mAdapter.getDataModel().setDefaultActivity(position); - } - } else { - // If the default target is not shown in the list, the first - // item in the model is default action => adjust index - position = mAdapter.getShowDefaultActivity() ? position : position + 1; - Intent launchIntent = mAdapter.getDataModel().chooseActivity(position); - if (launchIntent != null) { - mContext.startActivity(launchIntent); - } - } - } break; - default: - throw new IllegalArgumentException(); - } - } - - // View.OnClickListener - public void onClick(View view) { - if (view == mDefaultActivityButton) { - dismissPopup(); - ResolveInfo defaultActivity = mAdapter.getDefaultActivity(); - final int index = mAdapter.getDataModel().getActivityIndex(defaultActivity); - Intent launchIntent = mAdapter.getDataModel().chooseActivity(index); - if (launchIntent != null) { - mContext.startActivity(launchIntent); - } - } else if (view == mExpandActivityOverflowButton) { - mIsSelectingDefaultActivity = false; - showPopupUnchecked(mInitialActivityCount); - } else { - throw new IllegalArgumentException(); - } - } - - // OnLongClickListener#onLongClick - @Override - public boolean onLongClick(View view) { - if (view == mDefaultActivityButton) { - if (mAdapter.getCount() > 0) { - mIsSelectingDefaultActivity = true; - showPopupUnchecked(mInitialActivityCount); - } - } else { - throw new IllegalArgumentException(); - } - return true; - } - - // PopUpWindow.OnDismissListener#onDismiss - public void onDismiss() { - notifyOnDismissListener(); - if (mProvider != null) { - mProvider.subUiVisibilityChanged(false); - } - } - - private void notifyOnDismissListener() { - if (mOnDismissListener != null) { - mOnDismissListener.onDismiss(); - } - } - } - - private static class SetActivated { - public static void invoke(View view, boolean activated) { - view.setActivated(activated); - } - } - - private static final boolean IS_HONEYCOMB = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB; - - /** - * Adapter for backing the list of activities shown in the popup. - */ - private class ActivityChooserViewAdapter extends BaseAdapter { - - public static final int MAX_ACTIVITY_COUNT_UNLIMITED = Integer.MAX_VALUE; - - public static final int MAX_ACTIVITY_COUNT_DEFAULT = 4; - - private static final int ITEM_VIEW_TYPE_ACTIVITY = 0; - - private static final int ITEM_VIEW_TYPE_FOOTER = 1; - - private static final int ITEM_VIEW_TYPE_COUNT = 3; - - private ActivityChooserModel mDataModel; - - private int mMaxActivityCount = MAX_ACTIVITY_COUNT_DEFAULT; - - private boolean mShowDefaultActivity; - - private boolean mHighlightDefaultActivity; - - private boolean mShowFooterView; - - public void setDataModel(ActivityChooserModel dataModel) { - ActivityChooserModel oldDataModel = mAdapter.getDataModel(); - if (oldDataModel != null && isShown()) { - oldDataModel.unregisterObserver(mModelDataSetOberver); - } - mDataModel = dataModel; - if (dataModel != null && isShown()) { - dataModel.registerObserver(mModelDataSetOberver); - } - notifyDataSetChanged(); - } - - @Override - public int getItemViewType(int position) { - if (mShowFooterView && position == getCount() - 1) { - return ITEM_VIEW_TYPE_FOOTER; - } else { - return ITEM_VIEW_TYPE_ACTIVITY; - } - } - - @Override - public int getViewTypeCount() { - return ITEM_VIEW_TYPE_COUNT; - } - - public int getCount() { - int count = 0; - int activityCount = mDataModel.getActivityCount(); - if (!mShowDefaultActivity && mDataModel.getDefaultActivity() != null) { - activityCount--; - } - count = Math.min(activityCount, mMaxActivityCount); - if (mShowFooterView) { - count++; - } - return count; - } - - public Object getItem(int position) { - final int itemViewType = getItemViewType(position); - switch (itemViewType) { - case ITEM_VIEW_TYPE_FOOTER: - return null; - case ITEM_VIEW_TYPE_ACTIVITY: - if (!mShowDefaultActivity && mDataModel.getDefaultActivity() != null) { - position++; - } - return mDataModel.getActivity(position); - default: - throw new IllegalArgumentException(); - } - } - - public long getItemId(int position) { - return position; - } - - public View getView(int position, View convertView, ViewGroup parent) { - final int itemViewType = getItemViewType(position); - switch (itemViewType) { - case ITEM_VIEW_TYPE_FOOTER: - if (convertView == null || convertView.getId() != ITEM_VIEW_TYPE_FOOTER) { - convertView = LayoutInflater.from(getContext()).inflate( - R.layout.abs__activity_chooser_view_list_item, parent, false); - convertView.setId(ITEM_VIEW_TYPE_FOOTER); - TextView titleView = (TextView) convertView.findViewById(R.id.abs__title); - titleView.setText(mContext.getString( - R.string.abs__activity_chooser_view_see_all)); - } - return convertView; - case ITEM_VIEW_TYPE_ACTIVITY: - if (convertView == null || convertView.getId() != R.id.abs__list_item) { - convertView = LayoutInflater.from(getContext()).inflate( - R.layout.abs__activity_chooser_view_list_item, parent, false); - } - PackageManager packageManager = mContext.getPackageManager(); - // Set the icon - ImageView iconView = (ImageView) convertView.findViewById(R.id.abs__icon); - ResolveInfo activity = (ResolveInfo) getItem(position); - iconView.setImageDrawable(activity.loadIcon(packageManager)); - // Set the title. - TextView titleView = (TextView) convertView.findViewById(R.id.abs__title); - titleView.setText(activity.loadLabel(packageManager)); - if (IS_HONEYCOMB) { - // Highlight the default. - if (mShowDefaultActivity && position == 0 && mHighlightDefaultActivity) { - SetActivated.invoke(convertView, true); - } else { - SetActivated.invoke(convertView, false); - } - } - return convertView; - default: - throw new IllegalArgumentException(); - } - } - - public int measureContentWidth() { - // The user may have specified some of the target not to be shown but we - // want to measure all of them since after expansion they should fit. - final int oldMaxActivityCount = mMaxActivityCount; - mMaxActivityCount = MAX_ACTIVITY_COUNT_UNLIMITED; - - int contentWidth = 0; - View itemView = null; - - final int widthMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - final int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - final int count = getCount(); - - for (int i = 0; i < count; i++) { - itemView = getView(i, itemView, null); - itemView.measure(widthMeasureSpec, heightMeasureSpec); - contentWidth = Math.max(contentWidth, itemView.getMeasuredWidth()); - } - - mMaxActivityCount = oldMaxActivityCount; - - return contentWidth; - } - - public void setMaxActivityCount(int maxActivityCount) { - if (mMaxActivityCount != maxActivityCount) { - mMaxActivityCount = maxActivityCount; - notifyDataSetChanged(); - } - } - - public ResolveInfo getDefaultActivity() { - return mDataModel.getDefaultActivity(); - } - - public void setShowFooterView(boolean showFooterView) { - if (mShowFooterView != showFooterView) { - mShowFooterView = showFooterView; - notifyDataSetChanged(); - } - } - - public int getActivityCount() { - return mDataModel.getActivityCount(); - } - - public int getHistorySize() { - return mDataModel.getHistorySize(); - } - - public int getMaxActivityCount() { - return mMaxActivityCount; - } - - public ActivityChooserModel getDataModel() { - return mDataModel; - } - - public void setShowDefaultActivity(boolean showDefaultActivity, - boolean highlightDefaultActivity) { - if (mShowDefaultActivity != showDefaultActivity - || mHighlightDefaultActivity != highlightDefaultActivity) { - mShowDefaultActivity = showDefaultActivity; - mHighlightDefaultActivity = highlightDefaultActivity; - notifyDataSetChanged(); - } - } - - public boolean getShowDefaultActivity() { - return mShowDefaultActivity; - } - } -} diff --git a/libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ShareActionProvider.java b/libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ShareActionProvider.java deleted file mode 100755 index 83e9f0ca9..000000000 --- a/libs/ActionBarSherlock/src/com/actionbarsherlock/widget/ShareActionProvider.java +++ /dev/null @@ -1,316 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.actionbarsherlock.widget; - -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.graphics.drawable.Drawable; -import android.util.TypedValue; -import android.view.View; - -import com.actionbarsherlock.R; -import com.actionbarsherlock.view.ActionProvider; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuItem; -import com.actionbarsherlock.view.MenuItem.OnMenuItemClickListener; -import com.actionbarsherlock.view.SubMenu; -import com.actionbarsherlock.widget.ActivityChooserModel.OnChooseActivityListener; - -/** - * This is a provider for a share action. It is responsible for creating views - * that enable data sharing and also to show a sub menu with sharing activities - * if the hosting item is placed on the overflow menu. - *

- * Here is how to use the action provider with custom backing file in a {@link MenuItem}: - *

- *

- *

- * 
- *  // In Activity#onCreateOptionsMenu
- *  public boolean onCreateOptionsMenu(Menu menu) {
- *      // Get the menu item.
- *      MenuItem menuItem = menu.findItem(R.id.my_menu_item);
- *      // Get the provider and hold onto it to set/change the share intent.
- *      mShareActionProvider = (ShareActionProvider) menuItem.getActionProvider();
- *      // Set history different from the default before getting the action
- *      // view since a call to {@link MenuItem#getActionView() MenuItem.getActionView()} calls
- *      // {@link ActionProvider#onCreateActionView()} which uses the backing file name. Omit this
- *      // line if using the default share history file is desired.
- *      mShareActionProvider.setShareHistoryFileName("custom_share_history.xml");
- *      . . .
- *  }
- *
- *  // Somewhere in the application.
- *  public void doShare(Intent shareIntent) {
- *      // When you want to share set the share intent.
- *      mShareActionProvider.setShareIntent(shareIntent);
- *  }
- * 
- * - *

- *

- * Note: While the sample snippet demonstrates how to use this provider - * in the context of a menu item, the use of the provider is not limited to menu items. - *

- * - * @see ActionProvider - */ -public class ShareActionProvider extends ActionProvider { - - /** - * Listener for the event of selecting a share target. - */ - public interface OnShareTargetSelectedListener { - - /** - * Called when a share target has been selected. The client can - * decide whether to handle the intent or rely on the default - * behavior which is launching it. - *

- * Note: Modifying the intent is not permitted and - * any changes to the latter will be ignored. - *

- * - * @param source The source of the notification. - * @param intent The intent for launching the chosen share target. - * @return Whether the client has handled the intent. - */ - public boolean onShareTargetSelected(ShareActionProvider source, Intent intent); - } - - /** - * The default for the maximal number of activities shown in the sub-menu. - */ - private static final int DEFAULT_INITIAL_ACTIVITY_COUNT = 4; - - /** - * The the maximum number activities shown in the sub-menu. - */ - private int mMaxShownActivityCount = DEFAULT_INITIAL_ACTIVITY_COUNT; - - /** - * Listener for handling menu item clicks. - */ - private final ShareMenuItemOnMenuItemClickListener mOnMenuItemClickListener = - new ShareMenuItemOnMenuItemClickListener(); - - /** - * The default name for storing share history. - */ - public static final String DEFAULT_SHARE_HISTORY_FILE_NAME = "share_history.xml"; - - /** - * Context for accessing resources. - */ - private final Context mContext; - - /** - * The name of the file with share history data. - */ - private String mShareHistoryFileName = DEFAULT_SHARE_HISTORY_FILE_NAME; - - private OnShareTargetSelectedListener mOnShareTargetSelectedListener; - - private OnChooseActivityListener mOnChooseActivityListener; - - /** - * Creates a new instance. - * - * @param context Context for accessing resources. - */ - public ShareActionProvider(Context context) { - super(context); - mContext = context; - } - - /** - * Sets a listener to be notified when a share target has been selected. - * The listener can optionally decide to handle the selection and - * not rely on the default behavior which is to launch the activity. - *

- * Note: If you choose the backing share history file - * you will still be notified in this callback. - *

- * @param listener The listener. - */ - public void setOnShareTargetSelectedListener(OnShareTargetSelectedListener listener) { - mOnShareTargetSelectedListener = listener; - setActivityChooserPolicyIfNeeded(); - } - - /** - * {@inheritDoc} - */ - @Override - public View onCreateActionView() { - // Create the view and set its data model. - ActivityChooserModel dataModel = ActivityChooserModel.get(mContext, mShareHistoryFileName); - ActivityChooserView activityChooserView = new ActivityChooserView(mContext); - activityChooserView.setActivityChooserModel(dataModel); - - // Lookup and set the expand action icon. - TypedValue outTypedValue = new TypedValue(); - mContext.getTheme().resolveAttribute(R.attr.actionModeShareDrawable, outTypedValue, true); - Drawable drawable = mContext.getResources().getDrawable(outTypedValue.resourceId); - activityChooserView.setExpandActivityOverflowButtonDrawable(drawable); - activityChooserView.setProvider(this); - - // Set content description. - activityChooserView.setDefaultActionButtonContentDescription( - R.string.abs__shareactionprovider_share_with_application); - activityChooserView.setExpandActivityOverflowButtonContentDescription( - R.string.abs__shareactionprovider_share_with); - - return activityChooserView; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean hasSubMenu() { - return true; - } - - /** - * {@inheritDoc} - */ - @Override - public void onPrepareSubMenu(SubMenu subMenu) { - // Clear since the order of items may change. - subMenu.clear(); - - ActivityChooserModel dataModel = ActivityChooserModel.get(mContext, mShareHistoryFileName); - PackageManager packageManager = mContext.getPackageManager(); - - final int expandedActivityCount = dataModel.getActivityCount(); - final int collapsedActivityCount = Math.min(expandedActivityCount, mMaxShownActivityCount); - - // Populate the sub-menu with a sub set of the activities. - for (int i = 0; i < collapsedActivityCount; i++) { - ResolveInfo activity = dataModel.getActivity(i); - subMenu.add(0, i, i, activity.loadLabel(packageManager)) - .setIcon(activity.loadIcon(packageManager)) - .setOnMenuItemClickListener(mOnMenuItemClickListener); - } - - if (collapsedActivityCount < expandedActivityCount) { - // Add a sub-menu for showing all activities as a list item. - SubMenu expandedSubMenu = subMenu.addSubMenu(Menu.NONE, collapsedActivityCount, - collapsedActivityCount, - mContext.getString(R.string.abs__activity_chooser_view_see_all)); - for (int i = 0; i < expandedActivityCount; i++) { - ResolveInfo activity = dataModel.getActivity(i); - expandedSubMenu.add(0, i, i, activity.loadLabel(packageManager)) - .setIcon(activity.loadIcon(packageManager)) - .setOnMenuItemClickListener(mOnMenuItemClickListener); - } - } - } - - /** - * Sets the file name of a file for persisting the share history which - * history will be used for ordering share targets. This file will be used - * for all view created by {@link #onCreateActionView()}. Defaults to - * {@link #DEFAULT_SHARE_HISTORY_FILE_NAME}. Set to null - * if share history should not be persisted between sessions. - *

- * Note: The history file name can be set any time, however - * only the action views created by {@link #onCreateActionView()} after setting - * the file name will be backed by the provided file. - *

- * - * @param shareHistoryFile The share history file name. - */ - public void setShareHistoryFileName(String shareHistoryFile) { - mShareHistoryFileName = shareHistoryFile; - setActivityChooserPolicyIfNeeded(); - } - - /** - * Sets an intent with information about the share action. Here is a - * sample for constructing a share intent: - *

- *

-     * 
-     *  Intent shareIntent = new Intent(Intent.ACTION_SEND);
-     *  shareIntent.setType("image/*");
-     *  Uri uri = Uri.fromFile(new File(getFilesDir(), "foo.jpg"));
-     *  shareIntent.putExtra(Intent.EXTRA_STREAM, uri.toString());
-     * 
- * - *

- * - * @param shareIntent The share intent. - * - * @see Intent#ACTION_SEND - * @see Intent#ACTION_SEND_MULTIPLE - */ - public void setShareIntent(Intent shareIntent) { - ActivityChooserModel dataModel = ActivityChooserModel.get(mContext, - mShareHistoryFileName); - dataModel.setIntent(shareIntent); - } - - /** - * Reusable listener for handling share item clicks. - */ - private class ShareMenuItemOnMenuItemClickListener implements OnMenuItemClickListener { - @Override - public boolean onMenuItemClick(MenuItem item) { - ActivityChooserModel dataModel = ActivityChooserModel.get(mContext, - mShareHistoryFileName); - final int itemId = item.getItemId(); - Intent launchIntent = dataModel.chooseActivity(itemId); - if (launchIntent != null) { - mContext.startActivity(launchIntent); - } - return true; - } - } - - /** - * Set the activity chooser policy of the model backed by the current - * share history file if needed which is if there is a registered callback. - */ - private void setActivityChooserPolicyIfNeeded() { - if (mOnShareTargetSelectedListener == null) { - return; - } - if (mOnChooseActivityListener == null) { - mOnChooseActivityListener = new ShareAcitivityChooserModelPolicy(); - } - ActivityChooserModel dataModel = ActivityChooserModel.get(mContext, mShareHistoryFileName); - dataModel.setOnChooseActivityListener(mOnChooseActivityListener); - } - - /** - * Policy that delegates to the {@link OnShareTargetSelectedListener}, if such. - */ - private class ShareAcitivityChooserModelPolicy implements OnChooseActivityListener { - @Override - public boolean onChooseActivity(ActivityChooserModel host, Intent intent) { - if (mOnShareTargetSelectedListener != null) { - return mOnShareTargetSelectedListener.onShareTargetSelected( - ShareActionProvider.this, intent); - } - return false; - } - } -} diff --git a/libs/ActionBarSherlock/test/com/actionbarsherlock/internal/ManifestParsingTest.java b/libs/ActionBarSherlock/test/com/actionbarsherlock/internal/ManifestParsingTest.java deleted file mode 100755 index 1314248a4..000000000 --- a/libs/ActionBarSherlock/test/com/actionbarsherlock/internal/ManifestParsingTest.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.actionbarsherlock.internal; - -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() { - String expected = "com.other.package.SomeClass"; - String actual = cleanActivityName("com.jakewharton.test", "com.other.package.SomeClass"); - assertThat(expected, equalTo(actual)); - } - - @Test - public void testFullyQualifiedClassNameSamePackage() { - String expected = "com.jakewharton.test.SomeClass"; - String actual = cleanActivityName("com.jakewharton.test", "com.jakewharton.test.SomeClass"); - assertThat(expected, equalTo(actual)); - } - - @Test - public void testUnqualifiedClassName() { - String expected = "com.jakewharton.test.SomeClass"; - String actual = cleanActivityName("com.jakewharton.test", "SomeClass"); - assertThat(expected, equalTo(actual)); - } - - @Test - public void testRelativeClassName() { - String expected = "com.jakewharton.test.ui.SomeClass"; - String actual = cleanActivityName("com.jakewharton.test", ".ui.SomeClass"); - assertThat(expected, equalTo(actual)); - } -} \ No newline at end of file diff --git a/libs/commons-logging-1.1.1.jar b/libs/commons-logging-1.1.1.jar deleted file mode 100644 index 1deef144cb17ed2c11c6cdcdcb2d9530fa8d0b47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60686 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

lTsdod`N4YNOd~zpxRbR=SJH8j3v}!D-3xf!lHN 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

eDj4$apE&;NLsa;xI<7*RfVGl#n%w_MYqeR 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 z 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

-onC=ZAWw(bGsktCEL9w~D&(Q;PE|#Zf5mZxs%T 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≈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∓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 diff --git a/libs/httpcore-4.2.1.jar b/libs/httpcore-4.2.1.jar deleted file mode 100644 index 16d75e1e8ef7516d61df44b3ec002cc9d87aed84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223374 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 UDcFew{t-QmfgwW=l1YsJ1JDPR4gdfE diff --git a/libs/httpmime-4.2.1.jar b/libs/httpmime-4.2.1.jar deleted file mode 100644 index f23d5be1ac478a687c52ee2f4590bd78a5f228a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26598 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 D0n!~~ diff --git a/libs/java-mwapi.jar b/libs/java-mwapi.jar deleted file mode 100644 index ae59dd9c54f461ab0f9067de780adb5e0cc5582d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 683309 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 z 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%0AWl5SR3Mr!RR`4I!CY1>&WK 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

  • PlEm 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%0DJ^X`+`%K+*9xzNkDyRZ1Y)H3yGpr-N z`~)0HtyByLsNuUfM=Of|v)R4u`@%rOwvR=TNrf{kw*14@w!8zEX2=>i2;{U9h21Ft_%$YIiG}Mi5(R`Gn8Q&@Qv@&<6caS}*N$F;^@B}V<1fNc zNlODf3d~RqHz%xt$52BCKmPH>M58V?1cFrrYWfDraQMr!JDh}ev8+>i3be`r`xIG) z>~)j0p5w>8|NBj_9Uze_>!G+21*EwYe%xO(faK)VMreYV$N=~X zBR%wxYr_YU2DZHDUD{?fMPe}_@TJ!n&fYq}G$bjYtI^O;@NDJ*fc(5nk*)#$NEae& zHqY#RVQPR?T){~$lRm?<7&r!-B3)1zKvRUZ15#iX(sXKpoa_ott(o8m$u^E(BL~ke zw($dsr>BRSn)Dn=8o~EvYuE#}uTeKJuK~s@IF*cdf5J1a)Hy8`i2(6{(6VJi!p0b& zm5hL1*XT!3zeJy;U{1vFLr+*Eg#{`ED;q${+?6ufoFvK|_y#n?$2A2HAW zlGSE*8xWuY4Rmw8Xfr$kFhTmbIAUDZy6RzzooarE^i zL>4oYxOfa8s@n*anwlh0dqXd4g@_%*vJT4ufd!FC4b7O?cEeLFc|YU})ll@v>-VR0 z0rZ1_n;Nb{KdAiwkQV>)zlD|Em6dyI%pW3Y-k!jxk9}QFnCqM7z4eCr>)vdkvLcLn`{Xo_!+1BGQh_Wq73AS_dIXeMnQ0Z*`$ zWss^Da4ap~D39m?P1?=Ss77}Dzf5dP6$FF?r}yMj+(TeoS8+DgZ^RQZXYe%2h2XLN zQh^xa0S_JEE9cikce2XQ5E+TCp~i}N!B$bpAYKcPfhCBX(7?icaZU3Kyh>Pytgi?F zQW_zH=9m`Oh)mE+D*yt?6F7p|ckeFl1j1q^P7&p!EMg-7-xI=sr>gL)rlmEE5lxUS z(0j0udiCt3TL4dE6yW7W)YHL{jGaik&<-?>H$v@pzL1EvR|-)`Oq4+~`Cu!w^)^89 z{!r5rxJw!tF^L^LZ1Wt1PC$oIQK2($SC1CmX4p z1PErFMUN>f0h;AI+C&Gj^t{NHH(SU6^l_X`=sXSr=u3}U>G~kSkLiN5E6l}Hj}cxE z@V%LHWYF!Jc`iaCf)rT5)R(d?h`Ip@JIqUaS=v<(P6GImIOm#~g76%q`B?L& z3q4!_{$(8b`wNq(X7~$K%-I019E#LcE$czk}m?+ zyq|ca)!hN&952p-$WaoW5tz16KC74rIJ6h@0Z`LDWYAqv4|#ZoKciV{k-+4a)bbEi z_YEATw+jDNdIa_>9~AVq0TD2k0UE=_6iHzs{DKiUj+=5bJ6M4+)Z+NJ?jF)4MqE~3 z-W`w{16n3H^Th4F@El+$2cH;%ua;EUVPGu;NGOdCs*5o-QY3`Wgz@X5SJK3O4=@TZ zoOPtH)|#0JBw?~Lm)rr00|!EV@?_1CdVgTlvocIJTD|1)UeCp@43$isf+5Nx%7j9RQg9k3js z5w^|wKunCRS?O^Cza>wimmOC$#6iX!+H(9XMeUjg=%hI8C;!2<@|Z0Yeq(Eoe@ z|AVJ^btd+a1SbMPp$P5&11~rVGXoNWN2NlbKnS35ADsK|N+)2z%`pMsz3!#t4BRS$ zsR#3T(3^e;JPXFj^r@rayRYkm0=GC&hl#z;2+{?%XgDdLE8Ut?a9Z~ALI(l= zN17_mO~)#=0xfV7T)oh`5lc*3@SA{|mr{qA0MsFzeB^!{4Dtb4$=#%NJ!U}VcxwaLQLLB>_B{2N^gSYF|BEdBUIMuB#l}t+`PP4q1LE!PhrLv`MKIlv^X`+Xw z9AoLEO9+4WLHwquuP?zFng-{rt@jFX{FS&wL`0n}h%9G7Jh?c@MrqdCIQ$7+%y~W5 zVx_8NI=YN}dIz%LwKb zONn~vO$UJfug5uB`%<_@CEzC*GcAm!AzR+nTWv|_OV;FXFy7Ezc%n@JSms@4f^v+P z65ucl@WP_p(cVZ>mR=yo#NoGj)4&)oI9Ete_Xu&|zjT9NPOg1+Gl_tyc2Gi>L4`Fi zn?c}C)^hJx_OtN!zLw6$4BWl7#@T{6{cvqNLHP0Ch>vS@11%jg=yX6`2h;oIQ$}LN zhrIE;O5m%OhXG!Q`E=kDm`h4gVl!c?!; zmCYtH1CZvlPB#2<;Qzkb{6~{S5?k3DTKt{>{zhu(?qhZb0gk2JM^L3E z7?h7Q%GZ%V?OD$BaO{(n3l*!~(z**q?tc&Gi0llCiMvvQ&yZ|e4}FFN+YRSAgiV{n z^?S)PpvQVR0?&I#08!T`5LiR}Ytcjm{xYdwu@~qy3nO$D-}-?7hmko^htY1dU)TrO zw<0aH(td1^ASwwubh<%h+XvtV<6LnI`9d^0!9TxU-TZvtLGZb79QEZ)z(S)5ofK-< z9T{{2)b|o+_hs)q0mPNrc*)=4bD>h zeW6H7Xg5D1s0eq{7$!ChemAjw1+=_zWNJ-;3%R<=4Zd7!(5xc{ygRIm^SnbSB|&5( za97_K>4;q}5MH7o65Z^o=(J0L);I#^rBiBxJZq|@<&}sYXdqjT8LJDb3us^&;I26Q z-V@a@477a6py92Yjvy#(?Kg;;!Pm&c2_R13sPiK|j5>+b;V!*>e(cy3_~1<+1yszM zjD-8UTzI#VAP`aH*DHtIkCH7HNvvLkq%#p@SW7XaeAma%&w!RN&S{1xGeLs?RJVSe z^(Dqlhj5MD1{1g4de%_ zI*M_SAG48!Y!W~Kx!5I45bSe41#};Wo0BADuzH6;BJ!hcZ!p;FyExdcT%`3HEG)pU zL=h?4PVhkIG|sts^=6{jOE1!Z*78rJ!A}#^rBXBomeWu}H~YzWNE!nE%5B0o(jvp0 z1{natatdgwV!}(B%+Q32LE9-0N>c#PML3nF*SC`dt%3AH5?Vy?QQk5Izb^Kh7P>Z` zcCKzK$c6Tf!uv>)?I72kiLy@Le9ifEEU4`({p*Bxnl^3f6?M zh!({pAVUmdfyQPnF_H*~+KdTfpY182``dB$Jw#j+7d7*s>Jsb~0Z!#R7Y6b6N<7DQOibSAIU7e+6c1!8H5SX#-?R}d%0oZ6xXqcx} zCjxC@steO+`}h8@K|{>J`AQJK5fNZL7f-zX1z~>|ovQo<*ocD=REsR8MEh&7ba@l$ z0@LkA1(i*|S0eptd1$#1!8Zx;2?62p1E(5aes>mV6(gX@bb>1pV1mL>ACbSh7knBD z$E2Oyh+zKB?O=ovFD96y4Xj7B;{Sc z{X%5v?OBs^qXB5y<9uQ*IvCd5VQwY`naw<*0AJ>#f!=yK6G9LZx%{y|4Wz3VkZr9h zh9^|c1#xEjT9$Th0)~{&VKCyljIxFiIY5 zzbyzLm(W8qj>be{=zpUp+-6T9#)@wqXbIw!GpZ&NV^H(*f*-=tQ_2-1Zm(B9wX|A5 z(HDsdX!+ZiXfKpA0i&6=s=IWaZ23Fct5sW+O0@gnZWRo6ookG)10eiKoYT65bP`od zcnc3Ca8Tu*xdS>A0vZccufXh0{5iiN=_XMMHmeG(CPk7##jksnFbAm@Zo)2@Uu*?L z^nwoO&A)4eMfB$rt}E&A-?K09Faks9%~|t?F+()KHGy-vCp4F2E<9Im2o&cT^rUYB zjOqo>J6k#h#M%BgB=Bqnzvygkw<+xhCh7Og&|Q+!B2tF4@*pDy?F>vh%Z@_81Gh+? zkOQ}rj!;0a#M@VpEV$J&BlP?qII!*Krp}ClZ&_}DT6JyZn&=2*IZJMD8r`n7@|CL9 zLn5msnFHT7U;IM~KA2k>0^}ZatkBHhdL!w&A~Gh49x}4`fSQ~9^;hd6t(|{@eq2sKp@ZL7xT)2@9O+;pp$ej-~Gv;t?QO&fC2@dEVz}0dt6_fUdSF zrwI}TE`Q!g93b>XVz7XA{=y;<hE{Ey&VIQJ`!+07GCw^ zW4J#Cx+uQfMRBl;V8)O30Xpdq3oEkYZ_-ur!PjJ5V&Yt%Dp&YD$ERn4`xq6{b)4A4K0il7NWp#O0||2gHvRE6lJ zxIH1#X=zseKF6vZe&k$KjT^Y;gL-mXgP4ubF#JQ;*Bwp39p)1N31%+E9E)B zgafIUfgd{fwmx8?m&hMD&lVV!Fh8D7cA$I)GA4Z0XT(++8@s)uGZt_hGt=~}?we81 zNz9aGCj+bFs5C5|?~W%`G*RuE5D~hVUMU%kC36M31@6z^j_u?x19lMHhZBV zNE{wQJA%!Ns+Vaglr$=CcHUO%0k8aI63F_7qk9}eR!t$DZ+XUfCjw4{*z2w(@qQ9B zgYzzM7_B|z1eR89jE&wkpTjEn+3ae1v6VB6Hiqd9Lh=7B!*$?4F9X=0)4|z-@!w0p{+EQ2 zqmhZF+5Zr{{TD%`e-^ZKb#?q3Y4pF4wz6}y{Tm40zk`_ByIQ$={S6Z9-yy9W{s-#j zUr;#z4&~_J@OR_mM5 z{MP}Z{*^f#{zl7R&B(~!-oe$#)yl#CZ#4bYjQ$s!|J95fjhv0_T>b`x{Z}Ao2UiD^ z|Dg*CsO%3XL9NDzZ~VEF0{%}!{2xw|S5TD_5o2)mboGmGun!SL67?bbG?M9JGAv;` zgHlE*?@QZ-Wbm+Y!MM!3#vpyaa3PKqO?58G^kPj_>6GxqbYhQ>gO(cj{+L0*-qqEX zu3tbGRj#LXDRXLE@HXD!o2KOzs*yKF)gWt?M4{&Z$~9}g0Fw5|gbj!EIR)XsRWAaX z|LpJ(;8uTjka5D7f5NR2O>Yt~-nNe8It;ZSTSN!0C`u>8BbwIMCduPNuvaXQm?eH$!g6%IW^qx>vik`Q35vm;dic zaXNL6{ojM<_8ocxH5~hcgW7!d*RTz}U(NpQKECnsu-+H;9qV=J-vstiQEs1fw<@(g zyn&9kK4`yBPvu)uYzcA1TBcqO0a4j`#Jq>R$Yt)3z$ijvobQnxa^b}+e--}j&at5dgy4bMcDA8lxchjIZxX8rUYU_zOFf36n1n-; zU8N?FOF?S~V(;oPj`YFm3)SK|z(e5ISiun2!VuypclIsrE;dvfYFTZpxaubbDB(Rh z8gh5<>H0FIJ)TNz;znecE}!1+7H6ij6c=+j6+3uUa?|JpzSDU^r_SMj=|}WOC{(+=GgoWAV(ZD=H2Zm~$j&Vwo2vsnsXJ3($2muRmV zPV29ui2d|^zgB2#&INv`-wP>las<`H_XDzToB)p`axUj#60Yn|MLo;R8$bGy0<+_Ui@ zc~M)H+ESnMshvFhV;7^gk_}HzSsfhmqRv*F1)Qw#bczUP+jGI~**i z;uNo!T10R@c_g4F49%7RMMDoH=9UBvR4P$YhWbX>U8nA{i5)CeIy#*4P_5 zEh{1gJo%{aQ9oHa%Xr7NtI99+C7hEztAkj){vJ2o%pZEF+T`>|SWnJW+KF z<~8R>Ja|Q<%_PsWUbVUF3NL7Cqotfk)rf-~>s^SZEs@FN^_yR~=1Wr=*MW zY&nRXD3`wwZE$+!R*yElb5U@G?50Wg4H{Mxgi5!p{-FeDI0VoE?wQ-$+rXq%4=q zlA`rlwS7CvhaEimdS$oRKjKCauwS}TC^?DtO?+A_xdK^u!SBFQl#r7`7G4FYp>yBt zLSL*LHx~kXI&?|*rWfLaPP02+psmpD-vtQ1G0`?)ceKB0_H0aCV#_;NSMMf6 z7(bgzgWX44U%!9bVsh1~2XU?$Af%I`pE2>MYZDio^IcH&NS{(SZaf;l%N z_XLF~O?}0PH%pb(v4;Yv3W(kGFW3m<%f7fsuHDE+i!dyJ0{qC}0Ju$NZ@)jB=ex~?-KlH&)L!d0xo&84Ac{;L7gIZzdAah^J4rwPWH@opB( zx!3836gaK3jZKb^2*jXCin-|LP=5b|GTZ&BIRCB^Zp#S?5C-f7rMx2`>N_yrGMM_- zt2*yEb+U{6o@PHGJ+m6ppsFoSWDrZ3`I3dSC7W{GYZ9g=x(1}I(xZL^`Wc8(^{x?A zucclBz|VMC@ix6fv)Y%1t-MypOM1*bPB<`x$1xk4pl9HIj9e1es0mpxZXXI8{^RFR z6rWvoN9d10Q!(qXF(T?_?b5Z$7OMiv{WpU8i+4o}heP^&*HFpL;@%2^XWU(NcnQ(D ziAsk{gu9ddf~507FUmX6)cN`ohRtM1&PZt!!m!`Gh;DQMq-Mm{;0m}CXBpJ(7DqO$Mq4XK{OX&FekBm7s=uLp)D-_5IE&J7E#N>iCyOToE#^2$*^bzXRWGo@oIbI=AtjZ zgYde%T7uTe=Vw;Q-jkrqSgVs~!HL|fWD5-lU=5a|fyTq{vZ|K+l&q8w8uClH2 z7+IpJK5F5F&P@4WT6wFBz$tTX1K4z#@2bFzN4Pq=+FB5G>2e*u4vxdpPg-S2L4gPf zx!@pnPY{S+QN3r50+8^mD6r&((Axy%3s)P-h;`1;~b?nVJ#XFK~H&jo|gqtJkD9(fLQ6+D@Lg)2FZQj1J@an zCL?u@5pO5g)C_@ZPk}L`ska{)hr>NAUl>w z)xQ?*dltNI_HIBvVHB~TB1AN&JYCJ8xFO57)?<-yb_^<*{h(K|8izZyOxd`elz%~6 zynT|M9-3qrAPC{IAtWYks8;*qw*2592)^#4)La-ZReX_)UR|t!*TnXefQEdmi;#nq zw`M$UBF+x}>C4`(46>#ikR8o?RpB-uv#IS1@d@qDJxmr+buGWur+gAiuO1A1Pr}Y< z1*1+D{<`HMwT!!j9u9FrZ~e&;$4EKTGu(k8_-WgKJUK1<(Y{8<+25X@zL`%*(6;|z z+@oL9I{6;!sd=(`k4QLV{8asN;_L?LD)9h+%PKFS#}i4RTiM8LH9?e>JQ1iuY3V$! zx`ebY69H~wpS~IY46f<-WZv;suV3fi`E}&qLO;a#eDVA(BrTdSoiKgVfI3uwuC4kV zKETg#&&*f5rr#)@5Yy)F%<1=;k<09Ingc9uw-(TEpEcFRTF~t&M-47`%-bCHo@L3| zvp#lF%wFNUbR^E~^!w&{?p;yOEuhs69M;gBT1bK-0xYLXz4Lv&(r!9Ko7cuH z6S2wpKVzS9DPXu39UkML@TuEIy+pg)pmY#k;K3x?4ptvR=3SHp9H~%sS1dQy6u`z> z8dKlT;0QIszk`)9LbmJgZF{@F!$E@&rF}<9=)0B0WIXJi3!LL}0qt?pwR@extM;r} z_O$WcIZa|8jbJAIHlOQZ4yb+|+C5(8y(>T`=wimJ_c5s|w!dHB!=#!hyCIi{PDG8V z@T7NR)vgn7tQ=)X#H9(==!Fh$1H$U=;P*5+B64IxNG!-l-0zOzl1*PuE|Xc<2=D`C z>BA-V?dXp_fqSuMz#v}%YZeyN-||X?aZ5wXN0i(yKlAq2dO3H~F)Tdl$I1&{C~4sYx;l1A=H_vs6(;Bn2-Z23Rd* z)+YOLskkA~;;1MXoj8*vDJck<*so3uAHbhf2d-3zr5S5tKXzugdn~RWA1;1__Oa7Q z;gLJZDmrF*qv$$?ztdBcjDiNER&VSMv{>cy;G27-oNxXRWe=_y07*c$zXTQQ5nREx zV--?t#?j*`XjK4RwWrwwx37JZO<3Uv;7B=QQ+j7waV~}HHNVcFD#v!}4*41O2FShR zx*8*1==>x+q1Fm;Qv(afaL3@sZu4?B{Hs zbK&4U(2{Adc1`{P9lq@)Kspu{jVLR9-dN4lDo~SIff~sn`|H=shFP381(Bwp=MgGc zv?NfLj3$Sy@i0?Z^Pcq(+zMQiW_$+gl!Ti=73><*R?H4&gIRlQZbTQrhYCBb;d?R? z-sw9C!VlnoUO(!EZro%jARxFuT|N6>ZT9?Q?@PtO#Kz3^A4{oX=In0fEaG5qZ)Wn3 z4W0j7(^?H1M_n^)|6bF@WLt$SHmPKNWgHdDXe1hrIJ#P1pUi0dNFYMq{Zp9 z={&dDb>TaJ$6c^T13I#5gk?X*Sy{7W<-tIy;k(|?XRq%+-}C&ATA~?&*J5amY=iW|FZRX~79EQ)p2Ls_ez$N{?gcSf-^s(@ zz>v~CblKeHF}Zg5Ibb2~`x!a+7yuB*Zu^-8LJ=o#k+B7621T6jn6>0Q%J&|OT=!v(e39cr=VKYi9i?Xol9sLD4bs*z01{>|QM-KV(cdTT z4p{h*M^LDNkuxeOS1((&dFMoxBfbBWjnG=(hj8Yfb>wJ{2_8$v+Ncu8%&*U$uovG@p9 zKATB$Tyi9NISaMH2*LG%`LEE-ZL8A7OoYQPD?WkM&i(x*~Mi(Q@NGW)Cw;!h#^{ z41)VPv=v5Sgja{2fUT*BR8uYX(S+aJBk7 zRW4;LO$z1ad}ixl`g_2OM}zOt%zmUQ;ylQ_DXlJYN5y;jpMGyROzyEOev)+Q*U#A4G^3#S1vt#>2Z134^8&V-NF@#dQ-z|)0FA< z&UEoQg{9S9a4LO`F2xn)$A@BE_D78e$JZrGiEa<+QF0))^~Z(`^hUVy`H~w_82SCK z8_sZFnPL<7>rizjbj-!cz5rCGgN*g^19RI|C)C!nc4Qsuu7Y<*8Z(L*)tne}Bqj6g$~syzzsG&|J>$4Fz@*B8ONCr(&o=UcYyagY7X@0co}Jj zJ_mb8)wL2$9H-nHM_%~&a!dJyDbz7gYpK2y*n6%0GH}Ok6vrf@jS$%N7(FgX^FG7& zz&!=j4MUl1BaT}{2-oHGIv4BPV(OOE!jsD@Yo;YUYpKGs6L`W)df+O~u{;jt)N&YI z$sb)x2~Yh(Q6QzR{|vH$jy5cU`cbN!{rI?MvK|&fE)Hl3gI?FcyZ>!6iXGp3udGXT zbEU_N*-M~*+R1)8aMz({?DiTiRH#ssadk&7+mpKB27DG`1H*1pIT~f=mTJj@?bJ(Dpizb>yV`R#=3msX%DWkk^FX)j;iG!m>S2c~%@U z@g+9iI@E+%7{8K?j2QpRx5&<1fk#m}R0Sq?(Euv>g?NtTS;O_Cymh^hOA@7#))NpM zNRq_UjXb_I9~IPq>BKoNRm_~upgo8$$FN%{eBY=#zF2p@iDvH@k9bzUypm1@^vWNk ziUAS@p9mUfG|n~7@R`-0`hcIXE-_7Wt4vdBr2^iaR7LE)NMXOZ6oWe6WT78e(KFZc z{f=`59-I?>(PhjgijQh&EccF9xsO*}EDe9s12G^1tzTe*={l92%R=wMf^|#wVbX#S zc;mzCOtNNo zqs9)p#*bGf>3J#65yNUa(YhBaksYN6hCWNeXYbWh*njp8u_h&;1SFs+;Txpz*tJOb z>)f?-zRaE#)hpQJaL>e_W;0L&SmcDSA;|X4m)^{PH12qdxao&|zPM-pR8LJByQavY z{O5`ZY5pb8b@AE|DY*^EzidR` zF;^B9aMjRBq6|c)h%->hCJCz-V}yf)<<>F4nB1ZzMoNT_6;S&HMxOMiUU?k-2d*a zlmBAWW=v)zo3Zfy6z(g?OA34YVw(TmyUy6`My*-Yhp~WjqnSE>EzvT*=E3tot95@m z>>0oCNwKM8_yM^FPg|0}q{c6o&bdXFdk zf^Osuz}G;d-+2^nXAg6l?$+U-s~iJ|vJT)s6>1?k5D>?|t8zrm%#GY^|D((iv9&U@ zcm3BgCskEP0aXa?6Mz9@1`865DOyF9*4n6xHs{=src(+mOdHuPH#t{l?~%Pto%qvu zzk0S8tvFI3>t$DgC2t)ANe1qEFlRF7A$QWh>zlvdCyXIVCXx3oQJ^I6NU)_)Gkyb6 z9TCBhNDO45iLh0&bhh$F^8x|&Rl|b0>ZdJ`3oxINWi}_B2m{LtiAfjSXG#wvRwpZf zoTK`v+tHcNA*r0x1hc(k5?^E;zT6-UF5QU6gjXzA!?Td=F)0Oon@U60PYdt1ih6ZC zkp~ zByp{hT9H9^OC_nvM)GGM>>@e%yG0wn#k7tj(ii_U!iZ3S{v-3&(+F#a+R|bfb<~zD z&#-l-bUw!flOiF%?y-bXFzkugT2)qAaKS5J)urRAp0guiz$tt1cpkGa7$8Omek&`2 zGRt04UtkaXHAjSI&)8f$!m&umD=V^58H~hJ0 z_PBJoexXDRl84@&*myjaIBELc0f8TDKtn>o z)`Q~bSl+opF^m?k1YAS)eIs~8dX^8vETI%_GXtWXNCXULtcVh#ig}~G`c_&b1Pt#nBoT-twl2I@s(5NHHn+feEFwI;Q8TraJYoBkE2|a4J?$s32Uq=DRR=q&E^kb9p_fM+ce3g6 zP(kcfYV87GWZi_`R;?)*W<*;2h_)KEswNGl>$Xn>AJ)o<=!voO2H`vm zXJGCm-8)yUjIjzS6p)*+_?A6b{~AC!?)ci=#98boZPXr+b|8E!-Q)p7*|sFq#XiJy zd^WS-v;fYKP==n+Et)2gm6+$_2=>bhr!FZcpGQZNOe>e%5PGttQb>2aA4cpgaAc5B z^CN1YOZyJ0^d>&8wquIMpU0?2o~{o=`Y|f)7L1)w41cyvZ3|mPpZvXg@4VR=bhTa> z4t&5umeY~-<`&}?_n&zg*mR00^v^9c0T2-9zjGlWW0yZZWAZn|JgsTvi)V)KzcWpd zd?}yJQCR4~$-lVW3QI3ZtZ2EICa$8Ltw^UYnN7d%Vd&J0+8=?D7#99A+ZqTt27|W|UblNF1DY=0X|88aa5O z898znMra#rk^(oV9<6oS0&J2O^6s~z8l=3=oyMD`9A|L9t3y95Q-dgMcG@iqLqo zuUF_N$Fg#dC3kiXflw-mv)f=b?a=Gp53h>n9xnyk?6tLu=;1^*mD?$AA9L(uP32^M zRvyufTY6!QaLjCu%i=!nl4aYQ%q?B|%44o+qc3EVE25aDQwqLApyZ}4GEQHl`3cR` zS0|2yk?yBe0ZmHn-nxP*0^E2l9<|JR=#Y6D%PODO*?zlYb|!O**6}Vf!TW>=%56?; zgUrX-ev4gPGs}4Mdfn6KUoCzz_gq*?y;@}HVuyfw-Z5GtU>S4QV~w)NC{vw0%amDYAs9 zkk=`!&v_ixqOV>$jpR$+gH7JqDGc)*DKEK~6Y;0-~g41Aaft zU6&tzpt+R|UyW3X`)n;fLc4F5OUsBBarzFX-Nmr-%i2n%ZE<_OSH`t#6lZS)iUF00Cm(pe-;QV%>d2I`aIv3H(dh4$)3Ig^E->y zBokx^od!N42>Io#{q$iianJ^^M_%gUyQ|4}gU0fuTHOaTMm4HTqboUNTjuQGk=mo0 zb0cZ|3s*!>e{i$$;+6U}CGL0uz3*7+ZMEZ?8AosVMk^hprw?ld_V3u8jWNCCm1M|W zO|QE7y~_zpI<#(JHe?n-US0QPaP{&o-;J>0=3>h-TiDB4ktEZYRz5Bsy|lV4BFsvE z=-|$6s<{?R44d03HK3nVtpViG8AoJPbHedy^rQ4>^kbt{b3$Ti^dmJY*Fq6EwnkTV zp>mX=3uQJX@a?WUU0vn~&dY#p{TzRw-JHNp9Gvlk$ybBz(8t<`JDc=|8r!cxHv5hs z*qO;A3>#X85_KRJFP&k=#5+d>4Y~h>j=Y_8#$eRRC13dthQV8yH9ytwYC%zqXq_3` z(f`5Z_Drf_Sg9h9nx?~sY7d)?wepJ+iz8B>-{_bXq2Hh>+R5geIWSWvwO2va@>Fd; z+#fxisCX9`eRWp|{D+beN%g)kb}FLL_r4;NC2i-8mBl93z0?U~AvC_4{Wee0;hVYQ zT_yA%qlBs-$N|burKb1hULO|d0sSV#!jRkL``@zO2%z_@GEG5z$$O(tf-*JKQOVq!_2_PbXejBQ}a402e$6pgsiU#$!!bPz}mq04$Lc0vOISU zxPo?0p7<}q2bleic|Da%Dc0?<;AK96QSFAc)_{VVl;SDYk%4p85uM`3C?+!3CAe92 zs4dJn#c~)ddUC&UsDJuX23$6@+aF{5Fvp#^Jd5YS&RirNAW1oaA#*Q{5z~Zgb1#hx zNl}a{27tjk$KeZo)Qfm>j*=PUF$$;H;*6Q|V6!KW+cs(mazwwvP|ioU_(m`im7F&Y zP1Zw3h#!$oC8s~oO}wJxt$%re)6{T?s`l2+Empe^S zo4ZyIQtbu5#_XHA*0~URj7jj_50cHMjk6AMT$AbBqPRSlNc!nBKXrjDnFu^#i91%h z5Q@ZAL!D{X^H)8qSXR0_oZHK04}I{!Ff=R@zdu@c_}zV}NAdPjP=G@2SE zwKOAb!;3d&$L&yAA9dShHeWt~15kn>oIkN&xZNvr(Pm~MTO9F3Ab$Jh9hX>0WVaxy zr9tK(Zn^`uL4vid&nn$cWo9`ftP=5!L;IF`vRYOXLkvQdKkTgjCr9{SuuDS#Dmm3Lz(SXBiT8Aq~2V* zAWRWRDZaw8K+p-M#5gZQybz~BoDDKm`dzq`dMP_9G-{%33)PzcCZ|3{mNEe&V;?iQ zSris$C^G1S0nBY~N#pHtgWnrI&S}(f0j=X~;mep|I6vH*`I}%PapWvkJWmjG4ha+Lv+fO*5Mf?cmh=Qh8HQ-EtPZmZ-H34m80~OlV68I2 zL#FGCnx{@A=+8J0&)~~)5SCDl7X)7=qL_V_3KbJBJD(`*Hi6(GNt7wP#G(WBMJJnj z$&v=$9JC4yTHo^8TQIF5<2U*4Xw^7(!XIwk6Z3nSJ_wl-H^NOh6po#JLR9m(NM_FX zYI#GQf$JxpaNs)!sCu_Jh11OZb`pDyf`-0SU1q|$z4&SM~o@H z=cFt3^<7ZOhmfqW2G8`t&C3sS8U}G?>vM%$H7B}Rp~lYb;TlDzZ(VxjF8knfZ~Ah7 z?{CS=u~N9xKD#f%p=$+Csd-8u^~`7O&5uuo^}xR+{O8`th6!K`2>}FT3kL+m{l9ED z{B47jtG?}kriS*l{X6T-UB|F+3?%GGL!L6ZC&myZpC9GDjQC(~Vj#a%xnDyqTK5YiXO(^jtkO{-e+c&^VZ|MQlM z|Fg$TkHOc|s~-@q({emhUdkL@@h~E0UebJ4e9u~XeEB>@u^wCz%deAS(AgI!pj;LN zm_6cedBZL!2$NhSBN7jV1v27O@kggKkP_*Z-ljulWMmayTmb!VY-Hr8{%C^<2}zE+ z!Q;D|b>~$*$^ClD8~wYLtexD0IT&guwP&W7oW;`V;z@?l$STbU!>YrcqNfe0Rm1hA z!%PRrd`b0Js-kjb&13dE#U<=rGjnbPO==K0zcJbDg6*Yqf`*}VrP@TVb9G5p-6|QVxAX@8Zub}!8-n_) zI6;kHKAAzsOf#>Aizbb2JtvTPN=X+D5>p(xLm5qw%Vu3*xcNo&%ghCg9$>~=JWe!> zH-@$H!D~tVOTZq6sObYs>1Ma=h-<%BSj{UI_eENd4g`#ip#aA<7>ty8fcHJvsL86G>V<1>r%xcxoD2k0{ z)g}#3D<$hkAc_@$rUW@11sd$Gs616iav`K`9Srp|qz2@dW=a?MWZFdIvG@p7udpKNivO&jO9p@@4!*| zHW9FRDaEN^WUSn8y!JuZm!&w;s9fk2rAJ+;S(|Aszsd!!!)Ibtf-6pWRNe ztUgwBjkoS;3W`1LRUV^a@=AAE$T~+wdci6&QqR-Xt5BK^Wwv~|DhR1Qw@3-snR9A) zRQ65Hz*=L`67@Is?;bOceu2U`*mz~yJY7M0zO^v+C0H(L&1jT2)|8?t=3O2^h=e#b!JmR;IWOS^7z6A#@hsCl_B9bx1pam5 zyiW_v5UHzUtzx3N3%@j(lkkR(UG_bRpbr!J50edokmj@ zSfWB+j{T}=^_-5!dnS1uY-18c&>bjUptSXD>6MG3Nbx~PDV!o=QL74q$u_i&QP zp}Z-7foH|xa!qGQ8AxI;`@RDL5lx@{gFwm$2r5VYQFAi^Fvv&xq$cN`VPa z_n>YT;zGQO3Vtzt4MYB?jfz-9&|H7S;l@PYr^G8HB@0&54JX{zf+*9r%I&C8%V81i zF8F0K)Mh6xQg8M(2LH#aKKTXe{&-J31tjOx7r>gj)LM=hp;KL)`$L3`V`v$#qy!Vo z4M7y|VU9>m8;A-w92C}nPJ!`0m!P>JlF^5KWCTtT3}285Fj8u zFd!g_f0teU>%SeMRxU=iwhkUrrvLfiPquOW^G(*w-on-LpL0#As*VGS5ZWh10)2|G zSVejiojy(aMhk^C+(>AF9J6O6yPPjx8gkisE_s(o%hw>~R|q0Smbl#GHeqR=o;F)6 z4({{bR1WJ&&W-N#MO%D6aLv9nj+Lsi`}e zd9z|C?UEoOXY*_e)+JMoD}R9D9dcXv0FE_(qomY1ezjkQe=@O`4o&3^Q;mAOx%Q^1 zWOGli;h0+~3gW1}!i$2}EU{GY#roFzVK3Y(zmYJaS>K#MAnA5u6Qa8Y#FkSxX6~ox zZF#$kUt!n{%I#rfKVL>4Pa-4<)QcdS%`-Nf#{g5xXO)cEofwll8z^bhV^4Z3mepBh zpJ46_yu;lLrYcUqA zVH&Q{(lnu87eb7VN!6dz=hA1RiQfW;Q^f8YUoweuzsp{>@VdT1Rgjeglet31f#9Ra z^CVpD*EPzZZ$`_JBYQo;Q){T)ldix-f>J($%_5`KaP=M@M)h{Sq^Ydbyl;{4W(q{H zTTvw3g;+L5u@44!(Zf(JGGQ^R-cRsq&K=TU91Gm?Y|&iv)sl1WWsb3YK(MHGIfB3u z_JtZ*N%hE&7;h=2i3Lr%0pXelp!>|tQy?hc^-Zo(lVUAd?q6LvzHj81qgnflkUP^`XA^h-()7g3*TDh5Tn1^+{lG`TXOa zaDN{0|1U23#|y1YT>r)~bJeFcP&LrLdJ>pKuz*R0skOze>|P?~{Vl<()nHI?=SW8O zCC-?<z5ZsfYIincv3C-gAsHWq_dT+XY`oqh%s(tbf)`LRMDh6bLb;O%sG z5dQG_d9(Ap!{_&TVgQ7&zsdFH)Clgwj8VQP0)4ez`+NK9)&6K9o! zoYX}Bg2n2TGguS)fa2`rx?2(hyZ;)Abv)$A9Os@B)dTgFH`%V5`y;_gYb2FRV7NPG zmdug`gX|RL9)(M!T8mDr%>GTwp0yrM6= z1w5K8vZmNZUEW3RP9ItPckmfA-Z)QP;)-;Z{_a`uP5J_feAZ^~8Dr_}YhC5LN!(R( zAPBC1kZ9IyY^f5UtORN^??k{O8jX$3P%#--kkTq+Kd&6y*L9ce=q9qc&MI1aW5Jdb z$`lu55hjgNmTH`zonkME0Tc8~j=6LQS<)Un&6vRF`#px*U@$DI3WYl|&6?V1#niXy}M9q;yXl>gv zf2pL0wZq9Ks&=Pq_>%+y{#qfU?nJ|5+>tb6x=mZd1YRvE&?QT)3@dj$NW5HJq9;c5 zLtLw=JI08YfpC$pcf65dK}hsvxpm5E6_)E%!Ctmy#?lp4e1*xhVf7eshH&lDRvYrq zVCZ;E=t#WzG|>hxaO2nB4u>YPT9hL@L)`B%rjV zvo7u&ck02)8^Y_>{pT7_zY)u`b%tkK%8%m2fvke(=T)Q3H;2qg|Lf6M~;2qljY% z5{|;Gj+o#d!kkk-OZ@&^RnYDjrGdX#6QF4o49p#rN^g|$f0k_wkC|ic3=?N<7tS&l z#ztw^EPr4l9Pm%H;(qNynIRWOXfR1PQQ(pLrMTWCKWZwz9xU+}O~mj(ef`T1_P(?C z8rS|IR!x|{dF%FH#47e5AEIV1X3kbdwpQL|&i~1$E$UJ#xDsfe+9){0fMFIJARo9m zc8LF|C^_G{Qw8--|y$~-+*-iXQNtM366{5)ZcV7?1!wyUo7qxEEkx8mjLBBm)(Q2fE_iHzps?de|Yw*Z?js#G^G^&~sh0=~zC zS^0_r>9=8_ZUBy4Tv~OZ7EkkRBN8JF7A5xYWsQ7UEj7L=xM}8g5*D(9MP|Xc*t9w= z`KGt}i*VDOGmc)DrV^v8SbVJJS*)%UY$1%P&QkiCYRNoOAkeI(=Qh?tsP9p8CT1-p zgQXOB^y#bBhAzKs(lEJmms=dXf`V-ovf)u6in-ONW9n{=l~`lj6B)G@OQ+>{HcT;! zM@iNzu?4vOm%_@Ii_%ci>T*q2>wB2uOpsxCaGfTzzm7#|7MEoJYAq z^h`O@+|b(FGY?oAizE}D=At?xkUliWF5(liHsWR8L*Jg|qE6^L#gzv1pbeDmN^!Lm zJ{4+iy3zuM>ClyZ^-<9mS9Rf0bKi|Fv4TZM7bVskB4MYB{M5YFoz=8AQgR;TMxsyy7iTehWYL-Cz7E!?kofSjRmr@ww>#pXue4k_l_4+EEOO@qV z&b95Dzy~N?J3qH8UErGDiX)X|y*7OaF|MNYb-SgkbloFIM|tz%bc4YG(O zMks~nRvh}sXD4nJVJa^S#QAI6mGG#WbvV-t0GHX-w4MDsdX%~wR2bsHuT!lRrFg9+ zl74*QLKC`R=%wlEqez!WW_}q1mxZXh($wq~QmoPwuMNAo9kH9wT?Wll!seU)76Qkc zfd>tyM_z4z@?2Pl#U@Pp$DAO@rrY_pZ-F|eB5;_txmTc=%n)m|L1K|8132DJU3duiE1TgD7z4^B-w_l+xNb*=VNVXFuPa`f1UHF@$>saJ}2WJn6 zx7uyJ+ky-nH`}ouR(SKrmHF^5U95{Co(%-;q@TL%ReAKib83@$K)8eu*3tSrE=Ic-5Galz4z^N@^7cjPu26#Fx;Ag=)Q zn<60J7;5%10ew`D{%~Gf&;ifX+qA%c|=}&)^XzUOa2&ftg2#DqX zivCpoh5TyOHl1@_HT32g10O9O1$s z_eJX;WdYGVAI;W`+ouqK?zs{x)nGaWT z%rdfuI#`z-Zy9Swd~vR>>j8EFYR7OPTGNNmy2WD`UM&^L=2SMRs(u=^HpV{{A#$tC zJwht5*?Tf=7vCqH?w49Dy5*6I&8k~0Udm9*%}ZUjTG=PJoN}`+YP#YHlPyL&=ute* z3bgkoo7O4M^JsMa2&8AS;7us}D>6F38??y^Ms zZJ|BLw~8;_yB6-hRID_L6`DLEjq<$!XHD{NLu&*wa3(!#$u4O+jCZ_Q?YHxb>D-Ln zSY-t5rc9nATZ^`_-X_y*^b$`IhV2``B6gXJ*n^Jv^YW9-vPR*1jgX=m)6zV}7u`kY zHcwGDigNVM*mdmMn)5vb>X+iEw1CdQ%nQ z=UG4R?xjFN1M-NMC&^WQbqJh^B(Jg#j`#ECp1=ZVWAzp3X3Jjed^)K**J^z~dlxL{ zBELe*zfBTRS!h|^(BRmzt)H5K zwlmOmy|m=pM39WJG#|b=L{PQhH+-~B?HIg(=+Wy96FSRjU)_PrT0iUvUl4JvF{)!GT289;(6^HyvmiUU9ajpluK_6udmZ%{LV-=~ByR}okknOx&?Zi}| zAm~i~BT4`?D`SF^?nma2WXO1nBUFw72~o$#41AiZkHjtJPv{By`U_Q2pYbOu27C;o zhQt)^?w%mbACi6&0-^|DKsk5mE#$Qlq4UcUNMc@NQVEz@e3d$6l!opQYXq_=wBv-* zDbyT5GLZzX5b_?bF4W|H%vSLZkVmq(0T;fhlfyNcG?ybjGFtICK)F*Kv(VejAvE>WGI zSU%M`KwHoC+r1DuDZ9cu`u{ScVl}j}4-Nz*4hICp^?!*OGKL=imWXaUqb#F+)zDnl zm>6e9fT~_)N2K72A6=%H3pNwD|Ns#zeGc zZvx-w`lJY8knNoe-b2BQtH@Y+5C%}hu$E!-#(>kU(5!?xvEiNJfJl|<}QK|`?^ z3k@`WG#xky!IPs{1a5{AWr6A>v2;@T^TL_Jb#L%c8B+b`-tAdCu!bvT$w~p3u}qNN z7*wT_TztlJCu1;~ zL2CA$MJvJly(XSvw`nGxU|39wCXYH#Gxg%pE1`kCO5h#C1_T>)*r3h)kADP6SOUCU ztqTA0&F9I3i3IyLcv*{*MCbbym&SQRj>;dxsN(k)qfy@6rulcVv=@6mn;?R4L+>CuKsejsD0 zbY>5Vb`sD0b|Ye5JVO;aA9ulTW$($Y&~S60!~$QatM1er5w11Mn7WKuEhWFD+e#d$ zP4FN{E!rk1Yt0(0b(95a7l`(# z5^aDE0RwlL86t`a!IFoM5C?djy;QgqmHvXIRY>KhYgT4UtcLz;z*b%=;@iju7s^%BZTg zDo(5+2I2%s1tbFj0;9X4_>KB$#6;mPogNVfcLb&%ssU-G79n~r--;|85ev(_SwcZ< z`*)NpJ5sjH&`~~(8@&J;M=NbH?N9u^oGTThAJIq;qVu!sFQF%q#f2~u&<{g3#?rY? zD6)y{vpk%!DGR>N62*nit^V-m^J6?(80>m|k#Jp7l?gGMZ@8iJztv2Sf!92=WGh={ zbJdP-dRci=)Rb|K;=Vw$vv@Hl*l5M=QvWQ-B6;E?(B`NQK63XEThu0aDIl*=^eU_8 z)rgNos~uvmDdQA1S#(>~HkWVzEOtfaYSILje7ssnsfhgTa=|vG+^7v@601<6=Fv zb83=})bEuliR}<@F#kwOWWNPjbNcQ9d_L&MNJe&(eG}n7tpYOa={wEn8} zr9J&Wx(o8IE)K3Pf0L%Eq3!=v`2MG8zJ#`mMzko5T}l`Accau0H6(WAY|)y45FAz7 zNpp6yb#uq0+tRrFtiK@(qp~on`r%iK7IL@}3H0y+T@+cg)JP)}U_I7F02>ZiHA}lTw`iu3R4#MUPTLa>EhW*hW05?K zQ<6fTPf+%L>F(DKJV0Dhn7mtq%h+x!$xD*(@@`Uyv#gpxT+vGoDPOeE&PyJ$l`2Lp z=B>VKOxSNj`}&gvJq@eG@ICBd%^+jv;j(Z5_FlcpHmb1IjA!^F#N=BNb@ev_BFW=` zs?uVycH@pfk?cztWbJkiPH6&kr_pF4m*J?dm%7NpPufjdPg3>Wlc>6?@CEF#30w+h z#&ueF#}n$@_c&sHLxvHDkPNg2rY7rN_hnAO^kvfaRkl-Q(&2W^!+Le>bHq5$96E&W z-hFqX4}|w5g$|&c?ggkqXSnIQ&Rq1k;*^x{il3@ODQx~J=)o@Kge4jRjV8AoIqiX( z;YnTv8wYhq{PQ*V#~oCkM5qJvEq?Us=ZB^)zv#YZJABp8VA4Sc4B}St+jj|~*m)PH zdJq6}5>!*d!Gc^`QP!^lnz;!RyCWFjT!s`VBi^btN2o z+3S2GsJ?^|BB#=>oakued2qdpNyBh+`e%Lf;5)O0Zyt0*MHxv8AByM{Z$wDzAy2}{ zCW*@4nDCF5{$gvniQlwBn`%1g@KP;&lwM``5&R)AX^LY?trC?xNTdzj2|Pn4YBY&( zX3srDehVwq?Kkbmj7GZkY4UEEF9`@AbJxKK0+ET{m{1Q`RSAM};O7sW(fCs)smzjD z%%L1064XhYRAQw#4ZQ^a>{;epu=`w~KtSYwkLdr6XZ?rjS;^GV)zsNV!O+S1f0giT z-BCnQ{m5iHEbD0zX_WFv1p-Kl2dTQ_l_Wu$W*Zku(9dvWniEZ28*rY$F4_G9^*^rU zXPgJK)|?NBk8cWjwpObM>mr8{{8rMrnV+{jbGY5FrW*MDzd?G59!N?Yg!`O;2}qCz zCLKEg34zHZ!wM-u+Dh%&{ZxD^btwX*;iz_0FA`J!S%V}MO18Wqa2t|_D7h3XN(#nl zjYGon99LA!I^$dBX_Z=T4ZYkt*5N|quG}H4R?T`dR7?~Ay9l(}J_kyZowjyGik4R0 zdfRS!DLBK#(Uk z*T#|Ui2CNkkda*|pyWi;JE#nvEvO}Ie;%i$8>hi%W>e+ zf4W))YLhOfA5v$TbE)B`GWRiAJW_aZ9$%^wm&>$?X(nVQ_{$Vjg4^?*Th>KqZB?R}4&cmwP2it#KCB(D2P{d@7O zM!WDBT9zwl==+Bh^L8)oi<20+aup`o@k2g~JB4I$u%OJzerKGuV;2JzMgq~aLtze2 z|F$~AwsqP}xz=Hvg0el-E2b>}ZuubwkwhHQj?<=)(GlCV_Xv8nz^0+kF zT>8^zKSH9GmZN}>lGUiL_5(!vRTmgb1(bh7W6Y@QaTa0w!fz$iV(8$(VhIUR zn$EVLbkdX$YDvkdBMB!;*6-X4cP*Otj3uyr)spVM<+69n^bsJ&paB%lHRQ3bIO`V59v6 za0?fX@9))1_I2w*O4B$*Y}k3{L_Z|`b{WO)LowHR0oNT0_{6u7*T#S~%!b;)0XKqHXs+#s(o-dM8;5&moByi~l*DSSlLm1qLHhAY#}W z0UY2L#Dc=o5XOFs?%8^D{mQm=`|f_5bA9gnHvDJV^(-==6Z8Y@pZm09_hZxJe-r#8 z_`jLJ_#1})i4^}Ivb@S)Vyue#Wmj*RU<-}>lcKn_T4?|rM~kW&-P#|Lxeu12+TzeM z(Qa;N(vGZ6n+oAAk7A#ho+IWvh zzvuEt+8`^6r_R_OX36568g?pk8l#~BTTqMY30~6#+#d9ntTA8Evka_}+A9p%HVuU} zV{|b~3Rr?630TBp-8>DqZE5#z3VV@FYFAz7o?C|==0=nWcY?HH;jY^eDB#TS=ca(# zW*#Lw=%8yr5^V844D7;Z-FXf33syF@-p;6J01Um(=iBQ#@UT~;k3Y14*O-Ki@tvJNb;6pnFyF5&4#58XE8;TgDe zbu9;+J6-5J=J+luG-qd&I_R)UQ2jONq|?yzX30LiTZUq!!ILITR%EDA2zG|*yzy_X zDGc;?4c297qHXo2ZS$eDs6%TuU(G7|E?M@_eUA76Nz}R4jDd4Z6poqz2ZrR#P_9@y zsnh1QIo+1VofO#WEz|mT-T)_#P{$@2NSUu|Lzpa&wHAJ#dJSF$fFQlaRC!x;&r0$T zMNb(Izf2JI=-e1}_XdiTZto1dqCv#no;7Yi}^H7@RUopae+$v}~F~n0&)vKK(tz zrL9q{S*9f+MOKmOmV(;Q%`+*$IeENeiBND26~1`}-+>1R9A-G6lH3h2$~!=!dWq$P z(Oga%=EZ=kl=JMEj;@jrlFotOFtbTO9Uf*c942cMlS8z0j#teDYS|&d|=W?e&(#iTU z&18;jKQ;T|Ds(JmP0fxZn#<3K!f(`5X_K2|JM9zFEB5i>$u}7J!H{c|qOsgJ`ZhUA zU4Z+oQbB3ND*c!x?aMOiAx^{{t?_pJgRoxbH3DJAnmCK7NHL!XRFZ2`B+vZ2TFI|} z-4EjDcRV@;0|dl~^>2i%f8)bHhP0GTot-W1?fxr52)UY>{R6OMYe0FZETVncn!>m_GP+AeSbGup!C*2Q(RcxrJL_{x_U&`K#3g12KF|gu_49MwCdat*kQXkCkpL}qlFex zFe<`>)G$#e6e25WzDF6lXqoRTs&ZaH5puU%+0Q-6wjBi#CLT3qdI{Ya_oRH5eGs+JB*#0Y30a_}dnWJ)4mk`8swOdHmx2l85*`!onmS z>nwb@U(MY+7~cYlBycvYzY(`Wydx-nE9AEZi`h1juPIA?2JYMYWKA4vpkQC80ZE!h z-p<`5hcuCZH`*{QoLJT2s6#5+IVy6+~pXp^3=(KhGlR;9uIs~s=8|m8D4NJE;a#0 zDC+e~XlEbhE%`iX5Ftbvn?-oj9T*|CBKBEvp7}w8KTqpvISNc$%V!45L)48%yD7gG z=>@~RZ*Y-{uN}5NgbJ9%V#uarRq7t&+p4h|p=1Qklt(Acn^B2jVI#tjz!5FFWU=j6_9r}={*(CFkPeb{d6>*y|7h6^0wo`T! zqgdTMY7OLB{sGI_@Ib1XfCO&Wl>_HK`z7 z#g5fX6wbnjX5|W9-ZJm(yRxAr|MaM<=1YPF4K;oVO}+xXJl=ro7{Y_nC#&YmqUN82 z7D*+eH@DhWuh%0--RI7eu`6B|QGTVt)Csw5mIsoJ&tty>)_Kw=4X!s#4X$R~7GTQs z0aJ_30b@;}%`pipLX0F$KA1kS8I4^TO*p!R-)Xk9?Xf9<`U%b#Bai6;^37O>R1&~$ zx(EhtvgAF920jJW6g@r@@a=Vz5^#Sb31TnJv(?uDo>0F=HSm3~gZO)Tku6pUFs4k` zHXXgL@LJK^JM>Z!fTls2JN--%D~^U;A>k=mIII9*I@r??MoWyvE|uc3>dco?P0uHD z=+&yaFLM%BEt3*fEk_oXRape@4v;PjuE;m4SSmb&WtBW3SEg01wSr?6#WOD}x5B>d zY%iQGza#I74a`$uit0ksHD~@Q1H+l4EVtHGf z%N#Ch6x{v;KO;UMc68M{FpR+sUvQocFZfUqjIy@SUD?W_=szlP_S&RPjj zbPCG0bA?`iQU#YeA*wRT1|XCeEgq@_Qe=#{Zo`a@QwCmozdC=4Hd zJ`)Lh*beaBTnDuZNMl>G$2r2Jr4Empt3>q8DOERA>hMrLu_c&x^U?7DVm*Ha3vUFidQ~!(7+UV+^m33Gtam{NFokb@_DP?fr4OoYM`Kl4p z<;O{5b=n(I(G7&R>cG_0rE>?uIP$PD;zDOOVMoBL&5?4A(Ku`v&Lr)NhNG647y6Q) z*7RcPq#LH~-b^2i`7P{v#ckhl){fl?2HR7H~yfAGn| z1a13pw`>MLeIopj5Nl%{fHXU#Zsh_lcsYciA}1XjIReYY}7VxG8vE52}7d$H@A9+b$E~7@kO-p z3+tF_>5vYY2JHdcxDQ^Iv?0Hs+o}jd!*wu3_TRY~)LZ*i`?RK%m*%sDpeS2(GRVW> zdKm&4<2)H2F@1-7&mQ#PH7IdVa?2qouMj^B2<{y#ChamV>^csgF_vVLW2TZjV(0Xq zdT?bMjg_C7yONMtVeApvN=UE8q4TXw$1)wjG!s^A_3ff_bFBp~*1WP9JO#GvYVbhY z9A35ia%djuQZ(PHUC9|vN%Y*W55EqYJ_iN}Lx3yD`8n(MyAa56MtxR>vF~V}-Q%)) z1w8fq0qPPV=#+uc4~XSwGT&957_x5sc1`JJ536QBY{5r*L62Nrr!l-{VC)%J@q)~R zn$!FAgOT8d(O=M@Bb&0_NHK)!E^_pi18g@JeKv#X537s4(8~KEbNMBHPoV?Zl>X&b zjk@Y@KTFPmllmcwZZ`72E0j2FqZ?}Ec7y8e%mnXa-BBLz!DnegDJS%atK19c zH`@ic&xJuka~wHXN*&riC$}1_u%32^)HEnCUQp0ODuDKrAQmeS=T(u+Dj7Lsu`HB_ zIFzIJr@xVHRQ3(al^)8ONESf9C}>B(Du|-1q94YWZ(J`^FD-j)mb(*z^)Ir_yuy0y zvdQZwJ>#7%)Tj;n$|sjz2dpnVcj2Fqo}7>fMtk#*FDLh4Gs*gdGs)&ktfCZ~D3o2x zloMwJ4sxnWOn5dqE#ZzWy2OaSl$L-xcvv}KdGwvE)NEDfnUFpF+68n{uKbVAE`G?+ z==KAQ5v1;}sdSF1u-4nAboVYdf;2l^882o-WE-_)?nrffrD57}x7|c8fxZy_MeLo} znKuXp1eAyj1jO*~iU=02cGjjQl6L=EJy3slM_t7G-taXc!1}2Pc|B6VlORh{_Dcw; zBfQ84E>BVbq?%(@CZTULy_GxirzmTG)w;HKx1jE!>8?t5m z8IRD1GKyYYF@XEKb{G`OR%Y|xLhRh;b^aI+{S)935t;E$?507A%vIV`LwGnB0; z=hub2-8)e4NfInB%z-#$vw=NqeD~RE0}pVdh$1(6c0g^|u#Nq5G>X`bHLR>i<3^sF zGL{=(pOf50Y{)~ty`3=WTmR~YDt_w&xec`+f~W^;%n%`cxRrXdiP()XJg%q%Fh<^> zR@$jl#2rz9)E35sHx&6fSMPX!RO!}iyF&9*2{=*9hWh#>r9pNY6_y_h1z6F2HhFZa zDC-u@Tx)Gz>o7_`uin$z`W*0-jaPn&!+{3)HQflB(!AQ%E#@mA|BMs;8N)ndu@;Rd z#%I5#Hik{XF&VO@N4!j;Fk9^fEIrnYipxB|GFN+?(3aKR(n>5*6eCDH_X&1B41bUQ z^amv@%B1KE;U>Ei?&uld+-b}WZC*?tQO^*Fpg6122)xP{`Drw&el z9Mbx*Zf$nv8c=^*Jm14TEF{+09%kYiFD47N<;IOUtq#LnIA7 zjRmGpV`TZ??qYgX;P1uEV^*TGq#GV$EtM^zsgux4o0FjLu)IOhleoiWPwVrXXt927 zEHzAJD{DVPT}8XCgy^hUu#!eHk9q2m{ZN$f?sJ-`im!Le^h``5ryVz|Y9k>ZJ2)Sj zj?T0#ZP5417rtiAV6h1*-^FgUJ`w2XeF)FDJQ-9AfEkvMGi4IX&5=BMgVr3t-q$pU z#|U;*-iztbM43MG-UmgxX4_LEOpK3^w|K#=nR8%G*l^|JBz4bTm;uOQvyJQCll}SO zZaH?=#M%isXSESz3RcF}8^L*a2Bj-DlpJBK2Z@~h5eKF5@6#OMqufI!*8~@ZiVJpY&)Jmzu%7H{ubS8_&9i}rydA!zo`M_ z?vxUK$P7&1!jz1a9+U{EHux=l_@O!Mvw8krBCNC=ElH=06u2|fGn8x?EZ(o!1Kdc% z_4IqA434zo7VDYC~IYucB^KWIB$pe;Z^D8i|Ae9A|doH=clbUa=&t4HwvN)5sq? z)(~X6#!{bF+{$gvbwzS+2ZwZK>-JS94Qub3#~nPDYw9)4^xr0v?!)1>q(t$L-wr1@ zLNjVUuEvgX)f{PzEqX^jcdvQhYbagAUr#cJT~nCa4m8=+?w?44zJN)PiTy_Q}lG=e6 zOg{)RS+1o0bVX9wu9wKA5Z39b8@Vn%6CesAGhiYf|OQ?+fYe#o>>w~cM#+o_-Z)q0g0K! zukKO?`dQK7034FgkwxWC*#2;6CJuAhTkHbhDsxb~WBO)^ynI&u0jAGs-$)TBOLjSYTR zor!5!y%hqozlP~lhL>b4Y-J4;hNG`h&0MqlFKUn`!YAlUA`M$8#e0f`gy+`R7*CK%u6i)NcQR-mld6y?Uf1&TM!}49 zYUPV`EAQn?D4Gr`bCNBP)63+{te0tA>Bi@Qpu&S`#WwQ*PcS8P4B-7`GkS;5$X0EZXaHw@=Y$Pry%ip%HQpk zWS5aRQgJO!c`B|sYFGxXb%}m)-K9@nCju17iACJxiFOCt+qz4U9uV5M&k#I^StyK6 z1Ya9vRb>ZSEj~L3%3Rdx5|KDYrv)slD!2j;gRFt2_DGfXD0SA*v>5}F3q_gm2M^?m{ z?T-l_{E&KoAPw#p08d9qFqYw~vyuy6sqLAWs8U=Onn{Nsr{BN8G5xx9W?CSxjnDZe z*oSWOa}}D~y$?sx7&`Mw`lgy2Zg_R(yf5;@teh?xpOb~dt!ZmEd`NTpV`4UDnzMSJ z&WWhZs5v3lR3<1RGvdUEQaMPYLw7`hvZvCXwd;i9w1H*}bePU8l$>;@q)E~5n_>^; z9!*0LTBoEIC7h;)H+;U^3`)q#8xT=Q@I4T%$o5rOw#LGi;Nd&i0tA;d*Q;Yk0qz)> zBt#=7K|}h)C4&M*gE(F%!BQYcBM$POTGykcqa@R4$rHcU8KuYk<8IR>#v8Xr#T;Hm z1}yaV6YNqK51+p#?Z{o>9LmuE{^HdT?N+;Q?>EptmyIV!wq_3gdpF$w@506Z?ry6% z8QM8J*gLt%n*PTiptI!PyMOEopSD9`L>%U~XUD0BYGnDKE*8nMP^YCUlgI-|DL~Cq zp_WHeIl8df?NR+Eu2l{X-TMV9wATxAqY&oUUIh#V0dMWi!`$;~w#4t}_YS|qh|MUp zQEl*}(sYB`xH{?`RyrF&&diqD#f_{wSr^>x4;q!INTHOulZ7oK8s|HZerKuDG3KN z4Lp6v0KSq^2Oxx=Upl7RWXfYhnUh|Dc=CGi1HlFKchF`cZ_JTJtYy>^i7+o6@6c$< zeFSg9tAJFsYU2@BNczEt?DNIcE}5{^M`5_=jVQ?-$L_k7?y&ksfRSbCT1pe7Mekf` zjz_&!#xNoih6#|3)&lUxJh=!rGFBAjZc4dWMeQ-zp_lkXz13Jf<)yHV;BT-lr%Qh= z0&CFzVvoeSJYbIa%9tjtlswdvX?oVy5wPjm8qW5CrS7HwXS;DaBdeDM1_Htc{r61b zzc!Np?_GxI|5h7;t2Hkf*~UjIH3b^c_X_zimZzbjmX{mQ5Z*d!0WMFjY#O+w7yOO( z62E&fBv@wuQ*U(9h}f7>mnk!qHSXTce4O>4D+TK!7Fp=_0MVJ08&bxgLo9a2beu=? z61y?c9c<{B!}wC9kHi3o;v;LnKX{~#^Uz%O!8NQIf+t*^Biy>XE=^aQy!cN1PR$a2 zhJ#w3v3+ZhPhi5$l*ubGpUsf&p6kT2-B>QIEhEC|8xT^`?xurv9H4ZcImdqt;(W=M zx-@D>ARvgUkf#4wU^xl1V9nX?qmMoZPh%f!l8-U?#~@RDjjqR>SYnm^8Rl(o3FNp4 zlTE+L#y@JvQZPvK#iFM5omB{BN>I_!Ef;VO8c@KJnv|cMa?5k?$lrOV_4{dsRitQ? z#+>Y_(~v3ZstNNrCv}u=Sp8rhdOyihEgA7d{%VnTVo5&> zZF=(b1O2nnAlbO?3?a&Y=uhRx31iiDNUVfvtb<{7T*D0%TedZtQWRQBjDdei9#YhN zo58PTD6^mh9x?pPw0`A@f&fk)Vs8{`kC^cT)l+g|bamKt)q_8|SeC%*P>k_plzyo5 zB-$pKgqN&|mt2Ox#zoXX|KCp7e~?@hCHBqfzoxkh{{Jl4QFpR*`G;jDt62YsW%4Rh zt&iM^`TPtN#kZw|c>(sc5QHLu1R%edG10EOHEmXRG=%Yw4_e#=-8S%#d6>5(WfaR^ zmT)_pUu8L8O{9N*9*@WaMXp2<#;j5pNsOse#X!zEP7o3gymGM6P-sLc))no<2adpQ zS_3S@;K1G8rt77#Yj1@#m&b$_SO(^t+V?S2Ja-~8sM$7+6kF6mJXQauN!@j38Q=B# zN}aItIjfB$Rq^%wFYVfn3?4H`d(BcV;ar{0Yqk4!-@$t{Y^;q2=uW2zTjAlyzB&pV zcww%xCap?|KIBh@?~}6_j^A+QK~@vq{a9Rd@q}8PG{J@?0}Qxbuqc87vX36?#S7(F!)r%OgL=6b4;guLxM1>HfjzgkJU271Lev}MENkgmicD<| zwsUpccewSQ;wzm$&(1#@G_0vTg(IdkYjkH?;5=7|0|v7Er>8jvPV%jx3oEWO%mK!6 zjP)g!P*;m%anN-)!;Q`M;f3|G+&TNAzN#S+_-OKs1$$U2s#QB}z}R{N?GbRW)E@bJ zr1gWVV(k&!t>bYQD@m~F-)kHILd~|UZC;BkYOJz38v&=#sL=t~`2bmm5XIT%v5l!U zw(kuFFMCN0SKDr=5%a`=CRwOPlZwLgUWT3ReE%7KP+gDex@P1+U~Sap{g+hlhOZxK zR~KK2qg|P&(sFJToSsn-ak&Ps=fH_u1@82s;*j$oB1)%i6Yh2N3kdnKTZ~o#q%+T$ zp9|8jo|wIPp(uTb04UKXJEOtzm>qOG6k(0E7%`Fo?ubJjqDM5sH}_(CM6=f3Xu2$g z4cZa9ykLi+O=)X^Zh~PZO8wgxUw}vue}Li!@fYJ+XnEK6cZ9~sdDZ#C*oOtxCrrG3 zm|lRpcLB3(-YmEUDvHPosFV=$)|e#E!y2W`GNakAe|ZJuGHLf28Vm?X;O`OR|Gfb8 zf6$MpT05htV*0VIvRP*6<)eBxc=ROz2_i+J#uWvE5{YWHRk$SDWemBnlVt+?-Lm=3 z-ag5u%_50GjM!5oRo-k89KLj#w@6A=D3{JZXWi#CT;FFM`?}pPZ$A_K@IY#VWZM(K zd5ceqOJJbfb%lZ;h7Be100~`>A4Y-_ANUh|TXKP$$bi;=%di!Z2SaY+tJ3cR%Iu*X zlbdu{jwl!EASOIh-i|%YBM<2)MvH(GU^j8b$Yhf#g^C7ZUgm_*Bt;2as%8*kqD#BQ#^ zV(vOD0{5LuC$>@_uAeks45`x0VXPN5^J12pqR3$xOR4%Sxy!151k!^-fcpfFKLQ&IH}HZr%dZhFDoiff$7fVbCrK7 zRdabR0dXE!*Br$Z@Ej{^eY%wi|6;3T^ra1E$LOQ84y_Zc6K?co06NT;n1GN%AU=*4 zW_NUo#s{00eFgM1bIi}dG(gOzg>ewqZ-jG);1%)kq&~Cqqs2iOOppbcR!ghq5H#R0 z#~SAO;*~*PHc38=ofY)R=U_*Od@dUi+bki>QnW$vYXi7~$U1=(ai||dM z9r2638LIgX$ZcVqQ;+kMJd$g|f=U_tjuy)Lg>=}wX1 zXrFp;+ZLQQp4BxW_^=~$0~GR6(+|=in9zYuNwjMevy-^RvGt@tf- zi+20>&q=ptB(4+7y*ckC6ZzKXJM{GoV2 z^;t50YzKv-)_1evmdozjyM{0u&Hq~Nx$%p2CK#<(@9~50;&^3j!@8IMpFxL|$(PjP zU(g`}_U{AhKlJzidujc@VaNRPTs@D?p<81 zD3k4A^II&|DPh{9zto%0V4X{$s8qGfsf(CxuF_IAgKtXB-~fNt zLV;_&NXlvq;t46Z<5dYGrWDnstf-AKjkw1X*|o7MI);cslJ3^CIwKA?#HxDAng2fq^zA>(w`ffh5jR`4C(cF=u9mgrmhWY^{ z1FF|cl;_~qk4WeB%9F9t=4P&93@c21=8y{#JS~0ejjqVT3Db`yOAXh7A4?+eADBqE zboB1~VM|XcT0>d`*Qth)Fa|({-}vo<2+33BOD-V+nDxug#b5CA@zt1gp5c}-4 z-hlFB?_NBy#Sse}v3}4HMR|kz5(xh>fUU&L8#6$OIwBOP0p;u>fF+h=6?_#L7SMSQ zoc0f)GqYzTPLNL>O( zL44$nSZRy-Zs!%MN&%wkwt1r|Wdk$(;gaxV9m6UXk*xe1(pU1EG4o)&5@qLi%nl0e z4bdTRe@jpAym2_O2yp4mHu4vDKRapn63^fUrfvKAJLVx3TFm!#{M}cN+rX=_uA8HMJsc{sHr0jXT|i zGbiM7G5*?qyzf56`~3C#T-yWE3Q8T0T65CM75$tLw)=_I8EBp06E}!0l~6@4Nh>`9 zN9jvpyG&Xx;VLYyIs%8s?rOtC0$ls55DZ)XhQEDWLM=3}RDwK^bh8F~@uRJJy#~*Y zL1$d{W$`R$o6$3uy`%pEV7PtZocj!X&o=s;q%n5QWWnB66n@}Vd!5$IUZLmw9#qF=(Gnv6D-n(q?5QOwU=h+CG-UUK zQ9$YAsIcTDwD}mE%PxMa8IOESZvM|9C2>PJ72^ zZ|{Db;QfvIxZ}qDKNESe#liG}0m4EX@N9<{uww6wZ(sP)tdJpX+Sejj8fO7?0Xa`=y5l6v5cEmQ; zL$LSCD5h-lNYAKJyN$5PX2AX*)E2m`eoGJ-jRi$!2MBxY7fe@>T!Zmm9HlOp`CeYi z%@MYNv2U3eLjMa_gVqoI?qo5Eg53wzUD3uptUF_0~y$}8_g71rg^*_TmVc?Nynu+nWlzB)HIztANT zuj37QpKFgtd=s2?@kM|{r0rOO1QBWMk6(qb`(P?`?sc<@?McAAS{{B(j&qmPQj*oC zw~9THc1pc5S@Or%Akm}c1fYHQj&38q`}mzX;;>pYtP0r)f8p2?$6;$aE+3e$Kw1&x_Hmr+gbiycl z-f@CZNcNjbdErqfX-a8YSwbI+-AtntAL2GS%ZCHH+vnPy+lTaGU zAqmltTdr)$DV#E*p)sG*6x8(MJnr=I^FFw)h~k~<2-RO5?z&FV#%uh6p!))ef zExI8hO9I>Lb$(bV>TJHE8>JP(@~kqRZhlx~5^pVdW}svab;bRe$DnFE=&C8Msg43O z$J#a35W`~a!5tCF!{F{ul(Cm4DsvI|!UaYu+Eda%f>%Z1e=SYcNaZYtLjeJWqXGdj z|34^N|NHgAe;U5guy**bF>p&#Pur*<$zZ~;7Frw7V6JjUis3Y^YFnKP0XRzoTKXrY zE~4t*B1^rv6gE=dd3HppbCS3u9vkDV;5cxJ#K!cJSj&>wQ)8~|)9bGj7Uulz&E#M~ z00nb3tM~JU_cZTu$Fb}6+vD?8C#V6~*4-}pg<9Q65Fr8X%6T8JUe%yEPiqTm?vQW2 za}NZ=$xRXbq_k&X+Yq)wAkJYnI}=QB)eHp{U>p0-jWzeKXtWDSsseUQoaaWNJ}Xa_AFm;UIq{)Qnr2sHIj%m zZ>B@5fIkmdbE(#sZz5rGRPG%Ka3ij1Id=@06SS6kng>R^>}cH7qA#%As2MT6gWGXApP^PrCM<2kBxD_qWmzFLjeF*_OHxj9VJIR0I!B}p! zKuxqtzNqTW3JkHe;kvM_p*TG?Jhx-o1GI_lTxAedtH9;}=M<&P8Ck*zri#|oY|`x5 zNIsyPvb5DRqnytx^J?iQ5hq`UhoNs)6~nGh!*fjv2Du@i?M0CmBHK9YugO>5iXTw7_8j!g?0 z0x*!%wlO{WY=+BF71%SFyiH{=NvBG}0WW5H0An)p;%?g(!IgMB^W+%BCqoe<(#%vG zmI`M>HJCGqy1Q6&KQ2=Bb5JsTGu=3_R3KQ)9xVuv4d+dWvsC&nb^j2?<}f(6`dM-b zr{Iw%k1)tQTZa0AO1rrvY*91c21@s=h>c{cD7m|X|nirUK5r1AxFslq}u zC}MI&ENF}da)tE8sw&u0+*!cND3J|D6CFK~YK~*N60=VdtdMHhL2HO(sw}M+hBFT~ z?&g0`_D<26{N2`QC+XOB(y{r(w$ZWEd1BkP(XnmYwr$(Clk-TUl4zH?C* zbyF8L>Nn?_tJa)rNK!R>I~N|iR))5GV~zYY1qk72fBNa(9gcY$XE{afs_~Dq&D$&H z=r>?%USc!rVK(!|o{lc9R~;~dsg6&+&7ak3lPpg$6xr0j2=oRMbsxhWY@ zO>(N-$qQ*Hk}x2su*Q!GG^aA}fh`5)^+$G;{Mil+Us5&%q7;QXz z<)X6^S)5WMh>~jf`YOjutXyu?DkZVn z5Pl(h2r`6O#;9YW+y3S_EcBeykC z_T<|XF`Ujj$={7t$p6$2HX{HGL7GogEw+d(#J#)V>F0o+k(a}qcP<>SU`>$2zmjxC zR)6AkCXyN0W>ro?^(+ia12ES{RkWj+P<#f2f z&5Qj;rp4}kFe%CVd14()?$yeIe5783)=eavc2=`Z)-pn7~F=V&WB z6Fhnwb%z?Oj5$d}dxpAE)1Swdo9^x|QNG$Lx6#|247r4HH$ulRgxc~_bp(OlcR8VN zTM9HfT9k){6b5} zdEavp>x6fD7@EGJHA*LFO~Nn8wN>3iWQT#LtUw7PK~Mpx_(qCY+yaK581^BPl%% z`Kn6>6px|o@CSo?t0jii!*5Yn8`AHOdx%KgTs?>GN?%X#MY?%6C$#r#*5!}Q^S`$Y zsBda+KZ-pFeTmalO| zC$Y?@HCz5X(iHz1(3~Y|tKm3*rNFlD*?*Wtr5uJ9>yw-qnok){UsT*mNZRGB&^uw* zOVH(;%;4(ZNf#j0)m!QEhqNVlw*`T8BjgBNw#_JhW!%cyV82C+xw&_Z=>D_U?27x{ zQ+*@ za;K2TGjP$3nypWIY4EloYDu8aHOyk_+lOwn())0yFr{52PuQW)v_ErXP;r=-s?3%q zX_TLufIk^mm+zKpYMA%Lq^K6ERa%W`O>A{|qrgof0`@qf&4c7gFrQu~FOegRk^RX&{x*y}g9aBDAc%$6I|r1x{`*yx z-+n&y+lB4KkTve!v%^#BHQ}~YZ^`ARv%wng5kaC1KuIY$73EM~bEf`T3LWT9lN{XMK8ZXlh zI%GGa5+3FH8(Mxc_xSu5uhPr*kS;vpj~~p0KYnoh-+Pt*n<6Y!H`CKzbo!c_z@2pc zAk`Qj8IQb?V0&^k)Yt;Cs6B*-9hW9$sP)?`PNguLpw%}%2xnt;k+UlrqR7 z5{uZD5&3=(bM~^gk3wwU!2$<4y$*Vb8mSKU8I!^9(G$Xj9E!4 ze`5E_y*=T5PKW>OI;Fm}MS2N`+q~T_za%y2KJTt8`iP^wRyA}{RI(Smlwoc^??QUh z_B$}&3uAx85^~=dn0-bO^7n3!4Qxw3UmNYgV|yq$ewPyR_fHqT1W`Uq^Lq#R{Jr9r zx|OfHT%LO~NqxcO|3d#JAMBQX<}Y}Wr`k%`>lV55kv{k7c=>bMLAvfkQVGlFpFAQ> z&(PXgfXtKGiQCo&<(}M02;YyxP6AMSGS-P#OdYG~8 zQiH#btLxhR@&-uTZnk7GPM*OV+5bGVf0G2r-cX>LIe0$$U&%P<3}P|s2N;j*@$oM( zXULOkEfG$pXRcP*Id*Ce-*q;rZiJ`T%4oB(Ybzc{Eum}`557=}TWL^BvK2 zO|<)O!dXPdjHSm5nnVyseDNfF)vnnkWlcSl1hd=kzg5w5&Y+^s z)%NgN-=-a1E{vRlJkhS?%@R8&n{5+SKfw$e{q9!sz*qiN6-6zQDGH2~}x zhG)7ecaN#71gz8K3kW!;u5-%b_xTsK&zop&=TY5--i;HwtjR2MV00f@FQ%$P{CXJJ zTgu_Pg`;!>))8b@{JYnaa3%&vM}fcHt_lfXP-cCRF0kc}QK_7{LQqolNbNCa6-VNs% zM5@@lY&KR*tXR_w-tSW9&ABr-n%lNGy4|)o8I)^rR)%46&W`YE*^F&+){bGTdcTty ze}PKm5icfa2Ppg(N-Nr!x~zLz=#+Z(jges1j6MjORqkblX}1fv8Cx8sbXQsZ21?5{ zFtHLCua-Qsokz*k zY!Tpx=x9(bHfqo=MqenHm(ncUhvq4rH*X7OpKsJ{lPhMe>sBFcoNeT4jDW{)P({!w zR-&lvMgx#{y5bX}c(L!Gb&qUzPC8#Teq4(G>5JS;U!8UND=FC07RXQ8*w{6|Wl=@5 zIjs#XQshpUs3p=?p!uL0%b7lEqMv#o#~lf|Vl?_vR6sTD*6)hqGO3KIOUzAq_|rs( z`gosm>~+!EdpeM;kk+*vu6d%vYDMCReAOCcof^4)x9-fo!Nj0_?lp5?F6cfU#l575 zO-b8rG_dB}>X$=ng&jtA9d{;mBAZ-}{PnE%mW*ULiA z--Sq8J)qU;Hiq-iAVpszY)A6|VpUxMt!45r?f9gw>>U9O<{i0xx}tDgWTFPPZ#?B? zEF!{fn_EPp4hmxRg;L*Ir6|Uzi0c@B}p5)lXK` z>p=ys2i103HkbyP^$$HZ2Unqzxwm*|@`(n^Sja1o+U)vIc%dfvK296jczx%)n~9M^ z-}^&AQu++eOS%`k_DVo!$pGFc-j6E>%{=od8Rf~*urkCI)?>A@=+$%1>EEo7+$s)d zg=YazZ(5gW07w;wt(-F=m1TcYt9|BS-r0~A1hL_sTSv625;ho@1y&e3&BH!Qp6Rkl zH~RCPU3&n_h3`kPLhri8N(PW%k&cNYuwUDP!#{rsxxwE9Cx&;)5#i88p{aU}8)CaW zSNw8|<&-sM`n3?#3TN=a^u%bJ@}a~7?NCu!WIE6Ok0~5LWc&zF!WD3)uppApkaNVj zfPsWGxfhLJD9FcMuoHDD;n@(5To@LtL%b9PC&aA3H_owrZ=Xw?&xT?m-zT4_g$u_>oyinmK_V7(!Psq%a3fjOw#50 zXNE(~qcJSX&&2t7=WTAFOKSZ)y~(rGyCeT~)y^L`&$>WJ3W*zTlr1G8A&{t#bav6c z5NU}SQq)5g;$0INo?d$TjBmaDJ1<`h9ZnWzi_qGP% zM{w;;3`bssm~%%KG#))VIEZU{J;9oib(}7*9c0&AWM#W6?45LN-{IMT*8@eKAe9%? zhW-4NaO8`D;S~1l9n3eD?xp#$ti%c@^rJnj?MiiwX1ew8)fTO&N`3mxeCsZJ*hMb( ztzt_G+Wk0Gd)$6i+6r0;LVNEH}1$uqSmq*KK0TuvEK(oJtGO0~fUI%^C+f$MVKRs5|cL0`CCfJeF zxp>(o+c!84d$1R%Q@dQA(3vmHO}jkzyEGT`-9tznQ&|V+7rb4)H$L%)o)I8#Y}+3$ zHz6OEyUh=JcO$ zkX9&`hfEqOX2RPC*6xMArn3_;TQDD?$)72cAESZmm5$Ms4KZ{CyKy#x={27l@sCmd zW?D0OmYKeI+D!e^E=W9Hk){WI=~a8Bs-AA~f}d2zxB1!qmyF)08CSb6cYi-qaPY0~ zAyXzx#MKdjCvFsT|GYc9W()jB3fpku4gEpi;a^=nDgyV=Pf)TTR&dgC?cAVg&H}f< zM)9IyXyhBT8I(lHqdur5brGGDn&JiXR5ZeY3=2f){SA9!C4eb@hqAkTXx#Xd3Ikz( zxSBZq1~DuR{@?(6?Hf(RO~I;XtqzHt`bZRZL2epP2?>MHfiTHyZHi+>0Zc`al;a%S z!*BE_C06Sq%>gQ3xW!$$v@j1dHi8_^7bI}IjP5OdIfq*w)*OK-*Qld?Ji6aCHo)uU z(J!f$gWVSPEtp%EH(@r^Y3>A$nEeUUDeGIaL3K=r7g~?!0Z|#pQTDFM0rrc7o(4NJ z#7vR+24T$(UzNUuI)f@$9-I_LP3x$;(D$FlC68CXLCVD$=i?lrxE&#utz+0&V|Lq| zEi7eApbpKCuuiyMOyLiFe1A3WQfrPQRrNEU8A7q=CbAj8TJ>6=^~pA%Go3m2y;uhy z#@GpUqRcaGH%va?wsRCsWSc(p<4Mux|7mtxqX|3>4MwXMdX%@LC)t&ZsK#n$R3=o* z3Y)Az0X)9>stTM#8L#3u*+)^Vv8?wy!!$>bi*d&JZ-F2_)`hjNbnu$yxafmi3Ii@p z?ydVC9RbdBbYm3=s;BPG=lV%J{kp>yy6d!NULvW7z0QYb8+eH6iKT0zMSNqibMA38 zRun#-b|6-WG$!|;XH!7Gu{9V|LKQhd?~88kr?tyg@QTDIF7J_9>ZpC0W6GsbLy+_5 zHg1tM=s+WZI6o)2v0zqBFUO{(23I&-M8`<&7e6|49guYTw7Ma->q-WFC$M`ow2)*O znS2m$jR2XjpBQt36*;6!zhQ8x0<3ZRoZF(PVh@)S_LmdHlY;Fa@%y|SQ~t~&LymJ4 zIj}vq=s(**j_)HR4WrM|i`my-mS69z=wGIU9-_L=6-`p0-}S5&fmZQ@FsNzK8niuW zKEj97Zmf)XYFM(i!>$a?PMuk9bH@@#O(@UcTRvr`$XyGR;u(d5q z8osCxhc-&dD$+3x7iunfKmoVVghFHZjBxG#E{~K$XAVYt0hXeGCN2r^ZjkMx!#n$` z(*R`|TNRO<_uXR17e&6%AH1QQ4}a&VEk|n`@9xo~xe0X&)v6*`T*Kp8X_y;VPHS2& zcM7!A$c^&|v>IX@I&QBEAy~m=%C8QqV~!QxE5Zc_KP+G)a2163gJah7v;UjZ&uL~k zQt9W9A4xF(`&{?`S#9?}hL>r%D2e`S>$k()K|{i?L{K_pN>VB^y1h!eM3zFfG+j&c zM*CPvE=h!}4Ad#`({%n`%9k_xLqXXoo>9|N);_E;3H&X$0^p3N}mU7CG)Jyd* zAy>LVh%Up`9;jkfy})UU&jVUlO7An4>f0w@>3*ENT*yVzq+&YV{7Eu}rO|SoY`NOyM}OfU$?<7y zv3k3V(IQji`@|ZP5rhP{`>~k@3tqS-&5KZPv_Hc)pt2Ez*`CmqOBkBQTqS_JO4N1f zj~3W!+@-p5kkvj$d62<;6D2g7>@sx(x-7=p%Q?*H8_8E7AY&x8_=Bjo@>SRU7CCcX$ck&2vnjZB>{&aMDq3&1x*O*1?jasD#5@ zlR!ya!k1on_4fZDmm&tXw9$KAmbv1Zl<2>kA{r>b6s^Y}dyPhvmYX7oW?H&i1oY!(AgmbbM(*S*3OQ z#JE{b1*}|TfMjdh1uTKE2!>U!1q2m;ah8t&)vBu_P&qRVGb#yev?GM5%tc+{^_$x% z7`a-<*$F?`=6zuH&-ndwPCngK$lQ0cxX)GaOO-`7us5c5{qpt`?|P;mn2<#VGH^IZ zPDOuBGb#8Rx6ch{*z6HZ2rGv(Gpmga!`xr?+b>u6r}KUez zx8MA7<72jwt5FzQZKv0Blr2nirA=E;HaH~=LOBFhmunX)Q@-XQK@;bpMy zbLiS+EJSX0r!sjKO|zASKB5Pl5XA?czNSB#ry#xK1Pt2k8pCoiL$J2sn;PU;nCj&A zBwI811b9MQkw(D`a=|iSc8(GJpeb3l3U3JtkNE`M1b!3FX+@JnC}M^+B80JmQcDgn z#ZYOJ$k!)Km}yg>Xh;b|0DihBv5+)4fL-q$jW8>?SIe438%y$JWVuH->*_;$grz>~ zM>nx>G4;D{N4O2pOcJ^-5$=)LWRaXFWrOe7{5wpwopT4v{R30lF#o%a;6L!m!Pdsw z;opDos_Lkrieq_`Lt8>cEU7n8&Z!6p|4`C=CzF7uB(sW4_?_T=N-7igXz4t^3Z2;g z6{!2z#-GbuoTNBan#?;)czDX4{$n=E%6&E>bNYGTZOiR=)9vXah96|2S56O$9gcSB zRsj@w1Fz?N1V>#ehj858UOL7aQ6HQTS3Qa(x#yQP&WlL3Pg)Q3LE}oMAeyZUlEuqJ zPn#ccza-U1@bQ~|P;w%L3pV+ER)w)^K(Ym~l2Tc$MxpViXssJWf2~gKLItBXf*DKV zrD2kVwsGM>JE<~qobnr{<+5r79Dk7zbyG4G%yu&``!QQuStTk;c|2ToxJ*_?wcV*p z{An;d>B3Ij@~40^9oCe*74tw+r>=EpwyW|MGuDvN)>hsvf>cQO7{gb}TqGdLa zT&8HtmL*?~)T#k3NUK|OHKOIMIvR8V`x=3OR(bnWi0^_VpxItHw{d0`lZz@rabz%Oc`Si43 zXG(c@j=REm(+a}1)8Bqtxq zx+v}$62C$>`!{bQF^4jyf?daGd9dhmJwZxi`7ty|Y|@sz8l4%zr99OD-`=sSGQq*6 zt)x&`;C0ryXs0wPtpJSvExBPzY1dRnNLnT zXrw|JLEJ$?nw$S(qcv8qiEh;nn`ZrLvKyA3vbD-0s13`d^dTr5^l>P<(Ra5}F`?jZ>=+uj z{(J)9gX%_~=tGb>+g5*dlt9~F`xJbzB9>vu=8d0}yqnQ9^aO)P6-vw^&DncyjGJ}= z6hM=JUIRh^+z3T|5L=OCrlNQenKX!0KrQzb3#Q=4k9XKF~RCKm^x*> zXbrSzb+piI3QwgP{dP{Qz+Uk+x{??{3jJJI&Pob=MGDZCKB)h-d#VFHfYE zx4&K9bxxUYuTQQZFS!4XP4yyC6APd}ejGsj-(%DNXe2>GQYH|J71tUA?Ghl+{0$22 zpZl{bRc5?NXYR_{*#y}qDQtEJa^J)!;daWJP8K6ws()%DmHRk@+rilT^Xm(&hq(z= zLZ2`C=iFVqByq4M3hcuL5D_26PK3Vevp0y__9SdzF89Rh5>sZCSU4LG=zay-)z+tmP3(kQL6QY;Q@5wktvy$J?>OK}40Ut0c=3cyaBl z?tPN7P7P0S!8OiZk9Z$sn`Kih!(aMT#|J~>Y z7f|QS+3mByqgAI+xfpDSj2$13Z7jUL1D#)VsoWaxg7;Nw_M8d6=4wNM`|Ra4AMAo!zfo1W{293TS zcUKK7!xhohiI(|GivL&ADE&c~pI4FhPp=2r->?7Z516{=4U|W|FQ;ohu={a^XC_q?B zXvtTa;@cG)6UOzP6tJ)VGNGjhCUR=|4|`9-{O_5h|0Xj2zewCl4fkIW$zFYkIMkL!-+QL7%_W`6@J>b6Pm=%G7^en!J5~V zh`B)21h(TOk&K8j`L5&eDP8l&?ESPKyV&}1r;go2-4#0LC@U=3&($v}-r}@wKZwF0 zxxQ+EHN7fFHhJEmjDA{{@c6*YYB4-%jKwlvGvJv&VcXiDPXrI>{Cy}lWcNaVofsrc zzpK&De1O+K9fp9}FNYa;j?}M492&vvtA3uN%Fl7r)!}m zcb6u(@Vn?NYdT^FtbLhE7d&5oHVa`^!_5rAFucl<5;lFRt7uhC+)9p$as|GaGzl)z zET3Vrz+&Aq1d#E^LVd0ztfJAN1;WT=sLm256y}F;nF05frrfbrtFF^YIi{<|#0f`C zH8wrUf*P-lG#EanUauMen#}WYtC+NwD?OB!f3>nTRSg?Rl(3wIWc{!5;C*g?J6=tZT>Io!9x7! z@=aAtwoQAvVV9k7MFnx_eVisos03DJM`hrN#II4t$D!hE;9XQ*&~D^2rzvmy9QmVA zGpV^2p_koefCb>?%crt`Q~F|6G?Hfsrg^3itq~e_Spu8*hdbL$s}qn=;~xSezKY!d1=&%Q$Frx~{po8KJF1!}; zL6vD?&5#3Z;<>Z)olrLO-e`qVRC%p4mTYBD`5}+5gURt z%Esf9DzLU4ks8pQ-U0I(mh|4#9EiS{nq{{R>v%>SV3qrH^ETe!Gbm`#TjOUDJZ{GLeZT@f29pMzbGTv&J-CCd~67 ze`6*QCG_%=JL>6VmPW&M6_x6eQ;12i&8nqKh(o*p!;>O0ieO1ZrOhRHr_zDS7Ngrw za_Ja7jY@SR>vf@ZctnF#<=ecXB2DOjs^#kRw$7g4*DHMpMjj(&8+(UoX}?_OL5_jeRvByY*i^Gx zuGKj%PiLfuR`p4y_`}CzRk`TV_V<`YJeAv2v^_c>O_(q{z!F<*hZzX%xA(aPhq8kU zb&sEm&~)4pSF2b_Ny_$NxWz9;kT;)W)I#Qysv+sv9?Xe`iNNw#yB~64)%6yy7qr0h zNeb=1qoWWoT}+r5n@p4GN?hI^YqPd!D6`vpXl^~J!h_ca9XkH# zKb6`XvnX$q=-WxH?V@5~gxjo6Z_-_gJ96kOQkvT<(x`1km4Fz`Ph_7xb03^apbZyK z!))Nh?jK>+=4RqC!_th!wJTR=uqfJ;LF#W==SAKuxC&#TW>h?SM@AtSHAAkq#uD0T ziUjG9hRbYd*K?)ar{0Rc5gAhQBr!k|hU*WLF$U}%jg}k3ga_hdPxp`=7#`Hp2n!1e zDTqP01@dBV`%{kh^`|ydn*~dM%N}B1Wh6=m(;!gn#^KWS;&PVTYTkU6P(Hfk(UB!I z(QVSQ6-lvBu@!EXXdbZgW^?hf6doonz62--6D>IpxV@IZg-n&&1#iuj>gKJ5$$k2C zM`g(iE+x5I>39ISV^@lF8BhP(;(FIq!l3ZZ&VCsG#f`s=z{P0>HF(H*4lsxEUMmGTtgxytvA4BAaSAJUT3A;#!|y-g^{B_a{_2|?xTyCZ+XCGsLJzVY4= zEtKaJCPGIdl8xonB0YwhB7o9ti-_Du4KIq-&)VZxg$nPGW5+ysEP$Fqn#vB9q_csQ zC-Cc6Tc&BzDZM}nmNC@bE_p9C@FSYrr}fG(y~>eY+YQ|94T~4fqSoMn`NP)^l%BbQ zhGBF(8ET%N#UWDK8*jf35%T+k%33#fnhc6_nS!1MYQ9bMj35_t9qo1aUeyU$Ej%SKrR?Q3e{bb||x zN+wqNP+g=*NeVePs7ZMpl&er1Hpm`X-sGtPaw-Ebl|htqJNh>#YzP(tglq_tAdnJS z6RF^>fQg*XLMAfr_72t)rMuH4BPk->YHI7fqH{`f`}wj_?fo#D@DJn-R0kBnKrkcR z!#FS>j}5$*Gms8h8E65uUSRgC59oo!U8WG#3+1e@h9pdM5uF2}RbC6}5wLo-d!OAaDgfs}mz|D9=DHcL zwloDF=g0~0{;%0;VW4ACq_@^@*i63ywtgJ{TVCGLf;D>pHugFl z7lFxIp$Y?DgMG%HR}`9B{VSsY2SXjXioL69EJ$;TeAr{sgyOe+P4Yj~3V+|k)Ru@Y zdHh$U2C8D+PJ5bmUv?umSYy?C^}u~yoa_b!K*E)0Iy6SPr;aB|f}+3z3=4)xEgWRa zj7=)Aia?&fnu>3#H?AOdv|S@# zdC;gtI$&hX^AZQgW?H-@T4Ge9^DLgq&qUt5FMlWY5si+U4z|c7f=8@61vA)oE;yZO ztRh`{*rXuH%7_k{YCMl!Jdo+4CUj$_!6c+*;BwdKp#3@={+1qC6<=)OC_|#j>B;if1%CG+wADFnm}UO(jPWE*>HLZ?T}C}zm9r}{$$OepCnTF=7DO7 ze{+(qhO>d&8DT$B^KsF!daCAk!Z{}l@9*PL2z>&Svj;$1-_RD-kQQe+<%yHw25QGs zoTq%M{EJob$B;#CXa_x_g?Rpq^5f1^Z3!jvdnbQnCVu=$xIZpXr#ReQgj zMvg~kv56D+hx5fOJ(o`LOIC_E)lMBQojpu19Iww#9x zIlL!ykez~3z$tFbf4+-=vKu!iNOrms2~X@tEB6+<-^J3W$z*At^)~{Ua`#L^rtpJ8 z2|TtKPELO6CnZ$)oDpoF7n9ZJpvN>wT1-*j zCUu`dyvJ&mgEkk!-851)vSxf2Z>JrWA3H-B7i;aqjp8t zXL?%3*se2(pkZ;gR-HhD{gX{qpPM^AOjUsX+K-pz~KA9Tq|^bS=h!a7&;F)H4%` zf3(736qSv(8|s)xPDjXCy7H%zpbX?~C=sKDdT@rxjc5ov_J{OSlirC0ZqkVIIQZ^? zTW^7k+8VvRLp*nIIId*(2CH`PZNp`PqwemYPVTjo#%z@R;6m~sLUo#b6bk3=1+>X% z6Rko*u+`*mo8Fox?4rC=cF&meq`&S{^j+xoM`)Ts+#MHZFqG%5fN=Ak$1!X!d7>HP z&Jf@YsHw6wj;bUF9PJ>IrkffXy68Oo9@8La`x)9`S*}=g24FFCuXpCT&RjB|R&gn7 z7spXSa=ec0`3JUsG1P6o6|cegM-|D7bM$p6HoVS>am!_tiG6uNv5ZneORA&PVqMJv zvO@6I+es|*b_|ks!7pOfMHcj*lk7D~(RWx{#F0Bg4%9#A(Aj8Fmxc<<|ffJZC*d7`wp4mW3cVu4cS@!!F80axx=))Lm zDsP<3zxDS8NbS@N?mtcy9poQg^QnTCu5v436?ThiDb9?jWtRF?*W}q3Hjjw##3pCy zgnH=STpWdXW%Z=&8gz?H{b@;)tjYyRP_wRmVy0ZbA%A`n z?mj;*&k#gVAk5fJn4$nR;~kfX*J@=*Ds~{K*o6F};&jC&tL7z8w~v(*dm-vvgD?r+ z)iZ$sop)~~$!@y*)^pGfEVDm=uP1o|ix0et&NJMf2v>3NzpbHO!2bPMp=FdjLjEI0 zRiJv$m}7QD%4w zBZPL%FNmlXCi*g>*xT7{#PV<0fJk)Exa}kVD`j!k^e4jLL^yLWJxKrKJv0&dcJM@H}>Tojj#Xe2zJ;9=7wIZhkz6&?i;@&jGCW?AMZhk@! z7#`B<`JGnZy{jSbbRY3C4H?Y*p>TYBdzN z>p2^-CN8fhvD3`Aj4aI4ZT8Ta5X6=gP7tkET-0JLPAM_DoX|^5u8YO*JNd|9H zw6HhB*?*MKVC@M)Ot6MS{rCZf_P-#@f21z_3s{6L&HmAk|CO&R)h%q5O|ZSY zCWGVgzXxOi+w>7WDufns(kz3y3!v}8s2>{>_%qRpjTeyZG=uBN#^tL-<-92q` zZ3RF&*>|cTT*vpnJMjdD9NvI%dj3X;8Hqp~T?}FM6qzDS?9ab@F|dEMgU|kZPr>Rb z)nDw?un*wkiuFVIC&nH);i?36W1Lo>X76H?VVB7$5I4MUoLxr ziRdlG`4geJ%(vJ83pq|Es<*$IPtHl@ro&^mr73(xs&aQAIF!LBM2NCGLu4aF-}uil zTG(b}8cS0EL(*dm4f~I88_C)qWheyFMHD}+=`b76I46RQB!^+4;se5z(`zVOHqY2WY`CKyNPO<#63r*+N2;lH+%Z~ml7^DK}2+H50Ke79Lyuh zi)p!s^KFO!7TXY8nP4|N6}Ev3=4wx78dyjq5G``VbGr0(#fUApDW$d+EAeL4;e%E` z`JUe8#_G##k0hkZ4P41^x5@;UX`(*pE+vo-HUOce>g85espjD)I$HCgNUn_IPX`3( zQ`7V)r7KhKbKPsn*+DDsJ9)CBv#{^$tuOtBN@A5J23P1vldbKoVzhEf^XuW1{Ed#q zXC)@bVR@~O>-Lwr3Mxp_G3e3PNgI0J`db^|)_=b_&Pmq2JQUA2S-eftDke=E+u|F9 zVP_ryGD6cSDs;ixYu0-zSIl-WI+E&O+Yk#CRr_QHM@_*&44Bay%%r)jjHUcD&EmmT z^Soqp-1xvno81nZ>-B*Nh^pAy%5J1{EOZ(fKyPp}2Bl8^^by%vAJH{-j|?lNBkaPJ zl*Oc}LPZwO?~{{Uw#OT~Wbo<)p?)QZtf6IiIK7!3q%FN2+?3fHSumSEAedbwj;mNz z7n$1UTs5XG=Dl(5u*ptd0S`S@H(kiJ9=o(;5QWiBT*q45fZE_Mx{NOf`u&>V4nK_o zIPG4S!Tcc)QH^QEz~82y6!_NV4HKbXuyhh;43!q zUz+0TjgsUw@MKd9udw)^s-y?+v}M6Kh#e4yB@k#0a3oAN<+3a9ikv2KNDiF?^AZ^9 z-vSza#3_`0Hf0Osyu45Aa=Ut|sX!~BkTYh8r{M+Z{;Za6IP76(qk--1dG26UdH_9M z_BPp4q7O9M+rU{X!Jobb9V#8n*sb5@RMtBbHwZOW!~>v%ic>c4AR5b@>~|SPSq2O) zUIj=Qk0Z1qBHCgn#4bcxU^Kr6?fAPtuLbBVHmo+V30R->7>*frF@J5!nY%4xwFZ{e zm$Zl9)DE3#(6+0FbHKqv)}WAxhDL$t`xp&4@a3sOGsz7o5EGP!j-be%>58gN^45G% zn@5XkwVNn-5cz5rt;kV@hKe5vk0d%~{VrcWjsB~7*?&&u-HpJ*7{iCQ>( z5mUxDz&phtgUqWD?p`J=#yFf<6JNyfX9zW8h!nnOE@=JV&s7tGhg3DGqjPooVxBbm zP|&~0f09%FBr8l4X#CK|{!zEg0Mp`5&Y}eRf(MdKvC|mt>(Uh-Jb8%Y9pk%Au``Yi z64MbLOm~R$_1Bl5cqfJilweSYPcKP3&RdprIvcbydH#)ONsh#Ghxjzf06ndCYWUCa z$q#-Ymd{vv_U#pB$0w)ejWk(#lq+3E%&v9fhlT%!W&k@NrU1kS8m=w5zQFv>u=)m0 zlOKQ=$5y*Pll3Ox47mUCf-dhfIlr9)(rx7YEjMaKE(_+PSk=%(Rr6FyE4ih_J*FY0 zg(XUlSq*CTET&If$rxx9StZL?PxRCHz{FCQAqAT#J{v@m` z^a%_ZqZ+q5Urx?#g9Uz4%gTBsa~Pwl`DoV85vLKk&ES4kC{!6C9DPQF7jD+~G7q{r zbnyh8P7ncSVWkhc(1;KvMVWIYgjB8!?;xbAdL7`M0?~oD;e?(!Z2TIMoE$L=wzc6@ zbI!Ho_(xo+;T@(eKWhCh6hF#&)QOSFC2If2P(qbN{>3bytj!Zu~;{4vnE+)hwgsf6u42anTROr5&1M zm~Vb}&USczYTdm5>i4k$*%(NRV%liBiHO4TZnQP|NnyJz2HL&)g732uN@4=s>f=r4 zfyKaRyzdI?2qJ?hueo*gvUo)nZu2ZQHhO+je#FzH{cziSM0n&bc>YN9=g^-#ar`=Cg9GC7O)If>5z7VX@${g95|U zkIXlX1LV)`x{8x`)5>`>R`c@Bxa3}6Mhh8chf>~223!MwKEK(6ajj%2e7~KU`=mKMuh+L-SnRkFE6_>%=ZQiV zacaObepGheY8iOWM0rEqI{>HcEAERy7SPo<^wpN-eaZ3N9MyL_Y&j#fLj}tb2f!l5E2bq8WUA1SU6Kgj35832B$y zk&|74pFaz}!Mj&LGB1J286zU^$m2+<#XK?xn&565*RUBp{RXG`;%gXR=QHOCFNuCM zBYWURTiDIsNNspQze4;yN)ymP9VCJOic(M@AiDqWDE&u-irPB=YpPMC^siZAbE2qu zo4cR_N?zi`c!X3qh7Ch3iy=+?>4r0Rvv6{nshiYe%`3R~T@ZQ{A4bln!Z7ndv85(# zm<`j(WSjR++obRJ-4V4PY~@MZz!Xn?Ytm3Zg<@;gP=1oMMq<6X>8Q0N=@i>QgyL0b zjy?Zj`O%6jiAsgyg2KcJE?#5M4qNfT&3s*j5%a1NY|*dc@+2hxI8Bvgc+7c~Efkmo z*0RBcYX@Nw@J__|BK3tI@bDfaSG(NYe8&CtW z)|!po=a|97TdV-jqnjuM69F)0n(P`;#7;G8Ua->fku8BKw6V$tXU>6~mg2s_(5{HkH_#3tN;>@_9J-`27KFyAB0jopr+4rxiCfdG9yC;VVhS(yKB|F!kMReFzzF39zcCN> z0UF`6&Kp02>zxAQRh-BE-x|-@;>t@v5jqd*(jThq1IiX{{IlJ`?mfgP$7cx>eP4>X zQN;2m6kBky#r(0yqz}%!h5O`T0@x8d?8@(77M-3d>y{!Xd2EbrKb()9?bX*~n zGTcA0jQVfm3!hNO@fjas%Vs2)JH^{w&*OOmu;nNsqW9^}UdB9QAlPu9VE&Lx==PhW zC`p9p-as@!P6@{^vu_oQF?0&E$tst@cU3ddo%#npO(P-IqExq+TBSPObJ>#IJ@m@| z{ih@z#uQQp0|M%W{$CiLe=i+>8@6Ss{!NA(+L75$UjhqFL9k7EL&zq# zFi80?>H2yJMqBFRah|{Ex#eb$z#SV`{g+^ z;o*h9=ljPl>j%XF(6n@_%x*v=gp_1w0Og#_#G-bhy`&iMiKtR?9XvB+C;b6awL~jb z0sIMaYLWx&3h8F7y^>hZuj>(TNNIXW3GYP1@Ns8|%1R*zl}!OoJDjd#ou2 z--TDoD!M1@0o8Qwx;n6Gi;!6I;KF&nXQVxB zCEU#3(_G~4eFSD9T)k16Tgn&BHsuAItc{Et_3MIoldfkn+D^{b zaaq^~?t;z+>N-OUdBkWVGQur9dvVns!8Tzm?LWu{lHr(93dG7`#8+bOBKc-~7B+y? z`8o>ETp06cqFjS%n`Kw4SGp?Zz!c3^>lhOuLJFI5O$9l~TFNcgoM0-XDtt6U*^L&R zH^^yJjV0P$t$Z0eEH@T6ZRSb8xkO;%iil^{&8tWz#FqB6Z(@-nvY@h>kYzMPlyk#4gBZtemDR_=bTt%af)eu4^Dzk7ueHYKMx3-^Sk!tiQ1 zFvA*i$Ee!-Ok=7B?Y(|?)IjJfCDkJy)(;LLZm07$ZWGE?CB;efTsSSzs?u)EjkH$S z?H;iP^Ui$N=>O`Ec%c-3%i+449KtwxYNyMmtu!kZUNnZWk#T=kDtVY0lggM~nBpI* zO3Z9_ehOL=bv#Q}5^>x>&)Vl>jxvqN2kt5)p+G&>%U@$r;H2OYgsDchs+G0Wt$^v^ z3g01V{xzuUNr(f)DJ!4c$Z`IdDjBgL=M#D8d{{<1J1GY5(|f(iv^tAyttn{Cw$%`M zdZ7Jk9Cs9J!x}T{k@x@b-^P0$%O=RRu;3rk^P5U}z!hw?$M-@l=LNVww_1 zgL*FvI~tUuRqEsKgg$mB%|Zu0+GZ~g%^Ae*Kx5CbdP)BnUhPj?)Q^0rA?WD}_F34H zl=yQ#aFM0f26F>HLGy#X)0qYf&J`yD^{4sHbU&2qRD9Le<3>Yd3V1%Ou_IXCQt!5F zBRPfGE|iB`(mkv6o%VpMHo5I)Zv19psGY(!M{#bPSdiF5>HG^NTEHYsh(Z(70|L22 zI8n^r54i^yYOaK69r z|Na8orGZlD3@`?LcaViy8DgLfPLrG5|D5gFmJdDVVvJD+N6S|qjAEEqa3);vw+2t< zs>K|_RY~GzuktnS#l_gm-H4vZ6lOvC%9UU%-Ipo+H(=L@J z%1&gjU=WZSxKB6UJ2X`uLuq#EZydGS4wrD=)K@Z~4ppwp0@WAsmRh268>qr+1+Yvc z(ngVqi9Q%Rjs;1C5+HeQ8mZcJVdSVyfJPfXcIK_CM68F2T?HMdzmh;(y)bbFWw^MxkK!Q$JeEyQmQIulLrc2`%E6xfp1@yF6sebYH98*qbq&CB=v(#K(E<+45 zTByU9YL#Vrma@3=X|B!s7U!N~T_v*P7{h?b19zQaNJg0b)W{Wknn-wK@6ZM&xqW4f z3MM{a5NcrC$qrgG$NWx%%CS*{td@4)Y0iaFXlp#voRfXm!KXO;*@Si!&IYp7+5&8Q zXVm99g>AJS&tt*8ytE0b50gFwhwghQ(TqQYM5u<&;`6hWUS8* z9YlLTL>!~vgw^m5fye^nZZ&VuyqoxUSMRO-=Nm8g2|~>dRS^B0O!u>C^6t!S;_nO7 zo)8MvA&3VYLSrKk_wYE8y#6Q=*2DzC`qswSHg$700AHs~F-|-o?h$G80nTDxe_JL~ z{OVf-B@W>!Msx_HP>^XU5;9KeI8DC`2VbSF-jys~284H9o0&P%;u7?63Z6S;}n+pCI~Dd?JsZ(HvqfObYA)c zXYz=PZ-`>vMP$`1cX@s9Q@9u>h#SYwQ=jv){PS(-*W( z9P)19V&|qOqFZc59;S#M(YB0HJfbXqf9BBLOP!-Xe*8hFn3-)N3V#CKdgu{S@x(e3 zRO2gnY`-U_1AF6bk_K6~mei8c+aghBhx{WW)?#VaHf#&*aSdf$8tps(4is*z7dFZ4 zj+DScb?_5!7mY@9wQ+U#6_RhH#2qkm3(|dC=g}~HEZcdZ-2p^P=FoRG;?;VZr2bMp zmrF4Qt$K`^m_)wX5*4acI9GBCzi--g2^9h9EeYj2^t95su=Cmvx7-isX)tsikN)gf z)qvfI*6z^4Q?Hf&!?!ateB73GsN1)J^jLZ3fP;&}cY>$;K zi`XJzQyj|JO4x#SyV1Gc&OmspHPoW^QGjYZS`wmk=`sF>_ZRhg^+wO;Y%tO;^fR2GTCrkrc(&`XnF+&v| zCR~|)CmQPLGC_bghAQnI-BUexB(K3Ljz`mxeJc)FbQcbuc-+7V1P2)h8RxTujKk$g zYsi6a^gGA($t%TzI*Dy1x}2;ci;iRNC8fa1JCpw=tu%i2uJol z$K)N$2x4>r&Im{Lo_q2EXY>IMIftBMCe(p5#tieV$Zt!E?VY8m+U}L7dd3F*Vkf5L zhfkr&ar8^|mV~A%LpsW-{0o?4o(75znVrThYw&@5V>cew*&ZuqIYySt&9#n= zOa`OoGh-vlodz6IwXQKonx2HbdY2~%;nImIiQsnKiMUTeUl~u~<5XGh{1w@Z=g>2a z^R7J^cub*`2nw}7#f>`8U2I1`bv2*W$IFhsd8;oLMPX#e zdhe<_WjK&k=kg^6aYsnaXjTZ_Y}?7SjxQZ(;%30Rp>)MTHw2<oz3UWA zxOm^E69wpL2 z!gQVNooUN%(!*VTY~4;x8k2xBikiQ0010`J=LoA6r8e@q=@`Y~DdJ+5UlFg9qiAsw7$_=})naP^e9 zp_q|Hg@A3YyZ4#)e)x2}O+?GZN=nM8cc$#V43kdEXx8Z^&TLN5N$O9fuw-XgFVU15 zdBvewL^A6>ihg|Ke0wRqQfY>X%+=n{@rK31qY@`&=<(>AVx0_*#>WKB&P1{$Oyqe9 z4&^qF2IX7mgm_K&YNqp_vNJ6d8cy6tk&_yl%~9hk7;(A^4vLdX%!GN8O-nA1+6i*Y zGdjcW9%+n2w305=(%~Wn9JWd1dN19;q;s7_tWAe7q79{1Jo$l}$y759!3HJ2xKz+F zwooW?_PvAy99j5mi)c{~QJQdy1i@-bL*PX_v`NOrcFPFGneAihm+gzn<&Tnz9^R0! z59Bmr;Z)o`&%@DhFgB_p?3R{j`Q)_{7#nhJ4a}{w%ye}dRI&vYAE&CqzFj7L+)U9} z8mHe0%`<0qAyj8eJfJb!Pm#NoWpUpw>6L^d7)1E7a-82dJvRhKAu5)&fxV*8P*>&T zpRT~!5>9bXi&P3p0DL~E!u&tS(Y*zjmH-2?bCZ~hY)fjJE|kMENXGnaBm?Eh_a0xfjFy? z7mPye%5euQ_7l|_B*;Y8+G5u13k94hXC$6eSF|mK$A+YhvC`vU;S0Jfy$j0AiHWQ~ zPLr7WB-atXT1oZLo3>FIf1f4aX}{S}bq2kuO+%3D#MCDcH>G zdLra4KSEk%4;&mihLQJ`u=Egemfgj?#dO%|*esu7L_)Ut=-Dj16|9%t<(w@)id%&b z_=n6`yJ_|THD_cBLwAHO81~ppOIyk&?`2dsMeCh8^It&Sp&+sD2p&9~ID^9O zFfj*^I75V){RW)?;#aolJui-E{CyJNfCcxQuec8=vpcWMfgF3h-@_BH7&W_kuV~PF z+%y4d8X$DFrrs%Ap%K=!zP)Vv=`Opn%Rwz`t{sjr$H)PMbx<;=^xA^}it17^TQV9wK zBn$b!G)w=t;LG1eT1hJZ+{FwAb%mUWprlV~DK?iTNJLRC7n(yzj!#E724PW_PGJBH zP1(w@sdT@Szb(=GmYtaMf-6T~iOTKK#_e>o$vwmTvYo~M_4Nei zM|tRj(H8)(hL}`KA^g-ASj4tD;7DCfd|a^C4UqRX7u7aLLW<|3ND`Im4+qHmoFXx{ z*HQ^1GhGRjCj(~ES3AfIbcTZ?!I_wt*i3j5@6sY?OnBmJN%!hNv+~?rD7koQ@w&1sPM zn;IuEllT6@ZvjRZFx#bF1DIR~!9xj0A8ho+Pc{iGU#(e7Q!ZWRp)M+CF3*uj16Qp& zlR-}b*;@yDyd#u=DDOTP`g@%&Yp#hx^&`Dxk1>t;hG-ogg2s3SDGi>c2?Q9nTqj-T z=CNLww~A&4wnH^QOUh z&_;}}i!}|MyBN))0tJ05L>`bp@@*1o1T!X6mh;}}I&`Lg;tA^+KgOYRP{$ z${frvDh(k+t)LH|0)a$ftsneU*kloH#DUdnBQgV89E1fiTFPk7`wl(I3QyeK1?e%@ zm{CLlykP7OfqTo7fiIc?$mCBb}<2Cvnu$0NZ#_YN?KKgEJ)c&taa+D#1YC5Wl7F7 zNhr7-rNc{&V7sqhO@&=i*jdG((QbI)@5f zB1Nvirn>>x2If-^2N!uxV=>2YnZSotgt9cxk2mdXh38~6R?*E*ImZTS8xSp%(v_n zxx`eGM^EzI8@R+AnHox<5M!Z9`saXV@z8JC35hSDHEt0TCUmQi2%~r^M=W7m*2xYY zzWxysEps){*MDQB(@7iI@&9$?!u?;C(f_r``9IUrr_{Z?QPfbsZ0pBJIud|>^cMgC zw-T$cG@yp~f|gKWVZk9JzXEII;>S$SP1&~6V1HGGt5#|1E#@zhcbB6zQIHfXNckjc zUT9r(G&MD=RxOp=e3p1lPhMVG6oH1rnhHw#n`n2~HPf*A==51&cdgGTBeMQORW z&kUgtx;4p!*dvjwo3#|N7EwCKjMCS*E7B3b+src-(ERS&6 zc63=z#7lW#7RfV(FP(|L0aUV#Cyr@BGs>gUwQ$nH($cV0d?^aFjP^;%O1_7DFTBuG zMT&JYOKM&}Tg4YD%Xv#oTS}(sD78pD;w(H(svP(VjM8R2-Y`yw?e~Rgf2BM<^9>J7>HyZ9?QMz81^Z+n zlRgu#$!Ti(B!=Lm;1B_P2Dg|>mhJird}+bQaO|y-e-MbI3ggn{Ad0!Iw$JsL_SMkE zoo!^mY_Sc)2%9{a^DGte7zm0texo&Kf2x(yWqS5l$b${$jTkk6MA}qYl8QK(w0$AH z`Hg1l_eo;$i?fO2aJU*u^R{A!w!X&?Q^?GZ9_PWeioQ-~^^z6Pf?dT|oYix*RP3*p zN-*ULu;z&R^SIuo?q?~>3C+7_iWs38NsbC1Z zRMfFtH=Vv{aRv2!^ks0R>+0>>&gJ6-Cnh#ujzeY<4Le|#_fk@?l4ub+TwwWY5vD5d zE**Rb@)+rO(!_ObvM2chL!vIJ$%k_XLoj4q`;8Wcp>d51y;7W0^lxQa07-~#R{h?ipMrRS5r12MEqTt@ybmUXRT?C*34WXzn zF3w*4m$=2ee5(a8WmQa`by{NFT*jRUSxoJ>M40qqEs?mZlt$>D#@atb#jxoT?xZ@U zhS98xx?eV@-Tj-rp|n_q!$y$b+kakxH|i&tZk6LPhj@)*7h@HaT2F?|Rb9TQ9FTq` zhImmr%@m~|v@+zl!;8;M8kF^THJ1xZQQ5vVkzIJBQVi9*TrNbbJu-*8(DB+OZ!G1o z`esiwW|F2f`4axJEArN!Gn%V**N&pRYc{4~6_R#y19HJujjCk6lu|cyBXuDj_ve!8 zY4>fClOLk()q|>Rgg(*$l$jsCZ^q8W{J;$SWirS}w5P^YJyJvZAtnY~z@!_zg>;?Z z!0#*FK_(xTcn9Q)tYv0*GtE^}ZmRV~;7h(oh}knTzyxTVpcBcE;5XN zTMFPGe?|VH*<-}~-FLwBH4gE60Ga74`uC_ib#=m>JYM#o(jwqZ8PosiWOH)C&5F#O z`>m$11ci!U&)90&G$;#-ko6qX%hKD*^Vlc1E`s|0?Xvvpl6VK#Smh3T=A8qtt|Ob` zH#w)yz0*?oHK%k&?DxkD)^eOgG)1w7dq(Yh&zwKv^~dnFOln)@8RNyD@qkWxgu8c% zi8a3}s!2CK%JY@S1qI&mgw3sZV!6o&)~t4|Y7M!~7Lrp8R0xl+NW|0Ms`%^{Y`?WO zb;&ENPp)%8$6=SQmMtG#tW+1L_nRNZ<;VE4Ar}9Dv|p?qC@t(=0l4L-k zdQZwBFb!i+kPqTqqbYENso|!f0l-p zk6pkVDk9AS7=4n2%LH+0&5%wZG?c6Ag%G-X)PDssd!1qgG0S!OsY9_{zWuHo zq}LzoPS4m#TXPm3_qKeFcrs_{8!&a+ps5a)Hn5@wci^%1X?eSt2V_a0z{w z_srhQB5vQ7RBIhvKL2=00GJ%{ye#`XM>-Lvys8F{{QN7*@vgwO`jF+G>9?CNM7I51=d7DGZ^6;s_1Z?s}?{Tg;r>oGXfIMJs9Sd zoeIncKZ0m6-03(PAf)39{zgjM3jx9)CI~T zcz)P8e69vq-5po@bq}#dS&>>TB76n~JZtW9+$A^A6F(O?XeToEjT0*f!|8m_kOe{CoTTW16ljJSJ6akGl&u^+4vPL9* zVJi@`7U)_HJ<1=_IdOdJ!o8`L(Kt(YH zUnvry0)(KijXY%(`$>+)d|1)>{NPFD8W9;aCXc)ya=s@s|Gav8f!jwJ`TO_&(ig!f zx^z&#&(wpOzNhSvmV-Pw7!%HXo0rw5*T+2cAS&@(AGL*OZg}Px8&Ed^4gnU2r58Uk z_>zh}P_4)@68BKZ3>vS=B98$G4qI}b(99ic>z(Cq6(_SIU%VYVDI5RDeWY%R)IOS6TaZ%f*U&oN$y`|WUHl}0 z>ERtv-=6U;6D4qdJU!=UferYfB%T~iGX>_EZqsL5Yjer6Y74zF@D+^dd383o@(u^r z{cpCSYA47;!(c!_wlM#h#bfhN(UyO5cqB{=j7=Oxtxar9Y@PpKUr|+AwSU|X2Logv zEc|a(q%4g1C4psw%9~~t1=i<*hvoxlEphu}Ww>SL$3V;IHkEB+uzTcC-P&Vi(a#Y} zpVcplvk&O)ucrC)_}rLqg^&s(He+78@n`+Xm<5UP6< z6l*I*FeIaPyaQ*i2a_LVCz+8Q>qje6uZqlsyUsAS;U80=mD^+t6voL>3D8+TM#jmv zyf;SjWJ$(C5gx92W9^h();N!|B#yYF7U8tbXdAgRweVup!DIkcv zf5YBb+Ab-bv4T!2)*PRz5x+I5N7OAX!|qB|?odVvb@ti1jM@UgI1(`#k9R(mna_+G z6=Xm^sjY^rDt}n6!xyCMW1-a;ml=(vl&M%>#zWm{C>fSCZB%k5V{0pSSW=bvLwW7sO=F`YmG;P)H(ACjco{eiRU?eO?7~`h`f18U4&46g4iq9h&JG~N}YH0Tbk7R`5_K+pJf^pQ8)yKIFyCSgoa%^ z$Ia{67CIlD+;|hEfil<{;WIbpSauv$1P;1z4iXZT*PzaeJ5WiBCU9>UZz-~Z@Z?LHcOdI+uB;<2HzgmWn&6#G zC~I+S9tcRO`vr8Q%0@G!1Sf=eef$xSO^okX5-#9DbDzoxo@_8e#gP4e`Sk zvGSwC$_dRZX%1iEPu9hv88o?dNMC2bL98gH)g?7sHkFn4DjU);J;(48OR^fG zd*rzx`T`hTxemH`YHnu)aWr&}{oSc=+*1>k6&#;c2K$l9 zru8_-Il*s4dd_Io)H|tZAM7*YC{MZOwbAarAB-(7xG&A_zlCDK)Q6f$m7CnfQxse_ zh-tsy%|^KVC?cQ=)g7a>yZtp!&4+l-^lz^%ghm-!<;qQLV#P6i@xL8$2PPUJ>pDju z6=!p2z_w3jbCbbN^Rjb);ESI?MA+ErN^o} ziCOI?n5Ivw_2P)B(f&~2Bapv~;eP$(m@qRR9iFkHn_+Xk#nO!6-o0SL^-kueCmmSi zF}uha2{mGb`acWrKWYLne_gm22oR7jI1mu!|G%2>FO%sFM`UpXULze|(4hSo*4m=?u~-vE9%Wsnu4X!f-*N2SgkY4tWrgvbK~%nedb`w$ zXPA&068(1r*OQNroIdR(X1bs6?|MMf2ew!TuamuhQ26AHK=mRGVf4y()CyYtY8DikqlFHmuMvk+{dx2tC%Gt=mTJ>DW)%%*Sew zZH9J84)@xx!j49_5c;ro?41dE1n)V*3SCApQZ`&i?TfF$Wg}YLjkMG^6q{+(0EBi> z6_dgp4#Kyxh_Q49l!x`nJ}fEtWIUp97dBUvXDw4OA*1bw5Nhu60aJ(fJMe>6A*URO z3Z7>p!RC_X#^!!fY33Z=>%;)l!a_Hb1Z9=7$_adv zFp3Vsdfh{g@ZI*X82ib=5f0Pc;4m!P^wywu{|z!zMkD>TLEK6PnHw!KWDgV!IsDzr zQld{4qgQ(l?twVoop36z4z*~@iYu*(_PMK^_2Yz38fqR0QF&a`_tj*dHmoL1UxFdi z7%iHTbvH+e0%|XV9TJrWwa?xoMXJx?rXtHTU!N!g-|t~xaB&?o+q0n!F6*P8yK#-U z74=hriU_yjN9I-$em7^whF|*jRC9tK7-(?z^KZ{*#00(S(mA3p=bsFhm>&3NKzet- zZ)oM_8aSgd;EaIrXE}mkqWwHWveyx1=EJ#ijxm=$Sja5wphnJq2dMH98nVctyY?OH z8eYOj@{A6;B7S!;yx@fOe>jokSe9G7$s^)CGK@GtQhH`Ew+cN*h`6AVTaa&%4Un@0 zW|!^C%qYJirswp_khh8!tV^S06W$eKlaxi7$eK6fasiwlf&&shch7&_TBCdWJD2l5 zs9{vz0+*p&tO@K0A!8u5(B)i)&?7X1-gf%>x@p<@(HW!wUp{vfjK9@+wkKNyP!i?168zCG$}x~KeSe&ZeRAg?B8Knj z@B_;3jYOoALa+yPDX-bpb`?eD%IKj5m)8yjtn^tT1=O)iN2sA_bSdU83A^ zGA7>7NzzUy$PX(tGG2~uOT=VLktYO8k~ouaJ^>OzG?poar0la0jaUD?l}V2=u^VHS z>!yLP6dBqW^JZZTbsQmQ7Zg=lGFd#!h1o~J1Jnyx&_)>Jbmy7BN{i3Ynw6mtr; z6_hU>CVGDZ2SlKLww8-mrIu1V$AEn`v&jXf%vvkKN~ybXt<|VMuO6WTA3_IctcFJ$fAGsV*gHgzY zCdbDAI%C}{X@Nr(^jt~2ClZFwRn#>rojC}SdsMy(W-98fitPT=P4K20AS_9k*d%HZHdjUilcXC6T5`32QQ zZnW@ws#i9~nBK(tO*J{P3q_3pUCjt+1EBz>RYW0);KUgxM6g=7SSP`i)*M3wO860b z*hPB^bl9P?g)hE)kTTO8JunQ&o&#OHYl1?=B_emt{5RqTCFcA*D zEhKEc4_lx#K5P7OYqD_3Z@6lSs&V_XWJqhDKJ;}_s-M1Nr)wfuejAJ1guHH)6E_AR zI<}-@wYcz(Lfbc|RU~Uh{UZk~P6~RG28+?i(X@giBLV3S))Q1zC=u{ZIF$B44GfQB zB@lH6t_jlG;}1A0d-GSwt9OQQ%jR&&W^k&glCBVc5>OVN!{l~<|GjJ_a#uqn{RKP; z!2k2a=U-*(pZeFrE{;xi|BXC#{)?tAhg2^OBSiFTLtn>c2!Tdg>kPb)f?&0APq@$3 zyvj2kC;kesHED|ePX7V2y?7SM-Zh(smg!o&{a%2xA4-V)${G~ z2dmd45eZ|YGkAilngpRw1vdxo0GH<0Au8qq%a(*8(gTPSlkaK41!j~h3-99o3g~bH zbCLM{uXI?8l}Uu6$h-QUo*Hfc2J%Mg?xj+y;-pmv@0R>!+G@(B36JP3P^O*NW;5K< zd>`{B8Y-W)W?XsCWFzFJ&9HkDaT{B%ZQCuC`gYmL`1V z9ZfH71=(j54*bS(3T9j7fK)LJ%;s{1Q{kbyWzgfFT1ylq;;m|G&4@63ERu%636hz6 z2RbrPnI6J=r7Mj@5n@Oeui-ITjcCL1b6Zr)CX562eW%x|r;3aA8B1=UbYD4F2pAVg zYgGJ-sPw5!Q{F^gj`fivq(_G)tt_Lvi5~KEbXn!Pys}y6xY;F^o8@7Gh!3xR-J1?? z{RI+E85QLJW%}3{m465eRjrZ) zs6ovGQ4oM_F6nLKrR$v=u-Q8#E;0^sc9nA8z+ZEt0hnoZG1ITtf#1Ogucz+Uwh*a> z3p|J09cDLf({9~PGg}{DH}pNg?)dLNU=ErixqS;kPWu&satt(vbug)ajJ95ll&7u$ zKAr0F`%Y}N;PpY$@H&HJ8Lh+ivfbn29Qgfy7!Tcw!sG24_yvm-EgNCV8(UB4GdVKd zBL%3~mdkAHo2sxrPCa&lT1X1%jn7t~EmYAKuXVo9+OY4 zR$@u{#bbSqN_NhlN+W><`u_`E3Br9e-x*?3$cwW2usP4NF}{S+0^Kz z0p_ln7!&pj2!E8`XeFzUT|Ks?#wlW{u!C)m|KwAFUVr!aB>)o{xNj}fHcc+PWoxRG zAvLtys#jJUR|cV3b;?y@s1_T?H^4RzBtRMFQW%lT%%=}W$YiiaH2qEk^4nCBG`G z4bb6Hv4>tkHK&-EMa4)}wFkSQ!WiL(A_|qlxG8K6Fca-dVK7lfRj)<8+@l7|F-(S& zFf&V&U|W&zKQg_{H%Lx1$?|)X7oc=N+T_EsuPl#SwZDdcYO}(#TbCKysHH|7APFgP zE^Ls@^5UCcXYJo6lI#$c`YbsI>+We6mc^BfXt*{?f?7EfkZW|>G%R1Cqofn$R&%k& zRH9AcY{Q5wT(HUDTD2}{#af9_4bv3$qwvS;P}EP}2oAtbBh%9&R#kbZUbemAGAX${ zMn^MaPhm!??*6K_j3ABoK|R@Jqr>SMcyDaTIF3p|7dtazfq@shWuxnpmQO+a=|bZ3 z+|CdjYYwCtBErtW`~*DZyN)cJ`P?Zk{~K{$`r%=fu<+IHlv_xR?T{1jqQb+WBK$Hb zu_7Ib*O$T@kjV?+UsMt%&=sbaWu*u?^+J7#T(mbe$q#Oz-)>|_;}>9HbMSMjL%ezZ zA;iz+O>X`H;lr{`%11run1oStK;+|3PZ(&iDGc>e2cX#^hF2ISPIZqoa}SUd8rr0Z z?N#a32&*LRXMRIQD1xBe>}6FP41_=JO4)q=3}eje!XLuX zgM;pCh4BH24oEV_<+}3;h5(XBER3)ZT|{L3sl)$-A^28t4_QpHeD;x0Xl?bCcatHJ zVe^pFH^sKA?=J%Nc z${!QNWr+CtZ+3&dCHA)-f59GO@c%5r@waYW$=Sf!#Yx7(*5tpDkJE+-3U3BSvQZ+L zixQND=B7MOTa+fBCPC3I2O~#oScxsu0yrMq`LL?kvS*=6a6kT@zc`);P%sNK14vBP zUeNDed4pDJ?rLI>bv|>qn9+VdCwADd##F-ot!y&;^NV@AMkPOs)z%&+S7 zIj1HjSTDC0*~#x7f3;<-d4~E+0!zK={w^S_!EL`l>0Vq#5ZdQ=s%sc)VT04kABBf} zng+TgWInyFM;ssa`F9voy9B8IAI9D(N))C^7H!+MZM%E7ZQHhO+qP}nwr$(S?(@w# zbMKn@@7y`FR=(70t*Weu$gB)be`amV@qC*nJU6bvTZ)yYtj`|eI8-%^N0Q>gda67K zq`D+g0(XiZQ}TVn4yYI(-+r68FPp9spfx*WO0T&W9hbZV+lv&!ON)RK+)(L1ht@+c zBc{tcr~|~kS0jKWLZnVq+1CNgMO?Py^~sT|s0QO(gSsaLSIvit%|s{WI5=$vrL@Xc z#gh|@NGloyc0_8S)Fsa0&U2;_pZCIPrxEO>a-5`JW}%d0Nxo1WEnW0DC4YuK*<;Ts z7vW*O1ze>>1BfkaYkm0?b{f(2Ier-)Q?^iDe*0l{E|o^!NCTQ7hF+8jz27%$-MSJM zYjhYL0QH!(eG`;+o`kc!Qu1+KLh3>z7I<*m3OUYg8m98lB%0f)BYlrOrZi(bwXV-J zoy+&g8Az(Pfd$%~+^2@O)EOM`qQKasy+cAHz}H#oO$uSAhGDmj-QQUMaPFiU>tUiL z9xHrjpuboC<@iy^itDLu)_T}+>bvQxBkRvnY$?>01C!*zv_PCegMHgrd@pFz)r^|0 zBnzTblLTSux4LSXbUi{Gib;$6fyA3x+}5>@PVLO=ElY6Z?bd_z zPm$bl0L`=33{b6pxY;` zx{ZJ4qA)e@HOBT&&M`iLli{J0#l?SEJ%k0Yme5vthgY|_Lkx9#gm2S3Boo!FG0I$F zRa6s)VU1KA$ym>KfwzassILdckexttjWyU~s`607m`!=ZT{Y!bF9fc0JPQrVQgu3B7V;rB}1d=?AhccgJQ&MPYUq3klWm zaFQA@1iPy|AF2){1)YN0HInZz*+J~{hASUW*^B<0bWCG z)oZ3U%nCrAXv5Q`dkEDZr?Y*e)va&Wp-%Q*YqmOGX0_QY{WHXn@CWU)es3L1$a1#= z!Sb%qBB~_6fpA-;*C2#PHbcv5oArc`Px`|p=~<6wcmW}I%&O2n$IFzHh~{(fq?g!8 z@luXhZo>c}qtZexb+}cI{NoT~B)zgzHi+j?1;2UigZ9&9yU?olRsT&B9e=Xak85 z`$U$OGe8TCT{)J&1+%zEp=L)rodX+mo)gmg@=rVB*# zP=&F?074B@baOE>mDF-O)5%I8sL�(4H)@&}r@D?OAmHgR9^YTd)myDl=ZbjTL6! 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 + + 4.0.0 + + org.wikimedia + commons-parent + 1.0-SNAPSHOT + pom + commons - Parent + + + commons + commons-it + + + + 4.0.1.2 + + ${env.HOME}/adk + + + + + + + android + android + 4.1_r2 + provided + + + + + de.akquinet.android.androlog + androlog + 1.0.5 + + + + junit + junit + 4.10 + provided + + + + + + + + + com.jayway.maven.plugins.android.generation2 + android-maven-plugin + 3.1.1 + true + + ${project.basedir}/AndroidManifest.xml + ${project.basedir}/assets + ${project.basedir}/res + ${project.basedir}/src/main/native + + 15 + + true + + + + maven-compiler-plugin + 2.3.2 + true + + 1.5 + 1.5 + + + + maven-enforcer-plugin + 1.0 + + + maven-release-plugin + 2.1 + + true + + + + maven-jarsigner-plugin + 1.2 + true + + true + + ${project.build.directory}/${project.build.finalName}.${project.packaging} + true + true + ${sign.keystore} + ${sign.alias} + ${sign.storepass} + ${sign.keypass} + + + + com.pyx4me + proguard-maven-plugin + 2.0.4 + + + net.sf.proguard + proguard + 4.4 + runtime + + + + 4.4 + + + + + + + + + release + + + performRelease + true + + + + + + maven-enforcer-plugin + + + enforce-signing-properties + + enforce + + + + + sign.keystore + The 'sign.keystore' property is missing. It must contain the path to the + keystore used to sign the application. + + + + ${sign.keystore} + + The 'sign.keystore' property does not point to a file. It must contain the + path to the keystore used to sign the application. + + + sign.alias + The 'sign.alias' property is missing. It must contain the key alias used to + sign the application. + + + sign.storepass + The 'sign.storepass' property is missing. It must contain the password of + the keystore used to sign the application. + + + + sign.keypass + The 'sign.keypass' property is missing. It must contain the password of the + key used to sign the application. + + + + + + + + + + + linux + + + unix + + + + ${java.home}/jre/lib/rt.jar + ${java.home}/jre/lib/jsse.jar + + + + + mac + + + mac + + + + + + + ${java.home}/../Classes/classes.jar + ${java.home}/../Classes/jsse.jar + + + + windows + + + windows + + + + ${java.home}/jre/lib/rt.jar + ${java.home}/jre/lib/jsse.jar + + + + + diff --git a/project.properties b/project.properties deleted file mode 100644 index 02db3d172..000000000 --- a/project.properties +++ /dev/null @@ -1,16 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-15 -android.library.reference.1=libs/ActionBarSherlock -android.library=false diff --git a/src/org/wikimedia/commons/Transcoder.java b/src/org/wikimedia/commons/Transcoder.java deleted file mode 100644 index 196bed6d4..000000000 --- a/src/org/wikimedia/commons/Transcoder.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.wikimedia.commons; - -public class Transcoder { - public interface TranscoderProgressCallback { - public void transcodeProgressCb(int percent); - } - - public static native int transcode(String infile, String outfile, String profile, TranscoderProgressCallback cb); - - static { - System.loadLibrary("transcode"); - } -}
  • XML attributes - *