diff --git a/Habitica/res/layout/checklist_item_row.xml b/Habitica/res/layout/checklist_item_row.xml
index 5f58bf83f..968616171 100644
--- a/Habitica/res/layout/checklist_item_row.xml
+++ b/Habitica/res/layout/checklist_item_row.xml
@@ -6,7 +6,7 @@
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="fill_parent"
android:minHeight="@dimen/checklist_item_min_height">
-
@@ -14,11 +14,10 @@
android:id="@+id/checkBox"
android:layout_width="@dimen/checkbox_size"
android:layout_height="@dimen/checkbox_size"
- android:layout_centerInParent="true"
android:gravity="center"
android:button="@drawable/checklist_checkbox"
- android:layout_gravity="center_horizontal" />
-
+ android:layout_gravity="center" />
+
-
-
-
-
-
-
-
+
+ android:layout_margin="0dp"
+ android:gravity="center_vertical"
+ android:minHeight="60dp">
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/yesterdailies/YesterdailyDialog.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/yesterdailies/YesterdailyDialog.java
index 669332f4c..218eb14cc 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/yesterdailies/YesterdailyDialog.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/yesterdailies/YesterdailyDialog.java
@@ -7,6 +7,7 @@ import android.os.Build;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -15,6 +16,7 @@ import com.habitrpg.android.habitica.R;
import com.habitrpg.android.habitica.data.TaskRepository;
import com.habitrpg.android.habitica.data.UserRepository;
import com.habitrpg.android.habitica.helpers.RxErrorHandler;
+import com.habitrpg.android.habitica.models.tasks.ChecklistItem;
import com.habitrpg.android.habitica.models.tasks.Task;
import java.util.ArrayList;
@@ -33,6 +35,7 @@ public class YesterdailyDialog extends AlertDialog {
static boolean isDisplaying = false;
private final List tasks;
+ private final TaskRepository taskRepository;
private UserRepository userRepository;
@BindView(R.id.yesterdailies_list)
@@ -41,9 +44,10 @@ public class YesterdailyDialog extends AlertDialog {
@BindColor(R.color.task_gray)
int taskGray;
- private YesterdailyDialog(@NonNull Context context, UserRepository userRepository, List tasks) {
+ private YesterdailyDialog(@NonNull Context context, UserRepository userRepository, TaskRepository taskRepository, List tasks) {
super(context);
this.userRepository = userRepository;
+ this.taskRepository = taskRepository;
this.tasks = tasks;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@@ -77,10 +81,26 @@ public class YesterdailyDialog extends AlertDialog {
taskView.setClipToOutline(true);
}
configureTaskView(taskView, task);
- taskView.setOnClickListener(v -> {
+ View taskContainer = taskView.findViewById(R.id.taskHolder);
+ taskContainer.setOnClickListener(v -> {
task.completed = !task.completed;
configureTaskView(taskView, task);
});
+
+ if (task.checklist.size() > 0) {
+ View checklistDivider = taskView.findViewById(R.id.checklistDivider);
+ ViewGroup checklistContainer = taskView.findViewById(R.id.checklistView);
+ for (ChecklistItem item : task.checklist) {
+ View checklistView = inflater.inflate(R.layout.checklist_item_row, yesterdailiesList, false);
+ configureChecklistView(checklistView, item);
+ checklistView.setOnClickListener(v -> {
+ item.setCompleted(!item.getCompleted());
+ taskRepository.scoreChecklistItem(task.getId(), item.getId()).subscribe(task1 -> {}, RxErrorHandler.handleEmptyError());
+ configureChecklistView(checklistView, item);
+ });
+ checklistContainer.addView(checklistView);
+ }
+ }
CheckBox checkBox = (CheckBox) taskView.findViewById(R.id.checkBox);
checkBox.setEnabled(false);
checkBox.setClickable(false);
@@ -88,6 +108,15 @@ public class YesterdailyDialog extends AlertDialog {
}
}
+ private void configureChecklistView(View checklistView, ChecklistItem item) {
+ CheckBox checkbox = (CheckBox) checklistView.findViewById(R.id.checkBox);
+ checkbox.setChecked(item.getCompleted());
+ View checkboxHolder = checklistView.findViewById(R.id.checkBoxHolder);
+ checkboxHolder.setBackgroundResource(R.color.gray_700);
+ TextView textView = (TextView) checklistView.findViewById(R.id.checkedTextView);
+ textView.setText(item.getText());
+ }
+
private void configureTaskView(View taskView, Task task) {
boolean completed = !task.isDisplayedActive();
CheckBox checkbox = (CheckBox) taskView.findViewById(R.id.checkBox);
@@ -129,7 +158,7 @@ public class YesterdailyDialog extends AlertDialog {
return;
}
if (tasks.size() > 0) {
- showDialog(activity, userRepository, tasks);
+ showDialog(activity, userRepository, taskRepository, tasks);
} else {
userRepository.runCron();
}
@@ -137,11 +166,11 @@ public class YesterdailyDialog extends AlertDialog {
}
}
- private static void showDialog(Activity activity, UserRepository userRepository, List tasks) {
+ private static void showDialog(Activity activity, UserRepository userRepository, TaskRepository taskRepository, List tasks) {
if (activity.isFinishing()) {
return;
}
- YesterdailyDialog dialog = new YesterdailyDialog(activity, userRepository, tasks);
+ YesterdailyDialog dialog = new YesterdailyDialog(activity, userRepository, taskRepository, tasks);
dialog.show();
isDisplaying = true;
}