diff --git a/Habitica/res/layout/activity_task_form.xml b/Habitica/res/layout/activity_task_form.xml index 8a54bc91a..362d15a9e 100644 --- a/Habitica/res/layout/activity_task_form.xml +++ b/Habitica/res/layout/activity_task_form.xml @@ -95,10 +95,10 @@ + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:id="@+id/task_difficulty_wrapper"> + + + + + + + diff --git a/Habitica/res/values-de/strings.xml b/Habitica/res/values-de/strings.xml index f817ccd02..72f9b7c10 100644 --- a/Habitica/res/values-de/strings.xml +++ b/Habitica/res/values-de/strings.xml @@ -69,6 +69,11 @@ Versuche sorgfältiger deine täglichen Aufgaben zu erledigen und bekomme diese Einfach Mittel Schwer + Attribute + Körperlich + Mental + Soziales + Anderes Starttermin Positiv ( + ) Negativ ( - ) diff --git a/Habitica/res/values-es/strings.xml b/Habitica/res/values-es/strings.xml index 0fe94dd07..83092b703 100644 --- a/Habitica/res/values-es/strings.xml +++ b/Habitica/res/values-es/strings.xml @@ -70,6 +70,11 @@ Fácil Intermedia Difícil + Atributos + Físicos + Mentales + Social + Otro Fecha de inicio Positivo ( + ) Negativo ( - ) diff --git a/Habitica/res/values-fr/strings.xml b/Habitica/res/values-fr/strings.xml index b931e6dc0..2220b05f6 100644 --- a/Habitica/res/values-fr/strings.xml +++ b/Habitica/res/values-fr/strings.xml @@ -70,6 +70,11 @@ Facile Moyen Difficile + Attributs + Physique + Mental + Social + Autres Date de début Positif ( + ) Négatif ( - ) diff --git a/Habitica/res/values-it/strings.xml b/Habitica/res/values-it/strings.xml index 0a01b190f..8fcf65288 100644 --- a/Habitica/res/values-it/strings.xml +++ b/Habitica/res/values-it/strings.xml @@ -70,6 +70,11 @@ Facile Medio Difficile + Attributi + Fisico + Mentale + Social + Altro Data di partenza Positiva ( + ) Negativa ( - ) diff --git a/Habitica/res/values-pl/strings.xml b/Habitica/res/values-pl/strings.xml index d989af677..716e5dd4d 100644 --- a/Habitica/res/values-pl/strings.xml +++ b/Habitica/res/values-pl/strings.xml @@ -70,6 +70,11 @@ Łatwy Średni Trudny + Atrybuty + Fizyczne + Mentalne + Społeczność + Inne Data rozpoczęcia Pozytywne ( + ) Negatywne ( - ) diff --git a/Habitica/res/values-pt-rBR/strings.xml b/Habitica/res/values-pt-rBR/strings.xml index d974f0335..1083e28dc 100644 --- a/Habitica/res/values-pt-rBR/strings.xml +++ b/Habitica/res/values-pt-rBR/strings.xml @@ -70,6 +70,11 @@ Fácil Médio Dificil + Atributos + Físico + Mental + Social + Outros Data de inicio Positivo ( + ) Negativo ( + ) diff --git a/Habitica/res/values-zh/strings.xml b/Habitica/res/values-zh/strings.xml index 0adaa315a..ed8be3954 100644 --- a/Habitica/res/values-zh/strings.xml +++ b/Habitica/res/values-zh/strings.xml @@ -70,6 +70,11 @@ 简单 中等 困难 + 属性 + 生理上的 + 心理上的 + 社交 + 其他 开始日期 正面的(+) 负面的 (-) diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index f2857c416..7bd2d6669 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -86,6 +86,12 @@ Checklist Actions + Attributes + Physical + Mental + Social + Other + Frequency On Certain Days of the Week Every X Days diff --git a/Habitica/res/values/values.xml b/Habitica/res/values/values.xml index 79d847ad1..3ca7e738b 100644 --- a/Habitica/res/values/values.xml +++ b/Habitica/res/values/values.xml @@ -15,6 +15,13 @@ @string/hard + + @string/physical + @string/mental + @string/social + @string/other + + @string/frequency_weekly @string/frequency_daily diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java index 9378aeb02..8e14510b4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java @@ -10,6 +10,7 @@ import android.support.v7.app.AlertDialog; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; +import android.text.TextUtils; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; @@ -64,11 +65,17 @@ import butterknife.Bind; public class TaskFormActivity extends BaseActivity implements AdapterView.OnItemSelectedListener { + public static final String TASK_ID_KEY = "taskId"; + public static final String TASK_TYPE_KEY = "type"; + public static final String TAG_IDS_KEY = "tagsId"; + public static final String TAG_NAMES_KEY = "tagsName"; + public static final String ALLOCATION_MODE_KEY = "allocationModeKey"; private String taskType; private String taskId; private Task task; + private String allocationMode; private List weekdayCheckboxes = new ArrayList<>(); private NumberPicker frequencyPicker; private List tags; @@ -93,6 +100,9 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem @Bind(R.id.task_difficulty_wrapper) LinearLayout difficultyWrapper; + @Bind(R.id.task_attribute_wrapper) + LinearLayout attributeWrapper; + @Bind(R.id.task_main_wrapper) LinearLayout mainWrapper; @@ -105,6 +115,9 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem @Bind(R.id.task_difficulty_spinner) Spinner taskDifficultySpinner; + @Bind(R.id.task_attribute_spinner) + Spinner taskAttributeSpinner; + @Bind(R.id.btn_delete_task) Button btnDelete; @@ -177,10 +190,11 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem Intent intent = getIntent(); Bundle bundle = intent.getExtras(); - taskType = bundle.getString("type"); - taskId = bundle.getString("taskId"); - tags = bundle.getStringArrayList("tagsId"); - tagsName = bundle.getStringArrayList("tagsName"); + taskType = bundle.getString(TASK_TYPE_KEY); + taskId = bundle.getString(TASK_ID_KEY); + tags = bundle.getStringArrayList(TAG_IDS_KEY); + tagsName = bundle.getStringArrayList(TAG_NAMES_KEY); + allocationMode = bundle.getString(ALLOCATION_MODE_KEY); userSelectedTags = new ArrayList(); allTags = new ArrayList(); userSelectedTagIds = new ArrayList(); @@ -217,12 +231,18 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem } }); - ArrayAdapter adapter = ArrayAdapter.createFromResource(this, + ArrayAdapter difficultyAdapter = ArrayAdapter.createFromResource(this, R.array.task_difficulties, android.R.layout.simple_spinner_item); - adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - taskDifficultySpinner.setAdapter(adapter); + difficultyAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + taskDifficultySpinner.setAdapter(difficultyAdapter); taskDifficultySpinner.setSelection(1); + ArrayAdapter attributeAdapter = ArrayAdapter.createFromResource(this, + R.array.task_attributes, android.R.layout.simple_spinner_item); + attributeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + taskAttributeSpinner.setAdapter(attributeAdapter); + taskAttributeSpinner.setSelection(0); + //Filling in the tags check boxes //If tags list is empty, we don't allow user to select a tag. //If they have tags, we allow them to add tags @@ -234,6 +254,10 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem createTagsCheckBoxes(); } + if (TextUtils.isEmpty(allocationMode) || !allocationMode.equals("taskbased")){ + attributeWrapper.setVisibility(View.GONE); + } + if (taskType.equals("habit")) { taskWrapper.removeView(startDateLayout); @@ -280,6 +304,7 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem mainWrapper.removeView(checklistWrapper); difficultyWrapper.setVisibility(View.GONE); + attributeWrapper.setVisibility(View.GONE); } if (taskId != null) { @@ -608,6 +633,24 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem this.taskDifficultySpinner.setSelection(3); } + String attribute = task.getAttribute(); + if (attribute != null){ + switch (attribute){ + case Task.ATTRIBUTE_STRENGTH: + taskAttributeSpinner.setSelection(0); + break; + case Task.ATTRIBUTE_INTELLIGENCE: + taskAttributeSpinner.setSelection(1); + break; + case Task.ATTRIBUTE_CONSTITUTION: + taskAttributeSpinner.setSelection(2); + break; + case Task.ATTRIBUTE_PERCEPTION: + taskAttributeSpinner.setSelection(3); + break; + } + } + if (task.type.equals("habit")) { positiveCheckBox.setChecked(task.getUp()); negativeCheckBox.setChecked(task.getDown()); @@ -685,6 +728,25 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem task.setPriority((float) 2.0); } + if (TextUtils.isEmpty(allocationMode) || !allocationMode.equals("taskbased")){ + task.setAttribute(Task.ATTRIBUTE_STRENGTH); + }else { + switch (this.taskAttributeSpinner.getSelectedItemPosition()){ + case 0: + task.setAttribute(Task.ATTRIBUTE_STRENGTH); + break; + case 1: + task.setAttribute(Task.ATTRIBUTE_INTELLIGENCE); + break; + case 2: + task.setAttribute(Task.ATTRIBUTE_CONSTITUTION); + break; + case 3: + task.setAttribute(Task.ATTRIBUTE_PERCEPTION); + break; + } + } + switch (task.type) { case "habit": { task.setUp(positiveCheckBox.isChecked()); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java index 6add8132c..05d0fd5c1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java @@ -25,6 +25,7 @@ import android.widget.ImageView; import com.github.clans.fab.FloatingActionButton; import com.github.clans.fab.FloatingActionMenu; import com.habitrpg.android.habitica.ContentCache; +import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback; import com.habitrpg.android.habitica.callbacks.TaskCreationCallback; @@ -415,11 +416,19 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi if (this.displayingTaskForm) { return; } + + String allocationMode = ""; + if (HabiticaApplication.User != null && HabiticaApplication.User.getPreferences() != null){ + allocationMode = HabiticaApplication.User.getPreferences().getAllocationMode(); + } + Bundle bundle = new Bundle(); - bundle.putString("type", event.Task.getType()); - bundle.putString("taskId", event.Task.getId()); - bundle.putStringArrayList("tagsId", new ArrayList<>(this.getTagIds())); - bundle.putStringArrayList("tagsName", new ArrayList<>(this.getTagNames())); + bundle.putString(TaskFormActivity.TASK_TYPE_KEY, event.Task.getType()); + bundle.putString(TaskFormActivity.TASK_ID_KEY, event.Task.getId()); + bundle.putString(TaskFormActivity.ALLOCATION_MODE_KEY, allocationMode); + bundle.putStringArrayList(TaskFormActivity.TAG_IDS_KEY, new ArrayList<>(this.getTagIds())); + bundle.putStringArrayList(TaskFormActivity.TAG_NAMES_KEY, new ArrayList<>(this.getTagNames())); + Intent intent = new Intent(activity, TaskFormActivity.class); intent.putExtras(bundle); this.displayingTaskForm = true; diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java index c9186eaf0..eae2510c2 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java @@ -34,6 +34,10 @@ public class Task extends BaseModel { public static final String TYPE_REWARD = "reward"; public static final String FREQUENCY_WEEKLY = "weekly"; public static final String FREQUENCY_DAILY = "daily"; + public static final String ATTRIBUTE_STRENGTH = "str"; + public static final String ATTRIBUTE_CONSTITUTION = "con"; + public static final String ATTRIBUTE_INTELLIGENCE = "int"; + public static final String ATTRIBUTE_PERCEPTION = "per"; @Column @PrimaryKey