From 35626680f57ddfc49c0a422e250c795b5ddb1604 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Fri, 11 Nov 2022 21:25:11 +0530 Subject: [PATCH] Added more attribute adapters --- .../adapters/AbsoluteLayoutAttrAdapter.kt | 30 ++++++++++ .../AutoCompleteTextViewAttrAdapter.kt | 57 +++++++++++++++++++ .../internal/adapters/EditTextAttrAdapter.kt | 3 +- .../adapters/SurfaceViewAttrAdapter.kt | 27 +++++++++ .../adapters/TextureViewAttrAdapter.kt | 29 ++++++++++ .../internal/adapters/WebViewAttrAdapter.kt | 29 ++++++++++ 6 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsoluteLayoutAttrAdapter.kt create mode 100644 xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AutoCompleteTextViewAttrAdapter.kt create mode 100644 xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SurfaceViewAttrAdapter.kt create mode 100644 xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextureViewAttrAdapter.kt create mode 100644 xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/WebViewAttrAdapter.kt diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsoluteLayoutAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsoluteLayoutAttrAdapter.kt new file mode 100644 index 000000000..562e8ecf8 --- /dev/null +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsoluteLayoutAttrAdapter.kt @@ -0,0 +1,30 @@ +/* + * This file is part of AndroidIDE. + * + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ + +package com.itsaky.androidide.inflater.internal.adapters + +import android.widget.AbsoluteLayout +import com.itsaky.androidide.annotations.inflater.AttributeAdapter + +/** + * Attribute adapter for [AbsoluteLayout]. + * + * @author Akash Yadav + */ +@Suppress("DEPRECATION") +@AttributeAdapter(AbsoluteLayout::class) +open class AbsoluteLayoutAttrAdapter : ViewGroupAttrAdapter() diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AutoCompleteTextViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AutoCompleteTextViewAttrAdapter.kt new file mode 100644 index 000000000..a3a238c43 --- /dev/null +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AutoCompleteTextViewAttrAdapter.kt @@ -0,0 +1,57 @@ +/* + * This file is part of AndroidIDE. + * + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ + +package com.itsaky.androidide.inflater.internal.adapters + +import android.content.Context +import android.view.ViewGroup.LayoutParams +import android.widget.AutoCompleteTextView +import com.itsaky.androidide.annotations.inflater.AttributeAdapter +import com.itsaky.androidide.inflater.IAttribute +import com.itsaky.androidide.inflater.INamespace +import com.itsaky.androidide.inflater.IView +import com.itsaky.androidide.inflater.internal.LayoutFile + +/** + * Attribute adapter for [AutoCompleteTextView]. + * + * @author Akash Yadav + */ +@AttributeAdapter(AutoCompleteTextView::class) +class AutoCompleteTextViewAttrAdapter : EditTextAttrAdapter() { + + override fun apply(view: IView, attribute: IAttribute): Boolean { + return doApply(view, attribute) { + file: LayoutFile, + context: Context, + _: LayoutParams, + _: INamespace, + name: String, + value: String -> + var applied = true + when (name) { + "completionHint" -> completionHint = parseString(value) + "completionThreshold" -> threshold = parseInteger(value, 1) + "dropDownAnchor" -> dropDownAnchor = parseId(file.resName, value) + "dropDownWidth" -> dropDownWidth = parseDimension(context, value) + "dropDownHeight" -> dropDownHeight = parseDimension(context, value) + else -> applied = false + } + return@doApply applied + } + } +} diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/EditTextAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/EditTextAttrAdapter.kt index ed6a95a09..b19e6c954 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/EditTextAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/EditTextAttrAdapter.kt @@ -25,4 +25,5 @@ import com.itsaky.androidide.annotations.inflater.AttributeAdapter * * @author Akash Yadav */ -@AttributeAdapter(EditText::class) class EditTextAttrAdapter : TextViewAttrAdapter() +@AttributeAdapter(EditText::class) +open class EditTextAttrAdapter : TextViewAttrAdapter() diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SurfaceViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SurfaceViewAttrAdapter.kt new file mode 100644 index 000000000..505e733e0 --- /dev/null +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SurfaceViewAttrAdapter.kt @@ -0,0 +1,27 @@ +/* + * This file is part of AndroidIDE. + * + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ + +package com.itsaky.androidide.inflater.internal.adapters + +import android.view.SurfaceView +import com.itsaky.androidide.annotations.inflater.AttributeAdapter + +/** + * Attribute adapter for [SurfaceView]. + * @author Akash Yadav + */ +@AttributeAdapter(SurfaceView::class) class SurfaceViewAttrAdapter : ViewAttrAdapter() diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextureViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextureViewAttrAdapter.kt new file mode 100644 index 000000000..2ba573e2d --- /dev/null +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextureViewAttrAdapter.kt @@ -0,0 +1,29 @@ +/* + * This file is part of AndroidIDE. + * + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ + +package com.itsaky.androidide.inflater.internal.adapters + +import android.view.TextureView +import com.itsaky.androidide.annotations.inflater.AttributeAdapter + +/** + * Attribute adapter for [TextureView]. + * + * @author Akash Yadav + */ +@AttributeAdapter(TextureView::class) +class TextureViewAttrAdapter : ViewAttrAdapter() \ No newline at end of file diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/WebViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/WebViewAttrAdapter.kt new file mode 100644 index 000000000..f81fa0a86 --- /dev/null +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/WebViewAttrAdapter.kt @@ -0,0 +1,29 @@ +/* + * This file is part of AndroidIDE. + * + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ + +package com.itsaky.androidide.inflater.internal.adapters + +import android.webkit.WebView +import com.itsaky.androidide.annotations.inflater.AttributeAdapter + +/** + * Attribute adapter for [WebView]. + * + * @author Akash Yadav + */ +@AttributeAdapter(WebView::class) +class WebViewAttrAdapter : AbsoluteLayoutAttrAdapter() \ No newline at end of file