Loading app/src/main/java/it/niedermann/owncloud/notes/android/MultiSelectedActionModeCallback.java +19 −0 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.android; import android.content.Context; import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; import android.view.View; Loading @@ -27,6 +28,7 @@ import it.niedermann.owncloud.notes.model.DBNote; import it.niedermann.owncloud.notes.model.ItemAdapter; import it.niedermann.owncloud.notes.persistence.NoteServerSyncHelper.ViewProvider; import it.niedermann.owncloud.notes.persistence.NotesDatabase; import it.niedermann.owncloud.notes.util.ShareUtil; public class MultiSelectedActionModeCallback implements Callback { Loading Loading @@ -109,6 +111,23 @@ public class MultiSelectedActionModeCallback implements Callback { case R.id.menu_move: AccountChooserDialogFragment.newInstance().show(fragmentManager, NotesListViewActivity.class.getSimpleName()); return true; case R.id.menu_share: final String subject = (adapter.getSelected().size() == 1) ? ((DBNote) adapter.getItem(adapter.getSelected().get(0))).getTitle() : context.getString(R.string.share_multiple, adapter.getSelected().size()); final StringBuilder noteContents = new StringBuilder(); for (Integer i : adapter.getSelected()) { final DBNote noteWithoutContent = (DBNote) adapter.getItem(i); final String tempFullNote = db.getNote(noteWithoutContent.getAccountId(), noteWithoutContent.getId()).getContent(); if (!TextUtils.isEmpty(tempFullNote)) { if (noteContents.length() > 0) { noteContents.append("\n\n"); } noteContents.append(tempFullNote); } } ShareUtil.openShareDialog(context, subject, noteContents.toString()); return true; default: return false; } Loading app/src/main/java/it/niedermann/owncloud/notes/android/fragment/BaseNoteFragment.java +2 −16 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ import android.view.MenuItem; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.ShareActionProvider; import androidx.core.view.MenuItemCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; Loading @@ -36,6 +34,7 @@ import it.niedermann.owncloud.notes.model.ISyncCallback; import it.niedermann.owncloud.notes.model.LocalAccount; import it.niedermann.owncloud.notes.persistence.NotesDatabase; import it.niedermann.owncloud.notes.util.NoteUtil; import it.niedermann.owncloud.notes.util.ShareUtil; import static androidx.core.content.pm.ShortcutManagerCompat.isRequestPinShortcutSupported; import static it.niedermann.owncloud.notes.android.activity.EditNoteActivity.ACTION_SHORTCUT; Loading Loading @@ -195,20 +194,7 @@ public abstract class BaseNoteFragment extends Fragment implements CategoryDialo AccountChooserDialogFragment.newInstance().show(requireActivity().getSupportFragmentManager(), BaseNoteFragment.class.getSimpleName()); return true; case R.id.menu_share: Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(Intent.EXTRA_SUBJECT, note.getTitle()); shareIntent.putExtra(Intent.EXTRA_TEXT, note.getContent()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { startActivity(Intent.createChooser(shareIntent, note.getTitle())); } else { ShareActionProvider actionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item); actionProvider.setShareIntent(shareIntent); } ShareUtil.openShareDialog(requireContext(), note.getTitle(), note.getContent()); return false; case MENU_ID_PIN: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { Loading app/src/main/java/it/niedermann/owncloud/notes/util/NoteUtil.java +6 −0 Original line number Diff line number Diff line Loading @@ -5,9 +5,11 @@ import android.content.Context; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import java.util.Collection; import java.util.regex.Pattern; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.model.DBNote; /** * Provides basic functionality for Note operations. Loading Loading @@ -140,4 +142,8 @@ public class NoteUtil { public static String extendCategory(@NonNull String category) { return category.replace("/", " / "); } public static String concat(@NonNull Collection<DBNote> notes) { return ""; } } app/src/main/java/it/niedermann/owncloud/notes/util/ShareUtil.java 0 → 100644 +20 −0 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.util; import android.content.Context; import android.content.Intent; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import static android.content.ClipDescription.MIMETYPE_TEXT_PLAIN; public class ShareUtil { public static void openShareDialog(@NonNull Context context, @Nullable String subject, @Nullable String text) { context.startActivity(Intent.createChooser(new Intent() .setAction(Intent.ACTION_SEND) .setType(MIMETYPE_TEXT_PLAIN) .putExtra(Intent.EXTRA_SUBJECT, subject) .putExtra(Intent.EXTRA_TITLE, subject) .putExtra(Intent.EXTRA_TEXT, text), subject)); } } app/src/main/res/menu/menu_list_context_multiple.xml +7 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,13 @@ <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/menu_share" android:icon="@drawable/ic_share_white_24dp" android:orderInCategory="90" android:title="@string/menu_share" app:showAsAction="ifRoom" /> <item android:id="@+id/menu_delete" android:icon="@drawable/ic_delete_white_24dp" Loading Loading
app/src/main/java/it/niedermann/owncloud/notes/android/MultiSelectedActionModeCallback.java +19 −0 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.android; import android.content.Context; import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; import android.view.View; Loading @@ -27,6 +28,7 @@ import it.niedermann.owncloud.notes.model.DBNote; import it.niedermann.owncloud.notes.model.ItemAdapter; import it.niedermann.owncloud.notes.persistence.NoteServerSyncHelper.ViewProvider; import it.niedermann.owncloud.notes.persistence.NotesDatabase; import it.niedermann.owncloud.notes.util.ShareUtil; public class MultiSelectedActionModeCallback implements Callback { Loading Loading @@ -109,6 +111,23 @@ public class MultiSelectedActionModeCallback implements Callback { case R.id.menu_move: AccountChooserDialogFragment.newInstance().show(fragmentManager, NotesListViewActivity.class.getSimpleName()); return true; case R.id.menu_share: final String subject = (adapter.getSelected().size() == 1) ? ((DBNote) adapter.getItem(adapter.getSelected().get(0))).getTitle() : context.getString(R.string.share_multiple, adapter.getSelected().size()); final StringBuilder noteContents = new StringBuilder(); for (Integer i : adapter.getSelected()) { final DBNote noteWithoutContent = (DBNote) adapter.getItem(i); final String tempFullNote = db.getNote(noteWithoutContent.getAccountId(), noteWithoutContent.getId()).getContent(); if (!TextUtils.isEmpty(tempFullNote)) { if (noteContents.length() > 0) { noteContents.append("\n\n"); } noteContents.append(tempFullNote); } } ShareUtil.openShareDialog(context, subject, noteContents.toString()); return true; default: return false; } Loading
app/src/main/java/it/niedermann/owncloud/notes/android/fragment/BaseNoteFragment.java +2 −16 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ import android.view.MenuItem; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.ShareActionProvider; import androidx.core.view.MenuItemCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; Loading @@ -36,6 +34,7 @@ import it.niedermann.owncloud.notes.model.ISyncCallback; import it.niedermann.owncloud.notes.model.LocalAccount; import it.niedermann.owncloud.notes.persistence.NotesDatabase; import it.niedermann.owncloud.notes.util.NoteUtil; import it.niedermann.owncloud.notes.util.ShareUtil; import static androidx.core.content.pm.ShortcutManagerCompat.isRequestPinShortcutSupported; import static it.niedermann.owncloud.notes.android.activity.EditNoteActivity.ACTION_SHORTCUT; Loading Loading @@ -195,20 +194,7 @@ public abstract class BaseNoteFragment extends Fragment implements CategoryDialo AccountChooserDialogFragment.newInstance().show(requireActivity().getSupportFragmentManager(), BaseNoteFragment.class.getSimpleName()); return true; case R.id.menu_share: Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(Intent.EXTRA_SUBJECT, note.getTitle()); shareIntent.putExtra(Intent.EXTRA_TEXT, note.getContent()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { startActivity(Intent.createChooser(shareIntent, note.getTitle())); } else { ShareActionProvider actionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item); actionProvider.setShareIntent(shareIntent); } ShareUtil.openShareDialog(requireContext(), note.getTitle(), note.getContent()); return false; case MENU_ID_PIN: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { Loading
app/src/main/java/it/niedermann/owncloud/notes/util/NoteUtil.java +6 −0 Original line number Diff line number Diff line Loading @@ -5,9 +5,11 @@ import android.content.Context; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import java.util.Collection; import java.util.regex.Pattern; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.model.DBNote; /** * Provides basic functionality for Note operations. Loading Loading @@ -140,4 +142,8 @@ public class NoteUtil { public static String extendCategory(@NonNull String category) { return category.replace("/", " / "); } public static String concat(@NonNull Collection<DBNote> notes) { return ""; } }
app/src/main/java/it/niedermann/owncloud/notes/util/ShareUtil.java 0 → 100644 +20 −0 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.util; import android.content.Context; import android.content.Intent; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import static android.content.ClipDescription.MIMETYPE_TEXT_PLAIN; public class ShareUtil { public static void openShareDialog(@NonNull Context context, @Nullable String subject, @Nullable String text) { context.startActivity(Intent.createChooser(new Intent() .setAction(Intent.ACTION_SEND) .setType(MIMETYPE_TEXT_PLAIN) .putExtra(Intent.EXTRA_SUBJECT, subject) .putExtra(Intent.EXTRA_TITLE, subject) .putExtra(Intent.EXTRA_TEXT, text), subject)); } }
app/src/main/res/menu/menu_list_context_multiple.xml +7 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,13 @@ <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/menu_share" android:icon="@drawable/ic_share_white_24dp" android:orderInCategory="90" android:title="@string/menu_share" app:showAsAction="ifRoom" /> <item android:id="@+id/menu_delete" android:icon="@drawable/ic_delete_white_24dp" Loading