From 8f88809e5f673b5d858a46f964dc8eefd8d12b4d Mon Sep 17 00:00:00 2001 From: Super12138 <70494801+Super12138@users.noreply.github.com> Date: Thu, 11 Jan 2024 21:03:44 +0800 Subject: [PATCH] Add new settings and add animation of list --- .../1.json | 52 +++++++++++++++++++ .../cn/super12138/todo/logic/Repository.kt | 7 +++ .../todo/logic/database/SPHelper.kt | 5 ++ .../cn/super12138/todo/logic/model/ToDo.kt | 4 +- .../todo/views/about/AboutActivity.kt | 9 ++-- .../todo/views/main/MainActivity.kt | 11 ++++ .../todo/views/settings/SettingsActivity.kt | 28 ++++++++++ .../super12138/todo/views/todo/ToDoAdapter.kt | 5 ++ app/src/main/res/layout/fragment_progress.xml | 8 +-- app/src/main/res/values-zh-rCN/strings.xml | 4 ++ app/src/main/res/values/strings.xml | 4 ++ app/src/main/res/xml/preferences.xml | 13 +++-- 12 files changed, 138 insertions(+), 12 deletions(-) create mode 100644 app/schemas/cn.super12138.todo.logic.dao.ToDoRoomDB/1.json diff --git a/app/schemas/cn.super12138.todo.logic.dao.ToDoRoomDB/1.json b/app/schemas/cn.super12138.todo.logic.dao.ToDoRoomDB/1.json new file mode 100644 index 0000000..0bd7a91 --- /dev/null +++ b/app/schemas/cn.super12138.todo.logic.dao.ToDoRoomDB/1.json @@ -0,0 +1,52 @@ +{ + "formatVersion": 1, + "database": { + "version": 1, + "identityHash": "bf23f9a3f857e7cfe28dce9eb1657534", + "entities": [ + { + "tableName": "todo", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`uuid` TEXT NOT NULL, `state` INTEGER NOT NULL, `subject` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`uuid`))", + "fields": [ + { + "fieldPath": "uuid", + "columnName": "uuid", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "state", + "columnName": "state", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "subject", + "columnName": "subject", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "uuid" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'bf23f9a3f857e7cfe28dce9eb1657534')" + ] + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/logic/Repository.kt b/app/src/main/kotlin/cn/super12138/todo/logic/Repository.kt index 99b568b..65d7e0e 100644 --- a/app/src/main/kotlin/cn/super12138/todo/logic/Repository.kt +++ b/app/src/main/kotlin/cn/super12138/todo/logic/Repository.kt @@ -14,6 +14,13 @@ object Repository { fun getPreferenceString(context: Context, key: String, defaultValue: String) = SPHelper.getPreferenceString(context, key, defaultValue) + + /** + * 获取应用设置的布尔值 + */ + fun getPreferenceBoolean(context: Context, key: String, defaultValue: Boolean) = + SPHelper.getPreferenceBoolean(context, key, defaultValue) + // Room private val db get() = ToDoApplication.db val todoDao = db.toDoRoomDao() diff --git a/app/src/main/kotlin/cn/super12138/todo/logic/database/SPHelper.kt b/app/src/main/kotlin/cn/super12138/todo/logic/database/SPHelper.kt index 8a3b4bd..f93de2b 100644 --- a/app/src/main/kotlin/cn/super12138/todo/logic/database/SPHelper.kt +++ b/app/src/main/kotlin/cn/super12138/todo/logic/database/SPHelper.kt @@ -9,4 +9,9 @@ object SPHelper { PreferenceManager.getDefaultSharedPreferences(context /* Activity context */) return sharedPreferences.getString(name, defaultValue) } + fun getPreferenceBoolean(context: Context, name: String, defaultValue: Boolean): Boolean? { + val sharedPreferences = + PreferenceManager.getDefaultSharedPreferences(context /* Activity context */) + return sharedPreferences.getBoolean(name, defaultValue) + } } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/logic/model/ToDo.kt b/app/src/main/kotlin/cn/super12138/todo/logic/model/ToDo.kt index 10cc22d..39387db 100644 --- a/app/src/main/kotlin/cn/super12138/todo/logic/model/ToDo.kt +++ b/app/src/main/kotlin/cn/super12138/todo/logic/model/ToDo.kt @@ -1,3 +1,5 @@ package cn.super12138.todo.logic.model -data class ToDo(val uuid: String, val content: String, val subject: String) \ No newline at end of file +data class ToDo(val uuid: String, val content: String, val subject: String){ + var isAnimated = false +} \ 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/about/AboutActivity.kt index a95f5d8..f09d7b8 100644 --- a/app/src/main/kotlin/cn/super12138/todo/views/about/AboutActivity.kt +++ b/app/src/main/kotlin/cn/super12138/todo/views/about/AboutActivity.kt @@ -56,10 +56,11 @@ class AboutActivity : BaseActivity() { binding.appVersion.setOnClickListener { clickCount++ - - if (clickCount == 5) { - clickCount = 0 - "🧧".showToast() + when (clickCount) { + 5 -> { + clickCount = 0 + "🧧".showToast() + } } } } 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 index 1bd5ddd..0f4b339 100644 --- a/app/src/main/kotlin/cn/super12138/todo/views/main/MainActivity.kt +++ b/app/src/main/kotlin/cn/super12138/todo/views/main/MainActivity.kt @@ -2,6 +2,7 @@ package cn.super12138.todo.views.main // 2023.11.18立项 import android.content.Intent import android.os.Bundle +import android.view.WindowManager import androidx.appcompat.app.AppCompatDelegate import cn.super12138.todo.R import cn.super12138.todo.ToDoApplication @@ -48,6 +49,7 @@ class MainActivity : BaseActivity() { }*/ val isDarkMode = Repository.getPreferenceString(this, "dark_mode", "0") + val isSecureMode = Repository.getPreferenceBoolean(this, "secure_mode", false) when (isDarkMode) { "0" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) @@ -55,5 +57,14 @@ class MainActivity : BaseActivity() { "2" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) } + when (isSecureMode) { + true -> window.setFlags( + WindowManager.LayoutParams.FLAG_SECURE, + WindowManager.LayoutParams.FLAG_SECURE + ) + + false -> window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) + else -> window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) + } } } \ 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 index 0d29f67..ced4ac6 100644 --- a/app/src/main/kotlin/cn/super12138/todo/views/settings/SettingsActivity.kt +++ b/app/src/main/kotlin/cn/super12138/todo/views/settings/SettingsActivity.kt @@ -1,12 +1,17 @@ package cn.super12138.todo.views.settings import android.os.Bundle +import android.os.Process +import android.view.WindowManager import androidx.appcompat.app.AppCompatDelegate import androidx.preference.ListPreference import androidx.preference.PreferenceFragmentCompat +import androidx.preference.SwitchPreference import cn.super12138.todo.R import cn.super12138.todo.databinding.ActivitySettingsBinding import cn.super12138.todo.views.BaseActivity +import com.google.android.material.snackbar.Snackbar +import kotlin.system.exitProcess class SettingsActivity : BaseActivity() { private lateinit var binding: ActivitySettingsBinding @@ -48,6 +53,29 @@ class SettingsActivity : BaseActivity() { true } } + + findPreference("secure_mode")?.apply { + setOnPreferenceChangeListener { preference, newValue -> + when (newValue) { + true -> activity?.window?.setFlags( + WindowManager.LayoutParams.FLAG_SECURE, + WindowManager.LayoutParams.FLAG_SECURE + ) + + false -> activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) + } + view?.let { + Snackbar.make(it, R.string.need_restart_app, Snackbar.LENGTH_LONG) + .setAction(R.string.restart_app_now) { + Process.killProcess(Process.myPid()) + exitProcess(10) + } + .show() + } + + true + } + } } } } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoAdapter.kt b/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoAdapter.kt index 4ea1b2f..c94ada8 100644 --- a/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoAdapter.kt +++ b/app/src/main/kotlin/cn/super12138/todo/views/todo/ToDoAdapter.kt @@ -116,6 +116,11 @@ class ToDoAdapter(val todoList: MutableList, val viewModelStoreOwner: View val todo = todoList[position] holder.todoContext.text = todo.content holder.todoSubject.text = todo.subject + if (!todo.isAnimated) { + holder.itemView.alpha = 0f + holder.itemView.animate().alpha(1f).duration = 200 + todo.isAnimated = true + } } override fun getItemCount() = todoList.size diff --git a/app/src/main/res/layout/fragment_progress.xml b/app/src/main/res/layout/fragment_progress.xml index e0fa3ec..068f4f9 100644 --- a/app/src/main/res/layout/fragment_progress.xml +++ b/app/src/main/res/layout/fragment_progress.xml @@ -11,14 +11,16 @@ android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:max="100" - app:indicatorSize="160dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" + app:indicatorSize="160dp" app:trackColor="?attr/colorSurfaceContainerHighest" - app:trackCornerRadius="5dp" - app:trackThickness="10dp" /> + app:trackCornerRadius="25dp" + app:trackThickness="10dp" + app:showDelay="150" + app:indicatorTrackGapSize="10dp"/> 在 GitHub 上查看源代码 配置 其它 + 阻止截屏 + 开启后任何人将不能对待办列表进行截屏 + 重启应用后生效 + 立即重启 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2a3297b..11735c8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -41,4 +41,8 @@ Enable or disable the dark mode for this app Config Others + Prevent screenshot + When it opens anybody cannot take screenshot for to do list + Effective after restarting the app + Restart now \ No newline at end of file diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index be1926b..656079b 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -10,16 +10,21 @@ app:summary="@string/dark_mode_summary" /> - + app:summary="自定义创建待办时文本框的预测项" />--> + +