aboutsummaryrefslogtreecommitdiffstats
path: root/libraries
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2013-09-09 13:19:43 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2013-09-09 13:19:43 +0200
commitaae87b894f72a719a850ec32ad6944bd5c743331 (patch)
treeb5a221fcb529c07b309f5bde0563155df28a472c /libraries
parent5b6880d2e34f4c8a4bfba87b5ce53d3c6727b744 (diff)
downloadopen-keychain-aae87b894f72a719a850ec32ad6944bd5c743331.tar.gz
open-keychain-aae87b894f72a719a850ec32ad6944bd5c743331.tar.bz2
open-keychain-aae87b894f72a719a850ec32ad6944bd5c743331.zip
Update actionbarsherlock from 4.2 to 4.4
Diffstat (limited to 'libraries')
-rw-r--r--libraries/ActionBarSherlock/AndroidManifest.xml7
-rw-r--r--libraries/ActionBarSherlock/build.gradle27
-rw-r--r--libraries/ActionBarSherlock/build.xml92
-rw-r--r--libraries/ActionBarSherlock/pom.xml261
-rw-r--r--libraries/ActionBarSherlock/proguard-project.txt20
-rw-r--r--libraries/ActionBarSherlock/res/drawable-hdpi/abs__dialog_full_holo_dark.9.pngbin1414 -> 0 bytes
-rw-r--r--libraries/ActionBarSherlock/res/drawable-hdpi/abs__dialog_full_holo_light.9.pngbin1537 -> 0 bytes
-rw-r--r--libraries/ActionBarSherlock/res/drawable-hdpi/abs__ic_commit_search_api_holo_dark.pngbin0 -> 597 bytes
-rw-r--r--libraries/ActionBarSherlock/res/drawable-hdpi/abs__ic_commit_search_api_holo_light.pngbin0 -> 616 bytes
-rw-r--r--libraries/ActionBarSherlock/res/drawable-hdpi/abs__ic_search.pngbin2280 -> 2558 bytes
-rw-r--r--libraries/ActionBarSherlock/res/drawable-hdpi/abs__toast_frame.9.pngbin0 -> 1319 bytes
-rw-r--r--libraries/ActionBarSherlock/res/drawable-mdpi/abs__dialog_full_holo_dark.9.pngbin882 -> 0 bytes
-rw-r--r--libraries/ActionBarSherlock/res/drawable-mdpi/abs__dialog_full_holo_light.9.pngbin1003 -> 0 bytes
-rw-r--r--libraries/ActionBarSherlock/res/drawable-mdpi/abs__ic_commit_search_api_holo_dark.pngbin0 -> 511 bytes
-rw-r--r--libraries/ActionBarSherlock/res/drawable-mdpi/abs__ic_commit_search_api_holo_light.pngbin0 -> 532 bytes
-rw-r--r--libraries/ActionBarSherlock/res/drawable-mdpi/abs__toast_frame.9.pngbin0 -> 839 bytes
-rw-r--r--libraries/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_full_holo_dark.9.pngbin2159 -> 0 bytes
-rw-r--r--libraries/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_full_holo_light.9.pngbin2302 -> 0 bytes
-rw-r--r--libraries/ActionBarSherlock/res/drawable-xhdpi/abs__ic_commit_search_api_holo_dark.pngbin0 -> 703 bytes
-rw-r--r--libraries/ActionBarSherlock/res/drawable-xhdpi/abs__ic_commit_search_api_holo_light.pngbin0 -> 712 bytes
-rw-r--r--libraries/ActionBarSherlock/res/drawable-xhdpi/abs__toast_frame.9.pngbin0 -> 1956 bytes
-rw-r--r--libraries/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar.xml1
-rw-r--r--libraries/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar_overlay.xml3
-rw-r--r--libraries/ActionBarSherlock/res/layout/abs__action_bar_tab_bar_view.xml4
-rw-r--r--libraries/ActionBarSherlock/res/layout/abs__dialog_title_holo.xml46
-rw-r--r--libraries/ActionBarSherlock/res/layout/abs__list_menu_item_layout.xml59
-rw-r--r--libraries/ActionBarSherlock/res/layout/abs__screen_action_bar.xml3
-rw-r--r--libraries/ActionBarSherlock/res/layout/abs__screen_action_bar_overlay.xml3
-rw-r--r--libraries/ActionBarSherlock/res/layout/abs__search_view.xml2
-rw-r--r--libraries/ActionBarSherlock/res/layout/abs__simple_dropdown_hint.xml2
-rw-r--r--libraries/ActionBarSherlock/res/values-large-mdpi-1024x600/abs__dimens.xml2
-rw-r--r--libraries/ActionBarSherlock/res/values-large/abs__dimens.xml29
-rw-r--r--libraries/ActionBarSherlock/res/values-sw600dp/abs__dimens.xml2
-rw-r--r--libraries/ActionBarSherlock/res/values-v14/abs__themes.xml5
-rw-r--r--libraries/ActionBarSherlock/res/values/abs__attrs.xml2
-rw-r--r--libraries/ActionBarSherlock/res/values/abs__colors.xml3
-rw-r--r--libraries/ActionBarSherlock/res/values/abs__dimens.xml12
-rw-r--r--libraries/ActionBarSherlock/res/values/abs__strings.xml4
-rw-r--r--libraries/ActionBarSherlock/res/values/abs__styles.xml56
-rw-r--r--libraries/ActionBarSherlock/res/values/abs__themes.xml84
-rw-r--r--libraries/ActionBarSherlock/src/android/support/v4/app/Watson.java21
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/ActionBarSherlock.java26
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockActivity.java6
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockDialogFragment.java6
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockExpandableListActivity.java6
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragment.java6
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragmentActivity.java25
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListActivity.java6
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListFragment.java6
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockPreferenceActivity.java6
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java258
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockNative.java79
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ResourcesCompat.java91
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarImpl.java9
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarWrapper.java12
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/ValueAnimator.java1
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuItemView.java3
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuBuilder.java6
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuPopupHelper.java35
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuWrapper.java21
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java9
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarView.java87
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingButton.java23
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/FakeDialogPhoneWindow.java64
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsColorDrawable.java12
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsLinearLayout.java150
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsListPopupWindow.java25
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsToast.java60
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/PopupWindowCompat.java178
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.java2
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/TabsLinearLayout.java113
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserView.java18
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/widget/SearchView.java4
-rw-r--r--libraries/ActionBarSherlock/src/com/actionbarsherlock/widget/SuggestionsAdapter.java33
-rw-r--r--libraries/ActionBarSherlock/test/com/actionbarsherlock/internal/ManifestParsingTest.java37
-rw-r--r--libraries/ActionBarSherlock/test/com/actionbarsherlock/internal/ResourcesCompatTest.java23
76 files changed, 1091 insertions, 1105 deletions
diff --git a/libraries/ActionBarSherlock/AndroidManifest.xml b/libraries/ActionBarSherlock/AndroidManifest.xml
index 7b8a84824..ca0fb7cee 100644
--- a/libraries/ActionBarSherlock/AndroidManifest.xml
+++ b/libraries/ActionBarSherlock/AndroidManifest.xml
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="100" android:versionName="4.2.0" package="com.actionbarsherlock">
-
- <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="16"/>
-
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="440" android:versionName="4.4.0" package="com.actionbarsherlock">
+ <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="17"/>
+ <application/>
</manifest>
diff --git a/libraries/ActionBarSherlock/build.gradle b/libraries/ActionBarSherlock/build.gradle
index 102d66946..41bbe1d9b 100644
--- a/libraries/ActionBarSherlock/build.gradle
+++ b/libraries/ActionBarSherlock/build.gradle
@@ -1,27 +1,18 @@
-buildscript {
- repositories {
- mavenCentral()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:0.4.1'
- }
-}
-
apply plugin: 'android-library'
dependencies {
- compile files('libs/android-support-v4.jar')
+ compile 'com.android.support:support-v4:18.0.+'
}
android {
- compileSdkVersion 17
- buildToolsVersion '17'
+ compileSdkVersion 14
+ buildToolsVersion '17.0.0'
- sourceSets {
- main {
- manifest.srcFile 'AndroidManifest.xml'
- java.srcDirs = ['src']
- res.srcDirs = ['res']
- }
+ sourceSets {
+ main {
+ manifest.srcFile 'AndroidManifest.xml'
+ java.srcDirs = ['src']
+ res.srcDirs = ['res']
}
+ }
}
diff --git a/libraries/ActionBarSherlock/build.xml b/libraries/ActionBarSherlock/build.xml
deleted file mode 100644
index a10a91491..000000000
--- a/libraries/ActionBarSherlock/build.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="MainActivity" default="help">
-
- <!-- The local.properties file is created and updated by the 'android' tool.
- It contains the path to the SDK. It should *NOT* be checked into
- Version Control Systems. -->
- <property file="local.properties" />
-
- <!-- The ant.properties file can be created by you. It is only edited by the
- 'android' tool to add properties to it.
- This is the place to change some Ant specific build properties.
- Here are some properties you may want to change/update:
-
- source.dir
- The name of the source directory. Default is 'src'.
- out.dir
- The name of the output directory. Default is 'bin'.
-
- For other overridable properties, look at the beginning of the rules
- files in the SDK, at tools/ant/build.xml
-
- Properties related to the SDK location or the project target should
- be updated using the 'android' tool with the 'update' action.
-
- This file is an integral part of the build system for your
- application and should be checked into Version Control Systems.
-
- -->
- <property file="ant.properties" />
-
- <!-- if sdk.dir was not set from one of the property file, then
- get it from the ANDROID_HOME env var.
- This must be done before we load project.properties since
- the proguard config can use sdk.dir -->
- <property environment="env" />
- <condition property="sdk.dir" value="${env.ANDROID_HOME}">
- <isset property="env.ANDROID_HOME" />
- </condition>
-
- <!-- The project.properties file is created and updated by the 'android'
- tool, as well as ADT.
-
- This contains project specific properties such as project target, and library
- dependencies. Lower level build properties are stored in ant.properties
- (or in .classpath for Eclipse projects).
-
- This file is an integral part of the build system for your
- application and should be checked into Version Control Systems. -->
- <loadproperties srcFile="project.properties" />
-
- <!-- quick check on sdk.dir -->
- <fail
- message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
- unless="sdk.dir"
- />
-
- <!--
- Import per project custom build rules if present at the root of the project.
- This is the place to put custom intermediary targets such as:
- -pre-build
- -pre-compile
- -post-compile (This is typically used for code obfuscation.
- Compiled code location: ${out.classes.absolute.dir}
- If this is not done in place, override ${out.dex.input.absolute.dir})
- -post-package
- -post-build
- -pre-clean
- -->
- <import file="custom_rules.xml" optional="true" />
-
- <!-- Import the actual build file.
-
- To customize existing targets, there are two options:
- - Customize only one target:
- - copy/paste the target into this file, *before* the
- <import> task.
- - customize it to your needs.
- - Customize the whole content of build.xml
- - copy/paste the content of the rules files (minus the top node)
- into this file, replacing the <import> task.
- - customize to your needs.
-
- ***********************
- ****** IMPORTANT ******
- ***********************
- In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
- in order to avoid having your file be overridden by tools such as "android update project"
- -->
- <!-- version-tag: 1 -->
- <import file="${sdk.dir}/tools/ant/build.xml" />
-
-</project>
diff --git a/libraries/ActionBarSherlock/pom.xml b/libraries/ActionBarSherlock/pom.xml
index 3b6ce40ce..57d8d7c1c 100644
--- a/libraries/ActionBarSherlock/pom.xml
+++ b/libraries/ActionBarSherlock/pom.xml
@@ -1,148 +1,141 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
+ <modelVersion>4.0.0</modelVersion>
- <artifactId>actionbarsherlock</artifactId>
- <name>ActionBarSherlock</name>
- <packaging>apklib</packaging>
+ <parent>
+ <groupId>com.actionbarsherlock</groupId>
+ <artifactId>parent</artifactId>
+ <version>4.4.0</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
- <parent>
- <groupId>com.actionbarsherlock</groupId>
- <artifactId>parent</artifactId>
- <version>4.2.0</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
+ <artifactId>actionbarsherlock</artifactId>
+ <name>ActionBarSherlock</name>
+ <packaging>apklib</packaging>
- <dependencies>
- <dependency>
- <groupId>com.google.android</groupId>
- <artifactId>android</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>com.google.android</groupId>
- <artifactId>support-v4</artifactId>
- </dependency>
+ <dependencies>
+ <dependency>
+ <groupId>com.google.android</groupId>
+ <artifactId>android</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.google.android</groupId>
+ <artifactId>support-v4</artifactId>
+ </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.easytesting</groupId>
+ <artifactId>fest-assert-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.robolectric</groupId>
+ <artifactId>robolectric</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
- <build>
- <sourceDirectory>src</sourceDirectory>
- <testSourceDirectory>test</testSourceDirectory>
+ <build>
+ <sourceDirectory>src</sourceDirectory>
+ <testSourceDirectory>test</testSourceDirectory>
- <plugins>
- <plugin>
- <groupId>com.jayway.maven.plugins.android.generation2</groupId>
- <artifactId>android-maven-plugin</artifactId>
- <extensions>true</extensions>
- <configuration>
- <nativeLibrariesDirectory>ignored</nativeLibrariesDirectory>
- </configuration>
- </plugin>
+ <plugins>
+ <plugin>
+ <groupId>com.jayway.maven.plugins.android.generation2</groupId>
+ <artifactId>android-maven-plugin</artifactId>
+ <extensions>true</extensions>
+ </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
- <plugin>
- <groupId>com.google.code.maven-replacer-plugin</groupId>
- <artifactId>maven-replacer-plugin</artifactId>
- <version>1.4.0</version>
- <executions>
- <execution>
- <phase>process-sources</phase>
- <goals>
- <goal>replace</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <ignoreMissingFile>false</ignoreMissingFile>
- <file>target/generated-sources/r/com/actionbarsherlock/R.java</file>
- <outputFile>target/generated-sources/r/com/actionbarsherlock/R.java</outputFile>
- <regex>false</regex>
- <token>static final int</token>
- <value>static int</value>
- </configuration>
- </plugin>
+ <plugin>
+ <groupId>com.google.code.maven-replacer-plugin</groupId>
+ <artifactId>maven-replacer-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>replace</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <ignoreMissingFile>false</ignoreMissingFile>
+ <file>target/generated-sources/r/com/actionbarsherlock/R.java</file>
+ <outputFile>target/generated-sources/r/com/actionbarsherlock/R.java</outputFile>
+ <regex>false</regex>
+ <token>static final int</token>
+ <value>static int</value>
+ </configuration>
+ </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-checkstyle-plugin</artifactId>
- <configuration>
- <configLocation>../checkstyle.xml</configLocation>
- </configuration>
- <executions>
- <execution>
- <phase>verify</phase>
- <goals>
- <goal>checkstyle</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>attach-artifact</goal>
+ </goals>
+ <configuration>
+ <artifacts>
+ <artifact>
+ <type>jar</type>
+ <file>${project.build.directory}/${project.build.finalName}.jar</file>
+ </artifact>
+ <artifact>
+ <type>aar</type>
+ <file>${project.basedir}/build/libs/${project.artifactId}-${gradle.version}.aar</file>
+ </artifact>
+ </artifacts>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>attach-artifact</goal>
- </goals>
- <configuration>
- <artifacts>
- <artifact>
- <type>jar</type>
- <file>${project.build.directory}/${project.build.finalName}.jar</file>
- </artifact>
- </artifacts>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
-
- <pluginManagement>
- <plugins>
- <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
- <plugin>
- <groupId>org.eclipse.m2e</groupId>
- <artifactId>lifecycle-mapping</artifactId>
- <version>1.0.0</version>
- <configuration>
- <lifecycleMappingMetadata>
- <pluginExecutions>
- <pluginExecution>
- <pluginExecutionFilter>
- <groupId>com.google.code.maven-replacer-plugin</groupId>
- <artifactId>maven-replacer-plugin</artifactId>
- <versionRange>[1.4.0,)</versionRange>
- <goals>
- <goal>replace</goal>
- </goals>
- </pluginExecutionFilter>
- <action>
- <ignore />
- </action>
- </pluginExecution>
- </pluginExecutions>
- </lifecycleMappingMetadata>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
+ <pluginManagement>
+ <plugins>
+ <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
+ <plugin>
+ <groupId>org.eclipse.m2e</groupId>
+ <artifactId>lifecycle-mapping</artifactId>
+ <version>1.0.0</version>
+ <configuration>
+ <lifecycleMappingMetadata>
+ <pluginExecutions>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>com.google.code.maven-replacer-plugin</groupId>
+ <artifactId>maven-replacer-plugin</artifactId>
+ <versionRange>[1.4.0,)</versionRange>
+ <goals>
+ <goal>replace</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore />
+ </action>
+ </pluginExecution>
+ </pluginExecutions>
+ </lifecycleMappingMetadata>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
</project>
diff --git a/libraries/ActionBarSherlock/proguard-project.txt b/libraries/ActionBarSherlock/proguard-project.txt
deleted file mode 100644
index f2fe1559a..000000000
--- a/libraries/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/libraries/ActionBarSherlock/res/drawable-hdpi/abs__dialog_full_holo_dark.9.png b/libraries/ActionBarSherlock/res/drawable-hdpi/abs__dialog_full_holo_dark.9.png
deleted file mode 100644
index 79e56f522..000000000
--- a/libraries/ActionBarSherlock/res/drawable-hdpi/abs__dialog_full_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/drawable-hdpi/abs__dialog_full_holo_light.9.png b/libraries/ActionBarSherlock/res/drawable-hdpi/abs__dialog_full_holo_light.9.png
deleted file mode 100644
index e029f210b..000000000
--- a/libraries/ActionBarSherlock/res/drawable-hdpi/abs__dialog_full_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/drawable-hdpi/abs__ic_commit_search_api_holo_dark.png b/libraries/ActionBarSherlock/res/drawable-hdpi/abs__ic_commit_search_api_holo_dark.png
new file mode 100644
index 000000000..83f36a94c
--- /dev/null
+++ b/libraries/ActionBarSherlock/res/drawable-hdpi/abs__ic_commit_search_api_holo_dark.png
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/drawable-hdpi/abs__ic_commit_search_api_holo_light.png b/libraries/ActionBarSherlock/res/drawable-hdpi/abs__ic_commit_search_api_holo_light.png
new file mode 100644
index 000000000..a3cc21e6b
--- /dev/null
+++ b/libraries/ActionBarSherlock/res/drawable-hdpi/abs__ic_commit_search_api_holo_light.png
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/drawable-hdpi/abs__ic_search.png b/libraries/ActionBarSherlock/res/drawable-hdpi/abs__ic_search.png
index 4be72f108..bf8bd6670 100644
--- a/libraries/ActionBarSherlock/res/drawable-hdpi/abs__ic_search.png
+++ b/libraries/ActionBarSherlock/res/drawable-hdpi/abs__ic_search.png
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/drawable-hdpi/abs__toast_frame.9.png b/libraries/ActionBarSherlock/res/drawable-hdpi/abs__toast_frame.9.png
new file mode 100644
index 000000000..ad2cb5a96
--- /dev/null
+++ b/libraries/ActionBarSherlock/res/drawable-hdpi/abs__toast_frame.9.png
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/drawable-mdpi/abs__dialog_full_holo_dark.9.png b/libraries/ActionBarSherlock/res/drawable-mdpi/abs__dialog_full_holo_dark.9.png
deleted file mode 100644
index fb3660eab..000000000
--- a/libraries/ActionBarSherlock/res/drawable-mdpi/abs__dialog_full_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/drawable-mdpi/abs__dialog_full_holo_light.9.png b/libraries/ActionBarSherlock/res/drawable-mdpi/abs__dialog_full_holo_light.9.png
deleted file mode 100644
index f18050ea5..000000000
--- a/libraries/ActionBarSherlock/res/drawable-mdpi/abs__dialog_full_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/drawable-mdpi/abs__ic_commit_search_api_holo_dark.png b/libraries/ActionBarSherlock/res/drawable-mdpi/abs__ic_commit_search_api_holo_dark.png
new file mode 100644
index 000000000..844c99c22
--- /dev/null
+++ b/libraries/ActionBarSherlock/res/drawable-mdpi/abs__ic_commit_search_api_holo_dark.png
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/drawable-mdpi/abs__ic_commit_search_api_holo_light.png b/libraries/ActionBarSherlock/res/drawable-mdpi/abs__ic_commit_search_api_holo_light.png
new file mode 100644
index 000000000..86c170e97
--- /dev/null
+++ b/libraries/ActionBarSherlock/res/drawable-mdpi/abs__ic_commit_search_api_holo_light.png
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/drawable-mdpi/abs__toast_frame.9.png b/libraries/ActionBarSherlock/res/drawable-mdpi/abs__toast_frame.9.png
new file mode 100644
index 000000000..b9105deee
--- /dev/null
+++ b/libraries/ActionBarSherlock/res/drawable-mdpi/abs__toast_frame.9.png
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_full_holo_dark.9.png b/libraries/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_full_holo_dark.9.png
deleted file mode 100644
index f4970ad1c..000000000
--- a/libraries/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_full_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_full_holo_light.9.png b/libraries/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_full_holo_light.9.png
deleted file mode 100644
index 172fc3b5e..000000000
--- a/libraries/ActionBarSherlock/res/drawable-xhdpi/abs__dialog_full_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/drawable-xhdpi/abs__ic_commit_search_api_holo_dark.png b/libraries/ActionBarSherlock/res/drawable-xhdpi/abs__ic_commit_search_api_holo_dark.png
new file mode 100644
index 000000000..d8faf900a
--- /dev/null
+++ b/libraries/ActionBarSherlock/res/drawable-xhdpi/abs__ic_commit_search_api_holo_dark.png
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/drawable-xhdpi/abs__ic_commit_search_api_holo_light.png b/libraries/ActionBarSherlock/res/drawable-xhdpi/abs__ic_commit_search_api_holo_light.png
new file mode 100644
index 000000000..e7c7280ad
--- /dev/null
+++ b/libraries/ActionBarSherlock/res/drawable-xhdpi/abs__ic_commit_search_api_holo_light.png
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/drawable-xhdpi/abs__toast_frame.9.png b/libraries/ActionBarSherlock/res/drawable-xhdpi/abs__toast_frame.9.png
new file mode 100644
index 000000000..9f39a7746
--- /dev/null
+++ b/libraries/ActionBarSherlock/res/drawable-xhdpi/abs__toast_frame.9.png
Binary files differ
diff --git a/libraries/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar.xml b/libraries/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar.xml
index 040df44ab..ab4fa28d8 100644
--- a/libraries/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar.xml
+++ b/libraries/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar.xml
@@ -21,6 +21,7 @@ This is an optimized layout for a screen with the Action Bar enabled.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:fitsSystemWindows="true"
+ android:splitMotionEvents="false"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.actionbarsherlock.internal.widget.ActionBarContainer
diff --git a/libraries/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar_overlay.xml b/libraries/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar_overlay.xml
index c64ef141b..0ab3ae65c 100644
--- a/libraries/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar_overlay.xml
+++ b/libraries/ActionBarSherlock/res/layout-xlarge/abs__screen_action_bar_overlay.xml
@@ -20,7 +20,8 @@ the Action Bar enabled overlaying application content.
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:fitsSystemWindows="true">
+ android:fitsSystemWindows="true"
+ android:splitMotionEvents="false">
<com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout android:id="@+id/abs__content"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
diff --git a/libraries/ActionBarSherlock/res/layout/abs__action_bar_tab_bar_view.xml b/libraries/ActionBarSherlock/res/layout/abs__action_bar_tab_bar_view.xml
index 0d51220c9..9d8f759bc 100644
--- a/libraries/ActionBarSherlock/res/layout/abs__action_bar_tab_bar_view.xml
+++ b/libraries/ActionBarSherlock/res/layout/abs__action_bar_tab_bar_view.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
-<com.actionbarsherlock.internal.widget.IcsLinearLayout
+<com.actionbarsherlock.internal.widget.TabsLinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
style="?attr/actionBarTabBarStyle"
-/> \ No newline at end of file
+/>
diff --git a/libraries/ActionBarSherlock/res/layout/abs__dialog_title_holo.xml b/libraries/ActionBarSherlock/res/layout/abs__dialog_title_holo.xml
deleted file mode 100644
index ab2b0ee6c..000000000
--- a/libraries/ActionBarSherlock/res/layout/abs__dialog_title_holo.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2011, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
-
-This is an optimized layout for a screen, with the minimum set of features
-enabled.
--->
-
-<com.actionbarsherlock.internal.widget.FakeDialogPhoneWindow xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:fitsSystemWindows="true">
- <TextView android:id="@android:id/title" style="?android:attr/windowTitleStyle"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:minHeight="@dimen/abs__alert_dialog_title_height"
- android:paddingLeft="16dip"
- android:paddingRight="16dip"
- android:gravity="center_vertical|left" />
- <View android:id="@+id/abs__titleDivider"
- android:layout_width="fill_parent"
- android:layout_height="2dip"
- android:background="@color/abs__holo_blue_light" />
- <FrameLayout
- android:layout_width="match_parent" android:layout_height="0dp"
- android:layout_weight="1"
- android:orientation="vertical"
- android:foreground="?attr/windowContentOverlay">
- <FrameLayout android:id="@+id/abs__content"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent" />
- </FrameLayout>
-</com.actionbarsherlock.internal.widget.FakeDialogPhoneWindow>
diff --git a/libraries/ActionBarSherlock/res/layout/abs__list_menu_item_layout.xml b/libraries/ActionBarSherlock/res/layout/abs__list_menu_item_layout.xml
deleted file mode 100644
index 147f36fe8..000000000
--- a/libraries/ActionBarSherlock/res/layout/abs__list_menu_item_layout.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<com.actionbarsherlock.internal.view.menu.ListMenuItemView xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="?attr/listPreferredItemHeightSmall">
-
- <!-- Icon will be inserted here. -->
-
- <!-- The title and summary have some gap between them, and this 'group' should be centered vertically. -->
- <RelativeLayout
- android:layout_width="0dip"
- android:layout_weight="1"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:layout_marginLeft="?attr/listPreferredItemPaddingLeft"
- android:layout_marginRight="?attr/listPreferredItemPaddingRight"
- android:duplicateParentState="true">
-
- <TextView
- android:id="@+id/abs__title"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_alignParentLeft="true"
- android:textAppearance="?attr/textAppearanceListItemSmall"
- android:singleLine="true"
- android:duplicateParentState="true"
- android:ellipsize="marquee"
- android:fadingEdge="horizontal" />
-
- <TextView
- android:id="@+id/abs__shortcut"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@id/abs__title"
- android:layout_alignParentLeft="true"
- android:textAppearance="?attr/textAppearanceSmall"
- android:singleLine="true"
- android:duplicateParentState="true" />
-
- </RelativeLayout>
-
- <!-- Checkbox, and/or radio button will be inserted here. -->
-
-</com.actionbarsherlock.internal.view.menu.ListMenuItemView>
diff --git a/libraries/ActionBarSherlock/res/layout/abs__screen_action_bar.xml b/libraries/ActionBarSherlock/res/layout/abs__screen_action_bar.xml
index 1fb82fe9a..68dc7dfe5 100644
--- a/libraries/ActionBarSherlock/res/layout/abs__screen_action_bar.xml
+++ b/libraries/ActionBarSherlock/res/layout/abs__screen_action_bar.xml
@@ -22,7 +22,8 @@ This is an optimized layout for a screen with the Action Bar enabled.
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- android:fitsSystemWindows="true">
+ android:fitsSystemWindows="true"
+ android:splitMotionEvents="false">
<com.actionbarsherlock.internal.widget.ActionBarContainer
android:id="@+id/abs__action_bar_container"
android:layout_width="fill_parent"
diff --git a/libraries/ActionBarSherlock/res/layout/abs__screen_action_bar_overlay.xml b/libraries/ActionBarSherlock/res/layout/abs__screen_action_bar_overlay.xml
index 0961ef561..45cd7239f 100644
--- a/libraries/ActionBarSherlock/res/layout/abs__screen_action_bar_overlay.xml
+++ b/libraries/ActionBarSherlock/res/layout/abs__screen_action_bar_overlay.xml
@@ -22,7 +22,8 @@ the Action Bar enabled overlaying application content.
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:fitsSystemWindows="true">
+ android:fitsSystemWindows="true"
+ android:splitMotionEvents="false">
<com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout android:id="@+id/abs__content"
android:layout_width="match_parent"
android:layout_height="match_parent" />
diff --git a/libraries/ActionBarSherlock/res/layout/abs__search_view.xml b/libraries/ActionBarSherlock/res/layout/abs__search_view.xml
index 6ba319121..55d2c7345 100644
--- a/libraries/ActionBarSherlock/res/layout/abs__search_view.xml
+++ b/libraries/ActionBarSherlock/res/layout/abs__search_view.xml
@@ -40,7 +40,7 @@
<ImageView
android:id="@+id/abs__search_button"
- style="?android:attr/actionButtonStyle"
+ style="?attr/actionButtonStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
diff --git a/libraries/ActionBarSherlock/res/layout/abs__simple_dropdown_hint.xml b/libraries/ActionBarSherlock/res/layout/abs__simple_dropdown_hint.xml
index 8fc0eb12c..0088e14a7 100644
--- a/libraries/ActionBarSherlock/res/layout/abs__simple_dropdown_hint.xml
+++ b/libraries/ActionBarSherlock/res/layout/abs__simple_dropdown_hint.xml
@@ -19,7 +19,7 @@
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
- android:textAppearance="?android:attr/dropDownHintAppearance"
+ android:textAppearance="?attr/dropDownHintAppearance"
android:singleLine="true"
android:layout_marginLeft="3dip"
android:layout_marginTop="3dip"
diff --git a/libraries/ActionBarSherlock/res/values-large-mdpi-1024x600/abs__dimens.xml b/libraries/ActionBarSherlock/res/values-large-mdpi-1024x600/abs__dimens.xml
index 35910333b..d3a64c7d0 100644
--- a/libraries/ActionBarSherlock/res/values-large-mdpi-1024x600/abs__dimens.xml
+++ b/libraries/ActionBarSherlock/res/values-large-mdpi-1024x600/abs__dimens.xml
@@ -32,5 +32,5 @@
<dimen name="abs__action_bar_subtitle_bottom_margin">9dip</dimen>
<!-- Minimum width for an action button in the menu area of an action bar -->
- <dimen name="action_button_min_width">64dip</dimen>
+ <dimen name="abs__action_button_min_width">64dip</dimen>
</resources>
diff --git a/libraries/ActionBarSherlock/res/values-large/abs__dimens.xml b/libraries/ActionBarSherlock/res/values-large/abs__dimens.xml
deleted file mode 100644
index 63b12f7f3..000000000
--- a/libraries/ActionBarSherlock/res/values-large/abs__dimens.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/* //device/apps/common/assets/res/any/dimens.xml
-**
-** Copyright 2006, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources>
- <!-- The platform's desired minimum size for a dialog's width when it
- is along the major axis (that is the screen is landscape). This may
- be either a fraction or a dimension. -->
- <item type="dimen" name="abs__dialog_min_width_major">55%</item>
- <!-- The platform's desired minimum size for a dialog's width when it
- is along the minor axis (that is the screen is portrait). This may
- be either a fraction or a dimension. -->
- <item type="dimen" name="abs__dialog_min_width_minor">80%</item>
-</resources>
diff --git a/libraries/ActionBarSherlock/res/values-sw600dp/abs__dimens.xml b/libraries/ActionBarSherlock/res/values-sw600dp/abs__dimens.xml
index f67853817..175a47fec 100644
--- a/libraries/ActionBarSherlock/res/values-sw600dp/abs__dimens.xml
+++ b/libraries/ActionBarSherlock/res/values-sw600dp/abs__dimens.xml
@@ -34,5 +34,5 @@
<integer name="abs__max_action_buttons">5</integer>
<!-- Minimum width for an action button in the menu area of an action bar -->
- <dimen name="action_button_min_width">64dip</dimen>
+ <dimen name="abs__action_button_min_width">64dip</dimen>
</resources>
diff --git a/libraries/ActionBarSherlock/res/values-v14/abs__themes.xml b/libraries/ActionBarSherlock/res/values-v14/abs__themes.xml
index 5fac1ab58..75e317b4a 100644
--- a/libraries/ActionBarSherlock/res/values-v14/abs__themes.xml
+++ b/libraries/ActionBarSherlock/res/values-v14/abs__themes.xml
@@ -26,9 +26,4 @@
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
-
- <style name="Theme.Sherlock.Dialog" parent="android:Theme.Holo.Dialog">
- </style>
- <style name="Theme.Sherlock.Light.Dialog" parent="android:Theme.Holo.Light.Dialog">
- </style>
</resources>
diff --git a/libraries/ActionBarSherlock/res/values/abs__attrs.xml b/libraries/ActionBarSherlock/res/values/abs__attrs.xml
index 32631ca8d..af5873d90 100644
--- a/libraries/ActionBarSherlock/res/values/abs__attrs.xml
+++ b/libraries/ActionBarSherlock/res/values/abs__attrs.xml
@@ -181,7 +181,7 @@
<!-- Drawable used as a background for activated items. -->
<attr name="activatedBackgroundIndicator" format="reference" />
- <attr name="android:windowIsFloating" />
+ <attr name="dropDownHintAppearance" format="reference" />
</declare-styleable>
diff --git a/libraries/ActionBarSherlock/res/values/abs__colors.xml b/libraries/ActionBarSherlock/res/values/abs__colors.xml
index 625c632ff..b189e727a 100644
--- a/libraries/ActionBarSherlock/res/values/abs__colors.xml
+++ b/libraries/ActionBarSherlock/res/values/abs__colors.xml
@@ -21,7 +21,4 @@
<color name="abs__bright_foreground_holo_light">@color/abs__background_holo_dark</color>
<color name="abs__bright_foreground_disabled_holo_dark">#ff4c4c4c</color>
<color name="abs__bright_foreground_disabled_holo_light">#ffb2b2b2</color>
- <color name="abs__bright_foreground_inverse_holo_dark">@color/abs__bright_foreground_holo_light</color>
- <color name="abs__bright_foreground_inverse_holo_light">@color/abs__bright_foreground_holo_dark</color>
- <color name="abs__holo_blue_light">#ff33b5e5</color>
</resources>
diff --git a/libraries/ActionBarSherlock/res/values/abs__dimens.xml b/libraries/ActionBarSherlock/res/values/abs__dimens.xml
index 831289e07..9ded21978 100644
--- a/libraries/ActionBarSherlock/res/values/abs__dimens.xml
+++ b/libraries/ActionBarSherlock/res/values/abs__dimens.xml
@@ -36,18 +36,6 @@
<!-- Minimum width for an action button in the menu area of an action bar -->
<dimen name="abs__action_button_min_width">56dip</dimen>
- <!-- Dialog title height -->
- <dimen name="abs__alert_dialog_title_height">64dip</dimen>
-
- <!-- The platform's desired minimum size for a dialog's width when it
- is along the major axis (that is the screen is landscape). This may
- be either a fraction or a dimension. -->
- <item type="dimen" name="abs__dialog_min_width_major">65%</item>
- <!-- The platform's desired minimum size for a dialog's width when it
- is along the minor axis (that is the screen is portrait). This may
- be either a fraction or a dimension. -->
- <item type="dimen" name="abs__dialog_min_width_minor">95%</item>
-
<!-- Text padding for dropdown items -->
<dimen name="abs__dropdownitem_text_padding_left">8dip</dimen>
diff --git a/libraries/ActionBarSherlock/res/values/abs__strings.xml b/libraries/ActionBarSherlock/res/values/abs__strings.xml
index 06a2a2af4..cf0235922 100644
--- a/libraries/ActionBarSherlock/res/values/abs__strings.xml
+++ b/libraries/ActionBarSherlock/res/values/abs__strings.xml
@@ -29,10 +29,6 @@
<!-- Title for a button to expand the list of activities in ActivityChooserView [CHAR LIMIT=25] -->
<string name="abs__activity_chooser_view_see_all">See all...</string>
- <!-- Title default for a dialog showing possible activities in ActivityChooserView [CHAR LIMIT=25] -->
- <string name="abs__activity_chooser_view_dialog_title_default">Select activity</string>
- <!-- Title for a dialog showing possible activities for sharing in ShareActionProvider [CHAR LIMIT=25] -->
- <string name="abs__share_action_provider_share_with">Share with...</string>
<!-- Description of the shwoing of a popup window with activities to choose from. [CHAR LIMIT=NONE] -->
<string name="abs__activitychooserview_choose_application">Choose an application</string>
<!-- Description of the choose target button in a ShareActionProvider (share UI). [CHAR LIMIT=NONE] -->
diff --git a/libraries/ActionBarSherlock/res/values/abs__styles.xml b/libraries/ActionBarSherlock/res/values/abs__styles.xml
index 45a18c183..f86c1b823 100644
--- a/libraries/ActionBarSherlock/res/values/abs__styles.xml
+++ b/libraries/ActionBarSherlock/res/values/abs__styles.xml
@@ -302,25 +302,6 @@
- <style name="DialogWindowTitle.Sherlock" parent="Widget">
- <item name="android:maxLines">1</item>
- <item name="android:scrollHorizontally">true</item>
- <item name="android:textAppearance">@style/TextAppearance.Sherlock.DialogWindowTitle</item>
- <item name="android:minHeight">@dimen/abs__alert_dialog_title_height</item>
- <item name="android:paddingLeft">16dip</item>
- <item name="android:paddingRight">16dip</item>
- </style>
- <style name="DialogWindowTitle.Sherlock.Light" parent="Widget">
- <item name="android:maxLines">1</item>
- <item name="android:scrollHorizontally">true</item>
- <item name="android:textAppearance">@style/TextAppearance.Sherlock.Light.DialogWindowTitle</item>
- <item name="android:minHeight">@dimen/abs__alert_dialog_title_height</item>
- <item name="android:paddingLeft">16dip</item>
- <item name="android:paddingRight">16dip</item>
- </style>
-
-
-
<style name="TextAppearance.Sherlock.Widget.ActionBar.Menu" parent="Widget">
<item name="android:textSize">12sp</item>
<item name="android:textStyle">bold</item>
@@ -387,15 +368,6 @@
<item name="android:textStyle">normal</item>
</style>
- <style name="TextAppearance.Sherlock.DialogWindowTitle" parent="Widget">
- <item name="android:textSize">22sp</item>
- <item name="android:textColor">@color/abs__holo_blue_light</item>
- </style>
- <style name="TextAppearance.Sherlock.Light.DialogWindowTitle" parent="Widget">
- <item name="android:textSize">22sp</item>
- <item name="android:textColor">@color/abs__holo_blue_light</item>
- </style>
-
<style name="Sherlock.__TextAppearance.Small" parent="Widget">
<item name="android:textSize">14sp</item>
<item name="android:textColor">?android:attr/textColorSecondary</item>
@@ -409,4 +381,32 @@
<item name="android:textColor">?textColorPrimary</item>
<item name="android:textSize">14sp</item>
</style>
+
+ <style name="TextAppearance.Sherlock" parent="@android:style/TextAppearance"/>
+
+ <style name="TextAppearance.Sherlock.SearchResult">
+ <item name="android:textStyle">normal</item>
+ <item name="android:textColor">?android:attr/textColorPrimary</item>
+ <item name="android:textColorHint">?android:attr/textColorHint</item>
+ </style>
+
+ <style name="TextAppearance.Sherlock.SearchResult.Title">
+ <item name="android:textSize">18sp</item>
+ </style>
+
+ <style name="TextAppearance.Sherlock.SearchResult.Subtitle">
+ <item name="android:textSize">14sp</item>
+ <item name="android:textColor">?android:attr/textColorSecondary</item>
+ </style>
+
+ <style name="TextAppearance.Sherlock.Light.SearchResult" parent="TextAppearance.Sherlock.SearchResult"/>
+
+ <style name="TextAppearance.Sherlock.Light.SearchResult.Title">
+ <item name="android:textSize">18sp</item>
+ </style>
+
+ <style name="TextAppearance.Sherlock.Light.SearchResult.Subtitle">
+ <item name="android:textSize">14sp</item>
+ <item name="android:textColor">?android:attr/textColorSecondary</item>
+ </style>
</resources>
diff --git a/libraries/ActionBarSherlock/res/values/abs__themes.xml b/libraries/ActionBarSherlock/res/values/abs__themes.xml
index 634fa798b..6215e048f 100644
--- a/libraries/ActionBarSherlock/res/values/abs__themes.xml
+++ b/libraries/ActionBarSherlock/res/values/abs__themes.xml
@@ -9,8 +9,6 @@
</style>
<style name="Sherlock.__Theme.DarkActionBar" parent="Theme.Sherlock.Light">
</style>
- <style name="Sherlock.__Theme.Dialog" parent="android:Theme.Dialog">
- </style>
<style name="Theme.Sherlock" parent="Sherlock.__Theme">
<!-- Action bar styles (from Theme.Holo) -->
@@ -62,6 +60,8 @@
<item name="textAppearanceSmall">@style/TextAppearance.Sherlock.Small</item>
<item name="textAppearanceLargePopupMenu">@style/TextAppearance.Sherlock.Widget.PopupMenu.Large</item>
<item name="textAppearanceSmallPopupMenu">@style/TextAppearance.Sherlock.Widget.PopupMenu.Small</item>
+ <item name="textAppearanceSearchResultTitle">@style/TextAppearance.Sherlock.SearchResult.Title</item>
+ <item name="textAppearanceSearchResultSubtitle">@style/TextAppearance.Sherlock.SearchResult.Subtitle</item>
<item name="popupMenuStyle">@style/Widget.Sherlock.PopupMenu</item>
<!-- Internal --><item name="listPopupWindowStyle">@style/Widget.Sherlock.ListPopupWindow</item>
@@ -74,8 +74,12 @@
<item name="searchViewGoIcon">@drawable/abs__ic_go</item>
<item name="searchViewVoiceIcon">@drawable/abs__ic_voice_search</item>
<item name="searchAutoCompleteTextView">@style/Widget.Sherlock.SearchAutoCompleteTextView</item>
- <item name="android:dropDownHintAppearance">@style/TextAppearance.Sherlock.Widget.DropDownHint</item>
+ <item name="dropDownHintAppearance">@style/TextAppearance.Sherlock.Widget.DropDownHint</item>
+ <item name="searchViewEditQuery">@drawable/abs__ic_commit_search_api_holo_dark</item>
+ <item name="searchViewEditQueryBackground">?selectableItemBackground</item>
+ <item name="searchResultListItemHeight">58dp</item>
+ <item name="windowNoTitle">false</item>
<item name="windowActionBar">true</item>
<item name="windowActionModeOverlay">false</item>
<item name="windowContentOverlay">@null</item>
@@ -130,6 +134,8 @@
<item name="textAppearanceSmall">@style/TextAppearance.Sherlock.Light.Small</item>
<item name="textAppearanceLargePopupMenu">@style/TextAppearance.Sherlock.Light.Widget.PopupMenu.Large</item>
<item name="textAppearanceSmallPopupMenu">@style/TextAppearance.Sherlock.Light.Widget.PopupMenu.Small</item>
+ <item name="textAppearanceSearchResultTitle">@style/TextAppearance.Sherlock.Light.SearchResult.Title</item>
+ <item name="textAppearanceSearchResultSubtitle">@style/TextAppearance.Sherlock.Light.SearchResult.Subtitle</item>
<item name="popupMenuStyle">@style/Widget.Sherlock.Light.PopupMenu</item>
<!-- Internal --><item name="listPopupWindowStyle">@style/Widget.Sherlock.Light.ListPopupWindow</item>
@@ -142,8 +148,12 @@
<item name="searchViewGoIcon">@drawable/abs__ic_go_search_api_holo_light</item>
<item name="searchViewVoiceIcon">@drawable/abs__ic_voice_search_api_holo_light</item>
<item name="searchAutoCompleteTextView">@style/Widget.Sherlock.Light.SearchAutoCompleteTextView</item>
- <item name="android:dropDownHintAppearance">@style/TextAppearance.Sherlock.Widget.DropDownHint</item>
+ <item name="dropDownHintAppearance">@style/TextAppearance.Sherlock.Widget.DropDownHint</item>
+ <item name="searchViewEditQuery">@drawable/abs__ic_commit_search_api_holo_light</item>
+ <item name="searchViewEditQueryBackground">?selectableItemBackground</item>
+ <item name="searchResultListItemHeight">58dp</item>
+ <item name="windowNoTitle">false</item>
<item name="windowActionBar">true</item>
<item name="windowActionModeOverlay">false</item>
<item name="windowContentOverlay">@null</item>
@@ -171,6 +181,18 @@
<item name="actionModePopupWindowStyle">@style/Widget.Sherlock.PopupWindow.ActionMode</item>
<item name="actionModeShareDrawable">@drawable/abs__ic_menu_share_holo_dark</item>
+
+ <!-- We want the dark action bar SearchView stuff -->
+ <item name="searchDropdownBackground">@drawable/abs__search_dropdown_dark</item>
+ <item name="searchViewTextField">@drawable/abs__textfield_searchview_holo_dark</item>
+ <item name="searchViewTextFieldRight">@drawable/abs__textfield_searchview_right_holo_dark</item>
+ <item name="searchViewCloseIcon">@drawable/abs__ic_clear</item>
+ <item name="searchViewSearchIcon">@drawable/abs__ic_search</item>
+ <item name="searchViewGoIcon">@drawable/abs__ic_go</item>
+ <item name="searchViewVoiceIcon">@drawable/abs__ic_voice_search</item>
+ <item name="searchAutoCompleteTextView">@style/Widget.Sherlock.SearchAutoCompleteTextView</item>
+ <item name="dropDownHintAppearance">@style/TextAppearance.Sherlock.Widget.DropDownHint</item>
+ <item name="searchViewEditQuery">@drawable/abs__ic_commit_search_api_holo_dark</item>
</style>
@@ -182,58 +204,4 @@
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
-
-
- <style name="Theme.Sherlock.Dialog" parent="android:Theme">
- <item name="android:windowFrame">@null</item>
- <item name="android:windowTitleStyle">@style/DialogWindowTitle.Sherlock</item>
- <item name="android:windowBackground">@drawable/abs__dialog_full_holo_dark</item>
- <item name="android:windowIsFloating">true</item>
- <item name="android:windowContentOverlay">@null</item>
- <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
- <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
-
- <item name="android:windowActionBar">false</item>
- <item name="android:windowActionModeOverlay">true</item>
- <item name="android:windowCloseOnTouchOutside">true</item>
- <item name="android:windowNoTitle">true</item>
- <item name="android:backgroundDimAmount">0.6</item>
-
- <item name="android:colorBackgroundCacheHint">@null</item>
-
- <item name="android:textColorPrimary">@color/abs__primary_text_holo_dark</item>
- <item name="android:textColorPrimaryInverse">@color/abs__primary_text_holo_light</item>
-
- <item name="windowMinWidthMajor">@dimen/abs__dialog_min_width_major</item>
- <item name="windowMinWidthMinor">@dimen/abs__dialog_min_width_minor</item>
-
- <item name="windowActionBar">false</item>
- <item name="windowContentOverlay">@null</item>
- </style>
- <style name="Theme.Sherlock.Light.Dialog" parent="android:Theme.Light">
- <item name="android:windowFrame">@null</item>
- <item name="android:windowTitleStyle">@style/DialogWindowTitle.Sherlock.Light</item>
- <item name="android:windowBackground">@drawable/abs__dialog_full_holo_light</item>
- <item name="android:windowIsFloating">true</item>
- <item name="android:windowContentOverlay">@null</item>
- <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
- <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
-
- <item name="android:windowActionBar">false</item>
- <item name="android:windowActionModeOverlay">true</item>
- <item name="android:windowCloseOnTouchOutside">true</item>
- <item name="android:windowNoTitle">true</item>
- <item name="android:backgroundDimAmount">0.6</item>
-
- <item name="android:colorBackgroundCacheHint">@null</item>
-
- <item name="android:textColorPrimary">@color/abs__primary_text_holo_light</item>
- <item name="android:textColorPrimaryInverse">@color/abs__primary_text_holo_dark</item>
-
- <item name="windowMinWidthMajor">@dimen/abs__dialog_min_width_major</item>
- <item name="windowMinWidthMinor">@dimen/abs__dialog_min_width_minor</item>
-
- <item name="windowActionBar">false</item>
- <item name="windowContentOverlay">@null</item>
- </style>
</resources>
diff --git a/libraries/ActionBarSherlock/src/android/support/v4/app/Watson.java b/libraries/ActionBarSherlock/src/android/support/v4/app/Watson.java
index d93de4c6a..8c8ffb018 100644
--- a/libraries/ActionBarSherlock/src/android/support/v4/app/Watson.java
+++ b/libraries/ActionBarSherlock/src/android/support/v4/app/Watson.java
@@ -3,18 +3,17 @@ package android.support.v4.app;
import android.util.Log;
import android.view.View;
import android.view.Window;
+import com.actionbarsherlock.ActionBarSherlock;
import com.actionbarsherlock.ActionBarSherlock.OnCreatePanelMenuListener;
import com.actionbarsherlock.ActionBarSherlock.OnMenuItemSelectedListener;
import com.actionbarsherlock.ActionBarSherlock.OnPreparePanelListener;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
-
import java.util.ArrayList;
/** I'm in ur package. Stealing ur variables. */
public abstract class Watson extends FragmentActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener {
- private static final boolean DEBUG = false;
private static final String TAG = "Watson";
/** Fragment interface for menu creation callback. */
@@ -39,11 +38,11 @@ public abstract class Watson extends FragmentActivity implements OnCreatePanelMe
@Override
public boolean onCreatePanelMenu(int featureId, Menu menu) {
- if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu);
+ if (ActionBarSherlock.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);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onCreatePanelMenu] activity create result: " + result);
MenuInflater inflater = getSupportMenuInflater();
boolean show = false;
@@ -73,10 +72,10 @@ public abstract class Watson extends FragmentActivity implements OnCreatePanelMe
mCreatedMenus = newMenus;
- if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] fragments create result: " + show);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onCreatePanelMenu] fragments create result: " + show);
result |= show;
- if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result);
return result;
}
return false;
@@ -84,11 +83,11 @@ public abstract class Watson extends FragmentActivity implements OnCreatePanelMe
@Override
public boolean onPreparePanel(int featureId, View view, Menu menu) {
- if (DEBUG) Log.d(TAG, "[onPreparePanel] featureId: " + featureId + ", view: " + view + " menu: " + menu);
+ if (ActionBarSherlock.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);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onPreparePanel] activity prepare result: " + result);
boolean show = false;
if (mFragments.mAdded != null) {
@@ -101,11 +100,11 @@ public abstract class Watson extends FragmentActivity implements OnCreatePanelMe
}
}
- if (DEBUG) Log.d(TAG, "[onPreparePanel] fragments prepare result: " + show);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onPreparePanel] fragments prepare result: " + show);
result |= show;
result &= menu.hasVisibleItems();
- if (DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result);
return result;
}
return false;
@@ -113,7 +112,7 @@ public abstract class Watson extends FragmentActivity implements OnCreatePanelMe
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
- if (DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item);
if (featureId == Window.FEATURE_OPTIONS_PANEL) {
if (onOptionsItemSelected(item)) {
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/ActionBarSherlock.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/ActionBarSherlock.java
index ab160f836..2c0312725 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/ActionBarSherlock.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/ActionBarSherlock.java
@@ -1,14 +1,5 @@
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;
@@ -27,6 +18,16 @@ import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
/**
* <p>Helper for implementing the action bar design pattern across all versions
@@ -40,7 +41,7 @@ import com.actionbarsherlock.view.MenuItem;
*/
public abstract class ActionBarSherlock {
protected static final String TAG = "ActionBarSherlock";
- protected static final boolean DEBUG = false;
+ public static final boolean DEBUG = false;
private static final Class<?>[] CONSTRUCTOR_ARGS = new Class[] { Activity.class, int.class };
private static final HashMap<Implementation, Class<? extends ActionBarSherlock>> IMPLEMENTATIONS =
@@ -791,4 +792,9 @@ public abstract class ActionBarSherlock {
* @see ActionMode
*/
public abstract ActionMode startActionMode(ActionMode.Callback callback);
+
+ /**
+ * Ensure that the action bar is attached.
+ */
+ public void ensureActionBar() {}
}
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockActivity.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockActivity.java
index 7b4543640..48a92da65 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockActivity.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockActivity.java
@@ -243,6 +243,12 @@ public abstract class SherlockActivity extends Activity implements OnCreatePanel
getSherlock().requestFeature((int)featureId);
}
+ @Override
+ public View findViewById(int id) {
+ getSherlock().ensureActionBar();
+ return super.findViewById(id);
+ }
+
///////////////////////////////////////////////////////////////////////////
// Progress Indication
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockDialogFragment.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockDialogFragment.java
index a7c856bf0..c139325cd 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockDialogFragment.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockDialogFragment.java
@@ -8,9 +8,9 @@ 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;
+import static android.support.v4.app.Watson.OnCreateOptionsMenuListener;
+import static android.support.v4.app.Watson.OnOptionsItemSelectedListener;
+import static android.support.v4.app.Watson.OnPrepareOptionsMenuListener;
public class SherlockDialogFragment extends DialogFragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener {
private SherlockFragmentActivity mActivity;
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockExpandableListActivity.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockExpandableListActivity.java
index 078f9b0ca..9f4e81d14 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockExpandableListActivity.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockExpandableListActivity.java
@@ -232,6 +232,12 @@ public abstract class SherlockExpandableListActivity extends ExpandableListActiv
getSherlock().requestFeature((int)featureId);
}
+ @Override
+ public View findViewById(int id) {
+ getSherlock().ensureActionBar();
+ return super.findViewById(id);
+ }
+
///////////////////////////////////////////////////////////////////////////
// Progress Indication
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragment.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragment.java
index 0f24e9c85..0bdd068a6 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragment.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragment.java
@@ -8,9 +8,9 @@ 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;
+import static android.support.v4.app.Watson.OnCreateOptionsMenuListener;
+import static android.support.v4.app.Watson.OnOptionsItemSelectedListener;
+import static android.support.v4.app.Watson.OnPrepareOptionsMenuListener;
public class SherlockFragment extends Fragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener {
private SherlockFragmentActivity mActivity;
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragmentActivity.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragmentActivity.java
index 3d092f033..e764c170b 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragmentActivity.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragmentActivity.java
@@ -19,7 +19,6 @@ import static com.actionbarsherlock.ActionBarSherlock.OnActionModeStartedListene
/** @see {@link android.support.v4.app.Watson} */
public class SherlockFragmentActivity extends Watson implements OnActionModeStartedListener, OnActionModeFinishedListener {
- private static final boolean DEBUG = false;
private static final String TAG = "SherlockFragmentActivity";
private ActionBarSherlock mSherlock;
@@ -139,33 +138,33 @@ public class SherlockFragmentActivity extends Watson implements OnActionModeStar
///////////////////////////////////////////////////////////////////////////
public MenuInflater getSupportMenuInflater() {
- if (DEBUG) Log.d(TAG, "[getSupportMenuInflater]");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[getSupportMenuInflater]");
return getSherlock().getMenuInflater();
}
public void invalidateOptionsMenu() {
- if (DEBUG) Log.d(TAG, "[invalidateOptionsMenu]");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[invalidateOptionsMenu]");
getSherlock().dispatchInvalidateOptionsMenu();
}
public void supportInvalidateOptionsMenu() {
- if (DEBUG) Log.d(TAG, "[supportInvalidateOptionsMenu]");
+ if (ActionBarSherlock.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 (ActionBarSherlock.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);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result);
return result;
}
return super.onCreatePanelMenu(featureId, menu);
@@ -178,14 +177,14 @@ public class SherlockFragmentActivity extends Watson implements OnActionModeStar
@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 (ActionBarSherlock.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);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result);
return result;
}
return super.onPreparePanel(featureId, view, menu);
@@ -198,14 +197,14 @@ public class SherlockFragmentActivity extends Watson implements OnActionModeStar
@Override
public final boolean onMenuItemSelected(int featureId, android.view.MenuItem item) {
- if (DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item.getTitle());
if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeSelected) {
mIgnoreNativeSelected = true;
boolean result = getSherlock().dispatchOptionsItemSelected(item);
mIgnoreNativeSelected = false;
- if (DEBUG) Log.d(TAG, "[onMenuItemSelected] returning " + result);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onMenuItemSelected] returning " + result);
return result;
}
return super.onMenuItemSelected(featureId, item);
@@ -276,6 +275,12 @@ public class SherlockFragmentActivity extends Watson implements OnActionModeStar
getSherlock().requestFeature((int)featureId);
}
+ @Override
+ public View findViewById(int id) {
+ getSherlock().ensureActionBar();
+ return super.findViewById(id);
+ }
+
///////////////////////////////////////////////////////////////////////////
// Progress Indication
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListActivity.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListActivity.java
index aba6d85e8..7ced7812a 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListActivity.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListActivity.java
@@ -243,6 +243,12 @@ public abstract class SherlockListActivity extends ListActivity implements OnCre
getSherlock().requestFeature((int)featureId);
}
+ @Override
+ public View findViewById(int id) {
+ getSherlock().ensureActionBar();
+ return super.findViewById(id);
+ }
+
///////////////////////////////////////////////////////////////////////////
// Progress Indication
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListFragment.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListFragment.java
index 13ca3c49f..7c4d09511 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListFragment.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListFragment.java
@@ -8,9 +8,9 @@ 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;
+import static android.support.v4.app.Watson.OnCreateOptionsMenuListener;
+import static android.support.v4.app.Watson.OnOptionsItemSelectedListener;
+import static android.support.v4.app.Watson.OnPrepareOptionsMenuListener;
public class SherlockListFragment extends ListFragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener {
private SherlockFragmentActivity mActivity;
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockPreferenceActivity.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockPreferenceActivity.java
index bee72cb25..85c6ab214 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockPreferenceActivity.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockPreferenceActivity.java
@@ -243,6 +243,12 @@ public abstract class SherlockPreferenceActivity extends PreferenceActivity impl
getSherlock().requestFeature((int)featureId);
}
+ @Override
+ public View findViewById(int id) {
+ getSherlock().ensureActionBar();
+ return super.findViewById(id);
+ }
+
///////////////////////////////////////////////////////////////////////////
// Progress Indication
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java
index 5e69275c7..e89850203 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java
@@ -1,11 +1,5 @@
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;
@@ -28,9 +22,8 @@ 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.BuildConfig;
import com.actionbarsherlock.R;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.internal.app.ActionBarImpl;
@@ -46,6 +39,13 @@ import com.actionbarsherlock.internal.widget.IcsProgressBar;
import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import org.xmlpull.v1.XmlPullParser;
+
+import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
+import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoolean;
@ActionBarSherlock.Implementation(api = 7)
public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBuilder.Callback, com.actionbarsherlock.view.Window.Callback, MenuPresenter.Callback, android.view.MenuItem.OnMenuItemClickListener {
@@ -108,13 +108,6 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
/** Parent view in which the context action bar is displayed. */
private ActionBarContextView mActionModeView;
- /** Title view used with dialogs. */
- private TextView mTitleView;
- /** Current activity title. */
- private CharSequence mTitle = null;
- /** Whether or not this "activity" is floating (i.e., a dialog) */
- private boolean mIsFloating;
-
///////////////////////////////////////////////////////////////////////////
@@ -123,14 +116,14 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public ActionBar getActionBar() {
- if (DEBUG) Log.d(TAG, "[getActionBar]");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[getActionBar]");
initActionBar();
return aActionBar;
}
private void initActionBar() {
- if (DEBUG) Log.d(TAG, "[initActionBar]");
+ if (ActionBarSherlock.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.
@@ -157,14 +150,14 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void setTitle(CharSequence title) {
- if (DEBUG) Log.d(TAG, "[setTitle] title: " + title);
+ if (ActionBarSherlock.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 (ActionBarSherlock.DEBUG) Log.d(TAG, "[startActionMode] callback: " + callback);
if (mActionMode != null) {
mActionMode.finish();
@@ -215,7 +208,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void dispatchConfigurationChanged(Configuration newConfig) {
- if (DEBUG) Log.d(TAG, "[dispatchConfigurationChanged] newConfig: " + newConfig);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchConfigurationChanged] newConfig: " + newConfig);
if (aActionBar != null) {
aActionBar.onConfigurationChanged(newConfig);
@@ -224,7 +217,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void dispatchPostResume() {
- if (DEBUG) Log.d(TAG, "[dispatchPostResume]");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchPostResume]");
if (aActionBar != null) {
aActionBar.setShowHideAnimationEnabled(true);
@@ -233,7 +226,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void dispatchPause() {
- if (DEBUG) Log.d(TAG, "[dispatchPause]");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchPause]");
if (wActionBar != null && wActionBar.isOverflowMenuShowing()) {
wActionBar.hideOverflowMenu();
@@ -242,7 +235,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void dispatchStop() {
- if (DEBUG) Log.d(TAG, "[dispatchStop]");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchStop]");
if (aActionBar != null) {
aActionBar.setShowHideAnimationEnabled(false);
@@ -251,7 +244,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void dispatchInvalidateOptionsMenu() {
- if (DEBUG) Log.d(TAG, "[dispatchInvalidateOptionsMenu]");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchInvalidateOptionsMenu]");
Bundle savedActionViewStates = null;
if (mMenu != null) {
@@ -275,7 +268,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public boolean dispatchOpenOptionsMenu() {
- if (DEBUG) Log.d(TAG, "[dispatchOpenOptionsMenu]");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchOpenOptionsMenu]");
if (!isReservingOverflow()) {
return false;
@@ -286,7 +279,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public boolean dispatchCloseOptionsMenu() {
- if (DEBUG) Log.d(TAG, "[dispatchCloseOptionsMenu]");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchCloseOptionsMenu]");
if (!isReservingOverflow()) {
return false;
@@ -300,7 +293,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void dispatchPostCreate(Bundle savedInstanceState) {
- if (DEBUG) Log.d(TAG, "[dispatchOnPostCreate]");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchOnPostCreate]");
if (mIsDelegate) {
mIsTitleReady = true;
@@ -313,7 +306,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public boolean dispatchCreateOptionsMenu(android.view.Menu menu) {
- if (DEBUG) {
+ if (BuildConfig.DEBUG) {
Log.d(TAG, "[dispatchCreateOptionsMenu] android.view.Menu: " + menu);
Log.d(TAG, "[dispatchCreateOptionsMenu] returning true");
}
@@ -322,7 +315,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public boolean dispatchPrepareOptionsMenu(android.view.Menu menu) {
- if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] android.view.Menu: " + menu);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] android.view.Menu: " + menu);
if (mActionMode != null) {
return false;
@@ -348,7 +341,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
}
boolean result = mMenu.bindNativeOverflow(menu, this, mNativeItemMap);
- if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] returning " + result);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] returning " + result);
return result;
}
@@ -359,7 +352,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public boolean dispatchMenuOpened(int featureId, android.view.Menu menu) {
- if (DEBUG) Log.d(TAG, "[dispatchMenuOpened] featureId: " + featureId + ", menu: " + menu);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchMenuOpened] featureId: " + featureId + ", menu: " + menu);
if (featureId == Window.FEATURE_ACTION_BAR || featureId == Window.FEATURE_OPTIONS_PANEL) {
if (aActionBar != null) {
@@ -373,7 +366,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void dispatchPanelClosed(int featureId, android.view.Menu menu){
- if (DEBUG) Log.d(TAG, "[dispatchPanelClosed] featureId: " + featureId + ", menu: " + menu);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchPanelClosed] featureId: " + featureId + ", menu: " + menu);
if (featureId == Window.FEATURE_ACTION_BAR || featureId == Window.FEATURE_OPTIONS_PANEL) {
if (aActionBar != null) {
@@ -384,22 +377,16 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void dispatchTitleChanged(CharSequence title, int color) {
- if (DEBUG) Log.d(TAG, "[dispatchTitleChanged] title: " + title + ", color: " + color);
+ if (ActionBarSherlock.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);
- }
+ if ((!mIsDelegate || mIsTitleReady) && (wActionBar != null)) {
+ wActionBar.setWindowTitle(title);
}
-
- mTitle = title;
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
- if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] event: " + event);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchKeyEvent] event: " + event);
final int keyCode = event.getKeyCode();
@@ -412,7 +399,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
if (action == KeyEvent.ACTION_UP) {
mActionMode.finish();
}
- if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning true");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning true");
return true;
}
@@ -421,12 +408,12 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
if (action == KeyEvent.ACTION_UP) {
wActionBar.collapseActionView();
}
- if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning true");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning true");
return true;
}
}
- if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning false");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning false");
return false;
}
@@ -596,7 +583,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public boolean onMenuItemClick(android.view.MenuItem item) {
- if (DEBUG) Log.d(TAG, "[mNativeItemListener.onMenuItemClick] item: " + item);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[mNativeItemListener.onMenuItemClick] item: " + item);
final MenuItemImpl sherlockItem = mNativeItemMap.get(item);
if (sherlockItem != null) {
@@ -620,7 +607,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void setProgressBarVisibility(boolean visible) {
- if (DEBUG) Log.d(TAG, "[setProgressBarVisibility] visible: " + visible);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setProgressBarVisibility] visible: " + visible);
setFeatureInt(Window.FEATURE_PROGRESS, visible ? Window.PROGRESS_VISIBILITY_ON :
Window.PROGRESS_VISIBILITY_OFF);
@@ -628,7 +615,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void setProgressBarIndeterminateVisibility(boolean visible) {
- if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminateVisibility] visible: " + visible);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setProgressBarIndeterminateVisibility] visible: " + visible);
setFeatureInt(Window.FEATURE_INDETERMINATE_PROGRESS,
visible ? Window.PROGRESS_VISIBILITY_ON : Window.PROGRESS_VISIBILITY_OFF);
@@ -636,7 +623,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void setProgressBarIndeterminate(boolean indeterminate) {
- if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminate] indeterminate: " + indeterminate);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setProgressBarIndeterminate] indeterminate: " + indeterminate);
setFeatureInt(Window.FEATURE_PROGRESS,
indeterminate ? Window.PROGRESS_INDETERMINATE_ON : Window.PROGRESS_INDETERMINATE_OFF);
@@ -644,14 +631,14 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void setProgress(int progress) {
- if (DEBUG) Log.d(TAG, "[setProgress] progress: " + progress);
+ if (ActionBarSherlock.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);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setSecondaryProgress] secondaryProgress: " + secondaryProgress);
setFeatureInt(Window.FEATURE_PROGRESS,
secondaryProgress + Window.PROGRESS_SECONDARY_START);
@@ -790,23 +777,23 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
///////////////////////////////////////////////////////////////////////////
private int getFeatures() {
- if (DEBUG) Log.d(TAG, "[getFeatures] returning " + mFeatures);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[getFeatures] returning " + mFeatures);
return mFeatures;
}
@Override
public boolean hasFeature(int featureId) {
- if (DEBUG) Log.d(TAG, "[hasFeature] featureId: " + featureId);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[hasFeature] featureId: " + featureId);
boolean result = (mFeatures & (1 << featureId)) != 0;
- if (DEBUG) Log.d(TAG, "[hasFeature] returning " + result);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[hasFeature] returning " + result);
return result;
}
@Override
public boolean requestFeature(int featureId) {
- if (DEBUG) Log.d(TAG, "[requestFeature] featureId: " + featureId);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[requestFeature] featureId: " + featureId);
if (mContentParent != null) {
throw new AndroidRuntimeException("requestFeature() must be called before adding content");
@@ -829,21 +816,21 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void setUiOptions(int uiOptions) {
- if (DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions);
+ if (ActionBarSherlock.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);
+ if (ActionBarSherlock.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 (ActionBarSherlock.DEBUG) Log.d(TAG, "[setContentView] layoutResId: " + layoutResId);
if (mContentParent == null) {
installDecor();
@@ -862,7 +849,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void setContentView(View view, ViewGroup.LayoutParams params) {
- if (DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params);
if (mContentParent == null) {
installDecor();
@@ -881,7 +868,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
@Override
public void addContentView(View view, ViewGroup.LayoutParams params) {
- if (DEBUG) Log.d(TAG, "[addContentView] view: " + view + ", params: " + params);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[addContentView] view: " + view + ", params: " + params);
if (mContentParent == null) {
installDecor();
@@ -892,7 +879,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
}
private void installDecor() {
- if (DEBUG) Log.d(TAG, "[installDecor]");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[installDecor]");
if (mDecor == null) {
mDecor = (ViewGroup)mActivity.getWindow().getDecorView().findViewById(android.R.id.content);
@@ -921,84 +908,70 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
}
}
- mTitleView = (TextView)mDecor.findViewById(android.R.id.title);
- if (mTitleView != null) {
- if (hasFeature(Window.FEATURE_NO_TITLE)) {
- mTitleView.setVisibility(View.GONE);
- if (mContentParent instanceof FrameLayout) {
- ((FrameLayout)mContentParent).setForeground(null);
- }
- } else {
- mTitleView.setText(mTitle);
+ 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();
}
- } 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;
- }
+ //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.");
- }
+ 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();
- }
+ // 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]");
+ if (ActionBarSherlock.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.");
}
@@ -1022,18 +995,10 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
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;
+ if (hasFeature(Window.FEATURE_ACTION_BAR_OVERLAY)) {
+ layoutResource = R.layout.abs__screen_action_bar_overlay;
} else {
- if (hasFeature(Window.FEATURE_ACTION_BAR_OVERLAY)) {
- layoutResource = R.layout.abs__screen_action_bar_overlay;
- } else {
- layoutResource = R.layout.abs__screen_action_bar;
- }
+ layoutResource = R.layout.abs__screen_action_bar;
}
} else if (hasFeature(Window.FEATURE_ACTION_MODE_OVERLAY) && !hasFeature(Window.FEATURE_NO_TITLE)) {
layoutResource = R.layout.abs__screen_simple_overlay_action_mode;
@@ -1041,7 +1006,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
layoutResource = R.layout.abs__screen_simple;
}
- if (DEBUG) Log.d(TAG, "[generateLayout] using screen XML " + mActivity.getResources().getString(layoutResource));
+ if (ActionBarSherlock.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));
@@ -1086,7 +1051,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
int uiOptions = 0;
try {
final String thisPackage = activity.getClass().getName();
- if (DEBUG) Log.i(TAG, "Parsing AndroidManifest.xml for " + thisPackage);
+ if (ActionBarSherlock.DEBUG) Log.i(TAG, "Parsing AndroidManifest.xml for " + thisPackage);
final String packageName = activity.getApplicationInfo().packageName;
final AssetManager am = activity.createPackageContext(packageName, 0).getAssets();
@@ -1099,10 +1064,10 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
if ("application".equals(name)) {
//Check if the <application> has the attribute
- if (DEBUG) Log.d(TAG, "Got <application>");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "Got <application>");
for (int i = xml.getAttributeCount() - 1; i >= 0; i--) {
- if (DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i));
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i));
if ("uiOptions".equals(xml.getAttributeName(i))) {
uiOptions = xml.getAttributeIntValue(i, 0);
@@ -1111,13 +1076,13 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
}
} else if ("activity".equals(name)) {
//Check if the <activity> is us and has the attribute
- if (DEBUG) Log.d(TAG, "Got <activity>");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "Got <activity>");
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));
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i));
//We need both uiOptions and name attributes
String attrName = xml.getAttributeName(i);
@@ -1149,7 +1114,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
} catch (Exception e) {
e.printStackTrace();
}
- if (DEBUG) Log.i(TAG, "Returning " + Integer.toHexString(uiOptions));
+ if (ActionBarSherlock.DEBUG) Log.i(TAG, "Returning " + Integer.toHexString(uiOptions));
return uiOptions;
}
@@ -1200,4 +1165,13 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu
mActionMode = null;
}
}
+
+ @Override
+ public void ensureActionBar() {
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[ensureActionBar]");
+
+ if (mDecor == null) {
+ initActionBar();
+ }
+ }
}
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockNative.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockNative.java
index 0824d3848..5a47e0c37 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockNative.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockNative.java
@@ -1,19 +1,21 @@
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;
+import android.view.Window;
+import com.actionbarsherlock.ActionBarSherlock;
+import com.actionbarsherlock.app.ActionBar;
+import com.actionbarsherlock.internal.app.ActionBarWrapper;
+import com.actionbarsherlock.internal.view.menu.MenuItemWrapper;
+import com.actionbarsherlock.internal.view.menu.MenuWrapper;
+import com.actionbarsherlock.view.ActionMode;
+import com.actionbarsherlock.view.MenuInflater;
+import com.actionbarsherlock.view.MenuItem;
@ActionBarSherlock.Implementation(api = 14)
public class ActionBarSherlockNative extends ActionBarSherlock {
@@ -28,7 +30,7 @@ public class ActionBarSherlockNative extends ActionBarSherlock {
@Override
public ActionBar getActionBar() {
- if (DEBUG) Log.d(TAG, "[getActionBar]");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[getActionBar]");
initActionBar();
return mActionBar;
@@ -44,77 +46,89 @@ public class ActionBarSherlockNative extends ActionBarSherlock {
@Override
public void dispatchInvalidateOptionsMenu() {
- if (DEBUG) Log.d(TAG, "[dispatchInvalidateOptionsMenu]");
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchInvalidateOptionsMenu]");
mActivity.getWindow().invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL);
+
+ if (mMenu != null) mMenu.invalidate();
}
@Override
public boolean dispatchCreateOptionsMenu(android.view.Menu menu) {
- if (DEBUG) Log.d(TAG, "[dispatchCreateOptionsMenu] menu: " + menu);
+ if (ActionBarSherlock.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);
+ if (ActionBarSherlock.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);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] menu: " + menu);
final boolean result = callbackPrepareOptionsMenu(mMenu);
- if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] returning " + result);
+ if (ActionBarSherlock.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());
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchOptionsItemSelected] item: " + item.getTitleCondensed());
- final boolean result = callbackOptionsItemSelected(mMenu.findItem(item));
- if (DEBUG) Log.d(TAG, "[dispatchOptionsItemSelected] returning " + result);
+ MenuItem wrapped;
+ if (mMenu == null) {
+ if (item.getItemId() != android.R.id.home) {
+ throw new IllegalStateException("Non-home action item clicked before onCreateOptionsMenu with ID " + item.getItemId());
+ }
+ // Create a throw-away wrapper for now.
+ wrapped = new MenuItemWrapper(item);
+ } else {
+ wrapped = mMenu.findItem(item);
+ }
+ final boolean result = callbackOptionsItemSelected(wrapped);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchOptionsItemSelected] returning " + result);
return result;
}
@Override
public boolean hasFeature(int feature) {
- if (DEBUG) Log.d(TAG, "[hasFeature] feature: " + feature);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[hasFeature] feature: " + feature);
final boolean result = mActivity.getWindow().hasFeature(feature);
- if (DEBUG) Log.d(TAG, "[hasFeature] returning " + result);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[hasFeature] returning " + result);
return result;
}
@Override
public boolean requestFeature(int featureId) {
- if (DEBUG) Log.d(TAG, "[requestFeature] featureId: " + featureId);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[requestFeature] featureId: " + featureId);
final boolean result = mActivity.getWindow().requestFeature(featureId);
- if (DEBUG) Log.d(TAG, "[requestFeature] returning " + result);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[requestFeature] returning " + result);
return result;
}
@Override
public void setUiOptions(int uiOptions) {
- if (DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions);
+ if (ActionBarSherlock.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);
+ if (ActionBarSherlock.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);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setContentView] layoutResId: " + layoutResId);
mActivity.getWindow().setContentView(layoutResId);
initActionBar();
@@ -122,7 +136,7 @@ public class ActionBarSherlockNative extends ActionBarSherlock {
@Override
public void setContentView(View view, LayoutParams params) {
- if (DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params);
mActivity.getWindow().setContentView(view, params);
initActionBar();
@@ -130,7 +144,7 @@ public class ActionBarSherlockNative extends ActionBarSherlock {
@Override
public void addContentView(View view, LayoutParams params) {
- if (DEBUG) Log.d(TAG, "[addContentView] view: " + view + ", params: " + params);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[addContentView] view: " + view + ", params: " + params);
mActivity.getWindow().addContentView(view, params);
initActionBar();
@@ -138,42 +152,42 @@ public class ActionBarSherlockNative extends ActionBarSherlock {
@Override
public void setTitle(CharSequence title) {
- if (DEBUG) Log.d(TAG, "[setTitle] title: " + title);
+ if (ActionBarSherlock.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);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setProgressBarVisibility] visible: " + visible);
mActivity.setProgressBarVisibility(visible);
}
@Override
public void setProgressBarIndeterminateVisibility(boolean visible) {
- if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminateVisibility] visible: " + visible);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setProgressBarIndeterminateVisibility] visible: " + visible);
mActivity.setProgressBarIndeterminateVisibility(visible);
}
@Override
public void setProgressBarIndeterminate(boolean indeterminate) {
- if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminate] indeterminate: " + indeterminate);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setProgressBarIndeterminate] indeterminate: " + indeterminate);
mActivity.setProgressBarIndeterminate(indeterminate);
}
@Override
public void setProgress(int progress) {
- if (DEBUG) Log.d(TAG, "[setProgress] progress: " + progress);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setProgress] progress: " + progress);
mActivity.setProgress(progress);
}
@Override
public void setSecondaryProgress(int secondaryProgress) {
- if (DEBUG) Log.d(TAG, "[setSecondaryProgress] secondaryProgress: " + secondaryProgress);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setSecondaryProgress] secondaryProgress: " + secondaryProgress);
mActivity.setSecondaryProgress(secondaryProgress);
}
@@ -194,7 +208,7 @@ public class ActionBarSherlockNative extends ActionBarSherlock {
@Override
public ActionMode startActionMode(com.actionbarsherlock.view.ActionMode.Callback callback) {
- if (DEBUG) Log.d(TAG, "[startActionMode] callback: " + callback);
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "[startActionMode] callback: " + callback);
if (mActionMode != null) {
mActionMode.finish();
@@ -288,6 +302,7 @@ public class ActionBarSherlockNative extends ActionBarSherlock {
@Override
public void invalidate() {
mActionMode.invalidate();
+ if (mMenu != null) mMenu.invalidate();
}
@Override
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ResourcesCompat.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ResourcesCompat.java
index 8e1efe8c5..4a3a1ca26 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ResourcesCompat.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ResourcesCompat.java
@@ -1,11 +1,19 @@
package com.actionbarsherlock.internal;
+import android.app.Activity;
import android.content.Context;
+import android.content.res.AssetManager;
+import android.content.res.XmlResourceParser;
import android.os.Build;
import android.util.DisplayMetrics;
+import android.util.Log;
+import com.actionbarsherlock.ActionBarSherlock;
import com.actionbarsherlock.R;
+import org.xmlpull.v1.XmlPullParser;
public final class ResourcesCompat {
+ private static final String TAG = "ResourcesCompat";
+
//No instances
private ResourcesCompat() {}
@@ -15,14 +23,14 @@ public final class ResourcesCompat {
* 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
+ * @param context Context to load booleans from on 4.0+ 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) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
return context.getResources().getBoolean(id);
}
@@ -92,4 +100,83 @@ public final class ResourcesCompat {
throw new IllegalArgumentException("Unknown integer resource ID " + id);
}
+
+ /**
+ * Attempt to programmatically load the logo from the manifest file of an
+ * activity by using an XML pull parser. This should allow us to read the
+ * logo attribute regardless of the platform it is being run on.
+ *
+ * @param activity Activity instance.
+ * @return Logo resource ID.
+ */
+ public static int loadLogoFromManifest(Activity activity) {
+ int logo = 0;
+ try {
+ final String thisPackage = activity.getClass().getName();
+ if (ActionBarSherlock.DEBUG) Log.i(TAG, "Parsing AndroidManifest.xml for " + thisPackage);
+
+ final String packageName = activity.getApplicationInfo().packageName;
+ final AssetManager am = activity.createPackageContext(packageName, 0).getAssets();
+ final XmlResourceParser xml = am.openXmlResourceParser("AndroidManifest.xml");
+
+ int eventType = xml.getEventType();
+ while (eventType != XmlPullParser.END_DOCUMENT) {
+ if (eventType == XmlPullParser.START_TAG) {
+ String name = xml.getName();
+
+ if ("application".equals(name)) {
+ //Check if the <application> has the attribute
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "Got <application>");
+
+ for (int i = xml.getAttributeCount() - 1; i >= 0; i--) {
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i));
+
+ if ("logo".equals(xml.getAttributeName(i))) {
+ logo = xml.getAttributeResourceValue(i, 0);
+ break; //out of for loop
+ }
+ }
+ } else if ("activity".equals(name)) {
+ //Check if the <activity> is us and has the attribute
+ if (ActionBarSherlock.DEBUG) Log.d(TAG, "Got <activity>");
+ Integer activityLogo = null;
+ String activityPackage = null;
+ boolean isOurActivity = false;
+
+ for (int i = xml.getAttributeCount() - 1; i >= 0; i--) {
+ if (ActionBarSherlock.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 (ActionBarSherlock.DEBUG) Log.i(TAG, "Returning " + Integer.toHexString(logo));
+ return logo;
+ }
}
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarImpl.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarImpl.java
index d022a2465..14dc5a7c5 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarImpl.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarImpl.java
@@ -170,7 +170,12 @@ public class ActionBarImpl extends ActionBar {
// Older apps get the home button interaction enabled by default.
// Newer apps need to enable it explicitly.
- setHomeButtonEnabled(mContext.getApplicationInfo().targetSdkVersion < 14);
+ boolean homeButtonEnabled = mContext.getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.ICE_CREAM_SANDWICH;
+
+ // If the homeAsUp display option is set, always enable the home button.
+ homeButtonEnabled |= (mActionView.getDisplayOptions() & ActionBar.DISPLAY_HOME_AS_UP) != 0;
+
+ setHomeButtonEnabled(homeButtonEnabled);
setHasEmbeddedTabs(getResources_getBoolean(mContext,
R.bool.abs__action_bar_embed_tabs));
@@ -321,7 +326,7 @@ public class ActionBarImpl extends ActionBar {
break;
default:
throw new IllegalStateException(
- "setSelectedNavigationIndex not valid for current navigation mode");
+ "setSelectedNavigationItem not valid for current navigation mode");
}
}
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarWrapper.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarWrapper.java
index 840cb3d27..fe479d0b8 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarWrapper.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/app/ActionBarWrapper.java
@@ -26,6 +26,10 @@ public class ActionBarWrapper extends ActionBar implements android.app.ActionBar
mActionBar = activity.getActionBar();
if (mActionBar != null) {
mActionBar.addOnMenuVisibilityListener(this);
+
+ // Fixes issue #746
+ int displayOptions = mActionBar.getDisplayOptions();
+ mActionBar.setHomeButtonEnabled((displayOptions & DISPLAY_HOME_AS_UP) != 0);
}
}
@@ -132,11 +136,19 @@ public class ActionBarWrapper extends ActionBar implements android.app.ActionBar
@Override
public void setDisplayOptions(int options) {
mActionBar.setDisplayOptions(options);
+
+ // Fixes issue #746
+ mActionBar.setHomeButtonEnabled((options & DISPLAY_HOME_AS_UP) != 0);
}
@Override
public void setDisplayOptions(int options, int mask) {
mActionBar.setDisplayOptions(options, mask);
+
+ // Fixes issue #746
+ if ((mask & DISPLAY_HOME_AS_UP) != 0) {
+ mActionBar.setHomeButtonEnabled((options & DISPLAY_HOME_AS_UP) != 0);
+ }
}
@Override
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/ValueAnimator.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/ValueAnimator.java
index d8a12c688..7f0f93efd 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/ValueAnimator.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/nineoldandroids/animation/ValueAnimator.java
@@ -582,6 +582,7 @@ public class ValueAnimator extends Animator {
* active animations to process.
*/
@Override
+ @SuppressWarnings("fallthrough")
public void handleMessage(Message msg) {
boolean callAgain = true;
ArrayList<ValueAnimator> animations = sAnimations.get();
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuItemView.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuItemView.java
index dcb50f362..7d36c3b22 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuItemView.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/ActionMenuItemView.java
@@ -37,6 +37,7 @@ 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 com.actionbarsherlock.internal.widget.IcsToast;
import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoolean;
@@ -263,7 +264,7 @@ public class ActionMenuItemView extends LinearLayout
final int midy = screenPos[1] + height / 2;
final int screenWidth = context.getResources().getDisplayMetrics().widthPixels;
- Toast cheatSheet = Toast.makeText(context, mItemData.getTitle(), Toast.LENGTH_SHORT);
+ Toast cheatSheet = IcsToast.makeText(context, mItemData.getTitle(), IcsToast.LENGTH_SHORT);
if (midy < displayFrame.height()) {
// Show along the top; follow action buttons
cheatSheet.setGravity(Gravity.TOP | Gravity.RIGHT,
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuBuilder.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuBuilder.java
index 179b8f037..51bacd7be 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuBuilder.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuBuilder.java
@@ -31,6 +31,7 @@ import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
+import android.os.Build;
import android.os.Bundle;
import android.os.Parcelable;
import android.util.SparseArray;
@@ -353,6 +354,11 @@ public class MenuBuilder implements Menu {
SparseArray<Parcelable> viewStates = states.getSparseParcelableArray(
getActionViewStatesKey());
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB && viewStates == null) {
+ //Fixes Issue #652 with sdk <= 2.3.6
+ return;
+ }
+
final int itemCount = size();
for (int i = 0; i < itemCount; i++) {
final MenuItem item = getItem(i);
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuPopupHelper.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuPopupHelper.java
index f030de310..e49cd3190 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuPopupHelper.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuPopupHelper.java
@@ -115,10 +115,20 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On
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);
+ // Don't attach to the VTO unless the anchor itself is attached to avoid VTO-related leaks.
+ if (anchor.getWindowToken() != null) {
+ ViewTreeObserver vto = anchor.getViewTreeObserver();
+ if (vto != mTreeObserver) {
+ if (mTreeObserver != null && mTreeObserver.isAlive()) {
+ mTreeObserver.removeGlobalOnLayoutListener(this);
+ }
+ if ((mTreeObserver = vto) != null) {
+ vto.addOnGlobalLayoutListener(this);
+ }
+ }
+ } else if (anchor instanceof View_HasStateListenerSupport) {
+ ((View_HasStateListenerSupport) anchor).addOnAttachStateChangeListener(this);
+ }
mPopup.setAnchorView(anchor);
} else {
return false;
@@ -141,11 +151,11 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On
mPopup = null;
mMenu.close();
if (mTreeObserver != null) {
- if (!mTreeObserver.isAlive()) mTreeObserver = mAnchorView.getViewTreeObserver();
- mTreeObserver.removeGlobalOnLayoutListener(this);
+ if (mTreeObserver.isAlive()) mTreeObserver.removeGlobalOnLayoutListener(this);
mTreeObserver = null;
+ } else if (mAnchorView instanceof View_HasStateListenerSupport) {
+ ((View_HasStateListenerSupport) mAnchorView).removeOnAttachStateChangeListener(this);
}
- ((View_HasStateListenerSupport)mAnchorView).removeOnAttachStateChangeListener(this);
}
public boolean isShowing() {
@@ -207,15 +217,16 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On
@Override
public void onViewAttachedToWindow(View v) {
+ ((View_HasStateListenerSupport) v).removeOnAttachStateChangeListener(this);
+
+ // The anchor wasn't attached in tryShow(), attach to the ViewRoot VTO now.
+ if (mPopup != null && mTreeObserver == null) {
+ (mTreeObserver = v.getViewTreeObserver()).addOnGlobalLayoutListener(this);
+ }
}
@Override
public void onViewDetachedFromWindow(View v) {
- if (mTreeObserver != null) {
- if (!mTreeObserver.isAlive()) mTreeObserver = v.getViewTreeObserver();
- mTreeObserver.removeGlobalOnLayoutListener(this);
- }
- ((View_HasStateListenerSupport)v).removeOnAttachStateChangeListener(this);
}
@Override
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuWrapper.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuWrapper.java
index 3d4dd42fd..4eb8d09f4 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuWrapper.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/view/menu/MenuWrapper.java
@@ -94,11 +94,18 @@ public class MenuWrapper implements Menu {
@Override
public void removeItem(int id) {
+ mNativeMap.remove(mNativeMenu.findItem(id));
mNativeMenu.removeItem(id);
}
@Override
public void removeGroup(int groupId) {
+ for (int i = 0; i < mNativeMenu.size(); i++) {
+ final android.view.MenuItem item = mNativeMenu.getItem(i);
+ if (item.getGroupId() == groupId) {
+ mNativeMap.remove(item);
+ }
+ }
mNativeMenu.removeGroup(groupId);
}
@@ -108,6 +115,20 @@ public class MenuWrapper implements Menu {
mNativeMenu.clear();
}
+ public void invalidate() {
+ if (mNativeMap.isEmpty()) return;
+
+ final WeakHashMap<android.view.MenuItem, MenuItem> menuMapCopy = new WeakHashMap<android.view.MenuItem, MenuItem>(mNativeMap.size());
+
+ for (int i = 0; i < mNativeMenu.size(); i++) {
+ final android.view.MenuItem item = mNativeMenu.getItem(i);
+ menuMapCopy.put(item, mNativeMap.get(item));
+ }
+
+ mNativeMap.clear();
+ mNativeMap.putAll(menuMapCopy);
+ }
+
@Override
public void setGroupCheckable(int group, boolean checkable, boolean exclusive) {
mNativeMenu.setGroupCheckable(group, checkable, exclusive);
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java
index 1d9c68b37..0889825c0 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java
@@ -18,7 +18,6 @@ package com.actionbarsherlock.internal.widget;
import android.content.Context;
import android.content.res.TypedArray;
-import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
@@ -27,7 +26,6 @@ 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;
@@ -65,12 +63,7 @@ public class ActionBarContainer extends NineFrameLayout {
//Fix for issue #379
if (mStackedBackground instanceof ColorDrawable && Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
- Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
- Canvas c = new Canvas(bitmap);
- mStackedBackground.draw(c);
- int color = bitmap.getPixel(0, 0);
- bitmap.recycle();
- mStackedBackground = new IcsColorDrawable(color);
+ mStackedBackground = new IcsColorDrawable((ColorDrawable) mStackedBackground);
}
if (getId() == R.id.abs__split_action_bar) {
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarView.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarView.java
index 4636de17f..61e55b0a2 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarView.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ActionBarView.java
@@ -16,16 +16,14 @@
package com.actionbarsherlock.internal.widget;
-import org.xmlpull.v1.XmlPullParser;
+import com.actionbarsherlock.internal.ResourcesCompat;
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;
@@ -49,7 +47,6 @@ 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;
@@ -70,7 +67,6 @@ import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoo
*/
public class ActionBarView extends AbsActionBarView {
private static final String TAG = "ActionBarView";
- private static final boolean DEBUG = false;
/**
* Display options applied by default
@@ -190,7 +186,7 @@ public class ActionBarView extends AbsActionBarView {
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);
+ final int resId = ResourcesCompat.loadLogoFromManifest((Activity) context);
if (resId != 0) {
mLogo = context.getResources().getDrawable(resId);
}
@@ -265,85 +261,6 @@ public class ActionBarView extends AbsActionBarView {
mHomeLayout.setFocusable(true);
}
- /**
- * Attempt to programmatically load the logo from the manifest file of an
- * activity by using an XML pull parser. This should allow us to read the
- * logo attribute regardless of the platform it is being run on.
- *
- * @param activity Activity instance.
- * @return Logo resource ID.
- */
- private static int loadLogoFromManifest(Activity activity) {
- int logo = 0;
- try {
- final String thisPackage = activity.getClass().getName();
- if (DEBUG) Log.i(TAG, "Parsing AndroidManifest.xml for " + thisPackage);
-
- final String packageName = activity.getApplicationInfo().packageName;
- final AssetManager am = activity.createPackageContext(packageName, 0).getAssets();
- final XmlResourceParser xml = am.openXmlResourceParser("AndroidManifest.xml");
-
- int eventType = xml.getEventType();
- while (eventType != XmlPullParser.END_DOCUMENT) {
- if (eventType == XmlPullParser.START_TAG) {
- String name = xml.getName();
-
- if ("application".equals(name)) {
- //Check if the <application> has the attribute
- if (DEBUG) Log.d(TAG, "Got <application>");
-
- for (int i = xml.getAttributeCount() - 1; i >= 0; i--) {
- if (DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i));
-
- if ("logo".equals(xml.getAttributeName(i))) {
- logo = xml.getAttributeResourceValue(i, 0);
- break; //out of for loop
- }
- }
- } else if ("activity".equals(name)) {
- //Check if the <activity> is us and has the attribute
- if (DEBUG) Log.d(TAG, "Got <activity>");
- Integer activityLogo = null;
- String activityPackage = null;
- boolean isOurActivity = false;
-
- for (int i = xml.getAttributeCount() - 1; i >= 0; i--) {
- if (DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i));
-
- //We need both uiOptions and name attributes
- String attrName = xml.getAttributeName(i);
- if ("logo".equals(attrName)) {
- activityLogo = xml.getAttributeResourceValue(i, 0);
- } else if ("name".equals(attrName)) {
- activityPackage = ActionBarSherlockCompat.cleanActivityName(packageName, xml.getAttributeValue(i));
- if (!thisPackage.equals(activityPackage)) {
- break; //on to the next
- }
- isOurActivity = true;
- }
-
- //Make sure we have both attributes before processing
- if ((activityLogo != null) && (activityPackage != null)) {
- //Our activity, logo specified, override with our value
- logo = activityLogo.intValue();
- }
- }
- if (isOurActivity) {
- //If we matched our activity but it had no logo don't
- //do any more processing of the manifest
- break;
- }
- }
- }
- eventType = xml.nextToken();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- if (DEBUG) Log.i(TAG, "Returning " + Integer.toHexString(logo));
- return logo;
- }
-
/*
* Must be public so we can dispatch pre-2.2 via ActionBarImpl.
*/
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingButton.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingButton.java
index fa3698f3b..9c658d561 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingButton.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/CapitalizingButton.java
@@ -12,9 +12,14 @@ public class CapitalizingButton extends Button {
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.textAppearance
+ };
+ private static final int R_styleable_Button_textAppearance = 0;
+
+ private static final int[] R_styleable_TextAppearance = new int[] {
android.R.attr.textAllCaps
};
- private static final int R_styleable_Button_textAllCaps = 0;
+ private static final int R_styleable_TextAppearance_textAllCaps = 0;
private boolean mAllCaps;
@@ -22,14 +27,26 @@ public class CapitalizingButton extends Button {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs, R_styleable_Button);
- mAllCaps = a.getBoolean(R_styleable_Button_textAllCaps, true);
+ int ap = a.getResourceId(R_styleable_Button_textAppearance, -1);
a.recycle();
+ if (ap != -1) {
+ TypedArray appearance = context.obtainStyledAttributes(ap, R_styleable_TextAppearance);
+ if (appearance != null) {
+ mAllCaps = appearance.getBoolean(R_styleable_TextAppearance_textAllCaps, true);
+ appearance.recycle();
+ }
+ }
}
public void setTextCompat(CharSequence text) {
if (SANS_ICE_CREAM && mAllCaps && text != null) {
if (IS_GINGERBREAD) {
- setText(text.toString().toUpperCase(Locale.ROOT));
+ try {
+ setText(text.toString().toUpperCase(Locale.ROOT));
+ } catch (NoSuchFieldError e) {
+ //Some manufacturer broke Locale.ROOT. See #572.
+ setText(text.toString().toUpperCase());
+ }
} else {
setText(text.toString().toUpperCase());
}
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/FakeDialogPhoneWindow.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/FakeDialogPhoneWindow.java
deleted file mode 100644
index ad1b4f0a8..000000000
--- a/libraries/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/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsColorDrawable.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsColorDrawable.java
index a78b3f71b..3e022e63a 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsColorDrawable.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsColorDrawable.java
@@ -1,8 +1,10 @@
package com.actionbarsherlock.internal.widget;
+import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Paint;
+import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
/**
@@ -12,6 +14,14 @@ public class IcsColorDrawable extends Drawable {
private int color;
private final Paint paint = new Paint();
+ public IcsColorDrawable(ColorDrawable drawable) {
+ Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
+ Canvas c = new Canvas(bitmap);
+ drawable.draw(c);
+ this.color = bitmap.getPixel(0, 0);
+ bitmap.recycle();
+ }
+
public IcsColorDrawable(int color) {
this.color = color;
}
@@ -26,7 +36,7 @@ public class IcsColorDrawable extends Drawable {
@Override
public void setAlpha(int alpha) {
if (alpha != (color >>> 24)) {
- color = (color & 0x00FFFFFF) & (alpha << 24);
+ color = (color & 0x00FFFFFF) | (alpha << 24);
invalidateSelf();
}
}
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsLinearLayout.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsLinearLayout.java
index 4947c41df..b7c6ff318 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsLinearLayout.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsLinearLayout.java
@@ -3,10 +3,11 @@ package com.actionbarsherlock.internal.widget;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
+import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
+import android.os.Build;
import android.util.AttributeSet;
import android.view.View;
-import android.widget.LinearLayout;
import com.actionbarsherlock.internal.nineoldandroids.widget.NineLinearLayout;
@@ -20,14 +21,12 @@ import com.actionbarsherlock.internal.nineoldandroids.widget.NineLinearLayout;
public class IcsLinearLayout extends NineLinearLayout {
private static final int[] R_styleable_LinearLayout = new int[] {
/* 0 */ android.R.attr.divider,
- /* 1 */ android.R.attr.measureWithLargestChild,
/* 2 */ android.R.attr.showDividers,
/* 3 */ android.R.attr.dividerPadding,
};
private static final int LinearLayout_divider = 0;
- private static final int LinearLayout_measureWithLargestChild = 1;
- private static final int LinearLayout_showDividers = 2;
- private static final int LinearLayout_dividerPadding = 3;
+ private static final int LinearLayout_showDividers = 1;
+ private static final int LinearLayout_dividerPadding = 2;
/**
* Don't show any dividers.
@@ -53,8 +52,6 @@ public class IcsLinearLayout extends NineLinearLayout {
private int mShowDividers;
private int mDividerPadding;
- private boolean mUseLargestChild;
-
public IcsLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -63,7 +60,6 @@ public class IcsLinearLayout extends NineLinearLayout {
setDividerDrawable(a.getDrawable(/*com.android.internal.R.styleable.*/LinearLayout_divider));
mShowDividers = a.getInt(/*com.android.internal.R.styleable.*/LinearLayout_showDividers, SHOW_DIVIDER_NONE);
mDividerPadding = a.getDimensionPixelSize(/*com.android.internal.R.styleable.*/LinearLayout_dividerPadding, 0);
- mUseLargestChild = a.getBoolean(/*com.android.internal.R.styleable.*/LinearLayout_measureWithLargestChild, false);
a.recycle();
}
@@ -100,6 +96,12 @@ public class IcsLinearLayout extends NineLinearLayout {
if (divider == mDivider) {
return;
}
+
+ //Fix for issue #379
+ if (divider instanceof ColorDrawable && Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
+ divider = new IcsColorDrawable((ColorDrawable) divider);
+ }
+
mDivider = divider;
if (divider != null) {
mDividerWidth = divider.getIntrinsicWidth();
@@ -275,136 +277,4 @@ public class IcsLinearLayout extends NineLinearLayout {
}
return false;
}
-
- /**
- * When true, all children with a weight will be considered having
- * the minimum size of the largest child. If false, all children are
- * measured normally.
- *
- * @return True to measure children with a weight using the minimum
- * size of the largest child, false otherwise.
- *
- * @attr ref android.R.styleable#LinearLayout_measureWithLargestChild
- */
- public boolean isMeasureWithLargestChildEnabled() {
- return mUseLargestChild;
- }
-
- /**
- * When set to true, all children with a weight will be considered having
- * the minimum size of the largest child. If false, all children are
- * measured normally.
- *
- * Disabled by default.
- *
- * @param enabled True to measure children with a weight using the
- * minimum size of the largest child, false otherwise.
- *
- * @attr ref android.R.styleable#LinearLayout_measureWithLargestChild
- */
- public void setMeasureWithLargestChildEnabled(boolean enabled) {
- mUseLargestChild = enabled;
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-
- if (mUseLargestChild) {
- final int orientation = getOrientation();
- switch (orientation) {
- case HORIZONTAL:
- useLargestChildHorizontal();
- break;
-
- case VERTICAL:
- useLargestChildVertical();
- break;
- }
- }
- }
-
- private void useLargestChildHorizontal() {
- final int childCount = getChildCount();
-
- // Find largest child width
- int largestChildWidth = 0;
- for (int i = 0; i < childCount; i++) {
- final View child = getChildAt(i);
- largestChildWidth = Math.max(child.getMeasuredWidth(), largestChildWidth);
- }
-
- int totalWidth = 0;
- // Re-measure childs
- for (int i = 0; i < childCount; i++) {
- final View child = getChildAt(i);
-
- if (child == null || child.getVisibility() == View.GONE) {
- continue;
- }
-
- final LinearLayout.LayoutParams lp =
- (LinearLayout.LayoutParams) child.getLayoutParams();
-
- float childExtra = lp.weight;
- if (childExtra > 0) {
- child.measure(
- MeasureSpec.makeMeasureSpec(largestChildWidth,
- MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(child.getMeasuredHeight(),
- MeasureSpec.EXACTLY));
- totalWidth += largestChildWidth;
-
- } else {
- totalWidth += child.getMeasuredWidth();
- }
-
- totalWidth += lp.leftMargin + lp.rightMargin;
- }
-
- totalWidth += getPaddingLeft() + getPaddingRight();
- setMeasuredDimension(totalWidth, getMeasuredHeight());
- }
-
- private void useLargestChildVertical() {
- final int childCount = getChildCount();
-
- // Find largest child width
- int largestChildHeight = 0;
- for (int i = 0; i < childCount; i++) {
- final View child = getChildAt(i);
- largestChildHeight = Math.max(child.getMeasuredHeight(), largestChildHeight);
- }
-
- int totalHeight = 0;
- // Re-measure childs
- for (int i = 0; i < childCount; i++) {
- final View child = getChildAt(i);
-
- if (child == null || child.getVisibility() == View.GONE) {
- continue;
- }
-
- final LinearLayout.LayoutParams lp =
- (LinearLayout.LayoutParams) child.getLayoutParams();
-
- float childExtra = lp.weight;
- if (childExtra > 0) {
- child.measure(
- MeasureSpec.makeMeasureSpec(child.getMeasuredWidth(),
- MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(largestChildHeight,
- MeasureSpec.EXACTLY));
- totalHeight += largestChildHeight;
-
- } else {
- totalHeight += child.getMeasuredHeight();
- }
-
- totalHeight += lp.leftMargin + lp.rightMargin;
- }
-
- totalHeight += getPaddingLeft() + getPaddingRight();
- setMeasuredDimension(getMeasuredWidth(), totalHeight);
- }
}
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsListPopupWindow.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsListPopupWindow.java
index d13c6cea9..9ed87db2f 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsListPopupWindow.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsListPopupWindow.java
@@ -36,7 +36,7 @@ public class IcsListPopupWindow {
private static final int EXPAND_LIST_TIMEOUT = 250;
private Context mContext;
- private PopupWindow mPopup;
+ private final PopupWindowCompat mPopup;
private ListAdapter mAdapter;
private DropDownListView mDropDownList;
@@ -80,7 +80,7 @@ public class IcsListPopupWindow {
public IcsListPopupWindow(Context context, AttributeSet attrs, int defStyleAttr) {
mContext = context;
- mPopup = new PopupWindow(context, attrs, defStyleAttr);
+ mPopup = new PopupWindowCompat(context, attrs, defStyleAttr);
mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
}
@@ -88,9 +88,9 @@ public class IcsListPopupWindow {
mContext = context;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
Context wrapped = new ContextThemeWrapper(context, defStyleRes);
- mPopup = new PopupWindow(wrapped, attrs, defStyleAttr);
+ mPopup = new PopupWindowCompat(wrapped, attrs, defStyleAttr);
} else {
- mPopup = new PopupWindow(context, attrs, defStyleAttr, defStyleRes);
+ mPopup = new PopupWindowCompat(context, attrs, defStyleAttr, defStyleRes);
}
mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
}
@@ -258,6 +258,23 @@ public class IcsListPopupWindow {
mPopup.setInputMethodMode(mode);
}
+ /**
+ * Set the selected position of the list.
+ * Only valid when {@link #isShowing()} == {@code true}.
+ *
+ * @param position List position to set as selected.
+ */
+ public void setSelection(int position) {
+ DropDownListView list = mDropDownList;
+ if (isShowing() && list != null) {
+ list.mListSelectionHidden = false;
+ list.setSelection(position);
+ if (list.getChoiceMode() != ListView.CHOICE_MODE_NONE) {
+ list.setItemChecked(position, true);
+ }
+ }
+ }
+
public void clearListSelection() {
final DropDownListView list = mDropDownList;
if (list != null) {
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsToast.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsToast.java
new file mode 100644
index 000000000..042648b24
--- /dev/null
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/IcsToast.java
@@ -0,0 +1,60 @@
+
+package com.actionbarsherlock.internal.widget;
+
+import android.content.Context;
+import android.util.Log;
+import android.view.Gravity;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.actionbarsherlock.R;
+
+public class IcsToast extends Toast {
+ public static final int LENGTH_LONG = Toast.LENGTH_LONG;
+ public static final int LENGTH_SHORT = Toast.LENGTH_SHORT;
+ private static final String TAG = "Toast";
+
+ public static Toast makeText(Context context, CharSequence s, int duration) {
+ if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) {
+ return Toast.makeText(context, s, duration);
+ }
+ IcsToast toast = new IcsToast(context);
+ toast.setDuration(duration);
+ TextView view = new TextView(context);
+ view.setText(s);
+ // Original AOSP using reference on @android:color/bright_foreground_dark
+ // bright_foreground_dark - reference on @android:color/background_light
+ // background_light - 0xffffffff
+ view.setTextColor(0xffffffff);
+ view.setGravity(Gravity.CENTER);
+ view.setBackgroundResource(R.drawable.abs__toast_frame);
+ toast.setView(view);
+ return toast;
+ }
+
+ public static Toast makeText(Context context, int resId, int duration) {
+ return makeText(context, context.getResources().getString(resId), duration);
+ }
+
+ public IcsToast(Context context) {
+ super(context);
+ }
+
+ @Override
+ public void setText(CharSequence s) {
+ if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) {
+ super.setText(s);
+ return;
+ }
+ if (getView() == null) {
+ return;
+ }
+ try {
+ ((TextView) getView()).setText(s);
+ } catch (ClassCastException e) {
+ Log.e(TAG, "This Toast was not created with IcsToast.makeText", e);
+ }
+ }
+}
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/PopupWindowCompat.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/PopupWindowCompat.java
new file mode 100644
index 000000000..4c6e3720c
--- /dev/null
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/PopupWindowCompat.java
@@ -0,0 +1,178 @@
+
+package com.actionbarsherlock.internal.widget;
+
+import java.lang.reflect.Field;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewTreeObserver;
+import android.view.ViewTreeObserver.OnScrollChangedListener;
+import android.widget.PopupWindow;
+
+/**
+ * Works around bugs in the handling of {@link ViewTreeObserver} by
+ * {@link PopupWindow}.
+ * <p>
+ * <code>PopupWindow</code> registers an {@link OnScrollChangedListener} with
+ * {@link ViewTreeObserver}, but does not keep a reference to the observer
+ * instance that it has registers on. This is problematic when the anchor view
+ * used by <code>PopupWindow</code> to access the observer is detached from the
+ * window, as it will revert from the shared <code>ViewTreeObserver</code> owned
+ * by the <code>ViewRoot</code> to a floating one, meaning
+ * <code>PopupWindow</code> cannot unregister it's listener anymore and has
+ * leaked it into the global observer.
+ * <p>
+ * This class works around this issue by
+ * <ul>
+ * <li>replacing <code>PopupWindow.mOnScrollChangedListener</code> with a no-op
+ * listener so that any registration or unregistration performed by
+ * <code>PopupWindow</code> itself has no effect and causes no leaks.
+ * <li>registering the real listener only with the shared
+ * <code>ViewTreeObserver</code> and keeping a reference to it to facilitate
+ * correct unregistration. The reason for not registering on a floating observer
+ * (before a view is attached) is that there is no safe way to get a reference
+ * to the shared observer that the floating one will be merged into. This would
+ * again cause the listener to leak.
+ * </ul>
+ */
+public class PopupWindowCompat extends PopupWindow {
+
+ private static final Field superListenerField;
+ static {
+ Field f = null;
+ try {
+ f = PopupWindow.class.getDeclaredField("mOnScrollChangedListener");
+ f.setAccessible(true);
+ } catch (NoSuchFieldException e) {
+ /* ignored */
+ }
+ superListenerField = f;
+ }
+
+ private static final OnScrollChangedListener NOP = new OnScrollChangedListener() {
+ @Override
+ public void onScrollChanged() {
+ /* do nothing */
+ }
+ };
+
+ private OnScrollChangedListener mSuperScrollListener;
+ private ViewTreeObserver mViewTreeObserver;
+
+ public PopupWindowCompat() {
+ super();
+ init();
+ }
+
+ public PopupWindowCompat(Context context) {
+ super(context);
+ init();
+ }
+
+ public PopupWindowCompat(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init();
+ }
+
+ public PopupWindowCompat(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ init();
+ }
+
+ // @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+ public PopupWindowCompat(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ init();
+ }
+
+ public PopupWindowCompat(int width, int height) {
+ super(width, height);
+ init();
+ }
+
+ public PopupWindowCompat(View contentView) {
+ super(contentView);
+ init();
+ }
+
+ public PopupWindowCompat(View contentView, int width, int height, boolean focusable) {
+ super(contentView, width, height, focusable);
+ init();
+ }
+
+ public PopupWindowCompat(View contentView, int width, int height) {
+ super(contentView, width, height);
+ init();
+ }
+
+ private void init() {
+ if (superListenerField != null) {
+ try {
+ mSuperScrollListener = (OnScrollChangedListener) superListenerField.get(this);
+ superListenerField.set(this, NOP);
+ } catch (Exception e) {
+ mSuperScrollListener = null;
+ }
+ }
+ }
+
+ private void unregisterListener() {
+ // Don't do anything if we haven't managed to patch the super listener
+ if (mSuperScrollListener != null && mViewTreeObserver != null) {
+ if (mViewTreeObserver.isAlive()) {
+ mViewTreeObserver.removeOnScrollChangedListener(mSuperScrollListener);
+ }
+ mViewTreeObserver = null;
+ }
+ }
+
+ private void registerListener(View anchor) {
+ // Don't do anything if we haven't managed to patch the super listener.
+ // And don't bother attaching the listener if the anchor view isn't
+ // attached. This means we'll only have to deal with the real VTO owned
+ // by the ViewRoot.
+ if (mSuperScrollListener != null) {
+ ViewTreeObserver vto = (anchor.getWindowToken() != null) ? anchor.getViewTreeObserver()
+ : null;
+ if (vto != mViewTreeObserver) {
+ if (mViewTreeObserver != null && mViewTreeObserver.isAlive()) {
+ mViewTreeObserver.removeOnScrollChangedListener(mSuperScrollListener);
+ }
+ if ((mViewTreeObserver = vto) != null) {
+ vto.addOnScrollChangedListener(mSuperScrollListener);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void showAsDropDown(View anchor, int xoff, int yoff) {
+ super.showAsDropDown(anchor, xoff, yoff);
+ registerListener(anchor);
+ }
+
+ @Override
+ public void update(View anchor, int xoff, int yoff, int width, int height) {
+ super.update(anchor, xoff, yoff, width, height);
+ registerListener(anchor);
+ }
+
+ @Override
+ public void update(View anchor, int width, int height) {
+ super.update(anchor, width, height);
+ registerListener(anchor);
+ }
+
+ @Override
+ public void showAtLocation(View parent, int gravity, int x, int y) {
+ super.showAtLocation(parent, gravity, x, y);
+ unregisterListener();
+ }
+
+ @Override
+ public void dismiss() {
+ super.dismiss();
+ unregisterListener();
+ }
+}
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.java
index 48fb5d8b4..eb178e0de 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.java
@@ -186,7 +186,7 @@ public class ScrollingTabContainerView extends NineHorizontalScrollView
}
private IcsLinearLayout createTabLayout() {
- final IcsLinearLayout tabLayout = (IcsLinearLayout) LayoutInflater.from(getContext())
+ final TabsLinearLayout tabLayout = (TabsLinearLayout) LayoutInflater.from(getContext())
.inflate(R.layout.abs__action_bar_tab_bar_view, null);
tabLayout.setMeasureWithLargestChildEnabled(true);
tabLayout.setLayoutParams(new LinearLayout.LayoutParams(
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/TabsLinearLayout.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/TabsLinearLayout.java
new file mode 100644
index 000000000..03d09b1f6
--- /dev/null
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/widget/TabsLinearLayout.java
@@ -0,0 +1,113 @@
+package com.actionbarsherlock.internal.widget;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.LinearLayout;
+
+public class TabsLinearLayout extends IcsLinearLayout {
+ private static final int[] R_styleable_LinearLayout = new int[] {
+ /* 0 */ android.R.attr.measureWithLargestChild,
+ };
+ private static final int LinearLayout_measureWithLargestChild = 0;
+
+ private boolean mUseLargestChild;
+
+ public TabsLinearLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+
+ TypedArray a = context.obtainStyledAttributes(attrs, /*com.android.internal.R.styleable.*/R_styleable_LinearLayout);
+ mUseLargestChild = a.getBoolean(/*com.android.internal.R.styleable.*/LinearLayout_measureWithLargestChild, false);
+
+ a.recycle();
+ }
+
+ /**
+ * When true, all children with a weight will be considered having
+ * the minimum size of the largest child. If false, all children are
+ * measured normally.
+ *
+ * @return True to measure children with a weight using the minimum
+ * size of the largest child, false otherwise.
+ *
+ * @attr ref android.R.styleable#LinearLayout_measureWithLargestChild
+ */
+ public boolean isMeasureWithLargestChildEnabled() {
+ return mUseLargestChild;
+ }
+
+ /**
+ * When set to true, all children with a weight will be considered having
+ * the minimum size of the largest child. If false, all children are
+ * measured normally.
+ *
+ * Disabled by default.
+ *
+ * @param enabled True to measure children with a weight using the
+ * minimum size of the largest child, false otherwise.
+ *
+ * @attr ref android.R.styleable#LinearLayout_measureWithLargestChild
+ */
+ public void setMeasureWithLargestChildEnabled(boolean enabled) {
+ mUseLargestChild = enabled;
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+
+ final int childCount = getChildCount();
+ if (childCount <= 2) return;
+
+ final int mode = MeasureSpec.getMode(widthMeasureSpec);
+ if (mUseLargestChild && mode == MeasureSpec.UNSPECIFIED) {
+ final int orientation = getOrientation();
+ if (orientation == HORIZONTAL) {
+ useLargestChildHorizontal();
+ }
+ }
+ }
+
+ private void useLargestChildHorizontal() {
+ final int childCount = getChildCount();
+
+ // Find largest child width
+ int largestChildWidth = 0;
+ for (int i = 0; i < childCount; i++) {
+ final View child = getChildAt(i);
+ largestChildWidth = Math.max(child.getMeasuredWidth(), largestChildWidth);
+ }
+
+ int totalWidth = 0;
+ // Re-measure childs
+ for (int i = 0; i < childCount; i++) {
+ final View child = getChildAt(i);
+
+ if (child == null || child.getVisibility() == View.GONE) {
+ continue;
+ }
+
+ final LinearLayout.LayoutParams lp =
+ (LinearLayout.LayoutParams) child.getLayoutParams();
+
+ float childExtra = lp.weight;
+ if (childExtra > 0) {
+ child.measure(
+ MeasureSpec.makeMeasureSpec(largestChildWidth,
+ MeasureSpec.EXACTLY),
+ MeasureSpec.makeMeasureSpec(child.getMeasuredHeight(),
+ MeasureSpec.EXACTLY));
+ totalWidth += largestChildWidth;
+
+ } else {
+ totalWidth += child.getMeasuredWidth();
+ }
+
+ totalWidth += lp.leftMargin + lp.rightMargin;
+ }
+
+ totalWidth += getPaddingLeft() + getPaddingRight();
+ setMeasuredDimension(totalWidth, getMeasuredHeight());
+ }
+}
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserView.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserView.java
index e19ea9e9e..7eb7330e4 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserView.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/widget/ActivityChooserView.java
@@ -395,7 +395,11 @@ class ActivityChooserView extends ViewGroup implements ActivityChooserModelClien
super.onAttachedToWindow();
ActivityChooserModel dataModel = mAdapter.getDataModel();
if (dataModel != null) {
- dataModel.registerObserver(mModelDataSetOberver);
+ try {
+ dataModel.registerObserver(mModelDataSetOberver);
+ } catch (IllegalStateException e) {
+ // Related to #557.
+ }
}
mIsAttachedToWindow = true;
}
@@ -522,6 +526,9 @@ class ActivityChooserView extends ViewGroup implements ActivityChooserModelClien
mDefaultActionButtonContentDescription, label);
mDefaultActivityButton.setContentDescription(contentDescription);
}
+
+ // Work-around for #415.
+ mAdapter.setShowDefaultActivity(false, false);
} else {
mDefaultActivityButton.setVisibility(View.GONE);
}
@@ -644,7 +651,8 @@ class ActivityChooserView extends ViewGroup implements ActivityChooserModelClien
private int mMaxActivityCount = MAX_ACTIVITY_COUNT_DEFAULT;
- private boolean mShowDefaultActivity;
+ // Work-around for #415.
+ private boolean mShowDefaultActivity = true;
private boolean mHighlightDefaultActivity;
@@ -661,7 +669,11 @@ class ActivityChooserView extends ViewGroup implements ActivityChooserModelClien
}
mDataModel = dataModel;
if (dataModel != null && isShown()) {
- dataModel.registerObserver(mModelDataSetOberver);
+ try {
+ dataModel.registerObserver(mModelDataSetOberver);
+ } catch (IllegalStateException e) {
+ // Related to #557.
+ }
}
notifyDataSetChanged();
}
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/widget/SearchView.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/widget/SearchView.java
index c9e7897d4..fb8319645 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/widget/SearchView.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/widget/SearchView.java
@@ -1623,8 +1623,8 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
private void forceSuggestionQuery() {
try {
- Method before = SearchAutoComplete.class.getMethod("doBeforeTextChanged");
- Method after = SearchAutoComplete.class.getMethod("doAfterTextChanged");
+ Method before = AutoCompleteTextView.class.getDeclaredMethod("doBeforeTextChanged");
+ Method after = AutoCompleteTextView.class.getDeclaredMethod("doAfterTextChanged");
before.setAccessible(true);
after.setAccessible(true);
before.invoke(mQueryTextView);
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/widget/SuggestionsAdapter.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/widget/SuggestionsAdapter.java
index bd5cbd718..82d4f0c42 100644
--- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/widget/SuggestionsAdapter.java
+++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/widget/SuggestionsAdapter.java
@@ -66,6 +66,7 @@ class SuggestionsAdapter extends ResourceCursorAdapter implements OnClickListene
static final int REFINE_ALL = 2;
private SearchManager mSearchManager;
+ private SearchableInfo mSearchable;
private SearchView mSearchView;
private Context mProviderContext;
private WeakHashMap<String, Drawable.ConstantState> mOutsideDrawablesCache;
@@ -94,12 +95,13 @@ class SuggestionsAdapter extends ResourceCursorAdapter implements OnClickListene
//private static final long DELETE_KEY_POST_DELAY = 500L;
public SuggestionsAdapter(Context context, SearchView searchView,
- SearchableInfo mSearchable, WeakHashMap<String, Drawable.ConstantState> outsideDrawablesCache) {
+ SearchableInfo searchable, WeakHashMap<String, Drawable.ConstantState> outsideDrawablesCache) {
super(context,
R.layout.abs__search_dropdown_item_icons_2line,
null, // no initial cursor
true); // auto-requery
mSearchManager = (SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE);
+ mSearchable = searchable;
mProviderContext = mContext;
mSearchView = searchView;
@@ -199,25 +201,48 @@ class SuggestionsAdapter extends ResourceCursorAdapter implements OnClickListene
}
public Cursor getSuggestions(String query, int limit) {
+ if (mSearchable == null) {
+ return null;
+ }
+
+ String authority = mSearchable.getSuggestAuthority();
+ if (authority == null) {
+ return null;
+ }
+
Uri.Builder uriBuilder = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
+ .authority(authority)
.query("") // TODO: Remove, workaround for a bug in Uri.writeToParcel()
.fragment(""); // TODO: Remove, workaround for a bug in Uri.writeToParcel()
+ // if content path provided, insert it now
+ final String contentPath = mSearchable.getSuggestPath();
+ if (contentPath != null) {
+ uriBuilder.appendEncodedPath(contentPath);
+ }
+
// append standard suggestion query path
uriBuilder.appendPath(SearchManager.SUGGEST_URI_PATH_QUERY);
+ // get the query selection, may be null
+ String selection = mSearchable.getSuggestSelection();
// inject query, either as selection args or inline
- uriBuilder.appendPath(query);
+ String[] selArgs = null;
+ if (selection != null) { // use selection if provided
+ selArgs = new String[] { query };
+ } else { // no selection, use REST pattern
+ uriBuilder.appendPath(query);
+ }
if (limit > 0) {
- uriBuilder.appendQueryParameter(SearchManager.SUGGEST_PARAMETER_LIMIT, String.valueOf(limit));
+ uriBuilder.appendQueryParameter("limit", String.valueOf(limit));
}
Uri uri = uriBuilder.build();
// finally, make the query
- return mContext.getContentResolver().query(uri, null, null, null, null);
+ return mContext.getContentResolver().query(uri, null, selection, selArgs, null);
}
public void close() {
diff --git a/libraries/ActionBarSherlock/test/com/actionbarsherlock/internal/ManifestParsingTest.java b/libraries/ActionBarSherlock/test/com/actionbarsherlock/internal/ManifestParsingTest.java
deleted file mode 100644
index 47475c574..000000000
--- a/libraries/ActionBarSherlock/test/com/actionbarsherlock/internal/ManifestParsingTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.actionbarsherlock.internal;
-
-import org.junit.Test;
-
-import static com.actionbarsherlock.internal.ActionBarSherlockCompat.cleanActivityName;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
-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/libraries/ActionBarSherlock/test/com/actionbarsherlock/internal/ResourcesCompatTest.java b/libraries/ActionBarSherlock/test/com/actionbarsherlock/internal/ResourcesCompatTest.java
new file mode 100644
index 000000000..f621d3a96
--- /dev/null
+++ b/libraries/ActionBarSherlock/test/com/actionbarsherlock/internal/ResourcesCompatTest.java
@@ -0,0 +1,23 @@
+package com.actionbarsherlock.internal;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+import static com.actionbarsherlock.internal.ActionBarSherlockCompat.cleanActivityName;
+import static org.fest.assertions.api.Assertions.assertThat;
+
+@RunWith(RobolectricTestRunner.class)
+public class ResourcesCompatTest {
+ @Test
+ public void testCleanActivityName() {
+ assertThat(cleanActivityName("com.jakewharton.test", "com.other.package.SomeClass")) //
+ .isEqualTo("com.other.package.SomeClass");
+ assertThat(cleanActivityName("com.jakewharton.test", "com.jakewharton.test.SomeClass")) //
+ .isEqualTo("com.jakewharton.test.SomeClass");
+ assertThat(cleanActivityName("com.jakewharton.test", "SomeClass")) //
+ .isEqualTo("com.jakewharton.test.SomeClass");
+ assertThat(cleanActivityName("com.jakewharton.test", ".ui.SomeClass")) //
+ .isEqualTo("com.jakewharton.test.ui.SomeClass");
+ }
+} \ No newline at end of file