diff options
author | Tor Norbye <tnorbye@google.com> | 2013-01-04 16:57:08 -0800 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2013-01-04 16:59:51 -0800 |
commit | dca7fa6d4f26aba753ff54991862ae224f213119 (patch) | |
tree | 6616fed9cff29a0674ae1e4acb80dae390ee01d7 /sdk_common | |
parent | fd9dfb6ab67dbfce76501f48c0be7db7990b6c9d (diff) | |
download | sdk-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-x | sdk_common/src/com/android/ide/common/resources/ResourceRepository.java | 31 |
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(':'); |