Add night mode context extensions

pull/2536/head
Alex Baker 9 months ago
parent 84ab8d0517
commit 928ec9f647

@ -7,7 +7,6 @@ package com.todoroo.astrid.activity
import android.content.Context
import android.content.Intent
import android.content.res.Configuration
import android.os.Bundle
import android.view.View
import android.view.inputmethod.InputMethodManager
@ -43,6 +42,7 @@ import org.tasks.data.TagDataDao
import org.tasks.databinding.TaskListActivityBinding
import org.tasks.dialogs.SortSettingsActivity
import org.tasks.dialogs.WhatsNewDialog
import org.tasks.extensions.Context.nightMode
import org.tasks.filters.PlaceFilter
import org.tasks.intents.TaskIntents.getTaskListIntent
import org.tasks.location.LocationPickerActivity
@ -355,9 +355,6 @@ class MainActivity : AppCompatActivity(), TaskListFragmentCallbackHandler, Timer
}
}
private val nightMode: Int
get() = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
override suspend fun onTaskListItemClicked(task: Task?) {
AndroidUtilities.assertMainThread()
if (task == null) {

@ -6,6 +6,7 @@ import android.content.Context
import android.content.Context.MODE_PRIVATE
import android.content.Intent
import android.content.Intent.ACTION_VIEW
import android.content.res.Configuration
import android.net.Uri
import android.widget.Toast
import androidx.annotation.AnyRes
@ -25,6 +26,12 @@ object Context {
}
}
val Context.nightMode: Int
get() = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
val Context.isNightMode: Boolean
get() = nightMode == Configuration.UI_MODE_NIGHT_YES
fun Context.openUri(resId: Int, vararg formatArgs: Any) = openUri(getString(resId, formatArgs))
fun Context.openUri(url: String?) =

@ -4,7 +4,6 @@ import android.app.Activity.RESULT_OK
import android.content.ComponentName
import android.content.Intent
import android.content.pm.PackageManager
import android.content.res.Configuration
import android.os.Bundle
import android.os.Handler
import androidx.annotation.StringRes
@ -26,6 +25,7 @@ import org.tasks.dialogs.FilterPicker.Companion.newFilterPicker
import org.tasks.dialogs.FilterPicker.Companion.setFilterPickerResultListener
import org.tasks.dialogs.ThemePickerDialog
import org.tasks.dialogs.ThemePickerDialog.Companion.newThemePickerDialog
import org.tasks.extensions.Context.isNightMode
import org.tasks.injection.InjectingPreferenceFragment
import org.tasks.locale.LocalePickerDialog
import org.tasks.preferences.DefaultFilterProvider
@ -37,7 +37,7 @@ import org.tasks.themes.ThemeBase.EXTRA_THEME_OVERRIDE
import org.tasks.themes.ThemeColor
import org.tasks.themes.ThemeColor.getLauncherColor
import org.tasks.ui.NavigationDrawerFragment.Companion.REQUEST_PURCHASE
import java.util.*
import java.util.Locale
import javax.inject.Inject
@AndroidEntryPoint
@ -74,7 +74,7 @@ class LookAndFeel : InjectingPreferenceFragment() {
}
findPreference(R.string.p_desaturate_colors).setOnPreferenceChangeListener { _, _ ->
if (context?.resources?.configuration?.uiMode?.and(Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES) {
if (context?.isNightMode == true) {
activity?.recreate()
}
true

@ -1,14 +1,17 @@
package org.tasks.themes;
import static org.tasks.extensions.Context.INSTANCE;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Parcel;
import android.os.Parcelable;
import android.view.ContextThemeWrapper;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatDelegate;
import org.tasks.R;
import org.tasks.billing.Inventory;
import org.tasks.preferences.Preferences;
@ -77,11 +80,7 @@ public class ThemeBase implements Parcelable {
}
public boolean isDarkTheme(Activity activity) {
return index == 4 || index == 5
? Configuration.UI_MODE_NIGHT_YES
== (activity.getResources().getConfiguration().uiMode
& Configuration.UI_MODE_NIGHT_MASK)
: index > 0;
return index == 4 || index == 5 ? INSTANCE.isNightMode(activity) : index > 0;
}
public ContextThemeWrapper wrap(Context context) {

@ -2,7 +2,6 @@ package org.tasks.widget
import android.content.Context
import android.content.Intent
import android.content.res.Configuration
import android.graphics.Bitmap
import android.graphics.Paint
import android.view.View
@ -22,6 +21,7 @@ import org.tasks.data.TaskContainer
import org.tasks.data.TaskDao
import org.tasks.data.TaskListQuery.getQuery
import org.tasks.date.DateTimeUtils
import org.tasks.extensions.Context.isNightMode
import org.tasks.markdown.Markdown
import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.Preferences
@ -90,7 +90,7 @@ internal class ScrollableViewsFactory(
private val checkIfDark: Boolean
get() = when (widgetPreferences.themeIndex) {
0 -> false
3 -> context.isDark
3 -> context.isNightMode
else -> true
}
@ -391,10 +391,4 @@ internal class ScrollableViewsFactory(
val metrics = context.resources.displayMetrics
indentPadding = (20 * metrics.density).toInt()
}
companion object {
val Context.isDark: Boolean
get() = (Configuration.UI_MODE_NIGHT_YES ==
(resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK))
}
}

@ -18,11 +18,11 @@ import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.runBlocking
import org.tasks.R
import org.tasks.dialogs.FilterPicker
import org.tasks.extensions.Context.isNightMode
import org.tasks.intents.TaskIntents
import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.Preferences
import org.tasks.themes.ThemeColor
import org.tasks.widget.ScrollableViewsFactory.Companion.isDark
import timber.log.Timber
import javax.inject.Inject
@ -146,7 +146,7 @@ class TasksWidget : AppWidgetProvider() {
val background: Int = when (themeIndex) {
1 -> android.R.color.black
2 -> R.color.md_background_dark
3 -> if (context.isDark) R.color.md_background_dark else android.R.color.white
3 -> if (context.isNightMode) R.color.md_background_dark else android.R.color.white
else -> android.R.color.white
}
return context.getColor(background)

Loading…
Cancel
Save