diff options
Diffstat (limited to 'app')
3 files changed, 93 insertions, 53 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java index c2345ec1..168fb02e 100644 --- a/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java +++ b/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java @@ -33,7 +33,6 @@ import android.widget.ListView; import com.pedrogomez.renderers.Renderer; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.json.JSONException; import org.json.JSONObject; @@ -94,6 +93,7 @@ public abstract class ProviderListBaseActivity extends ConfigWizardBaseActivity final private static String SHOW_FAILED_DIALOG = "SHOW FAILED DIALOG"; final private static String REASON_TO_FAIL = "REASON TO FAIL"; final protected static String SERVICES_RETRIEVED = "SERVICES RETRIEVED"; + final protected static String EXTRAS_KEY_INVALID_URL = "INVALID_URL"; public ProviderAPIResultReceiver providerAPIResultReceiver; private ProviderAPIBroadcastReceiver providerAPIBroadcastReceiver; @@ -196,7 +196,7 @@ public abstract class ProviderListBaseActivity extends ConfigWizardBaseActivity } else if (requestCode == REQUEST_CODE_ADD_PROVIDER) { if (resultCode == RESULT_OK) { testNewURL = true; - String newUrl = data.getStringExtra("new_url"); + String newUrl = data.getStringExtra(AddProviderActivity.EXTRAS_KEY_NEW_URL); this.provider.setMainUrl(newUrl); showAndSelectProvider(newUrl); } @@ -327,7 +327,7 @@ public abstract class ProviderListBaseActivity extends ConfigWizardBaseActivity testNewURL = false; FragmentTransaction fragmentTransaction = fragmentManager.removePreviousFragment(NewProviderDialog.TAG); Intent intent = new Intent(this, AddProviderActivity.class); - intent.putExtra("invalid_url", url); + intent.putExtra(EXTRAS_KEY_INVALID_URL, url); startActivityForResult(intent, REQUEST_CODE_ADD_PROVIDER); } diff --git a/app/src/main/res/layout/a_add_provider.xml b/app/src/main/res/layout/a_add_provider.xml index 14bf8482..f7ee3254 100644 --- a/app/src/main/res/layout/a_add_provider.xml +++ b/app/src/main/res/layout/a_add_provider.xml @@ -2,11 +2,11 @@ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" + style="@style/BitmaskActivity" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".AddProviderActivity" android:padding="@dimen/stdpadding" - style="@style/BitmaskActivity"> + tools:context=".AddProviderActivity"> <!--Contains header information!??? --> <include layout="@layout/v_add_provider" /> @@ -15,33 +15,52 @@ android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" + android:layout_alignParentEnd="true" + android:layout_alignParentRight="true" + android:layout_alignParentTop="true" android:orientation="vertical"> <!-- the header contains the mask--> <include layout="@layout/v_provider_header" /> - <EditText - android:id="@+id/textUri" - android:layout_width="fill_parent" + <android.support.design.widget.TextInputLayout + android:id="@+id/text_uri_error" + android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginTop="@dimen/activity_vertical_margin" android:hint="@string/new_provider_uri" - android:inputType="text" - android:padding="@dimen/stdpadding"/> - <!-- android:imeOptions="actionSend" => was passieren soll, wenn ok geklickt wird --> + app:errorEnabled="true"> + <android.support.design.widget.TextInputEditText + android:id="@+id/text_uri" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ems="10" + android:inputType="text" /> - <Button - android:id="@+id/button_save" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:text="@string/save" /> + </android.support.design.widget.TextInputLayout> - <Button - android:id="@+id/button_cancel" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:text="@string/cancel" /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="right" + android:orientation="horizontal"> + + <Button + android:id="@+id/button_cancel" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/cancel" /> + + <Button + android:id="@+id/button_save" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="@dimen/activity_horizontal_margin" + android:layout_marginStart="@dimen/activity_horizontal_margin" + android:text="@string/save" /> + </LinearLayout> </LinearLayout> </RelativeLayout> diff --git a/app/src/production/java/se/leap/bitmaskclient/AddProviderActivity.java b/app/src/production/java/se/leap/bitmaskclient/AddProviderActivity.java index 8c7dcbf5..13e4e06d 100644 --- a/app/src/production/java/se/leap/bitmaskclient/AddProviderActivity.java +++ b/app/src/production/java/se/leap/bitmaskclient/AddProviderActivity.java @@ -2,34 +2,37 @@ package se.leap.bitmaskclient; import android.content.Intent; import android.os.Bundle; -import android.support.design.widget.FloatingActionButton; -import android.support.design.widget.Snackbar; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.util.Log; +import android.support.design.widget.TextInputEditText; +import android.support.design.widget.TextInputLayout; +import android.text.Editable; +import android.text.TextWatcher; import android.view.View; import android.widget.Button; -import android.widget.EditText; -import android.widget.Toast; + +import butterknife.InjectView; public class AddProviderActivity extends ConfigWizardBaseActivity { - private EditText editText; final public static String TAG = "AddProviderActivity"; + final public static String EXTRAS_KEY_NEW_URL = "NEW_URL"; + + @InjectView(R.id.text_uri_error) + TextInputLayout urlError; + + @InjectView(R.id.text_uri) + TextInputEditText editUrl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a_add_provider); - editText = findViewById(R.id.textUri); if (this.getIntent().getExtras() != null) { - editText.setText(this.getIntent().getExtras().getString("invalid_url")); + editUrl.setText(this.getIntent().getExtras().getString(ProviderListBaseActivity.EXTRAS_KEY_INVALID_URL)); } final Button saveButton = findViewById(R.id.button_save); saveButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { - Log.d(TAG, "On Click when save works"); saveProvider(); } }); @@ -38,44 +41,62 @@ public class AddProviderActivity extends ConfigWizardBaseActivity { cancelButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { finish(); - //ToDo: Implement this and set testNewURL in ProviderListBaseActivty false!! - /* Intent intent= new Intent(); - intent.putExtra("new_url", entered_url); - setResult(RESULT_NOT_OK, intent); - finish();*/ } }); + setUpListeners(); setUpInitialUI(); } private void setUpInitialUI() { - //ToDo: find out if needed: - // setContentView(R.layout.a_provider_list); setProviderHeaderText(R.string.add_provider); hideProgressBar(); } - private void saveProvider() { - String entered_url = editText.getText().toString().trim(); - if (!entered_url.startsWith("https://")) { - if (entered_url.startsWith("http://")) { - entered_url = entered_url.substring("http://".length()); - } - entered_url = "https://".concat(entered_url); - } - Log.d(TAG, "Behind https addition"); + String entered_url = getURL(); if (validURL(entered_url)) { - Log.d(TAG, "URL seems fine"); Intent intent = this.getIntent(); - intent.putExtra("new_url", entered_url); + intent.putExtra(EXTRAS_KEY_NEW_URL, entered_url); setResult(RESULT_OK, intent); finish(); } else { - Log.d(TAG, "Bad URL."); - editText.setText(""); - Toast.makeText(this.getApplicationContext(), R.string.not_valid_url_entered, Toast.LENGTH_LONG).show(); + editUrl.setText(""); + urlError.setError(getString(R.string.not_valid_url_entered)); + } + } + + private void setUpListeners() { + + editUrl.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + } + + @Override + public void afterTextChanged(Editable s) { + if (!validURL(getURL())) { + urlError.setError(getString(R.string.not_valid_url_entered)); + } else { + urlError.setError(null); + } + } + }); + } + + private String getURL() { + String entered_url = editUrl.getText().toString().trim(); + if (entered_url.contains("www.")) entered_url = entered_url.replaceFirst("www.", ""); + if (!entered_url.startsWith("https://")) { + if (entered_url.startsWith("http://")) { + entered_url = entered_url.substring("http://".length()); + } + entered_url = "https://".concat(entered_url); } + return entered_url; } /** |