Implement Android resource reference folding

#KT-15451 Fixed
This commit is contained in:
Vyacheslav Gerasimov
2017-02-07 20:29:54 +03:00
parent 39010ab847
commit a907ec92b5
12 changed files with 482 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
package com.myapp;
public final class R {
public static final class string {
public static final int app_title=0x7f060022;
public static final int compex_format_string=0x7f060023;
public static final int empty_string=0x7f060024;
public static final int format_string=0x7f060025;
public static final int invalid_format=0x7f060026;
public static final int long_string=0x7f060027;
public static final int plural_few=0x7f060028;
public static final int plural_one=0x7f060029;
public static final int plural_other=0x7f06002a;
public static final int positive_button_text=0x7f06002b;
public static final int string1=0x7f06002c;
public static final int string2=0x7f06002d;
public static final int string3=0x7f06002e;
}
public static final class integer {
public static final int some_int=0x7f0c0003;
public static final int max_action_buttons=0x7f0c0004;
}
public static final class plurals {
public static final int first=0x7f0d0000;
public static final int second=0x7f0d0001;
}
public static final class dimen {
public static final int action_bar_default_height=0x7f07004f;
public static final int action_bar_icon_vertical_padding=0x7f070050;
public static final int mydimen1=0x7f07005b;
public static final int mydimen2=0x7f07005c;
public static final int mydimen3=0x7f07005d;
}
}
+19
View File
@@ -0,0 +1,19 @@
package com.myapp
import <fold text='...' expand='false'>android.app.Activity
import android.app.AlertDialog</fold>
class MyActivity : Activity() <fold text='{...}' expand='true'>{
fun test() <fold text='{...}' expand='true'>{
val dialog = AlertDialog.Builder(this)
.setView(null)
.setPositiveButton(<fold text='"Yes"' expand='false'>R.string.positive_button_text</fold>, null)
.create()
val dimension = <fold text='56dip' expand='false'>resources.getDimension(R.dimen.action_bar_default_height)</fold>
val dimension2 = <fold text='4dip' expand='false'>resources.getDimensionPixelOffset(R.dimen.action_bar_icon_vertical_padding)</fold>
val dimension3 = <fold text='3dip' expand='false'>resources.getDimensionPixelSize(R.dimen.mydimen3)</fold>
val strings = intArrayOf(<fold text='"1111"' expand='false'>R.string.string1</fold>, <fold text='"2222"' expand='false'>R.string.string2</fold>, <fold text='"3333"' expand='false'>R.string.string3</fold>)
val dimensions = intArrayOf(<fold text='1dip' expand='false'>R.dimen.mydimen1</fold>, <fold text='2dip' expand='false'>R.dimen.mydimen2</fold>)
val maxButtons = <fold text='max_action_buttons: 2' expand='false'>resources.getInteger(R.integer.max_action_buttons)</fold>
}</fold>
}</fold>
+27
View File
@@ -0,0 +1,27 @@
package com.myapp
import <fold text='...' expand='false'>android.content.Context
import com.myapp.R.string.*;</fold>
fun Context.getAppTitle() = <fold text='"My Cool Application"' expand='false'>getString(R.string.app_title)</fold>
fun getAppTitle(context: Context) <fold text='{...}' expand='true'>{
return <fold text='"My Cool Application"' expand='false'>context.getString(app_title)</fold>
}</fold>
fun getLongString(context: Context) = <fold text='"Some very very long string which should be trimmed. Lor..."' expand='false'>context.getString(R.string.long_string)</fold>
fun bar(text: String) = text
fun foo(context: Context) <fold text='{...}' expand='true'>{
val name = "Vasya"
val otherName = context.getString(R.string.no_resource)
val cancel = context.getString(android.R.string.cancel)
val text = <fold text='"Hello {Vasya}!"' expand='false'>context.getString(R.string.format_string, name)</fold>
val text = <fold text='"Hello {otherName}!"' expand='false'>context.getString(R.string.format_string, otherName)</fold>
val emptyString = <fold text='""' expand='false'>context.getString(R.string.empty_string)</fold>
val someInt = <fold text='some_int: 8' expand='false'>context.resources.getInteger(R.integer.some_int)</fold>
context.getString(R.string.no_resource)
bar(<fold text='"Third: {333} Repeated: {333} First: {111} Second: {222}"' expand='false'>context.getResources().getString(R.string.compex_format_string, "111", "222", "333")</fold>)
val invalid = with(context) { getString(<fold text='"Escaped: %s First: %1$s Invalid: %20$s"' expand='false'>R.string.invalid_format</fold>, name, otherName) }
}</fold>
+9
View File
@@ -0,0 +1,9 @@
package com.myapp
import android.content.Context
fun Context.testPlurals(quantity: Int) <fold text='{...}' expand='true'>{
val plural1 = <fold text='"Reference One"' expand='false'>resources.getQuantityString(R.plurals.first, quantity)</fold>
val plural2 = <fold text='Quantity One' expand='false'>this.getResources().getQuantityString(R.plurals.second, quantity)</fold>
}</fold>
+39
View File
@@ -0,0 +1,39 @@
<resources>
<string name="app_name">ResourceFolding</string>
<string name="app_title">My Cool Application</string>
<string name="long_string">Some very very long string which should be trimmed. Lorem ipsum dolor sit amet.</string>
<string name="format_string">Hello %s!</string>
<string name="empty_string" />
<string name="compex_format_string" formatted="false">Third: %3$s Repeated: %3$s First: %1$s Second: %2$d</string>
<string name="invalid_format" formatted="false">Escaped: \%s First: %1$s Invalid: %20$s</string>
<string name="plural_one">Reference One</string>
<string name="plural_few">Reference Few</string>
<string name="plural_other">Reference Other</string>
<string name="positive_button_text">Yes</string>
<string name="string1">1111</string>
<string name="string2">2222</string>
<string name="string3">3333</string>
<integer name="some_int">8</integer>
<integer name="max_action_buttons">2</integer>
<plurals name="first">
<item quantity="one">@string/plural_one</item>
<item quantity="few">@string/plural_few</item>
<item quantity="other">@string/plural_other</item>
</plurals>
<plurals name="second">
<item quantity="one">Quantity One</item>
<item quantity="few">Quantity Few</item>
</plurals>
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="action_bar_default_height">56dip</dimen>
<dimen name="action_bar_icon_vertical_padding">4dip</dimen>
<dimen name="mydimen3">3dip</dimen>
<dimen name="mydimen1">1dip</dimen>
<dimen name="mydimen2">2dip</dimen>
</resources>