diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index f9b8b2039..2429feef4 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -182,7 +182,7 @@ dependencies {
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:${Versions.lifecycle}")
implementation("androidx.room:room-ktx:${Versions.room}")
kapt("androidx.room:room-compiler:${Versions.room}")
- implementation("androidx.appcompat:appcompat:1.4.0")
+ implementation("androidx.appcompat:appcompat:1.6.0-alpha05")
implementation("androidx.paging:paging-runtime:2.1.2")
implementation("io.noties.markwon:core:${Versions.markwon}")
implementation("io.noties.markwon:editor:${Versions.markwon}")
diff --git a/app/src/androidTest/java/org/tasks/repeats/RepeatRuleToStringTest.kt b/app/src/androidTest/java/org/tasks/repeats/RepeatRuleToStringTest.kt
index 391df7281..c7db063e6 100644
--- a/app/src/androidTest/java/org/tasks/repeats/RepeatRuleToStringTest.kt
+++ b/app/src/androidTest/java/org/tasks/repeats/RepeatRuleToStringTest.kt
@@ -9,7 +9,6 @@ import org.tasks.TestUtilities.withTZ
import org.tasks.analytics.Firebase
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.ProductionModule
-import org.tasks.locale.Locale
import org.tasks.time.DateTime
import java.text.ParseException
import java.util.*
@@ -123,7 +122,7 @@ class RepeatRuleToStringTest : InjectingTestCase() {
private fun toString(language: String?, rrule: String): String? {
return try {
val locale = Locale(java.util.Locale.getDefault(), language)
- RepeatRuleToString(locale.createConfigurationContext(context), locale, firebase)
+ RepeatRuleToString(context, locale, firebase)
.toString(rrule)
} catch (e: ParseException) {
throw RuntimeException(e)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0651489c9..56e5bb397 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -151,7 +151,8 @@
android:theme="@style/Tasks"
tools:ignore="GoogleAppIndexingWarning,UnusedAttribute"
android:preserveLegacyExternalStorage="true"
- android:hasFragileUserData="true">
+ android:hasFragileUserData="true"
+ android:localeConfig="@xml/locales_config">
+
+
+
+
{
safeStartActivityForResult(
Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
- locale.languageOverride?.let {
- putExtra(RecognizerIntent.EXTRA_LANGUAGE, it)
- }
putExtra(
RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM
@@ -980,7 +948,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
R.string.repeat_snackbar,
task.title,
DateUtilities.getRelativeDateTime(
- context, task.dueDate, locale.locale, FormatStyle.LONG, true
+ context, task.dueDate, locale, FormatStyle.LONG, true
)
)
makeSnackbar(text)?.setAction(R.string.DLG_undo, undoCompletion)?.show()
diff --git a/app/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.kt b/app/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.kt
index caa086e03..080694f20 100644
--- a/app/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.kt
+++ b/app/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.kt
@@ -18,7 +18,6 @@ import com.todoroo.astrid.api.FilterListItem
import com.todoroo.astrid.api.FilterListItem.Type.*
import org.tasks.billing.Inventory
import org.tasks.filters.NavigationDrawerSubheader
-import org.tasks.locale.Locale
import org.tasks.themes.ColorProvider
import java.util.*
import javax.inject.Inject
diff --git a/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.kt b/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.kt
index b5239a7c2..d228447a2 100644
--- a/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.kt
+++ b/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.kt
@@ -7,19 +7,16 @@ import android.widget.ImageView
import android.widget.TextView
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
-import com.todoroo.astrid.api.CaldavFilter
-import com.todoroo.astrid.api.CustomFilter
-import com.todoroo.astrid.api.FilterListItem
-import com.todoroo.astrid.api.GtasksFilter
-import com.todoroo.astrid.api.TagFilter
+import com.todoroo.astrid.api.*
import org.tasks.R
import org.tasks.billing.Inventory
import org.tasks.databinding.FilterAdapterRowBinding
+import org.tasks.extensions.formatNumber
import org.tasks.filters.PlaceFilter
-import org.tasks.locale.Locale
import org.tasks.themes.ColorProvider
import org.tasks.themes.CustomIcons.getIconResId
import org.tasks.themes.DrawableUtil
+import java.util.*
class FilterViewHolder internal constructor(
itemView: View,
diff --git a/app/src/main/java/com/todoroo/astrid/adapter/NavigationDrawerAdapter.kt b/app/src/main/java/com/todoroo/astrid/adapter/NavigationDrawerAdapter.kt
index ef4c1ff19..762554d7b 100644
--- a/app/src/main/java/com/todoroo/astrid/adapter/NavigationDrawerAdapter.kt
+++ b/app/src/main/java/com/todoroo/astrid/adapter/NavigationDrawerAdapter.kt
@@ -20,7 +20,6 @@ import kotlinx.coroutines.channels.Channel
import org.tasks.activities.DragAndDropDiffer
import org.tasks.billing.Inventory
import org.tasks.filters.NavigationDrawerSubheader
-import org.tasks.locale.Locale
import org.tasks.themes.ColorProvider
import java.util.*
import java.util.concurrent.Executors
diff --git a/app/src/main/java/com/todoroo/astrid/core/BuiltInFilterExposer.kt b/app/src/main/java/com/todoroo/astrid/core/BuiltInFilterExposer.kt
index ab170fa5d..a97393f8b 100644
--- a/app/src/main/java/com/todoroo/astrid/core/BuiltInFilterExposer.kt
+++ b/app/src/main/java/com/todoroo/astrid/core/BuiltInFilterExposer.kt
@@ -16,7 +16,7 @@ import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.api.PermaSql
import com.todoroo.astrid.data.Task
import com.todoroo.astrid.timers.TimerPlugin
-import dagger.hilt.android.qualifiers.ApplicationContext
+import dagger.hilt.android.qualifiers.ActivityContext
import org.tasks.R
import org.tasks.data.*
import org.tasks.data.TaskDao.TaskCriteria.activeAndVisible
@@ -26,7 +26,6 @@ import org.tasks.filters.SnoozedFilter
import org.tasks.filters.SortableFilter
import org.tasks.preferences.Preferences
import org.tasks.themes.CustomIcons
-import java.util.*
import javax.inject.Inject
/**
@@ -35,7 +34,7 @@ import javax.inject.Inject
* @author Tim Su @todoroo.com>
*/
class BuiltInFilterExposer @Inject constructor(
- @param:ApplicationContext private val context: Context,
+ @param:ActivityContext private val context: Context,
private val preferences: Preferences,
private val taskDao: TaskDao) {
diff --git a/app/src/main/java/com/todoroo/astrid/core/CriterionViewHolder.kt b/app/src/main/java/com/todoroo/astrid/core/CriterionViewHolder.kt
index d5ba38c83..f88b3adeb 100644
--- a/app/src/main/java/com/todoroo/astrid/core/CriterionViewHolder.kt
+++ b/app/src/main/java/com/todoroo/astrid/core/CriterionViewHolder.kt
@@ -7,15 +7,16 @@ import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import org.tasks.R
import org.tasks.databinding.CustomFilterRowBinding
-import org.tasks.locale.Locale
+import org.tasks.extensions.formatNumber
import org.tasks.preferences.ResourceResolver
+import java.util.*
class CriterionViewHolder(
- private val context: Context,
- itemView: View,
- private val locale: Locale,
- private val onClick: (String) -> Unit)
- : RecyclerView.ViewHolder(itemView) {
+ private val context: Context,
+ itemView: View,
+ private val locale: Locale,
+ private val onClick: (String) -> Unit
+) : RecyclerView.ViewHolder(itemView) {
private val divider: View
private val icon: ImageView
diff --git a/app/src/main/java/com/todoroo/astrid/core/CustomFilterAdapter.java b/app/src/main/java/com/todoroo/astrid/core/CustomFilterAdapter.java
index 1ba6a4ff7..1acad3666 100644
--- a/app/src/main/java/com/todoroo/astrid/core/CustomFilterAdapter.java
+++ b/app/src/main/java/com/todoroo/astrid/core/CustomFilterAdapter.java
@@ -6,18 +6,23 @@ import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.AsyncDifferConfig;
import androidx.recyclerview.widget.AsyncListDiffer;
import androidx.recyclerview.widget.ListUpdateCallback;
import androidx.recyclerview.widget.RecyclerView;
+
import com.google.common.collect.ImmutableList;
+
+import org.tasks.R;
+
import java.util.List;
+import java.util.Locale;
+
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
-import org.tasks.R;
-import org.tasks.locale.Locale;
public class CustomFilterAdapter extends RecyclerView.Adapter implements
ListUpdateCallback {
@@ -27,7 +32,7 @@ public class CustomFilterAdapter extends RecyclerView.Adapter differ;
public CustomFilterAdapter(
- List objects, Locale locale, Function1 onClick) {
+ List objects, Locale locale, Function1 onClick) {
this.locale = locale;
this.onClick = onClick;
differ = new AsyncListDiffer<>(this, new AsyncDifferConfig.Builder<>(new CriterionDiffCallback()).build());
diff --git a/app/src/main/java/com/todoroo/astrid/notes/CommentsController.kt b/app/src/main/java/com/todoroo/astrid/notes/CommentsController.kt
index bfb28e35f..d96fa3927 100644
--- a/app/src/main/java/com/todoroo/astrid/notes/CommentsController.kt
+++ b/app/src/main/java/com/todoroo/astrid/notes/CommentsController.kt
@@ -28,7 +28,6 @@ import org.tasks.data.UserActivityDao
import org.tasks.dialogs.Linkify
import org.tasks.files.FileHelper
import org.tasks.files.ImageHelper
-import org.tasks.locale.Locale
import org.tasks.preferences.Preferences
import java.util.*
import javax.inject.Inject
@@ -91,7 +90,7 @@ class CommentsController @Inject constructor(
// date
val date = view.findViewById(R.id.date)
- date.text = DateUtilities.getLongDateStringWithTime(item.created!!, locale.locale)
+ date.text = DateUtilities.getLongDateStringWithTime(item.created!!, locale)
// picture
val commentPictureView = view.findViewById(R.id.comment_picture)
diff --git a/app/src/main/java/com/todoroo/astrid/ui/StartDateControlSet.kt b/app/src/main/java/com/todoroo/astrid/ui/StartDateControlSet.kt
index 6a1dad249..a0e3539f8 100644
--- a/app/src/main/java/com/todoroo/astrid/ui/StartDateControlSet.kt
+++ b/app/src/main/java/com/todoroo/astrid/ui/StartDateControlSet.kt
@@ -22,12 +22,12 @@ import org.tasks.dialogs.StartDatePicker.Companion.EXTRA_TIME
import org.tasks.dialogs.StartDatePicker.Companion.NO_DAY
import org.tasks.dialogs.StartDatePicker.Companion.NO_TIME
import org.tasks.dialogs.StartDatePicker.Companion.WEEK_BEFORE_DUE
-import org.tasks.locale.Locale
import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils.millisOfDay
import org.tasks.time.DateTimeUtils.startOfDay
import org.tasks.ui.TaskEditControlFragment
import java.time.format.FormatStyle
+import java.util.*
import javax.inject.Inject
@AndroidEntryPoint
@@ -140,7 +140,7 @@ class StartDateControlSet : TaskEditControlFragment() {
in 1..Long.MAX_VALUE -> DateUtilities.getRelativeDateTime(
activity,
selectedDay + selectedTime,
- locale.locale,
+ locale,
FormatStyle.FULL,
preferences.alwaysDisplayFullDate,
false
diff --git a/app/src/main/java/org/tasks/Tasks.kt b/app/src/main/java/org/tasks/Tasks.kt
index 3ce8bd45d..243e45740 100644
--- a/app/src/main/java/org/tasks/Tasks.kt
+++ b/app/src/main/java/org/tasks/Tasks.kt
@@ -20,7 +20,6 @@ import org.tasks.caldav.CaldavSynchronizer
import org.tasks.files.FileHelper
import org.tasks.injection.InjectingJobIntentService
import org.tasks.jobs.WorkManager
-import org.tasks.locale.Locale
import org.tasks.location.GeofenceApi
import org.tasks.opentasks.OpenTaskContentObserver
import org.tasks.preferences.Preferences
@@ -57,7 +56,6 @@ class Tasks : Application(), Configuration.Provider {
preferences.setBoolean(R.string.p_sync_ongoing_opentasks, false)
ThemeBase.getThemeBase(preferences, inventory, null).setDefaultNightMode()
localBroadcastManager.registerRefreshReceiver(RefreshBroadcastReceiver())
- Locale.getInstance(this).createConfigurationContext(applicationContext)
backgroundWork()
}
diff --git a/app/src/main/java/org/tasks/activities/FilterSettingsActivity.kt b/app/src/main/java/org/tasks/activities/FilterSettingsActivity.kt
index 010978df0..082566398 100644
--- a/app/src/main/java/org/tasks/activities/FilterSettingsActivity.kt
+++ b/app/src/main/java/org/tasks/activities/FilterSettingsActivity.kt
@@ -24,12 +24,7 @@ import com.todoroo.andlib.sql.UnaryCriterion
import com.todoroo.andlib.utility.AndroidUtilities
import com.todoroo.astrid.activity.MainActivity
import com.todoroo.astrid.activity.TaskListFragment
-import com.todoroo.astrid.api.BooleanCriterion
-import com.todoroo.astrid.api.CustomFilter
-import com.todoroo.astrid.api.CustomFilterCriterion
-import com.todoroo.astrid.api.MultipleSelectCriterion
-import com.todoroo.astrid.api.PermaSql
-import com.todoroo.astrid.api.TextInputCriterion
+import com.todoroo.astrid.api.*
import com.todoroo.astrid.core.CriterionInstance
import com.todoroo.astrid.core.CustomFilterAdapter
import com.todoroo.astrid.core.CustomFilterItemTouchHelper
@@ -46,7 +41,6 @@ import org.tasks.databinding.FilterSettingsActivityBinding
import org.tasks.db.QueryUtils
import org.tasks.extensions.Context.openUri
import org.tasks.filters.FilterCriteriaProvider
-import org.tasks.locale.Locale
import java.util.*
import javax.inject.Inject
import kotlin.math.max
diff --git a/app/src/main/java/org/tasks/activities/PlaceSettingsActivity.kt b/app/src/main/java/org/tasks/activities/PlaceSettingsActivity.kt
index e3473e12d..45a62c95c 100644
--- a/app/src/main/java/org/tasks/activities/PlaceSettingsActivity.kt
+++ b/app/src/main/java/org/tasks/activities/PlaceSettingsActivity.kt
@@ -15,10 +15,11 @@ import org.tasks.Strings.isNullOrEmpty
import org.tasks.data.LocationDao
import org.tasks.data.Place
import org.tasks.databinding.ActivityLocationSettingsBinding
+import org.tasks.extensions.formatNumber
import org.tasks.filters.PlaceFilter
-import org.tasks.locale.Locale
import org.tasks.location.MapFragment
import org.tasks.preferences.Preferences
+import java.util.*
import javax.inject.Inject
import kotlin.math.roundToInt
diff --git a/app/src/main/java/org/tasks/dialogs/AlertDialogBuilder.java b/app/src/main/java/org/tasks/dialogs/AlertDialogBuilder.java
index fffb0d2f8..13743c240 100644
--- a/app/src/main/java/org/tasks/dialogs/AlertDialogBuilder.java
+++ b/app/src/main/java/org/tasks/dialogs/AlertDialogBuilder.java
@@ -5,20 +5,20 @@ import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.view.View;
import android.widget.ListAdapter;
+
import androidx.appcompat.app.AlertDialog;
+
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
import java.util.List;
-import org.tasks.locale.Locale;
public class AlertDialogBuilder {
private final AlertDialog.Builder builder;
private final Context context;
- private final Locale locale;
- AlertDialogBuilder(Context context, Locale locale) {
+ AlertDialogBuilder(Context context) {
this.context = context;
- this.locale = locale;
builder = new MaterialAlertDialogBuilder(context);
}
@@ -60,7 +60,7 @@ public class AlertDialogBuilder {
public AlertDialogBuilder setItems(
String[] strings, DialogInterface.OnClickListener onClickListener) {
- builder.setItems(addDirectionality(strings.clone()), onClickListener);
+ builder.setItems(strings.clone(), onClickListener);
return this;
}
@@ -87,21 +87,10 @@ public class AlertDialogBuilder {
public AlertDialogBuilder setSingleChoiceItems(
String[] strings, int selectedIndex, OnClickListener onClickListener) {
- builder.setSingleChoiceItems(addDirectionality(strings), selectedIndex, onClickListener);
+ builder.setSingleChoiceItems(strings, selectedIndex, onClickListener);
return this;
}
- private String[] addDirectionality(String[] strings) {
- for (int i = 0; i < strings.length; i++) {
- strings[i] = withDirectionality(strings[i]);
- }
- return strings;
- }
-
- private String withDirectionality(String string) {
- return locale.getDirectionalityMark() + string;
- }
-
public AlertDialogBuilder setSingleChoiceItems(
ListAdapter adapter, int selectedIndex, DialogInterface.OnClickListener onClickListener) {
builder.setSingleChoiceItems(adapter, selectedIndex, onClickListener);
@@ -137,7 +126,6 @@ public class AlertDialogBuilder {
public AlertDialog show() {
AlertDialog dialog = create();
dialog.show();
- locale.applyDirectionality(dialog);
return dialog;
}
}
diff --git a/app/src/main/java/org/tasks/dialogs/DateTimePicker.kt b/app/src/main/java/org/tasks/dialogs/DateTimePicker.kt
index e4337853e..c1b2f199f 100644
--- a/app/src/main/java/org/tasks/dialogs/DateTimePicker.kt
+++ b/app/src/main/java/org/tasks/dialogs/DateTimePicker.kt
@@ -20,12 +20,12 @@ import org.tasks.databinding.DialogDateTimePickerBinding
import org.tasks.date.DateTimeUtils.newDateTime
import org.tasks.date.DateTimeUtils.toDateTime
import org.tasks.dialogs.MyTimePickerDialog.Companion.newTimePicker
-import org.tasks.locale.Locale
import org.tasks.notifications.NotificationManager
import org.tasks.time.DateTime
import org.tasks.time.DateTimeUtils.millisOfDay
import org.tasks.time.DateTimeUtils.startOfDay
import java.time.format.FormatStyle
+import java.util.*
import java.util.Calendar.*
import javax.inject.Inject
@@ -145,7 +145,7 @@ class DateTimePicker : BaseDateTimePicker() {
binding.shortcuts.currentDateSelection.text = if (customDate == MULTIPLE_DAYS) {
requireContext().getString(R.string.date_picker_multiple)
} else {
- DateUtilities.getRelativeDay(context, selectedDay, locale.locale, FormatStyle.MEDIUM)
+ DateUtilities.getRelativeDay(context, selectedDay, locale, FormatStyle.MEDIUM)
}
}
}
diff --git a/app/src/main/java/org/tasks/dialogs/DialogBuilder.java b/app/src/main/java/org/tasks/dialogs/DialogBuilder.java
index 527daa891..27af965e5 100644
--- a/app/src/main/java/org/tasks/dialogs/DialogBuilder.java
+++ b/app/src/main/java/org/tasks/dialogs/DialogBuilder.java
@@ -2,22 +2,20 @@ package org.tasks.dialogs;
import android.app.Activity;
import android.app.ProgressDialog;
+
import javax.inject.Inject;
-import org.tasks.locale.Locale;
public class DialogBuilder {
private final Activity activity;
- private final Locale locale;
@Inject
- public DialogBuilder(Activity activity, Locale locale) {
+ public DialogBuilder(Activity activity) {
this.activity = activity;
- this.locale = locale;
}
public AlertDialogBuilder newDialog() {
- return new AlertDialogBuilder(activity, locale);
+ return new AlertDialogBuilder(activity);
}
public AlertDialogBuilder newDialog(int title) {
diff --git a/app/src/main/java/org/tasks/dialogs/StartDatePicker.kt b/app/src/main/java/org/tasks/dialogs/StartDatePicker.kt
index 6d90682fb..f68bd1ed2 100644
--- a/app/src/main/java/org/tasks/dialogs/StartDatePicker.kt
+++ b/app/src/main/java/org/tasks/dialogs/StartDatePicker.kt
@@ -16,10 +16,10 @@ import org.tasks.R
import org.tasks.databinding.DialogStartDatePickerBinding
import org.tasks.date.DateTimeUtils.newDateTime
import org.tasks.dialogs.MyTimePickerDialog.Companion.newTimePicker
-import org.tasks.locale.Locale
import org.tasks.notifications.NotificationManager
import org.tasks.time.DateTime
import java.time.format.FormatStyle
+import java.util.*
import javax.inject.Inject
@AndroidEntryPoint
@@ -112,7 +112,7 @@ class StartDatePicker : BaseDateTimePicker() {
binding.shortcuts.dateGroup.check(R.id.current_date_selection)
binding.shortcuts.currentDateSelection.visibility = View.VISIBLE
binding.shortcuts.currentDateSelection.text =
- DateUtilities.getRelativeDay(context, selectedDay, locale.locale, FormatStyle.MEDIUM)
+ DateUtilities.getRelativeDay(context, selectedDay, locale, FormatStyle.MEDIUM)
}
}
if (Task.hasDueTime(selectedTime.toLong())) {
diff --git a/app/src/main/java/org/tasks/extensions/Locale.kt b/app/src/main/java/org/tasks/extensions/Locale.kt
new file mode 100644
index 000000000..f16a0b746
--- /dev/null
+++ b/app/src/main/java/org/tasks/extensions/Locale.kt
@@ -0,0 +1,17 @@
+package org.tasks.extensions
+
+import java.text.NumberFormat
+import java.text.ParseException
+import java.util.*
+
+fun Locale.formatNumber(number: Int): String {
+ return NumberFormat.getNumberInstance(this).format(number.toLong())
+}
+
+fun Locale.parseInteger(number: String?): Int? {
+ return try {
+ NumberFormat.getNumberInstance(this).parse(number).toInt()
+ } catch (e: ParseException) {
+ null
+ }
+}
diff --git a/app/src/main/java/org/tasks/filters/FilterProvider.kt b/app/src/main/java/org/tasks/filters/FilterProvider.kt
index 850224162..5379cc630 100644
--- a/app/src/main/java/org/tasks/filters/FilterProvider.kt
+++ b/app/src/main/java/org/tasks/filters/FilterProvider.kt
@@ -7,7 +7,7 @@ import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.api.FilterListItem
import com.todoroo.astrid.api.FilterListItem.NO_ORDER
import com.todoroo.astrid.core.BuiltInFilterExposer
-import dagger.hilt.android.qualifiers.ApplicationContext
+import dagger.hilt.android.qualifiers.ActivityContext
import org.tasks.BuildConfig
import org.tasks.R
import org.tasks.activities.GoogleTaskListSettingsActivity
@@ -15,16 +15,10 @@ import org.tasks.activities.NavigationDrawerCustomization
import org.tasks.activities.TagSettingsActivity
import org.tasks.billing.Inventory
import org.tasks.caldav.BaseCaldavCalendarSettingsActivity
-import org.tasks.data.CaldavAccount
+import org.tasks.data.*
import org.tasks.data.CaldavAccount.Companion.TYPE_ETESYNC
import org.tasks.data.CaldavAccount.Companion.TYPE_LOCAL
import org.tasks.data.CaldavAccount.Companion.TYPE_OPENTASKS
-import org.tasks.data.CaldavDao
-import org.tasks.data.FilterDao
-import org.tasks.data.GoogleTaskAccount
-import org.tasks.data.GoogleTaskListDao
-import org.tasks.data.LocationDao
-import org.tasks.data.TagDataDao
import org.tasks.filters.NavigationDrawerSubheader.SubheaderType
import org.tasks.location.LocationPickerActivity
import org.tasks.preferences.HelpAndFeedback
@@ -34,7 +28,7 @@ import org.tasks.ui.NavigationDrawerFragment
import javax.inject.Inject
class FilterProvider @Inject constructor(
- @param:ApplicationContext private val context: Context,
+ @param:ActivityContext private val context: Context,
private val inventory: Inventory,
private val builtInFilterExposer: BuiltInFilterExposer,
private val filterDao: FilterDao,
diff --git a/app/src/main/java/org/tasks/injection/ApplicationModule.kt b/app/src/main/java/org/tasks/injection/ApplicationModule.kt
index 0a7cec470..649d2b66e 100644
--- a/app/src/main/java/org/tasks/injection/ApplicationModule.kt
+++ b/app/src/main/java/org/tasks/injection/ApplicationModule.kt
@@ -17,8 +17,8 @@ import org.tasks.billing.BillingClientImpl
import org.tasks.billing.Inventory
import org.tasks.data.*
import org.tasks.jobs.WorkManager
-import org.tasks.locale.Locale
import org.tasks.notifications.NotificationDao
+import java.util.*
import javax.inject.Singleton
@Module
@@ -26,11 +26,7 @@ import javax.inject.Singleton
class ApplicationModule {
@Provides
- fun getLocale(@ApplicationContext context: Context): Locale = Locale.getInstance(context)
-
- @Provides
- @Singleton
- fun getJavaLocale(locale: Locale): java.util.Locale = locale.locale
+ fun getLocale(): Locale = Locale.getDefault()
@Provides
@Singleton
diff --git a/app/src/main/java/org/tasks/injection/InjectingAppCompatActivity.kt b/app/src/main/java/org/tasks/injection/InjectingAppCompatActivity.kt
index b07e76bfc..a66662b63 100644
--- a/app/src/main/java/org/tasks/injection/InjectingAppCompatActivity.kt
+++ b/app/src/main/java/org/tasks/injection/InjectingAppCompatActivity.kt
@@ -2,15 +2,10 @@ package org.tasks.injection
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
-import org.tasks.locale.Locale
abstract class InjectingAppCompatActivity protected constructor() : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
title = ""
}
-
- init {
- Locale.getInstance(this).applyOverrideConfiguration(this)
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/org/tasks/injection/ThemedInjectingAppCompatActivity.kt b/app/src/main/java/org/tasks/injection/ThemedInjectingAppCompatActivity.kt
index 3ec1a27f3..76d036b90 100644
--- a/app/src/main/java/org/tasks/injection/ThemedInjectingAppCompatActivity.kt
+++ b/app/src/main/java/org/tasks/injection/ThemedInjectingAppCompatActivity.kt
@@ -2,7 +2,6 @@ package org.tasks.injection
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
-import org.tasks.locale.Locale
import org.tasks.themes.Theme
import org.tasks.themes.ThemeColor
import javax.inject.Inject
@@ -16,8 +15,4 @@ abstract class ThemedInjectingAppCompatActivity protected constructor() : AppCom
tasksTheme.applyThemeAndStatusBarColor(this)
title = null
}
-
- init {
- Locale.getInstance(this).applyOverrideConfiguration(this)
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/org/tasks/locale/Locale.java b/app/src/main/java/org/tasks/locale/Locale.java
deleted file mode 100644
index 61e3e1c86..000000000
--- a/app/src/main/java/org/tasks/locale/Locale.java
+++ /dev/null
@@ -1,208 +0,0 @@
-package org.tasks.locale;
-
-import static org.tasks.Strings.isNullOrEmpty;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.res.Configuration;
-import android.text.TextUtils;
-import android.view.ContextThemeWrapper;
-import android.view.View;
-import android.view.ViewParent;
-import androidx.annotation.Nullable;
-import androidx.preference.PreferenceManager;
-import java.io.Serializable;
-import java.text.NumberFormat;
-import java.text.ParseException;
-import java.util.Objects;
-import org.tasks.R;
-
-public class Locale implements Serializable {
-
- private static final Locale DEFAULT = new Locale(java.util.Locale.getDefault(), null);
- private static final int[] sDialogButtons =
- new int[] {android.R.id.button1, android.R.id.button2, android.R.id.button3};
- private static final char LEFT_TO_RIGHT_MARK = '\u200e';
- private static final char RIGHT_TO_LEFT_MARK = '\u200f';
- private static Locale INSTANCE;
- private final java.util.Locale deviceLocale;
- private final java.util.Locale appLocale;
- private final int appDirectionality;
- private final char appDirectionalityMark;
- private final String languageOverride;
- private final boolean hasUserOverrides;
-
- public Locale(java.util.Locale deviceLocale, String languageOverride) {
- this.deviceLocale = deviceLocale;
- this.languageOverride = languageOverride;
-
- java.util.Locale override = localeFromString(languageOverride);
- if (override != null) {
- appLocale = override;
- } else {
- appLocale = deviceLocale;
- }
-
- appDirectionality = TextUtils.getLayoutDirectionFromLocale(appLocale);
- appDirectionalityMark =
- appDirectionality == View.LAYOUT_DIRECTION_RTL ? RIGHT_TO_LEFT_MARK : LEFT_TO_RIGHT_MARK;
- int deviceDirectionality = TextUtils.getLayoutDirectionFromLocale(deviceLocale);
- hasUserOverrides =
- !(deviceLocale.equals(appLocale) && appDirectionality == deviceDirectionality);
- }
-
- public static Locale getInstance(Context context) {
- if (INSTANCE == null) {
- synchronized (DEFAULT) {
- if (INSTANCE == null) {
- Context applicationContext = context.getApplicationContext();
- SharedPreferences prefs =
- PreferenceManager.getDefaultSharedPreferences(applicationContext);
- String language =
- prefs.getString(applicationContext.getString(R.string.p_language), null);
- INSTANCE = new Locale(DEFAULT.getLocale(), language);
- java.util.Locale.setDefault(INSTANCE.getLocale());
- }
- }
- }
-
- return getInstance();
- }
-
- public static Locale getInstance() {
- return INSTANCE == null ? DEFAULT : INSTANCE;
- }
-
- private static java.util.Locale localeFromString(String locale) {
- if (isNullOrEmpty(locale)) {
- return null;
- }
-
- String[] split = locale.split("-");
- if (split.length == 1) {
- return new java.util.Locale(split[0]);
- } else if (split.length == 2) {
- return new java.util.Locale(split[0], split[1]);
- }
- throw new RuntimeException();
- }
-
- public java.util.Locale getLocale() {
- return appLocale;
- }
-
- public java.util.Locale getDeviceLocale() {
- return deviceLocale;
- }
-
- public char getDirectionalityMark() {
- return appDirectionalityMark;
- }
-
- public int getDirectionality() {
- return appDirectionality;
- }
-
- public @Nullable String getLanguageOverride() {
- return languageOverride;
- }
-
- public Context createConfigurationContext(Context context) {
- return hasUserOverrides
- ? context.createConfigurationContext(getLocaleConfiguration())
- : context;
- }
-
- private Configuration getLocaleConfiguration() {
- Configuration configuration = new Configuration();
- configuration.locale = getLocale();
- final int layoutDirection = 1 + appDirectionality;
- configuration.screenLayout =
- (configuration.screenLayout & ~Configuration.SCREENLAYOUT_LAYOUTDIR_MASK)
- | (layoutDirection << Configuration.SCREENLAYOUT_LAYOUTDIR_SHIFT);
- return configuration;
- }
-
- public void applyOverrideConfiguration(ContextThemeWrapper wrapper) {
- if (hasUserOverrides) {
- wrapper.applyOverrideConfiguration(getLocaleConfiguration());
- }
- }
-
- public Locale withLanguage(String language) {
- return new Locale(deviceLocale, language);
- }
-
- public String getDisplayName() {
- java.util.Locale locale = getLocale();
- return locale.getDisplayName(locale);
- }
-
- public String formatNumber(int number) {
- return NumberFormat.getNumberInstance(appLocale).format(number);
- }
-
- public String formatNumber(double number) {
- return NumberFormat.getNumberInstance(appLocale).format(number);
- }
-
- public Integer parseInteger(String number) {
- try {
- return NumberFormat.getNumberInstance(appLocale).parse(number).intValue();
- } catch (ParseException e) {
- return null;
- }
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (!(o instanceof Locale)) {
- return false;
- }
- Locale locale = (Locale) o;
- return appDirectionality == locale.appDirectionality
- && appDirectionalityMark == locale.appDirectionalityMark
- && hasUserOverrides == locale.hasUserOverrides
- && Objects.equals(deviceLocale, locale.deviceLocale)
- && Objects.equals(appLocale, locale.appLocale)
- && Objects.equals(languageOverride, locale.languageOverride);
- }
-
- @Override
- public int hashCode() {
- return Objects
- .hash(deviceLocale, appLocale, appDirectionality, appDirectionalityMark, languageOverride,
- hasUserOverrides);
- }
-
- @Override
- public String toString() {
- return "Locale{"
- + "deviceLocale="
- + deviceLocale
- + ", appLocale="
- + appLocale
- + ", appDirectionality="
- + appDirectionality
- + ", languageOverride='"
- + languageOverride
- + '\''
- + ", hasUserOverrides="
- + hasUserOverrides
- + '}';
- }
-
- public void applyDirectionality(Dialog dialog) {
- if (hasUserOverrides) {
- dialog.findViewById(android.R.id.content).setLayoutDirection(appDirectionality);
- for (int id : sDialogButtons) {
- ViewParent parent = dialog.findViewById(id).getParent();
- ((View) parent).setLayoutDirection(appDirectionality);
- }
- }
- }
-}
diff --git a/app/src/main/java/org/tasks/locale/LocalePickerDialog.kt b/app/src/main/java/org/tasks/locale/LocalePickerDialog.kt
index 8b46fe87c..a12a7ee77 100644
--- a/app/src/main/java/org/tasks/locale/LocalePickerDialog.kt
+++ b/app/src/main/java/org/tasks/locale/LocalePickerDialog.kt
@@ -4,32 +4,45 @@ import android.app.Activity
import android.app.Dialog
import android.content.Intent
import android.os.Bundle
+import androidx.appcompat.app.AppCompatDelegate
import androidx.fragment.app.DialogFragment
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R
import org.tasks.dialogs.DialogBuilder
-import java.util.*
+import org.xmlpull.v1.XmlPullParser
import javax.inject.Inject
@AndroidEntryPoint
class LocalePickerDialog : DialogFragment() {
@Inject lateinit var dialogBuilder: DialogBuilder
- @Inject lateinit var locale: Locale
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
- val locales = ArrayList()
- locales.add(locale.withLanguage(null)) // device locale
- for (override in resources.getStringArray(R.array.localization)) {
- locales.add(locale.withLanguage(override))
+
+ val locales = ArrayList()
+ val selected =
+ AppCompatDelegate.getApplicationLocales().let { java.util.Locale.forLanguageTag(it.toLanguageTags()) }
+ val default = java.util.Locale.getDefault()
+ locales.add(default) // device locale
+ val tags = ArrayList()
+ val xrp = resources.getXml(R.xml.locales_config)
+ var event = xrp.eventType
+ while (event != XmlPullParser.END_DOCUMENT) {
+ if (event == XmlPullParser.START_TAG && xrp.name == "locale") {
+ tags.add(xrp.getAttributeValue(0))
+ }
+ event = xrp.next()
+ }
+ for (override in tags) {
+ locales.add(java.util.Locale.forLanguageTag(override))
}
- val display = locales.map(Locale::getDisplayName)
+ val display = locales.map { it.getDisplayName(it) }
return dialogBuilder
.newDialog()
- .setSingleChoiceItems(display, display.indexOf(locale.displayName)) { dialog, which ->
- val locale = locales[which]
+ .setSingleChoiceItems(display, display.indexOf(selected.getDisplayName(selected))) { dialog, which ->
+ val locale = locales[which].toLanguageTag()
val data = Intent().putExtra(EXTRA_LOCALE, locale)
- targetFragment!!.onActivityResult(targetRequestCode, Activity.RESULT_OK, data)
dialog.dismiss()
+ targetFragment!!.onActivityResult(targetRequestCode, Activity.RESULT_OK, data)
}
.setNegativeButton(R.string.cancel, null)
.show()
diff --git a/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt b/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt
index a8fd9b21b..aade4d7c2 100644
--- a/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt
+++ b/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt
@@ -1,11 +1,8 @@
package org.tasks.preferences
import android.content.Context
-import com.todoroo.astrid.api.CaldavFilter
-import com.todoroo.astrid.api.CustomFilter
+import com.todoroo.astrid.api.*
import com.todoroo.astrid.api.Filter
-import com.todoroo.astrid.api.GtasksFilter
-import com.todoroo.astrid.api.TagFilter
import com.todoroo.astrid.core.BuiltInFilterExposer
import com.todoroo.astrid.core.BuiltInFilterExposer.Companion.getMyTasksFilter
import com.todoroo.astrid.data.Task
@@ -13,19 +10,13 @@ import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.runBlocking
import org.tasks.R
import org.tasks.Strings.isNullOrEmpty
-import org.tasks.data.CaldavDao
-import org.tasks.data.CaldavTask
-import org.tasks.data.FilterDao
-import org.tasks.data.GoogleTask
-import org.tasks.data.GoogleTaskDao
-import org.tasks.data.GoogleTaskListDao
-import org.tasks.data.LocationDao
-import org.tasks.data.TagDataDao
+import org.tasks.data.*
import org.tasks.filters.PlaceFilter
import timber.log.Timber
import javax.inject.Inject
class DefaultFilterProvider @Inject constructor(
+ // TODO: don't inject context, it breaks built-in filters when overriding language
@param:ApplicationContext private val context: Context,
private val preferences: Preferences,
private val filterDao: FilterDao,
diff --git a/app/src/main/java/org/tasks/preferences/Device.java b/app/src/main/java/org/tasks/preferences/Device.java
index 4e60d8143..4b7b2a1c3 100644
--- a/app/src/main/java/org/tasks/preferences/Device.java
+++ b/app/src/main/java/org/tasks/preferences/Device.java
@@ -8,23 +8,25 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Build;
import android.speech.RecognizerIntent;
+
import com.google.common.base.Joiner;
-import dagger.hilt.android.qualifiers.ApplicationContext;
+
+import org.tasks.BuildConfig;
+
import java.util.List;
+
import javax.inject.Inject;
-import org.tasks.BuildConfig;
-import org.tasks.locale.Locale;
+
+import dagger.hilt.android.qualifiers.ApplicationContext;
import timber.log.Timber;
public class Device {
private final Context context;
- private final Locale locale;
@Inject
- public Device(@ApplicationContext Context context, Locale locale) {
+ public Device(@ApplicationContext Context context) {
this.context = context;
- this.locale = locale;
}
public boolean hasCamera() {
@@ -44,8 +46,6 @@ public class Device {
public String getDebugInfo() {
try {
- java.util.Locale appLocale = locale.getLocale();
- java.util.Locale deviceLocale = locale.getDeviceLocale();
return Joiner.on("\n")
.join(
asList(
@@ -59,9 +59,7 @@ public class Device {
+ BuildConfig.VERSION_CODE
+ ")",
"Android: " + Build.VERSION.RELEASE + " (" + Build.DISPLAY + ")",
- "Locale: "
- + deviceLocale
- + (!deviceLocale.equals(appLocale) ? " (" + appLocale + ")" : ""),
+ "Locale: " + java.util.Locale.getDefault(),
"Model: " + Build.MANUFACTURER + " " + Build.MODEL,
"Product: " + Build.PRODUCT + " (" + Build.DEVICE + ")",
"Kernel: "
diff --git a/app/src/main/java/org/tasks/preferences/fragments/DateAndTime.kt b/app/src/main/java/org/tasks/preferences/fragments/DateAndTime.kt
index 6abf80d82..e76b3526b 100644
--- a/app/src/main/java/org/tasks/preferences/fragments/DateAndTime.kt
+++ b/app/src/main/java/org/tasks/preferences/fragments/DateAndTime.kt
@@ -10,12 +10,12 @@ import org.tasks.R
import org.tasks.dialogs.MyTimePickerDialog.Companion.newTimePicker
import org.tasks.extensions.Context.toast
import org.tasks.injection.InjectingPreferenceFragment
-import org.tasks.locale.Locale
import org.tasks.preferences.Preferences
import org.tasks.time.DateTime
import org.tasks.ui.TimePreference
import java.time.DayOfWeek
import java.time.format.TextStyle
+import java.util.*
import javax.inject.Inject
private const val REQUEST_MORNING = 10007
@@ -134,7 +134,7 @@ class DateAndTime : InjectingPreferenceFragment(), Preference.OnPreferenceChange
findPreference(R.string.p_start_of_week) as ListPreference
private fun getWeekdayDisplayName(dayOfWeek: DayOfWeek): String =
- dayOfWeek.getDisplayName(TextStyle.FULL, locale.locale)
+ dayOfWeek.getDisplayName(TextStyle.FULL, locale)
private fun getMorningPreference(): TimePreference =
getTimePreference(R.string.p_date_shortcut_morning)
diff --git a/app/src/main/java/org/tasks/preferences/fragments/LookAndFeel.kt b/app/src/main/java/org/tasks/preferences/fragments/LookAndFeel.kt
index 2f0b26134..936251dbe 100644
--- a/app/src/main/java/org/tasks/preferences/fragments/LookAndFeel.kt
+++ b/app/src/main/java/org/tasks/preferences/fragments/LookAndFeel.kt
@@ -8,6 +8,8 @@ import android.content.res.Configuration
import android.os.Bundle
import android.os.Handler
import androidx.annotation.StringRes
+import androidx.appcompat.app.AppCompatDelegate
+import androidx.core.os.LocaleListCompat
import androidx.lifecycle.lifecycleScope
import androidx.preference.Preference
import com.todoroo.astrid.api.Filter
@@ -15,7 +17,6 @@ import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import org.tasks.LocalBroadcastManager
import org.tasks.R
-import org.tasks.Strings.isNullOrEmpty
import org.tasks.activities.FilterSelectionActivity
import org.tasks.billing.Inventory
import org.tasks.billing.PurchaseActivity
@@ -26,7 +27,6 @@ import org.tasks.dialogs.ColorWheelPicker
import org.tasks.dialogs.ThemePickerDialog
import org.tasks.dialogs.ThemePickerDialog.Companion.newThemePickerDialog
import org.tasks.injection.InjectingPreferenceFragment
-import org.tasks.locale.Locale
import org.tasks.locale.LocalePickerDialog
import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.Preferences
@@ -37,8 +37,10 @@ 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 javax.inject.Inject
+
private const val REQUEST_THEME_PICKER = 10001
private const val REQUEST_COLOR_PICKER = 10002
private const val REQUEST_ACCENT_PICKER = 10003
@@ -57,7 +59,6 @@ class LookAndFeel : InjectingPreferenceFragment() {
@Inject lateinit var themeAccent: ThemeAccent
@Inject lateinit var preferences: Preferences
@Inject lateinit var localBroadcastManager: LocalBroadcastManager
- @Inject lateinit var locale: Locale
@Inject lateinit var defaultFilterProvider: DefaultFilterProvider
@Inject lateinit var inventory: Inventory
@@ -97,7 +98,9 @@ class LookAndFeel : InjectingPreferenceFragment() {
}
val languagePreference = findPreference(R.string.p_language)
- updateLocale()
+ val locale =
+ Locale.forLanguageTag(AppCompatDelegate.getApplicationLocales().toLanguageTags())
+ languagePreference.summary = locale.getDisplayName(locale)
languagePreference.onPreferenceClickListener = Preference.OnPreferenceClickListener {
val dialog = LocalePickerDialog.newLocalePickerDialog()
dialog.setTargetFragment(this, REQUEST_LOCALE)
@@ -213,18 +216,10 @@ class LookAndFeel : InjectingPreferenceFragment() {
}
REQUEST_LOCALE -> {
if (resultCode == RESULT_OK) {
- val newValue: Locale =
- data!!.getSerializableExtra(LocalePickerDialog.EXTRA_LOCALE) as Locale
- val override: String? = newValue.languageOverride
- if (isNullOrEmpty(override)) {
- preferences.remove(R.string.p_language)
- } else {
- preferences.setString(R.string.p_language, override)
- }
- updateLocale()
- if (locale != newValue) {
- showRestartDialog()
- }
+ val languageTag = data!!.getStringExtra(LocalePickerDialog.EXTRA_LOCALE)
+ AppCompatDelegate.setApplicationLocales(
+ LocaleListCompat.forLanguageTags(languageTag)
+ )
}
}
else -> {
@@ -233,12 +228,6 @@ class LookAndFeel : InjectingPreferenceFragment() {
}
}
- private fun updateLocale() {
- val languagePreference = findPreference(R.string.p_language)
- val preference = preferences.getStringValue(R.string.p_language)
- languagePreference.summary = locale.withLanguage(preference).displayName
- }
-
private fun setLauncherIcon(index: Int) {
val packageManager: PackageManager? = context?.packageManager
for (i in ThemeColor.LAUNCHERS.indices) {
diff --git a/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt b/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt
index 2031c1480..37b7293a3 100644
--- a/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt
+++ b/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt
@@ -20,7 +20,6 @@ import org.tasks.dialogs.ColorWheelPicker
import org.tasks.dialogs.SortDialog.newSortDialog
import org.tasks.dialogs.ThemePickerDialog.Companion.newThemePickerDialog
import org.tasks.injection.InjectingPreferenceFragment
-import org.tasks.locale.Locale
import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.Preferences
import org.tasks.widget.WidgetPreferences
@@ -51,7 +50,6 @@ class ScrollableWidget : InjectingPreferenceFragment() {
@Inject lateinit var defaultFilterProvider: DefaultFilterProvider
@Inject lateinit var preferences: Preferences
- @Inject lateinit var locale: Locale
@Inject lateinit var localBroadcastManager: LocalBroadcastManager
private lateinit var widgetPreferences: WidgetPreferences
diff --git a/app/src/main/java/org/tasks/preferences/fragments/TasksAccount.kt b/app/src/main/java/org/tasks/preferences/fragments/TasksAccount.kt
index 08612e861..8d2a8c2a0 100644
--- a/app/src/main/java/org/tasks/preferences/fragments/TasksAccount.kt
+++ b/app/src/main/java/org/tasks/preferences/fragments/TasksAccount.kt
@@ -29,10 +29,10 @@ import org.tasks.data.CaldavDao
import org.tasks.extensions.Context.openUri
import org.tasks.extensions.Context.toast
import org.tasks.jobs.WorkManager
-import org.tasks.locale.Locale
import org.tasks.preferences.IconPreference
import org.tasks.preferences.fragments.MainSettingsFragment.Companion.REQUEST_TASKS_ORG
import java.time.format.FormatStyle
+import java.util.*
import javax.inject.Inject
@AndroidEntryPoint
@@ -255,7 +255,7 @@ class TasksAccount : BaseAccountPreference() {
DateUtilities.getRelativeDay(
requireContext(),
date,
- locale.locale,
+ locale,
FormatStyle.FULL,
false,
true
diff --git a/app/src/main/java/org/tasks/reminders/AlarmToString.kt b/app/src/main/java/org/tasks/reminders/AlarmToString.kt
index 2bc36618f..e4fdf3fdb 100644
--- a/app/src/main/java/org/tasks/reminders/AlarmToString.kt
+++ b/app/src/main/java/org/tasks/reminders/AlarmToString.kt
@@ -6,7 +6,7 @@ import com.todoroo.andlib.utility.DateUtilities
import dagger.hilt.android.qualifiers.ApplicationContext
import org.tasks.R
import org.tasks.data.Alarm
-import org.tasks.locale.Locale
+import java.util.*
import java.util.concurrent.TimeUnit
import javax.inject.Inject
import kotlin.math.absoluteValue
@@ -46,10 +46,10 @@ class AlarmToString @Inject constructor(
Alarm.TYPE_SNOOZE ->
resources.getString(
R.string.snoozed_until,
- DateUtilities.getLongDateStringWithTime(alarm.time, locale.locale)
+ DateUtilities.getLongDateStringWithTime(alarm.time, locale)
)
else ->
- DateUtilities.getLongDateStringWithTime(alarm.time, locale.locale)
+ DateUtilities.getLongDateStringWithTime(alarm.time, locale)
}
return if (alarm.repeat > 0) {
reminder + "\n" + resources.getRepeatString(alarm.repeat, alarm.interval)
diff --git a/app/src/main/java/org/tasks/repeats/CustomRecurrenceDialog.java b/app/src/main/java/org/tasks/repeats/CustomRecurrenceDialog.java
index 11cac1dac..f02d1a748 100644
--- a/app/src/main/java/org/tasks/repeats/CustomRecurrenceDialog.java
+++ b/app/src/main/java/org/tasks/repeats/CustomRecurrenceDialog.java
@@ -57,7 +57,7 @@ import org.tasks.databinding.ControlSetRepeatBinding;
import org.tasks.databinding.WeekButtonsBinding;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.dialogs.MyDatePickerDialog;
-import org.tasks.locale.Locale;
+import org.tasks.extensions.LocaleKt;
import org.tasks.preferences.ResourceResolver;
import org.tasks.time.DateTime;
import org.tasks.ui.OnItemSelected;
@@ -68,6 +68,7 @@ import java.time.format.FormatStyle;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
+import java.util.Locale;
import javax.inject.Inject;
@@ -142,7 +143,7 @@ public class CustomRecurrenceDialog extends DialogFragment {
rrule.setFrequency(WEEKLY.name());
}
- DateFormatSymbols dfs = new DateFormatSymbols(locale.getLocale());
+ DateFormatSymbols dfs = new DateFormatSymbols(locale);
String[] shortWeekdays = dfs.getShortWeekdays();
weekGroup1 = weekBinding.weekGroup;
@@ -185,7 +186,7 @@ public class CustomRecurrenceDialog extends DialogFragment {
}
});
- Calendar dayOfMonthCalendar = Calendar.getInstance(locale.getLocale());
+ Calendar dayOfMonthCalendar = Calendar.getInstance(locale);
dayOfMonthCalendar.setTimeInMillis(dueDate);
int dayOfWeekInMonth = dayOfMonthCalendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);
int maxDayOfWeekInMonth = dayOfMonthCalendar.getActualMaximum(Calendar.DAY_OF_WEEK_IN_MONTH);
@@ -242,7 +243,7 @@ public class CustomRecurrenceDialog extends DialogFragment {
frequency.setAdapter(frequencyAdapter);
frequency.setSelection(FREQUENCIES.indexOf(rrule.getFrequency()));
- intervalEditText.setText(locale.formatNumber(rrule.getInterval()));
+ intervalEditText.setText(LocaleKt.formatNumber(locale, rrule.getInterval()));
repeatUntilAdapter =
new ArrayAdapter(context, 0, repeatUntilOptions) {
@@ -284,7 +285,7 @@ public class CustomRecurrenceDialog extends DialogFragment {
};
// set up days of week
- Calendar dayOfWeekCalendar = Calendar.getInstance(locale.getLocale());
+ Calendar dayOfWeekCalendar = Calendar.getInstance(locale);
dayOfWeekCalendar.set(Calendar.DAY_OF_WEEK, dayOfWeekCalendar.getFirstDayOfWeek());
WeekDay todayWeekday = new WeekDay(new DateTime(dueDate).getWeekDay(), 0);
@@ -413,7 +414,7 @@ public class CustomRecurrenceDialog extends DialogFragment {
private void setInterval(int interval, boolean updateEditText) {
rrule.setInterval(interval);
if (updateEditText) {
- intervalEditText.setText(locale.formatNumber(interval));
+ intervalEditText.setText(LocaleKt.formatNumber(locale, interval));
}
updateIntervalTextView();
}
@@ -427,7 +428,7 @@ public class CustomRecurrenceDialog extends DialogFragment {
private void setCount(int count, boolean updateEditText) {
rrule.setCount(count);
if (updateEditText) {
- intervalEditText.setText(locale.formatNumber(count));
+ intervalEditText.setText(LocaleKt.formatNumber(locale, count));
}
updateCountText();
}
@@ -486,7 +487,7 @@ public class CustomRecurrenceDialog extends DialogFragment {
}
private void onRepeatValueChanged(CharSequence text) {
- Integer value = locale.parseInteger(text.toString());
+ Integer value = LocaleKt.parseInteger(locale, text.toString());
if (value == null) {
return;
}
@@ -498,7 +499,7 @@ public class CustomRecurrenceDialog extends DialogFragment {
}
private void onRepeatTimesValueChanged(CharSequence text) {
- Integer value = locale.parseInteger(text.toString());
+ Integer value = LocaleKt.parseInteger(locale, text.toString());
if (value == null) {
return;
}
@@ -526,12 +527,12 @@ public class CustomRecurrenceDialog extends DialogFragment {
getString(
R.string.repeat_until,
DateUtilities.getRelativeDateTime(
- context, repeatUntil, locale.getLocale(), FormatStyle.MEDIUM, true)));
+ context, repeatUntil, locale, FormatStyle.MEDIUM, true)));
repeatTimes.setVisibility(View.GONE);
repeatTimesText.setVisibility(View.GONE);
} else if (count > 0) {
repeatUntilOptions.add(getString(R.string.repeat_occurs));
- repeatTimes.setText(locale.formatNumber(count));
+ repeatTimes.setText(LocaleKt.formatNumber(locale, count));
repeatTimes.setVisibility(View.VISIBLE);
updateCountText();
repeatTimesText.setVisibility(View.VISIBLE);
diff --git a/app/src/main/java/org/tasks/repeats/RepeatRuleToString.kt b/app/src/main/java/org/tasks/repeats/RepeatRuleToString.kt
index d3bf406cd..fc46bcaee 100644
--- a/app/src/main/java/org/tasks/repeats/RepeatRuleToString.kt
+++ b/app/src/main/java/org/tasks/repeats/RepeatRuleToString.kt
@@ -10,7 +10,6 @@ import net.fortuna.ical4j.model.WeekDay.Day
import net.fortuna.ical4j.model.WeekDay.Day.*
import org.tasks.R
import org.tasks.analytics.Firebase
-import org.tasks.locale.Locale
import org.tasks.repeats.RecurrenceUtils.newRecur
import org.tasks.time.DateTime
import java.text.DateFormatSymbols
@@ -50,7 +49,7 @@ class RepeatRuleToString @Inject constructor(
R.string.repeats_single_on_until,
frequencyString,
dayString,
- DateUtilities.getLongDateString(repeatUntil, locale.locale)
+ DateUtilities.getLongDateString(repeatUntil, locale)
)
}
} else if (count > 0) {
@@ -62,7 +61,7 @@ class RepeatRuleToString @Inject constructor(
context.getString(
R.string.repeats_single_until,
frequencyString,
- DateUtilities.getLongDateString(repeatUntil, locale.locale))
+ DateUtilities.getLongDateString(repeatUntil, locale))
}
} else {
val plural = getFrequencyPlural(frequency)
@@ -83,7 +82,7 @@ class RepeatRuleToString @Inject constructor(
R.string.repeats_plural_on_until,
frequencyPlural,
dayString,
- DateUtilities.getLongDateString(repeatUntil, locale.locale)
+ DateUtilities.getLongDateString(repeatUntil, locale)
)
}
} else if (count > 0) {
@@ -95,7 +94,7 @@ class RepeatRuleToString @Inject constructor(
context.getString(
R.string.repeats_plural_until,
frequencyPlural,
- DateUtilities.getLongDateString(repeatUntil, locale.locale))
+ DateUtilities.getLongDateString(repeatUntil, locale))
}
}
} catch (e: Exception) {
@@ -104,7 +103,7 @@ class RepeatRuleToString @Inject constructor(
}
private fun getDayString(rrule: Recur): String {
- val dfs = DateFormatSymbols(locale.locale)
+ val dfs = DateFormatSymbols(locale)
return if (rrule.frequency == WEEKLY) {
val shortWeekdays = dfs.shortWeekdays
val days: MutableList = ArrayList()
@@ -116,7 +115,7 @@ class RepeatRuleToString @Inject constructor(
val longWeekdays = dfs.weekdays
val weekdayNum = rrule.dayList[0]
val weekday: String
- val dayOfWeekCalendar = Calendar.getInstance(locale.locale)
+ val dayOfWeekCalendar = Calendar.getInstance(locale)
dayOfWeekCalendar[Calendar.DAY_OF_WEEK] = weekdayToCalendarDay(weekdayNum.day)
weekday = longWeekdays[dayOfWeekCalendar[Calendar.DAY_OF_WEEK]]
if (weekdayNum.offset == -1) {
diff --git a/app/src/main/java/org/tasks/time/DateTime.java b/app/src/main/java/org/tasks/time/DateTime.java
index 874a9edfe..4496e4507 100644
--- a/app/src/main/java/org/tasks/time/DateTime.java
+++ b/app/src/main/java/org/tasks/time/DateTime.java
@@ -1,8 +1,16 @@
package org.tasks.time;
-import net.fortuna.ical4j.model.WeekDay;
+import static com.todoroo.astrid.core.SortHelper.APPLE_EPOCH;
+import static org.tasks.time.DateTimeUtils.currentTimeMillis;
+import static java.util.Calendar.FRIDAY;
+import static java.util.Calendar.MONDAY;
+import static java.util.Calendar.SATURDAY;
+import static java.util.Calendar.SUNDAY;
+import static java.util.Calendar.THURSDAY;
+import static java.util.Calendar.TUESDAY;
+import static java.util.Calendar.WEDNESDAY;
-import org.tasks.locale.Locale;
+import net.fortuna.ical4j.model.WeekDay;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
@@ -10,20 +18,11 @@ import java.time.LocalDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
+import java.util.Locale;
import java.util.Objects;
import java.util.TimeZone;
import java.util.concurrent.TimeUnit;
-import static com.todoroo.astrid.core.SortHelper.APPLE_EPOCH;
-import static java.util.Calendar.FRIDAY;
-import static java.util.Calendar.MONDAY;
-import static java.util.Calendar.SATURDAY;
-import static java.util.Calendar.SUNDAY;
-import static java.util.Calendar.THURSDAY;
-import static java.util.Calendar.TUESDAY;
-import static java.util.Calendar.WEDNESDAY;
-import static org.tasks.time.DateTimeUtils.currentTimeMillis;
-
public class DateTime {
public static final int MAX_MILLIS_PER_DAY = (int) TimeUnit.DAYS.toMillis(1) - 1;
@@ -432,7 +431,7 @@ public class DateTime {
public String toString(String format) {
Calendar calendar = getCalendar();
SimpleDateFormat simpleDateFormat =
- new SimpleDateFormat(format, Locale.getInstance().getLocale());
+ new SimpleDateFormat(format, Locale.getDefault());
simpleDateFormat.setCalendar(calendar);
return simpleDateFormat.format(calendar.getTime());
}
diff --git a/app/src/main/java/org/tasks/ui/ChipProvider.kt b/app/src/main/java/org/tasks/ui/ChipProvider.kt
index 37b642131..042b097ef 100644
--- a/app/src/main/java/org/tasks/ui/ChipProvider.kt
+++ b/app/src/main/java/org/tasks/ui/ChipProvider.kt
@@ -30,8 +30,8 @@ import org.tasks.billing.Inventory
import org.tasks.data.TagData
import org.tasks.data.TaskContainer
import org.tasks.date.DateTimeUtils.toDateTime
+import org.tasks.extensions.formatNumber
import org.tasks.filters.PlaceFilter
-import org.tasks.locale.Locale
import org.tasks.preferences.Preferences
import org.tasks.themes.ColorProvider
import org.tasks.themes.CustomIcons
@@ -39,6 +39,7 @@ import org.tasks.themes.CustomIcons.getIconResId
import org.tasks.themes.ThemeColor
import org.tasks.time.DateTimeUtils.startOfDay
import java.time.format.FormatStyle
+import java.util.*
import javax.inject.Inject
class ChipProvider @Inject constructor(
@@ -72,7 +73,7 @@ class ChipProvider @Inject constructor(
DateUtilities.getRelativeDateTime(
activity,
task.startDate,
- locale.locale,
+ locale,
if (compact) FormatStyle.SHORT else FormatStyle.MEDIUM,
false,
false
diff --git a/app/src/main/java/org/tasks/ui/DeadlineControlSet.kt b/app/src/main/java/org/tasks/ui/DeadlineControlSet.kt
index 0ce681a06..f6210d748 100644
--- a/app/src/main/java/org/tasks/ui/DeadlineControlSet.kt
+++ b/app/src/main/java/org/tasks/ui/DeadlineControlSet.kt
@@ -13,9 +13,9 @@ import org.tasks.databinding.ControlSetDeadlineBinding
import org.tasks.date.DateTimeUtils
import org.tasks.dialogs.DateTimePicker
import org.tasks.dialogs.DateTimePicker.Companion.newDateTimePicker
-import org.tasks.locale.Locale
import org.tasks.preferences.Preferences
import java.time.format.FormatStyle
+import java.util.*
import javax.inject.Inject
@AndroidEntryPoint
@@ -81,7 +81,7 @@ class DeadlineControlSet : TaskEditControlFragment() {
dueDate.text = DateUtilities.getRelativeDateTime(
activity,
date,
- locale.locale,
+ locale,
FormatStyle.FULL,
preferences.alwaysDisplayFullDate,
false
diff --git a/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt b/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt
index 5d8c80089..a47843f28 100644
--- a/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt
+++ b/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt
@@ -44,7 +44,6 @@ import org.tasks.data.TaskContainer
import org.tasks.data.TaskDao.TaskCriteria.activeAndVisible
import org.tasks.databinding.ControlSetSubtasksBinding
import org.tasks.extensions.Context.toast
-import org.tasks.locale.Locale
import org.tasks.tasklist.SubtaskViewHolder
import org.tasks.tasklist.SubtasksRecyclerAdapter
import javax.inject.Inject
@@ -61,7 +60,6 @@ class SubtaskControlSet : TaskEditControlFragment(), SubtaskViewHolder.Callbacks
@Inject lateinit var taskCreator: TaskCreator
@Inject lateinit var caldavDao: CaldavDao
@Inject lateinit var taskDao: TaskDao
- @Inject lateinit var locale: Locale
@Inject lateinit var checkBoxProvider: CheckBoxProvider
@Inject lateinit var chipProvider: ChipProvider
@Inject lateinit var eventBus: MainActivityEventBus
diff --git a/app/src/main/java/org/tasks/widget/ChipProvider.kt b/app/src/main/java/org/tasks/widget/ChipProvider.kt
index e9f628eb3..a4aa41462 100644
--- a/app/src/main/java/org/tasks/widget/ChipProvider.kt
+++ b/app/src/main/java/org/tasks/widget/ChipProvider.kt
@@ -14,21 +14,18 @@ import org.tasks.R
import org.tasks.data.TaskContainer
import org.tasks.date.DateTimeUtils.toDateTime
import org.tasks.filters.PlaceFilter
-import org.tasks.locale.Locale
-import org.tasks.preferences.Preferences
import org.tasks.themes.CustomIcons
import org.tasks.time.DateTimeUtils.startOfDay
import org.tasks.ui.ChipListCache
import java.time.format.FormatStyle
+import java.util.*
import javax.inject.Inject
class ChipProvider @Inject constructor(
- @ApplicationContext private val context: Context,
- private val chipListCache: ChipListCache,
- private val locale: Locale,
- private val preferences: Preferences,
+ @ApplicationContext private val context: Context,
+ private val chipListCache: ChipListCache,
+ private val locale: Locale,
) {
-
var isDark = false
fun getSubtaskChip(task: TaskContainer): RemoteViews {
@@ -62,7 +59,7 @@ class ChipProvider @Inject constructor(
DateUtilities.getRelativeDateTime(
context,
task.startDate,
- locale.locale,
+ locale,
FormatStyle.MEDIUM,
showFullDate,
false
diff --git a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt
index 4ee6652a2..f65c27613 100644
--- a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt
+++ b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt
@@ -23,7 +23,6 @@ import org.tasks.data.TaskContainer
import org.tasks.data.TaskDao
import org.tasks.data.TaskListQuery.getQuery
import org.tasks.date.DateTimeUtils
-import org.tasks.locale.Locale
import org.tasks.markdown.Markdown
import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.Preferences
@@ -33,20 +32,21 @@ import org.tasks.time.DateTimeUtils.startOfDay
import org.tasks.ui.CheckBoxProvider
import timber.log.Timber
import java.time.format.FormatStyle
+import java.util.*
import kotlin.math.max
internal class ScrollableViewsFactory(
- private val subtasksHelper: SubtasksHelper,
- preferences: Preferences,
- private val context: Context,
- private val widgetId: Int,
- private val taskDao: TaskDao,
- private val defaultFilterProvider: DefaultFilterProvider,
- private val checkBoxProvider: CheckBoxProvider,
- private val locale: Locale,
- private val chipProvider: ChipProvider,
- private val localBroadcastManager: LocalBroadcastManager,
- private val markdown: Markdown
+ private val subtasksHelper: SubtasksHelper,
+ preferences: Preferences,
+ private val context: Context,
+ private val widgetId: Int,
+ private val taskDao: TaskDao,
+ private val defaultFilterProvider: DefaultFilterProvider,
+ private val checkBoxProvider: CheckBoxProvider,
+ private val locale: Locale,
+ private val chipProvider: ChipProvider,
+ private val localBroadcastManager: LocalBroadcastManager,
+ private val markdown: Markdown
) : RemoteViewsFactory {
private val indentPadding: Int
private var showDueDates = false
@@ -70,7 +70,6 @@ internal class ScrollableViewsFactory(
private var showPlaces = false
private var showLists = false
private var showTags = false
- private var isRtl = false
private var collapsed = mutableSetOf(HEADER_COMPLETED)
private var sortMode = -1
private var tasks = SectionedDataSource(
@@ -148,7 +147,7 @@ internal class ScrollableViewsFactory(
val header: String? = if (filter?.supportsSorting() == true) {
section.headerString(
context,
- locale.locale,
+ locale,
sortMode,
showFullDate,
FormatStyle.MEDIUM,
@@ -284,9 +283,8 @@ internal class ScrollableViewsFactory(
.getTagChips(filter, taskContainer)
.forEach { row.addView(R.id.chips, it) }
}
- row.setInt(R.id.widget_row, "setLayoutDirection", locale.directionality)
val startPad = taskContainer.getIndent() * indentPadding
- row.setViewPadding(R.id.widget_row, if (isRtl) 0 else startPad, 0, if (isRtl) startPad else 0, 0)
+ row.setViewPadding(R.id.widget_row, startPad, 0, 0, 0)
return row
} catch (e: Exception) {
Timber.e(e)
@@ -309,7 +307,7 @@ internal class ScrollableViewsFactory(
row.setViewVisibility(if (endDueDate) R.id.widget_due_bottom else R.id.widget_due_end, View.GONE)
val hasDueDate = task.hasDueDate()
val endPad = if (hasDueDate && endDueDate) 0 else hPad
- row.setViewPadding(R.id.widget_text, if (isRtl) endPad else 0, 0, if (isRtl) 0 else endPad, 0)
+ row.setViewPadding(R.id.widget_text, 0, 0, endPad, 0)
if (hasDueDate) {
if (endDueDate) {
row.setViewPadding(R.id.widget_due_end, hPad, vPad, hPad, vPad)
@@ -324,7 +322,7 @@ internal class ScrollableViewsFactory(
}
} else {
DateUtilities.getRelativeDateTime(
- context, task.dueDate, locale.locale, FormatStyle.MEDIUM, showFullDate, false)
+ context, task.dueDate, locale, FormatStyle.MEDIUM, showFullDate, false)
}
row.setTextViewText(dueDateRes, text)
row.setTextColor(
@@ -381,7 +379,6 @@ internal class ScrollableViewsFactory(
sortMode = it
}
collapsed = widgetPreferences.collapsed
- isRtl = locale.directionality == View.LAYOUT_DIRECTION_RTL
compact = widgetPreferences.compact
}
diff --git a/app/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java b/app/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java
index 900113c1a..4a6d9c87b 100644
--- a/app/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java
+++ b/app/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java
@@ -10,13 +10,14 @@ import com.todoroo.astrid.subtasks.SubtasksHelper;
import org.tasks.LocalBroadcastManager;
import org.tasks.data.TaskDao;
-import org.tasks.locale.Locale;
import org.tasks.markdown.MarkdownProvider;
import org.tasks.preferences.DefaultFilterProvider;
import org.tasks.preferences.Preferences;
import org.tasks.themes.ColorProvider;
import org.tasks.ui.CheckBoxProvider;
+import java.util.Locale;
+
import javax.inject.Inject;
import dagger.hilt.android.AndroidEntryPoint;
@@ -52,7 +53,7 @@ public class ScrollableWidgetUpdateService extends RemoteViewsService {
}
int widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);
- Context context = locale.createConfigurationContext(getApplicationContext());
+ Context context = getApplicationContext();
return new ScrollableViewsFactory(
subtasksHelper,
preferences,
diff --git a/app/src/main/java/org/tasks/widget/TasksWidget.kt b/app/src/main/java/org/tasks/widget/TasksWidget.kt
index 2438e2e02..52115b443 100644
--- a/app/src/main/java/org/tasks/widget/TasksWidget.kt
+++ b/app/src/main/java/org/tasks/widget/TasksWidget.kt
@@ -19,7 +19,6 @@ import kotlinx.coroutines.runBlocking
import org.tasks.R
import org.tasks.activities.FilterSelectionActivity
import org.tasks.intents.TaskIntents
-import org.tasks.locale.Locale
import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.Preferences
import org.tasks.themes.ThemeColor
@@ -31,7 +30,6 @@ import javax.inject.Inject
class TasksWidget : AppWidgetProvider() {
@Inject lateinit var preferences: Preferences
@Inject lateinit var defaultFilterProvider: DefaultFilterProvider
- @Inject lateinit var locale: Locale
@Inject @ApplicationContext lateinit var context: Context
override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
@@ -64,7 +62,6 @@ class TasksWidget : AppWidgetProvider() {
val filterId = widgetPreferences.filterId
val color = ThemeColor(context, widgetPreferences.color)
val remoteViews = RemoteViews(context.packageName, R.layout.scrollable_widget)
- remoteViews.setInt(R.id.widget, "setLayoutDirection", locale.directionality)
if (widgetPreferences.showHeader()) {
remoteViews.setViewVisibility(R.id.widget_header, View.VISIBLE)
remoteViews.setViewVisibility(
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index ef579c4b4..e5174dca0 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -29,61 +29,6 @@
- @string/theme_system_default
-
- - af-rZA
- - ar
- - bg-bg
- - bn-rBD
- - ca
- - cs
- - cv
- - da
- - de
- - el
- - en
- - eo
- - es
- - et
- - eu
- - fa
- - fi
- - fr
- - gl
- - hr
- - hu
- - hy
- - ia
- - id
- - it
- - iw
- - ja
- - kn
- - ko
- - krl
- - lt
- - ml
- - nb
- - nl
- - pl
- - pt
- - pt-br
- - ro
- - ru
- - si
- - sk
- - sl-si
- - sr
- - sv
- - ta
- - th
- - tl
- - tr
- - uk
- - ur
- - zh-cn
- - zh-tw
-
-
- @string/no_due_date
- @string/today
diff --git a/app/src/main/res/xml/locales_config.xml b/app/src/main/res/xml/locales_config.xml
new file mode 100644
index 000000000..802636116
--- /dev/null
+++ b/app/src/main/res/xml/locales_config.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/deps_fdroid.txt b/deps_fdroid.txt
index 14b5fee93..ac3300bd1 100644
--- a/deps_fdroid.txt
+++ b/deps_fdroid.txt
@@ -6,16 +6,16 @@
+| | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
+| +--- androidx.databinding:databinding-common:7.2.1
+| +--- androidx.databinding:viewbinding:7.2.1 (*)
-+| \--- androidx.lifecycle:lifecycle-runtime:2.2.0 -> 2.4.1
++| \--- androidx.lifecycle:lifecycle-runtime:2.2.0 -> 2.5.0-rc01
++| +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| +--- androidx.arch.core:core-common:2.1.0
++| | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
+| +--- androidx.arch.core:core-runtime:2.1.0
+| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | \--- androidx.arch.core:core-common:2.1.0
-+| | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| +--- androidx.lifecycle:lifecycle-common:2.4.1
-+| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | \--- androidx.lifecycle:lifecycle-common-java8:2.4.1 (c)
-+| +--- androidx.arch.core:core-common:2.1.0 (*)
-+| \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | \--- androidx.arch.core:core-common:2.1.0 (*)
++| \--- androidx.lifecycle:lifecycle-common:2.5.0-rc01
++| +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| \--- androidx.lifecycle:lifecycle-common-java8:2.5.0-rc01 (c)
++--- androidx.databinding:databinding-adapters:7.2.1
+| +--- androidx.databinding:databinding-runtime:7.2.1 (*)
+| \--- androidx.databinding:databinding-common:7.2.1
@@ -36,29 +36,31 @@
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.6.0 -> 1.6.21
+| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.6.1 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0 -> 1.6.21 (*)
-+| +--- androidx.lifecycle:lifecycle-runtime-ktx:2.2.0 -> 2.4.1
-+| | +--- androidx.lifecycle:lifecycle-runtime:2.4.1 (*)
-+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 1.6.21 (*)
-+| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0 -> 1.6.1 (*)
-+| | \--- androidx.annotation:annotation:1.0.0 -> 1.3.0
++| +--- androidx.lifecycle:lifecycle-runtime-ktx:2.2.0 -> 2.5.0-rc01
++| | +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
++| | +--- androidx.lifecycle:lifecycle-runtime:2.5.0-rc01 (*)
++| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1 (*)
+| +--- androidx.lifecycle:lifecycle-livedata:2.2.0 -> 2.4.1
+| | +--- androidx.arch.core:core-common:2.1.0 (*)
+| | +--- androidx.arch.core:core-runtime:2.1.0 (*)
-+| | \--- androidx.lifecycle:lifecycle-livedata-core:2.4.1
++| | \--- androidx.lifecycle:lifecycle-livedata-core:2.4.1 -> 2.5.0-rc01
+| | +--- androidx.arch.core:core-common:2.1.0 (*)
+| | +--- androidx.arch.core:core-runtime:2.1.0 (*)
-+| | \--- androidx.lifecycle:lifecycle-common:2.4.1 (*)
-+| +--- androidx.lifecycle:lifecycle-process:2.2.0 -> 2.4.0
-+| | +--- androidx.lifecycle:lifecycle-runtime:2.4.0 -> 2.4.1 (*)
-+| | \--- androidx.startup:startup-runtime:1.0.0 -> 1.1.1
-+| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | \--- androidx.tracing:tracing:1.0.0
-+| | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | \--- androidx.lifecycle:lifecycle-common:2.5.0-rc01 (*)
++| +--- androidx.lifecycle:lifecycle-process:2.2.0 -> 2.4.1
++| | +--- androidx.lifecycle:lifecycle-runtime:2.4.1 -> 2.5.0-rc01 (*)
++| | +--- androidx.startup:startup-runtime:1.1.1
++| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | | \--- androidx.tracing:tracing:1.0.0
++| | | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | \--- androidx.annotation:annotation:1.2.0 -> 1.3.0
+| +--- androidx.lifecycle:lifecycle-service:2.2.0
-+| | \--- androidx.lifecycle:lifecycle-runtime:2.2.0 -> 2.4.1 (*)
-+| +--- androidx.lifecycle:lifecycle-viewmodel:2.2.0 -> 2.4.1
++| | \--- androidx.lifecycle:lifecycle-runtime:2.2.0 -> 2.5.0-rc01 (*)
++| +--- androidx.lifecycle:lifecycle-viewmodel:2.2.0 -> 2.5.0-rc01
+| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 1.6.21 (*)
++| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.5.0-rc01 (c)
+| +--- androidx.databinding:databinding-runtime:7.2.1 (*)
+| \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.31 -> 1.6.21 (*)
++--- com.github.tasks:dav4jvm:deb2c9aef8
@@ -76,149 +78,155 @@
+| +--- commons-io:commons-io:2.6
+| +--- org.slf4j:slf4j-jdk14:1.7.30
+| | \--- org.slf4j:slf4j-api:1.7.30
-+| \--- androidx.core:core-ktx:1.3.2 -> 1.8.0-rc02
++| \--- androidx.core:core-ktx:1.3.2 -> 1.9.0-alpha05
+| +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| +--- androidx.core:core:1.8.0-rc02
++| +--- androidx.core:core:1.9.0-alpha05
+| | +--- androidx.annotation:annotation:1.2.0 -> 1.3.0
+| | +--- androidx.annotation:annotation-experimental:1.1.0
+| | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+| | +--- androidx.concurrent:concurrent-futures:1.0.0
+| | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
+| | | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | +--- androidx.lifecycle:lifecycle-runtime:2.3.1 -> 2.4.1 (*)
-+| | \--- androidx.versionedparcelable:versionedparcelable:1.1.1
-+| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | \--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
-+| \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| | +--- androidx.lifecycle:lifecycle-runtime:2.3.1 -> 2.5.0-rc01 (*)
++| | +--- androidx.versionedparcelable:versionedparcelable:1.1.1
++| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | | \--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
++| | \--- androidx.core:core-ktx:1.9.0-alpha05 (c)
++| +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| \--- androidx.core:core:1.9.0-alpha05 (c)
++--- com.github.bitfireAT:cert4android:7814052
+| +--- androidx.databinding:databinding-common:7.2.0 -> 7.2.1
+| +--- androidx.databinding:databinding-runtime:7.2.0 -> 7.2.1 (*)
+| +--- androidx.databinding:databinding-adapters:7.2.0 -> 7.2.1 (*)
+| +--- androidx.databinding:databinding-ktx:7.2.0 -> 7.2.1 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21 (*)
-+| +--- androidx.appcompat:appcompat:1.4.1
-+| | +--- androidx.annotation:annotation:1.3.0
-+| | +--- androidx.core:core:1.7.0 -> 1.8.0-rc02 (*)
-+| | +--- androidx.cursoradapter:cursoradapter:1.0.0
-+| | | \--- androidx.annotation:annotation:1.0.0 -> 1.3.0
-+| | +--- androidx.activity:activity:1.2.4 -> 1.4.0
++| +--- androidx.appcompat:appcompat:1.4.1 -> 1.6.0-alpha05
++| | +--- androidx.activity:activity:1.6.0-alpha05
+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.7.0 -> 1.8.0-rc02 (*)
-+| | | +--- androidx.lifecycle:lifecycle-runtime:2.3.1 -> 2.4.1 (*)
-+| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.4.1 (*)
-+| | | +--- androidx.savedstate:savedstate:1.1.0 -> 1.2.0-rc01
-+| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | | +--- androidx.arch.core:core-common:2.1.0 (*)
-+| | | | +--- androidx.lifecycle:lifecycle-common:2.4.0 -> 2.4.1 (*)
-+| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.20 -> 1.6.21 (*)
-+| | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1
-+| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
-+| | | | +--- androidx.savedstate:savedstate:1.1.0 -> 1.2.0-rc01 (*)
-+| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.3.1 -> 2.4.1 (*)
-+| | | | \--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.4.1 (*)
-+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.31 -> 1.6.21 (*)
+| | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
-+| | | \--- androidx.tracing:tracing:1.0.0 (*)
-+| | +--- androidx.fragment:fragment:1.3.6 -> 1.4.0
-+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | +--- androidx.core:core-ktx:1.2.0 -> 1.8.0-rc02 (*)
-+| | | +--- androidx.collection:collection:1.1.0 (*)
-+| | | +--- androidx.viewpager:viewpager:1.0.0
-+| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
-+| | | | +--- androidx.core:core:1.0.0 -> 1.8.0-rc02 (*)
-+| | | | \--- androidx.customview:customview:1.0.0 -> 1.1.0
-+| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | | +--- androidx.core:core:1.3.0 -> 1.8.0-rc02 (*)
-+| | | | \--- androidx.collection:collection:1.1.0 (*)
-+| | | +--- androidx.loader:loader:1.0.0
++| | | +--- androidx.core:core:1.9.0-alpha05 (*)
++| | | +--- androidx.lifecycle:lifecycle-runtime:2.5.0-rc01 (*)
++| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.5.0-rc01 (*)
++| | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.5.0-rc01
+| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
-+| | | | +--- androidx.core:core:1.0.0 -> 1.8.0-rc02 (*)
-+| | | | +--- androidx.lifecycle:lifecycle-livedata:2.0.0 -> 2.4.1 (*)
-+| | | | \--- androidx.lifecycle:lifecycle-viewmodel:2.0.0 -> 2.4.1 (*)
-+| | | +--- androidx.activity:activity:1.2.4 -> 1.4.0 (*)
-+| | | +--- androidx.lifecycle:lifecycle-livedata-core:2.3.1 -> 2.4.1 (*)
-+| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.4.1 (*)
-+| | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1 (*)
-+| | | +--- androidx.savedstate:savedstate:1.1.0 -> 1.2.0-rc01 (*)
-+| | | +--- androidx.annotation:annotation-experimental:1.0.0 -> 1.1.0
-+| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.5.31 -> 1.6.21 (*)
-+| | +--- androidx.appcompat:appcompat-resources:1.4.1
-+| | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
++| | | | +--- androidx.core:core-ktx:1.2.0 -> 1.9.0-alpha05 (*)
++| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.5.0-rc01 (*)
++| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.5.0-rc01 (*)
++| | | | +--- androidx.savedstate:savedstate:1.2.0-rc01
++| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | | | | +--- androidx.arch.core:core-common:2.1.0 (*)
++| | | | | +--- androidx.lifecycle:lifecycle-common:2.4.0 -> 2.5.0-rc01 (*)
++| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.20 -> 1.6.21 (*)
++| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1 (*)
++| | | +--- androidx.savedstate:savedstate:1.2.0-rc01 (*)
++| | | +--- androidx.tracing:tracing:1.0.0 (*)
++| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| | | \--- androidx.activity:activity-ktx:1.6.0-alpha05 (c)
++| | +--- androidx.annotation:annotation:1.3.0
++| | +--- androidx.appcompat:appcompat-resources:1.6.0-alpha05
+| | | +--- androidx.annotation:annotation:1.2.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.0.1 -> 1.8.0-rc02 (*)
++| | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
++| | | +--- androidx.core:core:1.6.0 -> 1.9.0-alpha05 (*)
+| | | +--- androidx.vectordrawable:vectordrawable:1.1.0
+| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | | +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| | | | +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| | | | \--- androidx.collection:collection:1.1.0 (*)
+| | | \--- androidx.vectordrawable:vectordrawable-animated:1.1.0
+| | | +--- androidx.vectordrawable:vectordrawable:1.1.0 (*)
+| | | +--- androidx.interpolator:interpolator:1.0.0
+| | | | \--- androidx.annotation:annotation:1.0.0 -> 1.3.0
+| | | \--- androidx.collection:collection:1.1.0 (*)
++| | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
++| | +--- androidx.core:core:1.9.0-alpha05 (*)
++| | +--- androidx.cursoradapter:cursoradapter:1.0.0
++| | | \--- androidx.annotation:annotation:1.0.0 -> 1.3.0
+| | +--- androidx.drawerlayout:drawerlayout:1.0.0 -> 1.1.1
+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.2.0 -> 1.8.0-rc02 (*)
-+| | | \--- androidx.customview:customview:1.1.0 (*)
-+| | +--- androidx.savedstate:savedstate:1.1.0 -> 1.2.0-rc01 (*)
-+| | +--- androidx.emoji2:emoji2:1.0.0
-+| | | +--- androidx.collection:collection:1.1.0 (*)
++| | | +--- androidx.core:core:1.2.0 -> 1.9.0-alpha05 (*)
++| | | \--- androidx.customview:customview:1.1.0
++| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | | +--- androidx.core:core:1.3.0 -> 1.9.0-alpha05 (*)
++| | | \--- androidx.collection:collection:1.1.0 (*)
++| | +--- androidx.emoji2:emoji2:1.2.0-alpha04
+| | | +--- androidx.annotation:annotation:1.2.0 -> 1.3.0
-+| | | +--- androidx.lifecycle:lifecycle-process:2.4.0 (*)
-+| | | +--- androidx.core:core:1.3.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.collection:collection:1.1.0 (*)
++| | | +--- androidx.core:core:1.3.0 -> 1.9.0-alpha05 (*)
++| | | +--- androidx.lifecycle:lifecycle-process:2.4.1 (*)
+| | | \--- androidx.startup:startup-runtime:1.0.0 -> 1.1.1 (*)
-+| | +--- androidx.emoji2:emoji2-views-helper:1.0.0
-+| | | +--- androidx.emoji2:emoji2:1.0.0 (*)
++| | +--- androidx.emoji2:emoji2-views-helper:1.2.0-alpha04
+| | | +--- androidx.collection:collection:1.1.0 (*)
-+| | | \--- androidx.core:core:1.3.0 -> 1.8.0-rc02 (*)
-+| | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
-+| | +--- androidx.lifecycle:lifecycle-runtime:2.3.1 -> 2.4.1 (*)
-+| | +--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.4.1 (*)
-+| | \--- androidx.resourceinspection:resourceinspection-annotation:1.0.0
-+| | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | | +--- androidx.core:core:1.3.0 -> 1.9.0-alpha05 (*)
++| | | \--- androidx.emoji2:emoji2:1.2.0-alpha04 (*)
++| | +--- androidx.fragment:fragment:1.3.6 -> 1.4.0
++| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | | +--- androidx.core:core-ktx:1.2.0 -> 1.9.0-alpha05 (*)
++| | | +--- androidx.collection:collection:1.1.0 (*)
++| | | +--- androidx.viewpager:viewpager:1.0.0
++| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
++| | | | +--- androidx.core:core:1.0.0 -> 1.9.0-alpha05 (*)
++| | | | \--- androidx.customview:customview:1.0.0 -> 1.1.0 (*)
++| | | +--- androidx.loader:loader:1.0.0
++| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
++| | | | +--- androidx.core:core:1.0.0 -> 1.9.0-alpha05 (*)
++| | | | +--- androidx.lifecycle:lifecycle-livedata:2.0.0 -> 2.4.1 (*)
++| | | | \--- androidx.lifecycle:lifecycle-viewmodel:2.0.0 -> 2.5.0-rc01 (*)
++| | | +--- androidx.activity:activity:1.2.4 -> 1.6.0-alpha05 (*)
++| | | +--- androidx.lifecycle:lifecycle-livedata-core:2.3.1 -> 2.5.0-rc01 (*)
++| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.5.0-rc01 (*)
++| | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1 -> 2.5.0-rc01 (*)
++| | | +--- androidx.savedstate:savedstate:1.1.0 -> 1.2.0-rc01 (*)
++| | | +--- androidx.annotation:annotation-experimental:1.0.0 -> 1.1.0
++| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.5.31 -> 1.6.21 (*)
++| | +--- androidx.lifecycle:lifecycle-runtime:2.3.1 -> 2.5.0-rc01 (*)
++| | +--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.5.0-rc01 (*)
++| | +--- androidx.resourceinspection:resourceinspection-annotation:1.0.1
++| | | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | \--- androidx.savedstate:savedstate:1.1.0 -> 1.2.0-rc01 (*)
+| +--- androidx.cardview:cardview:1.0.0
+| | \--- androidx.annotation:annotation:1.0.0 -> 1.3.0
+| +--- androidx.lifecycle:lifecycle-extensions:2.2.0
-+| | +--- androidx.lifecycle:lifecycle-runtime:2.2.0 -> 2.4.1 (*)
++| | +--- androidx.lifecycle:lifecycle-runtime:2.2.0 -> 2.5.0-rc01 (*)
+| | +--- androidx.arch.core:core-common:2.1.0 (*)
+| | +--- androidx.arch.core:core-runtime:2.1.0 (*)
+| | +--- androidx.fragment:fragment:1.2.0 -> 1.4.0 (*)
-+| | +--- androidx.lifecycle:lifecycle-common:2.2.0 -> 2.4.1 (*)
++| | +--- androidx.lifecycle:lifecycle-common:2.2.0 -> 2.5.0-rc01 (*)
+| | +--- androidx.lifecycle:lifecycle-livedata:2.2.0 -> 2.4.1 (*)
-+| | +--- androidx.lifecycle:lifecycle-process:2.2.0 -> 2.4.0 (*)
++| | +--- androidx.lifecycle:lifecycle-process:2.2.0 -> 2.4.1 (*)
+| | +--- androidx.lifecycle:lifecycle-service:2.2.0 (*)
-+| | \--- androidx.lifecycle:lifecycle-viewmodel:2.2.0 -> 2.4.1 (*)
++| | \--- androidx.lifecycle:lifecycle-viewmodel:2.2.0 -> 2.5.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-livedata-ktx:2.4.1
+| | +--- androidx.lifecycle:lifecycle-livedata:2.4.1 (*)
+| | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.4.1
-+| | | +--- androidx.lifecycle:lifecycle-livedata-core:2.4.1 (*)
++| | | +--- androidx.lifecycle:lifecycle-livedata-core:2.4.1 -> 2.5.0-rc01 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 1.6.21 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 1.6.21 (*)
+| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0 -> 1.6.1 (*)
-+| +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1
-+| | +--- androidx.lifecycle:lifecycle-viewmodel:2.4.1 (*)
-+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 1.6.21 (*)
-+| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0 -> 1.6.1 (*)
++| +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1 -> 2.5.0-rc01
++| | +--- androidx.lifecycle:lifecycle-viewmodel:2.5.0-rc01 (*)
++| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1 (*)
+| +--- com.google.android.material:material:1.6.0 -> 1.7.0-alpha02
+| | +--- androidx.annotation:annotation:1.2.0 -> 1.3.0
-+| | +--- androidx.appcompat:appcompat:1.4.0 -> 1.4.1 (*)
++| | +--- androidx.appcompat:appcompat:1.4.0 -> 1.6.0-alpha05 (*)
+| | +--- androidx.cardview:cardview:1.0.0 (*)
+| | +--- androidx.coordinatorlayout:coordinatorlayout:1.1.0
+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| | | +--- androidx.customview:customview:1.0.0 -> 1.1.0 (*)
+| | | \--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+| | +--- androidx.constraintlayout:constraintlayout:2.0.1 -> 2.1.2
-+| | | +--- androidx.appcompat:appcompat:1.2.0 -> 1.4.1 (*)
-+| | | +--- androidx.core:core:1.3.2 -> 1.8.0-rc02 (*)
++| | | +--- androidx.appcompat:appcompat:1.2.0 -> 1.6.0-alpha05 (*)
++| | | +--- androidx.core:core:1.3.2 -> 1.9.0-alpha05 (*)
+| | | \--- androidx.constraintlayout:constraintlayout-core:1.0.2
-+| | +--- androidx.core:core:1.6.0 -> 1.8.0-rc02 (*)
++| | +--- androidx.core:core:1.6.0 -> 1.9.0-alpha05 (*)
+| | +--- androidx.drawerlayout:drawerlayout:1.1.1 (*)
+| | +--- androidx.dynamicanimation:dynamicanimation:1.0.0
-+| | | +--- androidx.core:core:1.0.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.0.0 -> 1.9.0-alpha05 (*)
+| | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+| | | \--- androidx.legacy:legacy-support-core-utils:1.0.0
+| | | +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.0.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.0.0 -> 1.9.0-alpha05 (*)
+| | | +--- androidx.documentfile:documentfile:1.0.0
+| | | | \--- androidx.annotation:annotation:1.0.0 -> 1.3.0
+| | | +--- androidx.loader:loader:1.0.0 (*)
@@ -228,22 +236,22 @@
+| | | \--- androidx.annotation:annotation:1.0.0 -> 1.3.0
+| | +--- androidx.annotation:annotation-experimental:1.0.0 -> 1.1.0
+| | +--- androidx.fragment:fragment:1.2.5 -> 1.4.0 (*)
-+| | +--- androidx.lifecycle:lifecycle-runtime:2.0.0 -> 2.4.1 (*)
++| | +--- androidx.lifecycle:lifecycle-runtime:2.0.0 -> 2.5.0-rc01 (*)
+| | +--- androidx.recyclerview:recyclerview:1.0.0 -> 1.1.0
+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| | | +--- androidx.customview:customview:1.0.0 -> 1.1.0 (*)
+| | | \--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+| | +--- androidx.transition:transition:1.2.0
+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.0.1 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.0.1 -> 1.9.0-alpha05 (*)
+| | | \--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+| | +--- androidx.vectordrawable:vectordrawable:1.1.0 (*)
+| | \--- androidx.viewpager2:viewpager2:1.0.0
+| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
+| | +--- androidx.fragment:fragment:1.1.0 -> 1.4.0 (*)
+| | +--- androidx.recyclerview:recyclerview:1.1.0 (*)
-+| | +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| | +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| | \--- androidx.collection:collection:1.1.0 (*)
+| \--- org.conscrypt:conscrypt-android:2.5.2
++--- com.github.tasks.opentasks:opentasks-provider:a1faa1b
@@ -258,12 +266,12 @@
+| +--- com.google.dagger:hilt-core:2.42
+| | +--- com.google.dagger:dagger:2.42 (*)
+| | \--- javax.inject:javax.inject:1
-+| +--- androidx.activity:activity:1.3.1 -> 1.4.0 (*)
++| +--- androidx.activity:activity:1.3.1 -> 1.6.0-alpha05 (*)
+| +--- androidx.annotation:annotation:1.2.0 -> 1.3.0
+| +--- androidx.fragment:fragment:1.3.6 -> 1.4.0 (*)
-+| +--- androidx.lifecycle:lifecycle-common:2.3.1 -> 2.4.1 (*)
-+| +--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.4.1 (*)
-+| +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1 (*)
++| +--- androidx.lifecycle:lifecycle-common:2.3.1 -> 2.5.0-rc01 (*)
++| +--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.5.0-rc01 (*)
++| +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1 -> 2.5.0-rc01 (*)
+| +--- androidx.savedstate:savedstate:1.1.0 -> 1.2.0-rc01 (*)
+| +--- javax.inject:javax.inject:1
+| \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.10 -> 1.6.21 (*)
@@ -276,7 +284,7 @@
+| | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
+| | +--- androidx.lifecycle:lifecycle-livedata:2.1.0 -> 2.4.1 (*)
+| | +--- androidx.startup:startup-runtime:1.0.0 -> 1.1.1 (*)
-+| | +--- androidx.core:core:1.6.0 -> 1.8.0-rc02 (*)
++| | +--- androidx.core:core:1.6.0 -> 1.9.0-alpha05 (*)
+| | +--- androidx.room:room-runtime:2.2.5 -> 2.4.2
+| | | +--- androidx.room:room-common:2.4.2
+| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
@@ -289,42 +297,43 @@
+| | | \--- androidx.annotation:annotation-experimental:1.1.0
+| | +--- androidx.sqlite:sqlite:2.1.0 -> 2.2.0 (*)
+| | +--- androidx.sqlite:sqlite-framework:2.1.0 -> 2.2.0 (*)
-+| | +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| | +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| | \--- androidx.lifecycle:lifecycle-service:2.1.0 -> 2.2.0 (*)
+| \--- com.google.dagger:hilt-android:2.35 -> 2.42 (*)
++--- androidx.fragment:fragment-ktx:1.4.0
+| +--- androidx.fragment:fragment:1.4.0 (*)
-+| +--- androidx.activity:activity-ktx:1.2.3 -> 1.4.0
-+| | +--- androidx.activity:activity:1.4.0 (*)
-+| | +--- androidx.core:core-ktx:1.1.0 -> 1.8.0-rc02 (*)
-+| | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.3.1 -> 2.4.1 (*)
-+| | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1 -> 2.4.1 (*)
-+| | +--- androidx.savedstate:savedstate-ktx:1.1.0 -> 1.2.0-rc01
++| +--- androidx.activity:activity-ktx:1.2.3 -> 1.6.0-alpha05
++| | +--- androidx.activity:activity:1.6.0-alpha05 (*)
++| | +--- androidx.core:core-ktx:1.1.0 -> 1.9.0-alpha05 (*)
++| | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.5.0-rc01 (*)
++| | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0-rc01 (*)
++| | +--- androidx.savedstate:savedstate-ktx:1.2.0-rc01
+| | | +--- androidx.savedstate:savedstate:1.2.0-rc01 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.20 -> 1.6.21 (*)
-+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.5.31 -> 1.6.21 (*)
-+| +--- androidx.core:core-ktx:1.2.0 -> 1.8.0-rc02 (*)
++| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| | \--- androidx.activity:activity:1.6.0-alpha05 (c)
++| +--- androidx.core:core-ktx:1.2.0 -> 1.9.0-alpha05 (*)
+| +--- androidx.collection:collection-ktx:1.1.0
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.20 -> 1.6.21 (*)
+| | \--- androidx.collection:collection:1.1.0 (*)
+| +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.3.1 -> 2.4.1 (*)
-+| +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1 -> 2.4.1 (*)
++| +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1 -> 2.5.0-rc01 (*)
+| +--- androidx.savedstate:savedstate-ktx:1.1.0 -> 1.2.0-rc01 (*)
+| \--- org.jetbrains.kotlin:kotlin-stdlib:1.5.31 -> 1.6.21 (*)
-++--- androidx.lifecycle:lifecycle-runtime-ktx:2.4.1 (*)
-++--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1 (*)
+++--- androidx.lifecycle:lifecycle-runtime-ktx:2.4.1 -> 2.5.0-rc01 (*)
+++--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1 -> 2.5.0-rc01 (*)
++--- androidx.room:room-ktx:2.4.2
+| +--- androidx.room:room-common:2.4.2 (*)
+| +--- androidx.room:room-runtime:2.4.2 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.10 -> 1.6.21 (*)
+| \--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2 -> 1.6.1 (*)
-++--- androidx.appcompat:appcompat:1.4.0 -> 1.4.1 (*)
+++--- androidx.appcompat:appcompat:1.6.0-alpha05 (*)
++--- androidx.paging:paging-runtime:2.1.2
+| +--- androidx.paging:paging-common:2.1.2
+| | +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
+| | \--- androidx.arch.core:core-common:2.0.0 -> 2.1.0 (*)
+| +--- androidx.arch.core:core-runtime:2.0.0 -> 2.1.0 (*)
-+| +--- androidx.lifecycle:lifecycle-runtime:2.0.0 -> 2.4.1 (*)
++| +--- androidx.lifecycle:lifecycle-runtime:2.0.0 -> 2.5.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-livedata:2.0.0 -> 2.4.1 (*)
+| \--- androidx.recyclerview:recyclerview:1.0.0 -> 1.1.0 (*)
++--- io.noties.markwon:core:4.6.2
@@ -355,11 +364,11 @@
++--- androidx.constraintlayout:constraintlayout:2.1.2 (*)
++--- androidx.swiperefreshlayout:swiperefreshlayout:1.1.0
+| +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| \--- androidx.interpolator:interpolator:1.0.0 (*)
++--- androidx.preference:preference:1.1.1
-+| +--- androidx.appcompat:appcompat:1.1.0 -> 1.4.1 (*)
-+| +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| +--- androidx.appcompat:appcompat:1.1.0 -> 1.6.0-alpha05 (*)
++| +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| +--- androidx.fragment:fragment:1.2.4 -> 1.4.0 (*)
+| +--- androidx.recyclerview:recyclerview:1.0.0 -> 1.1.0 (*)
+| +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
@@ -407,21 +416,21 @@
+| \--- com.squareup.okhttp3:logging-interceptor:3.12.1
+| \--- com.squareup.okhttp3:okhttp:3.12.1 -> 4.9.3 (*)
++--- com.github.QuadFlask:colorpicker:0.0.15
-+| \--- androidx.appcompat:appcompat:1.1.0 -> 1.4.1 (*)
++| \--- androidx.appcompat:appcompat:1.1.0 -> 1.6.0-alpha05 (*)
++--- net.openid:appauth:0.8.1
+| +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
+| \--- androidx.browser:browser:1.3.0
+| +--- androidx.collection:collection:1.1.0 (*)
+| +--- androidx.concurrent:concurrent-futures:1.0.0 (*)
+| +--- androidx.interpolator:interpolator:1.0.0 (*)
-+| +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
+| \--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
++--- org.osmdroid:osmdroid-android:6.1.11
++--- androidx.compose.ui:ui:1.2.0-rc01
+| +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
+| +--- androidx.autofill:autofill:1.0.0
-+| | \--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| | \--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+| +--- androidx.compose.runtime:runtime:1.2.0-rc01
+| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
@@ -456,21 +465,21 @@
+| | +--- androidx.compose.ui:ui-graphics:1.2.0-rc01 (*)
+| | +--- androidx.compose.ui:ui-unit:1.2.0-rc01 (*)
+| | +--- androidx.compose.ui:ui-util:1.2.0-rc01 (*)
-+| | +--- androidx.core:core:1.5.0 -> 1.8.0-rc02 (*)
++| | +--- androidx.core:core:1.5.0 -> 1.9.0-alpha05 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21
+| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1 (*)
+| +--- androidx.compose.ui:ui-unit:1.2.0-rc01 (*)
+| +--- androidx.compose.ui:ui-util:1.2.0-rc01 (*)
-+| +--- androidx.core:core:1.5.0 -> 1.8.0-rc02 (*)
++| +--- androidx.core:core:1.5.0 -> 1.9.0-alpha05 (*)
+| +--- androidx.customview:customview-poolingcontainer:1.0.0-rc01
-+| | +--- androidx.core:core-ktx:1.5.0 -> 1.8.0-rc02 (*)
++| | +--- androidx.core:core-ktx:1.5.0 -> 1.9.0-alpha05 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
-+| +--- androidx.lifecycle:lifecycle-common-java8:2.3.0 -> 2.4.1
-+| | +--- androidx.lifecycle:lifecycle-common:2.4.1 (*)
-+| | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| +--- androidx.lifecycle:lifecycle-runtime:2.3.0 -> 2.4.1 (*)
-+| +--- androidx.lifecycle:lifecycle-viewmodel:2.3.0 -> 2.4.1 (*)
++| +--- androidx.lifecycle:lifecycle-common-java8:2.3.0 -> 2.5.0-rc01
++| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | \--- androidx.lifecycle:lifecycle-common:2.5.0-rc01 (*)
++| +--- androidx.lifecycle:lifecycle-runtime:2.3.0 -> 2.5.0-rc01 (*)
++| +--- androidx.lifecycle:lifecycle-viewmodel:2.3.0 -> 2.5.0-rc01 (*)
+| +--- androidx.profileinstaller:profileinstaller:1.2.0-rc01
+| | +--- androidx.annotation:annotation:1.2.0 -> 1.3.0
+| | \--- androidx.startup:startup-runtime:1.1.1 (*)
@@ -498,7 +507,7 @@
+| | | +--- androidx.compose.ui:ui:1.2.0-rc01 (*)
+| | | +--- androidx.compose.ui:ui-unit:1.1.1 -> 1.2.0-rc01 (*)
+| | | +--- androidx.compose.ui:ui-util:1.0.0 -> 1.2.0-rc01 (*)
-+| | | +--- androidx.core:core:1.7.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.7.0 -> 1.9.0-alpha05 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21
+| | +--- androidx.compose.runtime:runtime:1.1.1 -> 1.2.0-rc01 (*)
+| | +--- androidx.compose.ui:ui:1.0.0 -> 1.2.0-rc01 (*)
@@ -531,8 +540,8 @@
+| +--- androidx.compose.ui:ui:1.2.0-rc01 (*)
+| +--- androidx.compose.ui:ui-text:1.2.0-rc01 (*)
+| +--- androidx.compose.ui:ui-util:1.0.0 -> 1.2.0-rc01 (*)
-+| +--- androidx.lifecycle:lifecycle-runtime:2.3.0 -> 2.4.1 (*)
-+| +--- androidx.lifecycle:lifecycle-viewmodel:2.3.0 -> 2.4.1 (*)
++| +--- androidx.lifecycle:lifecycle-runtime:2.3.0 -> 2.5.0-rc01 (*)
++| +--- androidx.lifecycle:lifecycle-viewmodel:2.3.0 -> 2.5.0-rc01 (*)
+| +--- androidx.savedstate:savedstate:1.1.0 -> 1.2.0-rc01 (*)
+| \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21
++--- androidx.compose.runtime:runtime-livedata:1.2.0-rc01
@@ -541,8 +550,8 @@
+| +--- androidx.lifecycle:lifecycle-livedata:2.2.0 -> 2.4.1 (*)
+| \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++--- com.google.android.material:compose-theme-adapter:1.1.11
-+| +--- androidx.appcompat:appcompat:1.4.1 (*)
-+| +--- androidx.core:core-ktx:1.8.0-rc02 (*)
++| +--- androidx.appcompat:appcompat:1.4.1 -> 1.6.0-alpha05 (*)
++| +--- androidx.core:core-ktx:1.8.0-rc02 -> 1.9.0-alpha05 (*)
+| +--- androidx.compose.runtime:runtime:1.2.0-beta03 -> 1.2.0-rc01 (*)
+| +--- androidx.compose.material:material:1.2.0-beta03 -> 1.2.0-rc01 (*)
+| +--- com.google.android.material:material:1.7.0-alpha02 (*)
@@ -550,7 +559,7 @@
++--- androidx.activity:activity-compose:1.4.0
+| +--- androidx.compose.runtime:runtime:1.0.1 -> 1.2.0-rc01 (*)
+| +--- androidx.compose.runtime:runtime-saveable:1.0.1 -> 1.2.0-rc01 (*)
-+| +--- androidx.activity:activity-ktx:1.4.0 (*)
++| +--- androidx.activity:activity-ktx:1.4.0 -> 1.6.0-alpha05 (*)
+| +--- androidx.compose.ui:ui:1.0.1 -> 1.2.0-rc01 (*)
+| \--- org.jetbrains.kotlin:kotlin-stdlib:1.5.31 -> 1.6.21 (*)
++--- androidx.compose.material:material-icons-extended:1.2.0-rc01
diff --git a/deps_googleplay.txt b/deps_googleplay.txt
index 8af0c2943..f2acf389e 100644
--- a/deps_googleplay.txt
+++ b/deps_googleplay.txt
@@ -6,16 +6,16 @@
+| | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
+| +--- androidx.databinding:databinding-common:7.2.1
+| +--- androidx.databinding:viewbinding:7.2.1 (*)
-+| \--- androidx.lifecycle:lifecycle-runtime:2.2.0 -> 2.4.1
++| \--- androidx.lifecycle:lifecycle-runtime:2.2.0 -> 2.5.0-rc01
++| +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| +--- androidx.arch.core:core-common:2.1.0
++| | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
+| +--- androidx.arch.core:core-runtime:2.1.0
+| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | \--- androidx.arch.core:core-common:2.1.0
-+| | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| +--- androidx.lifecycle:lifecycle-common:2.4.1
-+| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | \--- androidx.lifecycle:lifecycle-common-java8:2.4.1 (c)
-+| +--- androidx.arch.core:core-common:2.1.0 (*)
-+| \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | \--- androidx.arch.core:core-common:2.1.0 (*)
++| \--- androidx.lifecycle:lifecycle-common:2.5.0-rc01
++| +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| \--- androidx.lifecycle:lifecycle-common-java8:2.5.0-rc01 (c)
++--- androidx.databinding:databinding-adapters:7.2.1
+| +--- androidx.databinding:databinding-runtime:7.2.1 (*)
+| \--- androidx.databinding:databinding-common:7.2.1
@@ -36,29 +36,31 @@
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.6.0 -> 1.6.21
+| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.6.1 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0 -> 1.6.21 (*)
-+| +--- androidx.lifecycle:lifecycle-runtime-ktx:2.2.0 -> 2.4.1
-+| | +--- androidx.lifecycle:lifecycle-runtime:2.4.1 (*)
-+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 1.6.21 (*)
-+| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0 -> 1.6.1 (*)
-+| | \--- androidx.annotation:annotation:1.0.0 -> 1.3.0
++| +--- androidx.lifecycle:lifecycle-runtime-ktx:2.2.0 -> 2.5.0-rc01
++| | +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
++| | +--- androidx.lifecycle:lifecycle-runtime:2.5.0-rc01 (*)
++| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1 (*)
+| +--- androidx.lifecycle:lifecycle-livedata:2.2.0 -> 2.4.1
+| | +--- androidx.arch.core:core-common:2.1.0 (*)
+| | +--- androidx.arch.core:core-runtime:2.1.0 (*)
-+| | \--- androidx.lifecycle:lifecycle-livedata-core:2.4.1
++| | \--- androidx.lifecycle:lifecycle-livedata-core:2.4.1 -> 2.5.0-rc01
+| | +--- androidx.arch.core:core-common:2.1.0 (*)
+| | +--- androidx.arch.core:core-runtime:2.1.0 (*)
-+| | \--- androidx.lifecycle:lifecycle-common:2.4.1 (*)
-+| +--- androidx.lifecycle:lifecycle-process:2.2.0 -> 2.4.0
-+| | +--- androidx.lifecycle:lifecycle-runtime:2.4.0 -> 2.4.1 (*)
-+| | \--- androidx.startup:startup-runtime:1.0.0 -> 1.1.1
-+| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | \--- androidx.tracing:tracing:1.0.0
-+| | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | \--- androidx.lifecycle:lifecycle-common:2.5.0-rc01 (*)
++| +--- androidx.lifecycle:lifecycle-process:2.2.0 -> 2.4.1
++| | +--- androidx.lifecycle:lifecycle-runtime:2.4.1 -> 2.5.0-rc01 (*)
++| | +--- androidx.startup:startup-runtime:1.1.1
++| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | | \--- androidx.tracing:tracing:1.0.0
++| | | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | \--- androidx.annotation:annotation:1.2.0 -> 1.3.0
+| +--- androidx.lifecycle:lifecycle-service:2.2.0
-+| | \--- androidx.lifecycle:lifecycle-runtime:2.2.0 -> 2.4.1 (*)
-+| +--- androidx.lifecycle:lifecycle-viewmodel:2.2.0 -> 2.4.1
++| | \--- androidx.lifecycle:lifecycle-runtime:2.2.0 -> 2.5.0-rc01 (*)
++| +--- androidx.lifecycle:lifecycle-viewmodel:2.2.0 -> 2.5.0-rc01
+| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 1.6.21 (*)
++| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.5.0-rc01 (c)
+| +--- androidx.databinding:databinding-runtime:7.2.1 (*)
+| \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.31 -> 1.6.21 (*)
++--- com.google.firebase:firebase-crashlytics:18.2.11
@@ -84,57 +86,63 @@
+| +--- com.google.android.gms:play-services-tasks:18.0.1
+| | \--- com.google.android.gms:play-services-basement:18.0.0
+| | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
-+| | +--- androidx.core:core:1.2.0 -> 1.8.0-rc02
++| | +--- androidx.core:core:1.2.0 -> 1.9.0-alpha05
+| | | +--- androidx.annotation:annotation:1.2.0 -> 1.3.0
+| | | +--- androidx.annotation:annotation-experimental:1.1.0
+| | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+| | | +--- androidx.concurrent:concurrent-futures:1.0.0
+| | | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
+| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | +--- androidx.lifecycle:lifecycle-runtime:2.3.1 -> 2.4.1 (*)
-+| | | \--- androidx.versionedparcelable:versionedparcelable:1.1.1
-+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | \--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
++| | | +--- androidx.lifecycle:lifecycle-runtime:2.3.1 -> 2.5.0-rc01 (*)
++| | | +--- androidx.versionedparcelable:versionedparcelable:1.1.1
++| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | | | \--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
++| | | \--- androidx.core:core-ktx:1.9.0-alpha05 (c)
+| | \--- androidx.fragment:fragment:1.0.0 -> 1.4.0
+| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | +--- androidx.core:core-ktx:1.2.0 -> 1.8.0-rc02
++| | +--- androidx.core:core-ktx:1.2.0 -> 1.9.0-alpha05
+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.8.0-rc02 (*)
-+| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| | | +--- androidx.core:core:1.9.0-alpha05 (*)
++| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| | | \--- androidx.core:core:1.9.0-alpha05 (c)
+| | +--- androidx.collection:collection:1.1.0 (*)
+| | +--- androidx.viewpager:viewpager:1.0.0
+| | | +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.0.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.0.0 -> 1.9.0-alpha05 (*)
+| | | \--- androidx.customview:customview:1.0.0 -> 1.1.0
+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.3.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.3.0 -> 1.9.0-alpha05 (*)
+| | | \--- androidx.collection:collection:1.1.0 (*)
+| | +--- androidx.loader:loader:1.0.0
+| | | +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.0.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.0.0 -> 1.9.0-alpha05 (*)
+| | | +--- androidx.lifecycle:lifecycle-livedata:2.0.0 -> 2.4.1 (*)
-+| | | \--- androidx.lifecycle:lifecycle-viewmodel:2.0.0 -> 2.4.1 (*)
-+| | +--- androidx.activity:activity:1.2.4 -> 1.4.0
++| | | \--- androidx.lifecycle:lifecycle-viewmodel:2.0.0 -> 2.5.0-rc01 (*)
++| | +--- androidx.activity:activity:1.2.4 -> 1.6.0-alpha05
+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.7.0 -> 1.8.0-rc02 (*)
-+| | | +--- androidx.lifecycle:lifecycle-runtime:2.3.1 -> 2.4.1 (*)
-+| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.4.1 (*)
-+| | | +--- androidx.savedstate:savedstate:1.1.0 -> 1.2.0-rc01
-+| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | | +--- androidx.arch.core:core-common:2.1.0 (*)
-+| | | | +--- androidx.lifecycle:lifecycle-common:2.4.0 -> 2.4.1 (*)
-+| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.20 -> 1.6.21 (*)
-+| | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1
-+| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
-+| | | | +--- androidx.savedstate:savedstate:1.1.0 -> 1.2.0-rc01 (*)
-+| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.3.1 -> 2.4.1 (*)
-+| | | | \--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.4.1 (*)
-+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.31 -> 1.6.21 (*)
+| | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
-+| | | \--- androidx.tracing:tracing:1.0.0 (*)
-+| | +--- androidx.lifecycle:lifecycle-livedata-core:2.3.1 -> 2.4.1 (*)
-+| | +--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.4.1 (*)
-+| | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1 (*)
++| | | +--- androidx.core:core:1.9.0-alpha05 (*)
++| | | +--- androidx.lifecycle:lifecycle-runtime:2.5.0-rc01 (*)
++| | | +--- androidx.lifecycle:lifecycle-viewmodel:2.5.0-rc01 (*)
++| | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.5.0-rc01
++| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
++| | | | +--- androidx.core:core-ktx:1.2.0 -> 1.9.0-alpha05 (*)
++| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.5.0-rc01 (*)
++| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.5.0-rc01 (*)
++| | | | +--- androidx.savedstate:savedstate:1.2.0-rc01
++| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | | | | +--- androidx.arch.core:core-common:2.1.0 (*)
++| | | | | +--- androidx.lifecycle:lifecycle-common:2.4.0 -> 2.5.0-rc01 (*)
++| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.20 -> 1.6.21 (*)
++| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| | | | \--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1 (*)
++| | | +--- androidx.savedstate:savedstate:1.2.0-rc01 (*)
++| | | +--- androidx.tracing:tracing:1.0.0 (*)
++| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| | | \--- androidx.activity:activity-ktx:1.6.0-alpha05 (c)
++| | +--- androidx.lifecycle:lifecycle-livedata-core:2.3.1 -> 2.5.0-rc01 (*)
++| | +--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.5.0-rc01 (*)
++| | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1 -> 2.5.0-rc01 (*)
+| | +--- androidx.savedstate:savedstate:1.1.0 -> 1.2.0-rc01 (*)
+| | +--- androidx.annotation:annotation-experimental:1.0.0 -> 1.1.0
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.5.31 -> 1.6.21 (*)
@@ -164,7 +172,7 @@
+| | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+| | +--- androidx.legacy:legacy-support-core-utils:1.0.0
+| | | +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.0.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.0.0 -> 1.9.0-alpha05 (*)
+| | | +--- androidx.documentfile:documentfile:1.0.0
+| | | | \--- androidx.annotation:annotation:1.0.0 -> 1.3.0
+| | | +--- androidx.loader:loader:1.0.0 (*)
@@ -177,7 +185,7 @@
+| | | \--- com.google.android.gms:play-services-basement:18.0.0 (*)
+| | +--- com.google.android.gms:play-services-measurement-impl:20.1.0
+| | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
-+| | | +--- androidx.core:core:1.0.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.0.0 -> 1.9.0-alpha05 (*)
+| | | +--- com.google.android.gms:play-services-basement:18.0.0 (*)
+| | | +--- com.google.android.gms:play-services-measurement-base:20.1.0 (*)
+| | | \--- com.google.android.gms:play-services-stats:17.0.2
@@ -229,7 +237,7 @@
++--- com.google.android.gms:play-services-location:19.0.1
+| +--- com.google.android.gms:play-services-base:18.0.1
+| | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
-+| | +--- androidx.core:core:1.2.0 -> 1.8.0-rc02 (*)
++| | +--- androidx.core:core:1.2.0 -> 1.9.0-alpha05 (*)
+| | +--- androidx.fragment:fragment:1.0.0 -> 1.4.0 (*)
+| | +--- com.google.android.gms:play-services-basement:18.0.0 (*)
+| | \--- com.google.android.gms:play-services-tasks:18.0.1 (*)
@@ -250,49 +258,49 @@
+| +--- com.google.android.play:core:1.8.0 -> 1.10.3
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72 -> 1.6.21 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.6 -> 1.6.1 (*)
-+| +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| \--- androidx.fragment:fragment:1.1.0 -> 1.4.0 (*)
++--- com.google.android.gms:play-services-oss-licenses:17.0.0
-+| +--- androidx.appcompat:appcompat:1.0.0 -> 1.4.1
++| +--- androidx.appcompat:appcompat:1.0.0 -> 1.6.0-alpha05
++| | +--- androidx.activity:activity:1.6.0-alpha05 (*)
+| | +--- androidx.annotation:annotation:1.3.0
-+| | +--- androidx.core:core:1.7.0 -> 1.8.0-rc02 (*)
-+| | +--- androidx.cursoradapter:cursoradapter:1.0.0
-+| | | \--- androidx.annotation:annotation:1.0.0 -> 1.3.0
-+| | +--- androidx.activity:activity:1.2.4 -> 1.4.0 (*)
-+| | +--- androidx.fragment:fragment:1.3.6 -> 1.4.0 (*)
-+| | +--- androidx.appcompat:appcompat-resources:1.4.1
-+| | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
++| | +--- androidx.appcompat:appcompat-resources:1.6.0-alpha05
+| | | +--- androidx.annotation:annotation:1.2.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.0.1 -> 1.8.0-rc02 (*)
++| | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
++| | | +--- androidx.core:core:1.6.0 -> 1.9.0-alpha05 (*)
+| | | +--- androidx.vectordrawable:vectordrawable:1.1.0
+| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | | +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| | | | +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| | | | \--- androidx.collection:collection:1.1.0 (*)
+| | | \--- androidx.vectordrawable:vectordrawable-animated:1.1.0
+| | | +--- androidx.vectordrawable:vectordrawable:1.1.0 (*)
+| | | +--- androidx.interpolator:interpolator:1.0.0
+| | | | \--- androidx.annotation:annotation:1.0.0 -> 1.3.0
+| | | \--- androidx.collection:collection:1.1.0 (*)
++| | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
++| | +--- androidx.core:core:1.9.0-alpha05 (*)
++| | +--- androidx.cursoradapter:cursoradapter:1.0.0
++| | | \--- androidx.annotation:annotation:1.0.0 -> 1.3.0
+| | +--- androidx.drawerlayout:drawerlayout:1.0.0 -> 1.1.1
+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.2.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.2.0 -> 1.9.0-alpha05 (*)
+| | | \--- androidx.customview:customview:1.1.0 (*)
-+| | +--- androidx.savedstate:savedstate:1.1.0 -> 1.2.0-rc01 (*)
-+| | +--- androidx.emoji2:emoji2:1.0.0
-+| | | +--- androidx.collection:collection:1.1.0 (*)
++| | +--- androidx.emoji2:emoji2:1.2.0-alpha04
+| | | +--- androidx.annotation:annotation:1.2.0 -> 1.3.0
-+| | | +--- androidx.lifecycle:lifecycle-process:2.4.0 (*)
-+| | | +--- androidx.core:core:1.3.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.collection:collection:1.1.0 (*)
++| | | +--- androidx.core:core:1.3.0 -> 1.9.0-alpha05 (*)
++| | | +--- androidx.lifecycle:lifecycle-process:2.4.1 (*)
+| | | \--- androidx.startup:startup-runtime:1.0.0 -> 1.1.1 (*)
-+| | +--- androidx.emoji2:emoji2-views-helper:1.0.0
-+| | | +--- androidx.emoji2:emoji2:1.0.0 (*)
++| | +--- androidx.emoji2:emoji2-views-helper:1.2.0-alpha04
+| | | +--- androidx.collection:collection:1.1.0 (*)
-+| | | \--- androidx.core:core:1.3.0 -> 1.8.0-rc02 (*)
-+| | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
-+| | +--- androidx.lifecycle:lifecycle-runtime:2.3.1 -> 2.4.1 (*)
-+| | +--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.4.1 (*)
-+| | \--- androidx.resourceinspection:resourceinspection-annotation:1.0.0
-+| | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | | +--- androidx.core:core:1.3.0 -> 1.9.0-alpha05 (*)
++| | | \--- androidx.emoji2:emoji2:1.2.0-alpha04 (*)
++| | +--- androidx.fragment:fragment:1.3.6 -> 1.4.0 (*)
++| | +--- androidx.lifecycle:lifecycle-runtime:2.3.1 -> 2.5.0-rc01 (*)
++| | +--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.5.0-rc01 (*)
++| | +--- androidx.resourceinspection:resourceinspection-annotation:1.0.1
++| | | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | \--- androidx.savedstate:savedstate:1.1.0 -> 1.2.0-rc01 (*)
+| +--- androidx.loader:loader:1.0.0 (*)
+| +--- com.google.android.gms:play-services-base:17.0.0 -> 18.0.1 (*)
+| +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.0.0 (*)
@@ -312,74 +320,74 @@
+| +--- commons-io:commons-io:2.6
+| +--- org.slf4j:slf4j-jdk14:1.7.30
+| | \--- org.slf4j:slf4j-api:1.7.30
-+| \--- androidx.core:core-ktx:1.3.2 -> 1.8.0-rc02 (*)
++| \--- androidx.core:core-ktx:1.3.2 -> 1.9.0-alpha05 (*)
++--- com.github.bitfireAT:cert4android:7814052
+| +--- androidx.databinding:databinding-common:7.2.0 -> 7.2.1
+| +--- androidx.databinding:databinding-runtime:7.2.0 -> 7.2.1 (*)
+| +--- androidx.databinding:databinding-adapters:7.2.0 -> 7.2.1 (*)
+| +--- androidx.databinding:databinding-ktx:7.2.0 -> 7.2.1 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21 (*)
-+| +--- androidx.appcompat:appcompat:1.4.1 (*)
++| +--- androidx.appcompat:appcompat:1.4.1 -> 1.6.0-alpha05 (*)
+| +--- androidx.cardview:cardview:1.0.0
+| | \--- androidx.annotation:annotation:1.0.0 -> 1.3.0
+| +--- androidx.lifecycle:lifecycle-extensions:2.2.0
-+| | +--- androidx.lifecycle:lifecycle-runtime:2.2.0 -> 2.4.1 (*)
++| | +--- androidx.lifecycle:lifecycle-runtime:2.2.0 -> 2.5.0-rc01 (*)
+| | +--- androidx.arch.core:core-common:2.1.0 (*)
+| | +--- androidx.arch.core:core-runtime:2.1.0 (*)
+| | +--- androidx.fragment:fragment:1.2.0 -> 1.4.0 (*)
-+| | +--- androidx.lifecycle:lifecycle-common:2.2.0 -> 2.4.1 (*)
++| | +--- androidx.lifecycle:lifecycle-common:2.2.0 -> 2.5.0-rc01 (*)
+| | +--- androidx.lifecycle:lifecycle-livedata:2.2.0 -> 2.4.1 (*)
-+| | +--- androidx.lifecycle:lifecycle-process:2.2.0 -> 2.4.0 (*)
++| | +--- androidx.lifecycle:lifecycle-process:2.2.0 -> 2.4.1 (*)
+| | +--- androidx.lifecycle:lifecycle-service:2.2.0 (*)
-+| | \--- androidx.lifecycle:lifecycle-viewmodel:2.2.0 -> 2.4.1 (*)
++| | \--- androidx.lifecycle:lifecycle-viewmodel:2.2.0 -> 2.5.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-livedata-ktx:2.4.1
+| | +--- androidx.lifecycle:lifecycle-livedata:2.4.1 (*)
+| | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.4.1
-+| | | +--- androidx.lifecycle:lifecycle-livedata-core:2.4.1 (*)
++| | | +--- androidx.lifecycle:lifecycle-livedata-core:2.4.1 -> 2.5.0-rc01 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 1.6.21 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 1.6.21 (*)
+| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0 -> 1.6.1 (*)
-+| +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1
-+| | +--- androidx.lifecycle:lifecycle-viewmodel:2.4.1 (*)
-+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 1.6.21 (*)
-+| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0 -> 1.6.1 (*)
++| +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1 -> 2.5.0-rc01
++| | +--- androidx.lifecycle:lifecycle-viewmodel:2.5.0-rc01 (*)
++| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1 (*)
+| +--- com.google.android.material:material:1.6.0 -> 1.7.0-alpha02
+| | +--- androidx.annotation:annotation:1.2.0 -> 1.3.0
-+| | +--- androidx.appcompat:appcompat:1.4.0 -> 1.4.1 (*)
++| | +--- androidx.appcompat:appcompat:1.4.0 -> 1.6.0-alpha05 (*)
+| | +--- androidx.cardview:cardview:1.0.0 (*)
+| | +--- androidx.coordinatorlayout:coordinatorlayout:1.1.0
+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| | | +--- androidx.customview:customview:1.0.0 -> 1.1.0 (*)
+| | | \--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+| | +--- androidx.constraintlayout:constraintlayout:2.0.1 -> 2.1.2
-+| | | +--- androidx.appcompat:appcompat:1.2.0 -> 1.4.1 (*)
-+| | | +--- androidx.core:core:1.3.2 -> 1.8.0-rc02 (*)
++| | | +--- androidx.appcompat:appcompat:1.2.0 -> 1.6.0-alpha05 (*)
++| | | +--- androidx.core:core:1.3.2 -> 1.9.0-alpha05 (*)
+| | | \--- androidx.constraintlayout:constraintlayout-core:1.0.2
-+| | +--- androidx.core:core:1.6.0 -> 1.8.0-rc02 (*)
++| | +--- androidx.core:core:1.6.0 -> 1.9.0-alpha05 (*)
+| | +--- androidx.drawerlayout:drawerlayout:1.1.1 (*)
+| | +--- androidx.dynamicanimation:dynamicanimation:1.0.0
-+| | | +--- androidx.core:core:1.0.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.0.0 -> 1.9.0-alpha05 (*)
+| | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+| | | \--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
+| | +--- androidx.annotation:annotation-experimental:1.0.0 -> 1.1.0
+| | +--- androidx.fragment:fragment:1.2.5 -> 1.4.0 (*)
-+| | +--- androidx.lifecycle:lifecycle-runtime:2.0.0 -> 2.4.1 (*)
++| | +--- androidx.lifecycle:lifecycle-runtime:2.0.0 -> 2.5.0-rc01 (*)
+| | +--- androidx.recyclerview:recyclerview:1.0.0 -> 1.1.0
+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| | | +--- androidx.customview:customview:1.0.0 -> 1.1.0 (*)
+| | | \--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+| | +--- androidx.transition:transition:1.2.0
+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| | | +--- androidx.core:core:1.0.1 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.0.1 -> 1.9.0-alpha05 (*)
+| | | \--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+| | +--- androidx.vectordrawable:vectordrawable:1.1.0 (*)
+| | \--- androidx.viewpager2:viewpager2:1.0.0
+| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
+| | +--- androidx.fragment:fragment:1.1.0 -> 1.4.0 (*)
+| | +--- androidx.recyclerview:recyclerview:1.1.0 (*)
-+| | +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| | +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| | \--- androidx.collection:collection:1.1.0 (*)
+| \--- org.conscrypt:conscrypt-android:2.5.2
++--- com.github.tasks.opentasks:opentasks-provider:a1faa1b
@@ -394,12 +402,12 @@
+| +--- com.google.dagger:hilt-core:2.42
+| | +--- com.google.dagger:dagger:2.42 (*)
+| | \--- javax.inject:javax.inject:1
-+| +--- androidx.activity:activity:1.3.1 -> 1.4.0 (*)
++| +--- androidx.activity:activity:1.3.1 -> 1.6.0-alpha05 (*)
+| +--- androidx.annotation:annotation:1.2.0 -> 1.3.0
+| +--- androidx.fragment:fragment:1.3.6 -> 1.4.0 (*)
-+| +--- androidx.lifecycle:lifecycle-common:2.3.1 -> 2.4.1 (*)
-+| +--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.4.1 (*)
-+| +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1 (*)
++| +--- androidx.lifecycle:lifecycle-common:2.3.1 -> 2.5.0-rc01 (*)
++| +--- androidx.lifecycle:lifecycle-viewmodel:2.3.1 -> 2.5.0-rc01 (*)
++| +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1 -> 2.5.0-rc01 (*)
+| +--- androidx.savedstate:savedstate:1.1.0 -> 1.2.0-rc01 (*)
+| +--- javax.inject:javax.inject:1
+| \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.10 -> 1.6.21 (*)
@@ -412,7 +420,7 @@
+| | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
+| | +--- androidx.lifecycle:lifecycle-livedata:2.1.0 -> 2.4.1 (*)
+| | +--- androidx.startup:startup-runtime:1.0.0 -> 1.1.1 (*)
-+| | +--- androidx.core:core:1.6.0 -> 1.8.0-rc02 (*)
++| | +--- androidx.core:core:1.6.0 -> 1.9.0-alpha05 (*)
+| | +--- androidx.room:room-runtime:2.2.5 -> 2.4.2
+| | | +--- androidx.room:room-common:2.4.2
+| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
@@ -425,42 +433,43 @@
+| | | \--- androidx.annotation:annotation-experimental:1.1.0
+| | +--- androidx.sqlite:sqlite:2.1.0 -> 2.2.0 (*)
+| | +--- androidx.sqlite:sqlite-framework:2.1.0 -> 2.2.0 (*)
-+| | +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| | +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| | \--- androidx.lifecycle:lifecycle-service:2.1.0 -> 2.2.0 (*)
+| \--- com.google.dagger:hilt-android:2.35 -> 2.42 (*)
++--- androidx.fragment:fragment-ktx:1.4.0
+| +--- androidx.fragment:fragment:1.4.0 (*)
-+| +--- androidx.activity:activity-ktx:1.2.3 -> 1.4.0
-+| | +--- androidx.activity:activity:1.4.0 (*)
-+| | +--- androidx.core:core-ktx:1.1.0 -> 1.8.0-rc02 (*)
-+| | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.3.1 -> 2.4.1 (*)
-+| | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1 -> 2.4.1 (*)
-+| | +--- androidx.savedstate:savedstate-ktx:1.1.0 -> 1.2.0-rc01
++| +--- androidx.activity:activity-ktx:1.2.3 -> 1.6.0-alpha05
++| | +--- androidx.activity:activity:1.6.0-alpha05 (*)
++| | +--- androidx.core:core-ktx:1.1.0 -> 1.9.0-alpha05 (*)
++| | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.5.0-rc01 (*)
++| | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0-rc01 (*)
++| | +--- androidx.savedstate:savedstate-ktx:1.2.0-rc01
+| | | +--- androidx.savedstate:savedstate:1.2.0-rc01 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.20 -> 1.6.21 (*)
-+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.5.31 -> 1.6.21 (*)
-+| +--- androidx.core:core-ktx:1.2.0 -> 1.8.0-rc02 (*)
++| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++| | \--- androidx.activity:activity:1.6.0-alpha05 (c)
++| +--- androidx.core:core-ktx:1.2.0 -> 1.9.0-alpha05 (*)
+| +--- androidx.collection:collection-ktx:1.1.0
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.20 -> 1.6.21 (*)
+| | \--- androidx.collection:collection:1.1.0 (*)
+| +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.3.1 -> 2.4.1 (*)
-+| +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1 -> 2.4.1 (*)
++| +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1 -> 2.5.0-rc01 (*)
+| +--- androidx.savedstate:savedstate-ktx:1.1.0 -> 1.2.0-rc01 (*)
+| \--- org.jetbrains.kotlin:kotlin-stdlib:1.5.31 -> 1.6.21 (*)
-++--- androidx.lifecycle:lifecycle-runtime-ktx:2.4.1 (*)
-++--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1 (*)
+++--- androidx.lifecycle:lifecycle-runtime-ktx:2.4.1 -> 2.5.0-rc01 (*)
+++--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1 -> 2.5.0-rc01 (*)
++--- androidx.room:room-ktx:2.4.2
+| +--- androidx.room:room-common:2.4.2 (*)
+| +--- androidx.room:room-runtime:2.4.2 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.10 -> 1.6.21 (*)
+| \--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2 -> 1.6.1 (*)
-++--- androidx.appcompat:appcompat:1.4.0 -> 1.4.1 (*)
+++--- androidx.appcompat:appcompat:1.6.0-alpha05 (*)
++--- androidx.paging:paging-runtime:2.1.2
+| +--- androidx.paging:paging-common:2.1.2
+| | +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
+| | \--- androidx.arch.core:core-common:2.0.0 -> 2.1.0 (*)
+| +--- androidx.arch.core:core-runtime:2.0.0 -> 2.1.0 (*)
-+| +--- androidx.lifecycle:lifecycle-runtime:2.0.0 -> 2.4.1 (*)
++| +--- androidx.lifecycle:lifecycle-runtime:2.0.0 -> 2.5.0-rc01 (*)
+| +--- androidx.lifecycle:lifecycle-livedata:2.0.0 -> 2.4.1 (*)
+| \--- androidx.recyclerview:recyclerview:1.0.0 -> 1.1.0 (*)
++--- io.noties.markwon:core:4.6.2
@@ -491,11 +500,11 @@
++--- androidx.constraintlayout:constraintlayout:2.1.2 (*)
++--- androidx.swiperefreshlayout:swiperefreshlayout:1.1.0
+| +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| \--- androidx.interpolator:interpolator:1.0.0 (*)
++--- androidx.preference:preference:1.1.1
-+| +--- androidx.appcompat:appcompat:1.1.0 -> 1.4.1 (*)
-+| +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| +--- androidx.appcompat:appcompat:1.1.0 -> 1.6.0-alpha05 (*)
++| +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| +--- androidx.fragment:fragment:1.2.4 -> 1.4.0 (*)
+| +--- androidx.recyclerview:recyclerview:1.0.0 -> 1.1.0 (*)
+| +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
@@ -543,21 +552,21 @@
+| \--- com.squareup.okhttp3:logging-interceptor:3.12.1
+| \--- com.squareup.okhttp3:okhttp:3.12.1 -> 4.9.3 (*)
++--- com.github.QuadFlask:colorpicker:0.0.15
-+| \--- androidx.appcompat:appcompat:1.1.0 -> 1.4.1 (*)
++| \--- androidx.appcompat:appcompat:1.1.0 -> 1.6.0-alpha05 (*)
++--- net.openid:appauth:0.8.1
+| +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
+| \--- androidx.browser:browser:1.3.0
+| +--- androidx.collection:collection:1.1.0 (*)
+| +--- androidx.concurrent:concurrent-futures:1.0.0 (*)
+| +--- androidx.interpolator:interpolator:1.0.0 (*)
-+| +--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| +--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
+| \--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
++--- org.osmdroid:osmdroid-android:6.1.11
++--- androidx.compose.ui:ui:1.2.0-rc01
+| +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
+| +--- androidx.autofill:autofill:1.0.0
-+| | \--- androidx.core:core:1.1.0 -> 1.8.0-rc02 (*)
++| | \--- androidx.core:core:1.1.0 -> 1.9.0-alpha05 (*)
+| +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+| +--- androidx.compose.runtime:runtime:1.2.0-rc01
+| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
@@ -592,21 +601,21 @@
+| | +--- androidx.compose.ui:ui-graphics:1.2.0-rc01 (*)
+| | +--- androidx.compose.ui:ui-unit:1.2.0-rc01 (*)
+| | +--- androidx.compose.ui:ui-util:1.2.0-rc01 (*)
-+| | +--- androidx.core:core:1.5.0 -> 1.8.0-rc02 (*)
++| | +--- androidx.core:core:1.5.0 -> 1.9.0-alpha05 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21
+| | \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1 (*)
+| +--- androidx.compose.ui:ui-unit:1.2.0-rc01 (*)
+| +--- androidx.compose.ui:ui-util:1.2.0-rc01 (*)
-+| +--- androidx.core:core:1.5.0 -> 1.8.0-rc02 (*)
++| +--- androidx.core:core:1.5.0 -> 1.9.0-alpha05 (*)
+| +--- androidx.customview:customview-poolingcontainer:1.0.0-rc01
-+| | +--- androidx.core:core-ktx:1.5.0 -> 1.8.0-rc02 (*)
++| | +--- androidx.core:core-ktx:1.5.0 -> 1.9.0-alpha05 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
-+| +--- androidx.lifecycle:lifecycle-common-java8:2.3.0 -> 2.4.1
-+| | +--- androidx.lifecycle:lifecycle-common:2.4.1 (*)
-+| | \--- androidx.annotation:annotation:1.1.0 -> 1.3.0
-+| +--- androidx.lifecycle:lifecycle-runtime:2.3.0 -> 2.4.1 (*)
-+| +--- androidx.lifecycle:lifecycle-viewmodel:2.3.0 -> 2.4.1 (*)
++| +--- androidx.lifecycle:lifecycle-common-java8:2.3.0 -> 2.5.0-rc01
++| | +--- androidx.annotation:annotation:1.1.0 -> 1.3.0
++| | \--- androidx.lifecycle:lifecycle-common:2.5.0-rc01 (*)
++| +--- androidx.lifecycle:lifecycle-runtime:2.3.0 -> 2.5.0-rc01 (*)
++| +--- androidx.lifecycle:lifecycle-viewmodel:2.3.0 -> 2.5.0-rc01 (*)
+| +--- androidx.profileinstaller:profileinstaller:1.2.0-rc01
+| | +--- androidx.annotation:annotation:1.2.0 -> 1.3.0
+| | \--- androidx.startup:startup-runtime:1.1.1 (*)
@@ -634,7 +643,7 @@
+| | | +--- androidx.compose.ui:ui:1.2.0-rc01 (*)
+| | | +--- androidx.compose.ui:ui-unit:1.1.1 -> 1.2.0-rc01 (*)
+| | | +--- androidx.compose.ui:ui-util:1.0.0 -> 1.2.0-rc01 (*)
-+| | | +--- androidx.core:core:1.7.0 -> 1.8.0-rc02 (*)
++| | | +--- androidx.core:core:1.7.0 -> 1.9.0-alpha05 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21
+| | +--- androidx.compose.runtime:runtime:1.1.1 -> 1.2.0-rc01 (*)
+| | +--- androidx.compose.ui:ui:1.0.0 -> 1.2.0-rc01 (*)
@@ -667,8 +676,8 @@
+| +--- androidx.compose.ui:ui:1.2.0-rc01 (*)
+| +--- androidx.compose.ui:ui-text:1.2.0-rc01 (*)
+| +--- androidx.compose.ui:ui-util:1.0.0 -> 1.2.0-rc01 (*)
-+| +--- androidx.lifecycle:lifecycle-runtime:2.3.0 -> 2.4.1 (*)
-+| +--- androidx.lifecycle:lifecycle-viewmodel:2.3.0 -> 2.4.1 (*)
++| +--- androidx.lifecycle:lifecycle-runtime:2.3.0 -> 2.5.0-rc01 (*)
++| +--- androidx.lifecycle:lifecycle-viewmodel:2.3.0 -> 2.5.0-rc01 (*)
+| +--- androidx.savedstate:savedstate:1.1.0 -> 1.2.0-rc01 (*)
+| \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21
++--- androidx.compose.runtime:runtime-livedata:1.2.0-rc01
@@ -677,8 +686,8 @@
+| +--- androidx.lifecycle:lifecycle-livedata:2.2.0 -> 2.4.1 (*)
+| \--- org.jetbrains.kotlin:kotlin-stdlib:1.6.21 (*)
++--- com.google.android.material:compose-theme-adapter:1.1.11
-+| +--- androidx.appcompat:appcompat:1.4.1 (*)
-+| +--- androidx.core:core-ktx:1.8.0-rc02 (*)
++| +--- androidx.appcompat:appcompat:1.4.1 -> 1.6.0-alpha05 (*)
++| +--- androidx.core:core-ktx:1.8.0-rc02 -> 1.9.0-alpha05 (*)
+| +--- androidx.compose.runtime:runtime:1.2.0-beta03 -> 1.2.0-rc01 (*)
+| +--- androidx.compose.material:material:1.2.0-beta03 -> 1.2.0-rc01 (*)
+| +--- com.google.android.material:material:1.7.0-alpha02 (*)
@@ -686,7 +695,7 @@
++--- androidx.activity:activity-compose:1.4.0
+| +--- androidx.compose.runtime:runtime:1.0.1 -> 1.2.0-rc01 (*)
+| +--- androidx.compose.runtime:runtime-saveable:1.0.1 -> 1.2.0-rc01 (*)
-+| +--- androidx.activity:activity-ktx:1.4.0 (*)
++| +--- androidx.activity:activity-ktx:1.4.0 -> 1.6.0-alpha05 (*)
+| +--- androidx.compose.ui:ui:1.0.1 -> 1.2.0-rc01 (*)
+| \--- org.jetbrains.kotlin:kotlin-stdlib:1.5.31 -> 1.6.21 (*)
++--- androidx.compose.material:material-icons-extended:1.2.0-rc01