Add share menu and multi-select menu items

pull/996/head
Alex Baker 6 years ago
parent bc3aed5c5f
commit 4cfe15e35e

@ -51,6 +51,7 @@ import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.OnClick; import butterknife.OnClick;
import com.google.android.material.snackbar.Snackbar; import com.google.android.material.snackbar.Snackbar;
import com.google.common.base.Joiner;
import com.google.common.primitives.Longs; import com.google.common.primitives.Longs;
import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.adapter.TaskAdapterProvider; import com.todoroo.astrid.adapter.TaskAdapterProvider;
@ -484,6 +485,9 @@ public final class TaskListFragment extends InjectingFragment
case R.id.menu_open_map: case R.id.menu_open_map:
((PlaceFilter) filter).openMap(context); ((PlaceFilter) filter).openMap(context);
return true; return true;
case R.id.menu_share:
send(transform(taskDao.fetchTasks(preferences, filter), TaskContainer::getTask));
return true;
default: default:
return onOptionsItemSelected(item); return onOptionsItemSelected(item);
} }
@ -757,6 +761,9 @@ public final class TaskListFragment extends InjectingFragment
updateModeTitle(); updateModeTitle();
recyclerAdapter.notifyDataSetChanged(); recyclerAdapter.notifyDataSetChanged();
return true; return true;
case R.id.menu_share:
send(taskDao.fetch(taskAdapter.getSelected()));
return true;
case R.id.delete: case R.id.delete:
dialogBuilder dialogBuilder
.newDialog(R.string.delete_selected_tasks) .newDialog(R.string.delete_selected_tasks)
@ -778,6 +785,21 @@ public final class TaskListFragment extends InjectingFragment
} }
} }
private void send(List<Task> tasks) {
Intent intent = new Intent(Intent.ACTION_SEND);
String output =
Joiner.on("\n")
.join(
transform(
tasks, t -> String.format("%s %s", t.isCompleted() ? "☑" : "☐", t.getTitle())));
intent.putExtra(Intent.EXTRA_TEXT, output);
intent.setType("text/plain");
startActivity(Intent.createChooser(intent, null));
taskAdapter.clearSelections();
}
@Override @Override
public void onDestroyActionMode(ActionMode mode) { public void onDestroyActionMode(ActionMode mode) {
this.mode = null; this.mode = null;

@ -20,6 +20,12 @@
android:title="@string/select_all" android:title="@string/select_all"
app:showAsAction="ifRoom" /> app:showAsAction="ifRoom" />
<item
android:id="@+id/menu_share"
android:icon="@drawable/ic_outline_send_24px"
android:title="@string/share"
app:showAsAction="ifRoom" />
<item <item
android:id="@+id/copy_tasks" android:id="@+id/copy_tasks"
android:icon="@drawable/ic_outline_file_copy_24px" android:icon="@drawable/ic_outline_file_copy_24px"

@ -19,6 +19,11 @@
android:icon="@drawable/ic_outline_sort_24px" android:icon="@drawable/ic_outline_sort_24px"
android:title="@string/TLA_menu_sort" android:title="@string/TLA_menu_sort"
app:showAsAction="ifRoom"/> app:showAsAction="ifRoom"/>
<item
android:id="@+id/menu_share"
android:icon="@drawable/ic_outline_send_24px"
android:title="@string/share"
app:showAsAction="ifRoom" />
<group <group
android:checkableBehavior="all"> android:checkableBehavior="all">
<item <item

@ -582,4 +582,5 @@ File %1$s contained %2$s.\n\n
<string name="auto_dismiss_datetime_summary">Close date time picker after selecting a date or time</string> <string name="auto_dismiss_datetime_summary">Close date time picker after selecting a date or time</string>
<string name="calendar_event_created">Calendar event created for %s</string> <string name="calendar_event_created">Calendar event created for %s</string>
<string name="select_all">Select all</string> <string name="select_all">Select all</string>
<string name="share">Share</string>
</resources> </resources>

Loading…
Cancel
Save