diff options
author | Stefan Niedermann <info@niedermann.it> | 2021-02-11 13:46:18 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2021-02-11 13:46:18 +0300 |
commit | fb73dc50637e32cd2902a5e23d9b589cef22e28b (patch) | |
tree | 7870e55d43106b7c607d2fc26f9c73def9c0eca6 /app | |
parent | 7670d4764ddc76c61f89222b8b8f2a80b6775679 (diff) |
Drop support for Android < 5.0
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app')
12 files changed, 35 insertions, 101 deletions
diff --git a/app/build.gradle b/app/build.gradle index e51b674fc..9c9eb56f2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ android { buildToolsVersion "30.0.3" defaultConfig { applicationId "it.niedermann.nextcloud.deck" - minSdkVersion 19 + minSdkVersion 21 targetSdkVersion 29 versionCode 1014005 versionName "1.14.5" diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/ImportAccountActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/ImportAccountActivity.java index 1ba1415b2..066f65698 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/ImportAccountActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/ImportAccountActivity.java @@ -5,17 +5,13 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.database.sqlite.SQLiteConstraintException; -import android.graphics.drawable.Drawable; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.StringRes; import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.core.graphics.drawable.DrawableCompat; import androidx.preference.PreferenceManager; import com.nextcloud.android.sso.AccountImporter; @@ -90,12 +86,6 @@ public class ImportAccountActivity extends AppCompatActivity { AccountImporter.requestAndroidAccountPermissionsAndPickAccount(this); } }); - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - Drawable wrapDrawable = DrawableCompat.wrap(binding.progressCircular.getIndeterminateDrawable()); - DrawableCompat.setTint(wrapDrawable, ContextCompat.getColor(this, R.color.defaultBrand)); - binding.progressCircular.setIndeterminateDrawable(DrawableCompat.unwrap(wrapDrawable)); - } } @Override diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java index 18d12f91c..283767695 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java @@ -11,7 +11,6 @@ import android.net.Network; import android.net.NetworkInfo; import android.net.NetworkRequest; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.Menu; @@ -22,7 +21,6 @@ import android.widget.PopupMenu; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.RequiresApi; import androidx.annotation.UiThread; import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.appcompat.app.AppCompatDelegate; @@ -216,21 +214,7 @@ public class MainActivity extends BrandedActivity implements DeleteStackListener mainViewModel.setCurrentAccount(account); if (!firstAccountAdded) { DeckLog.info("Syncing the current account on app start"); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - registerAutoSyncOnNetworkAvailable(); - } else { - mainViewModel.synchronize(new IResponseCallback<Boolean>(mainViewModel.getCurrentAccount()) { - @Override - public void onResponse(Boolean response) { - } - - @Override - public void onError(Throwable throwable) { - super.onError(throwable); - showSyncFailedSnackbar(throwable); - } - }); - } + registerAutoSyncOnNetworkAvailable(); firstAccountAdded = false; } break; @@ -878,7 +862,6 @@ public class MainActivity extends BrandedActivity implements DeleteStackListener } } - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private void registerAutoSyncOnNetworkAvailable() { final ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkRequest.Builder builder = new NetworkRequest.Builder(); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentViewHolder.java index 6f4fe3c74..26cd21a3c 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentViewHolder.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentViewHolder.java @@ -2,7 +2,6 @@ package it.niedermann.nextcloud.deck.ui.attachments; import android.content.Context; import android.graphics.drawable.Drawable; -import android.os.Build; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -37,9 +36,7 @@ public class AttachmentViewHolder extends RecyclerView.ViewHolder { public void bind(@NonNull Account account, @NonNull Attachment attachment, long cardRemoteId) { if (MimeTypeUtil.isImage(attachment.getMimetype())) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - binding.preview.setTransitionName(parentContext.getString(R.string.transition_attachment_preview, String.valueOf(attachment.getLocalId()))); - } + binding.preview.setTransitionName(parentContext.getString(R.string.transition_attachment_preview, String.valueOf(attachment.getLocalId()))); binding.preview.setImageResource(R.drawable.ic_image_grey600_24dp); binding.preview.post(() -> { final String uri = AttachmentUtil.getThumbnailUrl(account.getServerDeckVersionAsObject(), account.getUrl(), cardRemoteId, attachment, binding.preview.getWidth()); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentAdapter.java index d601f6bbd..74ea070a9 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentAdapter.java @@ -3,7 +3,6 @@ package it.niedermann.nextcloud.deck.ui.card.attachments; import android.app.Activity; import android.content.Context; import android.content.Intent; -import android.os.Build; import android.view.LayoutInflater; import android.view.MenuInflater; import android.view.View; @@ -103,7 +102,7 @@ public class CardAttachmentAdapter extends RecyclerView.Adapter<AttachmentViewHo onClickListener = (event) -> { attachmentClickedListener.onAttachmentClicked(position); final Intent intent = AttachmentsActivity.createIntent(context, account, cardLocalId, attachment.getLocalId()); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && context instanceof Activity) { + if (context instanceof Activity) { String transitionName = context.getString(R.string.transition_attachment_preview, String.valueOf(attachment.getLocalId())); holder.getPreview().setTransitionName(transitionName); context.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation((Activity) context, holder.getPreview(), transitionName).toBundle()); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java index 70f0fd704..2dcf5c909 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java @@ -66,7 +66,6 @@ import static android.Manifest.permission.READ_CONTACTS; import static android.Manifest.permission.READ_EXTERNAL_STORAGE; import static android.app.Activity.RESULT_OK; import static android.os.Build.VERSION.SDK_INT; -import static android.os.Build.VERSION_CODES.LOLLIPOP; import static android.os.Build.VERSION_CODES.M; import static android.view.View.GONE; import static android.view.View.VISIBLE; @@ -206,15 +205,11 @@ public class CardAttachmentsFragment extends BrandedFragment implements Attachme if (editViewModel.canEdit()) { binding.fab.setOnClickListener(v -> { - if (SDK_INT < LOLLIPOP) { - openNativeFilePicker(); - } else { - binding.bottomNavigation.setSelectedItemId(R.id.gallery); - showGalleryPicker(); - mBottomSheetBehaviour.setState(STATE_COLLAPSED); - backPressedCallback.setEnabled(true); - requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), backPressedCallback); - } + binding.bottomNavigation.setSelectedItemId(R.id.gallery); + showGalleryPicker(); + mBottomSheetBehaviour.setState(STATE_COLLAPSED); + backPressedCallback.setEnabled(true); + requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), backPressedCallback); }); binding.fab.show(); binding.attachmentsList.addOnScrollListener(new RecyclerView.OnScrollListener() { @@ -301,35 +296,29 @@ public class CardAttachmentsFragment extends BrandedFragment implements Attachme requestPermissions(new String[]{READ_EXTERNAL_STORAGE}, REQUEST_CODE_PICK_FILE_PERMISSION); } else { unbindPickerAdapter(); - if (SDK_INT >= LOLLIPOP) { -// if (SDK_INT >= Build.VERSION_CODES.Q) { -// // TODO Only usable with Scoped Storage -// pickerAdapter = new FileAdapter(requireContext(), uri -> onActivityResult(REQUEST_CODE_PICK_FILE, RESULT_OK, new Intent().setData(uri)), this::openNativeFilePicker); -// } else { - pickerAdapter = new FileAdapterLegacy((uri, pair) -> { - previewViewModel.prepareDialog(pair.first, pair.second); - PreviewDialog.newInstance().show(getChildFragmentManager(), PreviewDialog.class.getSimpleName()); - observeOnce(previewViewModel.getResult(), getViewLifecycleOwner(), (submitPositive) -> { - if (submitPositive) { - onActivityResult(REQUEST_CODE_PICK_FILE, RESULT_OK, new Intent().setData(uri)); - } - }); - }, this::openNativeFilePicker); -// } - removeGalleryItemDecoration(); - binding.pickerRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); - binding.pickerRecyclerView.setAdapter(pickerAdapter); - } +// if (SDK_INT >= Build.VERSION_CODES.Q) { +// // TODO Only usable with Scoped Storage +// pickerAdapter = new FileAdapter(requireContext(), uri -> onActivityResult(REQUEST_CODE_PICK_FILE, RESULT_OK, new Intent().setData(uri)), this::openNativeFilePicker); +// } else { + pickerAdapter = new FileAdapterLegacy((uri, pair) -> { + previewViewModel.prepareDialog(pair.first, pair.second); + PreviewDialog.newInstance().show(getChildFragmentManager(), PreviewDialog.class.getSimpleName()); + observeOnce(previewViewModel.getResult(), getViewLifecycleOwner(), (submitPositive) -> { + if (submitPositive) { + onActivityResult(REQUEST_CODE_PICK_FILE, RESULT_OK, new Intent().setData(uri)); + } + }); + }, this::openNativeFilePicker); +// } + removeGalleryItemDecoration(); + binding.pickerRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + binding.pickerRecyclerView.setAdapter(pickerAdapter); } } } private void openNativeCameraPicker() { - if (SDK_INT >= LOLLIPOP) { - startActivityForResult(TakePhotoActivity.createIntent(requireContext()), REQUEST_CODE_PICK_CAMERA); - } else { - ExceptionDialogFragment.newInstance(new UnsupportedOperationException("This feature requires Android 5"), editViewModel.getAccount()).show(getChildFragmentManager(), ExceptionDialogFragment.class.getSimpleName()); - } + startActivityForResult(TakePhotoActivity.createIntent(requireContext()), REQUEST_CODE_PICK_CAMERA); } private void openNativeContactPicker() { diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/takephoto/TakePhotoActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/takephoto/TakePhotoActivity.java index af17464dc..f079c3d9c 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/takephoto/TakePhotoActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/takephoto/TakePhotoActivity.java @@ -12,7 +12,6 @@ import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.RequiresApi; import androidx.camera.core.Camera; import androidx.camera.core.ImageCapture; import androidx.camera.core.ImageCaptureException; @@ -36,10 +35,8 @@ import it.niedermann.nextcloud.deck.ui.exception.ExceptionDialogFragment; import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler; import it.niedermann.nextcloud.deck.util.AttachmentUtil; -import static android.os.Build.VERSION_CODES.LOLLIPOP; import static it.niedermann.nextcloud.deck.util.MimeTypeUtil.IMAGE_JPEG; -@RequiresApi(LOLLIPOP) public class TakePhotoActivity extends BrandedActivity { private ActivityTakePhotoBinding binding; @@ -167,7 +164,6 @@ public class TakePhotoActivity extends BrandedActivity { } } - @RequiresApi(LOLLIPOP) public static Intent createIntent(@NonNull Context context) { return new Intent(context, TakePhotoActivity.class).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/SquareConstraintLayout.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/SquareConstraintLayout.java index 0912a07dd..730ecbdd1 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/SquareConstraintLayout.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/SquareConstraintLayout.java @@ -1,8 +1,6 @@ package it.niedermann.nextcloud.deck.ui.view; -import android.annotation.TargetApi; import android.content.Context; -import android.os.Build; import android.util.AttributeSet; import androidx.constraintlayout.widget.ConstraintLayout; @@ -21,7 +19,6 @@ public class SquareConstraintLayout extends ConstraintLayout { super(context, attrs, defStyleAttr); } - @TargetApi(Build.VERSION_CODES.LOLLIPOP) public SquareConstraintLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @@ -29,6 +26,7 @@ public class SquareConstraintLayout extends ConstraintLayout { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // Set a square layout. + //noinspection SuspiciousNameCombination super.onMeasure(widthMeasureSpec, widthMeasureSpec); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/SquareRelativeLayout.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/SquareRelativeLayout.java index 7f3649c94..cdce90251 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/SquareRelativeLayout.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/SquareRelativeLayout.java @@ -1,8 +1,6 @@ package it.niedermann.nextcloud.deck.ui.view; -import android.annotation.TargetApi; import android.content.Context; -import android.os.Build; import android.util.AttributeSet; import android.widget.RelativeLayout; @@ -20,7 +18,6 @@ public class SquareRelativeLayout extends RelativeLayout { super(context, attrs, defStyleAttr); } - @TargetApi(Build.VERSION_CODES.LOLLIPOP) public SquareRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/singlecard/SingleCardWidget.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/singlecard/SingleCardWidget.java index 8a9f09e8d..2e890ef48 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/singlecard/SingleCardWidget.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/singlecard/SingleCardWidget.java @@ -7,12 +7,10 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.net.Uri; -import android.os.Build; import android.text.TextUtils; import android.view.View; import android.widget.RemoteViews; -import androidx.annotation.DrawableRes; import androidx.annotation.IdRes; import androidx.annotation.NonNull; @@ -61,7 +59,7 @@ public class SingleCardWidget extends AppWidgetProvider { // Because otherwise using Reflection is the only way views.setViewVisibility(R.id.card_due_date, View.VISIBLE); views.setViewVisibility(R.id.card_due_date_image, View.VISIBLE); - setImageDrawable(views, R.id.card_due_date_image, R.drawable.calendar_blank_grey600_24dp); + views.setImageViewResource(R.id.card_due_date_image, R.drawable.calendar_blank_grey600_24dp); } else { views.setViewVisibility(R.id.card_due_date, View.GONE); views.setViewVisibility(R.id.card_due_date_image, View.GONE); @@ -77,8 +75,8 @@ public class SingleCardWidget extends AppWidgetProvider { } else { views.setViewVisibility(R.id.card_count_attachments, View.VISIBLE); views.setViewVisibility(R.id.card_count_attachments_image, View.VISIBLE); + views.setImageViewResource(R.id.card_count_attachments_image, R.drawable.ic_check_grey600_24dp); setupCounter(views, R.id.card_count_attachments, attachmentsCount, counterMaxValue); - setImageDrawable(views, R.id.card_count_attachments_image, R.drawable.ic_check_grey600_24dp); } final int commentsCount = fullModel.getFullCard().getCommentCount(); @@ -88,8 +86,8 @@ public class SingleCardWidget extends AppWidgetProvider { } else { views.setViewVisibility(R.id.card_count_comments, View.VISIBLE); views.setViewVisibility(R.id.card_count_comments_image, View.VISIBLE); + views.setImageViewResource(R.id.card_count_comments_image, R.drawable.ic_comment_white_24dp); setupCounter(views, R.id.card_count_comments, commentsCount, counterMaxValue); - setImageDrawable(views, R.id.card_count_comments_image, R.drawable.ic_comment_white_24dp); } final Card.TaskStatus taskStatus = fullModel.getFullCard().getCard().getTaskStatus(); @@ -97,7 +95,7 @@ public class SingleCardWidget extends AppWidgetProvider { views.setViewVisibility(R.id.card_count_tasks, View.VISIBLE); views.setViewVisibility(R.id.card_count_tasks_image, View.VISIBLE); views.setTextViewText(R.id.card_count_tasks, context.getResources().getString(R.string.task_count, String.valueOf(taskStatus.doneCount), String.valueOf(taskStatus.taskCount))); - setImageDrawable(views, R.id.card_count_tasks_image, R.drawable.ic_attach_file_grey600_24dp); + views.setImageViewResource(R.id.card_count_tasks_image, R.drawable.ic_attach_file_grey600_24dp); } else { views.setViewVisibility(R.id.card_count_tasks, View.GONE); views.setViewVisibility(R.id.card_count_tasks_image, View.GONE); @@ -115,19 +113,13 @@ public class SingleCardWidget extends AppWidgetProvider { private static void setupCounter(@NonNull RemoteViews views, @IdRes int textViewId, int count, String counterMaxValue) { if (count > 99) { views.setTextViewText(textViewId, counterMaxValue); - } else if (count > 1 || Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + } else if (count > 1) { views.setTextViewText(textViewId, String.valueOf(count)); } else if (count == 1) { views.setTextViewText(textViewId, ""); } } - private static void setImageDrawable(@NonNull RemoteViews views, @IdRes int imageView, @DrawableRes int image) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - views.setImageViewResource(imageView, image); - } - } - @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { super.onUpdate(context, appWidgetManager, appWidgetIds); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/util/ViewUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/util/ViewUtil.java index 013a3d334..d90ce297c 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/util/ViewUtil.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/util/ViewUtil.java @@ -24,8 +24,6 @@ import java.time.LocalDate; import it.niedermann.android.util.DimensionUtil; import it.niedermann.nextcloud.deck.R; -import static android.os.Build.VERSION.SDK_INT; -import static android.os.Build.VERSION_CODES.LOLLIPOP; import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme; import static java.time.temporal.ChronoUnit.DAYS; @@ -79,10 +77,6 @@ public final class ViewUtil { } public static void setImageColor(@NonNull Context context, @NonNull ImageView imageView, @ColorRes int colorRes) { - if (SDK_INT >= LOLLIPOP) { - imageView.setImageTintList(ColorStateList.valueOf(ContextCompat.getColor(context, colorRes))); - } else { - imageView.setColorFilter(ContextCompat.getColor(context, colorRes)); - } + imageView.setImageTintList(ColorStateList.valueOf(ContextCompat.getColor(context, colorRes))); } } diff --git a/app/src/main/res/layout/activity_attachments.xml b/app/src/main/res/layout/activity_attachments.xml index 5a820f9d3..a8ba17ff4 100644 --- a/app/src/main/res/layout/activity_attachments.xml +++ b/app/src/main/res/layout/activity_attachments.xml @@ -30,6 +30,5 @@ <!-- android:layout_height="match_parent"--> <!-- android:contentDescription="@null"--> <!-- android:transitionName="@string/transition_attachment_preview"--> -<!-- tools:src="@drawable/ic_image_grey600_24dp"--> -<!-- tools:targetApi="lollipop" />--> +<!-- tools:src="@drawable/ic_image_grey600_24dp" />--> </LinearLayout>
\ No newline at end of file |