diff --git a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java
index a12af6e67..c67100162 100644
--- a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java
+++ b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java
@@ -225,6 +225,32 @@ class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFactory {
row.setViewVisibility(R.id.divider, View.GONE);
}
+ if (taskContainer.hasChildren()) {
+ Intent toggleSubtasks = new Intent(WidgetClickActivity.TOGGLE_SUBTASKS);
+ toggleSubtasks.putExtra(WidgetClickActivity.EXTRA_TASK, task);
+ toggleSubtasks.putExtra(WidgetClickActivity.EXTRA_COLLAPSED, !taskContainer.isCollapsed());
+ row.setOnClickFillInIntent(R.id.subtask_button, toggleSubtasks);
+ row.setInt(
+ R.id.subtask_button,
+ "setBackgroundResource",
+ theme == 0 ? R.drawable.widget_chip_light : R.drawable.widget_chip_dark);
+ row.setTextColor(R.id.subtask_text, textColorSecondary);
+ row.setTextViewText(
+ R.id.subtask_text,
+ context
+ .getResources()
+ .getQuantityString(
+ R.plurals.subtask_count, taskContainer.children, taskContainer.children));
+ row.setImageViewResource(
+ R.id.subtask_icon,
+ taskContainer.isCollapsed()
+ ? R.drawable.ic_keyboard_arrow_up_black_18dp
+ : R.drawable.ic_keyboard_arrow_down_black_18dp);
+ row.setInt(R.id.subtask_icon, "setColorFilter", textColorSecondary);
+ row.setViewVisibility(R.id.subtask_button, View.VISIBLE);
+ } else {
+ row.setViewVisibility(R.id.subtask_button, View.GONE);
+ }
row.setInt(
R.id.widget_row, "setLayoutDirection", Locale.getInstance(context).getDirectionality());
diff --git a/app/src/main/java/org/tasks/widget/WidgetClickActivity.java b/app/src/main/java/org/tasks/widget/WidgetClickActivity.java
index 344bac573..797782836 100644
--- a/app/src/main/java/org/tasks/widget/WidgetClickActivity.java
+++ b/app/src/main/java/org/tasks/widget/WidgetClickActivity.java
@@ -3,9 +3,11 @@ package org.tasks.widget;
import android.content.Intent;
import android.os.Bundle;
import com.google.common.base.Strings;
+import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskCompleter;
import javax.inject.Inject;
+import org.tasks.LocalBroadcastManager;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.intents.TaskIntents;
@@ -14,10 +16,14 @@ public class WidgetClickActivity extends InjectingAppCompatActivity {
public static final String COMPLETE_TASK = "COMPLETE_TASK";
public static final String EDIT_TASK = "EDIT_TASK";
+ public static final String TOGGLE_SUBTASKS = "TOGGLE_SUBTASKS";
public static final String EXTRA_FILTER = "extra_filter";
public static final String EXTRA_TASK = "extra_task"; // $NON-NLS-1$
+ public static final String EXTRA_COLLAPSED = "extra_collapsed";
@Inject TaskCompleter taskCompleter;
+ @Inject TaskDao taskDao;
+ @Inject LocalBroadcastManager localBroadcastManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -44,6 +50,10 @@ public class WidgetClickActivity extends InjectingAppCompatActivity {
intent.getParcelableExtra(EXTRA_FILTER),
intent.getParcelableExtra(EXTRA_TASK)));
break;
+ case TOGGLE_SUBTASKS:
+ taskDao.setCollapsed(task.getId(), intent.getBooleanExtra(EXTRA_COLLAPSED, false));
+ localBroadcastManager.broadcastRefresh();
+ break;
}
finish();
diff --git a/app/src/main/res/drawable/widget_chip_dark.xml b/app/src/main/res/drawable/widget_chip_dark.xml
new file mode 100644
index 000000000..51411cae1
--- /dev/null
+++ b/app/src/main/res/drawable/widget_chip_dark.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/widget_chip_light.xml b/app/src/main/res/drawable/widget_chip_light.xml
new file mode 100644
index 000000000..d8882a2a3
--- /dev/null
+++ b/app/src/main/res/drawable/widget_chip_light.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_row.xml b/app/src/main/res/layout/widget_row.xml
index c9b7f5cf5..6cbf7bb56 100644
--- a/app/src/main/res/layout/widget_row.xml
+++ b/app/src/main/res/layout/widget_row.xml
@@ -13,7 +13,8 @@
android:id="@+id/start_padding"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentStart="true"/>
+ android:layout_alignParentStart="true"
+ tools:ignore="ContentDescription" />
+ android:paddingTop="@dimen/widget_padding"
+ tools:ignore="ContentDescription" />
+
+
+
+
+
+
+
+
+ android:paddingTop="@dimen/widget_padding"
+ tools:ignore="ContentDescription" />
+ android:layout_height=".5dp"
+ tools:ignore="ContentDescription" />
\ No newline at end of file