From 5ed0f8b5a6b9f2012a74888403b28e9e153af572 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Fri, 3 Dec 2021 21:11:50 +0200 Subject: [PATCH] Check if category name is not empty --- .../base/ui/dialog/StorageSelectDialog.kt | 1 - .../kotatsu/base/ui/dialog/TextInputDialog.kt | 7 +-- .../ui/categories/CategoriesEditDelegate.kt | 15 ++++- .../kotatsu/settings/MainSettingsFragment.kt | 57 +------------------ app/src/main/res/layout/dialog_input.xml | 7 ++- app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 7 files changed, 26 insertions(+), 63 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/base/ui/dialog/StorageSelectDialog.kt b/app/src/main/java/org/koitharu/kotatsu/base/ui/dialog/StorageSelectDialog.kt index 74a019a82..5b843358f 100644 --- a/app/src/main/java/org/koitharu/kotatsu/base/ui/dialog/StorageSelectDialog.kt +++ b/app/src/main/java/org/koitharu/kotatsu/base/ui/dialog/StorageSelectDialog.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import android.widget.BaseAdapter import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog -import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.koitharu.kotatsu.R import org.koitharu.kotatsu.databinding.ItemStorageBinding import org.koitharu.kotatsu.local.domain.LocalMangaRepository diff --git a/app/src/main/java/org/koitharu/kotatsu/base/ui/dialog/TextInputDialog.kt b/app/src/main/java/org/koitharu/kotatsu/base/ui/dialog/TextInputDialog.kt index b645d8cd8..c2ff116eb 100644 --- a/app/src/main/java/org/koitharu/kotatsu/base/ui/dialog/TextInputDialog.kt +++ b/app/src/main/java/org/koitharu/kotatsu/base/ui/dialog/TextInputDialog.kt @@ -6,11 +6,10 @@ import android.text.InputFilter import android.view.LayoutInflater import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog -import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.koitharu.kotatsu.databinding.DialogInputBinding class TextInputDialog private constructor( - private val delegate: AlertDialog + private val delegate: AlertDialog, ) : DialogInterface by delegate { fun show() = delegate.show() @@ -33,7 +32,7 @@ class TextInputDialog private constructor( } fun setHint(@StringRes hintResId: Int): Builder { - binding.inputLayout.hint = binding.root.context.getString(hintResId) + binding.inputEdit.hint = binding.root.context.getString(hintResId) return this } @@ -64,7 +63,7 @@ class TextInputDialog private constructor( listener: (DialogInterface, String) -> Unit ): Builder { delegate.setPositiveButton(textId) { dialog, _ -> - listener(dialog, binding.inputEdit.text.toString().orEmpty()) + listener(dialog, binding.inputEdit.text?.toString().orEmpty()) } return this } diff --git a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/CategoriesEditDelegate.kt b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/CategoriesEditDelegate.kt index a9a80ce59..7c93f3d25 100644 --- a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/CategoriesEditDelegate.kt +++ b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/CategoriesEditDelegate.kt @@ -2,6 +2,7 @@ package org.koitharu.kotatsu.favourites.ui.categories import android.content.Context import android.text.InputType +import android.widget.Toast import androidx.appcompat.app.AlertDialog import org.koitharu.kotatsu.R import org.koitharu.kotatsu.base.ui.dialog.TextInputDialog @@ -32,7 +33,12 @@ class CategoriesEditDelegate( .setNegativeButton(android.R.string.cancel) .setMaxLength(MAX_TITLE_LENGTH, false) .setPositiveButton(R.string.rename) { _, name -> - callback.onRenameCategory(category, name) + val trimmed = name.trim() + if (trimmed.isEmpty()) { + Toast.makeText(context, R.string.error_empty_name, Toast.LENGTH_SHORT).show() + } else { + callback.onRenameCategory(category, name) + } }.create() .show() } @@ -45,7 +51,12 @@ class CategoriesEditDelegate( .setNegativeButton(android.R.string.cancel) .setMaxLength(MAX_TITLE_LENGTH, false) .setPositiveButton(R.string.add) { _, name -> - callback.onCreateCategory(name) + val trimmed = name.trim() + if (trimmed.isEmpty()) { + Toast.makeText(context, R.string.error_empty_name, Toast.LENGTH_SHORT).show() + } else { + callback.onCreateCategory(trimmed) + } }.create() .show() } diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/MainSettingsFragment.kt b/app/src/main/java/org/koitharu/kotatsu/settings/MainSettingsFragment.kt index c8d024c13..17ecdf9ab 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/MainSettingsFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/MainSettingsFragment.kt @@ -1,23 +1,21 @@ package org.koitharu.kotatsu.settings -import android.content.DialogInterface import android.content.Intent import android.content.SharedPreferences import android.os.Bundle -import android.text.InputType import android.view.View import androidx.appcompat.app.AppCompatDelegate import androidx.preference.* -import com.google.android.material.snackbar.Snackbar import org.koitharu.kotatsu.R import org.koitharu.kotatsu.base.ui.BasePreferenceFragment import org.koitharu.kotatsu.base.ui.dialog.StorageSelectDialog -import org.koitharu.kotatsu.base.ui.dialog.TextInputDialog import org.koitharu.kotatsu.core.model.MangaSource import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.core.prefs.ListMode import org.koitharu.kotatsu.settings.protect.ProtectSetupActivity -import org.koitharu.kotatsu.utils.ext.* +import org.koitharu.kotatsu.utils.ext.getStorageName +import org.koitharu.kotatsu.utils.ext.names +import org.koitharu.kotatsu.utils.ext.setDefaultValueCompat import java.io.File import java.util.* @@ -134,53 +132,4 @@ class MainSettingsFragment : BasePreferenceFragment(R.string.settings), settings.setStorageDir(context ?: return, file) } - private fun enableAppProtection(preference: SwitchPreference) { - val ctx = preference.context ?: return - val cancelListener = - object : DialogInterface.OnCancelListener, DialogInterface.OnClickListener { - - override fun onCancel(dialog: DialogInterface?) { - settings.appPassword = null - preference.isChecked = false - preference.isEnabled = true - } - - override fun onClick(dialog: DialogInterface?, which: Int) = onCancel(dialog) - } - preference.isEnabled = false - TextInputDialog.Builder(ctx) - .setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD) - .setHint(R.string.enter_password) - .setNegativeButton(android.R.string.cancel, cancelListener) - .setOnCancelListener(cancelListener) - .setPositiveButton(android.R.string.ok) { d, password -> - if (password.isBlank()) { - cancelListener.onCancel(d) - return@setPositiveButton - } - TextInputDialog.Builder(ctx) - .setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD) - .setHint(R.string.repeat_password) - .setNegativeButton(android.R.string.cancel, cancelListener) - .setOnCancelListener(cancelListener) - .setPositiveButton(android.R.string.ok) { d2, password2 -> - if (password == password2) { - settings.appPassword = password.md5() - preference.isChecked = true - preference.isEnabled = true - } else { - cancelListener.onCancel(d2) - Snackbar.make( - listView, - R.string.passwords_mismatch, - Snackbar.LENGTH_SHORT - ).show() - } - }.setTitle(preference.title) - .create() - .show() - }.setTitle(preference.title) - .create() - .show() - } } \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_input.xml b/app/src/main/res/layout/dialog_input.xml index 895bacb61..812297a8f 100644 --- a/app/src/main/res/layout/dialog_input.xml +++ b/app/src/main/res/layout/dialog_input.xml @@ -11,7 +11,10 @@ @@ -21,7 +24,7 @@ android:layout_height="wrap_content" android:imeOptions="actionDone" android:singleLine="true" - tools:text="@tools:sample/lorem[2]" /> + tools:hint="@tools:sample/lorem[2]" /> diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index e0b623ff9..a60f4043c 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -244,4 +244,5 @@ Формат даты По умолчанию Исключить NSFW мангу из истории + Имя не может быть пустым \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 50433214e..94ba59583 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -245,4 +245,5 @@ Date format Default Exclude NSFW manga from history + Name sould not be empty \ No newline at end of file