BridgeXmlPullAttributes.java revision c244feee4f2f1c8e0c466c152ab5a1ab025333d2
1ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski/* 2ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Copyright (C) 2008 The Android Open Source Project 3ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * 4ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 5ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * you may not use this file except in compliance with the License. 6ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * You may obtain a copy of the License at 7ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * 8ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 9ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * 10ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Unless required by applicable law or agreed to in writing, software 11ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 12ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * See the License for the specific language governing permissions and 14ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * limitations under the License. 15ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */ 16ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 17ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskipackage android.util; 18ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 19ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskiimport com.android.ide.common.rendering.api.RenderResources; 20ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskiimport com.android.ide.common.rendering.api.ResourceValue; 21ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskiimport com.android.internal.util.XmlUtils; 22ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskiimport com.android.layoutlib.bridge.Bridge; 23ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskiimport com.android.layoutlib.bridge.BridgeConstants; 24ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskiimport com.android.layoutlib.bridge.android.BridgeContext; 25c244feee4f2f1c8e0c466c152ab5a1ab025333d2Deepanshu Guptaimport com.android.layoutlib.bridge.impl.ResourceHelper; 26ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskiimport com.android.resources.ResourceType; 27ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 28ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskiimport org.xmlpull.v1.XmlPullParser; 29ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 30ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski/** 31ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * A correct implementation of the {@link AttributeSet} interface on top of a XmlPullParser 32ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */ 33ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskipublic class BridgeXmlPullAttributes extends XmlPullAttributes { 34ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 35ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski private final BridgeContext mContext; 36ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski private final boolean mPlatformFile; 37ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 38ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public BridgeXmlPullAttributes(XmlPullParser parser, BridgeContext context, 39ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski boolean platformFile) { 40ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski super(parser); 41ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski mContext = context; 42ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski mPlatformFile = platformFile; 43ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 44ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 45ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski /* 46ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * (non-Javadoc) 47ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * @see android.util.XmlPullAttributes#getAttributeNameResource(int) 48ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * 49ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * This methods must return com.android.internal.R.attr.<name> matching 50ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * the name of the attribute. 51ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * It returns 0 if it doesn't find anything. 52ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */ 53ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 54ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public int getAttributeNameResource(int index) { 55ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski // get the attribute name. 56ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski String name = getAttributeName(index); 57ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 58ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski // get the attribute namespace 59ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski String ns = mParser.getAttributeNamespace(index); 60ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 61ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (BridgeConstants.NS_RESOURCES.equals(ns)) { 62ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski Integer v = Bridge.getResourceId(ResourceType.ATTR, name); 63ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (v != null) { 64ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return v.intValue(); 65ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 66ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 67ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return 0; 68ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 69ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 70ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski // this is not an attribute in the android namespace, we query the customviewloader, if 71ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski // the namespaces match. 72ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (mContext.getProjectCallback().getNamespace().equals(ns)) { 73ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski Integer v = mContext.getProjectCallback().getResourceId(ResourceType.ATTR, name); 74ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (v != null) { 75ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return v.intValue(); 76ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 77ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 78ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 79ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return 0; 80ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 81ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 82ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 83ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public int getAttributeListValue(String namespace, String attribute, 84ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski String[] options, int defaultValue) { 85ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski String value = getAttributeValue(namespace, attribute); 86ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (value != null) { 87ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski ResourceValue r = getResourceValue(value); 88ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 89ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (r != null) { 90ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski value = r.getValue(); 91ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 92ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 93ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return XmlUtils.convertValueToList(value, options, defaultValue); 94ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 95ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 96ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return defaultValue; 97ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 98ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 99ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 100ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public boolean getAttributeBooleanValue(String namespace, String attribute, 101ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski boolean defaultValue) { 102ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski String value = getAttributeValue(namespace, attribute); 103ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (value != null) { 104ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski ResourceValue r = getResourceValue(value); 105ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 106ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (r != null) { 107ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski value = r.getValue(); 108ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 109ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 110ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return XmlUtils.convertValueToBoolean(value, defaultValue); 111ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 112ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 113ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return defaultValue; 114ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 115ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 116ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 117ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public int getAttributeResourceValue(String namespace, String attribute, int defaultValue) { 118ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski String value = getAttributeValue(namespace, attribute); 119ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 120ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return resolveResourceValue(value, defaultValue); 121ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 122ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 123ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 124ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public int getAttributeIntValue(String namespace, String attribute, 125ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski int defaultValue) { 126ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski String value = getAttributeValue(namespace, attribute); 127ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (value != null) { 128ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski ResourceValue r = getResourceValue(value); 129ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 130ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (r != null) { 131ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski value = r.getValue(); 132ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 133ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 134ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return XmlUtils.convertValueToInt(value, defaultValue); 135ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 136ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 137ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return defaultValue; 138ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 139ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 140ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 141ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public int getAttributeUnsignedIntValue(String namespace, String attribute, 142ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski int defaultValue) { 143ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski String value = getAttributeValue(namespace, attribute); 144ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (value != null) { 145ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski ResourceValue r = getResourceValue(value); 146ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 147ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (r != null) { 148ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski value = r.getValue(); 149ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 150ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 151ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return XmlUtils.convertValueToUnsignedInt(value, defaultValue); 152ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 153ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 154ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return defaultValue; 155ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 156ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 157ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 158ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public float getAttributeFloatValue(String namespace, String attribute, 159ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski float defaultValue) { 160ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski String s = getAttributeValue(namespace, attribute); 161ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (s != null) { 162ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski ResourceValue r = getResourceValue(s); 163ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 164ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (r != null) { 165ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski s = r.getValue(); 166ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 167ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 168ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return Float.parseFloat(s); 169ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 170ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 171ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return defaultValue; 172ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 173ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 174ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 175ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public int getAttributeListValue(int index, 176ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski String[] options, int defaultValue) { 177ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return XmlUtils.convertValueToList( 178ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski getAttributeValue(index), options, defaultValue); 179ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 180ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 181ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 182ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public boolean getAttributeBooleanValue(int index, boolean defaultValue) { 183ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski String value = getAttributeValue(index); 184ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (value != null) { 185ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski ResourceValue r = getResourceValue(value); 186ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 187ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (r != null) { 188ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski value = r.getValue(); 189ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 190ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 191ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return XmlUtils.convertValueToBoolean(value, defaultValue); 192ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 193ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 194ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return defaultValue; 195ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 196ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 197ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 198ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public int getAttributeResourceValue(int index, int defaultValue) { 199ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski String value = getAttributeValue(index); 200ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 201ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return resolveResourceValue(value, defaultValue); 202ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 203ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 204ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 205ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public int getAttributeIntValue(int index, int defaultValue) { 206ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski String value = getAttributeValue(index); 207ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (value != null) { 208ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski ResourceValue r = getResourceValue(value); 209ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 210ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (r != null) { 211ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski value = r.getValue(); 212ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 213ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 214c244feee4f2f1c8e0c466c152ab5a1ab025333d2Deepanshu Gupta if (value.charAt(0) == '#') { 215c244feee4f2f1c8e0c466c152ab5a1ab025333d2Deepanshu Gupta return ResourceHelper.getColor(value); 216c244feee4f2f1c8e0c466c152ab5a1ab025333d2Deepanshu Gupta } 217ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return XmlUtils.convertValueToInt(value, defaultValue); 218ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 219ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 220ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return defaultValue; 221ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 222ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 223ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 224ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public int getAttributeUnsignedIntValue(int index, int defaultValue) { 225ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski String value = getAttributeValue(index); 226ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (value != null) { 227ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski ResourceValue r = getResourceValue(value); 228ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 229ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (r != null) { 230ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski value = r.getValue(); 231ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 232ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 233ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return XmlUtils.convertValueToUnsignedInt(value, defaultValue); 234ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 235ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 236ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return defaultValue; 237ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 238ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 239ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 240ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public float getAttributeFloatValue(int index, float defaultValue) { 241ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski String s = getAttributeValue(index); 242ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (s != null) { 243ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski ResourceValue r = getResourceValue(s); 244ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 245ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (r != null) { 246ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski s = r.getValue(); 247ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 248ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 249ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return Float.parseFloat(s); 250ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 251ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 252ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return defaultValue; 253ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 254ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 255ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski // -- private helper methods 256ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 257ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski /** 258ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Returns a resolved {@link ResourceValue} from a given value. 259ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */ 260ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski private ResourceValue getResourceValue(String value) { 261ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski // now look for this particular value 262ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski RenderResources resources = mContext.getRenderResources(); 263ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return resources.resolveResValue(resources.findResValue(value, mPlatformFile)); 264ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 265ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 266ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski /** 267ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Resolves and return a value to its associated integer. 268ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */ 269ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski private int resolveResourceValue(String value, int defaultValue) { 270ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski ResourceValue resource = getResourceValue(value); 271ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (resource != null) { 272ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski Integer id = null; 273ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (mPlatformFile || resource.isFramework()) { 274ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski id = Bridge.getResourceId(resource.getResourceType(), resource.getName()); 275ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } else { 276ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski id = mContext.getProjectCallback().getResourceId( 277ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski resource.getResourceType(), resource.getName()); 278ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 279ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 280ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (id != null) { 281ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return id; 282ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 283ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 284ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 285ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return defaultValue; 286ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 287ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski} 288