diff --git a/app/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java b/app/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java
index 89ef0eb28..5b6e8fd77 100644
--- a/app/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java
+++ b/app/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java
@@ -134,18 +134,10 @@ public class AndroidUtilities {
return (int) (dp * displayMetrics.density + 0.5f);
}
- public static boolean preMarshmallow() {
- return !atLeastMarshmallow();
- }
-
public static boolean preOreo() {
return !atLeastOreo();
}
- public static boolean atLeastMarshmallow() {
- return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M;
- }
-
public static boolean atLeastNougat() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N;
}
diff --git a/app/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java b/app/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java
index c412ecb40..02587da54 100644
--- a/app/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java
+++ b/app/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.java
@@ -3,7 +3,6 @@ package com.todoroo.astrid.activity;
import static android.content.Intent.ACTION_SEND;
import static android.content.Intent.ACTION_SEND_MULTIPLE;
import static com.google.common.collect.Lists.newArrayList;
-import static com.todoroo.andlib.utility.AndroidUtilities.atLeastMarshmallow;
import static org.tasks.files.FileHelper.copyToUri;
import static org.tasks.files.FileHelper.getFilename;
import static org.tasks.intents.TaskIntents.getTaskListIntent;
@@ -68,7 +67,7 @@ public final class ShareLinkActivity extends InjectingAppCompatActivity {
Intent intent = getIntent();
String action = intent.getAction();
- if (atLeastMarshmallow() && Intent.ACTION_PROCESS_TEXT.equals(action)) {
+ if (Intent.ACTION_PROCESS_TEXT.equals(action)) {
CharSequence text = intent.getCharSequenceExtra(Intent.EXTRA_PROCESS_TEXT);
if (text != null) {
Task task = taskCreator.createWithValues(text.toString());
diff --git a/app/src/main/java/org/tasks/caldav/BaseCaldavAccountSettingsActivity.java b/app/src/main/java/org/tasks/caldav/BaseCaldavAccountSettingsActivity.java
index d77bba3be..da37b856a 100644
--- a/app/src/main/java/org/tasks/caldav/BaseCaldavAccountSettingsActivity.java
+++ b/app/src/main/java/org/tasks/caldav/BaseCaldavAccountSettingsActivity.java
@@ -36,7 +36,7 @@ import org.tasks.data.CaldavDao;
import org.tasks.databinding.ActivityCaldavAccountSettingsBinding;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.ThemedInjectingAppCompatActivity;
-import org.tasks.security.Encryption;
+import org.tasks.security.KeyStoreEncryption;
import org.tasks.ui.DisplayableException;
import timber.log.Timber;
@@ -46,7 +46,7 @@ public abstract class BaseCaldavAccountSettingsActivity extends ThemedInjectingA
public static final String EXTRA_CALDAV_DATA = "caldavData"; // $NON-NLS-1$
protected static final String PASSWORD_MASK = "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022";
@Inject protected CaldavDao caldavDao;
- @Inject protected Encryption encryption;
+ @Inject protected KeyStoreEncryption encryption;
@Inject DialogBuilder dialogBuilder;
@Inject TaskDeleter taskDeleter;
@Inject Inventory inventory;
diff --git a/app/src/main/java/org/tasks/caldav/CaldavClient.java b/app/src/main/java/org/tasks/caldav/CaldavClient.java
index 06a66ef23..ffdc5a0de 100644
--- a/app/src/main/java/org/tasks/caldav/CaldavClient.java
+++ b/app/src/main/java/org/tasks/caldav/CaldavClient.java
@@ -45,7 +45,7 @@ import org.tasks.data.CaldavAccount;
import org.tasks.data.CaldavCalendar;
import org.tasks.injection.ForApplication;
import org.tasks.preferences.Preferences;
-import org.tasks.security.Encryption;
+import org.tasks.security.KeyStoreEncryption;
import org.tasks.ui.DisplayableException;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
@@ -54,7 +54,7 @@ import timber.log.Timber;
public class CaldavClient {
- private final Encryption encryption;
+ private final KeyStoreEncryption encryption;
private final Preferences preferences;
private final DebugNetworkInterceptor interceptor;
private final OkHttpClient httpClient;
@@ -66,7 +66,7 @@ public class CaldavClient {
@Inject
CaldavClient(
@ForApplication Context context,
- Encryption encryption,
+ KeyStoreEncryption encryption,
Preferences preferences,
DebugNetworkInterceptor interceptor) {
this.context = context;
@@ -80,7 +80,7 @@ public class CaldavClient {
private CaldavClient(
Context context,
- Encryption encryption,
+ KeyStoreEncryption encryption,
Preferences preferences,
DebugNetworkInterceptor interceptor,
String url,
diff --git a/app/src/main/java/org/tasks/data/CaldavAccount.java b/app/src/main/java/org/tasks/data/CaldavAccount.java
index 957ad8156..e24231005 100644
--- a/app/src/main/java/org/tasks/data/CaldavAccount.java
+++ b/app/src/main/java/org/tasks/data/CaldavAccount.java
@@ -9,7 +9,7 @@ import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.PrimaryKey;
-import org.tasks.security.Encryption;
+import org.tasks.security.KeyStoreEncryption;
@Entity(tableName = "caldav_accounts")
public class CaldavAccount implements Parcelable {
@@ -129,7 +129,7 @@ public class CaldavAccount implements Parcelable {
this.password = password;
}
- public String getPassword(Encryption encryption) {
+ public String getPassword(KeyStoreEncryption encryption) {
return encryption.decrypt(password);
}
@@ -141,7 +141,7 @@ public class CaldavAccount implements Parcelable {
this.encryptionKey = encryptionKey;
}
- public String getEncryptionPassword(Encryption encryption) {
+ public String getEncryptionPassword(KeyStoreEncryption encryption) {
return encryption.decrypt(encryptionKey);
}
diff --git a/app/src/main/java/org/tasks/dialogs/DateTimePicker.kt b/app/src/main/java/org/tasks/dialogs/DateTimePicker.kt
index 58a95a7c2..e54ec8d60 100644
--- a/app/src/main/java/org/tasks/dialogs/DateTimePicker.kt
+++ b/app/src/main/java/org/tasks/dialogs/DateTimePicker.kt
@@ -18,15 +18,12 @@ import butterknife.ButterKnife
import butterknife.OnClick
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
-import com.todoroo.andlib.utility.AndroidUtilities
-import com.todoroo.andlib.utility.AndroidUtilities.atLeastMarshmallow
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
import org.tasks.R
import org.tasks.databinding.DialogDateTimePickerBinding
import org.tasks.date.DateTimeUtils.newDateTime
-import org.tasks.dialogs.MyDatePickerDialog.newDatePicker
import org.tasks.dialogs.MyTimePickerDialog.newTimePicker
import org.tasks.injection.DialogFragmentComponent
import org.tasks.injection.InjectingBottomSheetDialogFragment
@@ -70,9 +67,7 @@ class DateTimePicker : InjectingBottomSheetDialogFragment() {
private const val EXTRA_AUTO_CLOSE = "extra_auto_close"
private const val EXTRA_SELECTED = "extra_selected"
private const val REQUEST_TIME = 10101
- private const val REQUEST_DATE = 10102
private const val FRAG_TAG_TIME_PICKER = "frag_tag_time_picker"
- private const val FRAG_TAG_DATE_PICKER = "frag_tag_date_picker"
fun newDateTimePicker(task: Long, current: Long, autoClose: Boolean): DateTimePicker {
val bundle = Bundle()
@@ -97,9 +92,6 @@ class DateTimePicker : InjectingBottomSheetDialogFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = DialogDateTimePickerBinding.inflate(theme.getLayoutInflater(context))
- if (AndroidUtilities.preMarshmallow()) {
- binding.shortcuts.pickDateButton.visibility = View.VISIBLE
- }
morning = preferences.dateShortcutMorning + 1000
afternoon = preferences.dateShortcutAfternoon + 1000
evening = preferences.dateShortcutEvening + 1000
@@ -111,17 +103,15 @@ class DateTimePicker : InjectingBottomSheetDialogFragment() {
ButterKnife.bind(this, binding.root)
binding.shortcuts.nextWeekButton.text =
getString(R.string.next, DateUtilities.getWeekdayShort(newDateTime().plusWeeks(1), locale.locale))
- if (atLeastMarshmallow()) {
- binding.calendarView.setOnDateChangeListener { _, y, m, d ->
- selected = DateTime(y, m + 1, d, selected?.hourOfDay ?: 0, selected?.minuteOfHour
- ?: 0, selected?.secondOfMinute ?: 0)
- returnDate(selected!!.millis)
- refreshButtons()
- }
- val firstDayOfWeek = preferences.firstDayOfWeek
- if (firstDayOfWeek in 1..7) {
- binding.calendarView.firstDayOfWeek = firstDayOfWeek
- }
+ binding.calendarView.setOnDateChangeListener { _, y, m, d ->
+ selected = DateTime(y, m + 1, d, selected?.hourOfDay ?: 0, selected?.minuteOfHour
+ ?: 0, selected?.secondOfMinute ?: 0)
+ returnDate(selected!!.millis)
+ refreshButtons()
+ }
+ val firstDayOfWeek = preferences.firstDayOfWeek
+ if (firstDayOfWeek in 1..7) {
+ binding.calendarView.firstDayOfWeek = firstDayOfWeek
}
val timestamp = savedInstanceState?.getLong(EXTRA_SELECTED)
?: requireArguments().getLong(EXTRA_TIMESTAMP)
@@ -176,7 +166,7 @@ class DateTimePicker : InjectingBottomSheetDialogFragment() {
} else {
binding.shortcuts.timeGroup.check(R.id.no_time)
}
- if (atLeastMarshmallow() && selected != null) {
+ if (selected != null) {
binding.calendarView.setDate(selected!!.millis, true, true)
}
}
@@ -220,12 +210,6 @@ class DateTimePicker : InjectingBottomSheetDialogFragment() {
.show(parentFragmentManager, FRAG_TAG_TIME_PICKER)
}
- @OnClick(R.id.pick_date_button)
- fun pickDate() {
- newDatePicker(this, REQUEST_DATE, selected?.millis ?: today.millis)
- .show(parentFragmentManager, FRAG_TAG_DATE_PICKER)
- }
-
private fun returnSelectedTime(millisOfDay: Int) {
if (selected == null) {
selected = today.withMillisOfDay(millisOfDay)
@@ -336,13 +320,6 @@ class DateTimePicker : InjectingBottomSheetDialogFragment() {
} else {
refreshButtons()
}
- } else if (requestCode == REQUEST_DATE) {
- if (resultCode == RESULT_OK) {
- val timestamp = data!!.getLongExtra(MyDatePickerDialog.EXTRA_TIMESTAMP, today.millis)
- returnDate(timestamp)
- } else {
- refreshButtons()
- }
} else {
super.onActivityResult(requestCode, resultCode, data)
}
diff --git a/app/src/main/java/org/tasks/etesync/EncryptionSettingsActivity.java b/app/src/main/java/org/tasks/etesync/EncryptionSettingsActivity.java
index 980bc3a20..37723b537 100644
--- a/app/src/main/java/org/tasks/etesync/EncryptionSettingsActivity.java
+++ b/app/src/main/java/org/tasks/etesync/EncryptionSettingsActivity.java
@@ -28,7 +28,7 @@ import org.tasks.data.CaldavAccount;
import org.tasks.databinding.ActivityEtesyncEncryptionSettingsBinding;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.ThemedInjectingAppCompatActivity;
-import org.tasks.security.Encryption;
+import org.tasks.security.KeyStoreEncryption;
import org.tasks.ui.DisplayableException;
import timber.log.Timber;
@@ -40,7 +40,7 @@ public class EncryptionSettingsActivity extends ThemedInjectingAppCompatActivity
public static final String EXTRA_DERIVED_KEY = "extra_derived_key";
@Inject EteSyncClient client;
- @Inject Encryption encryption;
+ @Inject KeyStoreEncryption encryption;
private ActivityEtesyncEncryptionSettingsBinding binding;
private UserInfo userInfo;
diff --git a/app/src/main/java/org/tasks/etesync/EteSyncClient.java b/app/src/main/java/org/tasks/etesync/EteSyncClient.java
index ffbf3bcb5..dd2194f1d 100644
--- a/app/src/main/java/org/tasks/etesync/EteSyncClient.java
+++ b/app/src/main/java/org/tasks/etesync/EteSyncClient.java
@@ -46,7 +46,7 @@ import org.tasks.data.CaldavAccount;
import org.tasks.data.CaldavCalendar;
import org.tasks.injection.ForApplication;
import org.tasks.preferences.Preferences;
-import org.tasks.security.Encryption;
+import org.tasks.security.KeyStoreEncryption;
import timber.log.Timber;
public class EteSyncClient {
@@ -55,7 +55,7 @@ public class EteSyncClient {
private static final int MAX_FETCH = 50;
private static final int MAX_PUSH = 30;
- private final Encryption encryption;
+ private final KeyStoreEncryption encryption;
private final Preferences preferences;
private final DebugNetworkInterceptor interceptor;
private final String username;
@@ -70,7 +70,7 @@ public class EteSyncClient {
@Inject
public EteSyncClient(
@ForApplication Context context,
- Encryption encryption,
+ KeyStoreEncryption encryption,
Preferences preferences,
DebugNetworkInterceptor interceptor) {
this.context = context;
@@ -87,7 +87,7 @@ public class EteSyncClient {
private EteSyncClient(
Context context,
- Encryption encryption,
+ KeyStoreEncryption encryption,
Preferences preferences,
DebugNetworkInterceptor interceptor,
String url,
diff --git a/app/src/main/java/org/tasks/injection/ApplicationModule.java b/app/src/main/java/org/tasks/injection/ApplicationModule.java
index e2bfadb18..f70bd5713 100644
--- a/app/src/main/java/org/tasks/injection/ApplicationModule.java
+++ b/app/src/main/java/org/tasks/injection/ApplicationModule.java
@@ -1,7 +1,5 @@
package org.tasks.injection;
-import static com.todoroo.andlib.utility.AndroidUtilities.atLeastMarshmallow;
-
import android.content.Context;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.TaskDao;
@@ -28,9 +26,6 @@ import org.tasks.locale.Locale;
import org.tasks.location.Geocoder;
import org.tasks.location.MapboxGeocoder;
import org.tasks.notifications.NotificationDao;
-import org.tasks.security.Encryption;
-import org.tasks.security.KeyStoreEncryption;
-import org.tasks.security.NoEncryption;
@Module
class ApplicationModule {
@@ -138,12 +133,6 @@ class ApplicationModule {
return database.getDeletionDao();
}
- @Provides
- @ApplicationScope
- public Encryption getEncryption() {
- return atLeastMarshmallow() ? new KeyStoreEncryption() : new NoEncryption();
- }
-
@Provides
BillingClient getBillingClient(Inventory inventory, Tracker tracker) {
return new BillingClientImpl(context, inventory, tracker);
diff --git a/app/src/main/java/org/tasks/jobs/WorkManager.java b/app/src/main/java/org/tasks/jobs/WorkManager.java
index 5a0407d45..797c8679b 100644
--- a/app/src/main/java/org/tasks/jobs/WorkManager.java
+++ b/app/src/main/java/org/tasks/jobs/WorkManager.java
@@ -1,6 +1,5 @@
package org.tasks.jobs;
-import static com.todoroo.andlib.utility.AndroidUtilities.atLeastMarshmallow;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastOreo;
import static com.todoroo.andlib.utility.DateUtilities.now;
import static io.reactivex.Single.just;
@@ -200,11 +199,7 @@ public class WorkManager {
}
} else {
PendingIntent pendingIntent = getNotificationPendingIntent();
- if (atLeastMarshmallow()) {
- alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, time, pendingIntent);
- } else {
- alarmManager.setExact(AlarmManager.RTC_WAKEUP, time, pendingIntent);
- }
+ alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, time, pendingIntent);
}
}
diff --git a/app/src/main/java/org/tasks/preferences/fragments/Notifications.kt b/app/src/main/java/org/tasks/preferences/fragments/Notifications.kt
index d1b1bcba7..82fd9a1a6 100644
--- a/app/src/main/java/org/tasks/preferences/fragments/Notifications.kt
+++ b/app/src/main/java/org/tasks/preferences/fragments/Notifications.kt
@@ -12,7 +12,6 @@ import android.speech.tts.TextToSpeech
import androidx.preference.Preference
import androidx.preference.SwitchPreferenceCompat
import com.todoroo.andlib.utility.AndroidUtilities
-import com.todoroo.andlib.utility.AndroidUtilities.atLeastMarshmallow
import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.voice.VoiceOutputAssistant
import org.tasks.LocalBroadcastManager
@@ -143,11 +142,9 @@ class Notifications : InjectingPreferenceFragment() {
}
private fun checkBatteryOptimizations() {
- if (atLeastMarshmallow()) {
- val powerManager = requireContext().getSystemService(POWER_SERVICE) as PowerManager
- findPreference(R.string.disable_battery_optimizations).isVisible =
- !powerManager.isIgnoringBatteryOptimizations(getString(R.string.app_package))
- }
+ val powerManager = requireContext().getSystemService(POWER_SERVICE) as PowerManager
+ findPreference(R.string.disable_battery_optimizations).isVisible =
+ !powerManager.isIgnoringBatteryOptimizations(getString(R.string.app_package))
}
override fun onDestroy() {
diff --git a/app/src/main/java/org/tasks/scheduling/AlarmManager.java b/app/src/main/java/org/tasks/scheduling/AlarmManager.java
index c239c2b5d..168efc9f1 100644
--- a/app/src/main/java/org/tasks/scheduling/AlarmManager.java
+++ b/app/src/main/java/org/tasks/scheduling/AlarmManager.java
@@ -1,7 +1,5 @@
package org.tasks.scheduling;
-import static com.todoroo.andlib.utility.AndroidUtilities.atLeastMarshmallow;
-
import android.annotation.SuppressLint;
import android.app.PendingIntent;
import android.content.Context;
@@ -23,11 +21,7 @@ public class AlarmManager {
@SuppressLint("NewApi")
public void wakeup(long time, PendingIntent pendingIntent) {
- if (atLeastMarshmallow()) {
- alarmManager.setExactAndAllowWhileIdle(
- android.app.AlarmManager.RTC_WAKEUP, time, pendingIntent);
- } else {
- alarmManager.setExact(android.app.AlarmManager.RTC_WAKEUP, time, pendingIntent);
- }
+ alarmManager.setExactAndAllowWhileIdle(
+ android.app.AlarmManager.RTC_WAKEUP, time, pendingIntent);
}
}
diff --git a/app/src/main/java/org/tasks/security/Encryption.java b/app/src/main/java/org/tasks/security/Encryption.java
deleted file mode 100644
index 21f974417..000000000
--- a/app/src/main/java/org/tasks/security/Encryption.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package org.tasks.security;
-
-public interface Encryption {
-
- String encrypt(String text);
-
- String decrypt(String text);
-}
diff --git a/app/src/main/java/org/tasks/security/KeyStoreEncryption.java b/app/src/main/java/org/tasks/security/KeyStoreEncryption.java
index 2be095f0c..8948db1ad 100644
--- a/app/src/main/java/org/tasks/security/KeyStoreEncryption.java
+++ b/app/src/main/java/org/tasks/security/KeyStoreEncryption.java
@@ -29,10 +29,11 @@ import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.GCMParameterSpec;
import javax.inject.Inject;
+import org.tasks.injection.ApplicationScope;
import timber.log.Timber;
-@RequiresApi(api = VERSION_CODES.M)
-public class KeyStoreEncryption implements Encryption {
+@ApplicationScope
+public class KeyStoreEncryption {
private static final String ANDROID_KEYSTORE = "AndroidKeyStore";
private static final String ALIAS = "passwords";
@@ -52,7 +53,6 @@ public class KeyStoreEncryption implements Encryption {
}
}
- @Override
public String encrypt(String text) {
byte[] iv = new byte[GCM_IV_LENGTH];
new SecureRandom().nextBytes(iv);
@@ -69,7 +69,6 @@ public class KeyStoreEncryption implements Encryption {
}
}
- @Override
public String decrypt(String text) {
if (Strings.isNullOrEmpty(text)) {
return null;
diff --git a/app/src/main/java/org/tasks/security/NoEncryption.java b/app/src/main/java/org/tasks/security/NoEncryption.java
deleted file mode 100644
index 897290c8e..000000000
--- a/app/src/main/java/org/tasks/security/NoEncryption.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.tasks.security;
-
-public class NoEncryption implements Encryption {
-
- @Override
- public String encrypt(String text) {
- return text;
- }
-
- @Override
- public String decrypt(String text) {
- return text;
- }
-}
diff --git a/app/src/main/java/org/tasks/themes/ThemeColor.java b/app/src/main/java/org/tasks/themes/ThemeColor.java
index 982bac851..8faa38e45 100644
--- a/app/src/main/java/org/tasks/themes/ThemeColor.java
+++ b/app/src/main/java/org/tasks/themes/ThemeColor.java
@@ -1,6 +1,5 @@
package org.tasks.themes;
-import static com.todoroo.andlib.utility.AndroidUtilities.atLeastMarshmallow;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastOreo;
import android.app.Activity;
@@ -247,10 +246,8 @@ public class ThemeColor implements Pickable {
public void setStatusBarColor(DrawerLayout drawerLayout) {
drawerLayout.setStatusBarBackgroundColor(colorPrimaryVariant);
- if (atLeastMarshmallow()) {
- int systemUiVisibility = applyLightStatusBarFlag(drawerLayout.getSystemUiVisibility());
- drawerLayout.setSystemUiVisibility(systemUiVisibility);
- }
+ int systemUiVisibility = applyLightStatusBarFlag(drawerLayout.getSystemUiVisibility());
+ drawerLayout.setSystemUiVisibility(systemUiVisibility);
}
public void setStatusBarColor(CollapsingToolbarLayout layout) {
@@ -268,11 +265,9 @@ public class ThemeColor implements Pickable {
}
public void applyToStatusBarIcons(Activity activity) {
- if (atLeastMarshmallow()) {
- View decorView = activity.getWindow().getDecorView();
- int systemUiVisibility = applyLightStatusBarFlag(decorView.getSystemUiVisibility());
- decorView.setSystemUiVisibility(systemUiVisibility);
- }
+ View decorView = activity.getWindow().getDecorView();
+ int systemUiVisibility = applyLightStatusBarFlag(decorView.getSystemUiVisibility());
+ decorView.setSystemUiVisibility(systemUiVisibility);
}
public void applyToNavigationBar(Activity activity) {
@@ -285,7 +280,6 @@ public class ThemeColor implements Pickable {
}
}
- @RequiresApi(api = VERSION_CODES.M)
private int applyLightStatusBarFlag(int flag) {
return isDark
? flag | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
diff --git a/app/src/main/res/drawable-v23/color_picker.xml b/app/src/main/res/drawable-v23/color_picker.xml
deleted file mode 100644
index 4c9e85af1..000000000
--- a/app/src/main/res/drawable-v23/color_picker.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
- -
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/color_picker.xml b/app/src/main/res/drawable/color_picker.xml
index 77f4a6587..4c9e85af1 100644
--- a/app/src/main/res/drawable/color_picker.xml
+++ b/app/src/main/res/drawable/color_picker.xml
@@ -1,10 +1,27 @@
-
+
+ -
+
-
+
-
-
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/date_time_picker_shortcuts.xml b/app/src/main/res/layout/date_time_picker_shortcuts.xml
index 7eaae2b74..d6361d9cf 100644
--- a/app/src/main/res/layout/date_time_picker_shortcuts.xml
+++ b/app/src/main/res/layout/date_time_picker_shortcuts.xml
@@ -51,17 +51,6 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tomorrow_button" />
-
+ app:layout_constraintTop_toBottomOf="@+id/next_week_button" />
+ android:layout_height="wrap_content"/>
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 5adbea769..b960138d1 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -561,7 +561,6 @@
Text und Symbol
Nur Text
Nur Symbol
- Wählen Sie ein Datum
Wählen Sie eine Uhrzeit
Ohne Uhrzeit
Kein Datum
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 04b6e87c2..27340fcd0 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -566,7 +566,6 @@
Texto e ícono
Sólo texto
Icono sólo
- Elija la fecha
Elija la hora
No hay tiempo
No hay fecha
diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml
index 9d9ce835c..05fc3999e 100644
--- a/app/src/main/res/values-eu/strings.xml
+++ b/app/src/main/res/values-eu/strings.xml
@@ -568,7 +568,6 @@
Testua eta ikonoa
Testua soilik
Ikonoa soilik
- Hautatu data
Hautatu ordua
Ordurik ez
Datarik ez
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index 4851f6080..82c20337e 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -414,7 +414,6 @@
Kalenterimerkintä luotu %s varten
Päivämäärän ja kellonajan valitsimet sulkeutuvat itsestään valittuasi aika
Sulje päivän ja ajan valitsin itsestään
- Aseta päivämäärä
Aseta kellonaika
Ei kellonaikaa
Ei päivämäärää
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 67edacada..0ee28b980 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -561,7 +561,6 @@
Texte et icône
Texte seulement
Icône seulement
- Choisissez la date
Choisissez l\'heure
Aucune heure
Aucune date
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 76905a094..81a58a0b1 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -564,7 +564,6 @@
Szöveg és ikon
Csak szöveg
Csak ikon
- Dátum kiválasztása
Időpont kiválasztása
Időpont nélkül
Dátum nélkül
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index d3689f4e2..824885823 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -488,7 +488,6 @@
Creato evento nel calendario per %s
Chiudi selezionatore data e ora dopo averne selezionato una
Chiudi automaticamente selezionatore data e ora
- Scegli una data
Scegli un\'ora
Senza ora
Senza data
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index 2504d3f06..af3e12609 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -528,7 +528,6 @@
모두 선택
마감시간 없음
마감일 없음
- 날짜 선택
시간 선택
아이콘만
글자만
diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml
index d531c34e8..80656d41c 100644
--- a/app/src/main/res/values-nb/strings.xml
+++ b/app/src/main/res/values-nb/strings.xml
@@ -556,7 +556,6 @@
ELLER
OG
Miniprogram
- Velg dato
Velg tidspunkt
Ingen tid
Ingen dato
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 7e0a97711..859e87f19 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -561,7 +561,6 @@
Tekst en icon
Alleen tekst
Alleen icon
- Kies een datum
Kies een tijd
Geen tijd
Geen datum
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 6542aceab..25a3260d3 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -567,7 +567,6 @@
Desaturuj kolory
Kolory będą desaturowane w ciemnych motywach
Kolory nie będą desaturowane w ciemnych motywach
- Wybierz datę
Wybierz czas
Brak czasu
Brak daty
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 0d919d47e..6ab03fc76 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -573,7 +573,6 @@
Уменьшить насыщенность цветов
Цвета будут менее насыщенными в темных темах
Цвета не будут менее насыщенными в темных темах
- Выбрать дату
Выбрать время
Без времени
Без даты
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index dd45f1692..5815cd200 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -567,7 +567,6 @@
Zaman seç
Zaman yok
%s için takvim olayı oluşturuldu
- Tarih seç
Tarih yok
Yalnızca simge
Yalnızca metin
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 4f6194a38..9f59021ae 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -559,7 +559,6 @@
В календарі створено подію для %s
Закривати вибір дати та часу після встановлення дати чи часу
Автоматично закривати вибір дати та часу
- Оберіть дату
Оберіть час
Без часу
Без дати
diff --git a/app/src/main/res/values-v23/integers.xml b/app/src/main/res/values-v23/integers.xml
deleted file mode 100644
index 6ff6146be..000000000
--- a/app/src/main/res/values-v23/integers.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- 0
-
\ No newline at end of file
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index e6925ab5f..158f5cc6d 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -555,7 +555,6 @@
添加地点
在选择一个日期或时间后关闭日期时间选择器
自动关闭日期时间选择器
- 挑选日期
挑选时间
无时间
无日期
diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml
index 73daad57d..730e0a441 100644
--- a/app/src/main/res/values/integers.xml
+++ b/app/src/main/res/values/integers.xml
@@ -7,5 +7,4 @@
46800000
61200000
72000000
- 2
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ed6529b62..96f56fab0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -586,7 +586,6 @@ File %1$s contained %2$s.\n\n
No date
No time
Pick time
- Pick date
Autoclose date time picker
Task list
Autoclose when picking from task list
diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt
index 299b739cd..f11c31628 100644
--- a/buildSrc/src/main/kotlin/Versions.kt
+++ b/buildSrc/src/main/kotlin/Versions.kt
@@ -1,7 +1,7 @@
object Versions {
const val kotlin = "1.3.71"
const val targetSdk = 29
- const val minSdk = 21
+ const val minSdk = 23
const val dagger = "2.27"
const val butterknife = "10.2.1"
const val work = "2.3.4"