Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-08-03 13:10:06 +0300
committerStefan Niedermann <info@niedermann.it>2021-08-03 13:10:17 +0300
commitd6035cec024bd23b24651b740b67a09885d747de (patch)
tree4b6991d65089797928317633631e8edceb20232a
parent8c18d8b6652f67b480da65c6b22672736629e815 (diff)
Make use of var keyword for complex class instances
Signed-off-by: Stefan Niedermann <info@niedermann.it>
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDatePickerDialog.java20
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedPreferenceCategory.java13
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSnackbar.java6
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSwitchPreference.java8
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedTimePickerDialog.java16
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java20
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/DeleteAlertDialogBuilder.java3
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AbstractCardViewHolder.java19
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java21
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/DefaultCardViewHolder.java26
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java19
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditCardViewModel.java8
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java15
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/NewCardDialog.java (renamed from app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/NewCardDialog.java)4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityAdapter.java5
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityFragment.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityViewHolder.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/assignee/CardAssigneeDialog.java21
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/AttachmentViewHolder.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentAdapter.java18
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java54
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/DeleteAttachmentDialogFragment.java11
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java31
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryPhotoPreviewItemViewHolder.java10
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/previewdialog/PreviewDialog.java13
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsAdapter.java8
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsEditDialogFragment.java14
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsMentionProposer.java10
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/ItemCommentViewHolder.java9
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/util/CommentsUtil.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/AssigneeAdapter.java13
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/AssigneeViewHolder.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java42
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardProjectsAdapter.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourceViewHolder.java15
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourcesDialog.java12
37 files changed, 222 insertions, 278 deletions
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 c1fcaaa70..ad8f50535 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
@@ -110,8 +110,8 @@ import it.niedermann.nextcloud.deck.ui.board.DeleteBoardListener;
import it.niedermann.nextcloud.deck.ui.board.EditBoardDialogFragment;
import it.niedermann.nextcloud.deck.ui.board.EditBoardListener;
import it.niedermann.nextcloud.deck.ui.branding.BrandedSnackbar;
-import it.niedermann.nextcloud.deck.ui.branding.NewCardDialog;
import it.niedermann.nextcloud.deck.ui.card.CardAdapter;
+import it.niedermann.nextcloud.deck.ui.card.NewCardDialog;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionDialogFragment;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler;
import it.niedermann.nextcloud.deck.ui.filter.FilterDialogFragment;
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDatePickerDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDatePickerDialog.java
index c84ac8274..7443f2c8a 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDatePickerDialog.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDatePickerDialog.java
@@ -1,5 +1,9 @@
package it.niedermann.nextcloud.deck.ui.branding;
+import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.readBrandMainColor;
+
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
@@ -19,10 +23,6 @@ import java.util.Calendar;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.util.DeckColorUtil;
-import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.readBrandMainColor;
-
public class BrandedDatePickerDialog extends DatePickerDialog implements Branded {
@Override
@@ -54,9 +54,9 @@ public class BrandedDatePickerDialog extends DatePickerDialog implements Branded
* @return a new DatePickerDialog instance.
*/
public static DatePickerDialog newInstance(OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth) {
- DatePickerDialog ret = new BrandedDatePickerDialog();
- ret.initialize(callBack, year, monthOfYear - 1, dayOfMonth);
- return ret;
+ final var dialog = new BrandedDatePickerDialog();
+ dialog.initialize(callBack, year, monthOfYear - 1, dayOfMonth);
+ return dialog;
}
/**
@@ -69,8 +69,8 @@ public class BrandedDatePickerDialog extends DatePickerDialog implements Branded
* @return a new DatePickerDialog instance
*/
public static DatePickerDialog newInstance(OnDateSetListener callback, Calendar initialSelection) {
- DatePickerDialog ret = new BrandedDatePickerDialog();
- ret.initialize(callback, initialSelection);
- return ret;
+ final var dialog = new BrandedDatePickerDialog();
+ dialog.initialize(callback, initialSelection);
+ return dialog;
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedPreferenceCategory.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedPreferenceCategory.java
index 70db03aa0..eeac7579b 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedPreferenceCategory.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedPreferenceCategory.java
@@ -1,8 +1,10 @@
package it.niedermann.nextcloud.deck.ui.branding;
+import static it.niedermann.nextcloud.deck.DeckApplication.readCurrentAccountColor;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
+
import android.content.Context;
import android.util.AttributeSet;
-import android.view.View;
import android.widget.TextView;
import androidx.annotation.ColorInt;
@@ -10,20 +12,17 @@ import androidx.annotation.Nullable;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceViewHolder;
-import static it.niedermann.nextcloud.deck.DeckApplication.readCurrentAccountColor;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
-
public class BrandedPreferenceCategory extends PreferenceCategory {
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
- final View v = holder.itemView.findViewById(android.R.id.title);
+ final var view = holder.itemView.findViewById(android.R.id.title);
@Nullable final Context context = getContext();
- if (context != null && v instanceof TextView) {
+ if (context != null && view instanceof TextView) {
@ColorInt final int mainColor = getSecondaryForegroundColorDependingOnTheme(context, readCurrentAccountColor(context));
- ((TextView) v).setTextColor(mainColor);
+ ((TextView) view).setTextColor(mainColor);
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSnackbar.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSnackbar.java
index 8b4cf2f5a..125c9dc23 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSnackbar.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSnackbar.java
@@ -1,5 +1,7 @@
package it.niedermann.nextcloud.deck.ui.branding;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.readBrandMainColor;
+
import android.graphics.Color;
import android.view.View;
@@ -12,14 +14,12 @@ import com.google.android.material.snackbar.Snackbar;
import it.niedermann.android.util.ColorUtil;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.readBrandMainColor;
-
public class BrandedSnackbar {
@NonNull
public static Snackbar make(
@NonNull View view, @NonNull CharSequence text, @BaseTransientBottomBar.Duration int duration) {
- final Snackbar snackbar = Snackbar.make(view, text, duration);
+ final var snackbar = Snackbar.make(view, text, duration);
@ColorInt final int color = readBrandMainColor(view.getContext());
snackbar.setActionTextColor(ColorUtil.INSTANCE.isColorDark(color) ? Color.WHITE : color);
return snackbar;
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSwitchPreference.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSwitchPreference.java
index 607beba03..3c1558df5 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSwitchPreference.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSwitchPreference.java
@@ -1,5 +1,7 @@
package it.niedermann.nextcloud.deck.ui.branding;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
+
import android.content.Context;
import android.content.res.ColorStateList;
import android.util.AttributeSet;
@@ -15,8 +17,6 @@ import androidx.preference.SwitchPreference;
import it.niedermann.nextcloud.deck.R;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
-
public class BrandedSwitchPreference extends SwitchPreference implements Branded {
@ColorInt
@@ -89,9 +89,9 @@ public class BrandedSwitchPreference extends SwitchPreference implements Branded
if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
for (int i = 0; i < viewGroup.getChildCount(); i++) {
- View child = viewGroup.getChildAt(i);
+ final var child = viewGroup.getChildAt(i);
if (child instanceof ViewGroup) {
- Switch result = findSwitchWidget(child);
+ final var result = findSwitchWidget(child);
if (result != null) return result;
}
if (child instanceof Switch) {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedTimePickerDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedTimePickerDialog.java
index 02e09e3c8..4a8879f30 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedTimePickerDialog.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedTimePickerDialog.java
@@ -1,5 +1,9 @@
package it.niedermann.nextcloud.deck.ui.branding;
+import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.readBrandMainColor;
+
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
@@ -19,10 +23,6 @@ import java.time.LocalTime;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.util.DeckColorUtil;
-import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.readBrandMainColor;
-
public class BrandedTimePickerDialog extends TimePickerDialog implements Branded {
@Override
@@ -57,9 +57,9 @@ public class BrandedTimePickerDialog extends TimePickerDialog implements Branded
@SuppressWarnings({"SameParameterValue"})
public static TimePickerDialog newInstance(OnTimeSetListener callback,
int hourOfDay, int minute, int second, boolean is24HourMode) {
- TimePickerDialog ret = new BrandedTimePickerDialog();
- ret.initialize(callback, hourOfDay, minute, second, is24HourMode);
- return ret;
+ final var dialog = new BrandedTimePickerDialog();
+ dialog.initialize(callback, hourOfDay, minute, second, is24HourMode);
+ return dialog;
}
/**
@@ -85,7 +85,7 @@ public class BrandedTimePickerDialog extends TimePickerDialog implements Branded
*/
@SuppressWarnings({"SameParameterValue"})
public static TimePickerDialog newInstance(OnTimeSetListener callback, boolean is24HourMode) {
- LocalTime now = LocalTime.now();
+ final var now = LocalTime.now();
return newInstance(callback, now.getHour(), now.getMinute(), is24HourMode);
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java
index 1af1accab..fea7b31d2 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java
@@ -1,10 +1,12 @@
package it.niedermann.nextcloud.deck.ui.branding;
+import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
+import static it.niedermann.nextcloud.deck.util.DeckColorUtil.contrastRatioIsSufficient;
+import static it.niedermann.nextcloud.deck.util.DeckColorUtil.contrastRatioIsSufficientBigAreas;
+
import android.content.Context;
-import android.content.SharedPreferences;
import android.content.res.ColorStateList;
import android.graphics.Color;
-import android.graphics.drawable.Drawable;
import android.view.MenuItem;
import androidx.annotation.ColorInt;
@@ -21,10 +23,6 @@ import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
-import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
-import static it.niedermann.nextcloud.deck.util.DeckColorUtil.contrastRatioIsSufficient;
-import static it.niedermann.nextcloud.deck.util.DeckColorUtil.contrastRatioIsSufficientBigAreas;
-
public abstract class BrandingUtil {
private BrandingUtil() {
@@ -33,20 +31,20 @@ public abstract class BrandingUtil {
@ColorInt
public static int readBrandMainColor(@NonNull Context context) {
- final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
+ final var sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
DeckLog.log("--- Read:", context.getString(R.string.shared_preference_theme_main));
return sharedPreferences.getInt(context.getString(R.string.shared_preference_theme_main), context.getApplicationContext().getResources().getColor(R.color.defaultBrand));
}
public static void saveBrandColors(@NonNull Context context, @ColorInt int mainColor) {
- final SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(context).edit();
+ final var editor = PreferenceManager.getDefaultSharedPreferences(context).edit();
DeckLog.log("--- Write:", context.getString(R.string.shared_preference_theme_main), "|", mainColor);
editor.putInt(context.getString(R.string.shared_preference_theme_main), mainColor);
editor.apply();
}
public static void clearBrandColors(@NonNull Context context) {
- final SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(context).edit();
+ final var editor = PreferenceManager.getDefaultSharedPreferences(context).edit();
DeckLog.log("--- Remove:", context.getString(R.string.shared_preference_theme_main));
editor.remove(context.getString(R.string.shared_preference_theme_main));
editor.apply();
@@ -82,7 +80,7 @@ public abstract class BrandingUtil {
public static void applyBrandToEditTextInputLayout(@ColorInt int color, @NonNull TextInputLayout til) {
final int colorPrimary = ContextCompat.getColor(til.getContext(), R.color.primary);
final int colorAccent = ContextCompat.getColor(til.getContext(), R.color.accent);
- final ColorStateList colorDanger = ColorStateList.valueOf(ContextCompat.getColor(til.getContext(), R.color.danger));
+ final var colorDanger = ColorStateList.valueOf(ContextCompat.getColor(til.getContext(), R.color.danger));
til.setBoxStrokeColor(contrastRatioIsSufficientBigAreas(color, colorPrimary) ? color : colorAccent);
til.setHintTextColor(ColorStateList.valueOf(contrastRatioIsSufficient(color, colorPrimary) ? color : colorAccent));
til.setErrorTextColor(colorDanger);
@@ -91,7 +89,7 @@ public abstract class BrandingUtil {
}
public static void tintMenuIcon(@NonNull MenuItem menuItem, @ColorInt int color) {
- Drawable drawable = menuItem.getIcon();
+ var drawable = menuItem.getIcon();
if (drawable != null) {
drawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, color);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/DeleteAlertDialogBuilder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/DeleteAlertDialogBuilder.java
index 377c34363..ea53f4461 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/DeleteAlertDialogBuilder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/DeleteAlertDialogBuilder.java
@@ -2,7 +2,6 @@ package it.niedermann.nextcloud.deck.ui.branding;
import android.content.Context;
import android.content.DialogInterface;
-import android.widget.Button;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
@@ -28,7 +27,7 @@ public class DeleteAlertDialogBuilder extends AlertDialog.Builder {
}
public void applyBrand() {
- final Button positiveButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
+ final var positiveButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
if (positiveButton != null) {
positiveButton.setTextColor(ContextCompat.getColor(getContext(), R.color.danger));
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AbstractCardViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AbstractCardViewHolder.java
index 9522ba9b0..eb25d1270 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AbstractCardViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AbstractCardViewHolder.java
@@ -1,7 +1,5 @@
package it.niedermann.nextcloud.deck.ui.card;
-import android.content.Context;
-import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
@@ -30,7 +28,6 @@ import java.util.stream.Collectors;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.model.Account;
-import it.niedermann.nextcloud.deck.model.Attachment;
import it.niedermann.nextcloud.deck.model.Card;
import it.niedermann.nextcloud.deck.model.User;
import it.niedermann.nextcloud.deck.model.enums.DBStatus;
@@ -51,7 +48,7 @@ public abstract class AbstractCardViewHolder extends RecyclerView.ViewHolder {
*/
@CallSuper
public void bind(@NonNull FullCard fullCard, @NonNull Account account, @Nullable Long boardRemoteId, boolean hasEditPermission, @MenuRes int optionsMenu, @NonNull CardOptionsItemSelectedListener optionsItemsSelectedListener, @NonNull String counterMaxValue, @ColorInt int mainColor) {
- final Context context = itemView.getContext();
+ final var context = itemView.getContext();
bindCardClickListener(null);
bindCardLongClickListener(null);
@@ -70,9 +67,9 @@ public abstract class AbstractCardViewHolder extends RecyclerView.ViewHolder {
}
getCardMenu().setOnClickListener(view -> {
- final PopupMenu popup = new PopupMenu(context, view);
+ final var popup = new PopupMenu(context, view);
popup.inflate(optionsMenu);
- final Menu menu = popup.getMenu();
+ final var menu = popup.getMenu();
if (containsUser(fullCard.getAssignedUsers(), account.getUserName())) {
menu.removeItem(menu.findItem(R.id.action_card_assign).getItemId());
} else {
@@ -110,7 +107,7 @@ public abstract class AbstractCardViewHolder extends RecyclerView.ViewHolder {
}
private static void setupDueDate(@NonNull TextView cardDueDate, @NonNull Card card) {
- final Context context = cardDueDate.getContext();
+ final var context = cardDueDate.getContext();
cardDueDate.setText(DateUtil.getRelativeDateTimeString(context, card.getDueDate().toEpochMilli()));
ViewUtil.themeDueDate(context, cardDueDate, card.getDueDate().atZone(ZoneId.systemDefault()).toLocalDate());
}
@@ -118,7 +115,7 @@ public abstract class AbstractCardViewHolder extends RecyclerView.ViewHolder {
protected static void setupCoverImages(@NonNull Account account, @NonNull ViewGroup coverImagesHolder, @NonNull FullCard fullCard, int maxCoverImagesCount) {
coverImagesHolder.removeAllViews();
if (maxCoverImagesCount > 0) {
- final List<Attachment> coverImages = fullCard.getAttachments()
+ final var coverImages = fullCard.getAttachments()
.stream()
.filter(attachment -> MimeTypeUtil.isImage(attachment.getMimetype()))
.limit(maxCoverImagesCount)
@@ -126,8 +123,8 @@ public abstract class AbstractCardViewHolder extends RecyclerView.ViewHolder {
if (coverImages.size() > 0) {
coverImagesHolder.setVisibility(View.VISIBLE);
coverImagesHolder.post(() -> {
- for (Attachment coverImage : coverImages) {
- final ImageView coverImageView = new ImageView(coverImagesHolder.getContext());
+ for (final var coverImage : coverImages) {
+ final var coverImageView = new ImageView(coverImagesHolder.getContext());
final int coverWidth = coverImagesHolder.getWidth() / coverImages.size();
final int coverHeight = coverImagesHolder.getHeight();
coverImageView.setLayoutParams(new LinearLayout.LayoutParams(coverWidth, coverHeight));
@@ -150,7 +147,7 @@ public abstract class AbstractCardViewHolder extends RecyclerView.ViewHolder {
@Contract("null, _ -> false")
private static boolean containsUser(List<User> userList, String username) {
if (userList != null) {
- for (User user : userList) {
+ for (final var user : userList) {
if (user.getPrimaryKey().equals(username)) {
return true;
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java
index 4648e34c3..ecbc3f4ce 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java
@@ -1,5 +1,9 @@
package it.niedermann.nextcloud.deck.ui.card;
+import static androidx.preference.PreferenceManager.getDefaultSharedPreferences;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
+import static it.niedermann.nextcloud.deck.util.MimeTypeUtil.TEXT_PLAIN;
+
import android.app.Activity;
import android.content.ClipData;
import android.content.Intent;
@@ -30,7 +34,6 @@ import it.niedermann.nextcloud.deck.api.IResponseCallback;
import it.niedermann.nextcloud.deck.databinding.ItemCardCompactBinding;
import it.niedermann.nextcloud.deck.databinding.ItemCardDefaultBinding;
import it.niedermann.nextcloud.deck.databinding.ItemCardDefaultOnlyTitleBinding;
-import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.model.Card;
import it.niedermann.nextcloud.deck.model.Stack;
import it.niedermann.nextcloud.deck.model.full.FullCard;
@@ -41,10 +44,6 @@ import it.niedermann.nextcloud.deck.ui.exception.ExceptionDialogFragment;
import it.niedermann.nextcloud.deck.ui.movecard.MoveCardDialogFragment;
import it.niedermann.nextcloud.deck.util.CardUtil;
-import static androidx.preference.PreferenceManager.getDefaultSharedPreferences;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
-import static it.niedermann.nextcloud.deck.util.MimeTypeUtil.TEXT_PLAIN;
-
public class CardAdapter extends RecyclerView.Adapter<AbstractCardViewHolder> implements DragAndDropAdapter<FullCard>, CardOptionsItemSelectedListener, Branded {
private final ExecutorService executor;
@@ -110,7 +109,7 @@ public class CardAdapter extends RecyclerView.Adapter<AbstractCardViewHolder> im
if (compactMode) {
return R.layout.item_card_compact;
} else {
- final FullCard fullCard = cardList.get(position);
+ final var fullCard = cardList.get(position);
if (fullCard.getAttachments().size() == 0
&& fullCard.getAssignedUsers().size() == 0
&& fullCard.getLabels().size() == 0
@@ -124,7 +123,7 @@ public class CardAdapter extends RecyclerView.Adapter<AbstractCardViewHolder> im
@Override
public void onBindViewHolder(@NonNull AbstractCardViewHolder viewHolder, int position) {
- @NonNull FullCard fullCard = cardList.get(position);
+ @NonNull final var fullCard = cardList.get(position);
viewHolder.bind(fullCard, mainViewModel.getCurrentAccount(), mainViewModel.getCurrentBoardRemoteId(), mainViewModel.currentBoardHasEditPermission(), R.menu.card_menu, this, counterMaxValue, mainColor);
// Only enable details view if there is no one waiting for selecting a card.
@@ -192,10 +191,10 @@ public class CardAdapter extends RecyclerView.Adapter<AbstractCardViewHolder> im
@Override
public boolean onCardOptionsItemSelected(@NonNull MenuItem menuItem, @NonNull FullCard fullCard) {
- int itemId = menuItem.getItemId();
- final Account account = mainViewModel.getCurrentAccount();
+ final int itemId = menuItem.getItemId();
+ final var account = mainViewModel.getCurrentAccount();
if (itemId == R.id.share_link) {
- final Intent shareIntent = new Intent()
+ final var shareIntent = new Intent()
.setAction(Intent.ACTION_SEND)
.setType(TEXT_PLAIN)
.putExtra(Intent.EXTRA_SUBJECT, fullCard.getCard().getTitle())
@@ -204,7 +203,7 @@ public class CardAdapter extends RecyclerView.Adapter<AbstractCardViewHolder> im
activity.startActivity(Intent.createChooser(shareIntent, fullCard.getCard().getTitle()));
return true;
} else if (itemId == R.id.share_content) {
- final Intent shareIntent = new Intent()
+ final var shareIntent = new Intent()
.setAction(Intent.ACTION_SEND)
.setType(TEXT_PLAIN)
.putExtra(Intent.EXTRA_SUBJECT, fullCard.getCard().getTitle())
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/DefaultCardViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/DefaultCardViewHolder.java
index 80f6aabbf..b7e6f911b 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/DefaultCardViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/DefaultCardViewHolder.java
@@ -1,6 +1,5 @@
package it.niedermann.nextcloud.deck.ui.card;
-import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
@@ -16,16 +15,9 @@ import androidx.core.content.ContextCompat;
import com.google.android.material.card.MaterialCardView;
-import org.jetbrains.annotations.Contract;
-
-import java.util.List;
-
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.ItemCardDefaultBinding;
import it.niedermann.nextcloud.deck.model.Account;
-import it.niedermann.nextcloud.deck.model.Card.TaskStatus;
-import it.niedermann.nextcloud.deck.model.Label;
-import it.niedermann.nextcloud.deck.model.User;
import it.niedermann.nextcloud.deck.model.full.FullCard;
public class DefaultCardViewHolder extends AbstractCardViewHolder {
@@ -46,7 +38,7 @@ public class DefaultCardViewHolder extends AbstractCardViewHolder {
public void bind(@NonNull FullCard fullCard, @NonNull Account account, @Nullable Long boardRemoteId, boolean hasEditPermission, @MenuRes int optionsMenu, @NonNull CardOptionsItemSelectedListener optionsItemsSelectedListener, @NonNull String counterMaxValue, @ColorInt int mainColor) {
super.bind(fullCard, account, boardRemoteId, hasEditPermission, optionsMenu, optionsItemsSelectedListener, counterMaxValue, mainColor);
- final Context context = itemView.getContext();
+ final var context = itemView.getContext();
if (fullCard.getAssignedUsers() != null && fullCard.getAssignedUsers().size() > 0) {
binding.overlappingAvatars.setAvatars(account, fullCard.getAssignedUsers());
@@ -74,7 +66,7 @@ public class DefaultCardViewHolder extends AbstractCardViewHolder {
binding.cardCountComments.setVisibility(View.VISIBLE);
}
- final List<Label> labels = fullCard.getLabels();
+ final var labels = fullCard.getLabels();
if (labels != null && labels.size() > 0) {
binding.labels.updateLabels(labels);
binding.labels.setVisibility(View.VISIBLE);
@@ -83,7 +75,7 @@ public class DefaultCardViewHolder extends AbstractCardViewHolder {
binding.labels.setVisibility(View.GONE);
}
- final TaskStatus taskStatus = fullCard.getCard().getTaskStatus();
+ final var taskStatus = fullCard.getCard().getTaskStatus();
if (taskStatus.taskCount > 0) {
binding.cardCountTasks.setText(context.getResources().getString(R.string.task_count, String.valueOf(taskStatus.doneCount), String.valueOf(taskStatus.taskCount)));
binding.cardCountTasks.setCompoundDrawablesWithIntrinsicBounds(ContextCompat.getDrawable(context, R.drawable.ic_check_grey600_24dp), null, null, null);
@@ -147,16 +139,4 @@ public class DefaultCardViewHolder extends AbstractCardViewHolder {
textView.setText("");
}
}
-
- @Contract("null, _ -> false")
- private static boolean containsUser(List<User> userList, String username) {
- if (userList != null) {
- for (User user : userList) {
- if (user.getPrimaryKey().equals(username)) {
- return true;
- }
- }
- }
- return false;
- }
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java
index 4356ba841..b5317c9a8 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java
@@ -1,8 +1,11 @@
package it.niedermann.nextcloud.deck.ui.card;
+import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToPrimaryTabLayout;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.tintMenuIcon;
+
import android.content.Context;
import android.content.Intent;
-import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputFilter;
@@ -30,10 +33,6 @@ import it.niedermann.nextcloud.deck.model.ocs.Version;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler;
import it.niedermann.nextcloud.deck.util.CardUtil;
-import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToPrimaryTabLayout;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.tintMenuIcon;
-
public class EditActivity extends AppCompatActivity {
private static final String BUNDLE_KEY_ACCOUNT = "account";
@@ -100,13 +99,13 @@ public class EditActivity extends AppCompatActivity {
}
private void loadDataFromIntent() {
- final Bundle args = getIntent().getExtras();
+ final var args = getIntent().getExtras();
if (args == null || !args.containsKey(BUNDLE_KEY_ACCOUNT) || !args.containsKey(BUNDLE_KEY_BOARD_LOCAL_ID) || !args.containsKey(BUNDLE_KEY_CARD_LOCAL_ID)) {
throw new IllegalArgumentException("Provide at least " + BUNDLE_KEY_ACCOUNT + " and " + BUNDLE_KEY_BOARD_LOCAL_ID + " and " + BUNDLE_KEY_CARD_LOCAL_ID + " of the card that should be edited.");
}
- final Account account = (Account) args.getSerializable(BUNDLE_KEY_ACCOUNT);
+ final var account = (Account) args.getSerializable(BUNDLE_KEY_ACCOUNT);
if (account == null) {
throw new IllegalArgumentException(BUNDLE_KEY_ACCOUNT + " must not be null.");
}
@@ -203,8 +202,8 @@ public class EditActivity extends AppCompatActivity {
binding.tabLayout.removeAllTabs();
binding.tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
- final CardTabAdapter adapter = new CardTabAdapter(this);
- final TabLayoutMediator mediator = new TabLayoutMediator(binding.tabLayout, binding.pager, (tab, position) -> {
+ final var adapter = new CardTabAdapter(this);
+ final var mediator = new TabLayoutMediator(binding.tabLayout, binding.pager, (tab, position) -> {
tab.setIcon(viewModel.hasCommentsAbility()
? tabIconsWithComments[position]
: tabIcons[position]
@@ -270,7 +269,7 @@ public class EditActivity extends AppCompatActivity {
}
private void applyBoardBranding(int mainColor) {
- final Drawable navigationIcon = binding.toolbar.getNavigationIcon();
+ final var navigationIcon = binding.toolbar.getNavigationIcon();
if (navigationIcon == null) {
DeckLog.error("Expected navigationIcon to be present.");
} else {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditCardViewModel.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditCardViewModel.java
index 15b7c95ea..e97973ee0 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditCardViewModel.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditCardViewModel.java
@@ -1,5 +1,8 @@
package it.niedermann.nextcloud.deck.ui.card;
+import static androidx.lifecycle.Transformations.distinctUntilChanged;
+import static androidx.lifecycle.Transformations.switchMap;
+
import android.app.Application;
import android.content.SharedPreferences;
import android.text.TextUtils;
@@ -30,9 +33,6 @@ import it.niedermann.nextcloud.deck.model.full.FullCardWithProjects;
import it.niedermann.nextcloud.deck.model.ocs.Activity;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
-import static androidx.lifecycle.Transformations.distinctUntilChanged;
-import static androidx.lifecycle.Transformations.switchMap;
-
@SuppressWarnings("WeakerAccess")
public class EditCardViewModel extends AndroidViewModel {
@@ -62,7 +62,7 @@ public class EditCardViewModel extends AndroidViewModel {
public LiveData<Boolean> getDescriptionMode() {
return distinctUntilChanged(switchMap(distinctUntilChanged(new SharedPreferenceBooleanLiveData(sharedPreferences, getApplication().getString(R.string.shared_preference_description_preview), false)), (isPreview) -> {
// When we are in preview mode but the description of the card is empty, we explicitly switch to the edit mode
- final FullCardWithProjects fullCard = getFullCard();
+ final var fullCard = getFullCard();
if (fullCard == null) {
throw new IllegalStateException("Description mode must be queried after initializing " + EditCardViewModel.class.getSimpleName() + " with a card.");
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java
index de9d23829..f8fd967aa 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/LabelAutoCompleteAdapter.java
@@ -1,8 +1,9 @@
package it.niedermann.nextcloud.deck.ui.card;
+import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce;
+
import android.content.res.ColorStateList;
import android.graphics.Color;
-import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -14,10 +15,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.drawable.DrawableCompat;
-import androidx.lifecycle.LiveData;
import java.util.Collection;
-import java.util.List;
import java.util.Random;
import it.niedermann.android.util.ColorUtil;
@@ -26,8 +25,6 @@ import it.niedermann.nextcloud.deck.databinding.ItemAutocompleteLabelBinding;
import it.niedermann.nextcloud.deck.model.Label;
import it.niedermann.nextcloud.deck.util.AutoCompleteAdapter;
-import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce;
-
public class LabelAutoCompleteAdapter extends AutoCompleteAdapter<Label> {
@Nullable
private Label createLabel;
@@ -60,7 +57,7 @@ public class LabelAutoCompleteAdapter extends AutoCompleteAdapter<Label> {
binding = ItemAutocompleteLabelBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
}
- final Label label = getItem(position);
+ final var label = getItem(position);
final int labelColor = label.getColor();
final int color = ColorUtil.INSTANCE.getForegroundColorForBackgroundColor(labelColor);
@@ -69,7 +66,7 @@ public class LabelAutoCompleteAdapter extends AutoCompleteAdapter<Label> {
binding.label.setTextColor(color);
if (ITEM_CREATE == label.getLocalId()) {
- final Drawable plusIcon = DrawableCompat.wrap(ContextCompat.getDrawable(binding.label.getContext(), R.drawable.ic_plus));
+ final var plusIcon = DrawableCompat.wrap(ContextCompat.getDrawable(binding.label.getContext(), R.drawable.ic_plus));
DrawableCompat.setTint(plusIcon, color);
binding.label.setChipIcon(plusIcon);
} else {
@@ -87,7 +84,7 @@ public class LabelAutoCompleteAdapter extends AutoCompleteAdapter<Label> {
if (constraint != null) {
lastFilterText = constraint.toString();
activity.runOnUiThread(() -> {
- LiveData<List<Label>> liveData = constraint.toString().trim().length() > 0
+ final var liveData = constraint.toString().trim().length() > 0
? syncManager.searchNotYetAssignedLabelsByTitle(accountId, boardId, cardId, constraint.toString())
: syncManager.findProposalsForLabelsToAssign(accountId, boardId, cardId);
observeOnce(liveData, activity, (labels -> {
@@ -112,7 +109,7 @@ public class LabelAutoCompleteAdapter extends AutoCompleteAdapter<Label> {
}
private static boolean labelTitleIsPresent(@NonNull Collection<Label> labels, @NonNull CharSequence title) {
- for (Label label : labels) {
+ for (final var label : labels) {
if (label.getTitle().contentEquals(title)) {
return true;
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/NewCardDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/NewCardDialog.java
index 5332dc0e0..f8bfbe25b 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/NewCardDialog.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/NewCardDialog.java
@@ -1,4 +1,4 @@
-package it.niedermann.nextcloud.deck.ui.branding;
+package it.niedermann.nextcloud.deck.ui.card;
import static androidx.lifecycle.Transformations.distinctUntilChanged;
@@ -28,7 +28,7 @@ import it.niedermann.nextcloud.deck.api.IResponseCallback;
import it.niedermann.nextcloud.deck.databinding.DialogNewCardBinding;
import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.model.full.FullCard;
-import it.niedermann.nextcloud.deck.ui.card.EditActivity;
+import it.niedermann.nextcloud.deck.ui.branding.BrandingUtil;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionDialogFragment;
import it.niedermann.nextcloud.deck.ui.preparecreate.PrepareCreateViewModel;
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityAdapter.java
index 5564d8a15..a64cf3a44 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityAdapter.java
@@ -1,6 +1,5 @@
package it.niedermann.nextcloud.deck.ui.card.activities;
-import android.content.Context;
import android.view.LayoutInflater;
import android.view.MenuInflater;
import android.view.ViewGroup;
@@ -30,8 +29,8 @@ public class CardActivityAdapter extends RecyclerView.Adapter<CardActivityViewHo
@NonNull
@Override
public CardActivityViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- final Context context = parent.getContext();
- ItemActivityBinding binding = ItemActivityBinding.inflate(LayoutInflater.from(context), parent, false);
+ final var context = parent.getContext();
+ final var binding = ItemActivityBinding.inflate(LayoutInflater.from(context), parent, false);
return new CardActivityViewHolder(binding);
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityFragment.java
index 650670653..d00ce05dd 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityFragment.java
@@ -27,7 +27,7 @@ public class CardActivityFragment extends Fragment {
Bundle savedInstanceState) {
binding = FragmentCardEditTabActivitiesBinding.inflate(inflater, container, false);
- final EditCardViewModel viewModel = new ViewModelProvider(requireActivity()).get(EditCardViewModel.class);
+ final var viewModel = new ViewModelProvider(requireActivity()).get(EditCardViewModel.class);
// This might be a zombie fragment with an empty EditCardViewModel after Android killed the activity (but not the fragment instance
// See https://github.com/stefan-niedermann/nextcloud-deck/issues/478
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityViewHolder.java
index 6362f90dd..0678357d4 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/activities/CardActivityViewHolder.java
@@ -26,7 +26,7 @@ public class CardActivityViewHolder extends RecyclerView.ViewHolder {
}
public void bind(@NonNull Activity activity, @NonNull MenuInflater inflater) {
- final Context context = itemView.getContext();
+ final var context = itemView.getContext();
binding.date.setText(DateUtil.getRelativeDateTimeString(context, activity.getLastModified().toEpochMilli()));
binding.subject.setText(activity.getSubject());
itemView.setOnClickListener(View::showContextMenu);
@@ -34,7 +34,7 @@ public class CardActivityViewHolder extends RecyclerView.ViewHolder {
inflater.inflate(R.menu.activity_menu, menu);
menu.findItem(android.R.id.copy).setOnMenuItemClickListener(item -> ClipboardUtil.INSTANCE.copyToClipboard(context, activity.getSubject()));
});
- final ActivityType type = ActivityType.findById(activity.getType());
+ final var type = ActivityType.findById(activity.getType());
setImageResource(binding.type, type);
setImageColor(context, binding.type, type);
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/assignee/CardAssigneeDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/assignee/CardAssigneeDialog.java
index c86807cb2..8ee2c6318 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/assignee/CardAssigneeDialog.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/assignee/CardAssigneeDialog.java
@@ -1,5 +1,7 @@
package it.niedermann.nextcloud.deck.ui.card.assignee;
+import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
+
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
@@ -9,15 +11,12 @@ import android.view.LayoutInflater;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.swiperefreshlayout.widget.CircularProgressDrawable;
import com.bumptech.glide.Glide;
-import java.io.Serializable;
-
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogPreviewBinding;
import it.niedermann.nextcloud.deck.model.User;
@@ -25,8 +24,6 @@ import it.niedermann.nextcloud.deck.ui.branding.DeleteAlertDialogBuilder;
import it.niedermann.nextcloud.deck.ui.card.EditCardViewModel;
import it.niedermann.nextcloud.deck.ui.card.attachments.previewdialog.PreviewDialog;
-import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
-
/**
* TODO maybe this can be merged with {@link PreviewDialog}
*/
@@ -52,11 +49,11 @@ public class CardAssigneeDialog extends DialogFragment {
this.cardAssigneeListener = (CardAssigneeListener) context;
}
- final Bundle args = requireArguments();
+ final var args = requireArguments();
if (!args.containsKey(KEY_USER)) {
throw new IllegalArgumentException("Provide at least " + KEY_USER);
}
- final Serializable user = args.getSerializable(KEY_USER);
+ final var user = args.getSerializable(KEY_USER);
if (user == null) {
throw new IllegalArgumentException(KEY_USER + " must not be null.");
}
@@ -69,7 +66,7 @@ public class CardAssigneeDialog extends DialogFragment {
binding = DialogPreviewBinding.inflate(LayoutInflater.from(requireContext()));
viewModel = new ViewModelProvider(requireActivity()).get(EditCardViewModel.class);
- AlertDialog.Builder dialogBuilder = new DeleteAlertDialogBuilder(requireContext());
+ final var dialogBuilder = new DeleteAlertDialogBuilder(requireContext());
if (viewModel.canEdit() && cardAssigneeListener != null) {
dialogBuilder.setPositiveButton(R.string.simple_unassign, (d, w) -> cardAssigneeListener.onUnassignUser(user));
@@ -85,9 +82,9 @@ public class CardAssigneeDialog extends DialogFragment {
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
- final Context context = requireContext();
+ final var context = requireContext();
- final CircularProgressDrawable circularProgressDrawable = new CircularProgressDrawable(context);
+ final var circularProgressDrawable = new CircularProgressDrawable(context);
circularProgressDrawable.setStrokeWidth(5f);
circularProgressDrawable.setCenterRadius(30f);
circularProgressDrawable.setColorSchemeColors(isDarkTheme(context) ? Color.LTGRAY : Color.DKGRAY);
@@ -102,8 +99,8 @@ public class CardAssigneeDialog extends DialogFragment {
}
public static DialogFragment newInstance(@NonNull User user) {
- final DialogFragment fragment = new CardAssigneeDialog();
- final Bundle args = new Bundle();
+ final var fragment = new CardAssigneeDialog();
+ final var args = new Bundle();
args.putSerializable(KEY_USER, user);
fragment.setArguments(args);
return fragment;
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/AttachmentViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/AttachmentViewHolder.java
index e2aca1f28..cb77ae89b 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/AttachmentViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/AttachmentViewHolder.java
@@ -52,7 +52,7 @@ public abstract class AttachmentViewHolder extends RecyclerView.ViewHolder {
abstract protected ImageView getPreview();
protected void setNotSyncedYetStatus(boolean synced, @ColorInt int mainColor) {
- final ImageView notSyncedYet = getNotSyncedYetStatusIcon();
+ final var notSyncedYet = getNotSyncedYetStatusIcon();
DrawableCompat.setTint(notSyncedYet.getDrawable(), BrandingUtil.getSecondaryForegroundColorDependingOnTheme(notSyncedYet.getContext(), mainColor));
notSyncedYet.setVisibility(synced ? View.GONE : View.VISIBLE);
}
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 16af8bb8f..3b18515c3 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
@@ -1,8 +1,10 @@
package it.niedermann.nextcloud.deck.ui.card.attachments;
+import static androidx.lifecycle.Transformations.distinctUntilChanged;
+import static androidx.recyclerview.widget.RecyclerView.NO_ID;
+import static it.niedermann.nextcloud.deck.util.AttachmentUtil.openAttachmentInBrowser;
+
import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
import android.view.LayoutInflater;
import android.view.MenuInflater;
import android.view.View;
@@ -29,10 +31,6 @@ import it.niedermann.nextcloud.deck.ui.attachments.AttachmentsActivity;
import it.niedermann.nextcloud.deck.ui.branding.Branded;
import it.niedermann.nextcloud.deck.util.MimeTypeUtil;
-import static androidx.lifecycle.Transformations.distinctUntilChanged;
-import static androidx.recyclerview.widget.RecyclerView.NO_ID;
-import static it.niedermann.nextcloud.deck.util.AttachmentUtil.openAttachmentInBrowser;
-
@SuppressWarnings("WeakerAccess")
public class CardAttachmentAdapter extends RecyclerView.Adapter<AttachmentViewHolder> implements Branded {
@@ -81,7 +79,7 @@ public class CardAttachmentAdapter extends RecyclerView.Adapter<AttachmentViewHo
@NonNull
@Override
public AttachmentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- final Context context = parent.getContext();
+ final var context = parent.getContext();
switch (viewType) {
case VIEW_TYPE_IMAGE:
return new ImageAttachmentViewHolder(ItemAttachmentImageBinding.inflate(LayoutInflater.from(context), parent, false));
@@ -93,15 +91,15 @@ public class CardAttachmentAdapter extends RecyclerView.Adapter<AttachmentViewHo
@Override
public void onBindViewHolder(@NonNull AttachmentViewHolder holder, int position) {
- final Attachment attachment = attachments.get(position);
- final Context context = holder.itemView.getContext();
+ final var attachment = attachments.get(position);
+ final var context = holder.itemView.getContext();
final View.OnClickListener onClickListener;
switch (getItemViewType(position)) {
case VIEW_TYPE_IMAGE: {
onClickListener = (event) -> {
attachmentClickedListener.onAttachmentClicked(position);
- final Intent intent = AttachmentsActivity.createIntent(context, account, cardLocalId, attachment.getLocalId());
+ final var intent = AttachmentsActivity.createIntent(context, account, cardLocalId, attachment.getLocalId());
if (context instanceof Activity) {
String transitionName = context.getString(R.string.transition_attachment_preview, String.valueOf(attachment.getLocalId()));
holder.getPreview().setTransitionName(transitionName);
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 4cf57ba6f..534e296e5 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
@@ -1,14 +1,31 @@
package it.niedermann.nextcloud.deck.ui.card.attachments;
+import static android.Manifest.permission.CAMERA;
+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.M;
+import static android.view.View.GONE;
+import static android.view.View.VISIBLE;
+import static androidx.core.content.PermissionChecker.PERMISSION_GRANTED;
+import static androidx.core.content.PermissionChecker.checkSelfPermission;
+import static com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_COLLAPSED;
+import static com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_HIDDEN;
+import static java.net.HttpURLConnection.HTTP_CONFLICT;
+import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToFAB;
+import static it.niedermann.nextcloud.deck.ui.card.attachments.CardAttachmentAdapter.VIEW_TYPE_DEFAULT;
+import static it.niedermann.nextcloud.deck.ui.card.attachments.CardAttachmentAdapter.VIEW_TYPE_IMAGE;
+import static it.niedermann.nextcloud.deck.util.FilesUtil.copyContentUriToTempFile;
+
import android.content.ContentResolver;
import android.content.Intent;
-import android.content.SharedPreferences;
import android.content.res.ColorStateList;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
-import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -71,25 +88,6 @@ import it.niedermann.nextcloud.deck.util.JavaCompressor;
import it.niedermann.nextcloud.deck.util.MimeTypeUtil;
import it.niedermann.nextcloud.deck.util.VCardUtil;
-import static android.Manifest.permission.CAMERA;
-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.M;
-import static android.view.View.GONE;
-import static android.view.View.VISIBLE;
-import static androidx.core.content.PermissionChecker.PERMISSION_GRANTED;
-import static androidx.core.content.PermissionChecker.checkSelfPermission;
-import static com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_COLLAPSED;
-import static com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_HIDDEN;
-import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToFAB;
-import static it.niedermann.nextcloud.deck.ui.card.attachments.CardAttachmentAdapter.VIEW_TYPE_DEFAULT;
-import static it.niedermann.nextcloud.deck.ui.card.attachments.CardAttachmentAdapter.VIEW_TYPE_IMAGE;
-import static it.niedermann.nextcloud.deck.util.FilesUtil.copyContentUriToTempFile;
-import static java.net.HttpURLConnection.HTTP_CONFLICT;
-
public class CardAttachmentsFragment extends Fragment implements AttachmentDeletedListener, AttachmentClickedListener {
private FragmentCardEditTabAttachmentsBinding binding;
@@ -182,9 +180,9 @@ public class CardAttachmentsFragment extends Fragment implements AttachmentDelet
R.color.mdtp_transparent_black, android.R.color.transparent, R.dimen.attachments_bottom_navigation_height));
binding.pickerBackdrop.setOnClickListener(v -> mBottomSheetBehaviour.setState(STATE_HIDDEN));
- final DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
+ final var displayMetrics = getResources().getDisplayMetrics();
final int spanCount = (int) ((displayMetrics.widthPixels / displayMetrics.density) / getResources().getInteger(R.integer.max_dp_attachment_column));
- final GridLayoutManager glm = new GridLayoutManager(getContext(), spanCount);
+ final var glm = new GridLayoutManager(getContext(), spanCount);
glm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
@@ -234,7 +232,7 @@ public class CardAttachmentsFragment extends Fragment implements AttachmentDelet
binding.fab.hide();
binding.emptyContentView.hideDescription();
}
- final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext());
+ final var sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext());
compressImagesOnUpload = sharedPreferences.getBoolean(getString(R.string.pref_key_compress_image_attachments), true);
editViewModel.getBrandingColor().observe(getViewLifecycleOwner(), this::applyBrand);
return binding.getRoot();
@@ -326,7 +324,7 @@ public class CardAttachmentsFragment extends Fragment implements AttachmentDelet
}
private void openNativeContactPicker() {
- final Intent intent = new Intent(Intent.ACTION_PICK).setType(ContactsContract.Contacts.CONTENT_TYPE);
+ final var intent = new Intent(Intent.ACTION_PICK).setType(ContactsContract.Contacts.CONTENT_TYPE);
if (intent.resolveActivity(requireContext().getPackageManager()) != null) {
startActivityForResult(intent, REQUEST_CODE_PICK_CONTACT);
}
@@ -443,15 +441,15 @@ public class CardAttachmentsFragment extends Fragment implements AttachmentDelet
}
private void uploadNewAttachmentFromFile(@NonNull File fileToUpload, String mimeType) {
- for (Attachment existingAttachment : editViewModel.getFullCard().getAttachments()) {
+ for (final var existingAttachment : editViewModel.getFullCard().getAttachments()) {
final String existingPath = existingAttachment.getLocalPath();
if (existingPath != null && existingPath.equals(fileToUpload.getAbsolutePath())) {
BrandedSnackbar.make(binding.coordinatorLayout, R.string.attachment_already_exists, Snackbar.LENGTH_LONG).show();
return;
}
}
- final Instant now = Instant.now();
- final Attachment a = new Attachment();
+ final var now = Instant.now();
+ final var a = new Attachment();
a.setMimetype(mimeType);
a.setData(fileToUpload.getName());
a.setFilename(fileToUpload.getName());
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/DeleteAttachmentDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/DeleteAttachmentDialogFragment.java
index 270c0a138..63441bbd4 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/DeleteAttachmentDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/DeleteAttachmentDialogFragment.java
@@ -5,7 +5,6 @@ import android.content.Context;
import android.os.Bundle;
import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import it.niedermann.nextcloud.deck.R;
@@ -40,18 +39,18 @@ public class DeleteAttachmentDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- AlertDialog.Builder builder = new DeleteAlertDialogBuilder(requireContext())
+ return new DeleteAlertDialogBuilder(requireContext())
.setTitle(getString(R.string.delete_something, attachment.getFilename()))
.setMessage(R.string.attachment_delete_message)
.setPositiveButton(R.string.simple_delete, (dialog, whichButton) -> deleteAttachmentListener.onAttachmentDeleted(attachment))
- .setNeutralButton(android.R.string.cancel, null);
- return builder.create();
+ .setNeutralButton(android.R.string.cancel, null)
+ .create();
}
public static DialogFragment newInstance(Attachment attachment) {
- final DeleteAttachmentDialogFragment dialog = new DeleteAttachmentDialogFragment();
+ final var dialog = new DeleteAttachmentDialogFragment();
- final Bundle args = new Bundle();
+ final var args = new Bundle();
args.putSerializable(KEY_ATTACHMENT, attachment);
dialog.setArguments(args);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java
index 22ac0c694..930ab76ab 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java
@@ -1,8 +1,15 @@
package it.niedermann.nextcloud.deck.ui.card.attachments.picker;
+import static android.provider.ContactsContract.CommonDataKinds.Email.DATA;
+import static android.provider.ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY;
+import static android.provider.ContactsContract.CommonDataKinds.Phone.NUMBER;
+import static android.provider.ContactsContract.Contacts.CONTENT_LOOKUP_URI;
+import static android.provider.ContactsContract.Contacts.CONTENT_URI;
+import static android.provider.ContactsContract.Contacts.DISPLAY_NAME;
+import static android.provider.ContactsContract.Contacts.SORT_KEY_PRIMARY;
+import static android.provider.ContactsContract.Contacts._ID;
+
import android.content.Context;
-import android.database.Cursor;
-import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Handler;
@@ -19,21 +26,11 @@ import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.RequestBuilder;
import java.io.IOException;
-import java.io.InputStream;
import java.util.function.BiConsumer;
import it.niedermann.nextcloud.deck.databinding.ItemPickerNativeBinding;
import it.niedermann.nextcloud.deck.databinding.ItemPickerUserBinding;
-import static android.provider.ContactsContract.CommonDataKinds.Email.DATA;
-import static android.provider.ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY;
-import static android.provider.ContactsContract.CommonDataKinds.Phone.NUMBER;
-import static android.provider.ContactsContract.Contacts.CONTENT_LOOKUP_URI;
-import static android.provider.ContactsContract.Contacts.CONTENT_URI;
-import static android.provider.ContactsContract.Contacts.DISPLAY_NAME;
-import static android.provider.ContactsContract.Contacts.SORT_KEY_PRIMARY;
-import static android.provider.ContactsContract.Contacts._ID;
-
public class ContactAdapter extends AbstractCursorPickerAdapter<RecyclerView.ViewHolder> {
private final int lookupKeyColumnIndex;
@@ -67,22 +64,22 @@ public class ContactAdapter extends AbstractCursorPickerAdapter<RecyclerView.Vie
break;
}
case VIEW_TYPE_ITEM: {
- final ContactItemViewHolder viewHolder = (ContactItemViewHolder) holder;
+ final var viewHolder = (ContactItemViewHolder) holder;
if (!cursor.isClosed()) {
cursor.moveToPosition(position - 1);
final String displayName = cursor.getString(displayNameColumnIndex);
final String lookupKey = cursor.getString(lookupKeyColumnIndex);
bindExecutor.execute(() -> {
- try (InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(contentResolver, Uri.withAppendedPath(CONTENT_LOOKUP_URI, lookupKey))) {
- final Bitmap thumbnail = BitmapFactory.decodeStream(inputStream);
+ try (final var inputStream = ContactsContract.Contacts.openContactPhotoInputStream(contentResolver, Uri.withAppendedPath(CONTENT_LOOKUP_URI, lookupKey))) {
+ final var thumbnail = BitmapFactory.decodeStream(inputStream);
String contactInformation = "";
- try (final Cursor phoneCursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[]{NUMBER}, LOOKUP_KEY + " = ?", new String[]{lookupKey}, null)) {
+ try (final var phoneCursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[]{NUMBER}, LOOKUP_KEY + " = ?", new String[]{lookupKey}, null)) {
if (phoneCursor != null && phoneCursor.moveToFirst()) {
contactInformation = phoneCursor.getString(phoneCursor.getColumnIndex(NUMBER));
}
}
if (TextUtils.isEmpty(contactInformation)) {
- try (final Cursor emailCursor = contentResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, new String[]{DATA}, LOOKUP_KEY + " = ?", new String[]{lookupKey}, null)) {
+ try (final var emailCursor = contentResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, new String[]{DATA}, LOOKUP_KEY + " = ?", new String[]{lookupKey}, null)) {
if (emailCursor != null && emailCursor.moveToFirst()) {
contactInformation = emailCursor.getString(emailCursor.getColumnIndex(DATA));
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryPhotoPreviewItemViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryPhotoPreviewItemViewHolder.java
index 00a833e57..91f6bc13d 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryPhotoPreviewItemViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryPhotoPreviewItemViewHolder.java
@@ -1,5 +1,7 @@
package it.niedermann.nextcloud.deck.ui.card.attachments.picker;
+import static androidx.camera.core.CameraSelector.DEFAULT_BACK_CAMERA;
+
import androidx.annotation.NonNull;
import androidx.camera.core.Preview;
import androidx.camera.lifecycle.ProcessCameraProvider;
@@ -7,15 +9,11 @@ import androidx.core.content.ContextCompat;
import androidx.lifecycle.LifecycleOwner;
import androidx.recyclerview.widget.RecyclerView;
-import com.google.common.util.concurrent.ListenableFuture;
-
import java.util.concurrent.ExecutionException;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.databinding.ItemPhotoPreviewBinding;
-import static androidx.camera.core.CameraSelector.DEFAULT_BACK_CAMERA;
-
public class GalleryPhotoPreviewItemViewHolder extends RecyclerView.ViewHolder {
private final ItemPhotoPreviewBinding binding;
@@ -28,12 +26,12 @@ public class GalleryPhotoPreviewItemViewHolder extends RecyclerView.ViewHolder {
public void bind(@NonNull Runnable openNativePicker, @NonNull LifecycleOwner lifecycleOwner) {
itemView.setOnClickListener((v) -> openNativePicker.run());
- ListenableFuture<ProcessCameraProvider> cameraProviderFuture = ProcessCameraProvider.getInstance(itemView.getContext());
+ final var cameraProviderFuture = ProcessCameraProvider.getInstance(itemView.getContext());
cameraProviderFuture.addListener(() -> {
try {
unbind();
cameraProvider = cameraProviderFuture.get();
- Preview previewUseCase = new Preview.Builder().build();
+ final var previewUseCase = new Preview.Builder().build();
previewUseCase.setSurfaceProvider(binding.preview.getSurfaceProvider());
cameraProvider.bindToLifecycle(lifecycleOwner, DEFAULT_BACK_CAMERA, previewUseCase);
} catch (ExecutionException | InterruptedException | IllegalArgumentException e) {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/previewdialog/PreviewDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/previewdialog/PreviewDialog.java
index 1f425f728..bbe0dc8a1 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/previewdialog/PreviewDialog.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/previewdialog/PreviewDialog.java
@@ -1,7 +1,10 @@
package it.niedermann.nextcloud.deck.ui.card.attachments.previewdialog;
+import static android.view.View.GONE;
+import static android.view.View.VISIBLE;
+import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
+
import android.app.Dialog;
-import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
@@ -20,10 +23,6 @@ import com.bumptech.glide.RequestBuilder;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogPreviewBinding;
-import static android.view.View.GONE;
-import static android.view.View.VISIBLE;
-import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
-
public class PreviewDialog extends DialogFragment {
private DialogPreviewBinding binding;
@@ -37,14 +36,14 @@ public class PreviewDialog extends DialogFragment {
viewModel = new ViewModelProvider(requireActivity()).get(PreviewDialogViewModel.class);
binding = DialogPreviewBinding.inflate(LayoutInflater.from(requireContext()));
- final Context context = requireContext();
+ final var context = requireContext();
this.imageBuilder$ = this.viewModel.getImageBuilder();
this.imageBuilder$.observe(requireActivity(), builder -> {
if (builder == null) {
binding.avatar.setVisibility(GONE);
} else {
- final CircularProgressDrawable circularProgressDrawable = new CircularProgressDrawable(context);
+ final var circularProgressDrawable = new CircularProgressDrawable(context);
circularProgressDrawable.setStrokeWidth(5f);
circularProgressDrawable.setCenterRadius(30f);
circularProgressDrawable.setColorSchemeColors(isDarkTheme(context) ? Color.LTGRAY : Color.DKGRAY);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsAdapter.java
index 4fde5a4e1..18bf21ceb 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsAdapter.java
@@ -1,5 +1,8 @@
package it.niedermann.nextcloud.deck.ui.card.comments;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.readBrandMainColor;
+
import android.content.Context;
import android.view.LayoutInflater;
import android.view.MenuInflater;
@@ -18,9 +21,6 @@ import it.niedermann.nextcloud.deck.databinding.ItemCommentBinding;
import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.model.ocs.comment.full.FullDeckComment;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.readBrandMainColor;
-
public class CardCommentsAdapter extends RecyclerView.Adapter<ItemCommentViewHolder> {
private final int mainColor;
@@ -63,7 +63,7 @@ public class CardCommentsAdapter extends RecyclerView.Adapter<ItemCommentViewHol
@Override
public void onBindViewHolder(@NonNull ItemCommentViewHolder holder, int position) {
- final FullDeckComment comment = comments.get(position);
+ final var comment = comments.get(position);
holder.bind(comment, account, mainColor, menuInflater, deletedListener, selectAsReplyListener, fragmentManager, (changedText) -> {
if (!Objects.equals(changedText, comment.getComment().getMessage())) {
DeckLog.info("Toggled checkbox in comment with localId", comment.getLocalId());
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsEditDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsEditDialogFragment.java
index a61d7c1ba..2f1ed7b09 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsEditDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsEditDialogFragment.java
@@ -1,5 +1,7 @@
package it.niedermann.nextcloud.deck.ui.card.comments;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditTextInputLayout;
+
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
@@ -19,8 +21,6 @@ import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogAddCommentBinding;
import it.niedermann.nextcloud.deck.ui.branding.BrandedDialogFragment;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditTextInputLayout;
-
public class CardCommentsEditDialogFragment extends BrandedDialogFragment {
private static final String BUNDLE_KEY_COMMENT_ID = "commentId";
private static final String BUNDLE_KEY_COMMENT_MESSAGE = "commentMessage";
@@ -70,11 +70,11 @@ public class CardCommentsEditDialogFragment extends BrandedDialogFragment {
}
public static DialogFragment newInstance(@NonNull Long commentLocalId, String message) {
- Bundle bundle = new Bundle();
- bundle.putLong(BUNDLE_KEY_COMMENT_ID, commentLocalId);
- bundle.putString(BUNDLE_KEY_COMMENT_MESSAGE, message);
- DialogFragment fragment = new CardCommentsEditDialogFragment();
- fragment.setArguments(bundle);
+ final var fragment = new CardCommentsEditDialogFragment();
+ final var args = new Bundle();
+ args.putLong(BUNDLE_KEY_COMMENT_ID, commentLocalId);
+ args.putString(BUNDLE_KEY_COMMENT_MESSAGE, message);
+ fragment.setArguments(args);
return fragment;
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsMentionProposer.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsMentionProposer.java
index 7ca7a6384..60aef597b 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsMentionProposer.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsMentionProposer.java
@@ -1,5 +1,7 @@
package it.niedermann.nextcloud.deck.ui.card.comments;
+import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce;
+
import android.annotation.SuppressLint;
import android.net.Uri;
import android.text.Editable;
@@ -26,8 +28,6 @@ import it.niedermann.nextcloud.deck.model.User;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
import it.niedermann.nextcloud.deck.ui.card.comments.util.CommentsUtil;
-import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce;
-
public class CardCommentsMentionProposer implements TextWatcher {
private final int avatarSize;
@@ -72,7 +72,7 @@ public class CardCommentsMentionProposer implements TextWatcher {
public void onTextChanged(CharSequence s, int start, int before, int count) {
final int selectionStart = editText.getSelectionStart();
final int selectionEnd = editText.getSelectionEnd();
- final Pair<String, Integer> mentionProposal = CommentsUtil.getUserNameForMentionProposal(s.toString(), selectionStart);
+ final var mentionProposal = CommentsUtil.getUserNameForMentionProposal(s.toString(), selectionStart);
if (mentionProposal == null || (mentionProposal.first != null && mentionProposal.first.length() == 0) || selectionStart != selectionEnd) {
mentionProposer.removeAllViews();
mentionProposerWrapper.setVisibility(View.GONE);
@@ -84,8 +84,8 @@ public class CardCommentsMentionProposer implements TextWatcher {
mentionProposer.removeAllViews();
if (users.size() > 0) {
mentionProposerWrapper.setVisibility(View.VISIBLE);
- for (User user : users) {
- final ImageView avatar = new ImageView(mentionProposer.getContext());
+ for (final var user : users) {
+ final var avatar = new ImageView(mentionProposer.getContext());
avatar.setLayoutParams(layoutParams);
updateListenerOfView(avatar, s, mentionProposal, user);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/ItemCommentViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/ItemCommentViewHolder.java
index bfb800317..88cc1a904 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/ItemCommentViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/ItemCommentViewHolder.java
@@ -2,7 +2,6 @@ package it.niedermann.nextcloud.deck.ui.card.comments;
import android.text.method.LinkMovementMethod;
import android.view.MenuInflater;
-import android.view.MenuItem;
import android.view.View;
import androidx.annotation.ColorInt;
@@ -16,7 +15,6 @@ import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.HashMap;
-import java.util.Map;
import java.util.function.Consumer;
import it.niedermann.android.util.ClipboardUtil;
@@ -25,7 +23,6 @@ import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.ItemCommentBinding;
import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.model.enums.DBStatus;
-import it.niedermann.nextcloud.deck.model.ocs.comment.Mention;
import it.niedermann.nextcloud.deck.model.ocs.comment.full.FullDeckComment;
import it.niedermann.nextcloud.deck.util.DateUtil;
import it.niedermann.nextcloud.deck.util.ViewUtil;
@@ -43,8 +40,8 @@ public class ItemCommentViewHolder extends RecyclerView.ViewHolder {
public void bind(@NonNull FullDeckComment comment, @NonNull Account account, @ColorInt int mainColor, @NonNull MenuInflater inflater, @NonNull CommentDeletedListener deletedListener, @NonNull CommentSelectAsReplyListener selectAsReplyListener, @NonNull FragmentManager fragmentManager, @NonNull Consumer<CharSequence> editListener) {
ViewUtil.addAvatar(binding.avatar, account.getUrl(), comment.getComment().getActorId(), DimensionUtil.INSTANCE.dpToPx(binding.avatar.getContext(), R.dimen.icon_size_details), R.drawable.ic_person_grey600_24dp);
- final Map<String, String> mentions = new HashMap<>(comment.getComment().getMentions().size());
- for (Mention mention : comment.getComment().getMentions()) {
+ final var mentions = new HashMap<String, String>(comment.getComment().getMentions().size());
+ for (final var mention : comment.getComment().getMentions()) {
mentions.put(mention.getMentionId(), mention.getMentionDisplayName());
}
binding.message.setText(comment.getComment().getMessage());
@@ -57,7 +54,7 @@ public class ItemCommentViewHolder extends RecyclerView.ViewHolder {
itemView.setOnCreateContextMenuListener((menu, v, menuInfo) -> {
inflater.inflate(R.menu.comment_menu, menu);
menu.findItem(android.R.id.copy).setOnMenuItemClickListener(item -> ClipboardUtil.INSTANCE.copyToClipboard(itemView.getContext(), comment.getComment().getMessage()));
- final MenuItem replyMenuItem = menu.findItem(R.id.reply);
+ final var replyMenuItem = menu.findItem(R.id.reply);
if (comment.getStatusEnum() != DBStatus.LOCAL_EDITED && account.getServerDeckVersionAsObject().supportsCommentsReplys()) {
replyMenuItem.setOnMenuItemClickListener(item -> {
selectAsReplyListener.onSelectAsReply(comment);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/util/CommentsUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/util/CommentsUtil.java
index 8fa24988d..5c41b7c73 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/util/CommentsUtil.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/util/CommentsUtil.java
@@ -24,7 +24,7 @@ public class CommentsUtil {
break;
}
}
- if (text.length()-1 < start || text.charAt(start) != '@') {
+ if (text.length() - 1 < start || text.charAt(start) != '@') {
return null;
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/AssigneeAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/AssigneeAdapter.java
index aa8c3e8f6..4eb3f983c 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/AssigneeAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/AssigneeAdapter.java
@@ -1,6 +1,7 @@
package it.niedermann.nextcloud.deck.ui.card.details;
-import android.content.Context;
+import static androidx.recyclerview.widget.RecyclerView.NO_ID;
+
import android.view.LayoutInflater;
import android.view.ViewGroup;
@@ -15,14 +16,12 @@ import it.niedermann.nextcloud.deck.databinding.ItemAssigneeBinding;
import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.model.User;
-import static androidx.recyclerview.widget.RecyclerView.NO_ID;
-
@SuppressWarnings("WeakerAccess")
public class AssigneeAdapter extends RecyclerView.Adapter<AssigneeViewHolder> {
private final Account account;
@NonNull
- private List<User> users = new ArrayList<>();
+ private final List<User> users = new ArrayList<>();
@NonNull
private final Consumer<User> userClickedListener;
@@ -38,20 +37,20 @@ public class AssigneeAdapter extends RecyclerView.Adapter<AssigneeViewHolder> {
@Override
public long getItemId(int position) {
- Long id = users.get(position).getLocalId();
+ final var id = users.get(position).getLocalId();
return id == null ? NO_ID : id;
}
@NonNull
@Override
public AssigneeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- final Context context = parent.getContext();
+ final var context = parent.getContext();
return new AssigneeViewHolder(ItemAssigneeBinding.inflate(LayoutInflater.from(context)));
}
@Override
public void onBindViewHolder(@NonNull AssigneeViewHolder holder, int position) {
- final User user = users.get(position);
+ final var user = users.get(position);
holder.bind(account, user, userClickedListener);
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/AssigneeViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/AssigneeViewHolder.java
index ddb1236b6..84e795dd2 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/AssigneeViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/AssigneeViewHolder.java
@@ -22,7 +22,7 @@ public class AssigneeViewHolder extends RecyclerView.ViewHolder {
public void bind(@NonNull Account account, @NonNull User user, @Nullable Consumer<User> onClickListener) {
ViewUtil.addAvatar(binding.avatar, account.getUrl(), user.getUid(), R.drawable.ic_person_grey600_24dp);
- if(onClickListener != null) {
+ if (onClickListener != null) {
itemView.setOnClickListener((v) -> onClickListener.accept(user));
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java
index b3bb6bd53..a4e4fac72 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java
@@ -1,5 +1,10 @@
package it.niedermann.nextcloud.deck.ui.card.details;
+import static android.view.View.GONE;
+import static android.view.View.INVISIBLE;
+import static android.view.View.VISIBLE;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditTextInputLayout;
+
import android.content.res.ColorStateList;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -28,7 +33,6 @@ import com.wdullaer.materialdatetimepicker.date.DatePickerDialog.OnDateSetListen
import com.wdullaer.materialdatetimepicker.time.TimePickerDialog;
import com.wdullaer.materialdatetimepicker.time.TimePickerDialog.OnTimeSetListener;
-import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZoneId;
@@ -56,11 +60,6 @@ import it.niedermann.nextcloud.deck.ui.card.assignee.CardAssigneeDialog;
import it.niedermann.nextcloud.deck.ui.card.assignee.CardAssigneeListener;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionDialogFragment;
-import static android.view.View.GONE;
-import static android.view.View.INVISIBLE;
-import static android.view.View.VISIBLE;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditTextInputLayout;
-
public class CardDetailsFragment extends Fragment implements OnDateSetListener, OnTimeSetListener, CardAssigneeListener {
private FragmentCardEditTabDetailsBinding binding;
@@ -88,7 +87,7 @@ public class CardDetailsFragment extends Fragment implements OnDateSetListener,
}
@Px final int avatarSize = DimensionUtil.INSTANCE.dpToPx(requireContext(), R.dimen.avatar_size);
- final LinearLayout.LayoutParams avatarLayoutParams = new LinearLayout.LayoutParams(avatarSize, avatarSize);
+ final var avatarLayoutParams = new LinearLayout.LayoutParams(avatarSize, avatarSize);
avatarLayoutParams.setMargins(0, 0, DimensionUtil.INSTANCE.dpToPx(requireContext(), R.dimen.spacer_1x), 0);
setupAssignees();
@@ -111,8 +110,8 @@ public class CardDetailsFragment extends Fragment implements OnDateSetListener,
super.onResume();
// https://github.com/wdullaer/MaterialDateTimePicker#why-are-my-callbacks-lost-when-the-device-changes-orientation
- final DatePickerDialog dpd = (DatePickerDialog) getChildFragmentManager().findFragmentByTag(BrandedDatePickerDialog.class.getCanonicalName());
- final TimePickerDialog tpd = (TimePickerDialog) getChildFragmentManager().findFragmentByTag(BrandedTimePickerDialog.class.getCanonicalName());
+ final var dpd = (DatePickerDialog) getChildFragmentManager().findFragmentByTag(BrandedDatePickerDialog.class.getCanonicalName());
+ final var tpd = (TimePickerDialog) getChildFragmentManager().findFragmentByTag(BrandedTimePickerDialog.class.getCanonicalName());
if (tpd != null) tpd.setOnTimeSetListener(this);
if (dpd != null) dpd.setOnDateSetListener(this);
}
@@ -168,7 +167,7 @@ public class CardDetailsFragment extends Fragment implements OnDateSetListener,
private void setupDueDate() {
if (this.viewModel.getFullCard().getCard().getDueDate() != null) {
- final ZonedDateTime dueDate = this.viewModel.getFullCard().getCard().getDueDate().atZone(ZoneId.systemDefault());
+ final var dueDate = this.viewModel.getFullCard().getCard().getDueDate().atZone(ZoneId.systemDefault());
binding.dueDateDate.setText(dueDate == null ? null : dueDate.format(dateFormatter));
binding.dueDateTime.setText(dueDate == null ? null : dueDate.format(timeFormatter));
binding.clearDueDate.setVisibility(VISIBLE);
@@ -179,7 +178,6 @@ public class CardDetailsFragment extends Fragment implements OnDateSetListener,
}
if (viewModel.canEdit()) {
-
binding.dueDateDate.setOnClickListener(v -> {
final LocalDate date;
if (viewModel.getFullCard() != null && viewModel.getFullCard().getCard() != null && viewModel.getFullCard().getCard().getDueDate() != null) {
@@ -216,15 +214,15 @@ public class CardDetailsFragment extends Fragment implements OnDateSetListener,
}
private void setupLabels() {
- long accountId = viewModel.getAccount().getId();
- long boardId = viewModel.getBoardId();
+ final long accountId = viewModel.getAccount().getId();
+ final long boardId = viewModel.getBoardId();
binding.labelsGroup.removeAllViews();
if (viewModel.canEdit()) {
Long localCardId = viewModel.getFullCard().getCard().getLocalId();
localCardId = localCardId == null ? -1 : localCardId;
binding.labels.setAdapter(new LabelAutoCompleteAdapter(requireActivity(), accountId, boardId, localCardId));
binding.labels.setOnItemClickListener((adapterView, view, position, id) -> {
- final Label label = (Label) adapterView.getItemAtPosition(position);
+ final var label = (Label) adapterView.getItemAtPosition(position);
if (LabelAutoCompleteAdapter.ITEM_CREATE == label.getLocalId()) {
final Label newLabel = new Label(label);
newLabel.setBoardId(boardId);
@@ -262,7 +260,7 @@ public class CardDetailsFragment extends Fragment implements OnDateSetListener,
binding.labels.setEnabled(false);
}
if (viewModel.getFullCard().getLabels() != null && viewModel.getFullCard().getLabels().size() > 0) {
- for (Label label : viewModel.getFullCard().getLabels()) {
+ for (final var label : viewModel.getFullCard().getLabels()) {
binding.labelsGroup.addView(createChipFromLabel(label));
}
binding.labelsGroup.setVisibility(VISIBLE);
@@ -272,7 +270,7 @@ public class CardDetailsFragment extends Fragment implements OnDateSetListener,
}
private Chip createChipFromLabel(Label label) {
- final Chip chip = new Chip(requireContext());
+ final var chip = new Chip(requireContext());
chip.setText(label.getTitle());
if (viewModel.canEdit()) {
chip.setCloseIcon(ContextCompat.getDrawable(requireContext(), R.drawable.ic_close_circle_grey600));
@@ -333,7 +331,7 @@ public class CardDetailsFragment extends Fragment implements OnDateSetListener,
int hourOfDay;
int minute;
- final CharSequence selectedTime = binding.dueDateTime.getText();
+ final var selectedTime = binding.dueDateTime.getText();
if (TextUtils.isEmpty(selectedTime)) {
hourOfDay = 0;
minute = 0;
@@ -343,7 +341,7 @@ public class CardDetailsFragment extends Fragment implements OnDateSetListener,
minute = oldTime.getMinute();
}
- final ZonedDateTime newDateTime = ZonedDateTime.of(
+ final var newDateTime = ZonedDateTime.of(
LocalDate.of(year, monthOfYear + 1, dayOfMonth),
LocalTime.of(hourOfDay, minute),
ZoneId.systemDefault()
@@ -360,9 +358,9 @@ public class CardDetailsFragment extends Fragment implements OnDateSetListener,
@Override
public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) {
- final Instant oldInstant = this.viewModel.getFullCard().getCard().getDueDate();
- final ZonedDateTime oldDateTime = oldInstant == null ? ZonedDateTime.now() : oldInstant.atZone(ZoneId.systemDefault());
- final ZonedDateTime newDateTime = oldDateTime.with(
+ final var oldInstant = this.viewModel.getFullCard().getCard().getDueDate();
+ final var oldDateTime = oldInstant == null ? ZonedDateTime.now() : oldInstant.atZone(ZoneId.systemDefault());
+ final var newDateTime = oldDateTime.with(
LocalTime.of(hourOfDay, minute)
);
@@ -379,7 +377,7 @@ public class CardDetailsFragment extends Fragment implements OnDateSetListener,
if (viewModel.getFullCard().getProjects().size() > 0) {
binding.projectsTitle.setVisibility(VISIBLE);
binding.projects.setNestedScrollingEnabled(false);
- final CardProjectsAdapter adapter = new CardProjectsAdapter(viewModel.getFullCard().getProjects(), getChildFragmentManager());
+ final var adapter = new CardProjectsAdapter(viewModel.getFullCard().getProjects(), getChildFragmentManager());
binding.projects.setAdapter(adapter);
binding.projects.setVisibility(VISIBLE);
} else {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardProjectsAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardProjectsAdapter.java
index 0c2d63d74..e58650ff7 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardProjectsAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardProjectsAdapter.java
@@ -41,7 +41,7 @@ public class CardProjectsAdapter extends RecyclerView.Adapter<CardProjectsViewHo
@Override
public void onBindViewHolder(@NonNull CardProjectsViewHolder holder, int position) {
- final OcsProjectWithResources project = projects.get(position);
+ final var project = projects.get(position);
holder.bind(project, (v) -> CardProjectResourcesDialog.newInstance(project.getName(), project.getResources()).show(fragmentManager, CardProjectResourcesDialog.class.getSimpleName()));
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourceViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourceViewHolder.java
index c398d9814..27dd16651 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourceViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourceViewHolder.java
@@ -1,7 +1,10 @@
package it.niedermann.nextcloud.deck.ui.card.projectresources;
+import static android.view.View.GONE;
+import static android.view.View.VISIBLE;
+import static it.niedermann.nextcloud.deck.util.ProjectUtil.getResourceUri;
+
import android.content.Intent;
-import android.content.res.Resources;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -17,10 +20,6 @@ import it.niedermann.nextcloud.deck.ui.card.EditActivity;
import it.niedermann.nextcloud.deck.ui.card.EditCardViewModel;
import it.niedermann.nextcloud.deck.util.ProjectUtil;
-import static android.view.View.GONE;
-import static android.view.View.VISIBLE;
-import static it.niedermann.nextcloud.deck.util.ProjectUtil.getResourceUri;
-
public class CardProjectResourceViewHolder extends RecyclerView.ViewHolder {
@NonNull
private final ItemProjectResourceBinding binding;
@@ -31,8 +30,8 @@ public class CardProjectResourceViewHolder extends RecyclerView.ViewHolder {
}
public void bind(@NonNull EditCardViewModel viewModel, @NonNull OcsProjectResource resource, @NonNull LifecycleOwner owner) {
- final Account account = viewModel.getAccount();
- final Resources resources = itemView.getResources();
+ final var account = viewModel.getAccount();
+ final var resources = itemView.getResources();
binding.name.setText(resource.getName());
final @Nullable String link = resource.getLink();
binding.type.setVisibility(VISIBLE);
@@ -47,7 +46,7 @@ public class CardProjectResourceViewHolder extends RecyclerView.ViewHolder {
}
case "deck-card": {
try {
- long[] ids = ProjectUtil.extractBoardIdAndCardIdFromUrl(link);
+ final long[] ids = ProjectUtil.extractBoardIdAndCardIdFromUrl(link);
if (ids.length == 2) {
viewModel.getCardByRemoteID(account.getId(), ids[1]).observe(owner, (fullCard) -> {
if (fullCard != null) {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourcesDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourcesDialog.java
index a6c1df4fe..1a2803d7e 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourcesDialog.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourcesDialog.java
@@ -34,7 +34,7 @@ public class CardProjectResourcesDialog extends DialogFragment {
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
- final Bundle args = requireArguments();
+ final var args = requireArguments();
if (!args.containsKey(KEY_RESOURCES)) {
throw new IllegalArgumentException("Provide at least " + KEY_RESOURCES);
}
@@ -49,9 +49,7 @@ public class CardProjectResourcesDialog extends DialogFragment {
binding = DialogProjectResourcesBinding.inflate(LayoutInflater.from(requireContext()));
viewModel = new ViewModelProvider(requireActivity()).get(EditCardViewModel.class);
- final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(requireContext());
-
- return dialogBuilder
+ return new AlertDialog.Builder(requireContext())
.setTitle(projectName)
.setView(binding.getRoot())
.setNeutralButton(R.string.simple_close, null)
@@ -60,14 +58,14 @@ public class CardProjectResourcesDialog extends DialogFragment {
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- final CardProjectResourceAdapter adapter = new CardProjectResourceAdapter(viewModel, resources, requireActivity());
+ final var adapter = new CardProjectResourceAdapter(viewModel, resources, requireActivity());
binding.getRoot().setAdapter(adapter);
super.onActivityCreated(savedInstanceState);
}
public static DialogFragment newInstance(@Nullable String projectName, @NonNull List<OcsProjectResource> resources) {
- final DialogFragment fragment = new CardProjectResourcesDialog();
- final Bundle args = new Bundle();
+ final var fragment = new CardProjectResourcesDialog();
+ final var args = new Bundle();
args.putString(KEY_PROJECT_NAME, projectName);
args.putSerializable(KEY_RESOURCES, new ArrayList<>(resources));
fragment.setArguments(args);