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