From 84e2ed5f9b9f860dd6b8f34deb6f2001bd198faf Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Sun, 21 May 2023 18:36:55 +0530 Subject: [PATCH] feat: implement UI for new templates API --- app/build.gradle.kts | 7 + app/src/main/AndroidManifest.xml | 3 +- .../assets/data/common/tooling-api-all.jar | Bin 16297949 -> 16297949 bytes .../androidide/activities/MainActivity.kt | 117 +++++++++-- .../adapters/TemplateListAdapter.kt | 104 ++++++++++ .../adapters/TemplateWidgetsListAdapter.kt | 63 ++++++ .../adapters/WizardTemplateAdapter.java | 80 ++++---- .../androidide/fragments/MainFragment.kt | 93 ++++----- .../fragments/TemplateDetailsFragment.kt | 70 +++++++ .../fragments/TemplateListFragment.kt | 100 +++++++++ .../androidide/viewmodel/MainViewModel.kt | 54 +++++ app/src/main/res/layout/activity_main.xml | 26 ++- .../res/layout/fragment_template_details.xml | 66 ++++++ .../res/layout/fragment_template_list.xml | 60 ++++++ .../res/layout/fragment_template_wizard.xml | 43 ++++ ...item.xml => layout_template_list_item.xml} | 7 +- .../layout_template_widgetlist_item.xml | 25 +++ app/src/main/res/layout/wizard_templates.xml | 7 +- build.gradle.kts | 1 + .../androidide/app/BaseApplication.java | 8 +- .../fragments/FragmentWithBinding.kt | 54 +++++ gradle/libs.versions.toml | 8 +- resources/src/main/res/values/strings.xml | 9 +- .../templates/ITemplateWidgetViewProvider.kt | 56 ++++++ .../itsaky/androidide/templates/base/base.kt | 1 + .../androidide/templates/base/util/utils.kt | 13 +- .../itsaky/androidide/templates/parameters.kt | 91 ++++++--- .../itsaky/androidide/templates/template.kt | 9 + templates-impl/build.gradle.kts | 1 + .../templates/impl/ConstraintVerifier.kt | 190 ++++++++++++++++++ .../impl/TemplateWidgetViewProviderImpl.kt | 168 ++++++++++++++++ .../src/main/res/layout/layout_checkbox.xml | 22 ++ .../src/main/res/layout/layout_spinner.xml | 31 +++ .../src/main/res/layout/layout_textfield.xml | 30 +++ .../itsaky/androidide/templates/UtilTest.kt | 107 +++++++++- uidesigner/build.gradle.kts | 2 +- 36 files changed, 1568 insertions(+), 158 deletions(-) create mode 100644 app/src/main/java/com/itsaky/androidide/adapters/TemplateListAdapter.kt create mode 100644 app/src/main/java/com/itsaky/androidide/adapters/TemplateWidgetsListAdapter.kt create mode 100644 app/src/main/java/com/itsaky/androidide/fragments/TemplateDetailsFragment.kt create mode 100644 app/src/main/java/com/itsaky/androidide/fragments/TemplateListFragment.kt create mode 100644 app/src/main/java/com/itsaky/androidide/viewmodel/MainViewModel.kt create mode 100644 app/src/main/res/layout/fragment_template_details.xml create mode 100644 app/src/main/res/layout/fragment_template_list.xml create mode 100644 app/src/main/res/layout/fragment_template_wizard.xml rename app/src/main/res/layout/{wizard_template_item.xml => layout_template_list_item.xml} (91%) create mode 100644 app/src/main/res/layout/layout_template_widgetlist_item.xml create mode 100644 common/src/main/java/com/itsaky/androidide/fragments/FragmentWithBinding.kt create mode 100644 templates-api/src/main/java/com/itsaky/androidide/templates/ITemplateWidgetViewProvider.kt create mode 100644 templates-impl/src/main/java/com/itsaky/androidide/templates/impl/ConstraintVerifier.kt create mode 100644 templates-impl/src/main/java/com/itsaky/androidide/templates/impl/TemplateWidgetViewProviderImpl.kt create mode 100644 templates-impl/src/main/res/layout/layout_checkbox.xml create mode 100644 templates-impl/src/main/res/layout/layout_spinner.xml create mode 100644 templates-impl/src/main/res/layout/layout_textfield.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 87bc62939..a39da15a8 100755 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -6,6 +6,7 @@ plugins { id("kotlin-kapt") id("kotlin-parcelize") id("com.google.android.gms.oss-licenses-plugin") + id("androidx.navigation.safeargs.kotlin") } android { @@ -101,11 +102,15 @@ dependencies { implementation(libs.androidx.coordinatorlayout) implementation(libs.androidx.drawer) implementation(libs.androidx.grid) + implementation(libs.androidx.nav.fragment) + implementation(libs.androidx.nav.ui) implementation(libs.androidx.preference) implementation(libs.androidx.recyclerview) + implementation(libs.androidx.transition) implementation(libs.androidx.vectors) implementation(libs.androidx.animated.vectors) implementation(libs.google.material) + implementation(libs.google.flexbox) implementation(libs.google.oss.licenses) // Kotlin @@ -136,6 +141,8 @@ dependencies { implementation(projects.preferences) implementation(projects.resources) implementation(projects.treeview) + implementation(projects.templatesApi) + implementation(projects.templatesImpl) implementation(projects.uidesigner) implementation(projects.xmlInflater) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 545b084a0..6eca2a2f4 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,6 +23,7 @@ android:name=".app.IDEApplication" android:allowBackup="false" android:allowNativeHeapPointerTagging="false" + android:enableOnBackInvokedCallback="true" android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" @@ -76,7 +77,7 @@ android:exported="true" android:permission="com.itsaky.androidide.permission.BIND_LOG_SERVICE"> - + 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 9d399520082c3cebe94392da8528a279672c6f45..576c344a6e9ab5a05a55dab9735d8ecc3a6c8957 100644 GIT binary patch delta 83711 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 delta 83711 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 bd(Z;0t=!mSE-izJZTQz-l%c1*H{|_4i*Ae- diff --git a/app/src/main/java/com/itsaky/androidide/activities/MainActivity.kt b/app/src/main/java/com/itsaky/androidide/activities/MainActivity.kt index b9cf39c4b..7db80f80b 100755 --- a/app/src/main/java/com/itsaky/androidide/activities/MainActivity.kt +++ b/app/src/main/java/com/itsaky/androidide/activities/MainActivity.kt @@ -16,23 +16,26 @@ */ package com.itsaky.androidide.activities -import android.R import android.content.Intent import android.os.Bundle import android.text.TextUtils import android.text.method.LinkMovementMethod import android.view.View import android.widget.TextView +import androidx.activity.OnBackPressedCallback +import androidx.activity.viewModels import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.core.text.HtmlCompat +import androidx.core.view.isVisible +import androidx.transition.TransitionManager +import androidx.transition.doOnEnd import com.blankj.utilcode.util.SizeUtils import com.google.android.material.color.DynamicColors -import com.itsaky.androidide.R.id +import com.google.android.material.transition.MaterialSharedAxis import com.itsaky.androidide.activities.editor.EditorActivityKt import com.itsaky.androidide.app.BaseApplication import com.itsaky.androidide.app.IDEActivity import com.itsaky.androidide.databinding.ActivityMainBinding -import com.itsaky.androidide.fragments.MainFragment import com.itsaky.androidide.preferences.internal.NO_OPENED_PROJECT import com.itsaky.androidide.preferences.internal.autoOpenProjects import com.itsaky.androidide.preferences.internal.confirmProjectOpen @@ -43,28 +46,106 @@ import com.itsaky.androidide.utils.DialogUtils import com.itsaky.androidide.utils.Environment import com.itsaky.androidide.utils.flashError import com.itsaky.androidide.utils.flashInfo +import com.itsaky.androidide.viewmodel.MainViewModel +import com.itsaky.androidide.viewmodel.MainViewModel.Companion.SCREEN_MAIN +import com.itsaky.androidide.viewmodel.MainViewModel.Companion.SCREEN_TEMPLATE_DETAILS +import com.itsaky.androidide.viewmodel.MainViewModel.Companion.SCREEN_TEMPLATE_LIST import java.io.File class MainActivity : IDEActivity() { - private var binding: ActivityMainBinding? = null + private val viewModel by viewModels() + private var _binding: ActivityMainBinding? = null + + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + viewModel.apply { + val newScreen = when (currentScreen.value) { + SCREEN_TEMPLATE_DETAILS -> SCREEN_TEMPLATE_LIST + SCREEN_TEMPLATE_LIST -> SCREEN_MAIN + else -> SCREEN_MAIN + } + + if (currentScreen.value != newScreen) { + setScreen(newScreen) + } + } + } + } + + private val binding: ActivityMainBinding + get() = checkNotNull(_binding) + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + if (!BaseApplication.isAbiSupported()) { showDeviceNotSupported() return } + if (!checkToolsIsInstalled()) { showDialogInstallJdkSdk() } else { openLastProject() } - supportFragmentManager.beginTransaction() - .replace(id.container, MainFragment(), MainFragment.TAG) - .commit() + + viewModel.currentScreen.observe(this) { screen -> + if (screen == -1) { + return@observe + } + + try { + onScreenChanged(screen) + } catch (err: Exception) { + onBackPressedCallback.isEnabled = screen != SCREEN_MAIN + } + } + + viewModel.setScreen(SCREEN_MAIN) + + onBackPressedDispatcher.addCallback(/* owner = */ + this, /* onBackPressedCallback = */ onBackPressedCallback) + } + + private fun onScreenChanged(screen: Int?) { + val previous = viewModel.previousScreen + if (previous != -1) { + val axis = + if ((previous == SCREEN_TEMPLATE_LIST || previous == SCREEN_TEMPLATE_DETAILS) && (screen == SCREEN_TEMPLATE_LIST || screen == SCREEN_TEMPLATE_DETAILS)) { + MaterialSharedAxis.X + } else MaterialSharedAxis.Y + + val isForward = when { + previous == SCREEN_MAIN && screen == SCREEN_TEMPLATE_LIST -> true + previous == SCREEN_TEMPLATE_LIST && screen == SCREEN_TEMPLATE_DETAILS -> true + previous == SCREEN_TEMPLATE_DETAILS && screen == SCREEN_TEMPLATE_LIST -> false + previous == SCREEN_TEMPLATE_LIST && screen == SCREEN_MAIN -> false + else -> throw IllegalStateException("Invalid screen states") + } + + val transition = MaterialSharedAxis(axis, isForward) + transition.doOnEnd { + onBackPressedCallback.isEnabled = + viewModel.currentScreen.value != SCREEN_MAIN + } + + TransitionManager.beginDelayedTransition(binding.root, transition) + } + + val view = when (screen) { + SCREEN_MAIN -> binding.main + SCREEN_TEMPLATE_LIST -> binding.templateList + SCREEN_TEMPLATE_DETAILS -> binding.templateDetails + else -> throw IllegalArgumentException("Invalid screen id: '$screen'") + } + + for (fragment in arrayOf(binding.main, binding.templateList, + binding.templateDetails)) { + fragment.isVisible = fragment == view + } } - override fun onStorageGranted() {} override fun onStorageDenied() { flashError(string.msg_storage_denied) finishAffinity() @@ -78,8 +159,8 @@ class MainActivity : IDEActivity() { } override fun bindLayout(): View { - binding = ActivityMainBinding.inflate(layoutInflater) - return binding!!.root + _binding = ActivityMainBinding.inflate(layoutInflater) + return binding.root } private fun showDialogInstallJdkSdk() { @@ -94,8 +175,9 @@ class MainActivity : IDEActivity() { view.movementMethod = LinkMovementMethod.getInstance() builder.setView(view) builder.setCancelable(false) - builder.setPositiveButton(R.string.ok) { _, _ -> openTerminal() } - builder.setNegativeButton(R.string.cancel) { _, _ -> finishAffinity() } + builder.setPositiveButton(android.R.string.ok) { _, _ -> openTerminal() } + builder.setNegativeButton( + android.R.string.cancel) { _, _ -> finishAffinity() } builder.setNeutralButton(string.btn_docs) { _, _ -> app.openDocs() } builder.show() } @@ -109,36 +191,41 @@ class MainActivity : IDEActivity() { builder.setTitle(string.title_device_not_supported) builder.setMessage(string.msg_device_not_supported) builder.setCancelable(false) - builder.setPositiveButton(R.string.ok) { _, _ -> finishAffinity() } + builder.setPositiveButton(android.R.string.ok) { _, _ -> finishAffinity() } builder.create().show() } private fun openLastProject() { - binding!!.root.post { tryOpenLastProject() } + binding.root.post { tryOpenLastProject() } } private fun tryOpenLastProject() { if (!autoOpenProjects) { return } + val openedProject = lastOpenedProject if (NO_OPENED_PROJECT == openedProject) { return } + if (TextUtils.isEmpty(openedProject)) { app flashInfo(string.msg_opened_project_does_not_exist) return } + val project = File(openedProject) if (!project.exists()) { flashInfo(string.msg_opened_project_does_not_exist) return } + if (confirmProjectOpen) { askProjectOpenPermission(project) return } + openProject(project) } @@ -164,6 +251,6 @@ class MainActivity : IDEActivity() { override fun onDestroy() { super.onDestroy() - binding = null + _binding = null } } diff --git a/app/src/main/java/com/itsaky/androidide/adapters/TemplateListAdapter.kt b/app/src/main/java/com/itsaky/androidide/adapters/TemplateListAdapter.kt new file mode 100644 index 000000000..7d8f1dffc --- /dev/null +++ b/app/src/main/java/com/itsaky/androidide/adapters/TemplateListAdapter.kt @@ -0,0 +1,104 @@ +/* + * 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.adapters + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.RecyclerView +import com.blankj.utilcode.util.ConvertUtils +import com.google.android.flexbox.FlexboxLayoutManager +import com.google.android.material.shape.CornerFamily +import com.itsaky.androidide.adapters.TemplateListAdapter.ViewHolder +import com.itsaky.androidide.databinding.LayoutTemplateListItemBinding +import com.itsaky.androidide.templates.Template + +/** + * [RecyclerView.Adapter] for showing templates in a [RecyclerView]. + * + * @author Akash Yadav + */ +class TemplateListAdapter(templates: List