TODOs: Add checkboxes and align the text/icons with action bar title

- checkboxes added. They look great!
- the text was aligned in both views

Missing:
- Tests for the checkbox actions. (This can be added in a later CL,
  along with tests of the back button functionality.)

Change-Id: I7e6150084468c9b0841eddfc9881f6e22dd2ed17
diff --git a/app/src/main/java/io/v/todos/TaskRecyclerAdapter.java b/app/src/main/java/io/v/todos/TaskRecyclerAdapter.java
index 02ab30b..52db3bb 100644
--- a/app/src/main/java/io/v/todos/TaskRecyclerAdapter.java
+++ b/app/src/main/java/io/v/todos/TaskRecyclerAdapter.java
@@ -19,14 +19,17 @@
 public class TaskRecyclerAdapter extends RecyclerView.Adapter<TaskViewHolder> {
     private ArrayList<Task> mBackup;
     private View.OnClickListener mItemListener;
+    private View.OnClickListener mDoneListener;
     private boolean mShowDone = true;
 
     private static final int RESOURCE_ID = R.layout.task_row;
 
-    public TaskRecyclerAdapter(ArrayList<Task> backup, View.OnClickListener itemListener) {
+    public TaskRecyclerAdapter(ArrayList<Task> backup, View.OnClickListener itemListener,
+                               View.OnClickListener doneListener) {
         super();
         mBackup = backup;
         mItemListener = itemListener;
+        mDoneListener = doneListener;
     }
 
     @Override
@@ -39,7 +42,7 @@
     @Override
     public void onBindViewHolder(TaskViewHolder holder, int position) {
         Task task = mBackup.get(position);
-        holder.bindTask(task, mItemListener);
+        holder.bindTask(task, mItemListener, mDoneListener);
     }
 
     @Override
diff --git a/app/src/main/java/io/v/todos/TaskViewHolder.java b/app/src/main/java/io/v/todos/TaskViewHolder.java
index 4b032fb..35c90e6 100644
--- a/app/src/main/java/io/v/todos/TaskViewHolder.java
+++ b/app/src/main/java/io/v/todos/TaskViewHolder.java
@@ -5,7 +5,7 @@
 package io.v.todos;
 
 import android.view.View;
-import android.widget.ImageView;
+import android.widget.ImageButton;
 import android.widget.TextView;
 
 import io.v.todos.model.Task;
@@ -18,9 +18,13 @@
         super(itemView);
     }
 
-    public void bindTask(Task task, View.OnClickListener listener) {
-        final ImageView doneMark = (ImageView) itemView.findViewById(R.id.task_done);
-        doneMark.setVisibility(task.done ? View.VISIBLE : View.GONE);
+    public void bindTask(Task task, View.OnClickListener itemListener,
+                         View.OnClickListener doneListener) {
+        final ImageButton doneMark = (ImageButton) itemView.findViewById(R.id.task_done);
+        doneMark.setImageResource(task.done ? R.drawable.ic_check_box_black_24dp :
+                R.drawable.ic_check_box_outline_blank_black_24dp);
+        doneMark.setTag(task.key);
+        doneMark.setOnClickListener(doneListener);
 
         final TextView name=(TextView) itemView.findViewById(R.id.task_text);
         name.setText(task.text);
@@ -31,7 +35,7 @@
         getCardView().setCardBackgroundColor(task.done ? 0xFFCCCCCC : 0xFFFFFFFF);
 
         itemView.setTag(task.key);
-        itemView.setOnClickListener(listener);
+        itemView.setOnClickListener(itemListener);
     }
 
     private String computeCreated(Task task) {
diff --git a/app/src/main/java/io/v/todos/TodoListActivity.java b/app/src/main/java/io/v/todos/TodoListActivity.java
index dbc0c76..b0a74a4 100644
--- a/app/src/main/java/io/v/todos/TodoListActivity.java
+++ b/app/src/main/java/io/v/todos/TodoListActivity.java
@@ -57,6 +57,13 @@
 
                 initiateTaskEdit(key);
             }
+        }, new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                String key = (String) view.getTag();
+
+                mPersistence.updateTask(snackoosList.findByKey(key).withToggleDone());
+            }
         });
 
         RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler);
diff --git a/app/src/main/res/drawable-hdpi/ic_check_box_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_check_box_black_24dp.png
new file mode 100644
index 0000000..64900ff
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_check_box_black_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/ic_check_box_outline_blank_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_check_box_outline_blank_black_24dp.png
new file mode 100644
index 0000000..b8a8db4
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_check_box_outline_blank_black_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_check_box_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_check_box_black_24dp.png
new file mode 100644
index 0000000..49f9214
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_check_box_black_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_check_box_outline_blank_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_check_box_outline_blank_black_24dp.png
new file mode 100644
index 0000000..8ffd8b6
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_check_box_outline_blank_black_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_check_box_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_check_box_black_24dp.png
new file mode 100644
index 0000000..5b9851d
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_check_box_black_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_black_24dp.png
new file mode 100644
index 0000000..948b3cc
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_black_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_check_box_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_check_box_black_24dp.png
new file mode 100644
index 0000000..dd35fbd
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_check_box_black_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_black_24dp.png
new file mode 100644
index 0000000..546682b
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_black_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_check_box_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_check_box_black_24dp.png
new file mode 100644
index 0000000..b74e00b
--- /dev/null
+++ b/app/src/main/res/drawable-xxxhdpi/ic_check_box_black_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_check_box_outline_blank_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_check_box_outline_blank_black_24dp.png
new file mode 100644
index 0000000..2e32d7a
--- /dev/null
+++ b/app/src/main/res/drawable-xxxhdpi/ic_check_box_outline_blank_black_24dp.png
Binary files differ
diff --git a/app/src/main/res/layout/task_row.xml b/app/src/main/res/layout/task_row.xml
index b0d15a5..b7f3059 100644
--- a/app/src/main/res/layout/task_row.xml
+++ b/app/src/main/res/layout/task_row.xml
@@ -50,15 +50,14 @@
             android:layout_height="wrap_content"
             android:orientation="horizontal">
 
-            <ImageView
+            <ImageButton
                 android:id="@+id/task_done"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_gravity="center_vertical"
-                android:layout_margin="@dimen/fab_margin"
-                android:layout_weight="0"
-                android:src="@drawable/ic_done_black_24dp"
-                android:visibility="gone"/>
+                android:padding="16dp"
+                android:background="?attr/selectableItemBackgroundBorderless"
+                android:layout_weight="0"/>
 
             <LinearLayout
                 android:layout_width="fill_parent"
diff --git a/app/src/main/res/layout/todo_list_row.xml b/app/src/main/res/layout/todo_list_row.xml
index 0797e93..b1e0879 100644
--- a/app/src/main/res/layout/todo_list_row.xml
+++ b/app/src/main/res/layout/todo_list_row.xml
@@ -44,7 +44,8 @@
         <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:orientation="vertical"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content">
+            android:layout_height="wrap_content"
+            android:paddingLeft="10dp">
 
             <TextView android:id="@+id/todo_list_name"
                 android:layout_width="fill_parent"