diff --git a/Habitica/res/layout/activity_create_challenge.xml b/Habitica/res/layout/activity_create_challenge.xml index c24708661..613709647 100644 --- a/Habitica/res/layout/activity_create_challenge.xml +++ b/Habitica/res/layout/activity_create_challenge.xml @@ -29,7 +29,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:textColorHint="@color/brand_500" - app:hintTextAppearance="@style/TextAppearance.AppCompat"> + app:hintTextAppearance="@style/TextAppearance.AppCompat" + android:id="@+id/create_challenge_title_input_layout"> + + + + + + diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 703fb89d3..abb3e1819 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -578,4 +578,9 @@ Edit Challenge You need at least 1 gem to create a challenge in Tavern. You don\'t have enough gems to create a challenge. + Identify your challenge with a tag .. + Please set a tag. + Please add at least one task. + Please set a title. + Please set a description. diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java index f1d2d5f8b..b03423ab2 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java @@ -7,6 +7,7 @@ import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.design.widget.TextInputLayout; import android.support.v7.app.ActionBar; import android.support.v7.widget.AppCompatCheckedTextView; import android.support.v7.widget.AppCompatTextView; @@ -54,9 +55,15 @@ import butterknife.OnClick; public class CreateChallengeActivity extends BaseActivity { public static final String CHALLENGE_ID_KEY = "challengeId"; + @BindView(R.id.create_challenge_title_input_layout) + TextInputLayout create_challenge_title_input_layout; + @BindView(R.id.create_challenge_title) EditText create_challenge_title; + @BindView(R.id.create_challenge_description_input_layout) + TextInputLayout create_challenge_description_input_layout; + @BindView(R.id.create_challenge_description) EditText create_challenge_description; @@ -69,6 +76,12 @@ public class CreateChallengeActivity extends BaseActivity { @BindView(R.id.create_challenge_gem_error) TextView create_challenge_gem_error; + @BindView(R.id.create_challenge_tag_error) + TextView create_challenge_tag_error; + + @BindView(R.id.create_challenge_task_error) + TextView create_challenge_task_error; + @BindView(R.id.challenge_location_spinner) Spinner challenge_location_spinner; @@ -122,7 +135,7 @@ public class CreateChallengeActivity extends BaseActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == R.id.action_save) { + if (item.getItemId() == R.id.action_save && validateAllFields()) { if (editMode) { updateChallenge(); } else { @@ -133,6 +146,41 @@ public class CreateChallengeActivity extends BaseActivity { return super.onOptionsItemSelected(item); } + private boolean validateAllFields(){ + int errors = 0; + + if(getEditTextString(create_challenge_title).isEmpty()){ + errors++; + create_challenge_title_input_layout.setError(getString(R.string.challenge_create_error_title)); + } else { + create_challenge_title_input_layout.setErrorEnabled(false); + } + + if(getEditTextString(create_challenge_description).isEmpty()){ + errors++; + create_challenge_description_input_layout.setError(getString(R.string.challenge_create_error_description)); + } else{ + create_challenge_description_input_layout.setErrorEnabled(false); + } + + if(getEditTextString(create_challenge_tag).isEmpty()){ + errors++; + create_challenge_tag_error.setVisibility(View.VISIBLE); + } else{ + create_challenge_tag_error.setVisibility(View.GONE); + } + + // all "Add {*}"-Buttons are one task itself, so we need atleast more than 4 + if(challengeTasks.getTaskList().size() <= 4){ + errors++; + create_challenge_task_error.setVisibility(View.VISIBLE); + } else { + create_challenge_task_error.setVisibility(View.GONE); + } + + return errors == 0; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -488,6 +536,10 @@ public class CreateChallengeActivity extends BaseActivity { } } + private String getEditTextString(EditText editText){ + return editText.getText().toString(); + } + private class GroupArrayAdapter extends ArrayAdapter { public GroupArrayAdapter(@NonNull Context context) { super(context, android.R.layout.simple_spinner_item);