From 7954ea4a4f9140eff9fb929c6886c685075392b8 Mon Sep 17 00:00:00 2001
From: Super12138 <70494801+Super12138@users.noreply.github.com>
Date: Sun, 8 Sep 2024 10:45:24 +0800
Subject: [PATCH] Uses fragments instead of activities
---
app/src/main/AndroidManifest.xml | 30 +--
.../main/kotlin/cn/super12138/todo/ToDoApp.kt | 12 +-
.../cn/super12138/todo/views/BaseActivity.kt | 3 +-
.../pages/BasePage.kt => BaseFragment.kt} | 30 ++-
.../{crash => activities}/CrashActivity.kt | 2 +-
.../{crash => activities}/CrashHandler.kt | 2 +-
.../todo/views/activities/MainActivity.kt | 60 ++++++
.../{all => adapters}/AllTasksAdapter.kt | 6 +-
.../views/{todo => adapters}/ToDoAdapter.kt | 7 +-
.../todo/views/all/AllTasksActivity.kt | 54 ------
.../AboutFragment.kt} | 29 +--
.../todo/views/fragments/AllTasksFragment.kt | 53 ++++++
.../{all => fragments}/InfoBottomSheet.kt | 2 +-
.../todo/views/fragments/MainFragment.kt | 41 ++++
.../ProgressFragment.kt | 26 ++-
.../SettingsFragment.kt | 32 ++--
.../views/fragments/SettingsParentFragment.kt | 29 +++
.../ToDoBottomSheet.kt | 6 +-
.../views/{todo => fragments}/ToDoFragment.kt | 7 +-
.../welcome/WelcomeFragment.kt} | 82 ++++----
.../fragments/welcome/pages/IntroPage.kt | 16 ++
.../fragments/welcome/pages/ProgressPage.kt | 16 ++
.../welcome/pages/ToDoBtnPage.kt | 17 +-
.../welcome/pages/ToDoItemPage.kt | 17 +-
.../todo/views/main/MainActivity.kt | 53 ------
.../todo/views/settings/SettingsActivity.kt | 31 ---
.../{all => viewmodels}/AllTasksViewModel.kt | 2 +-
.../ProgressViewModel.kt | 2 +-
.../{todo => viewmodels}/ToDoViewModel.kt | 2 +-
.../WelcomeViewModel.kt | 2 +-
.../todo/views/welcome/pages/IntroPage.kt | 21 ---
.../todo/views/welcome/pages/ProgressPage.kt | 21 ---
.../{activity_main.xml => fragment_main.xml} | 8 +-
.../{activity_main.xml => fragment_main.xml} | 8 +-
app/src/main/res/layout/activity_about.xml | 177 ------------------
app/src/main/res/layout/activity_crash.xml | 2 +-
app/src/main/res/layout/activity_main.xml | 43 +----
app/src/main/res/layout/fragment_about.xml | 170 +++++++++++++++++
...y_all_tasks.xml => fragment_all_tasks.xml} | 3 +-
app/src/main/res/layout/fragment_main.xml | 50 +++++
app/src/main/res/layout/fragment_progress.xml | 2 +-
...ity_settings.xml => fragment_settings.xml} | 15 +-
...ivity_welcome.xml => fragment_welcome.xml} | 2 +-
.../res/layout/fragment_welcome_progress.xml | 2 +-
44 files changed, 619 insertions(+), 576 deletions(-)
rename app/src/main/kotlin/cn/super12138/todo/views/{welcome/pages/BasePage.kt => BaseFragment.kt} (57%)
rename app/src/main/kotlin/cn/super12138/todo/views/{crash => activities}/CrashActivity.kt (97%)
rename app/src/main/kotlin/cn/super12138/todo/views/{crash => activities}/CrashHandler.kt (95%)
create mode 100644 app/src/main/kotlin/cn/super12138/todo/views/activities/MainActivity.kt
rename app/src/main/kotlin/cn/super12138/todo/views/{all => adapters}/AllTasksAdapter.kt (94%)
rename app/src/main/kotlin/cn/super12138/todo/views/{todo => adapters}/ToDoAdapter.kt (94%)
delete mode 100644 app/src/main/kotlin/cn/super12138/todo/views/all/AllTasksActivity.kt
rename app/src/main/kotlin/cn/super12138/todo/views/{about/AboutActivity.kt => fragments/AboutFragment.kt} (69%)
create mode 100644 app/src/main/kotlin/cn/super12138/todo/views/fragments/AllTasksFragment.kt
rename app/src/main/kotlin/cn/super12138/todo/views/{all => fragments}/InfoBottomSheet.kt (98%)
create mode 100644 app/src/main/kotlin/cn/super12138/todo/views/fragments/MainFragment.kt
rename app/src/main/kotlin/cn/super12138/todo/views/{progress => fragments}/ProgressFragment.kt (78%)
rename app/src/main/kotlin/cn/super12138/todo/views/{settings => fragments}/SettingsFragment.kt (93%)
create mode 100644 app/src/main/kotlin/cn/super12138/todo/views/fragments/SettingsParentFragment.kt
rename app/src/main/kotlin/cn/super12138/todo/views/{bottomsheet => fragments}/ToDoBottomSheet.kt (97%)
rename app/src/main/kotlin/cn/super12138/todo/views/{todo => fragments}/ToDoFragment.kt (95%)
rename app/src/main/kotlin/cn/super12138/todo/views/{welcome/WelcomeActivity.kt => fragments/welcome/WelcomeFragment.kt} (67%)
create mode 100644 app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/pages/IntroPage.kt
create mode 100644 app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/pages/ProgressPage.kt
rename app/src/main/kotlin/cn/super12138/todo/views/{ => fragments}/welcome/pages/ToDoBtnPage.kt (63%)
rename app/src/main/kotlin/cn/super12138/todo/views/{ => fragments}/welcome/pages/ToDoItemPage.kt (63%)
delete mode 100644 app/src/main/kotlin/cn/super12138/todo/views/main/MainActivity.kt
delete mode 100644 app/src/main/kotlin/cn/super12138/todo/views/settings/SettingsActivity.kt
rename app/src/main/kotlin/cn/super12138/todo/views/{all => viewmodels}/AllTasksViewModel.kt (94%)
rename app/src/main/kotlin/cn/super12138/todo/views/{progress => viewmodels}/ProgressViewModel.kt (95%)
rename app/src/main/kotlin/cn/super12138/todo/views/{todo => viewmodels}/ToDoViewModel.kt (97%)
rename app/src/main/kotlin/cn/super12138/todo/views/{welcome => viewmodels}/WelcomeViewModel.kt (91%)
delete mode 100644 app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/IntroPage.kt
delete mode 100644 app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/ProgressPage.kt
rename app/src/main/res/layout-land/{activity_main.xml => fragment_main.xml} (88%)
rename app/src/main/res/layout-small/{activity_main.xml => fragment_main.xml} (88%)
delete mode 100644 app/src/main/res/layout/activity_about.xml
create mode 100644 app/src/main/res/layout/fragment_about.xml
rename app/src/main/res/layout/{activity_all_tasks.xml => fragment_all_tasks.xml} (94%)
create mode 100644 app/src/main/res/layout/fragment_main.xml
rename app/src/main/res/layout/{activity_settings.xml => fragment_settings.xml} (77%)
rename app/src/main/res/layout/{activity_welcome.xml => fragment_welcome.xml} (97%)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e6ee080..682f73e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -17,41 +17,19 @@
tools:targetApi="35">
+
+
-
-
-
-
-
-
-
-
diff --git a/app/src/main/kotlin/cn/super12138/todo/ToDoApp.kt b/app/src/main/kotlin/cn/super12138/todo/ToDoApp.kt
index efe710d..8308a25 100644
--- a/app/src/main/kotlin/cn/super12138/todo/ToDoApp.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/ToDoApp.kt
@@ -3,11 +3,8 @@ package cn.super12138.todo
import android.annotation.SuppressLint
import android.app.Application
import android.content.Context
-import android.content.Intent
-import cn.super12138.todo.constant.GlobalValues
import cn.super12138.todo.logic.dao.ToDoRoomDB
-import cn.super12138.todo.views.crash.CrashHandler
-import cn.super12138.todo.views.welcome.WelcomeActivity
+import cn.super12138.todo.views.activities.CrashHandler
import com.google.android.material.color.DynamicColors
class ToDoApp : Application() {
@@ -28,12 +25,5 @@ class ToDoApp : Application() {
Thread.setDefaultUncaughtExceptionHandler(crashHandler)
db = database
-
- if (!GlobalValues.welcomePage) {
- val intent = Intent(this, WelcomeActivity::class.java).apply {
- flags = Intent.FLAG_ACTIVITY_NEW_TASK
- }
- startActivity(intent)
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/BaseActivity.kt b/app/src/main/kotlin/cn/super12138/todo/views/BaseActivity.kt
index 08efcb9..384583d 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/BaseActivity.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/BaseActivity.kt
@@ -5,7 +5,6 @@ import android.os.Bundle
import android.view.WindowManager
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
-import androidx.core.view.WindowCompat
import androidx.viewbinding.ViewBinding
import cn.super12138.todo.constant.GlobalValues
@@ -19,7 +18,7 @@ abstract class BaseActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
// 确保 Navigation Bar 区域会被显示
- WindowCompat.setDecorFitsSystemWindows(window, false)
+ // WindowCompat.setDecorFitsSystemWindows(window, false)
binding = getViewBinding()
setContentView(binding.root)
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/BasePage.kt b/app/src/main/kotlin/cn/super12138/todo/views/BaseFragment.kt
similarity index 57%
rename from app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/BasePage.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/BaseFragment.kt
index 0a2313a..2e58b76 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/BasePage.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/BaseFragment.kt
@@ -1,12 +1,18 @@
-package cn.super12138.todo.views.welcome.pages
+package cn.super12138.todo.views
import android.os.Bundle
+import android.view.LayoutInflater
import android.view.View
+import android.view.ViewGroup
import androidx.fragment.app.Fragment
+import androidx.viewbinding.ViewBinding
import com.google.android.material.color.MaterialColors
import com.google.android.material.transition.MaterialSharedAxis
-open class BasePage : Fragment() {
+abstract class BaseFragment : Fragment() {
+ private var _binding: T? = null
+ protected val binding get() = _binding!!
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, /* forward= */ true)
@@ -15,10 +21,30 @@ open class BasePage : Fragment() {
reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, /* forward= */ false)
}
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ _binding = getViewBinding(inflater, container, false)
+ return binding.root
+ }
+
// https://github.com/material-components/material-components-android/issues/1984#issuecomment-1089710991
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// Overlap colors.
view.setBackgroundColor(MaterialColors.getColor(view, android.R.attr.colorBackground))
}
+
+ abstract fun getViewBinding(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ attachToRoot: Boolean
+ ): T
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/crash/CrashActivity.kt b/app/src/main/kotlin/cn/super12138/todo/views/activities/CrashActivity.kt
similarity index 97%
rename from app/src/main/kotlin/cn/super12138/todo/views/crash/CrashActivity.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/activities/CrashActivity.kt
index 02790d8..b8cfce2 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/crash/CrashActivity.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/activities/CrashActivity.kt
@@ -1,4 +1,4 @@
-package cn.super12138.todo.views.crash
+package cn.super12138.todo.views.activities
import android.os.Build
import android.os.Bundle
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/crash/CrashHandler.kt b/app/src/main/kotlin/cn/super12138/todo/views/activities/CrashHandler.kt
similarity index 95%
rename from app/src/main/kotlin/cn/super12138/todo/views/crash/CrashHandler.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/activities/CrashHandler.kt
index 8bd46c9..07325db 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/crash/CrashHandler.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/activities/CrashHandler.kt
@@ -1,4 +1,4 @@
-package cn.super12138.todo.views.crash
+package cn.super12138.todo.views.activities
import android.content.Context
import android.content.Intent
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/activities/MainActivity.kt b/app/src/main/kotlin/cn/super12138/todo/views/activities/MainActivity.kt
new file mode 100644
index 0000000..ffab40c
--- /dev/null
+++ b/app/src/main/kotlin/cn/super12138/todo/views/activities/MainActivity.kt
@@ -0,0 +1,60 @@
+package cn.super12138.todo.views.activities
+// 2023.11.18立项
+import android.app.ComponentCaller
+import android.content.Intent
+import android.os.Bundle
+import android.view.WindowManager
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.commit
+import cn.super12138.todo.R
+import cn.super12138.todo.constant.GlobalValues
+import cn.super12138.todo.databinding.ActivityMainBinding
+import cn.super12138.todo.views.BaseActivity
+import cn.super12138.todo.views.fragments.SettingsParentFragment
+import cn.super12138.todo.views.fragments.welcome.WelcomeFragment
+
+class MainActivity : BaseActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ if (!GlobalValues.welcomePage) {
+ startFragment(WelcomeFragment())
+ }
+
+ when (GlobalValues.secureMode) {
+ true -> window.setFlags(
+ WindowManager.LayoutParams.FLAG_SECURE,
+ WindowManager.LayoutParams.FLAG_SECURE
+ )
+
+ false -> window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
+ }
+ handleIntent(intent)
+ }
+
+ override fun onNewIntent(intent: Intent, caller: ComponentCaller) {
+ super.onNewIntent(intent, caller)
+ handleIntent(intent)
+ }
+
+ override fun getViewBinding(): ActivityMainBinding {
+ return ActivityMainBinding.inflate(layoutInflater)
+ }
+
+ fun startFragment(fragment: Fragment, args: (Bundle.() -> Unit)? = null) {
+ supportFragmentManager.commit {
+ addToBackStack(System.currentTimeMillis().toString())
+ hide(supportFragmentManager.fragments.last())
+ add(
+ R.id.app_container,
+ fragment.apply { args?.let { arguments = Bundle().apply(it) } }
+ )
+ }
+ }
+
+ private fun handleIntent(intent: Intent) {
+ when (intent.action) {
+ Intent.ACTION_APPLICATION_PREFERENCES -> startFragment(SettingsParentFragment())
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/all/AllTasksAdapter.kt b/app/src/main/kotlin/cn/super12138/todo/views/adapters/AllTasksAdapter.kt
similarity index 94%
rename from app/src/main/kotlin/cn/super12138/todo/views/all/AllTasksAdapter.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/adapters/AllTasksAdapter.kt
index 9081246..260d503 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/all/AllTasksAdapter.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/adapters/AllTasksAdapter.kt
@@ -1,4 +1,4 @@
-package cn.super12138.todo.views.all
+package cn.super12138.todo.views.adapters
import android.view.LayoutInflater
import android.view.View
@@ -15,7 +15,7 @@ import cn.super12138.todo.constant.Constants.DEFAULT_VIEW_TYPE
import cn.super12138.todo.constant.Constants.EMPTY_VIEW_TYPE
import cn.super12138.todo.logic.model.ToDo
import cn.super12138.todo.utils.VibrationUtils
-import cn.super12138.todo.views.todo.ToDoAdapter.DefaultViewHolder
+import cn.super12138.todo.views.fragments.InfoBottomSheet
class AllTasksAdapter(
private val todoList: MutableList,
@@ -61,6 +61,8 @@ class AllTasksAdapter(
if (todo.state == 1) {
holder.itemBackground.background =
ContextCompat.getDrawable(ToDoApp.context, R.drawable.bg_item_complete)
+ } else {
+ holder.itemBackground.background = null
}
holder.itemView.setOnClickListener {
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoAdapter.kt b/app/src/main/kotlin/cn/super12138/todo/views/adapters/ToDoAdapter.kt
similarity index 94%
rename from app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoAdapter.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/adapters/ToDoAdapter.kt
index c9a3193..99c7537 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoAdapter.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/adapters/ToDoAdapter.kt
@@ -1,4 +1,4 @@
-package cn.super12138.todo.views.todo
+package cn.super12138.todo.views.adapters
import android.view.LayoutInflater
import android.view.View
@@ -16,8 +16,9 @@ import cn.super12138.todo.constant.GlobalValues
import cn.super12138.todo.logic.model.ToDo
import cn.super12138.todo.utils.VibrationUtils
import cn.super12138.todo.utils.showToast
-import cn.super12138.todo.views.bottomsheet.ToDoBottomSheet
-import cn.super12138.todo.views.progress.ProgressViewModel
+import cn.super12138.todo.views.fragments.ToDoBottomSheet
+import cn.super12138.todo.views.viewmodels.ProgressViewModel
+import cn.super12138.todo.views.viewmodels.ToDoViewModel
class ToDoAdapter(
private val todoList: MutableList,
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/all/AllTasksActivity.kt b/app/src/main/kotlin/cn/super12138/todo/views/all/AllTasksActivity.kt
deleted file mode 100644
index 2502baa..0000000
--- a/app/src/main/kotlin/cn/super12138/todo/views/all/AllTasksActivity.kt
+++ /dev/null
@@ -1,54 +0,0 @@
-package cn.super12138.todo.views.all
-
-import android.os.Bundle
-import android.view.WindowManager
-import androidx.activity.viewModels
-import androidx.lifecycle.Observer
-import androidx.recyclerview.widget.LinearLayoutManager
-import cn.super12138.todo.ToDoApp
-import cn.super12138.todo.constant.GlobalValues
-import cn.super12138.todo.databinding.ActivityAllTasksBinding
-import cn.super12138.todo.utils.VibrationUtils
-import cn.super12138.todo.views.BaseActivity
-import me.zhanghai.android.fastscroll.FastScrollerBuilder
-
-class AllTasksActivity : BaseActivity() {
- private val viewModel by viewModels()
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-
- when (GlobalValues.secureMode) {
- true -> window.setFlags(
- WindowManager.LayoutParams.FLAG_SECURE,
- WindowManager.LayoutParams.FLAG_SECURE
- )
-
- false -> window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
- }
-
- val todoListAll = viewModel.todoListAll
- val layoutManager = LinearLayoutManager(ToDoApp.context)
- binding.allTasksList.layoutManager = layoutManager
- val adapter = AllTasksAdapter(todoListAll, supportFragmentManager)
- binding.allTasksList.adapter = adapter
-
- FastScrollerBuilder(binding.allTasksList).apply {
- useMd2Style()
- build()
- }
-
- binding.toolBar.setNavigationOnClickListener {
- VibrationUtils.performHapticFeedback(it)
-
- finish()
- }
-
- viewModel.refreshData.observe(this, Observer {
- binding.allTasksList.adapter?.notifyItemRangeChanged(0, todoListAll.size + 1)
- })
- }
-
- override fun getViewBinding(): ActivityAllTasksBinding {
- return ActivityAllTasksBinding.inflate(layoutInflater)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/about/AboutActivity.kt b/app/src/main/kotlin/cn/super12138/todo/views/fragments/AboutFragment.kt
similarity index 69%
rename from app/src/main/kotlin/cn/super12138/todo/views/about/AboutActivity.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/fragments/AboutFragment.kt
index 65276fa..f5fb487 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/about/AboutActivity.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/fragments/AboutFragment.kt
@@ -1,27 +1,30 @@
-package cn.super12138.todo.views.about
+package cn.super12138.todo.views.fragments
import android.content.Intent
import android.net.Uri
import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
import cn.super12138.todo.constant.Constants
-import cn.super12138.todo.databinding.ActivityAboutBinding
+import cn.super12138.todo.databinding.FragmentAboutBinding
import cn.super12138.todo.utils.VersionUtils
import cn.super12138.todo.utils.VibrationUtils
import cn.super12138.todo.utils.showToast
-import cn.super12138.todo.views.BaseActivity
+import cn.super12138.todo.views.BaseFragment
-class AboutActivity : BaseActivity() {
+class AboutFragment : BaseFragment() {
private var clickCount = 0
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
- binding.appVersion.text = VersionUtils.getAppVersion(this)
+ binding.appVersion.text = VersionUtils.getAppVersion(requireActivity())
binding.toolBar.setNavigationOnClickListener {
VibrationUtils.performHapticFeedback(it)
- finish()
+ requireActivity().supportFragmentManager.popBackStack()
}
binding.checkUpdate.setOnClickListener {
@@ -58,7 +61,7 @@ class AboutActivity : BaseActivity() {
5 -> {
clickCount = 0
// GlobalValues.springFestivalTheme = !GlobalValues.springFestivalTheme
- "\uD83C\uDF68".showToast()
+ "🍂".showToast()
/*when (java.util.Calendar.getInstance(Locale.getDefault())
.get(java.util.Calendar.MONTH) + 1) {
3, 4, 5 ->
@@ -72,7 +75,11 @@ class AboutActivity : BaseActivity() {
}
}
- override fun getViewBinding(): ActivityAboutBinding {
- return ActivityAboutBinding.inflate(layoutInflater)
+ override fun getViewBinding(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ attachToRoot: Boolean
+ ): FragmentAboutBinding {
+ return FragmentAboutBinding.inflate(inflater, container, attachToRoot)
}
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/fragments/AllTasksFragment.kt b/app/src/main/kotlin/cn/super12138/todo/views/fragments/AllTasksFragment.kt
new file mode 100644
index 0000000..0e69f0a
--- /dev/null
+++ b/app/src/main/kotlin/cn/super12138/todo/views/fragments/AllTasksFragment.kt
@@ -0,0 +1,53 @@
+package cn.super12138.todo.views.fragments
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.viewModels
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
+import cn.super12138.todo.ToDoApp
+import cn.super12138.todo.databinding.FragmentAllTasksBinding
+import cn.super12138.todo.utils.VibrationUtils
+import cn.super12138.todo.views.BaseFragment
+import cn.super12138.todo.views.adapters.AllTasksAdapter
+import cn.super12138.todo.views.viewmodels.AllTasksViewModel
+import me.zhanghai.android.fastscroll.FastScrollerBuilder
+
+class AllTasksFragment : BaseFragment() {
+ private val viewModel by viewModels()
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ val todoListAll = viewModel.todoListAll
+ val layoutManager = LinearLayoutManager(ToDoApp.context)
+ binding.allTasksList.layoutManager = layoutManager
+ val adapter = AllTasksAdapter(todoListAll, childFragmentManager)
+ binding.allTasksList.adapter = adapter
+
+ FastScrollerBuilder(binding.allTasksList).apply {
+ useMd2Style()
+ build()
+ }
+
+ binding.toolBar.setNavigationOnClickListener {
+ VibrationUtils.performHapticFeedback(it)
+
+ requireActivity().supportFragmentManager.popBackStack()
+ }
+
+ viewModel.refreshData.observe(viewLifecycleOwner, Observer {
+ binding.allTasksList.adapter?.notifyItemRangeChanged(0, todoListAll.size + 1)
+ })
+ }
+
+ override fun getViewBinding(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ attachToRoot: Boolean
+ ): FragmentAllTasksBinding {
+ return FragmentAllTasksBinding.inflate(inflater, container, attachToRoot)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/all/InfoBottomSheet.kt b/app/src/main/kotlin/cn/super12138/todo/views/fragments/InfoBottomSheet.kt
similarity index 98%
rename from app/src/main/kotlin/cn/super12138/todo/views/all/InfoBottomSheet.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/fragments/InfoBottomSheet.kt
index a2cd040..a1f151a 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/all/InfoBottomSheet.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/fragments/InfoBottomSheet.kt
@@ -1,4 +1,4 @@
-package cn.super12138.todo.views.all
+package cn.super12138.todo.views.fragments
import android.os.Bundle
import android.view.LayoutInflater
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/fragments/MainFragment.kt b/app/src/main/kotlin/cn/super12138/todo/views/fragments/MainFragment.kt
new file mode 100644
index 0000000..f21b23b
--- /dev/null
+++ b/app/src/main/kotlin/cn/super12138/todo/views/fragments/MainFragment.kt
@@ -0,0 +1,41 @@
+package cn.super12138.todo.views.fragments
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import cn.super12138.todo.R
+import cn.super12138.todo.databinding.FragmentMainBinding
+import cn.super12138.todo.utils.VibrationUtils
+import cn.super12138.todo.views.BaseFragment
+import cn.super12138.todo.views.activities.MainActivity
+
+class MainFragment : BaseFragment() {
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ binding.toolBar.setOnMenuItemClickListener { menuItem ->
+ when (menuItem.itemId) {
+ R.id.item_settings -> {
+ (requireActivity() as MainActivity).startFragment(SettingsParentFragment())
+
+ VibrationUtils.performHapticFeedback(binding.toolBar)
+
+ true
+ }
+
+ else -> false
+ }
+ }
+
+ // setSupportActionBar(binding.toolbar)
+ }
+
+ override fun getViewBinding(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ attachToRoot: Boolean
+ ): FragmentMainBinding {
+ return FragmentMainBinding.inflate(inflater, container, attachToRoot)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/progress/ProgressFragment.kt b/app/src/main/kotlin/cn/super12138/todo/views/fragments/ProgressFragment.kt
similarity index 78%
rename from app/src/main/kotlin/cn/super12138/todo/views/progress/ProgressFragment.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/fragments/ProgressFragment.kt
index aede463..ebeed5f 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/progress/ProgressFragment.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/fragments/ProgressFragment.kt
@@ -1,29 +1,19 @@
-package cn.super12138.todo.views.progress
+package cn.super12138.todo.views.fragments
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.Observer
import cn.super12138.todo.R
import cn.super12138.todo.databinding.FragmentProgressBinding
+import cn.super12138.todo.views.BaseFragment
+import cn.super12138.todo.views.viewmodels.ProgressViewModel
-class ProgressFragment : Fragment() {
+class ProgressFragment : BaseFragment() {
private val viewModel: ProgressViewModel by viewModels({ requireActivity() })
- private lateinit var binding: FragmentProgressBinding
-
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View {
- binding = FragmentProgressBinding.inflate(inflater, container, false)
-
- return binding.root
- }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
@@ -51,4 +41,12 @@ class ProgressFragment : Fragment() {
viewModel.updateProgress()
}
+
+ override fun getViewBinding(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ attachToRoot: Boolean
+ ): FragmentProgressBinding {
+ return FragmentProgressBinding.inflate(inflater, container, attachToRoot)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/settings/SettingsFragment.kt b/app/src/main/kotlin/cn/super12138/todo/views/fragments/SettingsFragment.kt
similarity index 93%
rename from app/src/main/kotlin/cn/super12138/todo/views/settings/SettingsFragment.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/fragments/SettingsFragment.kt
index 0801717..14c882e 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/settings/SettingsFragment.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/fragments/SettingsFragment.kt
@@ -1,4 +1,4 @@
-package cn.super12138.todo.views.settings
+package cn.super12138.todo.views.fragments
import android.content.Context
import android.content.Intent
@@ -21,10 +21,8 @@ import cn.super12138.todo.databinding.DialogRestoreBinding
import cn.super12138.todo.logic.Repository
import cn.super12138.todo.logic.dao.ToDoRoom
import cn.super12138.todo.utils.VibrationUtils
-import cn.super12138.todo.views.about.AboutActivity
-import cn.super12138.todo.views.all.AllTasksActivity
-import cn.super12138.todo.views.main.MainActivity
-import cn.super12138.todo.views.welcome.WelcomeActivity
+import cn.super12138.todo.views.activities.MainActivity
+import cn.super12138.todo.views.fragments.welcome.WelcomeFragment
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
import com.google.gson.Gson
@@ -39,6 +37,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.preferences, rootKey)
+ val mainActivity = requireActivity() as MainActivity
val gson = Gson()
findPreference(Constants.PREF_DARK_MODE)?.apply {
@@ -173,15 +172,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
findPreference(Constants.PREF_ALL_TASKS)?.apply {
setOnPreferenceClickListener {
- startActivity(Intent(context, AllTasksActivity::class.java))
- VibrationUtils.performHapticFeedback(view)
- true
- }
- }
-
- findPreference(Constants.PREF_ABOUT)?.apply {
- setOnPreferenceClickListener {
- startActivity(Intent(context, AboutActivity::class.java))
+ mainActivity.startFragment(AllTasksFragment())
VibrationUtils.performHapticFeedback(view)
true
}
@@ -189,10 +180,15 @@ class SettingsFragment : PreferenceFragmentCompat() {
findPreference(Constants.PREF_REENTER_WELCOME_ACTIVITY)?.apply {
setOnPreferenceClickListener {
- val intent = Intent(context, WelcomeActivity::class.java).apply {
- flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
- }
- startActivity(intent)
+ mainActivity.startFragment(WelcomeFragment())
+ VibrationUtils.performHapticFeedback(view)
+ true
+ }
+ }
+
+ findPreference(Constants.PREF_ABOUT)?.apply {
+ setOnPreferenceClickListener {
+ mainActivity.startFragment(AboutFragment())
VibrationUtils.performHapticFeedback(view)
true
}
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/fragments/SettingsParentFragment.kt b/app/src/main/kotlin/cn/super12138/todo/views/fragments/SettingsParentFragment.kt
new file mode 100644
index 0000000..87b0c26
--- /dev/null
+++ b/app/src/main/kotlin/cn/super12138/todo/views/fragments/SettingsParentFragment.kt
@@ -0,0 +1,29 @@
+package cn.super12138.todo.views.fragments
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import cn.super12138.todo.databinding.FragmentSettingsBinding
+import cn.super12138.todo.utils.VibrationUtils
+import cn.super12138.todo.views.BaseFragment
+
+class SettingsParentFragment : BaseFragment() {
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ binding.toolBar.setNavigationOnClickListener {
+ VibrationUtils.performHapticFeedback(it)
+
+ requireActivity().supportFragmentManager.popBackStack()
+ }
+ }
+
+ override fun getViewBinding(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ attachToRoot: Boolean
+ ): FragmentSettingsBinding {
+ return FragmentSettingsBinding.inflate(inflater, container, attachToRoot)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/bottomsheet/ToDoBottomSheet.kt b/app/src/main/kotlin/cn/super12138/todo/views/fragments/ToDoBottomSheet.kt
similarity index 97%
rename from app/src/main/kotlin/cn/super12138/todo/views/bottomsheet/ToDoBottomSheet.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/fragments/ToDoBottomSheet.kt
index 6946ecc..0138b2d 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/bottomsheet/ToDoBottomSheet.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/fragments/ToDoBottomSheet.kt
@@ -1,4 +1,4 @@
-package cn.super12138.todo.views.bottomsheet
+package cn.super12138.todo.views.fragments
import android.os.Bundle
import android.view.LayoutInflater
@@ -15,8 +15,8 @@ import cn.super12138.todo.utils.TextUtils
import cn.super12138.todo.utils.VibrationUtils
import cn.super12138.todo.utils.showToast
import cn.super12138.todo.utils.toEditable
-import cn.super12138.todo.views.progress.ProgressViewModel
-import cn.super12138.todo.views.todo.ToDoViewModel
+import cn.super12138.todo.views.viewmodels.ProgressViewModel
+import cn.super12138.todo.views.viewmodels.ToDoViewModel
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoFragment.kt b/app/src/main/kotlin/cn/super12138/todo/views/fragments/ToDoFragment.kt
similarity index 95%
rename from app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoFragment.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/fragments/ToDoFragment.kt
index cbd2bf2..605a437 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoFragment.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/fragments/ToDoFragment.kt
@@ -1,4 +1,4 @@
-package cn.super12138.todo.views.todo
+package cn.super12138.todo.views.fragments
import android.os.Bundle
import android.view.LayoutInflater
@@ -18,8 +18,9 @@ import cn.super12138.todo.ToDoApp
import cn.super12138.todo.databinding.FragmentTodoBinding
import cn.super12138.todo.logic.Repository
import cn.super12138.todo.utils.VibrationUtils
-import cn.super12138.todo.views.bottomsheet.ToDoBottomSheet
-import cn.super12138.todo.views.progress.ProgressViewModel
+import cn.super12138.todo.views.adapters.ToDoAdapter
+import cn.super12138.todo.views.viewmodels.ProgressViewModel
+import cn.super12138.todo.views.viewmodels.ToDoViewModel
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import kotlinx.coroutines.launch
import me.zhanghai.android.fastscroll.FastScrollerBuilder
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/welcome/WelcomeActivity.kt b/app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/WelcomeFragment.kt
similarity index 67%
rename from app/src/main/kotlin/cn/super12138/todo/views/welcome/WelcomeActivity.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/WelcomeFragment.kt
index be57447..7fc68e8 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/welcome/WelcomeActivity.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/WelcomeFragment.kt
@@ -1,33 +1,37 @@
-package cn.super12138.todo.views.welcome
+package cn.super12138.todo.views.fragments.welcome
-import android.content.Intent
import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
import androidx.activity.OnBackPressedCallback
-import androidx.activity.viewModels
import androidx.appcompat.content.res.AppCompatResources
import androidx.fragment.app.Fragment
import androidx.fragment.app.commit
+import androidx.fragment.app.viewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import cn.super12138.todo.R
import cn.super12138.todo.constant.GlobalValues
-import cn.super12138.todo.databinding.ActivityWelcomeBinding
+import cn.super12138.todo.databinding.FragmentWelcomeBinding
import cn.super12138.todo.utils.VibrationUtils
import cn.super12138.todo.utils.setOnIntervalClickListener
-import cn.super12138.todo.views.BaseActivity
-import cn.super12138.todo.views.main.MainActivity
-import cn.super12138.todo.views.welcome.pages.IntroPage
-import cn.super12138.todo.views.welcome.pages.ProgressPage
-import cn.super12138.todo.views.welcome.pages.ToDoBtnPage
-import cn.super12138.todo.views.welcome.pages.ToDoItemPage
+import cn.super12138.todo.views.BaseFragment
+import cn.super12138.todo.views.activities.MainActivity
+import cn.super12138.todo.views.fragments.MainFragment
+import cn.super12138.todo.views.fragments.welcome.pages.IntroPage
+import cn.super12138.todo.views.fragments.welcome.pages.ProgressPage
+import cn.super12138.todo.views.fragments.welcome.pages.ToDoBtnPage
+import cn.super12138.todo.views.fragments.welcome.pages.ToDoItemPage
+import cn.super12138.todo.views.viewmodels.WelcomeViewModel
import kotlinx.coroutines.launch
-class WelcomeActivity : BaseActivity() {
+class WelcomeFragment : BaseFragment() {
private val viewModel by viewModels()
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
val previousBtn = binding.previousBtn
val nextBtn = binding.nextBtn
@@ -35,6 +39,19 @@ class WelcomeActivity : BaseActivity() {
val currentPage = viewModel.currentPage // 0: Intro 1: Progress 2: ToDo Btn 3: ToDo Item
+ // 返回回调
+ val callback = object : OnBackPressedCallback(true) {
+ override fun handleOnBackPressed() {
+ if (currentPage.value == 0) {
+ requireActivity().finishAffinity()
+ } else {
+ childFragmentManager.popBackStack()
+ viewModel.decreasePage()
+ }
+ }
+ }
+
+
centerBtn.setOnIntervalClickListener {
VibrationUtils.performHapticFeedback(it)
@@ -44,9 +61,7 @@ class WelcomeActivity : BaseActivity() {
if (currentPage.value == 3) {
GlobalValues.welcomePage = true
- finish()
- val intent = Intent(this, MainActivity::class.java)
- startActivity(intent)
+ (requireActivity() as MainActivity).startFragment(MainFragment())
} else {
viewModel.setCurrentPage(1)
nextPage(1)
@@ -56,7 +71,7 @@ class WelcomeActivity : BaseActivity() {
previousBtn.setOnIntervalClickListener {
VibrationUtils.performHapticFeedback(it)
- supportFragmentManager.popBackStack()
+ childFragmentManager.popBackStack()
viewModel.decreasePage()
}
@@ -66,6 +81,7 @@ class WelcomeActivity : BaseActivity() {
nextPage(currentPage.value + 1)
+ callback.isEnabled = false
viewModel.increasePage()
}
@@ -77,7 +93,7 @@ class WelcomeActivity : BaseActivity() {
centerBtn.apply {
text = getString(R.string.start)
icon = AppCompatResources.getDrawable(
- this@WelcomeActivity,
+ requireContext(),
R.drawable.ic_arrow_forward
)
show()
@@ -96,7 +112,7 @@ class WelcomeActivity : BaseActivity() {
centerBtn.apply {
text = getString(R.string.enter_app)
icon = AppCompatResources.getDrawable(
- this@WelcomeActivity,
+ requireContext(),
R.drawable.ic_focus
)
show()
@@ -114,21 +130,7 @@ class WelcomeActivity : BaseActivity() {
}
}
}
-
- onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
- override fun handleOnBackPressed() {
- if (currentPage.value == 0) {
- finish()
- } else {
- supportFragmentManager.popBackStack()
- viewModel.decreasePage()
- }
- }
- })
- }
-
- override fun getViewBinding(): ActivityWelcomeBinding {
- return ActivityWelcomeBinding.inflate(layoutInflater)
+ requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, callback)
}
private fun getCurrentPage(pageIndex: Int): Fragment {
@@ -142,10 +144,18 @@ class WelcomeActivity : BaseActivity() {
}
private fun nextPage(page: Int) {
- supportFragmentManager.commit {
+ childFragmentManager.commit {
addToBackStack(System.currentTimeMillis().toString())
- hide(supportFragmentManager.fragments.last())
+ hide(childFragmentManager.fragments.last())
add(R.id.welcome_page_container, getCurrentPage(page))
}
}
+
+ override fun getViewBinding(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ attachToRoot: Boolean
+ ): FragmentWelcomeBinding {
+ return FragmentWelcomeBinding.inflate(inflater, container, attachToRoot)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/pages/IntroPage.kt b/app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/pages/IntroPage.kt
new file mode 100644
index 0000000..515a337
--- /dev/null
+++ b/app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/pages/IntroPage.kt
@@ -0,0 +1,16 @@
+package cn.super12138.todo.views.fragments.welcome.pages
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import cn.super12138.todo.databinding.FragmentWelcomeIntroBinding
+import cn.super12138.todo.views.BaseFragment
+
+class IntroPage : BaseFragment() {
+ override fun getViewBinding(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ attachToRoot: Boolean
+ ): FragmentWelcomeIntroBinding {
+ return FragmentWelcomeIntroBinding.inflate(inflater, container, attachToRoot)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/pages/ProgressPage.kt b/app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/pages/ProgressPage.kt
new file mode 100644
index 0000000..588ba0d
--- /dev/null
+++ b/app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/pages/ProgressPage.kt
@@ -0,0 +1,16 @@
+package cn.super12138.todo.views.fragments.welcome.pages
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import cn.super12138.todo.databinding.FragmentWelcomeProgressBinding
+import cn.super12138.todo.views.BaseFragment
+
+class ProgressPage : BaseFragment() {
+ override fun getViewBinding(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ attachToRoot: Boolean
+ ): FragmentWelcomeProgressBinding {
+ return FragmentWelcomeProgressBinding.inflate(inflater, container, attachToRoot)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/ToDoBtnPage.kt b/app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/pages/ToDoBtnPage.kt
similarity index 63%
rename from app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/ToDoBtnPage.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/pages/ToDoBtnPage.kt
index fa6ad2a..d4ea77c 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/ToDoBtnPage.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/pages/ToDoBtnPage.kt
@@ -1,4 +1,4 @@
-package cn.super12138.todo.views.welcome.pages
+package cn.super12138.todo.views.fragments.welcome.pages
import android.os.Bundle
import android.view.LayoutInflater
@@ -6,18 +6,15 @@ import android.view.View
import android.view.ViewGroup
import cn.super12138.todo.databinding.FragmentWelcomeTodoBtnBinding
import cn.super12138.todo.utils.VibrationUtils
+import cn.super12138.todo.views.BaseFragment
-class ToDoBtnPage : BasePage() {
- private lateinit var binding: FragmentWelcomeTodoBtnBinding
-
- override fun onCreateView(
+class ToDoBtnPage : BaseFragment() {
+ override fun getViewBinding(
inflater: LayoutInflater,
container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View {
- binding = FragmentWelcomeTodoBtnBinding.inflate(inflater, container, false)
-
- return binding.root
+ attachToRoot: Boolean
+ ): FragmentWelcomeTodoBtnBinding {
+ return FragmentWelcomeTodoBtnBinding.inflate(inflater, container, attachToRoot)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/ToDoItemPage.kt b/app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/pages/ToDoItemPage.kt
similarity index 63%
rename from app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/ToDoItemPage.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/pages/ToDoItemPage.kt
index 5bead18..baa168a 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/ToDoItemPage.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/fragments/welcome/pages/ToDoItemPage.kt
@@ -1,4 +1,4 @@
-package cn.super12138.todo.views.welcome.pages
+package cn.super12138.todo.views.fragments.welcome.pages
import android.os.Bundle
import android.view.LayoutInflater
@@ -6,18 +6,15 @@ import android.view.View
import android.view.ViewGroup
import cn.super12138.todo.databinding.FragmentWelcomeTodoItemBinding
import cn.super12138.todo.utils.VibrationUtils
+import cn.super12138.todo.views.BaseFragment
-class ToDoItemPage : BasePage() {
- private lateinit var binding: FragmentWelcomeTodoItemBinding
-
- override fun onCreateView(
+class ToDoItemPage : BaseFragment() {
+ override fun getViewBinding(
inflater: LayoutInflater,
container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View {
- binding = FragmentWelcomeTodoItemBinding.inflate(inflater, container, false)
-
- return binding.root
+ attachToRoot: Boolean
+ ): FragmentWelcomeTodoItemBinding {
+ return FragmentWelcomeTodoItemBinding.inflate(inflater, container, attachToRoot)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/main/MainActivity.kt b/app/src/main/kotlin/cn/super12138/todo/views/main/MainActivity.kt
deleted file mode 100644
index 8c941fb..0000000
--- a/app/src/main/kotlin/cn/super12138/todo/views/main/MainActivity.kt
+++ /dev/null
@@ -1,53 +0,0 @@
-package cn.super12138.todo.views.main
-// 2023.11.18立项
-import android.content.Intent
-import android.os.Bundle
-import android.view.WindowManager
-import cn.super12138.todo.R
-import cn.super12138.todo.constant.GlobalValues
-import cn.super12138.todo.databinding.ActivityMainBinding
-import cn.super12138.todo.utils.VibrationUtils
-import cn.super12138.todo.views.BaseActivity
-import cn.super12138.todo.views.settings.SettingsActivity
-import cn.super12138.todo.views.welcome.WelcomeActivity
-
-class MainActivity : BaseActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-
- if(!GlobalValues.welcomePage) finish()
-
- binding.toolBar.setOnMenuItemClickListener { menuItem ->
- when (menuItem.itemId) {
- R.id.item_settings -> {
- val intent = Intent(this@MainActivity, SettingsActivity::class.java)
- startActivity(intent)
-
- VibrationUtils.performHapticFeedback(binding.toolBar)
-
- true
- }
-
- else -> false
- }
- }
-
- // setSupportActionBar(binding.toolbar)
- when (GlobalValues.secureMode) {
- true -> window.setFlags(
- WindowManager.LayoutParams.FLAG_SECURE,
- WindowManager.LayoutParams.FLAG_SECURE
- )
-
- false -> window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
- }
- if (!GlobalValues.welcomePage) {
- val intent = Intent(this, WelcomeActivity::class.java)
- startActivity(intent)
- }
- }
-
- override fun getViewBinding(): ActivityMainBinding {
- return ActivityMainBinding.inflate(layoutInflater)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/settings/SettingsActivity.kt b/app/src/main/kotlin/cn/super12138/todo/views/settings/SettingsActivity.kt
deleted file mode 100644
index 6935520..0000000
--- a/app/src/main/kotlin/cn/super12138/todo/views/settings/SettingsActivity.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-package cn.super12138.todo.views.settings
-
-import android.os.Bundle
-import cn.super12138.todo.R
-import cn.super12138.todo.databinding.ActivitySettingsBinding
-import cn.super12138.todo.utils.VibrationUtils
-import cn.super12138.todo.views.BaseActivity
-
-class SettingsActivity : BaseActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-
- if (savedInstanceState == null) {
- supportFragmentManager
- .beginTransaction()
- .replace(R.id.settings_frame, SettingsFragment())
- .commit()
- }
- supportActionBar?.setDisplayHomeAsUpEnabled(true)
-
- binding.toolBar.setNavigationOnClickListener {
- VibrationUtils.performHapticFeedback(it)
-
- finish()
- }
- }
-
- override fun getViewBinding(): ActivitySettingsBinding {
- return ActivitySettingsBinding.inflate(layoutInflater)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/all/AllTasksViewModel.kt b/app/src/main/kotlin/cn/super12138/todo/views/viewmodels/AllTasksViewModel.kt
similarity index 94%
rename from app/src/main/kotlin/cn/super12138/todo/views/all/AllTasksViewModel.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/viewmodels/AllTasksViewModel.kt
index 0a9ab3d..eeac4f6 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/all/AllTasksViewModel.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/viewmodels/AllTasksViewModel.kt
@@ -1,4 +1,4 @@
-package cn.super12138.todo.views.all
+package cn.super12138.todo.views.viewmodels
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/progress/ProgressViewModel.kt b/app/src/main/kotlin/cn/super12138/todo/views/viewmodels/ProgressViewModel.kt
similarity index 95%
rename from app/src/main/kotlin/cn/super12138/todo/views/progress/ProgressViewModel.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/viewmodels/ProgressViewModel.kt
index a1d0b9f..ab45d6a 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/progress/ProgressViewModel.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/viewmodels/ProgressViewModel.kt
@@ -1,4 +1,4 @@
-package cn.super12138.todo.views.progress
+package cn.super12138.todo.views.viewmodels
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoViewModel.kt b/app/src/main/kotlin/cn/super12138/todo/views/viewmodels/ToDoViewModel.kt
similarity index 97%
rename from app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoViewModel.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/viewmodels/ToDoViewModel.kt
index 0403ee3..6111382 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoViewModel.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/viewmodels/ToDoViewModel.kt
@@ -1,4 +1,4 @@
-package cn.super12138.todo.views.todo
+package cn.super12138.todo.views.viewmodels
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/welcome/WelcomeViewModel.kt b/app/src/main/kotlin/cn/super12138/todo/views/viewmodels/WelcomeViewModel.kt
similarity index 91%
rename from app/src/main/kotlin/cn/super12138/todo/views/welcome/WelcomeViewModel.kt
rename to app/src/main/kotlin/cn/super12138/todo/views/viewmodels/WelcomeViewModel.kt
index 35807c0..e8d1f7a 100644
--- a/app/src/main/kotlin/cn/super12138/todo/views/welcome/WelcomeViewModel.kt
+++ b/app/src/main/kotlin/cn/super12138/todo/views/viewmodels/WelcomeViewModel.kt
@@ -1,4 +1,4 @@
-package cn.super12138.todo.views.welcome
+package cn.super12138.todo.views.viewmodels
import androidx.lifecycle.ViewModel
import kotlinx.coroutines.flow.MutableStateFlow
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/IntroPage.kt b/app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/IntroPage.kt
deleted file mode 100644
index 9d46cdf..0000000
--- a/app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/IntroPage.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package cn.super12138.todo.views.welcome.pages
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import cn.super12138.todo.databinding.FragmentWelcomeIntroBinding
-
-class IntroPage : BasePage() {
- private lateinit var binding: FragmentWelcomeIntroBinding
-
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View {
- binding = FragmentWelcomeIntroBinding.inflate(inflater, container, false)
-
- return binding.root
- }
-}
\ No newline at end of file
diff --git a/app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/ProgressPage.kt b/app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/ProgressPage.kt
deleted file mode 100644
index a8be0a8..0000000
--- a/app/src/main/kotlin/cn/super12138/todo/views/welcome/pages/ProgressPage.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package cn.super12138.todo.views.welcome.pages
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import cn.super12138.todo.databinding.FragmentWelcomeProgressBinding
-
-class ProgressPage : BasePage() {
- private lateinit var binding: FragmentWelcomeProgressBinding
-
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View {
- binding = FragmentWelcomeProgressBinding.inflate(inflater, container, false)
-
- return binding.root
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/fragment_main.xml
similarity index 88%
rename from app/src/main/res/layout-land/activity_main.xml
rename to app/src/main/res/layout-land/fragment_main.xml
index 381c841..cf9c5d5 100644
--- a/app/src/main/res/layout-land/activity_main.xml
+++ b/app/src/main/res/layout-land/fragment_main.xml
@@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
- tools:context=".views.main.MainActivity">
+ tools:context=".views.activities.MainActivity">
+
+ tools:context=".views.activities.MainActivity">
diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml
deleted file mode 100644
index cfc91c7..0000000
--- a/app/src/main/res/layout/activity_about.xml
+++ /dev/null
@@ -1,177 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_crash.xml b/app/src/main/res/layout/activity_crash.xml
index ad8044f..43436f4 100644
--- a/app/src/main/res/layout/activity_crash.xml
+++ b/app/src/main/res/layout/activity_crash.xml
@@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
- tools:context=".views.crash.CrashActivity">
+ tools:context=".views.activities.CrashActivity">
+ tools:context=".views.activities.MainActivity">
-
-
-
-
-
-
+ android:fitsSystemWindows="true"
+ tools:layout="@layout/fragment_main" />
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml
new file mode 100644
index 0000000..18e0005
--- /dev/null
+++ b/app/src/main/res/layout/fragment_about.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_all_tasks.xml b/app/src/main/res/layout/fragment_all_tasks.xml
similarity index 94%
rename from app/src/main/res/layout/activity_all_tasks.xml
rename to app/src/main/res/layout/fragment_all_tasks.xml
index aef8d2b..9a0c642 100644
--- a/app/src/main/res/layout/activity_all_tasks.xml
+++ b/app/src/main/res/layout/fragment_all_tasks.xml
@@ -5,13 +5,12 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
- tools:context=".views.about.AboutActivity">
+ tools:context=".views.fragments.AboutFragment">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_progress.xml b/app/src/main/res/layout/fragment_progress.xml
index 4e36f06..f556c49 100644
--- a/app/src/main/res/layout/fragment_progress.xml
+++ b/app/src/main/res/layout/fragment_progress.xml
@@ -2,7 +2,7 @@
+ tools:context=".views.fragments.SettingsParentFragment">
-
-
-
-
+ android:layout_height="match_parent" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_welcome.xml b/app/src/main/res/layout/fragment_welcome.xml
similarity index 97%
rename from app/src/main/res/layout/activity_welcome.xml
rename to app/src/main/res/layout/fragment_welcome.xml
index 0dcb47a..6a51255 100644
--- a/app/src/main/res/layout/activity_welcome.xml
+++ b/app/src/main/res/layout/fragment_welcome.xml
@@ -7,7 +7,7 @@