aboutsummaryrefslogtreecommitdiffstats
path: root/sdk_common
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2013-01-04 16:57:08 -0800
committerTor Norbye <tnorbye@google.com>2013-01-04 16:59:51 -0800
commitdca7fa6d4f26aba753ff54991862ae224f213119 (patch)
tree6616fed9cff29a0674ae1e4acb80dae390ee01d7 /sdk_common
parentfd9dfb6ab67dbfce76501f48c0be7db7990b6c9d (diff)
downloadsdk-dca7fa6d4f26aba753ff54991862ae224f213119.zip
sdk-dca7fa6d4f26aba753ff54991862ae224f213119.tar.gz
sdk-dca7fa6d4f26aba753ff54991862ae224f213119.tar.bz2
Handle theme resources in ResourceRepository.hasResourceItem
This adds the same URL rewriting logic as is already used in parseResource in the same class Change-Id: Ifb71111030e4fd19b50f2b3213d486bef8b14f64
Diffstat (limited to 'sdk_common')
-rwxr-xr-xsdk_common/src/com/android/ide/common/resources/ResourceRepository.java31
1 files changed, 30 insertions, 1 deletions
diff --git a/sdk_common/src/com/android/ide/common/resources/ResourceRepository.java b/sdk_common/src/com/android/ide/common/resources/ResourceRepository.java
index 542409d..a3b20ed 100755
--- a/sdk_common/src/com/android/ide/common/resources/ResourceRepository.java
+++ b/sdk_common/src/com/android/ide/common/resources/ResourceRepository.java
@@ -242,6 +242,35 @@ public abstract class ResourceRepository {
* @return true if the resource is known
*/
public boolean hasResourceItem(@NonNull String url) {
+ // Handle theme references
+ if (url.startsWith(PREFIX_THEME_REF)) {
+ String remainder = url.substring(PREFIX_THEME_REF.length());
+ if (url.startsWith(ATTR_REF_PREFIX)) {
+ url = PREFIX_RESOURCE_REF + url.substring(PREFIX_THEME_REF.length());
+ return hasResourceItem(url);
+ }
+ int colon = url.indexOf(':');
+ if (colon != -1) {
+ // Convert from ?android:progressBarStyleBig to ?android:attr/progressBarStyleBig
+ if (remainder.indexOf('/', colon) == -1) {
+ remainder = remainder.substring(0, colon) + RESOURCE_CLZ_ATTR + '/'
+ + remainder.substring(colon);
+ }
+ url = PREFIX_RESOURCE_REF + remainder;
+ return hasResourceItem(url);
+ } else {
+ int slash = url.indexOf('/');
+ if (slash == -1) {
+ url = PREFIX_RESOURCE_REF + RESOURCE_CLZ_ATTR + '/' + remainder;
+ return hasResourceItem(url);
+ }
+ }
+ }
+
+ if (!url.startsWith(PREFIX_RESOURCE_REF)) {
+ return false;
+ }
+
assert url.startsWith("@") || url.startsWith("?") : url;
ensureInitialized();
@@ -881,7 +910,7 @@ public abstract class ResourceRepository {
if (url.startsWith(PREFIX_THEME_REF)) {
String remainder = url.substring(PREFIX_THEME_REF.length());
if (url.startsWith(ATTR_REF_PREFIX)) {
- url = PREFIX_RESOURCE_REF + url.substring(1);
+ url = PREFIX_RESOURCE_REF + url.substring(PREFIX_THEME_REF.length());
return parseResource(url);
}
int colon = url.indexOf(':');