19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 177f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetpackage android.util; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1970552fb92dbc5cb5b1d53b20f92f2a64969a50c4Xavier Ducrohetimport com.android.ide.common.rendering.api.RenderResources; 2019a021038f2f4683dddef651543d7298f5bd7218Xavier Ducrohetimport com.android.ide.common.rendering.api.ResourceValue; 21c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohetimport com.android.internal.util.XmlUtils; 22c2e9651bf386a1f7bf7fc706cf5424950570470cXavier Ducrohetimport com.android.layoutlib.bridge.Bridge; 23c2e9651bf386a1f7bf7fc706cf5424950570470cXavier Ducrohetimport com.android.layoutlib.bridge.BridgeConstants; 247f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetimport com.android.layoutlib.bridge.android.BridgeContext; 2535ea7cd4c0c89122fda0b57af20061645082ffb9Xavier Ducrohetimport com.android.resources.ResourceType; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.xmlpull.v1.XmlPullParser; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A correct implementation of the {@link AttributeSet} interface on top of a XmlPullParser 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class BridgeXmlPullAttributes extends XmlPullAttributes { 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final BridgeContext mContext; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final boolean mPlatformFile; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public BridgeXmlPullAttributes(XmlPullParser parser, BridgeContext context, 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean platformFile) { 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super(parser); 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mContext = context; 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mPlatformFile = platformFile; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (non-Javadoc) 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.util.XmlPullAttributes#getAttributeNameResource(int) 47c2e28dd74813799aad132673ff9d302657dd04edXavier Ducrohet * 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This methods must return com.android.internal.R.attr.<name> matching 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the name of the attribute. 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * It returns 0 if it doesn't find anything. 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getAttributeNameResource(int index) { 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // get the attribute name. 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String name = getAttributeName(index); 56c2e28dd74813799aad132673ff9d302657dd04edXavier Ducrohet 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // get the attribute namespace 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String ns = mParser.getAttributeNamespace(index); 59c2e28dd74813799aad132673ff9d302657dd04edXavier Ducrohet 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (BridgeConstants.NS_RESOURCES.equals(ns)) { 61b353495192ba1acce94b8ab8aeeffe3c9a3bcfacXavier Ducrohet Integer v = Bridge.getResourceId(ResourceType.ATTR, name); 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (v != null) { 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return v.intValue(); 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 65c2e28dd74813799aad132673ff9d302657dd04edXavier Ducrohet 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 68c2e28dd74813799aad132673ff9d302657dd04edXavier Ducrohet 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // this is not an attribute in the android namespace, we query the customviewloader, if 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // the namespaces match. 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mContext.getProjectCallback().getNamespace().equals(ns)) { 72b353495192ba1acce94b8ab8aeeffe3c9a3bcfacXavier Ducrohet Integer v = mContext.getProjectCallback().getResourceId(ResourceType.ATTR, name); 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (v != null) { 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return v.intValue(); 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 80c2e28dd74813799aad132673ff9d302657dd04edXavier Ducrohet 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 82c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet public int getAttributeListValue(String namespace, String attribute, 83c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet String[] options, int defaultValue) { 84c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet String value = getAttributeValue(namespace, attribute); 85c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (value != null) { 86c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet ResourceValue r = getResourceValue(value); 87c2e28dd74813799aad132673ff9d302657dd04edXavier Ducrohet 88c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (r != null) { 89c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet value = r.getValue(); 90c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 91c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 92c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return XmlUtils.convertValueToList(value, options, defaultValue); 93c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 94c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 95c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return defaultValue; 96c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 97c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 98c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet @Override 99c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet public boolean getAttributeBooleanValue(String namespace, String attribute, 100c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet boolean defaultValue) { 101c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet String value = getAttributeValue(namespace, attribute); 102c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (value != null) { 103c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet ResourceValue r = getResourceValue(value); 104c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 105c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (r != null) { 106c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet value = r.getValue(); 107c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 108c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 109c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return XmlUtils.convertValueToBoolean(value, defaultValue); 110c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 111c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 112c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return defaultValue; 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getAttributeResourceValue(String namespace, String attribute, int defaultValue) { 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String value = getAttributeValue(namespace, attribute); 118c2e28dd74813799aad132673ff9d302657dd04edXavier Ducrohet 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return resolveResourceValue(value, defaultValue); 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 122c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet @Override 123c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet public int getAttributeIntValue(String namespace, String attribute, 124c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet int defaultValue) { 125c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet String value = getAttributeValue(namespace, attribute); 126c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (value != null) { 127c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet ResourceValue r = getResourceValue(value); 128c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 129c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (r != null) { 130c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet value = r.getValue(); 131c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 132c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 133c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return XmlUtils.convertValueToInt(value, defaultValue); 134c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 135c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 136c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return defaultValue; 137c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 138c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 139c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet @Override 140c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet public int getAttributeUnsignedIntValue(String namespace, String attribute, 141c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet int defaultValue) { 142c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet String value = getAttributeValue(namespace, attribute); 143c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (value != null) { 144c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet ResourceValue r = getResourceValue(value); 145c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 146c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (r != null) { 147c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet value = r.getValue(); 148c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 149c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 150c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return XmlUtils.convertValueToUnsignedInt(value, defaultValue); 151c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 152c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 153c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return defaultValue; 154c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 155c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 156c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet @Override 157c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet public float getAttributeFloatValue(String namespace, String attribute, 158c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet float defaultValue) { 159c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet String s = getAttributeValue(namespace, attribute); 160c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (s != null) { 161c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet ResourceValue r = getResourceValue(s); 162c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 163c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (r != null) { 164c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet s = r.getValue(); 165c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 166c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 167c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return Float.parseFloat(s); 168c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 169c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 170c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return defaultValue; 171c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 172c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 173c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet @Override 174c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet public int getAttributeListValue(int index, 175c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet String[] options, int defaultValue) { 176c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return XmlUtils.convertValueToList( 177c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet getAttributeValue(index), options, defaultValue); 178c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 179c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 180c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet @Override 181c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet public boolean getAttributeBooleanValue(int index, boolean defaultValue) { 182c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet String value = getAttributeValue(index); 183c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (value != null) { 184c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet ResourceValue r = getResourceValue(value); 185c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 186c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (r != null) { 187c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet value = r.getValue(); 188c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 189c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 190c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return XmlUtils.convertValueToBoolean(value, defaultValue); 191c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 192c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 193c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return defaultValue; 194c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 195c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 196c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet @Override 197c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet public int getAttributeResourceValue(int index, int defaultValue) { 198c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet String value = getAttributeValue(index); 199c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 200c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return resolveResourceValue(value, defaultValue); 201c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 202c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 203c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet @Override 204c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet public int getAttributeIntValue(int index, int defaultValue) { 205c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet String value = getAttributeValue(index); 206c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (value != null) { 207c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet ResourceValue r = getResourceValue(value); 208c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 209c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (r != null) { 210c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet value = r.getValue(); 211c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 212c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 213c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return XmlUtils.convertValueToInt(value, defaultValue); 214c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 215c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 216c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return defaultValue; 217c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 218c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 219c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet @Override 220c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet public int getAttributeUnsignedIntValue(int index, int defaultValue) { 221c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet String value = getAttributeValue(index); 222c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (value != null) { 223c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet ResourceValue r = getResourceValue(value); 224c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 225c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (r != null) { 226c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet value = r.getValue(); 227c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 228c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 229c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return XmlUtils.convertValueToUnsignedInt(value, defaultValue); 230c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 231c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 232c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return defaultValue; 233c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 234c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 235c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet @Override 236c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet public float getAttributeFloatValue(int index, float defaultValue) { 237c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet String s = getAttributeValue(index); 238c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (s != null) { 239c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet ResourceValue r = getResourceValue(s); 240c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 241c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet if (r != null) { 242c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet s = r.getValue(); 243c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 244c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 245c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return Float.parseFloat(s); 246c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 247c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 248c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return defaultValue; 249c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 250c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 251c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet // -- private helper methods 252c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet 253c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet /** 254c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet * Returns a resolved {@link ResourceValue} from a given value. 255c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet */ 256c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet private ResourceValue getResourceValue(String value) { 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // now look for this particular value 25870552fb92dbc5cb5b1d53b20f92f2a64969a50c4Xavier Ducrohet RenderResources resources = mContext.getRenderResources(); 259c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet return resources.resolveResValue(resources.findResValue(value, mPlatformFile)); 260c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet } 261c2e28dd74813799aad132673ff9d302657dd04edXavier Ducrohet 262c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet /** 263c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet * Resolves and return a value to its associated integer. 264c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet */ 265c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet private int resolveResourceValue(String value, int defaultValue) { 266c3f979f6fecb8b46e9315fddb2a1f344bf1f1447Xavier Ducrohet ResourceValue resource = getResourceValue(value); 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (resource != null) { 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Integer id = null; 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mPlatformFile || resource.isFramework()) { 270b353495192ba1acce94b8ab8aeeffe3c9a3bcfacXavier Ducrohet id = Bridge.getResourceId(resource.getResourceType(), resource.getName()); 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 272b353495192ba1acce94b8ab8aeeffe3c9a3bcfacXavier Ducrohet id = mContext.getProjectCallback().getResourceId( 27335ea7cd4c0c89122fda0b57af20061645082ffb9Xavier Ducrohet resource.getResourceType(), resource.getName()); 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (id != null) { 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return id; 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 280c2e28dd74813799aad132673ff9d302657dd04edXavier Ducrohet 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return defaultValue; 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 284