From b20d670dac8f5855593e98f6e1fcc3af266d7c66 Mon Sep 17 00:00:00 2001 From: Martin Brabham Date: Thu, 2 Apr 2015 15:42:49 -0700 Subject: [PATCH] Add character limit for name input dialog. Change-Id: I75539bbe90dbc278b360e1246c5218101d77abf7 (cherry picked from commit d34dfc6892760eb14a553bd9774a65aa211f6d7b) --- res/layout/input_name_dialog.xml | 3 ++- res/values/strings.xml | 2 ++ .../filemanager/ui/dialogs/InputNameDialog.java | 20 ++++++++++++++++++-- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/res/layout/input_name_dialog.xml b/res/layout/input_name_dialog.xml index a5b7b02..aed6fd9 100644 --- a/res/layout/input_name_dialog.xml +++ b/res/layout/input_name_dialog.xml @@ -43,6 +43,7 @@ android:imeOptions="actionDone|flagNoFullscreen" android:scrollHorizontally="true" android:selectAllOnFocus="true" + android:maxLength="255" android:inputType="textNoSuggestions"> @@ -64,4 +65,4 @@ android:textSize="@dimen/note_text_size" android:visibility="gone" /> - \ No newline at end of file + diff --git a/res/values/strings.xml b/res/values/strings.xml index f2282f7..0fe06ac 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -507,6 +507,8 @@ The name cannot be empty. Invalid name. The characters \'%1$s\' are not allowed. + + File name is too long, please consider something 255 characters or less. Invalid name. The names \'.\' and \'..\' are not allowed. diff --git a/src/com/cyanogenmod/filemanager/ui/dialogs/InputNameDialog.java b/src/com/cyanogenmod/filemanager/ui/dialogs/InputNameDialog.java index 0414050..c2f5a6a 100644 --- a/src/com/cyanogenmod/filemanager/ui/dialogs/InputNameDialog.java +++ b/src/com/cyanogenmod/filemanager/ui/dialogs/InputNameDialog.java @@ -20,6 +20,7 @@ import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.text.Editable; +import android.text.TextUtils; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; @@ -43,6 +44,8 @@ import java.util.List; public class InputNameDialog implements TextWatcher, DialogInterface.OnCancelListener, DialogInterface.OnDismissListener { + private static final int FILENAME_CHAR_LIMIT = 255; + private final Context mContext; /** * @hide @@ -249,21 +252,31 @@ public class InputNameDialog * @hide */ void checkName(String name) { + //The name is empty - if (name.length() == 0) { + if (TextUtils.isEmpty(name)) { setMsg( InputNameDialog.this.mContext.getString( R.string.input_name_dialog_message_empty_name), false); return; } + + // Too long + if (name.length() > FILENAME_CHAR_LIMIT) { + setMsg(InputNameDialog.this.mContext.getString( + R.string.input_name_dialog_message_invalid_name_length), false); + return; + } + // The path is invalid - if (name.indexOf(File.separator) != -1) { + if (name.contains(File.separator)) { setMsg( InputNameDialog.this.mContext.getString( R.string.input_name_dialog_message_invalid_path_name, File.separator), false); return; } + // No allow . or .. if (name.compareTo(FileHelper.CURRENT_DIRECTORY) == 0 || name.compareTo(FileHelper.PARENT_DIRECTORY) == 0) { @@ -272,11 +285,13 @@ public class InputNameDialog R.string.input_name_dialog_message_invalid_name), false); return; } + // The same name if (this.mFso != null && !this.mAllowFsoName && name.compareTo(this.mFso.getName()) == 0) { setMsg(null, false); return; } + // Name exists if (FileHelper.isNameExists(this.mFiles, name)) { setMsg( @@ -287,6 +302,7 @@ public class InputNameDialog //Valid name setMsg(null, true); + } /** -- 2.11.0