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.OnClick;
import com.google.android.material.snackbar.Snackbar;
import com.google.common.base.Joiner;
import com.google.common.primitives.Longs;
import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.adapter.TaskAdapterProvider;
@ -484,6 +485,9 @@ public final class TaskListFragment extends InjectingFragment
case R.id.menu_open_map:
((PlaceFilter) filter).openMap(context);
return true;
case R.id.menu_share:
send(transform(taskDao.fetchTasks(preferences, filter), TaskContainer::getTask));
return true;
default:
return onOptionsItemSelected(item);
}
@ -757,6 +761,9 @@ public final class TaskListFragment extends InjectingFragment
updateModeTitle();
recyclerAdapter.notifyDataSetChanged();
return true;
case R.id.menu_share:
send(taskDao.fetch(taskAdapter.getSelected()));
return true;
case R.id.delete:
dialogBuilder
.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
public void onDestroyActionMode(ActionMode mode) {
this.mode = null;

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

@ -19,6 +19,11 @@
android:icon="@drawable/ic_outline_sort_24px"
android:title="@string/TLA_menu_sort"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/menu_share"
android:icon="@drawable/ic_outline_send_24px"
android:title="@string/share"
app:showAsAction="ifRoom" />
<group
android:checkableBehavior="all">
<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="calendar_event_created">Calendar event created for %s</string>
<string name="select_all">Select all</string>
<string name="share">Share</string>
</resources>

Loading…
Cancel
Save