Add fraction resource parameters.

This commit is contained in:
George Mount
2015-02-23 16:18:38 -08:00
parent 9a1918ff96
commit 2af44f8417
4 changed files with 71 additions and 1 deletions

View File

@@ -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());
}
}

View File

@@ -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>

View File

@@ -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>

View File

@@ -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);