From 7639ab4f41ef4414dd4c8c73885cf853962431b9 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Thu, 7 May 2015 16:19:29 +0300 Subject: [PATCH] Separate support and normal properties --- .../resolve/android/AndroidUIXmlProcessor.kt | 13 ++++++------ .../lang/resolve/android/androidResources.kt | 21 +++++++++++-------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidUIXmlProcessor.kt b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidUIXmlProcessor.kt index 9262d9ba70a..88dc05ef219 100644 --- a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidUIXmlProcessor.kt +++ b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidUIXmlProcessor.kt @@ -124,7 +124,11 @@ public abstract class AndroidUIXmlProcessor(protected val project: Project) { private fun renderMainLayoutFile(layoutName: String, resources: List): AndroidSyntheticFile { return renderLayoutFile(layoutName + AndroidConst.LAYOUT_POSTFIX, - escapeAndroidIdentifier(layoutName), resources) { it.mainProperties } + escapeAndroidIdentifier(layoutName), resources) { + val properties = it.mainProperties.toArrayList() + if (supportV4) properties.addAll(it.mainPropertiesForSupportV4) + properties + } } private fun renderViewLayoutFile(layoutName: String, resources: List): AndroidSyntheticFile { @@ -143,10 +147,7 @@ public abstract class AndroidUIXmlProcessor(protected val project: Project) { for (res in resources) { properties(res).forEach { property -> - // Comment - if (supportV4 || !isFromSupportV4Package(property.first)) { - writeSyntheticProperty(property.first, res, property.second) - } + writeSyntheticProperty(property.first, res, property.second) } } } @@ -165,7 +166,7 @@ public abstract class AndroidUIXmlProcessor(protected val project: Project) { private fun KotlinStringWriter.writeSyntheticProperty(receiver: String, widget: AndroidResource, stubCall: String) { // extract startsWith() to fun - val className = if (isFromSupportV4Package(receiver)) widget.supportClassName() else widget.className + val className = if (isFromSupportV4Package(receiver)) widget.supportClassName else widget.className val cast = if (widget.className != "View") " as? $className" else "" val body = arrayListOf("return $stubCall$cast") writeImmutableExtensionProperty(receiver, diff --git a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/androidResources.kt b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/androidResources.kt index 919a73bed20..df3a0b65877 100644 --- a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/androidResources.kt +++ b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/androidResources.kt @@ -22,28 +22,29 @@ public data class AndroidModuleInfo(val applicationPackage: String, resDirectori public abstract class AndroidResource(val id: String) { public abstract val className: String + public open val supportClassName: String + get() = className public abstract val mainProperties: List> - + public open val mainPropertiesForSupportV4: List> = listOf() public open val viewProperties: List> = listOf() public open fun sameClass(other: AndroidResource): Boolean = false - - public open fun supportClassName(): String = className } public class AndroidWidget(id: String, override val className: String) : AndroidResource(id) { private companion object { val MAIN_PROPERTIES = listOf( AndroidConst.ACTIVITY_FQNAME to "findViewById(0)", - AndroidConst.FRAGMENT_FQNAME to "getView().findViewById(0)", - AndroidConst.SUPPORT_FRAGMENT_FQNAME to "getView().findViewById(0)") + AndroidConst.FRAGMENT_FQNAME to "getView().findViewById(0)") + + val MAIN_PROPERTIES_SUPPORT_V4 = listOf(AndroidConst.SUPPORT_FRAGMENT_FQNAME to "getView().findViewById(0)") val VIEW_PROPERTIES = listOf("android.view.View" to "findViewById(0)") } override val mainProperties = MAIN_PROPERTIES - + override val mainPropertiesForSupportV4 = MAIN_PROPERTIES_SUPPORT_V4 override val viewProperties = VIEW_PROPERTIES override fun sameClass(other: AndroidResource) = other is AndroidWidget @@ -53,16 +54,18 @@ public class AndroidFragment(id: String) : AndroidResource(id) { private companion object { val MAIN_PROPERTIES = listOf( AndroidConst.ACTIVITY_FQNAME to "getFragmentManager().findFragmentById(0)", - AndroidConst.FRAGMENT_FQNAME to "getFragmentManager().findFragmentById(0)", + AndroidConst.FRAGMENT_FQNAME to "getFragmentManager().findFragmentById(0)") + + val MAIN_PROPERTIES_SUPPORT_V4 = listOf( AndroidConst.SUPPORT_FRAGMENT_FQNAME to "getFragmentManager().findFragmentById(0)", AndroidConst.SUPPORT_FRAGMENT_ACTIVITY_FQNAME to "getSupportFragmentManager().findFragmentById(0)") } override val className = AndroidConst.FRAGMENT_FQNAME + override val supportClassName = AndroidConst.SUPPORT_FRAGMENT_FQNAME override val mainProperties = MAIN_PROPERTIES + override val mainPropertiesForSupportV4 = MAIN_PROPERTIES_SUPPORT_V4 override fun sameClass(other: AndroidResource) = other is AndroidFragment - - override fun supportClassName() = AndroidConst.SUPPORT_FRAGMENT_FQNAME } \ No newline at end of file