1282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski/* 2282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Copyright (C) 2008 The Android Open Source Project 3282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 4282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 5282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * you may not use this file except in compliance with the License. 6282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * You may obtain a copy of the License at 7282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 8282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 9282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 10282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Unless required by applicable law or agreed to in writing, software 11282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 12282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * See the License for the specific language governing permissions and 14282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * limitations under the License. 15282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 16282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 17282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipackage android.util; 18282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 19282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport com.android.ide.common.rendering.api.RenderResources; 20282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport com.android.ide.common.rendering.api.ResourceValue; 21282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport com.android.internal.util.XmlUtils; 22282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport com.android.layoutlib.bridge.Bridge; 23282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport com.android.layoutlib.bridge.BridgeConstants; 24282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport com.android.layoutlib.bridge.android.BridgeContext; 2599d90a621084ec0f799dc7840cc05565a0589031Deepanshu Guptaimport com.android.layoutlib.bridge.impl.ResourceHelper; 26282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport com.android.resources.ResourceType; 27282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 28282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport org.xmlpull.v1.XmlPullParser; 29282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 30282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski/** 31282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * A correct implementation of the {@link AttributeSet} interface on top of a XmlPullParser 32282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 33282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic class BridgeXmlPullAttributes extends XmlPullAttributes { 34282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 35282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski private final BridgeContext mContext; 36282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski private final boolean mPlatformFile; 37282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 38282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public BridgeXmlPullAttributes(XmlPullParser parser, BridgeContext context, 39282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski boolean platformFile) { 40282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski super(parser); 41282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mContext = context; 42282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mPlatformFile = platformFile; 43282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 44282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 45282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 46282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * (non-Javadoc) 47282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @see android.util.XmlPullAttributes#getAttributeNameResource(int) 48282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 49282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * This methods must return com.android.internal.R.attr.<name> matching 50282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * the name of the attribute. 51282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * It returns 0 if it doesn't find anything. 52282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 53282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 54282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getAttributeNameResource(int index) { 55282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // get the attribute name. 56282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String name = getAttributeName(index); 57282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 58282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // get the attribute namespace 59282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String ns = mParser.getAttributeNamespace(index); 60282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 61282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (BridgeConstants.NS_RESOURCES.equals(ns)) { 62282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Integer v = Bridge.getResourceId(ResourceType.ATTR, name); 63282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (v != null) { 64282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return v.intValue(); 65282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 66282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 67282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return 0; 68282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 69282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 70282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // this is not an attribute in the android namespace, we query the customviewloader, if 71282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // the namespaces match. 72282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (mContext.getProjectCallback().getNamespace().equals(ns)) { 73282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Integer v = mContext.getProjectCallback().getResourceId(ResourceType.ATTR, name); 74282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (v != null) { 75282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return v.intValue(); 76282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 77282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 78282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 79282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return 0; 80282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 81282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 82282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 83282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getAttributeListValue(String namespace, String attribute, 84282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String[] options, int defaultValue) { 85282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String value = getAttributeValue(namespace, attribute); 86282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (value != null) { 87282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ResourceValue r = getResourceValue(value); 88282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 89282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (r != null) { 90282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski value = r.getValue(); 91282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 92282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 93282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return XmlUtils.convertValueToList(value, options, defaultValue); 94282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 95282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 96282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return defaultValue; 97282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 98282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 99282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 100282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public boolean getAttributeBooleanValue(String namespace, String attribute, 101282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski boolean defaultValue) { 102282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String value = getAttributeValue(namespace, attribute); 103282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (value != null) { 104282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ResourceValue r = getResourceValue(value); 105282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 106282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (r != null) { 107282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski value = r.getValue(); 108282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 109282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 110282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return XmlUtils.convertValueToBoolean(value, defaultValue); 111282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 112282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 113282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return defaultValue; 114282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 115282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 116282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 117282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getAttributeResourceValue(String namespace, String attribute, int defaultValue) { 118282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String value = getAttributeValue(namespace, attribute); 119282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 120282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return resolveResourceValue(value, defaultValue); 121282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 122282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 123282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 124282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getAttributeIntValue(String namespace, String attribute, 125282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int defaultValue) { 126282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String value = getAttributeValue(namespace, attribute); 127282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (value != null) { 128282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ResourceValue r = getResourceValue(value); 129282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 130282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (r != null) { 131282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski value = r.getValue(); 132282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 133282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 134282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return XmlUtils.convertValueToInt(value, defaultValue); 135282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 136282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 137282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return defaultValue; 138282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 139282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 140282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 141282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getAttributeUnsignedIntValue(String namespace, String attribute, 142282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int defaultValue) { 143282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String value = getAttributeValue(namespace, attribute); 144282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (value != null) { 145282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ResourceValue r = getResourceValue(value); 146282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 147282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (r != null) { 148282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski value = r.getValue(); 149282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 150282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 151282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return XmlUtils.convertValueToUnsignedInt(value, defaultValue); 152282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 153282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 154282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return defaultValue; 155282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 156282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 157282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 158282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public float getAttributeFloatValue(String namespace, String attribute, 159282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski float defaultValue) { 160282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String s = getAttributeValue(namespace, attribute); 161282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (s != null) { 162282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ResourceValue r = getResourceValue(s); 163282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 164282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (r != null) { 165282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski s = r.getValue(); 166282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 167282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 168282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return Float.parseFloat(s); 169282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 170282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 171282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return defaultValue; 172282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 173282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 174282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 175282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getAttributeListValue(int index, 176282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String[] options, int defaultValue) { 177282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return XmlUtils.convertValueToList( 178282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski getAttributeValue(index), options, defaultValue); 179282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 180282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 181282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 182282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public boolean getAttributeBooleanValue(int index, boolean defaultValue) { 183282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String value = getAttributeValue(index); 184282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (value != null) { 185282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ResourceValue r = getResourceValue(value); 186282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 187282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (r != null) { 188282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski value = r.getValue(); 189282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 190282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 191282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return XmlUtils.convertValueToBoolean(value, defaultValue); 192282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 193282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 194282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return defaultValue; 195282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 196282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 197282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 198282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getAttributeResourceValue(int index, int defaultValue) { 199282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String value = getAttributeValue(index); 200282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 201282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return resolveResourceValue(value, defaultValue); 202282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 203282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 204282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 205282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getAttributeIntValue(int index, int defaultValue) { 206282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String value = getAttributeValue(index); 207282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (value != null) { 208282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ResourceValue r = getResourceValue(value); 209282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 210282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (r != null) { 211282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski value = r.getValue(); 212282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 213282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 21499d90a621084ec0f799dc7840cc05565a0589031Deepanshu Gupta if (value.charAt(0) == '#') { 21599d90a621084ec0f799dc7840cc05565a0589031Deepanshu Gupta return ResourceHelper.getColor(value); 21699d90a621084ec0f799dc7840cc05565a0589031Deepanshu Gupta } 217282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return XmlUtils.convertValueToInt(value, defaultValue); 218282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 219282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 220282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return defaultValue; 221282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 222282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 223282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 224282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getAttributeUnsignedIntValue(int index, int defaultValue) { 225282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String value = getAttributeValue(index); 226282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (value != null) { 227282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ResourceValue r = getResourceValue(value); 228282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 229282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (r != null) { 230282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski value = r.getValue(); 231282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 232282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 233282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return XmlUtils.convertValueToUnsignedInt(value, defaultValue); 234282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 235282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 236282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return defaultValue; 237282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 238282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 239282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 240282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public float getAttributeFloatValue(int index, float defaultValue) { 241282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String s = getAttributeValue(index); 242282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (s != null) { 243282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ResourceValue r = getResourceValue(s); 244282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 245282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (r != null) { 246282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski s = r.getValue(); 247282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 248282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 249282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return Float.parseFloat(s); 250282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 251282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 252282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return defaultValue; 253282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 254282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 255282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // -- private helper methods 256282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 257282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 258282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Returns a resolved {@link ResourceValue} from a given value. 259282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 260282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski private ResourceValue getResourceValue(String value) { 261282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // now look for this particular value 262282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski RenderResources resources = mContext.getRenderResources(); 263282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return resources.resolveResValue(resources.findResValue(value, mPlatformFile)); 264282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 265282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 266282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 267282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Resolves and return a value to its associated integer. 268282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 269282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski private int resolveResourceValue(String value, int defaultValue) { 270282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ResourceValue resource = getResourceValue(value); 271282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (resource != null) { 272282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Integer id = null; 273282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (mPlatformFile || resource.isFramework()) { 274282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski id = Bridge.getResourceId(resource.getResourceType(), resource.getName()); 275282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } else { 276282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski id = mContext.getProjectCallback().getResourceId( 277282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski resource.getResourceType(), resource.getName()); 278282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 279282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 280282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (id != null) { 281282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return id; 282282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 283282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 284282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 285282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return defaultValue; 286282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 287282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski} 288