Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: adblockplussbrowser/src/org/adblockplus/sbrowser/contentblocker/InputValidatorDialogPreference.java

Issue 29524668: Issue 3916 - Supporting Adding filter lists via URL (Closed)
Patch Set: Renamed URLInputPreference and adjusted layout design Created Sept. 15, 2017, 12:36 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: adblockplussbrowser/src/org/adblockplus/sbrowser/contentblocker/InputValidatorDialogPreference.java
===================================================================
rename from adblockplussbrowser/src/org/adblockplus/sbrowser/contentblocker/UrlInputOpenerPreference.java
rename to adblockplussbrowser/src/org/adblockplus/sbrowser/contentblocker/InputValidatorDialogPreference.java
--- a/adblockplussbrowser/src/org/adblockplus/sbrowser/contentblocker/UrlInputOpenerPreference.java
+++ b/adblockplussbrowser/src/org/adblockplus/sbrowser/contentblocker/InputValidatorDialogPreference.java
@@ -20,44 +20,54 @@ package org.adblockplus.sbrowser.content
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.text.Editable;
import android.text.InputType;
import android.text.TextWatcher;
import android.util.AttributeSet;
+import android.util.Patterns;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import org.adblockplus.adblockplussbrowser.R;
import org.adblockplus.sbrowser.contentblocker.util.PreferenceUtils;
import org.apache.commons.validator.routines.DomainValidator;
-public class UrlInputOpenerPreference extends EditTextPreference implements TextWatcher,
+public class InputValidatorDialogPreference extends EditTextPreference implements TextWatcher,
TextView.OnEditorActionListener
{
- private OnUrlReadyListener onUrlReadyListener;
- private AlertDialog mAlertDialog;
-
- public UrlInputOpenerPreference(Context context)
+ public enum ValidationType
{
- this(context, null);
+ DOMAIN,
+ URL
}
- public UrlInputOpenerPreference(Context context, AttributeSet attrs)
+ private OnInputReadyListener onInputReadyListener;
+ private AlertDialog mAlertDialog;
diegocarloslima 2017/09/22 17:43:42 This variable passed through the last code review,
jens 2017/09/26 10:25:01 For me it's totally fine to change the name of the
+ private ValidationType validationType;
+
+ public InputValidatorDialogPreference(Context context, final ValidationType validationType)
+ {
+ this(context, null, validationType);
+ }
+
+ public InputValidatorDialogPreference(Context context, AttributeSet attrs,
+ final ValidationType validationType)
diegocarloslima 2017/09/22 17:43:42 This type of constructor will fail if the class is
jens 2017/09/26 10:25:01 Oh, good catch. Should we create a separate ticket
{
super(context, attrs);
// Setting defaults
+ this.validationType = validationType;
this.setIcon(android.R.drawable.ic_menu_add);
this.setPositiveButtonText(android.R.string.ok);
this.setNegativeButtonText(android.R.string.cancel);
final EditText editText = getEditText();
editText.addTextChangedListener(this);
editText.setOnEditorActionListener(this);
editText.setInputType(InputType.TYPE_TEXT_VARIATION_URI);
}
@@ -73,19 +83,19 @@ public class UrlInputOpenerPreference ex
}
@Override
protected void onDialogClosed(boolean positiveResult)
{
super.onDialogClosed(positiveResult);
mAlertDialog = null;
- if (positiveResult && this.onUrlReadyListener != null)
+ if (positiveResult && this.onInputReadyListener != null)
{
- this.onUrlReadyListener.onUrlReady(getUrl());
+ this.onInputReadyListener.onInputReady(getUrl());
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
// Ignored
}
@@ -94,25 +104,25 @@ public class UrlInputOpenerPreference ex
public void onTextChanged(CharSequence s, int start, int before, int count)
{
// Ignored
}
@Override
public void afterTextChanged(Editable s)
{
- setPositiveButtonEnabled(isValidDomain());
+ setPositiveButtonEnabled(isValidInput());
}
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
{
if (actionId == EditorInfo.IME_ACTION_DONE)
{
- if (this.isValidDomain())
+ if (this.isValidInput())
{
mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
}
else
{
Toast.makeText(getContext(), R.string.whitelist_website_invalid_url_error, Toast.LENGTH_SHORT).show();
diegocarloslima 2017/09/22 17:43:42 We might consider making possible to change the te
jens 2017/09/26 10:25:01 o have different error messages for different Vali
}
return true;
@@ -122,36 +132,52 @@ public class UrlInputOpenerPreference ex
@Override
protected void onBindView(View view)
{
super.onBindView(view);
PreferenceUtils.setMultilineTitle(view);
}
- public void setOnUrlReadyListener(OnUrlReadyListener listener)
+ public void setOnInputReadyListener(OnInputReadyListener listener)
{
- this.onUrlReadyListener = listener;
+ this.onInputReadyListener = listener;
}
private boolean isValidDomain()
{
return DomainValidator.getInstance().isValid(getUrl());
}
+ private boolean isValidUrl()
+ {
+ return Patterns.WEB_URL.matcher(getUrl()).matches();
+ }
+
+ private boolean isValidInput()
+ {
+ switch (validationType)
+ {
+ case DOMAIN:
+ return isValidDomain();
+ default:
+ return isValidUrl();
+ }
+ }
+
private String getUrl()
diegocarloslima 2017/09/22 17:43:42 This might be renamed to getInput()
jens 2017/09/26 10:25:01 Acknowledged.
{
return getEditText().getText().toString();
}
private void setPositiveButtonEnabled(boolean enabled)
{
if (mAlertDialog != null)
{
mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(enabled);
}
}
- public interface OnUrlReadyListener
+ public interface OnInputReadyListener
{
- void onUrlReady(String url);
+ void onInputReady(String url);
diegocarloslima 2017/09/22 17:43:41 I would suggest changing from `String url` to `Str
jens 2017/09/26 10:25:01 Acknowledged.
}
-}
+}

Powered by Google App Engine
This is Rietveld