Added more attribute adapters

This commit is contained in:
Akash Yadav
2022-11-11 21:25:11 +05:30
parent 60d5dc7bd9
commit 35626680f5
6 changed files with 174 additions and 1 deletions
@@ -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 <https://www.gnu.org/licenses/>.
*/
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()
@@ -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 <https://www.gnu.org/licenses/>.
*/
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<AutoCompleteTextView>(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
}
}
}
@@ -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()
@@ -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 <https://www.gnu.org/licenses/>.
*/
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()
@@ -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 <https://www.gnu.org/licenses/>.
*/
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()
@@ -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 <https://www.gnu.org/licenses/>.
*/
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()