From 15ae018589cf7d99fe26051e9fb52999356f41e6 Mon Sep 17 00:00:00 2001 From: Jonas Lochmann Date: Mon, 28 Oct 2024 01:00:00 +0100 Subject: [PATCH] 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)