This was so much work wow. I think it works pretty well and is the best compromise between all the alternative we considered. Yes the pull-to-refreh on the notifications works slightly different now when the new bar is visible, but I don't think there is a way around that. Things I plan to do later, i.e. not as part of this PR or release: - Cache the notification policy summary for better offline behavior and less view shifting when it loads - try to reduce some of the code duplications that are now in there - if there is user demand, add a "legacy mode" setting where this feature is disabled even if the server would support it closes #4331 closes #4550 as won't do closes #4712 as won't do <img src="https://github.com/user-attachments/assets/de322d3c-3775-41e7-be57-28ab7fbaecdf" width="240"/> <img src="https://github.com/user-attachments/assets/1ce958a4-4f15-484c-a337-5ad93f36046c" width="240"/> <img src="https://github.com/user-attachments/assets/98b0482b-1c05-4c99-a371-f7f4d8a69abd" width="240"/>
44 lines
1.8 KiB
Kotlin
44 lines
1.8 KiB
Kotlin
/* Copyright 2022 Tusky Contributors
|
|
*
|
|
* This file is a part of Tusky.
|
|
*
|
|
* 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 the Free Software Foundation; either version 3 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
|
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
|
* Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along with Tusky; if not,
|
|
* see <http://www.gnu.org/licenses>. */
|
|
|
|
package com.keylesspalace.tusky.util
|
|
|
|
import android.graphics.Color
|
|
import android.graphics.drawable.Drawable
|
|
import androidx.appcompat.content.res.AppCompatResources
|
|
import androidx.preference.PreferenceFragmentCompat
|
|
import com.google.android.material.color.MaterialColors
|
|
import com.keylesspalace.tusky.R
|
|
import com.mikepenz.iconics.IconicsDrawable
|
|
import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial
|
|
import com.mikepenz.iconics.utils.colorInt
|
|
import com.mikepenz.iconics.utils.sizePx
|
|
|
|
fun PreferenceFragmentCompat.icon(icon: GoogleMaterial.Icon): IconicsDrawable {
|
|
val context = requireContext()
|
|
return IconicsDrawable(context, icon).apply {
|
|
sizePx = context.resources.getDimensionPixelSize(
|
|
R.dimen.preference_icon_size
|
|
)
|
|
colorInt = MaterialColors.getColor(context, R.attr.iconColor, Color.BLACK)
|
|
}
|
|
}
|
|
|
|
fun PreferenceFragmentCompat.icon(icon: Int): Drawable? {
|
|
val context = requireContext()
|
|
return AppCompatResources.getDrawable(context, icon)?.apply {
|
|
setTint(MaterialColors.getColor(context, R.attr.iconColor, Color.BLACK))
|
|
}
|
|
}
|