diff --git a/app/src/main/kotlin/org/fossify/gallery/activities/ViewPagerActivity.kt b/app/src/main/kotlin/org/fossify/gallery/activities/ViewPagerActivity.kt index fda8b9f00..f12be5af1 100644 --- a/app/src/main/kotlin/org/fossify/gallery/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/org/fossify/gallery/activities/ViewPagerActivity.kt @@ -5,6 +5,8 @@ import android.animation.ValueAnimator import android.annotation.SuppressLint import android.app.Activity import android.content.ActivityNotFoundException +import android.content.ClipData +import android.content.ClipboardManager import android.content.Intent import android.content.pm.ActivityInfo import android.content.pm.ShortcutInfo @@ -171,6 +173,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View findItem(R.id.menu_rename).isVisible = visibleBottomActions and BOTTOM_ACTION_RENAME == 0 && !currentMedium.getIsInRecycleBin() findItem(R.id.menu_rotate).isVisible = currentMedium.isImage() && visibleBottomActions and BOTTOM_ACTION_ROTATE == 0 findItem(R.id.menu_set_as).isVisible = visibleBottomActions and BOTTOM_ACTION_SET_AS == 0 + findItem(R.id.menu_copy_to_clipboard).isVisible = true findItem(R.id.menu_copy_to).isVisible = visibleBottomActions and BOTTOM_ACTION_COPY == 0 findItem(R.id.menu_move_to).isVisible = visibleBottomActions and BOTTOM_ACTION_MOVE == 0 findItem(R.id.menu_save_as).isVisible = rotationDegrees != 0 @@ -249,6 +252,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View R.id.menu_create_shortcut -> createShortcut() R.id.menu_resize -> resizeImage() R.id.menu_settings -> launchSettings() + R.id.menu_copy_to_clipboard -> copyImageToClipboard() else -> return@setOnMenuItemClickListener false } return@setOnMenuItemClickListener true @@ -1039,6 +1043,14 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View launchResizeImageDialog(oldPath) } + private fun copyImageToClipboard() { + val clipboard = getSystemService(ClipboardManager::class.java) as ClipboardManager + + val imagePath = getCurrentMedium()?.path ?: return + val clip = ClipData.newUri(contentResolver, "Image", getFinalUriFromPath(imagePath, BuildConfig.APPLICATION_ID)) + clipboard.setPrimaryClip(clip) + } + private fun checkDeleteConfirmation() { if (getCurrentMedium() == null) { return diff --git a/app/src/main/res/menu/menu_viewpager.xml b/app/src/main/res/menu/menu_viewpager.xml index d2118c4bf..80fb9b25c 100644 --- a/app/src/main/res/menu/menu_viewpager.xml +++ b/app/src/main/res/menu/menu_viewpager.xml @@ -56,6 +56,11 @@ android:icon="@drawable/ic_unhide_vector" android:title="@string/unhide" app:showAsAction="ifRoom" /> +