From fbeef45bb9b88d1066a6ed1752d1065bbfb6252c Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 24 Apr 2020 14:51:34 -0500 Subject: [PATCH] Drop support for Lollipop and Lollipop MR1 --- .../andlib/utility/AndroidUtilities.java | 8 ---- .../astrid/activity/ShareLinkActivity.java | 3 +- .../BaseCaldavAccountSettingsActivity.java | 4 +- .../java/org/tasks/caldav/CaldavClient.java | 8 ++-- .../java/org/tasks/data/CaldavAccount.java | 6 +-- .../java/org/tasks/dialogs/DateTimePicker.kt | 43 +++++-------------- .../etesync/EncryptionSettingsActivity.java | 4 +- .../java/org/tasks/etesync/EteSyncClient.java | 8 ++-- .../tasks/injection/ApplicationModule.java | 11 ----- .../main/java/org/tasks/jobs/WorkManager.java | 7 +-- .../preferences/fragments/Notifications.kt | 9 ++-- .../org/tasks/scheduling/AlarmManager.java | 10 +---- .../java/org/tasks/security/Encryption.java | 8 ---- .../tasks/security/KeyStoreEncryption.java | 7 ++- .../java/org/tasks/security/NoEncryption.java | 14 ------ .../java/org/tasks/themes/ThemeColor.java | 16 +++---- .../main/res/drawable-v23/color_picker.xml | 27 ------------ app/src/main/res/drawable/color_picker.xml | 31 ++++++++++--- .../res/layout/date_time_picker_shortcuts.xml | 13 +----- .../res/layout/dialog_date_time_picker.xml | 3 +- app/src/main/res/values-de/strings.xml | 1 - app/src/main/res/values-es/strings.xml | 1 - app/src/main/res/values-eu/strings.xml | 1 - app/src/main/res/values-fi/strings.xml | 1 - app/src/main/res/values-fr/strings.xml | 1 - app/src/main/res/values-hu/strings.xml | 1 - app/src/main/res/values-it/strings.xml | 1 - app/src/main/res/values-ko/strings.xml | 1 - app/src/main/res/values-nb/strings.xml | 1 - app/src/main/res/values-nl/strings.xml | 1 - app/src/main/res/values-pl/strings.xml | 1 - app/src/main/res/values-ru/strings.xml | 1 - app/src/main/res/values-tr/strings.xml | 1 - app/src/main/res/values-uk/strings.xml | 1 - app/src/main/res/values-v23/integers.xml | 4 -- app/src/main/res/values-zh-rCN/strings.xml | 1 - app/src/main/res/values/integers.xml | 1 - app/src/main/res/values/strings.xml | 1 - buildSrc/src/main/kotlin/Versions.kt | 2 +- 39 files changed, 67 insertions(+), 196 deletions(-) delete mode 100644 app/src/main/java/org/tasks/security/Encryption.java delete mode 100644 app/src/main/java/org/tasks/security/NoEncryption.java delete mode 100644 app/src/main/res/drawable-v23/color_picker.xml delete mode 100644 app/src/main/res/values-v23/integers.xml 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"