From bf84bf9e82a4498d339221ca1345a16606feb7c1 Mon Sep 17 00:00:00 2001 From: Ilya Bizyaev Date: Wed, 17 Apr 2024 23:19:18 +0200 Subject: [PATCH] [Feature] Add an option to allow adding tasks without unlock I often find myself picking up the phone just to write down a task, so I've added a notification drawer quick setting to speed things up. However, when I use this button from the lock screen, I have to unlock my device first, which is annoying. I would like to be able to add (not view) tasks without the need to unlock my phone. This PR adds such an optional feature for devices running Android 8.1+. Note that I am not an Android developer, so the implementation is probably not perfect. However, from my testing on an emulator, this code seems to do just what I want. --- .../com/todoroo/andlib/utility/AndroidUtilities.java | 4 ++++ .../com/todoroo/astrid/activity/TaskEditFragment.kt | 11 +++++++++++ .../main/java/org/tasks/preferences/Preferences.kt | 3 +++ .../preferences/fragments/TaskEditPreferences.kt | 3 +++ app/src/main/res/values/keys.xml | 1 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/preferences_task_edit.xml | 6 ++++++ 7 files changed, 29 insertions(+) diff --git a/app/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java b/app/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java index 7090ce63b..9236ae14d 100644 --- a/app/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java +++ b/app/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java @@ -160,6 +160,10 @@ public class AndroidUtilities { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O; } + public static boolean atLeastOreoMR1() { + return Build.VERSION.SDK_INT >= VERSION_CODES.O_MR1; + } + public static boolean atLeastP() { return VERSION.SDK_INT >= Build.VERSION_CODES.P; } diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt b/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt index 6402d4747..4be2801d0 100755 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt @@ -43,6 +43,7 @@ import androidx.lifecycle.lifecycleScope import com.google.android.material.appbar.AppBarLayout import com.google.android.material.appbar.AppBarLayout.Behavior.DragCallback import com.google.android.material.composethemeadapter.MdcTheme +import com.todoroo.andlib.utility.AndroidUtilities.atLeastOreoMR1 import com.todoroo.andlib.utility.DateUtilities import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.data.Task @@ -150,6 +151,9 @@ class TaskEditFragment : Fragment(), Toolbar.OnMenuItemClickListener { discardButtonClick() } } + if (atLeastOreoMR1()) { + activity?.setShowWhenLocked(preferences.showEditScreenWithoutUnlock) + } binding = FragmentTaskEditBinding.inflate(inflater) val view: View = binding.root @@ -305,6 +309,13 @@ class TaskEditFragment : Fragment(), Toolbar.OnMenuItemClickListener { return view } + override fun onDestroyView() { + super.onDestroyView() + if (atLeastOreoMR1()) { + activity?.setShowWhenLocked(false) + } + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { taskEditEventBus .onEach(this::process) diff --git a/app/src/main/java/org/tasks/preferences/Preferences.kt b/app/src/main/java/org/tasks/preferences/Preferences.kt index 9d2deb6a9..416855712 100644 --- a/app/src/main/java/org/tasks/preferences/Preferences.kt +++ b/app/src/main/java/org/tasks/preferences/Preferences.kt @@ -176,6 +176,9 @@ class Preferences @JvmOverloads constructor( return if (firstDayOfWeek < 1 || firstDayOfWeek > 7) 0 else firstDayOfWeek } + val showEditScreenWithoutUnlock: Boolean + get() = getBoolean(R.string.p_show_edit_screen_without_unlock, false) + @SuppressLint("ApplySharedPref") fun clear() { prefs.edit().clear().commit() diff --git a/app/src/main/java/org/tasks/preferences/fragments/TaskEditPreferences.kt b/app/src/main/java/org/tasks/preferences/fragments/TaskEditPreferences.kt index a7faebac6..2107d1fa9 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/TaskEditPreferences.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/TaskEditPreferences.kt @@ -2,6 +2,7 @@ package org.tasks.preferences.fragments import android.os.Bundle import androidx.appcompat.content.res.AppCompatResources +import com.todoroo.andlib.utility.AndroidUtilities.atLeastOreoMR1 import dagger.hilt.android.AndroidEntryPoint import org.tasks.R import org.tasks.injection.InjectingPreferenceFragment @@ -21,5 +22,7 @@ class TaskEditPreferences : InjectingPreferenceFragment() { tint = context.getColor(R.color.icon_tint_with_alpha) iconVisible = true } + + findPreference(R.string.p_show_edit_screen_without_unlock).isVisible = atLeastOreoMR1() } } \ No newline at end of file diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml index 1deb27cec..4dbb2a317 100644 --- a/app/src/main/res/values/keys.xml +++ b/app/src/main/res/values/keys.xml @@ -98,6 +98,7 @@ p_show_task_edit_comments + show_edit_screen_without_unlock diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fc85a21dc..07ea1bae9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -369,6 +369,7 @@ File %1$s contained %2$s.\n\n Must begin with http(s):// (No title) Back button saves task + Show edit screen without unlock Default list Default tags Default recurrence diff --git a/app/src/main/res/xml/preferences_task_edit.xml b/app/src/main/res/xml/preferences_task_edit.xml index 735490058..feb097d25 100644 --- a/app/src/main/res/xml/preferences_task_edit.xml +++ b/app/src/main/res/xml/preferences_task_edit.xml @@ -35,4 +35,10 @@ android:title="@string/EPr_show_task_edit_comments" app:singleLineTitle="false" /> + +