summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2015-02-23 16:18:38 -0800
committerGeorge Mount <mount@google.com>2015-02-23 16:18:38 -0800
commit2af44f84171dbe5e2156e7dfae776f17068b00dc (patch)
tree9062a44cfea27afc578178326369077a064a240e /tools
parent9a1918ff962b7f99a9e51ce6ef987b82729d4fb6 (diff)
downloadframeworks_base-2af44f84171dbe5e2156e7dfae776f17068b00dc.zip
frameworks_base-2af44f84171dbe5e2156e7dfae776f17068b00dc.tar.gz
frameworks_base-2af44f84171dbe5e2156e7dfae776f17068b00dc.tar.bz2
Add fraction resource parameters.
Diffstat (limited to 'tools')
-rw-r--r--tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/ResourceTest.java20
-rw-r--r--tools/data-binding/TestApp/src/main/res/layout/resource_test.xml17
-rw-r--r--tools/data-binding/TestApp/src/main/res/values/fractions.xml20
-rw-r--r--tools/data-binding/compiler/src/main/java/com/android/databinding/expr/ResourceExpr.java15
4 files changed, 71 insertions, 1 deletions
diff --git a/tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/ResourceTest.java b/tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/ResourceTest.java
index 79e44db..2770c46 100644
--- a/tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/ResourceTest.java
+++ b/tools/data-binding/TestApp/src/androidTest/java/com/android/databinding/testapp/ResourceTest.java
@@ -32,6 +32,8 @@ public class ResourceTest extends BaseDataBinderTest<ResourceTestBinder> {
mBinder.setCount(0);
mBinder.setTitle("Mrs.");
mBinder.setLastName("Doubtfire");
+ mBinder.setBase(2);
+ mBinder.setPbase(3);
try {
runTestOnUiThread(new Runnable() {
@Override
@@ -63,4 +65,22 @@ public class ResourceTest extends BaseDataBinderTest<ResourceTestBinder> {
mBinder.rebindDirty();
assertEquals("orange", view.getText().toString());
}
+
+ @UiThreadTest
+ public void testFractionNoParameters() throws Throwable {
+ TextView view = mBinder.getFractionNoParameters();
+ assertEquals("1.5", view.getText().toString());
+ }
+
+ @UiThreadTest
+ public void testFractionOneParameter() throws Throwable {
+ TextView view = mBinder.getFractionOneParameter();
+ assertEquals("3.0", view.getText().toString());
+ }
+
+ @UiThreadTest
+ public void testFractionTwoParameters() throws Throwable {
+ TextView view = mBinder.getFractionTwoParameters();
+ assertEquals("9.0", view.getText().toString());
+ }
}
diff --git a/tools/data-binding/TestApp/src/main/res/layout/resource_test.xml b/tools/data-binding/TestApp/src/main/res/layout/resource_test.xml
index 1c77c39..dd59771 100644
--- a/tools/data-binding/TestApp/src/main/res/layout/resource_test.xml
+++ b/tools/data-binding/TestApp/src/main/res/layout/resource_test.xml
@@ -8,6 +8,8 @@
<variable name="count" type="int"/>
<variable name="title" type="String"/>
<variable name="lastName" type="String"/>
+ <variable name="base" type="int"/>
+ <variable name="pbase" type="int"/>
<TextView
android:id="@+id/textView0"
@@ -20,4 +22,19 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{@plurals/orange(count)}"/>
+ <TextView
+ android:id="@+id/fractionNoParameters"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@{`` + @fraction/myFraction}"/>
+ <TextView
+ android:id="@+id/fractionOneParameter"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@{`` + @fraction/myFraction(base)}"/>
+ <TextView
+ android:id="@+id/fractionTwoParameters"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@{`` + @fraction/myParentFraction(base, pbase)}"/>
</LinearLayout> \ No newline at end of file
diff --git a/tools/data-binding/TestApp/src/main/res/values/fractions.xml b/tools/data-binding/TestApp/src/main/res/values/fractions.xml
new file mode 100644
index 0000000..8817316
--- /dev/null
+++ b/tools/data-binding/TestApp/src/main/res/values/fractions.xml
@@ -0,0 +1,20 @@
+<!--
+ ~ Copyright (C) 2015 The Android Open Source Project
+ ~ 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.
+ -->
+
+<resources>
+
+ <!-- Base application theme. -->
+ <fraction name="myFraction">150%</fraction>
+ <fraction name="myParentFraction">300%p</fraction>
+
+</resources>
diff --git a/tools/data-binding/compiler/src/main/java/com/android/databinding/expr/ResourceExpr.java b/tools/data-binding/compiler/src/main/java/com/android/databinding/expr/ResourceExpr.java
index b2ba757..555fdd7 100644
--- a/tools/data-binding/compiler/src/main/java/com/android/databinding/expr/ResourceExpr.java
+++ b/tools/data-binding/compiler/src/main/java/com/android/databinding/expr/ResourceExpr.java
@@ -149,7 +149,12 @@ public class ResourceExpr extends Expr {
case "dimenOffset": return resources + ".getDimensionPixelOffset(" + resourceName + ")";
case "dimenSize": return resources + ".getDimensionPixelSize(" + resourceName + ")";
case "drawable": return resources + ".getDrawable(" + resourceName + ")";
- case "fraction": return resources + ".getFraction(" + resourceName + ", 1, 1)";
+ case "fraction": {
+ String base = getChildCode(0, "1");
+ String pbase = getChildCode(1, "1");
+ return resources + ".getFraction(" + resourceName + ", " + base + ", " + pbase +
+ ")";
+ }
case "id": return resourceName;
case "intArray": return resources + ".getIntArray(" + resourceName + ")";
case "integer": return resources + ".getInteger(" + resourceName + ")";
@@ -174,6 +179,14 @@ public class ResourceExpr extends Expr {
}
+ private String getChildCode(int childIndex, String defaultValue) {
+ if (getChildren().size() <= childIndex) {
+ return defaultValue;
+ } else {
+ return WriterPackage.toCode(getChildren().get(childIndex), false).generate();
+ }
+ }
+
private String makeParameterCall(String resourceName, String methodCall) {
StringBuilder sb = new StringBuilder("getRoot().getResources().");
sb.append(methodCall).append("(").append(resourceName);