fixed(uidesigner): some widgets are not included in widgets list

This commit is contained in:
Akash Yadav
2022-12-20 11:41:27 +05:30
parent ea49f2ac4e
commit 8e58f71f8d
6 changed files with 71 additions and 35 deletions
@@ -0,0 +1,4 @@
<vector android:height="24dp" android:viewportHeight="16"
android:viewportWidth="16" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#9AA7B0" android:fillType="evenOdd" android:pathData="M1,3h14v10L1,13L1,3zM3,5v6h10L13,5L3,5z"/>
</vector>
+26 -25
View File
@@ -470,31 +470,32 @@
<string name="ui_category_widgets">Widgets</string>
<string name="ui_category_layouts">Layouts</string>
<string name="widget_textview">TextView</string>
<string name="widget_button">Button</string>
<string name="widget_checkbox">CheckBox</string>
<string name="widget_checked_textview">CheckedTextView</string>
<string name="widget_edittext">EditText</string>
<string name="widget_image_button">ImageButton</string>
<string name="widget_image_view">ImageView</string>
<string name="widget_progressbar">ProgressBar</string>
<string name="widget_radio_button">RadioButton</string>
<string name="widget_seekbar">SeekBar</string>
<string name="widget_spinner">Spinner</string>
<string name="layout_linear">LinearLayout</string>
<string name="layout_relative">RelativeLayout</string>
<string name="widget_auto_complete_textview">AutoCompleteTextView</string>
<string name="widget_listview">ListView</string>
<string name="widget_surfaceview">SurfaceView</string>
<string name="widget_switch">Switch</string>
<string name="widget_textureview">TextureView</string>
<string name="widget_togglebutton">ToggleButton</string>
<string name="widget_webview">WebView</string>
<string name="widget_frame_layout">FrameLayout</string>
<string name="widget_grid_layout">GridLayout</string>
<string name="widget_linear_layout_horz">LinearLayout (H)</string>
<string name="widget_linear_layout_vert">LinearLayout (V)</string>
<string name="widget_relative_layout">RelativeLayout</string>
<string name="widget_view" translatable="false">View</string>
<string name="widget_textview" translatable="false">TextView</string>
<string name="widget_button" translatable="false">Button</string>
<string name="widget_checkbox" translatable="false">CheckBox</string>
<string name="widget_checked_textview" translatable="false">CheckedTextView</string>
<string name="widget_edittext" translatable="false">EditText</string>
<string name="widget_image_button" translatable="false">ImageButton</string>
<string name="widget_image_view" translatable="false">ImageView</string>
<string name="widget_progressbar" translatable="false">ProgressBar</string>
<string name="widget_radio_button" translatable="false">RadioButton</string>
<string name="widget_seekbar" translatable="false">SeekBar</string>
<string name="widget_spinner" translatable="false">Spinner</string>
<string name="layout_linear" translatable="false">LinearLayout</string>
<string name="layout_relative" translatable="false">RelativeLayout</string>
<string name="widget_auto_complete_textview" translatable="false">AutoCompleteTextView</string>
<string name="widget_listview" translatable="false">ListView</string>
<string name="widget_surfaceview" translatable="false">SurfaceView</string>
<string name="widget_switch" translatable="false">Switch</string>
<string name="widget_textureview" translatable="false">TextureView</string>
<string name="widget_togglebutton" translatable="false">ToggleButton</string>
<string name="widget_webview" translatable="false">WebView</string>
<string name="widget_frame_layout" translatable="false">FrameLayout</string>
<string name="widget_grid_layout" translatable="false">GridLayout</string>
<string name="widget_linear_layout_horz" translatable="false">LinearLayout (H)</string>
<string name="widget_linear_layout_vert" translatable="false">LinearLayout (V)</string>
<string name="widget_relative_layout" translatable="false">RelativeLayout</string>
<!-- GIT -->
<string name="git_clone">Clone</string>
Binary file not shown.
@@ -19,7 +19,11 @@ package com.itsaky.androidide.inflater.internal.adapters
import android.widget.Spinner
import com.itsaky.androidide.annotations.inflater.ViewAdapter
import com.itsaky.androidide.annotations.uidesigner.IncludeInDesigner
import com.itsaky.androidide.annotations.uidesigner.IncludeInDesigner.Group.WIDGETS
import com.itsaky.androidide.inflater.AttributeHandlerScope
import com.itsaky.androidide.inflater.R
import com.itsaky.androidide.inflater.models.UiWidget
/**
* Attribute adapter for [Spinner].
@@ -27,6 +31,7 @@ import com.itsaky.androidide.inflater.AttributeHandlerScope
* @author Akash Yadav
*/
@ViewAdapter(Spinner::class)
@IncludeInDesigner(group = WIDGETS)
open class SpinnerAdapter<T : Spinner> : AbsSpinnerAdapter<T>() {
override fun createAttrHandlers(create: (String, AttributeHandlerScope<T>.() -> Unit) -> Unit) {
super.createAttrHandlers(create)
@@ -40,4 +45,10 @@ open class SpinnerAdapter<T : Spinner> : AbsSpinnerAdapter<T>() {
create("gravity") { view.gravity = parseGravity(value) }
create("popupBackground") { view.setPopupBackgroundDrawable(parseDrawable(context, value)) }
}
override fun createUiWidgets(): List<UiWidget> {
return listOf(
UiWidget(Spinner::class.java, R.string.widget_spinner, R.drawable.ic_widget_spinner)
)
}
}
@@ -23,8 +23,12 @@ import android.text.util.Linkify
import android.util.TypedValue
import android.widget.TextView
import com.blankj.utilcode.util.SizeUtils
import com.itsaky.androidide.annotations.uidesigner.IncludeInDesigner
import com.itsaky.androidide.annotations.uidesigner.IncludeInDesigner.Group.WIDGETS
import com.itsaky.androidide.inflater.AttributeHandlerScope
import com.itsaky.androidide.inflater.IView
import com.itsaky.androidide.inflater.R
import com.itsaky.androidide.inflater.models.UiWidget
import com.itsaky.androidide.inflater.utils.newAttribute
import java.util.regex.Pattern
@@ -34,6 +38,7 @@ import java.util.regex.Pattern
* @author Akash Yadav
*/
@com.itsaky.androidide.annotations.inflater.ViewAdapter(TextView::class)
@IncludeInDesigner(group = WIDGETS)
open class TextViewAdapter<T : TextView> : ViewAdapter<T>() {
override fun createAttrHandlers(create: (String, AttributeHandlerScope<T>.() -> Unit) -> Unit) {
@@ -118,6 +123,12 @@ open class TextViewAdapter<T : TextView> : ViewAdapter<T>() {
create("typeface") { view.typeface = parseTypeface(value) }
}
override fun createUiWidgets(): List<UiWidget> {
return listOf(
UiWidget(TextView::class.java, R.string.widget_textview, R.drawable.ic_widget_textview)
)
}
override fun applyBasic(view: IView) {
super.applyBasic(view)
view.addAttribute(newAttribute(view = view, name = "text", value = "AndroidIDE"))
@@ -31,11 +31,15 @@ import androidx.annotation.ChecksSdkIntAtLeast
import androidx.core.view.updatePadding
import androidx.core.view.updatePaddingRelative
import com.itsaky.androidide.annotations.inflater.ViewAdapter
import com.itsaky.androidide.annotations.uidesigner.IncludeInDesigner
import com.itsaky.androidide.annotations.uidesigner.IncludeInDesigner.Group.WIDGETS
import com.itsaky.androidide.inflater.AttributeHandlerScope
import com.itsaky.androidide.inflater.IAttribute
import com.itsaky.androidide.inflater.INamespace
import com.itsaky.androidide.inflater.IView
import com.itsaky.androidide.inflater.IViewAdapter
import com.itsaky.androidide.inflater.R
import com.itsaky.androidide.inflater.models.UiWidget
import com.itsaky.androidide.inflater.utils.newAttribute
/**
@@ -44,6 +48,7 @@ import com.itsaky.androidide.inflater.utils.newAttribute
* @author Akash Yadav
*/
@ViewAdapter(forView = View::class)
@IncludeInDesigner(group = WIDGETS)
open class ViewAdapter<T : View> : IViewAdapter<T>() {
override fun createAttrHandlers(create: (String, AttributeHandlerScope<T>.() -> Unit) -> Unit) {
@@ -101,38 +106,42 @@ open class ViewAdapter<T : View> : IViewAdapter<T>() {
create("translationZ") { view.translationZ = parseFloat(value) }
create("visibility") { view.visibility = parseVisibility(value) }
}
override fun AttributeHandlerScope<T>.applyLayoutParams() : Boolean {
override fun AttributeHandlerScope<T>.applyLayoutParams(): Boolean {
var applied = false
if (layoutParams is LinearLayout.LayoutParams) {
applied = applyLinearLayoutParams(layoutParams, name, value)
}
if (!applied && layoutParams is RelativeLayout.LayoutParams) {
applied = applyRelativeLayoutParams(layoutParams, file.resName, name, value)
}
if (!applied && layoutParams is FrameLayout.LayoutParams) {
applied = applyFrameLayoutParams(layoutParams, name, value)
}
if (!applied && layoutParams is MarginLayoutParams) {
applied = applyMarginParams(context, layoutParams, name, value)
}
if (!applied) {
applied = applyLayoutParams(context, layoutParams, name, value)
}
if (applied) {
view.layoutParams = layoutParams
}
return applied
}
override fun createUiWidgets(): List<UiWidget> {
return listOf(UiWidget(View::class.java, R.string.widget_view, R.drawable.ic_widget_view))
}
override fun applyBasic(view: IView) {
view.addAttribute(newAttribute(view = view, name = "layout_height", value = "wrap_content"))
view.addAttribute(newAttribute(view = view, name = "layout_width", value = "wrap_content"))