Android Extensions: Support LayoutContainer in code generation

This commit is contained in:
Yan Zhulanow
2017-06-05 22:46:37 +03:00
parent a69f9729e0
commit 423a09e46a
32 changed files with 279 additions and 56 deletions
@@ -0,0 +1,36 @@
package test
import android.app.Activity
import android.view.View
import android.widget.*
import kotlinx.android.synthetic.main.layout.*
import kotlinx.android.extensions.*
class R {
class id {
companion object {
const val login = 5
}
}
}
class MyEntity(override val containerView: View) : LayoutContainer
class MyActivity(): Activity() {
val loginItem = Button(this)
val entity = MyEntity(object : FrameLayout(this) {
override fun findViewById(id: Int) : View? = when(id) {
R.id.login -> loginItem
else -> null
}
})
public fun box(): String {
return if (entity.login.toString() == "Button") "OK" else ""
}
}
fun box(): String {
return MyActivity().box()
}
@@ -0,0 +1,30 @@
package test
import android.app.Activity
import android.view.View
import android.widget.*
import kotlinx.android.synthetic.main.layout.*
import kotlinx.android.extensions.*
class R {
class id {
companion object {
const val login = 5
}
}
}
class MyEntity(override val containerView: View) : LayoutContainer
class MyActivity(): Activity() {
val loginItem = Button(this)
val entity = MyEntity(loginItem)
init {
entity.login
}
}
fun box(): String {
return "OK"
}
@@ -0,0 +1,33 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="test"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-sdk
android:minSdkVersion="18"
android:targetSdkVersion="18" />
<permission android:name="android"></permission>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.Sample" >
<activity
android:name="com.example.android.basiccontactables.MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop">
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
@@ -0,0 +1,10 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/login"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</FrameLayout>
@@ -9,13 +9,14 @@ import kotlinx.android.extensions.*
@ContainerOptions(cache = CacheImplementation.HASH_MAP)
class MyView(context: Context) : View(context)
@ContainerOptions(cache = CacheImplementation.NO_CACHE)
class MyActivity : Activity() {
init { MyView(this).login }
}
// 2 public _\$_findCachedViewById
// 1 INVOKEVIRTUAL android/app/Activity\.findViewById
// 2 public _\$_clearFindViewByIdCache
// 1 public _\$_findCachedViewById
// 0 INVOKEVIRTUAL android/app/Activity\.findViewById
// 1 public _\$_clearFindViewByIdCache
// 1 GETSTATIC test/R\$id\.login
// 1 INVOKEVIRTUAL android/view/View\.findViewById
// 0 INVOKEVIRTUAL test/MyActivity\._\$_findCachedViewById
@@ -8,6 +8,8 @@ kotlinx.android.synthetic
public fun android.app.Activity.clearFindViewByIdCache(): kotlin.Unit
public fun android.app.Fragment.clearFindViewByIdCache(): kotlin.Unit
public fun android.view.View.clearFindViewByIdCache(): kotlin.Unit
public fun kotlinx.android.extensions.LayoutContainer.clearFindViewByIdCache(): kotlin.Unit
kotlinx.android.synthetic.main
@@ -18,15 +20,19 @@ kotlinx.android.synthetic.main.get
public val android.app.Activity.item_detail_container: android.widget.FrameLayout!
public val android.app.Dialog.item_detail_container: android.widget.FrameLayout!
public val android.app.Fragment.item_detail_container: android.widget.FrameLayout!
public val kotlinx.android.extensions.LayoutContainer.item_detail_container: android.widget.FrameLayout!
public val android.app.Activity.login: android.widget.Button!
public val android.app.Dialog.login: android.widget.Button!
public val android.app.Fragment.login: android.widget.Button!
public val kotlinx.android.extensions.LayoutContainer.login: android.widget.Button!
public val android.app.Activity.password: android.widget.EditText!
public val android.app.Dialog.password: android.widget.EditText!
public val android.app.Fragment.password: android.widget.EditText!
public val kotlinx.android.extensions.LayoutContainer.password: android.widget.EditText!
public val android.app.Activity.textView1: android.widget.TextView!
public val android.app.Dialog.textView1: android.widget.TextView!
public val android.app.Fragment.textView1: android.widget.TextView!
public val kotlinx.android.extensions.LayoutContainer.textView1: android.widget.TextView!
kotlinx.android.synthetic.main.get.view
@@ -8,6 +8,8 @@ kotlinx.android.synthetic
public fun android.app.Activity.clearFindViewByIdCache(): kotlin.Unit
public fun android.app.Fragment.clearFindViewByIdCache(): kotlin.Unit
public fun android.view.View.clearFindViewByIdCache(): kotlin.Unit
public fun kotlinx.android.extensions.LayoutContainer.clearFindViewByIdCache(): kotlin.Unit
kotlinx.android.synthetic.main
@@ -18,6 +20,7 @@ kotlinx.android.synthetic.main.test
public val android.app.Activity.MyKeyboardView: android.inputmethodservice.KeyboardView!
public val android.app.Dialog.MyKeyboardView: android.inputmethodservice.KeyboardView!
public val android.app.Fragment.MyKeyboardView: android.inputmethodservice.KeyboardView!
public val kotlinx.android.extensions.LayoutContainer.MyKeyboardView: android.inputmethodservice.KeyboardView!
kotlinx.android.synthetic.main.test.view
@@ -8,6 +8,8 @@ kotlinx.android.synthetic
public fun android.app.Activity.clearFindViewByIdCache(): kotlin.Unit
public fun android.app.Fragment.clearFindViewByIdCache(): kotlin.Unit
public fun android.view.View.clearFindViewByIdCache(): kotlin.Unit
public fun kotlinx.android.extensions.LayoutContainer.clearFindViewByIdCache(): kotlin.Unit
kotlinx.android.synthetic.main
@@ -18,6 +20,7 @@ kotlinx.android.synthetic.main.test
public val android.app.Activity.MyKeyboardView: android.inputmethodservice.KeyboardView!
public val android.app.Dialog.MyKeyboardView: android.inputmethodservice.KeyboardView!
public val android.app.Fragment.MyKeyboardView: android.inputmethodservice.KeyboardView!
public val kotlinx.android.extensions.LayoutContainer.MyKeyboardView: android.inputmethodservice.KeyboardView!
kotlinx.android.synthetic.main.test.view
@@ -8,6 +8,8 @@ kotlinx.android.synthetic
public fun android.app.Activity.clearFindViewByIdCache(): kotlin.Unit
public fun android.app.Fragment.clearFindViewByIdCache(): kotlin.Unit
public fun android.view.View.clearFindViewByIdCache(): kotlin.Unit
public fun kotlinx.android.extensions.LayoutContainer.clearFindViewByIdCache(): kotlin.Unit
kotlinx.android.synthetic.main
@@ -18,6 +20,7 @@ kotlinx.android.synthetic.main.test
public val android.app.Activity.button: android.view.View!
public val android.app.Dialog.button: android.view.View!
public val android.app.Fragment.button: android.view.View!
public val kotlinx.android.extensions.LayoutContainer.button: android.view.View!
kotlinx.android.synthetic.main.test.view
@@ -8,6 +8,8 @@ kotlinx.android.synthetic
public fun android.app.Activity.clearFindViewByIdCache(): kotlin.Unit
public fun android.app.Fragment.clearFindViewByIdCache(): kotlin.Unit
public fun android.view.View.clearFindViewByIdCache(): kotlin.Unit
public fun kotlinx.android.extensions.LayoutContainer.clearFindViewByIdCache(): kotlin.Unit
kotlinx.android.synthetic.main
@@ -18,15 +20,19 @@ kotlinx.android.synthetic.main.test
public val android.app.Activity.item_detail_container: android.widget.FrameLayout!
public val android.app.Dialog.item_detail_container: android.widget.FrameLayout!
public val android.app.Fragment.item_detail_container: android.widget.FrameLayout!
public val kotlinx.android.extensions.LayoutContainer.item_detail_container: android.widget.FrameLayout!
public val android.app.Activity.login: android.widget.Button!
public val android.app.Dialog.login: android.widget.Button!
public val android.app.Fragment.login: android.widget.Button!
public val kotlinx.android.extensions.LayoutContainer.login: android.widget.Button!
public val android.app.Activity.password: android.widget.EditText!
public val android.app.Dialog.password: android.widget.EditText!
public val android.app.Fragment.password: android.widget.EditText!
public val kotlinx.android.extensions.LayoutContainer.password: android.widget.EditText!
public val android.app.Activity.textView1: android.widget.TextView!
public val android.app.Dialog.textView1: android.widget.TextView!
public val android.app.Fragment.textView1: android.widget.TextView!
public val kotlinx.android.extensions.LayoutContainer.textView1: android.widget.TextView!
kotlinx.android.synthetic.main.test.view
@@ -42,15 +48,19 @@ kotlinx.android.synthetic.main.test1
public val android.app.Activity.frameLayout: android.widget.FrameLayout!
public val android.app.Dialog.frameLayout: android.widget.FrameLayout!
public val android.app.Fragment.frameLayout: android.widget.FrameLayout!
public val kotlinx.android.extensions.LayoutContainer.frameLayout: android.widget.FrameLayout!
public val android.app.Activity.loginButton: android.widget.Button!
public val android.app.Dialog.loginButton: android.widget.Button!
public val android.app.Fragment.loginButton: android.widget.Button!
public val kotlinx.android.extensions.LayoutContainer.loginButton: android.widget.Button!
public val android.app.Activity.passwordCaption: android.widget.EditText!
public val android.app.Dialog.passwordCaption: android.widget.EditText!
public val android.app.Fragment.passwordCaption: android.widget.EditText!
public val kotlinx.android.extensions.LayoutContainer.passwordCaption: android.widget.EditText!
public val android.app.Activity.passwordField: android.widget.TextView!
public val android.app.Dialog.passwordField: android.widget.TextView!
public val android.app.Fragment.passwordField: android.widget.TextView!
public val kotlinx.android.extensions.LayoutContainer.passwordField: android.widget.TextView!
kotlinx.android.synthetic.main.test1.view
@@ -8,6 +8,8 @@ kotlinx.android.synthetic
public fun android.app.Activity.clearFindViewByIdCache(): kotlin.Unit
public fun android.app.Fragment.clearFindViewByIdCache(): kotlin.Unit
public fun android.view.View.clearFindViewByIdCache(): kotlin.Unit
public fun kotlinx.android.extensions.LayoutContainer.clearFindViewByIdCache(): kotlin.Unit
kotlinx.android.synthetic.main
@@ -8,6 +8,8 @@ kotlinx.android.synthetic
public fun android.app.Activity.clearFindViewByIdCache(): kotlin.Unit
public fun android.app.Fragment.clearFindViewByIdCache(): kotlin.Unit
public fun android.view.View.clearFindViewByIdCache(): kotlin.Unit
public fun kotlinx.android.extensions.LayoutContainer.clearFindViewByIdCache(): kotlin.Unit
kotlinx.android.synthetic.main
@@ -18,9 +20,11 @@ kotlinx.android.synthetic.main.test
public val android.app.Activity.textView1: android.view.View!
public val android.app.Dialog.textView1: android.view.View!
public val android.app.Fragment.textView1: android.view.View!
public val kotlinx.android.extensions.LayoutContainer.textView1: android.view.View!
public val android.app.Activity.textView2: android.widget.TextView!
public val android.app.Dialog.textView2: android.widget.TextView!
public val android.app.Fragment.textView2: android.widget.TextView!
public val kotlinx.android.extensions.LayoutContainer.textView2: android.widget.TextView!
kotlinx.android.synthetic.main.test.view
@@ -8,6 +8,8 @@ kotlinx.android.synthetic
public fun android.app.Activity.clearFindViewByIdCache(): kotlin.Unit
public fun android.app.Fragment.clearFindViewByIdCache(): kotlin.Unit
public fun android.view.View.clearFindViewByIdCache(): kotlin.Unit
public fun kotlinx.android.extensions.LayoutContainer.clearFindViewByIdCache(): kotlin.Unit
kotlinx.android.synthetic.main
@@ -18,12 +20,15 @@ kotlinx.android.synthetic.main.test
public val android.app.Activity.button: android.view.View!
public val android.app.Dialog.button: android.view.View!
public val android.app.Fragment.button: android.view.View!
public val kotlinx.android.extensions.LayoutContainer.button: android.view.View!
public val android.app.Activity.button2: android.widget.Button!
public val android.app.Dialog.button2: android.widget.Button!
public val android.app.Fragment.button2: android.widget.Button!
public val kotlinx.android.extensions.LayoutContainer.button2: android.widget.Button!
public val android.app.Activity.button3: android.widget.Button!
public val android.app.Dialog.button3: android.widget.Button!
public val android.app.Fragment.button3: android.widget.Button!
public val kotlinx.android.extensions.LayoutContainer.button3: android.widget.Button!
kotlinx.android.synthetic.main.test.view
@@ -8,6 +8,8 @@ kotlinx.android.synthetic
public fun android.app.Activity.clearFindViewByIdCache(): kotlin.Unit
public fun android.app.Fragment.clearFindViewByIdCache(): kotlin.Unit
public fun android.view.View.clearFindViewByIdCache(): kotlin.Unit
public fun kotlinx.android.extensions.LayoutContainer.clearFindViewByIdCache(): kotlin.Unit
kotlinx.android.synthetic.main
@@ -18,15 +20,19 @@ kotlinx.android.synthetic.main.test
public val android.app.Activity.item_detail_container: android.widget.FrameLayout!
public val android.app.Dialog.item_detail_container: android.widget.FrameLayout!
public val android.app.Fragment.item_detail_container: android.widget.FrameLayout!
public val kotlinx.android.extensions.LayoutContainer.item_detail_container: android.widget.FrameLayout!
public val android.app.Activity.login: android.widget.Button!
public val android.app.Dialog.login: android.widget.Button!
public val android.app.Fragment.login: android.widget.Button!
public val kotlinx.android.extensions.LayoutContainer.login: android.widget.Button!
public val android.app.Activity.password: android.widget.EditText!
public val android.app.Dialog.password: android.widget.EditText!
public val android.app.Fragment.password: android.widget.EditText!
public val kotlinx.android.extensions.LayoutContainer.password: android.widget.EditText!
public val android.app.Activity.textView1: android.widget.TextView!
public val android.app.Dialog.textView1: android.widget.TextView!
public val android.app.Fragment.textView1: android.widget.TextView!
public val kotlinx.android.extensions.LayoutContainer.textView1: android.widget.TextView!
kotlinx.android.synthetic.main.test.view
@@ -8,6 +8,8 @@ kotlinx.android.synthetic
public fun android.app.Activity.clearFindViewByIdCache(): kotlin.Unit
public fun android.app.Fragment.clearFindViewByIdCache(): kotlin.Unit
public fun android.view.View.clearFindViewByIdCache(): kotlin.Unit
public fun kotlinx.android.extensions.LayoutContainer.clearFindViewByIdCache(): kotlin.Unit
kotlinx.android.synthetic.main
@@ -20,12 +22,15 @@ kotlinx.android.synthetic.main.test
public val android.app.Activity.`fun`: android.widget.TextView!
public val android.app.Dialog.`fun`: android.widget.TextView!
public val android.app.Fragment.`fun`: android.widget.TextView!
public val kotlinx.android.extensions.LayoutContainer.`fun`: android.widget.TextView!
public val android.app.Activity.includeTag: android.view.View!
public val android.app.Dialog.includeTag: android.view.View!
public val android.app.Fragment.includeTag: android.view.View!
public val kotlinx.android.extensions.LayoutContainer.includeTag: android.view.View!
public val android.app.Activity.set: android.widget.Button!
public val android.app.Dialog.set: android.widget.Button!
public val android.app.Fragment.set: android.widget.Button!
public val kotlinx.android.extensions.LayoutContainer.set: android.widget.Button!
kotlinx.android.synthetic.main.test.view
@@ -8,6 +8,8 @@ kotlinx.android.synthetic
public fun android.app.Activity.clearFindViewByIdCache(): kotlin.Unit
public fun android.app.Fragment.clearFindViewByIdCache(): kotlin.Unit
public fun android.view.View.clearFindViewByIdCache(): kotlin.Unit
public fun kotlinx.android.extensions.LayoutContainer.clearFindViewByIdCache(): kotlin.Unit
kotlinx.android.synthetic.main
@@ -18,15 +20,19 @@ kotlinx.android.synthetic.main.test
public val android.app.Activity.item_detail_container: android.widget.FrameLayout!
public val android.app.Dialog.item_detail_container: android.widget.FrameLayout!
public val android.app.Fragment.item_detail_container: android.widget.FrameLayout!
public val kotlinx.android.extensions.LayoutContainer.item_detail_container: android.widget.FrameLayout!
public val android.app.Activity.login: android.widget.Button!
public val android.app.Dialog.login: android.widget.Button!
public val android.app.Fragment.login: android.widget.Button!
public val kotlinx.android.extensions.LayoutContainer.login: android.widget.Button!
public val android.app.Activity.password: android.widget.EditText!
public val android.app.Dialog.password: android.widget.EditText!
public val android.app.Fragment.password: android.widget.EditText!
public val kotlinx.android.extensions.LayoutContainer.password: android.widget.EditText!
public val android.app.Activity.textView1: android.widget.TextView!
public val android.app.Dialog.textView1: android.widget.TextView!
public val android.app.Fragment.textView1: android.widget.TextView!
public val kotlinx.android.extensions.LayoutContainer.textView1: android.widget.TextView!
kotlinx.android.synthetic.main.test.view
@@ -8,6 +8,8 @@ kotlinx.android.synthetic
public fun android.app.Activity.clearFindViewByIdCache(): kotlin.Unit
public fun android.app.Fragment.clearFindViewByIdCache(): kotlin.Unit
public fun android.view.View.clearFindViewByIdCache(): kotlin.Unit
public fun kotlinx.android.extensions.LayoutContainer.clearFindViewByIdCache(): kotlin.Unit
kotlinx.android.synthetic.main
@@ -20,12 +22,15 @@ kotlinx.android.synthetic.main.test
public val android.app.Activity.`fun`: android.widget.TextView!
public val android.app.Dialog.`fun`: android.widget.TextView!
public val android.app.Fragment.`fun`: android.widget.TextView!
public val kotlinx.android.extensions.LayoutContainer.`fun`: android.widget.TextView!
public val android.app.Activity.includeTag: android.view.View!
public val android.app.Dialog.includeTag: android.view.View!
public val android.app.Fragment.includeTag: android.view.View!
public val kotlinx.android.extensions.LayoutContainer.includeTag: android.view.View!
public val android.app.Activity.set: android.widget.Button!
public val android.app.Dialog.set: android.widget.Button!
public val android.app.Fragment.set: android.widget.Button!
public val kotlinx.android.extensions.LayoutContainer.set: android.widget.Button!
kotlinx.android.synthetic.main.test.view
@@ -8,6 +8,8 @@ kotlinx.android.synthetic
public fun android.app.Activity.clearFindViewByIdCache(): kotlin.Unit
public fun android.app.Fragment.clearFindViewByIdCache(): kotlin.Unit
public fun android.view.View.clearFindViewByIdCache(): kotlin.Unit
public fun kotlinx.android.extensions.LayoutContainer.clearFindViewByIdCache(): kotlin.Unit
kotlinx.android.synthetic.main
@@ -18,6 +20,7 @@ kotlinx.android.synthetic.main.test
public val android.app.Activity.MyView: android.view.View!
public val android.app.Dialog.MyView: android.view.View!
public val android.app.Fragment.MyView: android.view.View!
public val kotlinx.android.extensions.LayoutContainer.MyView: android.view.View!
kotlinx.android.synthetic.main.test.view
@@ -8,6 +8,8 @@ kotlinx.android.synthetic
public fun android.app.Activity.clearFindViewByIdCache(): kotlin.Unit
public fun android.app.Fragment.clearFindViewByIdCache(): kotlin.Unit
public fun android.view.View.clearFindViewByIdCache(): kotlin.Unit
public fun kotlinx.android.extensions.LayoutContainer.clearFindViewByIdCache(): kotlin.Unit
kotlinx.android.synthetic.main
@@ -18,6 +20,7 @@ kotlinx.android.synthetic.main.test
public val android.app.Activity.MyKeyboardView: android.view.View!
public val android.app.Dialog.MyKeyboardView: android.view.View!
public val android.app.Fragment.MyKeyboardView: android.view.View!
public val kotlinx.android.extensions.LayoutContainer.MyKeyboardView: android.view.View!
kotlinx.android.synthetic.main.test.view
@@ -8,6 +8,8 @@ kotlinx.android.synthetic
public fun android.app.Activity.clearFindViewByIdCache(): kotlin.Unit
public fun android.app.Fragment.clearFindViewByIdCache(): kotlin.Unit
public fun android.view.View.clearFindViewByIdCache(): kotlin.Unit
public fun kotlinx.android.extensions.LayoutContainer.clearFindViewByIdCache(): kotlin.Unit
kotlinx.android.synthetic.main
@@ -18,6 +20,7 @@ kotlinx.android.synthetic.main.test
public val android.app.Activity.stub: android.view.ViewStub!
public val android.app.Dialog.stub: android.view.ViewStub!
public val android.app.Fragment.stub: android.view.ViewStub!
public val kotlinx.android.extensions.LayoutContainer.stub: android.view.ViewStub!
kotlinx.android.synthetic.main.test.view