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 @@