From 9afccd60b307b1bd768f823d23e5cacef27a204c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ryszard=20Wi=C5=9Bniewski?= Date: Mon, 22 Mar 2010 17:01:35 +0100 Subject: [PATCH] +ResAttrDecoder --- .../androlib/res/decoder/ResAttrDecoder.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/brut/androlib/res/decoder/ResAttrDecoder.java diff --git a/src/brut/androlib/res/decoder/ResAttrDecoder.java b/src/brut/androlib/res/decoder/ResAttrDecoder.java new file mode 100644 index 00000000..075dfb30 --- /dev/null +++ b/src/brut/androlib/res/decoder/ResAttrDecoder.java @@ -0,0 +1,53 @@ +/* + * Copyright 2010 Ryszard Wiśniewski . + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * under the License. + */ + +package brut.androlib.res.decoder; + +import brut.androlib.AndrolibException; +import brut.androlib.res.data.ResPackage; +import brut.androlib.res.data.value.ResAttr; +import brut.androlib.res.data.value.ResScalarValue; + +/** + * @author Ryszard Wiśniewski + */ +public class ResAttrDecoder { + public String decode(int type, int value, int attrResId) + throws AndrolibException { + ResScalarValue resValue = mCurrentPackage.getValueFactory() + .factory(type, value); + if (attrResId == 0) { + return resValue.toResXmlFormat(); + } + ResAttr attr = (ResAttr) getCurrentPackage().getResTable() + .getResSpec(attrResId).getDefaultResource().getValue(); + return attr.convertToResXmlFormat(resValue); + } + + public ResPackage getCurrentPackage() throws AndrolibException { + if (mCurrentPackage == null) { + throw new AndrolibException("Current package not set"); + } + return mCurrentPackage; + } + + public void setCurrentPackage(ResPackage currentPackage) { + mCurrentPackage = currentPackage; + } + + private ResPackage mCurrentPackage; +}