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 /app/src/main/java/it/niedermann/nextcloud/deck/ui/branding
parent8c18d8b6652f67b480da65c6b22672736629e815 (diff)
Make use of var keyword for complex class instances
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/branding')
-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/branding/NewCardDialog.java209
8 files changed, 41 insertions, 254 deletions
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/branding/NewCardDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/NewCardDialog.java
deleted file mode 100644
index 5332dc0e0..000000000
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/NewCardDialog.java
+++ /dev/null
@@ -1,209 +0,0 @@
-package it.niedermann.nextcloud.deck.ui.branding;
-
-import static androidx.lifecycle.Transformations.distinctUntilChanged;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.res.ColorStateList;
-import android.os.Bundle;
-import android.text.Editable;
-import android.text.TextWatcher;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.view.inputmethod.EditorInfo;
-
-import androidx.annotation.ColorInt;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.DialogFragment;
-import androidx.lifecycle.MutableLiveData;
-import androidx.lifecycle.ViewModelProvider;
-
-import it.niedermann.nextcloud.deck.R;
-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.exception.ExceptionDialogFragment;
-import it.niedermann.nextcloud.deck.ui.preparecreate.PrepareCreateViewModel;
-
-public class NewCardDialog extends DialogFragment implements DialogInterface.OnClickListener {
-
- private PrepareCreateViewModel viewModel;
-
- private static final String ARG_ACCOUNT = "account";
- private static final String ARG_BOARD_LOCAL_ID = "board_id";
- private static final String ARG_STACK_LOCAL_ID = "stack_id";
- private static final String ARG_BRAND = "brand";
-
- private Account account;
- private long boardLocalId;
- private long stackLocalId;
- @ColorInt
- private int color;
-
- private DialogNewCardBinding binding;
- private final MutableLiveData<Boolean> isPending = new MutableLiveData<>(false);
-
- @Override
- public void onAttach(@NonNull Context context) {
- super.onAttach(context);
- final var args = getArguments();
- if (args == null) {
- throw new IllegalArgumentException("Provide " + ARG_ACCOUNT + ", " + ARG_BOARD_LOCAL_ID + " and " + ARG_STACK_LOCAL_ID);
- }
- account = (Account) args.getSerializable(ARG_ACCOUNT);
- boardLocalId = args.getLong(ARG_BOARD_LOCAL_ID);
- stackLocalId = args.getLong(ARG_STACK_LOCAL_ID);
- color = args.getInt(ARG_BRAND);
- viewModel = new ViewModelProvider(requireActivity()).get(PrepareCreateViewModel.class);
- }
-
- @NonNull
- @Override
- public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
- binding = DialogNewCardBinding.inflate(requireActivity().getLayoutInflater());
-
- final var dialog = new AlertDialog.Builder(requireActivity())
- .setTitle(R.string.add_card)
- .setView(binding.getRoot())
- .setPositiveButton(R.string.edit, null)
- .setNegativeButton(R.string.simple_save, null)
- .create();
-
- dialog.setOnShowListener(d -> {
- final boolean inputIsValid = inputIsValid(binding.input.getText());
- dialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(inputIsValid);
- dialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(v -> onClick(dialog, DialogInterface.BUTTON_POSITIVE));
- dialog.getButton(DialogInterface.BUTTON_NEGATIVE).setEnabled(inputIsValid);
- dialog.getButton(DialogInterface.BUTTON_NEGATIVE).setOnClickListener(v -> onClick(dialog, DialogInterface.BUTTON_NEGATIVE));
- });
-
- BrandingUtil.applyBrandToEditTextInputLayout(color, binding.inputWrapper);
- binding.progressCircular.setIndeterminateTintList(ColorStateList.valueOf(BrandingUtil.getSecondaryForegroundColorDependingOnTheme(requireContext(), color)));
-
- binding.input.addTextChangedListener(new TextWatcher() {
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- // Nothing to do
- }
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- final boolean inputIsValid = inputIsValid(binding.input.getText());
- if (inputIsValid) {
- binding.inputWrapper.setError(null);
- }
- dialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(inputIsValid);
- dialog.getButton(DialogInterface.BUTTON_NEGATIVE).setEnabled(inputIsValid);
- }
-
- @Override
- public void afterTextChanged(Editable s) {
- // Nothing to do
- }
- });
-
- distinctUntilChanged(isPending).observe(this, (isPending) -> {
- if (isPending) {
- binding.inputWrapper.setVisibility(View.INVISIBLE);
- binding.progressCircular.setVisibility(View.VISIBLE);
- dialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(false);
- dialog.getButton(DialogInterface.BUTTON_NEGATIVE).setEnabled(false);
- } else {
- binding.inputWrapper.setVisibility(View.VISIBLE);
- binding.progressCircular.setVisibility(View.GONE);
- dialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(true);
- dialog.getButton(DialogInterface.BUTTON_NEGATIVE).setEnabled(true);
- }
- });
-
- binding.input.setOnEditorActionListener((textView, actionId, event) -> {
- //noinspection SwitchStatementWithTooFewBranches
- switch (actionId) {
- case EditorInfo.IME_ACTION_DONE:
- onClick(dialog, DialogInterface.BUTTON_POSITIVE);
- return true;
- }
- return false;
- });
-
- return dialog;
- }
-
- @Nullable
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- binding.input.requestFocus();
- requireDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
- return super.onCreateView(inflater, container, savedInstanceState);
- }
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- final boolean openOnSuccess;
- switch (which) {
- case DialogInterface.BUTTON_POSITIVE:
- openOnSuccess = true;
- break;
- case DialogInterface.BUTTON_NEGATIVE:
- openOnSuccess = false;
- break;
- default:
- return;
- }
- if (Boolean.FALSE.equals(isPending.getValue())) {
- isPending.setValue(true);
- final var currentUserInput = binding.input.getText();
- if (inputIsValid(currentUserInput)) {
- final var fullCard = viewModel.createFullCard(account.getServerDeckVersionAsObject(), currentUserInput.toString());
- viewModel.saveCard(account.getId(), boardLocalId, stackLocalId, fullCard, new IResponseCallback<>() {
- @Override
- public void onResponse(FullCard createdCard) {
- requireActivity().runOnUiThread(() -> {
- if (openOnSuccess) {
- startActivity(EditActivity.createEditCardIntent(requireContext(), account, boardLocalId, createdCard.getLocalId()));
- }
- dismiss();
- });
- }
-
- @Override
- public void onError(Throwable throwable) {
- IResponseCallback.super.onError(throwable);
- requireActivity().runOnUiThread(() -> {
- isPending.setValue(false);
- ExceptionDialogFragment
- .newInstance(throwable, account)
- .show(getChildFragmentManager(), ExceptionDialogFragment.class.getSimpleName());
- });
- }
- });
- } else {
- binding.inputWrapper.setError(getString(R.string.title_is_mandatory));
- binding.input.requestFocus();
- isPending.setValue(false);
- }
- }
- }
-
- private static boolean inputIsValid(@Nullable CharSequence input) {
- return input != null && !input.toString().trim().isEmpty();
- }
-
- public static DialogFragment newInstance(@NonNull Account account, long boardLocalId, long stackLocalId, @ColorInt int brand) {
- final var fragment = new NewCardDialog();
- final var args = new Bundle();
- args.putSerializable(ARG_ACCOUNT, account);
- args.putLong(ARG_BOARD_LOCAL_ID, boardLocalId);
- args.putLong(ARG_STACK_LOCAL_ID, stackLocalId);
- args.putInt(ARG_BRAND, brand);
- fragment.setArguments(args);
- return fragment;
- }
-}