From 15ae018589cf7d99fe26051e9fb52999356f41e6 Mon Sep 17 00:00:00 2001 From: Jonas Lochmann Date: Mon, 28 Oct 2024 01:00:00 +0100 Subject: [PATCH 01/23] Add insets to the add app dialog --- .../apps/add/AddCategoryAppsFragment.kt | 33 ++++++++++++++++-- .../AddAppActivitiesDialogFragment.kt | 34 +++++++++++++++++-- 2 files changed, 61 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/timelimit/android/ui/manage/category/apps/add/AddCategoryAppsFragment.kt b/app/src/main/java/io/timelimit/android/ui/manage/category/apps/add/AddCategoryAppsFragment.kt index ed748f7..2980329 100644 --- a/app/src/main/java/io/timelimit/android/ui/manage/category/apps/add/AddCategoryAppsFragment.kt +++ b/app/src/main/java/io/timelimit/android/ui/manage/category/apps/add/AddCategoryAppsFragment.kt @@ -1,5 +1,5 @@ /* - * TimeLimit Copyright 2019 - 2022 Jonas Lochmann + * TimeLimit Copyright 2019 - 2024 Jonas Lochmann * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,14 +16,21 @@ package io.timelimit.android.ui.manage.category.apps.add import android.app.Dialog +import android.os.Build.VERSION +import android.os.Build.VERSION_CODES import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.ViewGroup.MarginLayoutParams import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.coordinatorlayout.widget.CoordinatorLayout +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.updateLayoutParams import androidx.fragment.app.DialogFragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.viewModels @@ -220,9 +227,29 @@ class AddCategoryAppsFragment : DialogFragment() { } } + ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, windowInsets -> + val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + + v.updateLayoutParams { + topMargin = insets.top + bottomMargin = insets.bottom + leftMargin = insets.left + rightMargin = insets.right + } + + WindowInsetsCompat.CONSUMED + } + return AlertDialog.Builder(requireContext(), R.style.AppTheme) - .setView(binding.root) - .create() + .setView(binding.root) + .create() + .also { dialog -> + if (VERSION.SDK_INT >= VERSION_CODES.VANILLA_ICE_CREAM) dialog.setOnShowListener { + WindowInsetsControllerCompat(dialog.window!!, binding.root).run { + isAppearanceLightStatusBars = true + } + } + } } fun show(manager: FragmentManager) { diff --git a/app/src/main/java/io/timelimit/android/ui/manage/category/apps/addactivity/AddAppActivitiesDialogFragment.kt b/app/src/main/java/io/timelimit/android/ui/manage/category/apps/addactivity/AddAppActivitiesDialogFragment.kt index ee84029..4dceae8 100644 --- a/app/src/main/java/io/timelimit/android/ui/manage/category/apps/addactivity/AddAppActivitiesDialogFragment.kt +++ b/app/src/main/java/io/timelimit/android/ui/manage/category/apps/addactivity/AddAppActivitiesDialogFragment.kt @@ -1,5 +1,5 @@ /* - * TimeLimit Copyright 2019 - 2022 Jonas Lochmann + * TimeLimit Copyright 2019 - 2024 Jonas Lochmann * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,9 +16,16 @@ package io.timelimit.android.ui.manage.category.apps.addactivity import android.app.Dialog +import android.os.Build.VERSION +import android.os.Build.VERSION_CODES import android.os.Bundle import android.view.LayoutInflater +import android.view.ViewGroup.MarginLayoutParams import androidx.appcompat.app.AlertDialog +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.updateLayoutParams import androidx.fragment.app.DialogFragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.viewModels @@ -114,9 +121,30 @@ class AddAppActivitiesDialogFragment: DialogFragment() { dismissAllowingStateLoss() } + + ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, windowInsets -> + val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + + v.updateLayoutParams { + topMargin = insets.top + bottomMargin = insets.bottom + leftMargin = insets.left + rightMargin = insets.right + } + + WindowInsetsCompat.CONSUMED + } + return AlertDialog.Builder(requireContext(), R.style.AppTheme) - .setView(binding.root) - .create() + .setView(binding.root) + .create() + .also { dialog -> + if (VERSION.SDK_INT >= VERSION_CODES.VANILLA_ICE_CREAM) dialog.setOnShowListener { + WindowInsetsControllerCompat(dialog.window!!, binding.root).run { + isAppearanceLightStatusBars = true + } + } + } } fun show(fragmentManager: FragmentManager) = showSafe(fragmentManager, DIALOG_TAG) From 11a47c5f30c3678a3c6a1e478b14473865a119f3 Mon Sep 17 00:00:00 2001 From: Jonas Lochmann Date: Mon, 28 Oct 2024 01:00:00 +0100 Subject: [PATCH 02/23] Disable ActionBar in the theme --- app/src/main/java/io/timelimit/android/ui/MainActivity.kt | 2 -- .../main/java/io/timelimit/android/ui/lock/LockActivity.kt | 4 ---- .../io/timelimit/android/ui/manipulation/AnnoyActivity.kt | 2 -- .../java/io/timelimit/android/ui/update/UpdateActivity.kt | 2 -- app/src/main/res/values/styles.xml | 4 ++-- 5 files changed, 2 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/io/timelimit/android/ui/MainActivity.kt b/app/src/main/java/io/timelimit/android/ui/MainActivity.kt index 3bd2739..3872c24 100644 --- a/app/src/main/java/io/timelimit/android/ui/MainActivity.kt +++ b/app/src/main/java/io/timelimit/android/ui/MainActivity.kt @@ -144,8 +144,6 @@ class MainActivity : AppCompatActivity(), ActivityViewModelHolder, U2fManager.De ) ) - supportActionBar!!.hide() - U2fManager.setupActivity(this) NotificationChannels.createNotificationChannels(getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager, this) diff --git a/app/src/main/java/io/timelimit/android/ui/lock/LockActivity.kt b/app/src/main/java/io/timelimit/android/ui/lock/LockActivity.kt index 62e6c5d..634c77d 100644 --- a/app/src/main/java/io/timelimit/android/ui/lock/LockActivity.kt +++ b/app/src/main/java/io/timelimit/android/ui/lock/LockActivity.kt @@ -120,8 +120,6 @@ class LockActivity : AppCompatActivity(), ActivityViewModelHolder, U2fManager.De ) ) - supportActionBar!!.hide() - U2fManager.setupActivity(this) val subtitleLive = syncModel.statusText.asFlow() @@ -214,8 +212,6 @@ class LockActivity : AppCompatActivity(), ActivityViewModelHolder, U2fManager.De } } - syncModel.statusText.observe(this) { supportActionBar?.subtitle = it } - currentInstances.add(this) model.init(blockedPackageName, blockedActivityName) diff --git a/app/src/main/java/io/timelimit/android/ui/manipulation/AnnoyActivity.kt b/app/src/main/java/io/timelimit/android/ui/manipulation/AnnoyActivity.kt index 6bf0fa7..721485a 100644 --- a/app/src/main/java/io/timelimit/android/ui/manipulation/AnnoyActivity.kt +++ b/app/src/main/java/io/timelimit/android/ui/manipulation/AnnoyActivity.kt @@ -89,8 +89,6 @@ class AnnoyActivity : AppCompatActivity(), ActivityViewModelHolder, U2fManager.D ) ) - supportActionBar!!.hide() - setContent { Theme { ScreenScaffold( diff --git a/app/src/main/java/io/timelimit/android/ui/update/UpdateActivity.kt b/app/src/main/java/io/timelimit/android/ui/update/UpdateActivity.kt index e213776..8698abd 100644 --- a/app/src/main/java/io/timelimit/android/ui/update/UpdateActivity.kt +++ b/app/src/main/java/io/timelimit/android/ui/update/UpdateActivity.kt @@ -47,8 +47,6 @@ class UpdateActivity: AppCompatActivity() { ) ) - supportActionBar!!.hide() - setContent { Theme { ScreenScaffold( diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 3e45a3a..26ab3fa 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,5 +1,5 @@ -