diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2cd1a62ff..c36eba060 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -49,6 +49,9 @@ android:launchMode="singleTop" android:configChanges="orientation|screenSize|uiMode" android:windowSoftInputMode="adjustResize" /> + diff --git a/app/src/main/assets/data/arm64-v8a/bootstrap.zip b/app/src/main/assets/data/arm64-v8a/bootstrap.zip index 4df76dedc..952343793 100644 Binary files a/app/src/main/assets/data/arm64-v8a/bootstrap.zip and b/app/src/main/assets/data/arm64-v8a/bootstrap.zip differ diff --git a/app/src/main/assets/data/armeabi-v7a/bootstrap.zip b/app/src/main/assets/data/armeabi-v7a/bootstrap.zip index a2fd0c834..af0b3103c 100644 Binary files a/app/src/main/assets/data/armeabi-v7a/bootstrap.zip and b/app/src/main/assets/data/armeabi-v7a/bootstrap.zip differ diff --git a/app/src/main/java/com/itsaky/androidide/EditorActivity.java b/app/src/main/java/com/itsaky/androidide/EditorActivity.java index a81d43f64..6ef5b6d62 100755 --- a/app/src/main/java/com/itsaky/androidide/EditorActivity.java +++ b/app/src/main/java/com/itsaky/androidide/EditorActivity.java @@ -704,7 +704,9 @@ public class EditorActivity extends IDEActivity } } - public void previewLayout() {} + public void previewLayout() { + startActivity(new Intent(this, UIDesignerActivity.class)); + } public boolean saveAll(boolean notify) { return saveAll(notify, false); diff --git a/app/src/main/java/com/itsaky/androidide/UIDesignerActivity.kt b/app/src/main/java/com/itsaky/androidide/UIDesignerActivity.kt index a6afe6f68..33facf490 100644 --- a/app/src/main/java/com/itsaky/androidide/UIDesignerActivity.kt +++ b/app/src/main/java/com/itsaky/androidide/UIDesignerActivity.kt @@ -17,8 +17,13 @@ package com.itsaky.androidide +import android.os.Bundle import android.view.View +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.updateLayoutParams +import com.blankj.utilcode.util.SizeUtils import com.itsaky.androidide.app.IDEActivity +import com.itsaky.androidide.databinding.ActivityUiDesignerBinding /** * The UI Designer activity allows the user to design XML layouts with a drag-n-drop interface. @@ -26,8 +31,21 @@ import com.itsaky.androidide.app.IDEActivity * @author Akash Yadav */ class UIDesignerActivity : IDEActivity() { - + + private var binding: ActivityUiDesignerBinding? = null + override fun bindLayout(): View { - TODO("Not yet implemented") + this.binding = ActivityUiDesignerBinding.inflate(layoutInflater) + this.binding!!.root.childId = this.binding!!.container.id + return this.binding!!.root + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + } + + override fun onDestroy() { + super.onDestroy() + binding = null } } diff --git a/app/src/main/java/com/itsaky/androidide/fragments/BaseFragment.kt b/app/src/main/java/com/itsaky/androidide/fragments/BaseFragment.kt index fe6374911..f3fc7940f 100755 --- a/app/src/main/java/com/itsaky/androidide/fragments/BaseFragment.kt +++ b/app/src/main/java/com/itsaky/androidide/fragments/BaseFragment.kt @@ -27,12 +27,12 @@ import com.itsaky.toaster.Toaster.Type.ERROR import com.itsaky.toaster.toast import java.io.File -open class BaseFragment : Fragment() { +open class BaseFragment @JvmOverloads constructor(contentLayoutId: Int = 0) : Fragment(contentLayoutId) { private var callback: OnDirectoryPickedCallback? = null private val allowedAuthorities = setOf(ANDROID_DOCS_AUTHORITY, ANDROIDIDE_DOCS_AUTHORITY, TERMUX_DOCS_AUTHORITY) - + companion object { const val ANDROID_DOCS_AUTHORITY = "com.android.externalstorage.documents" const val ANDROIDIDE_DOCS_AUTHORITY = "com.itsaky.androidide.documents" diff --git a/app/src/main/java/com/itsaky/androidide/fragments/WidgetsListFragment.kt b/app/src/main/java/com/itsaky/androidide/fragments/WidgetsListFragment.kt new file mode 100644 index 000000000..82b52e5cf --- /dev/null +++ b/app/src/main/java/com/itsaky/androidide/fragments/WidgetsListFragment.kt @@ -0,0 +1,48 @@ +/* + * 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.fragments + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.itsaky.androidide.databinding.FragmentUiWidgetsBinding + +/** + * A fragment that shows the list of widgets available to use in the UI designer. + * + * @author Akash Yadav + */ +class WidgetsListFragment : BaseFragment() { + + private var binding: FragmentUiWidgetsBinding? = null + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + this.binding = FragmentUiWidgetsBinding.inflate(inflater, container, false) + return this.binding!!.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + } + + override fun onDestroyView() { + super.onDestroyView() + binding = null + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_editor.xml b/app/src/main/res/layout/activity_editor.xml index edd35bfa4..ad244556c 100755 --- a/app/src/main/res/layout/activity_editor.xml +++ b/app/src/main/res/layout/activity_editor.xml @@ -17,7 +17,7 @@ android:id="@+id/editor_appBarLayout" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@color/primaryDarkColor" + android:backgroundTint="@color/primaryDarkColor" app:layout_behavior="com.google.android.material.appbar.AppBarLayout$Behavior"> - - + + android:layout_height="match_parent" + android:animateLayoutChanges="true" + tools:ignore="DuplicateIncludedIds" + tools:openDrawer="start"> - \ No newline at end of file + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_ui_widgets.xml b/app/src/main/res/layout/fragment_ui_widgets.xml new file mode 100644 index 000000000..1811d4cf3 --- /dev/null +++ b/app/src/main/res/layout/fragment_ui_widgets.xml @@ -0,0 +1,45 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_ui_widgets_item.xml b/app/src/main/res/layout/fragment_ui_widgets_item.xml new file mode 100644 index 000000000..7251cd3b3 --- /dev/null +++ b/app/src/main/res/layout/fragment_ui_widgets_item.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_divider_horizontal.xml b/app/src/main/res/layout/layout_divider_horizontal.xml new file mode 100644 index 000000000..c300bc067 --- /dev/null +++ b/app/src/main/res/layout/layout_divider_horizontal.xml @@ -0,0 +1,32 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_run_tasks_category.xml b/app/src/main/res/layout/layout_run_tasks_category.xml index 6dd5f844a..621c88df8 100644 --- a/app/src/main/res/layout/layout_run_tasks_category.xml +++ b/app/src/main/res/layout/layout_run_tasks_category.xml @@ -21,17 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - + + + + + + + + + + + \ No newline at end of file diff --git a/tests/test-home/.androidide/init/model.jar b/tests/test-home/.androidide/init/model.jar index 67f886cb1..5fcf1a357 100644 Binary files a/tests/test-home/.androidide/init/model.jar and b/tests/test-home/.androidide/init/model.jar differ