diff --git a/.idea/compiler.xml b/.idea/compiler.xml index d1b013add..026741050 100755 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -94,7 +94,6 @@ - \ No newline at end of file diff --git a/annotation-processors/src/main/java/com/itsaky/androidide/annotations/processor/ViewAdapterIndexGenerator.kt b/annotation-processors/src/main/java/com/itsaky/androidide/annotations/processor/ViewAdapterIndexGenerator.kt index 0aef09d54..22c962bde 100644 --- a/annotation-processors/src/main/java/com/itsaky/androidide/annotations/processor/ViewAdapterIndexGenerator.kt +++ b/annotation-processors/src/main/java/com/itsaky/androidide/annotations/processor/ViewAdapterIndexGenerator.kt @@ -49,7 +49,7 @@ import javax.tools.Diagnostic.Kind.ERROR class ViewAdapterIndexGenerator { private val indexClassBuilder = - TypeSpec.classBuilder(INDEX_CLASS_NAME).addModifiers(PUBLIC, FINAL) + TypeSpec.classBuilder(INDEX_CLASS_NAME).addModifiers(PUBLIC, FINAL).addSuperinterface(viewAdapterInterface) private val indexAddStatements = CodeBlock.builder() fun init(env: ProcessingEnvironment) { @@ -77,12 +77,20 @@ class ViewAdapterIndexGenerator { ) ) - addUninstantiableConstructor(indexClassBuilder) + addPrivateConstructor(indexClassBuilder) + + val indexImpl = ClassName.get(INDEX_PACKAGE_NAME, INDEX_CLASS_NAME) + indexClassBuilder.addField( + FieldSpec.builder(indexImpl, "INSTANCE", PUBLIC, STATIC, FINAL) + .initializer("new \$T()", indexImpl) + .build() + ) indexClassBuilder.addMethod( MethodSpec.methodBuilder("getAdapter") + .addAnnotation(Override::class.java) .addAnnotation(ClassName.get("androidx.annotation", "Nullable")) - .addModifiers(PUBLIC, STATIC) + .addModifiers(PUBLIC) .addParameter(String::class.java, "view", FINAL) .returns(adapterType) .addStatement("var adapter = \$L.get(\$L)", INDEX_MAP_FIELD, "view") @@ -92,11 +100,12 @@ class ViewAdapterIndexGenerator { .addStatement("return adapter") .build() ) - + indexClassBuilder.addMethod( MethodSpec.methodBuilder("getViewAdapter") + .addAnnotation(Override::class.java) .addAnnotation(ClassName.get("androidx.annotation", "Nullable")) - .addModifiers(PUBLIC, STATIC) + .addModifiers(PUBLIC) .addParameter(String::class.java, "view", FINAL) .returns(adapterType) .addStatement("return \$L.get(\$L)", INDEX_MAP_FIELD, "view") @@ -138,8 +147,9 @@ class ViewAdapterIndexGenerator { indexClassBuilder.addMethod( MethodSpec.methodBuilder("getWidgetProviders") + .addAnnotation(Override::class.java) .addAnnotation(nonNull) - .addModifiers(PUBLIC, STATIC) + .addModifiers(PUBLIC) .returns(listOfViewAdapters) .addParameter(groupParam) .addStatement("return \$L.get(group)", INDEX_PROVIDER_MAP_FIELD) @@ -224,17 +234,8 @@ class ViewAdapterIndexGenerator { file.build().writeTo(generatedDir) } - private fun addUninstantiableConstructor(builder: TypeSpec.Builder) { - builder.addMethod( - MethodSpec.constructorBuilder() - .addModifiers(PRIVATE) - .addStatement( - "throw new \$T(\$S)", - UnsupportedOperationException::class.java, - "This class cannot be instantiated." - ) - .build() - ) + private fun addPrivateConstructor(builder: TypeSpec.Builder) { + builder.addMethod(MethodSpec.constructorBuilder().addModifiers(PRIVATE).build()) } private fun getViewTypeName( diff --git a/annotation-processors/src/main/java/com/itsaky/androidide/annotations/processor/utils.kt b/annotation-processors/src/main/java/com/itsaky/androidide/annotations/processor/utils.kt index b373d9ddf..d840cb86c 100644 --- a/annotation-processors/src/main/java/com/itsaky/androidide/annotations/processor/utils.kt +++ b/annotation-processors/src/main/java/com/itsaky/androidide/annotations/processor/utils.kt @@ -17,6 +17,7 @@ package com.itsaky.androidide.annotations.processor +import com.squareup.javapoet.ClassName import javax.annotation.processing.ProcessingEnvironment import javax.lang.model.element.TypeElement import javax.lang.model.type.TypeMirror @@ -31,13 +32,16 @@ const val ADAPTER_BASE_CLASS = "$ADAPTER_BASE_CLASS_PCK.$ADAPTER_BASE_CLASS_NAME const val ADAPTER_FUNC_CREATE_WIDGET = "createUiWidgets" const val INDEX_PACKAGE_NAME = "com.itsaky.androidide.inflater.internal" -const val INDEX_CLASS_NAME = "ViewAdapterIndex" +const val INDEX_CLASS_NAME = "ViewAdapterIndexImpl" const val INDEX_MAP_FIELD = "adapterMap" const val INDEX_PROVIDER_MAP_FIELD = "widgetProviders" const val METHOD_SET_SUPERCLASS_HIERARCHY = "setSuperclassHierarchy" const val METHOD_SET_MODULE = "setModuleNamespace" +val viewAdapterInterface: ClassName = + ClassName.get("com.itsaky.androidide.inflater", "IViewAdapterIndex") + private var adapterElement: TypeElement? = null private var viewElement: TypeElement? = null diff --git a/app/src/main/assets/data/common/tooling-api-all.jar b/app/src/main/assets/data/common/tooling-api-all.jar index 7e03dd914..a9167232f 100644 Binary files a/app/src/main/assets/data/common/tooling-api-all.jar and b/app/src/main/assets/data/common/tooling-api-all.jar differ diff --git a/build.gradle.kts b/build.gradle.kts index a4ac64300..6e606d6cb 100755 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -27,7 +27,9 @@ plugins { alias(libs.plugins.kotlin) apply false } -buildscript { dependencies { classpath("com.google.android.gms:oss-licenses-plugin:0.10.6") } } +buildscript { dependencies { classpath("com.google.android.gms:oss-licenses-plugin:0.10.6") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.21") +} } fun Project.configureBaseExtension() { extensions.findByType(BaseExtension::class)?.run { diff --git a/settings.gradle.kts b/settings.gradle.kts index 4dc85849a..1b1fe1b8e 100755 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -56,6 +56,7 @@ include( ":shared", ":treeview", ":uidesigner", + ":xml-inflater", ":gradle-plugin", diff --git a/uidesigner/build.gradle.kts b/uidesigner/build.gradle.kts index eba6683a0..f77d8ddb7 100644 --- a/uidesigner/build.gradle.kts +++ b/uidesigner/build.gradle.kts @@ -10,8 +10,6 @@ android { dependencies { - kapt(projects.annotationProcessors) - implementation(libs.androidx.appcompat) implementation(libs.androidx.ktx) implementation(libs.androidx.fragment.ktx) @@ -32,14 +30,8 @@ dependencies { implementation(projects.lsp.api) implementation(projects.lsp.xml) implementation(projects.resources) + implementation(projects.xmlInflater) - implementation(projects.subprojects.aaptcompiler) - implementation(projects.subprojects.projects) - implementation(projects.subprojects.xmlUtils) - - - testImplementation(projects.subprojects.projects) - testImplementation(projects.subprojects.toolingApiTesting) testImplementation(libs.tests.junit) testImplementation(libs.tests.google.truth) testImplementation(libs.tests.robolectric) diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/UIDesignerActivity.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/UIDesignerActivity.kt index 3c5b2a54b..61750ea2f 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/UIDesignerActivity.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/UIDesignerActivity.kt @@ -29,7 +29,6 @@ import androidx.appcompat.app.ActionBarDrawerToggle import androidx.appcompat.view.menu.MenuBuilder import androidx.core.view.GravityCompat import androidx.fragment.app.Fragment -import androidx.navigation.fragment.NavHostFragment import com.itsaky.androidide.actions.ActionData import com.itsaky.androidide.actions.ActionItem.Location.UI_DESIGNER_TOOLBAR import com.itsaky.androidide.actions.ActionsRegistry @@ -183,7 +182,7 @@ class UIDesignerActivity : BaseIDEActivity() { return workspace } - fun setupHierarchy(view: IView) { + fun setupHierarchy(view: com.itsaky.androidide.inflater.IView) { binding?.hierarchy?.setupWithView(view) { workspace()?.showViewInfo(it) } diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/adapters/AddAttrListAdapter.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/adapters/AddAttrListAdapter.kt index 17b5bfe03..432735198 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/adapters/AddAttrListAdapter.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/adapters/AddAttrListAdapter.kt @@ -31,8 +31,8 @@ import com.itsaky.androidide.uidesigner.databinding.LayoutAddAttrItemBinding * @author Akash Yadav */ class AddAttrListAdapter( - private val attributes: List, - private val onClick: (IAttribute) -> Unit = {} + private val attributes: List, + private val onClick: (com.itsaky.androidide.inflater.IAttribute) -> Unit = {} ) : RecyclerView.Adapter() { class VH(val binding: LayoutAddAttrItemBinding) : RecyclerView.ViewHolder(binding.root) diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/adapters/ViewAttrListAdapter.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/adapters/ViewAttrListAdapter.kt index 0766accfe..275e2070a 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/adapters/ViewAttrListAdapter.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/adapters/ViewAttrListAdapter.kt @@ -40,10 +40,10 @@ import com.itsaky.androidide.utils.DialogUtils * @author Akash Yadav */ internal class ViewAttrListAdapter( - attributes: List, + attributes: List, private val viewModel: WorkspaceViewModel?, - private val onDeleteAttr: (IAttribute) -> Boolean, - private val onClick: (IAttribute) -> Unit + private val onDeleteAttr: (com.itsaky.androidide.inflater.IAttribute) -> Boolean, + private val onClick: (com.itsaky.androidide.inflater.IAttribute) -> Unit ) : RecyclerView.Adapter() { private val attributes = attributes.sortedBy { it.name }.toMutableList() @@ -78,7 +78,7 @@ internal class ViewAttrListAdapter( val viewModel = this.viewModel ?: return@setOnClickListener val attrUpdateListener = object : SingleAttributeChangeListener() { - override fun onAttributeUpdated(view: IView, attribute: IAttribute, oldValue: String) { + override fun onAttributeUpdated(view: com.itsaky.androidide.inflater.IView, attribute: com.itsaky.androidide.inflater.IAttribute, oldValue: String) { binding.attrValue.text = attribute.value } } diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/drag/WidgetDragListener.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/drag/WidgetDragListener.kt index 9583979f6..246fbd9a2 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/drag/WidgetDragListener.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/drag/WidgetDragListener.kt @@ -36,7 +36,7 @@ import kotlin.math.min */ internal class WidgetDragListener( val view: UiViewGroup, - private val placeholder: IView, + private val placeholder: com.itsaky.androidide.inflater.IView, private val touchSlop: Int ) : View.OnDragListener { @@ -49,7 +49,7 @@ internal class WidgetDragListener( val name = when (val data = event.localState) { - is IView -> data.name + is com.itsaky.androidide.inflater.IView -> data.name is UiWidget -> data.name else -> throw IllegalArgumentException("A local state of UiWidget or IView is expected") } @@ -92,7 +92,7 @@ internal class WidgetDragListener( DragEvent.ACTION_DROP -> { val child = when (val data = event.localState) { - is IView -> { + is com.itsaky.androidide.inflater.IView -> { data.removeFromParent() data } diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/drag/WidgetTouchListener.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/drag/WidgetTouchListener.kt index c5f1af98d..6833ba611 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/drag/WidgetTouchListener.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/drag/WidgetTouchListener.kt @@ -34,9 +34,9 @@ import com.itsaky.androidide.uidesigner.fragments.DesignerWorkspaceFragment * @author Akash Yadav */ internal class WidgetTouchListener( - private val view: IView, + private val view: com.itsaky.androidide.inflater.IView, context: Context, - private val onClick: (IView) -> Boolean = { false } + private val onClick: (com.itsaky.androidide.inflater.IView) -> Boolean = { false } ) : OnTouchListener { private var touchedView: View? = null diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/AddAttrFragment.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/AddAttrFragment.kt index f99c5a26b..39e6d83f7 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/AddAttrFragment.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/AddAttrFragment.kt @@ -24,8 +24,8 @@ import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController -import com.itsaky.androidide.inflater.internal.ViewAdapterIndex import com.itsaky.androidide.inflater.utils.newAttribute +import com.itsaky.androidide.inflater.viewAdapter import com.itsaky.androidide.uidesigner.R import com.itsaky.androidide.uidesigner.R.string import com.itsaky.androidide.uidesigner.adapters.AddAttrListAdapter @@ -83,7 +83,7 @@ class AddAttrFragment : Fragment() { private fun showAttrs() { val binding = this.binding ?: return val view = viewModel.view ?: return - val adapter = ViewAdapterIndex.getAdapter(view.name) ?: return + val adapter = view.viewAdapter ?: return val attributes = adapter.supportedAttributes.filterNot { view.hasAttribute(it.namespace.uri, it.name) } binding.attrList.adapter = diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/AttrValueEditorFragment.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/AttrValueEditorFragment.kt index 1331cf355..759da9186 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/AttrValueEditorFragment.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/AttrValueEditorFragment.kt @@ -27,10 +27,8 @@ import android.widget.ArrayAdapter import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import com.itsaky.androidide.inflater.internal.ViewImpl -import com.itsaky.androidide.inflater.utils.newAttribute import com.itsaky.androidide.uidesigner.databinding.LayoutAttrValueEditorBinding import com.itsaky.androidide.uidesigner.databinding.LayoutViewInfoHeaderBinding -import com.itsaky.androidide.uidesigner.models.UiAttribute import com.itsaky.androidide.uidesigner.utils.ValueCompletionProvider import com.itsaky.androidide.uidesigner.viewmodel.WorkspaceViewModel diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/DesignerWorkspaceFragment.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/DesignerWorkspaceFragment.kt index 77aab7574..2be73ad7e 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/DesignerWorkspaceFragment.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/DesignerWorkspaceFragment.kt @@ -142,7 +142,7 @@ class DesignerWorkspaceFragment : BaseFragment() { this.inflater.close() } - internal fun setupView(view: IView) { + internal fun setupView(view: com.itsaky.androidide.inflater.IView) { if (view is CommonUiView && !view.needSetup) { return } @@ -171,7 +171,7 @@ class DesignerWorkspaceFragment : BaseFragment() { } } - internal fun showViewInfo(view: IView) { + internal fun showViewInfo(view: com.itsaky.androidide.inflater.IView) { viewModel.view = view viewInfo.show(childFragmentManager, ViewInfoSheet.TAG) } diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/WorkspaceLayoutInflationHandler.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/WorkspaceLayoutInflationHandler.kt index 0800db31e..3494e2248 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/WorkspaceLayoutInflationHandler.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/WorkspaceLayoutInflationHandler.kt @@ -23,7 +23,6 @@ import com.itsaky.androidide.inflater.events.InflationFinishEvent import com.itsaky.androidide.inflater.events.InflationStartEvent import com.itsaky.androidide.inflater.events.OnInflateViewEvent import com.itsaky.androidide.inflater.internal.ViewImpl -import com.itsaky.androidide.uidesigner.UIDesignerActivity /** * Handles layout inflation events in [DesignerWorkspaceFragment]. diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/WorkspaceViewAttrHandler.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/WorkspaceViewAttrHandler.kt index 77a98ba08..6537e4395 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/WorkspaceViewAttrHandler.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/WorkspaceViewAttrHandler.kt @@ -29,7 +29,7 @@ import com.itsaky.androidide.uidesigner.undo.AttrUpdatedAction * * @author Akash Yadav */ -internal class WorkspaceViewAttrHandler : IView.AttributeChangeListener { +internal class WorkspaceViewAttrHandler : com.itsaky.androidide.inflater.IView.AttributeChangeListener { private var fragment: DesignerWorkspaceFragment? = null @@ -41,17 +41,17 @@ internal class WorkspaceViewAttrHandler : IView.AttributeChangeListener { this.fragment = null } - override fun onAttributeAdded(view: IView, attribute: IAttribute) { + override fun onAttributeAdded(view: com.itsaky.androidide.inflater.IView, attribute: com.itsaky.androidide.inflater.IAttribute) { val frag = this.fragment ?: return frag.undoManager.push(AttrAddedAction(view = view, attr = attribute as UiAttribute)) } - override fun onAttributeRemoved(view: IView, attribute: IAttribute) { + override fun onAttributeRemoved(view: com.itsaky.androidide.inflater.IView, attribute: com.itsaky.androidide.inflater.IAttribute) { val frag = this.fragment ?: return frag.undoManager.push(AttrRemovedAction(view = view, attr = attribute as UiAttribute)) } - override fun onAttributeUpdated(view: IView, attribute: IAttribute, oldValue: String) { + override fun onAttributeUpdated(view: com.itsaky.androidide.inflater.IView, attribute: com.itsaky.androidide.inflater.IAttribute, oldValue: String) { val frag = this.fragment ?: return frag.undoManager.push( AttrUpdatedAction( diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/WorkspaceViewHierarchyHandler.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/WorkspaceViewHierarchyHandler.kt index 5a5ca6c1e..546d6d7d1 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/WorkspaceViewHierarchyHandler.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/WorkspaceViewHierarchyHandler.kt @@ -34,7 +34,7 @@ import com.itsaky.androidide.uidesigner.viewmodel.WorkspaceViewModel * * @author Akash Yadav */ -internal class WorkspaceViewHierarchyHandler : IViewGroup.SingleOnHierarchyChangeListener() { +internal class WorkspaceViewHierarchyHandler : com.itsaky.androidide.inflater.IViewGroup.SingleOnHierarchyChangeListener() { private var fragment: DesignerWorkspaceFragment? = null @@ -54,7 +54,7 @@ internal class WorkspaceViewHierarchyHandler : IViewGroup.SingleOnHierarchyChang ) } - private fun pushAction(view: IView, parent: IViewGroup, index: Int, added: Boolean) { + private fun pushAction(view: com.itsaky.androidide.inflater.IView, parent: com.itsaky.androidide.inflater.IViewGroup, index: Int, added: Boolean) { val frag = this.fragment ?: return if (view is PlaceholderView) { return @@ -77,15 +77,15 @@ internal class WorkspaceViewHierarchyHandler : IViewGroup.SingleOnHierarchyChang frag.requireActivity().invalidateOptionsMenu() } - override fun beforeViewAdded(group: IViewGroup, view: IView, index: Int) { + override fun beforeViewAdded(group: com.itsaky.androidide.inflater.IViewGroup, view: com.itsaky.androidide.inflater.IView, index: Int) { animateLayoutChange() } - override fun beforeViewRemoved(group: IViewGroup, view: IView, index: Int) { + override fun beforeViewRemoved(group: com.itsaky.androidide.inflater.IViewGroup, view: com.itsaky.androidide.inflater.IView, index: Int) { animateLayoutChange() } - override fun onViewAdded(group: IViewGroup, view: IView, index: Int) { + override fun onViewAdded(group: com.itsaky.androidide.inflater.IViewGroup, view: com.itsaky.androidide.inflater.IView, index: Int) { val frag = this.fragment ?: return if (!frag.isInflating && view !is PlaceholderView) { // when the inflation process is in progress, setupView method will be called @@ -103,7 +103,7 @@ internal class WorkspaceViewHierarchyHandler : IViewGroup.SingleOnHierarchyChang pushAction(view, group, index, true) } - override fun onViewRemoved(group: IViewGroup, view: IView, index: Int) { + override fun onViewRemoved(group: com.itsaky.androidide.inflater.IViewGroup, view: com.itsaky.androidide.inflater.IView, index: Int) { val frag = this.fragment ?: return if (frag.workspaceView.viewGroup.childCount == 0) { frag.viewModel.errText = frag.getString(R.string.msg_empty_ui_layout) diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/models/UiAttribute.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/models/UiAttribute.kt index 397d24192..9a34f830c 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/models/UiAttribute.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/models/UiAttribute.kt @@ -19,11 +19,10 @@ package com.itsaky.androidide.uidesigner.models import android.os.Parcelable import com.itsaky.androidide.inflater.IAttribute -import com.itsaky.androidide.inflater.INamespace import com.itsaky.androidide.inflater.IView import com.itsaky.androidide.inflater.internal.AttributeImpl import com.itsaky.androidide.inflater.internal.NamespaceImpl -import com.itsaky.androidide.inflater.internal.ViewAdapterIndex +import com.itsaky.androidide.inflater.viewAdapter import kotlinx.parcelize.Parcelize /** @@ -35,7 +34,8 @@ import kotlinx.parcelize.Parcelize open class UiAttribute @JvmOverloads constructor( - override val namespace: NamespaceImpl = INamespace.ANDROID as NamespaceImpl, + override val namespace: NamespaceImpl = + com.itsaky.androidide.inflater.INamespace.ANDROID as NamespaceImpl, override val name: String, override var value: String, internal var isRequired: Boolean = false @@ -48,7 +48,7 @@ constructor( companion object { @JvmStatic fun isRequired(view: IView, attribute: IAttribute): Boolean { - val adapter = ViewAdapterIndex.getAdapter(view.name) ?: return false + val adapter = view.viewAdapter ?: return false return adapter.isRequiredAttribute(attribute) } } diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/models/UiViewGroup.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/models/UiViewGroup.kt index 9c18fac3b..31788ab69 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/models/UiViewGroup.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/models/UiViewGroup.kt @@ -25,8 +25,8 @@ import com.itsaky.androidide.inflater.LayoutBehavior.HORIZONTAL import com.itsaky.androidide.inflater.LayoutBehavior.TOP_LEFT import com.itsaky.androidide.inflater.LayoutBehavior.VERTICAL import com.itsaky.androidide.inflater.internal.LayoutFile -import com.itsaky.androidide.inflater.internal.ViewAdapterIndex import com.itsaky.androidide.inflater.internal.ViewGroupImpl +import com.itsaky.androidide.inflater.viewAdapter /** * Extension of [IView] for the UI Designer. @@ -47,13 +47,12 @@ internal class UiViewGroup(file: LayoutFile, name: String, view: ViewGroup) : if (childCount == 0) { return 0 } - val adapter = - ViewAdapterIndex.getAdapter(name) - + val adapter = viewAdapter + if (adapter !is IViewGroupAdapter) { return childCount } - + return when (adapter.getLayoutBehavior(this)) { TOP_LEFT -> childCount VERTICAL -> computeViewIndexVertically(x, y) diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrAction.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrAction.kt index d9fa4fea5..440797168 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrAction.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrAction.kt @@ -19,14 +19,13 @@ package com.itsaky.androidide.uidesigner.undo import com.itsaky.androidide.inflater.IView import com.itsaky.androidide.uidesigner.models.UiAttribute -import com.itsaky.androidide.utils.ILogger /** * [UndoManager] action related to view attributes. * * @author Akash Yadav */ -internal abstract class AttrAction(protected val view: IView, protected val attr: UiAttribute) : +internal abstract class AttrAction(protected val view: com.itsaky.androidide.inflater.IView, protected val attr: UiAttribute) : IUiAction { override fun toString(): String { diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrAddedAction.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrAddedAction.kt index a8a0630c0..4f1d32175 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrAddedAction.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrAddedAction.kt @@ -25,7 +25,7 @@ import com.itsaky.androidide.uidesigner.models.UiAttribute * * @author Akash Yadav */ -internal class AttrAddedAction(view: IView, attr: UiAttribute) : +internal class AttrAddedAction(view: com.itsaky.androidide.inflater.IView, attr: UiAttribute) : AttrAction(view, attr.copyAttr(view = view) as UiAttribute) { override fun undo() { diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrRemovedAction.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrRemovedAction.kt index cac0e0464..083b8c96e 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrRemovedAction.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrRemovedAction.kt @@ -25,7 +25,7 @@ import com.itsaky.androidide.uidesigner.models.UiAttribute * * @author Akash Yadav */ -internal class AttrRemovedAction(view: IView, attr: UiAttribute) : +internal class AttrRemovedAction(view: com.itsaky.androidide.inflater.IView, attr: UiAttribute) : AttrAction(view, attr.copyAttr(view = view) as UiAttribute) { override fun undo() { diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrUpdatedAction.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrUpdatedAction.kt index b8a141019..954e5f213 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrUpdatedAction.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/AttrUpdatedAction.kt @@ -25,7 +25,7 @@ import com.itsaky.androidide.uidesigner.models.UiAttribute * * @author Akash Yadav */ -internal class AttrUpdatedAction(view: IView, attr: UiAttribute, private val oldValue: String) : +internal class AttrUpdatedAction(view: com.itsaky.androidide.inflater.IView, attr: UiAttribute, private val oldValue: String) : AttrAction(view, attr) { override fun undo() { diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewAction.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewAction.kt index 37e9b6b26..d083ac9f7 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewAction.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewAction.kt @@ -31,7 +31,7 @@ import com.itsaky.androidide.inflater.IViewGroup abstract class ViewAction @JvmOverloads constructor( - val child: IView, - val parent: IViewGroup, + val child: com.itsaky.androidide.inflater.IView, + val parent: com.itsaky.androidide.inflater.IViewGroup, var index: Int = parent.indexOfChild(child) ) : IUiAction diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewAddedAction.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewAddedAction.kt index 14500a0c9..972e92c53 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewAddedAction.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewAddedAction.kt @@ -27,7 +27,7 @@ import com.itsaky.androidide.inflater.IViewGroup */ class ViewAddedAction @JvmOverloads -constructor(view: IView, parent: IViewGroup, index: Int = parent.indexOfChild(view)) : +constructor(view: com.itsaky.androidide.inflater.IView, parent: com.itsaky.androidide.inflater.IViewGroup, index: Int = parent.indexOfChild(view)) : ViewAction(view, parent, index) { override fun undo() { diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewMovedAction.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewMovedAction.kt index a4a47060a..36da04ca6 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewMovedAction.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewMovedAction.kt @@ -26,9 +26,9 @@ import com.itsaky.androidide.inflater.IViewGroup * @author Akash Yadav */ class ViewMovedAction( - private val child: IView, - private val fromParent: IViewGroup, - private val toParent: IViewGroup, + private val child: com.itsaky.androidide.inflater.IView, + private val fromParent: com.itsaky.androidide.inflater.IViewGroup, + private val toParent: com.itsaky.androidide.inflater.IViewGroup, private val fromIndex: Int, private val toIndex: Int ) : IUiAction { diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewRemovedAction.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewRemovedAction.kt index f1d626e30..608294eec 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewRemovedAction.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/ViewRemovedAction.kt @@ -19,15 +19,13 @@ package com.itsaky.androidide.uidesigner.undo import com.itsaky.androidide.inflater.IView import com.itsaky.androidide.inflater.IViewGroup -import kotlin.math.max -import kotlin.math.min /** * Represents the action when the user removes a view from a view group. * * @author Akash Yadav */ -class ViewRemovedAction(child: IView, parent: IViewGroup, index: Int) : +class ViewRemovedAction(child: com.itsaky.androidide.inflater.IView, parent: com.itsaky.androidide.inflater.IViewGroup, index: Int) : ViewAction(child, parent, index) { override fun undo() { diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/undoUtils.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/undoUtils.kt index 3a52c2312..6b4ad8ebc 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/undoUtils.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/undo/undoUtils.kt @@ -21,6 +21,6 @@ import com.itsaky.androidide.inflater.IViewGroup import kotlin.math.max import kotlin.math.min -internal fun IViewGroup.validateIndex(index: Int) : Int { +internal fun com.itsaky.androidide.inflater.IViewGroup.validateIndex(index: Int) : Int { return min(max(0, index), childCount) } \ No newline at end of file diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/UiInflaterComponentFactory.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/UiInflaterComponentFactory.kt index 8ce3e4021..e4af4ac2d 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/UiInflaterComponentFactory.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/UiInflaterComponentFactory.kt @@ -34,9 +34,9 @@ import com.itsaky.androidide.uidesigner.models.UiViewGroup * * @author Akash Yadav */ -open class UiInflaterComponentFactory : IComponentFactory { +open class UiInflaterComponentFactory : com.itsaky.androidide.inflater.IComponentFactory { - override fun createView(file: LayoutFile, name: String, view: View): IView { + override fun createView(file: LayoutFile, name: String, view: View): com.itsaky.androidide.inflater.IView { if (view is ViewGroup) { return UiViewGroup(file, name, view) } @@ -44,11 +44,11 @@ open class UiInflaterComponentFactory : IComponentFactory { } override fun createAttr( - view: IView, - namespace: INamespace, + view: com.itsaky.androidide.inflater.IView, + namespace: com.itsaky.androidide.inflater.INamespace, name: String, value: String - ): IAttribute { + ): com.itsaky.androidide.inflater.IAttribute { return UiAttribute(namespace = namespace as NamespaceImpl, name = name, value = value).apply { isRequired = UiAttribute.isRequired(view, this) } diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/UiLayoutInflater.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/UiLayoutInflater.kt index 9577a24cc..588119dba 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/UiLayoutInflater.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/UiLayoutInflater.kt @@ -30,6 +30,6 @@ class UiLayoutInflater : LayoutInflaterImpl() { init { this.componentFactory = UiInflaterComponentFactory() - Lookup.DEFAULT.update(ILayoutInflater.LOOKUP_KEY, this) + Lookup.DEFAULT.update(com.itsaky.androidide.inflater.ILayoutInflater.LOOKUP_KEY, this) } } diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/ValueCompletionProvider.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/ValueCompletionProvider.kt index 1151a28dd..8b9eb7c9f 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/ValueCompletionProvider.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/ValueCompletionProvider.kt @@ -37,7 +37,7 @@ import java.io.File internal class ValueCompletionProvider( private val file: File, private val view: ViewImpl, - private val attribute: IAttribute, + private val attribute: com.itsaky.androidide.inflater.IAttribute, private val onComplete: (List) -> Unit ) : SingleTextWatcher() { @@ -72,7 +72,7 @@ internal class ValueCompletionProvider( private val log = ILogger.newInstance("CompletionThread") var prefix: String = "" - var attribute: IAttribute? = null + var attribute: com.itsaky.androidide.inflater.IAttribute? = null fun cancel() { interrupt() diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/ViewToXml.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/ViewToXml.kt index 2737482c0..87826d6e9 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/ViewToXml.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/ViewToXml.kt @@ -114,7 +114,7 @@ object ViewToXml { addSingleAttribute("${attr.namespace.prefix}:${attr.name}", attr.value, true) } - if (view is IViewGroup) { + if (view is com.itsaky.androidide.inflater.IViewGroup) { closeStartElement() diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/Widgets.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/Widgets.kt index 9a4f8de49..97e4f8413 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/Widgets.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/Widgets.kt @@ -19,7 +19,7 @@ package com.itsaky.androidide.uidesigner.utils import com.itsaky.androidide.annotations.uidesigner.IncludeInDesigner.Group.LAYOUTS import com.itsaky.androidide.annotations.uidesigner.IncludeInDesigner.Group.WIDGETS -import com.itsaky.androidide.inflater.internal.ViewAdapterIndex +import com.itsaky.androidide.inflater.IViewAdapterIndex import com.itsaky.androidide.inflater.internal.utils.simpleName import com.itsaky.androidide.uidesigner.R.string import com.itsaky.androidide.uidesigner.models.UiWidgetCategory @@ -45,7 +45,7 @@ internal object Widgets { return@apply } this.widgets = - ViewAdapterIndex.getWidgetProviders(WIDGETS) + IViewAdapterIndex.instance.getWidgetProviders(WIDGETS) .flatMap { it.getUiWidgets() } .sortedBy { it.name.simpleName() } } @@ -58,7 +58,7 @@ internal object Widgets { } this.widgets = - ViewAdapterIndex.getWidgetProviders(LAYOUTS) + IViewAdapterIndex.instance.getWidgetProviders(LAYOUTS) .flatMap { it.getUiWidgets() } .sortedBy { it.name.simpleName() } } diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/WorkspaceHierarchyChangeListener.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/WorkspaceHierarchyChangeListener.kt index 8c5f1c380..6321c652b 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/WorkspaceHierarchyChangeListener.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/WorkspaceHierarchyChangeListener.kt @@ -17,16 +17,8 @@ package com.itsaky.androidide.uidesigner.utils -import androidx.transition.ChangeBounds -import androidx.transition.TransitionManager -import com.itsaky.androidide.inflater.IView import com.itsaky.androidide.inflater.IViewGroup -import com.itsaky.androidide.inflater.viewGroup -import com.itsaky.androidide.uidesigner.R -import com.itsaky.androidide.uidesigner.fragments.DesignerWorkspaceFragment -import com.itsaky.androidide.uidesigner.models.PlaceholderView import com.itsaky.androidide.uidesigner.models.UiViewGroup -import com.itsaky.androidide.uidesigner.undo.ViewMovedAction import com.itsaky.androidide.uidesigner.viewmodel.WorkspaceViewModel /** @@ -37,7 +29,7 @@ import com.itsaky.androidide.uidesigner.viewmodel.WorkspaceViewModel internal class WorkspaceHierarchyChangeListener( private val viewModel: WorkspaceViewModel, private val workspaceView: UiViewGroup -) : IViewGroup.SingleOnHierarchyChangeListener() { +) : com.itsaky.androidide.inflater.IViewGroup.SingleOnHierarchyChangeListener() { } diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/viewmodel/WorkspaceViewModel.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/viewmodel/WorkspaceViewModel.kt index 51071370f..a42c87e3d 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/viewmodel/WorkspaceViewModel.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/viewmodel/WorkspaceViewModel.kt @@ -28,7 +28,7 @@ internal class WorkspaceViewModel : ViewModel() { internal val _drawerOpened = MutableLiveData(false) internal val _errText = MutableLiveData("") internal val _workspaceScreen = MutableLiveData(SCREEN_WORKSPACE) - internal val _view = MutableLiveData(null) + internal val _view = MutableLiveData(null) internal val _selectedAttr = MutableLiveData(null) internal val _addAttrMode = MutableLiveData(false) internal val _undoManager = MutableLiveData(UndoManager()) @@ -68,7 +68,7 @@ internal class WorkspaceViewModel : ViewModel() { _workspaceScreen.value = value } - var view: IView? + var view: com.itsaky.androidide.inflater.IView? get() = this._view.value set(value) { this._view.value = value diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/views/LayoutHierarchyView.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/views/LayoutHierarchyView.kt index 4d26bef58..6ee1c51a9 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/views/LayoutHierarchyView.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/views/LayoutHierarchyView.kt @@ -50,8 +50,8 @@ constructor( defStyleRes: Int = 0 ) : LinearLayout(context, attrs, defStyleAttr, defStyleRes) { - private val textToIView = mutableMapOf() - private var onClick: ((IView) -> Unit)? = null + private val textToIView = mutableMapOf() + private var onClick: ((com.itsaky.androidide.inflater.IView) -> Unit)? = null private val clickListener = OnClickListener { view -> onClick?.let { click -> textToIView[view]?.let(click) } @@ -70,7 +70,7 @@ constructor( paint.isAntiAlias = true } - fun setupWithView(view: IView, onClick: ((IView) -> Unit)? = null) { + fun setupWithView(view: com.itsaky.androidide.inflater.IView, onClick: ((com.itsaky.androidide.inflater.IView) -> Unit)? = null) { removeAllViews() textToIView.clear() @@ -78,7 +78,7 @@ constructor( addViews(view, 1) } - private fun addViews(view: IView, depth: Int) { + private fun addViews(view: com.itsaky.androidide.inflater.IView, depth: Int) { val text = HierarchyText(context, depth, dp16).apply { this.text = view.tag @@ -86,7 +86,7 @@ constructor( } addView(text) - if (view is IViewGroup) { + if (view is com.itsaky.androidide.inflater.IViewGroup) { text.childCount = computeChildCount(view) view.forEach { addViews(it, depth + 1) } } @@ -94,10 +94,10 @@ constructor( textToIView[text] = view } - private fun computeChildCount(view: IViewGroup): Int { + private fun computeChildCount(view: com.itsaky.androidide.inflater.IViewGroup): Int { var count = view.childCount view.forEachIndexed { index, child -> - if (index != view.childCount - 1 && child is IViewGroup) { + if (index != view.childCount - 1 && child is com.itsaky.androidide.inflater.IViewGroup) { count += computeChildCount(child) } } diff --git a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/enums/TintMode.java b/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/enums/TintMode.java deleted file mode 100644 index 4742c74ca..000000000 --- a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/enums/TintMode.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.sdsmdg.harjot.vectormaster.enums; - -/** Created by Harjot on 20-Jun-17. */ -public enum TintMode { - ADD, - MULTIPLY, - SCREEN, - SRC_ATOP, - SCR_IN, - SRC_OVER -} diff --git a/uidesigner/src/test/java/com/itsaky/androidide/uidesigner/UiDesignerTest.kt b/uidesigner/src/test/java/com/itsaky/androidide/uidesigner/UiDesignerTest.kt index ae7bdc10c..23d071ec6 100644 --- a/uidesigner/src/test/java/com/itsaky/androidide/uidesigner/UiDesignerTest.kt +++ b/uidesigner/src/test/java/com/itsaky/androidide/uidesigner/UiDesignerTest.kt @@ -45,7 +45,7 @@ fun requiresActivity(initComponentFactory: Boolean = true, block: AppCompatActiv activity.block() } -fun Context.createLayout(parent: IViewGroup? = null): ViewGroupImpl { +fun Context.createLayout(parent: com.itsaky.androidide.inflater.IViewGroup? = null): ViewGroupImpl { return ViewGroupImpl( LayoutFile(File(""), ""), LinearLayout::class.qualifiedName!!, @@ -54,12 +54,12 @@ fun Context.createLayout(parent: IViewGroup? = null): ViewGroupImpl { .apply { parent?.let { applyLayoutParams(it) } } } -fun Context.createView(parent: IViewGroup? = null): ViewImpl { +fun Context.createView(parent: com.itsaky.androidide.inflater.IViewGroup? = null): ViewImpl { return ViewImpl(LayoutFile(File(""), ""), View::class.qualifiedName!!, View(this)).apply { parent?.let { applyLayoutParams(it) } } } -fun ViewImpl.applyLayoutParams(parent: IViewGroup) { +fun ViewImpl.applyLayoutParams(parent: com.itsaky.androidide.inflater.IViewGroup) { view.layoutParams = ViewFactory.generateLayoutParams(parent.viewGroup) } diff --git a/xml-inflater/.gitignore b/xml-inflater/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/xml-inflater/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/xml-inflater/build.gradle.kts b/xml-inflater/build.gradle.kts new file mode 100644 index 000000000..fd14ca0f2 --- /dev/null +++ b/xml-inflater/build.gradle.kts @@ -0,0 +1,47 @@ +/* + * 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 . + */ + +plugins { + id("com.android.library") + id("kotlin-android") + id("kotlin-kapt") + id("kotlin-parcelize") +} + +android { namespace = "com.itsaky.androidide.inflater" } + +dependencies { + + kapt(projects.annotationProcessors) + + implementation(libs.androidx.appcompat) + implementation(libs.common.kotlin) + implementation(libs.common.utilcode) + + implementation(projects.annotations) + implementation(projects.common) + implementation(projects.subprojects.aaptcompiler) + implementation(projects.subprojects.projects) + implementation(projects.subprojects.xmlUtils) + implementation(projects.resources) + + testImplementation(projects.subprojects.projects) + testImplementation(projects.subprojects.toolingApiTesting) + testImplementation(libs.tests.junit) + testImplementation(libs.tests.google.truth) + testImplementation(libs.tests.robolectric) +} diff --git a/xml-inflater/consumer-rules.pro b/xml-inflater/consumer-rules.pro new file mode 100644 index 000000000..e69de29bb diff --git a/xml-inflater/proguard-rules.pro b/xml-inflater/proguard-rules.pro new file mode 100644 index 000000000..481bb4348 --- /dev/null +++ b/xml-inflater/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/xml-inflater/src/main/AndroidManifest.xml b/xml-inflater/src/main/AndroidManifest.xml new file mode 100644 index 000000000..e62e7b210 --- /dev/null +++ b/xml-inflater/src/main/AndroidManifest.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/AbstractParser.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/AbstractParser.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/AbstractParser.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/AbstractParser.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/AttributeHandlerScope.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/AttributeHandlerScope.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/AttributeHandlerScope.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/AttributeHandlerScope.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/DefaultComponentFactory.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/DefaultComponentFactory.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/DefaultComponentFactory.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/DefaultComponentFactory.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/ForwardingViewGroup.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/ForwardingViewGroup.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/ForwardingViewGroup.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/ForwardingViewGroup.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/IAttribute.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IAttribute.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/IAttribute.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/IAttribute.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/IComponentFactory.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IComponentFactory.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/IComponentFactory.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/IComponentFactory.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/ILayoutInflater.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/ILayoutInflater.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/ILayoutInflater.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/ILayoutInflater.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/INamespace.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/INamespace.kt similarity index 97% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/INamespace.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/INamespace.kt index 191544d2f..b955f3240 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/inflater/INamespace.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/INamespace.kt @@ -20,7 +20,6 @@ package com.itsaky.androidide.inflater import com.android.SdkConstants.ANDROID_NS_NAME import com.android.SdkConstants.ANDROID_URI import com.itsaky.androidide.inflater.internal.NamespaceImpl -import kotlinx.parcelize.RawValue /** * An XML namespace declaration. diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/IView.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IView.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/IView.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/IView.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/IViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/IViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewAdapter.kt diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewAdapterIndex.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewAdapterIndex.kt new file mode 100644 index 000000000..df7d891f8 --- /dev/null +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewAdapterIndex.kt @@ -0,0 +1,84 @@ +/* + * 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 + +import android.view.View +import com.itsaky.androidide.annotations.uidesigner.IncludeInDesigner +import com.itsaky.androidide.inflater.internal.ViewAdapterIndexImpl + +/** + * Provides access to all view adapters. + * + * @author Akash Yadav + */ +interface IViewAdapterIndex { + + companion object { + @JvmField val instance: IViewAdapterIndex = ViewAdapterIndexImpl.INSTANCE + } + + /** + * Get the adapter for the given fully qualified view name. + * + * @param view The fully qualified name of the view class. + * @return The [IViewAdapter] for the given view name. If no adapter is found for the given view + * name, returns adapter for `android.view.View` if available or `null`. + */ + fun getAdapter(view: String): IViewAdapter<*>? + + /** + * Get the adapter for the given view. + * + * @param view The fully qualified name of the view. + * @return The view adapter instance or `null` if not found. + */ + fun getViewAdapter(view: String): IViewAdapter<*> + + /** + * Get the view adapters which provide widgets to the UI designer. + * + * @param group The group to get widget providers for. + * @return The widget providers for the [group]. + */ + fun getWidgetProviders(group: IncludeInDesigner.Group) : List> +} + +/** + * Get the adapter for the given fully qualified view name. + * + * @param view The fully qualified name of the view class. + * @return The [IViewAdapter] for the given view name. If no adapter is found for the given view + * name, returns adapter for `android.view.View` if available or `null`. + */ +fun getAdapter(view: String): IViewAdapter<*>? { + return IViewAdapterIndex.instance.getAdapter(view) +} + +/** + * Get the adapter for the given view. + * + * @param view The fully qualified name of the view. + * @return The view adapter instance or `null` if not found. + */ +fun getViewAdapter(view: String): IViewAdapter<*> { + return IViewAdapterIndex.instance.getViewAdapter(view) +} + +/** The view adapter for this view. */ +val IView.viewAdapter: IViewAdapter? + get() = IViewAdapterIndex.instance.getAdapter(this.name) diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/IViewGroup.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewGroup.kt similarity index 96% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/IViewGroup.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewGroup.kt index cabc33275..14654592f 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/inflater/IViewGroup.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewGroup.kt @@ -17,8 +17,6 @@ package com.itsaky.androidide.inflater -import com.itsaky.androidide.inflater.internal.ViewAdapterIndex - /** * Inflated model for a [ViewGroup][android.view.ViewGroup]. * @@ -54,7 +52,7 @@ interface IViewGroup : IView, Iterable { */ fun canAcceptChild(name: String): Boolean { return canModifyChildViews() && - (ViewAdapterIndex.getAdapter(this.name) as? IViewGroupAdapter)?.canAcceptChild(this, name) == true + (this.viewAdapter as? IViewGroupAdapter)?.canAcceptChild(this, name) == true } /** diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/IViewGroupAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewGroupAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/IViewGroupAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewGroupAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/InflateException.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/InflateException.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/InflateException.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/InflateException.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/LayoutBehavior.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/LayoutBehavior.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/LayoutBehavior.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/LayoutBehavior.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/BitmapDrawableParser.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/BitmapDrawableParser.kt similarity index 98% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/BitmapDrawableParser.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/BitmapDrawableParser.kt index 66bcfee12..a7c958ddb 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/BitmapDrawableParser.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/BitmapDrawableParser.kt @@ -26,7 +26,6 @@ import android.graphics.Shader.TileMode.MIRROR import android.graphics.Shader.TileMode.REPEAT import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable -import com.itsaky.androidide.app.BaseApplication import com.itsaky.androidide.inflater.InflateException import org.jetbrains.annotations.Contract import org.xmlpull.v1.XmlPullParser diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/ClipDrawableParser.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/ClipDrawableParser.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/ClipDrawableParser.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/ClipDrawableParser.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/DrawableParserFactory.java b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/DrawableParserFactory.java similarity index 96% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/DrawableParserFactory.java rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/DrawableParserFactory.java index fbe117001..e78dc6e6c 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/DrawableParserFactory.java +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/DrawableParserFactory.java @@ -29,7 +29,7 @@ import androidx.annotation.Nullable; import com.blankj.utilcode.util.FileIOUtils; import com.blankj.utilcode.util.ImageUtils; import com.itsaky.androidide.utils.ILogger; -import com.sdsmdg.harjot.vectormaster.VectorMasterDrawable; +import com.itsaky.androidide.inflater.vectormaster.VectorMasterDrawable; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/IDrawableParser.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/IDrawableParser.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/IDrawableParser.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/IDrawableParser.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/InsetDrawableParser.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/InsetDrawableParser.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/InsetDrawableParser.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/InsetDrawableParser.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/LayerListParser.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/LayerListParser.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/LayerListParser.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/LayerListParser.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/ScaleDrawableParser.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/ScaleDrawableParser.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/ScaleDrawableParser.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/ScaleDrawableParser.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/ShapeDrawableParser.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/ShapeDrawableParser.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/ShapeDrawableParser.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/ShapeDrawableParser.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/StateListParser.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/StateListParser.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/drawable/StateListParser.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/drawable/StateListParser.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/events/IInflateEventsListener.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/events/IInflateEventsListener.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/events/IInflateEventsListener.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/events/IInflateEventsListener.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/events/IInflationEvent.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/events/IInflationEvent.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/events/IInflationEvent.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/events/IInflationEvent.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/events/inflationEvents.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/events/inflationEvents.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/events/inflationEvents.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/events/inflationEvents.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/AttributeImpl.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/AttributeImpl.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/AttributeImpl.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/AttributeImpl.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ErrorView.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ErrorView.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ErrorView.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ErrorView.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ForwardingView.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ForwardingView.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ForwardingView.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ForwardingView.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ImmutableAttributeImpl.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ImmutableAttributeImpl.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ImmutableAttributeImpl.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ImmutableAttributeImpl.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ImmutableViewGroupImpl.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ImmutableViewGroupImpl.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ImmutableViewGroupImpl.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ImmutableViewGroupImpl.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ImmutableViewImpl.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ImmutableViewImpl.kt similarity index 96% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ImmutableViewImpl.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ImmutableViewImpl.kt index e4999ef9d..3feb1b43c 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ImmutableViewImpl.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ImmutableViewImpl.kt @@ -17,11 +17,9 @@ package com.itsaky.androidide.inflater.internal -import android.view.View import com.itsaky.androidide.inflater.IAttribute import com.itsaky.androidide.inflater.IView import com.itsaky.androidide.inflater.IView.AttributeChangeListener -import com.itsaky.androidide.inflater.IViewGroup /** * An immutable implementation of [IView]. diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/LayoutFile.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/LayoutFile.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/LayoutFile.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/LayoutFile.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/LayoutInflaterImpl.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/LayoutInflaterImpl.kt similarity index 99% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/LayoutInflaterImpl.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/LayoutInflaterImpl.kt index ceda79c1c..98434231a 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/LayoutInflaterImpl.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/LayoutInflaterImpl.kt @@ -54,6 +54,7 @@ import com.itsaky.androidide.inflater.internal.utils.parseLayoutReference import com.itsaky.androidide.inflater.utils.endParse import com.itsaky.androidide.inflater.utils.isParsing import com.itsaky.androidide.inflater.utils.startParse +import com.itsaky.androidide.inflater.viewAdapter import com.itsaky.androidide.lookup.Lookup import com.itsaky.androidide.projects.ProjectManager import com.itsaky.androidide.projects.api.AndroidModule @@ -225,7 +226,7 @@ open class LayoutInflaterImpl : ILayoutInflater { ) { val parentView = parent.view as ViewGroup val adapter = - ViewAdapterIndex.getAdapter(view.name) + view.viewAdapter ?: throw InflateException("No attribute adapter found for view ${view.name}") view.view.layoutParams = generateLayoutParams(parentView) diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/NamespaceImpl.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/NamespaceImpl.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/NamespaceImpl.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/NamespaceImpl.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/SingleChildViewGroup.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/SingleChildViewGroup.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/SingleChildViewGroup.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/SingleChildViewGroup.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ViewGroupImpl.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ViewGroupImpl.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ViewGroupImpl.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ViewGroupImpl.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ViewImpl.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ViewImpl.kt similarity index 98% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ViewImpl.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ViewImpl.kt index bb9a02008..9ac4441bb 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/ViewImpl.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/ViewImpl.kt @@ -28,6 +28,7 @@ import com.itsaky.androidide.inflater.IViewGroup import com.itsaky.androidide.inflater.internal.utils.simpleName import com.itsaky.androidide.inflater.internal.utils.tagName import com.itsaky.androidide.inflater.utils.newAttribute +import com.itsaky.androidide.inflater.viewAdapter import com.itsaky.androidide.resources.R.drawable import com.itsaky.androidide.utils.ILogger @@ -112,7 +113,7 @@ constructor( } override fun applyAttribute(attribute: IAttribute) { - val adapter = ViewAdapterIndex.getAdapter(name) + val adapter = viewAdapter if (adapter == null) { log.warn("No attribute adapter found for view $name") return diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsListViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsListViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsListViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsListViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSeekBarAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSeekBarAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSeekBarAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSeekBarAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSpinnerAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSpinnerAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSpinnerAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSpinnerAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsoluteLayoutAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsoluteLayoutAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsoluteLayoutAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsoluteLayoutAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AdapterViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AdapterViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AdapterViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AdapterViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AnalogClockAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AnalogClockAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AnalogClockAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AnalogClockAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AutoCompleteTextViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AutoCompleteTextViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AutoCompleteTextViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AutoCompleteTextViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ButtonAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ButtonAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ButtonAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ButtonAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CalendarViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CalendarViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CalendarViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CalendarViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckBoxAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckBoxAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckBoxAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckBoxAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckedTextViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckedTextViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckedTextViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckedTextViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ChronometerAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ChronometerAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ChronometerAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ChronometerAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CompoundButtonAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CompoundButtonAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CompoundButtonAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CompoundButtonAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/DigitalClockAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/DigitalClockAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/DigitalClockAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/DigitalClockAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/EditTextAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/EditTextAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/EditTextAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/EditTextAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/FrameLayoutAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/FrameLayoutAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/FrameLayoutAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/FrameLayoutAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GestureOverlayViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GestureOverlayViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GestureOverlayViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GestureOverlayViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GridLayoutAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GridLayoutAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GridLayoutAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GridLayoutAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/HorizontalScrollViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/HorizontalScrollViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/HorizontalScrollViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/HorizontalScrollViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageButtonAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageButtonAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageButtonAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageButtonAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/LinearLayoutAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/LinearLayoutAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/LinearLayoutAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/LinearLayoutAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ListViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ListViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ListViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ListViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/MultiAutoCompleteTextViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/MultiAutoCompleteTextViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/MultiAutoCompleteTextViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/MultiAutoCompleteTextViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/NumberPickerAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/NumberPickerAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/NumberPickerAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/NumberPickerAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ProgressBarAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ProgressBarAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ProgressBarAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ProgressBarAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/QuickContactBadgeAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/QuickContactBadgeAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/QuickContactBadgeAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/QuickContactBadgeAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RadioButtonAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RadioButtonAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RadioButtonAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RadioButtonAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RadioGroupAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RadioGroupAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RadioGroupAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RadioGroupAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RatingBarAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RatingBarAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RatingBarAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RatingBarAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RelativeLayoutAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RelativeLayoutAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RelativeLayoutAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RelativeLayoutAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ScrollViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ScrollViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ScrollViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ScrollViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SeekBarAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SeekBarAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SeekBarAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SeekBarAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SpaceAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SpaceAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SpaceAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SpaceAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SpinnerAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SpinnerAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SpinnerAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SpinnerAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SurfaceViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SurfaceViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SurfaceViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SurfaceViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SwitchAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SwitchAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SwitchAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SwitchAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextClockAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextClockAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextClockAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextClockAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextureViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextureViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextureViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextureViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ToggleButtonAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ToggleButtonAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ToggleButtonAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ToggleButtonAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/VideoViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/VideoViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/VideoViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/VideoViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewGroupAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewGroupAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewGroupAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewGroupAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/WebViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/WebViewAdapter.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/WebViewAdapter.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/WebViewAdapter.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/appcompat/AppCompatTextView.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/appcompat/AppCompatTextView.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/adapters/appcompat/AppCompatTextView.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/appcompat/AppCompatTextView.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/utils/IDTable.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/IDTable.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/utils/IDTable.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/IDTable.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/utils/TextDrawable.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/TextDrawable.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/utils/TextDrawable.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/TextDrawable.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/utils/ViewFactory.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/ViewFactory.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/utils/ViewFactory.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/ViewFactory.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/utils/ViewUtils.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/ViewUtils.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/utils/ViewUtils.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/ViewUtils.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/utils/basicParseUtils.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/basicParseUtils.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/utils/basicParseUtils.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/basicParseUtils.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/utils/lookup.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/lookup.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/utils/lookup.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/lookup.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/utils/viewParseUtils.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/viewParseUtils.kt similarity index 96% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/utils/viewParseUtils.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/viewParseUtils.kt index 8fb287b1b..5a463d028 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/inflater/internal/utils/viewParseUtils.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/viewParseUtils.kt @@ -19,8 +19,6 @@ package com.itsaky.androidide.inflater.internal.utils import android.graphics.PorterDuff import android.view.View -import com.android.aaptcompiler.AaptResourceType.ID -import com.itsaky.androidide.inflater.internal.ViewImpl @JvmOverloads fun parseId(resName: String, value: String, def: Int = 0): Int { diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/models/UiWidget.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/models/UiWidget.kt similarity index 96% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/models/UiWidget.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/models/UiWidget.kt index 21b1bce18..d6fd6d126 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/inflater/models/UiWidget.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/models/UiWidget.kt @@ -27,12 +27,12 @@ import com.blankj.utilcode.util.SizeUtils import com.itsaky.androidide.inflater.IView import com.itsaky.androidide.inflater.IViewGroup import com.itsaky.androidide.inflater.internal.LayoutFile -import com.itsaky.androidide.inflater.internal.ViewAdapterIndex.getAdapter import com.itsaky.androidide.inflater.internal.ViewGroupImpl import com.itsaky.androidide.inflater.internal.ViewImpl import com.itsaky.androidide.inflater.internal.utils.ViewFactory import com.itsaky.androidide.inflater.internal.utils.ViewFactory.generateLayoutParams import com.itsaky.androidide.inflater.utils.lookupComponentFactory +import com.itsaky.androidide.inflater.viewAdapter open class UiWidget(val name: String, @StringRes val label: Int, @DrawableRes val icon: Int) { @@ -60,7 +60,7 @@ open class UiWidget(val name: String, @StringRes val label: Int, @DrawableRes va view.view.layoutParams = generateLayoutParams(parent) val adapter = - getAdapter(view.name) + view.viewAdapter ?: throw IllegalStateException("No attribute adapter found for '${view.name}'") adapter.applyBasic(view) return view diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/utils/inflaterUtils.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/utils/inflaterUtils.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/utils/inflaterUtils.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/utils/inflaterUtils.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/utils/module.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/utils/module.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/utils/module.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/utils/module.kt diff --git a/uidesigner/src/main/java/com/itsaky/androidide/inflater/utils/viewUtils.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/utils/viewUtils.kt similarity index 100% rename from uidesigner/src/main/java/com/itsaky/androidide/inflater/utils/viewUtils.kt rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/utils/viewUtils.kt diff --git a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/DefaultValues.java b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/DefaultValues.java similarity index 71% rename from uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/DefaultValues.java rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/DefaultValues.java index 9e051f6e5..d9a00151d 100644 --- a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/DefaultValues.java +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/DefaultValues.java @@ -1,4 +1,21 @@ -package com.sdsmdg.harjot.vectormaster; +/* + * 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.vectormaster; import android.graphics.Color; import android.graphics.Paint; diff --git a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/VectorMasterDrawable.java b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/VectorMasterDrawable.java similarity index 94% rename from uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/VectorMasterDrawable.java rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/VectorMasterDrawable.java index 91aa56bbe..7a8785dce 100644 --- a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/VectorMasterDrawable.java +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/VectorMasterDrawable.java @@ -1,4 +1,21 @@ -package com.sdsmdg.harjot.vectormaster; +/* + * 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.vectormaster; import android.content.Context; import android.graphics.Canvas; @@ -12,11 +29,11 @@ import android.graphics.drawable.Drawable; import androidx.annotation.NonNull; import com.blankj.utilcode.util.FileIOUtils; -import com.sdsmdg.harjot.vectormaster.models.ClipPathModel; -import com.sdsmdg.harjot.vectormaster.models.GroupModel; -import com.sdsmdg.harjot.vectormaster.models.PathModel; -import com.sdsmdg.harjot.vectormaster.models.VectorModel; -import com.sdsmdg.harjot.vectormaster.utilities.Utils; +import com.itsaky.androidide.inflater.vectormaster.models.GroupModel; +import com.itsaky.androidide.inflater.vectormaster.models.ClipPathModel; +import com.itsaky.androidide.inflater.vectormaster.models.PathModel; +import com.itsaky.androidide.inflater.vectormaster.models.VectorModel; +import com.itsaky.androidide.inflater.vectormaster.utilities.Utils; import org.jetbrains.annotations.Contract; import org.xmlpull.v1.XmlPullParser; diff --git a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/VectorMasterView.java b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/VectorMasterView.java similarity index 93% rename from uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/VectorMasterView.java rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/VectorMasterView.java index 1d8e42daf..d345c65bd 100644 --- a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/VectorMasterView.java +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/VectorMasterView.java @@ -1,4 +1,21 @@ -package com.sdsmdg.harjot.vectormaster; +/* + * 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.vectormaster; import android.annotation.SuppressLint; import android.content.Context; @@ -10,12 +27,12 @@ import android.graphics.Path; import android.util.AttributeSet; import android.view.View; +import com.itsaky.androidide.inflater.vectormaster.models.GroupModel; import com.itsaky.androidide.resources.R; -import com.sdsmdg.harjot.vectormaster.models.ClipPathModel; -import com.sdsmdg.harjot.vectormaster.models.GroupModel; -import com.sdsmdg.harjot.vectormaster.models.PathModel; -import com.sdsmdg.harjot.vectormaster.models.VectorModel; -import com.sdsmdg.harjot.vectormaster.utilities.Utils; +import com.itsaky.androidide.inflater.vectormaster.models.ClipPathModel; +import com.itsaky.androidide.inflater.vectormaster.models.PathModel; +import com.itsaky.androidide.inflater.vectormaster.models.VectorModel; +import com.itsaky.androidide.inflater.vectormaster.utilities.Utils; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/enums/TintMode.java b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/enums/TintMode.java new file mode 100644 index 000000000..b32f4b135 --- /dev/null +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/enums/TintMode.java @@ -0,0 +1,28 @@ +/* + * 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.vectormaster.enums; + +/** Created by Harjot on 20-Jun-17. */ +public enum TintMode { + ADD, + MULTIPLY, + SCREEN, + SRC_ATOP, + SCR_IN, + SRC_OVER +} diff --git a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/models/ClipPathModel.java b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/models/ClipPathModel.java similarity index 67% rename from uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/models/ClipPathModel.java rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/models/ClipPathModel.java index c2eedb868..100c9c45d 100644 --- a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/models/ClipPathModel.java +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/models/ClipPathModel.java @@ -1,4 +1,21 @@ -package com.sdsmdg.harjot.vectormaster.models; +/* + * 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.vectormaster.models; import android.graphics.Matrix; import android.graphics.Paint; @@ -7,7 +24,7 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.RectF; -import com.sdsmdg.harjot.vectormaster.utilities.parser.PathParser; +import com.itsaky.androidide.inflater.vectormaster.utilities.parser.PathParser; public class ClipPathModel { private String name; @@ -29,7 +46,7 @@ public class ClipPathModel { public void buildPath(boolean useLegacyParser) { if (useLegacyParser) { originalPath = - com.sdsmdg.harjot.vectormaster.utilities.legacyparser.PathParser.createPathFromPathData( + com.itsaky.androidide.inflater.vectormaster.utilities.legacyparser.PathParser.createPathFromPathData( pathData); } else { originalPath = PathParser.doPath(pathData); diff --git a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/models/GroupModel.java b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/models/GroupModel.java similarity index 89% rename from uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/models/GroupModel.java rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/models/GroupModel.java index 1441491fc..546102873 100644 --- a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/models/GroupModel.java +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/models/GroupModel.java @@ -1,10 +1,27 @@ -package com.sdsmdg.harjot.vectormaster.models; +/* + * 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.vectormaster.models; import android.graphics.Canvas; import android.graphics.Matrix; -import com.sdsmdg.harjot.vectormaster.DefaultValues; -import com.sdsmdg.harjot.vectormaster.utilities.Utils; +import com.itsaky.androidide.inflater.vectormaster.DefaultValues; +import com.itsaky.androidide.inflater.vectormaster.utilities.Utils; import java.util.ArrayList; diff --git a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/models/PathModel.java b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/models/PathModel.java similarity index 87% rename from uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/models/PathModel.java rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/models/PathModel.java index d4ac4f252..b25d8927a 100644 --- a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/models/PathModel.java +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/models/PathModel.java @@ -1,4 +1,21 @@ -package com.sdsmdg.harjot.vectormaster.models; +/* + * 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.vectormaster.models; import android.graphics.Color; import android.graphics.Matrix; @@ -7,9 +24,9 @@ import android.graphics.Path; import android.graphics.PathMeasure; import android.graphics.RectF; -import com.sdsmdg.harjot.vectormaster.DefaultValues; -import com.sdsmdg.harjot.vectormaster.utilities.Utils; -import com.sdsmdg.harjot.vectormaster.utilities.parser.PathParser; +import com.itsaky.androidide.inflater.vectormaster.DefaultValues; +import com.itsaky.androidide.inflater.vectormaster.utilities.Utils; +import com.itsaky.androidide.inflater.vectormaster.utilities.parser.PathParser; public class PathModel { @@ -91,7 +108,7 @@ public class PathModel { public void buildPath(boolean useLegacyParser) { if (useLegacyParser) { originalPath = - com.sdsmdg.harjot.vectormaster.utilities.legacyparser.PathParser.createPathFromPathData( + com.itsaky.androidide.inflater.vectormaster.utilities.legacyparser.PathParser.createPathFromPathData( pathData); } else { originalPath = PathParser.doPath(pathData); diff --git a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/models/VectorModel.java b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/models/VectorModel.java similarity index 86% rename from uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/models/VectorModel.java rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/models/VectorModel.java index d7055403d..61d5e629a 100644 --- a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/models/VectorModel.java +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/models/VectorModel.java @@ -1,11 +1,28 @@ -package com.sdsmdg.harjot.vectormaster.models; +/* + * 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.vectormaster.models; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Path; -import com.sdsmdg.harjot.vectormaster.enums.TintMode; +import com.itsaky.androidide.inflater.vectormaster.enums.TintMode; import java.util.ArrayList; diff --git a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/utilities/Utils.java b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/utilities/Utils.java similarity index 78% rename from uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/utilities/Utils.java rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/utilities/Utils.java index d8db0a418..b37e23f62 100644 --- a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/utilities/Utils.java +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/utilities/Utils.java @@ -1,4 +1,21 @@ -package com.sdsmdg.harjot.vectormaster.utilities; +/* + * 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.vectormaster.utilities; import android.content.res.Resources; import android.graphics.Color; diff --git a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/utilities/legacyparser/PathParser.java b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/utilities/legacyparser/PathParser.java similarity index 99% rename from uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/utilities/legacyparser/PathParser.java rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/utilities/legacyparser/PathParser.java index 0b66972d4..bcb7a86b6 100644 --- a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/utilities/legacyparser/PathParser.java +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/utilities/legacyparser/PathParser.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with AndroidIDE. If not, see . */ -package com.sdsmdg.harjot.vectormaster.utilities.legacyparser; +package com.itsaky.androidide.inflater.vectormaster.utilities.legacyparser; import android.graphics.Path; diff --git a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/utilities/parser/ParserHelper.java b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/utilities/parser/ParserHelper.java similarity index 91% rename from uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/utilities/parser/ParserHelper.java rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/utilities/parser/ParserHelper.java index 46c791d58..811a4b278 100644 --- a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/utilities/parser/ParserHelper.java +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/utilities/parser/ParserHelper.java @@ -1,4 +1,21 @@ -package com.sdsmdg.harjot.vectormaster.utilities.parser; +/* + * 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.vectormaster.utilities.parser; /* diff --git a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/utilities/parser/PathParser.java b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/utilities/parser/PathParser.java similarity index 92% rename from uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/utilities/parser/PathParser.java rename to xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/utilities/parser/PathParser.java index 7ba0d147e..7a03f649d 100644 --- a/uidesigner/src/main/java/com/sdsmdg/harjot/vectormaster/utilities/parser/PathParser.java +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/vectormaster/utilities/parser/PathParser.java @@ -1,4 +1,21 @@ -package com.sdsmdg.harjot.vectormaster.utilities.parser; +/* + * 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.vectormaster.utilities.parser; import android.graphics.Path; import android.graphics.RectF; diff --git a/uidesigner/src/test/java/com/itsaky/androidide/inflater/AdapterIndexTest.kt b/xml-inflater/src/test/java/com/itsaky/androidide/inflater/AdapterIndexTest.kt similarity index 83% rename from uidesigner/src/test/java/com/itsaky/androidide/inflater/AdapterIndexTest.kt rename to xml-inflater/src/test/java/com/itsaky/androidide/inflater/AdapterIndexTest.kt index 5bc70e15a..0cd82d43b 100644 --- a/uidesigner/src/test/java/com/itsaky/androidide/inflater/AdapterIndexTest.kt +++ b/xml-inflater/src/test/java/com/itsaky/androidide/inflater/AdapterIndexTest.kt @@ -20,7 +20,6 @@ package com.itsaky.androidide.inflater import android.view.* import android.widget.* import com.google.common.truth.Truth.assertThat -import com.itsaky.androidide.inflater.internal.ViewAdapterIndex import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner @@ -32,12 +31,12 @@ class AdapterIndexTest { @Test fun `verify instances of adapters`() { viewToAdapter.forEach { - ViewAdapterIndex.getViewAdapter(it.key.qualifiedName).apply { + getViewAdapter(it.key.qualifiedName!!).apply { assertThat(this).isNotNull() assertThat(this).isInstanceOf(it.value.java) } } - abstractViews.forEach { assertThat(ViewAdapterIndex.getViewAdapter(it.qualifiedName)).isNull() } + abstractViews.forEach { assertThat(getViewAdapter(it.qualifiedName!!)).isNull() } } } diff --git a/xml-inflater/src/test/java/com/itsaky/androidide/inflater/ExampleUnitTest.kt b/xml-inflater/src/test/java/com/itsaky/androidide/inflater/ExampleUnitTest.kt new file mode 100644 index 000000000..bcb187e38 --- /dev/null +++ b/xml-inflater/src/test/java/com/itsaky/androidide/inflater/ExampleUnitTest.kt @@ -0,0 +1,34 @@ +/* + * 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 + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/uidesigner/src/test/java/com/itsaky/androidide/inflater/LayoutInflaterTest.kt b/xml-inflater/src/test/java/com/itsaky/androidide/inflater/LayoutInflaterTest.kt similarity index 100% rename from uidesigner/src/test/java/com/itsaky/androidide/inflater/LayoutInflaterTest.kt rename to xml-inflater/src/test/java/com/itsaky/androidide/inflater/LayoutInflaterTest.kt diff --git a/uidesigner/src/test/java/com/itsaky/androidide/inflater/ValueParsersTest.kt b/xml-inflater/src/test/java/com/itsaky/androidide/inflater/ValueParsersTest.kt similarity index 100% rename from uidesigner/src/test/java/com/itsaky/androidide/inflater/ValueParsersTest.kt rename to xml-inflater/src/test/java/com/itsaky/androidide/inflater/ValueParsersTest.kt diff --git a/uidesigner/src/test/java/com/itsaky/androidide/inflater/XmlInflaterTest.kt b/xml-inflater/src/test/java/com/itsaky/androidide/inflater/XmlInflaterTest.kt similarity index 100% rename from uidesigner/src/test/java/com/itsaky/androidide/inflater/XmlInflaterTest.kt rename to xml-inflater/src/test/java/com/itsaky/androidide/inflater/XmlInflaterTest.kt diff --git a/uidesigner/src/test/java/com/itsaky/androidide/inflater/adapterUtils.kt b/xml-inflater/src/test/java/com/itsaky/androidide/inflater/adapterUtils.kt similarity index 100% rename from uidesigner/src/test/java/com/itsaky/androidide/inflater/adapterUtils.kt rename to xml-inflater/src/test/java/com/itsaky/androidide/inflater/adapterUtils.kt