Separate support and normal properties
This commit is contained in:
+7
-6
@@ -124,7 +124,11 @@ public abstract class AndroidUIXmlProcessor(protected val project: Project) {
|
|||||||
|
|
||||||
private fun renderMainLayoutFile(layoutName: String, resources: List<AndroidResource>): AndroidSyntheticFile {
|
private fun renderMainLayoutFile(layoutName: String, resources: List<AndroidResource>): AndroidSyntheticFile {
|
||||||
return renderLayoutFile(layoutName + AndroidConst.LAYOUT_POSTFIX,
|
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<AndroidResource>): AndroidSyntheticFile {
|
private fun renderViewLayoutFile(layoutName: String, resources: List<AndroidResource>): AndroidSyntheticFile {
|
||||||
@@ -143,10 +147,7 @@ public abstract class AndroidUIXmlProcessor(protected val project: Project) {
|
|||||||
|
|
||||||
for (res in resources) {
|
for (res in resources) {
|
||||||
properties(res).forEach { property ->
|
properties(res).forEach { property ->
|
||||||
// Comment
|
writeSyntheticProperty(property.first, res, property.second)
|
||||||
if (supportV4 || !isFromSupportV4Package(property.first)) {
|
|
||||||
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) {
|
private fun KotlinStringWriter.writeSyntheticProperty(receiver: String, widget: AndroidResource, stubCall: String) {
|
||||||
// extract startsWith() to fun
|
// 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 cast = if (widget.className != "View") " as? $className" else ""
|
||||||
val body = arrayListOf("return $stubCall$cast")
|
val body = arrayListOf("return $stubCall$cast")
|
||||||
writeImmutableExtensionProperty(receiver,
|
writeImmutableExtensionProperty(receiver,
|
||||||
|
|||||||
+12
-9
@@ -22,28 +22,29 @@ public data class AndroidModuleInfo(val applicationPackage: String, resDirectori
|
|||||||
|
|
||||||
public abstract class AndroidResource(val id: String) {
|
public abstract class AndroidResource(val id: String) {
|
||||||
public abstract val className: String
|
public abstract val className: String
|
||||||
|
public open val supportClassName: String
|
||||||
|
get() = className
|
||||||
|
|
||||||
public abstract val mainProperties: List<Pair<String, String>>
|
public abstract val mainProperties: List<Pair<String, String>>
|
||||||
|
public open val mainPropertiesForSupportV4: List<Pair<String, String>> = listOf()
|
||||||
public open val viewProperties: List<Pair<String, String>> = listOf()
|
public open val viewProperties: List<Pair<String, String>> = listOf()
|
||||||
|
|
||||||
public open fun sameClass(other: AndroidResource): Boolean = false
|
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) {
|
public class AndroidWidget(id: String, override val className: String) : AndroidResource(id) {
|
||||||
private companion object {
|
private companion object {
|
||||||
val MAIN_PROPERTIES = listOf(
|
val MAIN_PROPERTIES = listOf(
|
||||||
AndroidConst.ACTIVITY_FQNAME to "findViewById(0)",
|
AndroidConst.ACTIVITY_FQNAME to "findViewById(0)",
|
||||||
AndroidConst.FRAGMENT_FQNAME to "getView().findViewById(0)",
|
AndroidConst.FRAGMENT_FQNAME to "getView().findViewById(0)")
|
||||||
AndroidConst.SUPPORT_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)")
|
val VIEW_PROPERTIES = listOf("android.view.View" to "findViewById(0)")
|
||||||
}
|
}
|
||||||
|
|
||||||
override val mainProperties = MAIN_PROPERTIES
|
override val mainProperties = MAIN_PROPERTIES
|
||||||
|
override val mainPropertiesForSupportV4 = MAIN_PROPERTIES_SUPPORT_V4
|
||||||
override val viewProperties = VIEW_PROPERTIES
|
override val viewProperties = VIEW_PROPERTIES
|
||||||
|
|
||||||
override fun sameClass(other: AndroidResource) = other is AndroidWidget
|
override fun sameClass(other: AndroidResource) = other is AndroidWidget
|
||||||
@@ -53,16 +54,18 @@ public class AndroidFragment(id: String) : AndroidResource(id) {
|
|||||||
private companion object {
|
private companion object {
|
||||||
val MAIN_PROPERTIES = listOf(
|
val MAIN_PROPERTIES = listOf(
|
||||||
AndroidConst.ACTIVITY_FQNAME to "getFragmentManager().findFragmentById(0)",
|
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_FQNAME to "getFragmentManager().findFragmentById(0)",
|
||||||
AndroidConst.SUPPORT_FRAGMENT_ACTIVITY_FQNAME to "getSupportFragmentManager().findFragmentById(0)")
|
AndroidConst.SUPPORT_FRAGMENT_ACTIVITY_FQNAME to "getSupportFragmentManager().findFragmentById(0)")
|
||||||
}
|
}
|
||||||
|
|
||||||
override val className = AndroidConst.FRAGMENT_FQNAME
|
override val className = AndroidConst.FRAGMENT_FQNAME
|
||||||
|
override val supportClassName = AndroidConst.SUPPORT_FRAGMENT_FQNAME
|
||||||
|
|
||||||
override val mainProperties = MAIN_PROPERTIES
|
override val mainProperties = MAIN_PROPERTIES
|
||||||
|
override val mainPropertiesForSupportV4 = MAIN_PROPERTIES_SUPPORT_V4
|
||||||
|
|
||||||
override fun sameClass(other: AndroidResource) = other is AndroidFragment
|
override fun sameClass(other: AndroidResource) = other is AndroidFragment
|
||||||
|
|
||||||
override fun supportClassName() = AndroidConst.SUPPORT_FRAGMENT_FQNAME
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user