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