diff options
Diffstat (limited to 'ui/src/main/java/com/wireguard/android/util/ClipboardUtils.kt')
-rw-r--r-- | ui/src/main/java/com/wireguard/android/util/ClipboardUtils.kt | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/ui/src/main/java/com/wireguard/android/util/ClipboardUtils.kt b/ui/src/main/java/com/wireguard/android/util/ClipboardUtils.kt new file mode 100644 index 00000000..8968979f --- /dev/null +++ b/ui/src/main/java/com/wireguard/android/util/ClipboardUtils.kt @@ -0,0 +1,37 @@ +/* + * Copyright © 2017-2025 WireGuard LLC. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.wireguard.android.util + +import android.content.ClipData +import android.content.ClipboardManager +import android.os.Build +import android.view.View +import android.widget.TextView +import androidx.core.content.getSystemService +import com.google.android.material.snackbar.Snackbar +import com.google.android.material.textfield.TextInputEditText +import com.wireguard.android.R + +/** + * Standalone utilities for interacting with the system clipboard. + */ +object ClipboardUtils { + @JvmStatic + fun copyTextView(view: View) { + val data = when (view) { + is TextInputEditText -> Pair(view.editableText, view.hint) + is TextView -> Pair(view.text, view.contentDescription) + else -> return + } + if (data.first == null || data.first.isEmpty()) { + return + } + val service = view.context.getSystemService<ClipboardManager>() ?: return + service.setPrimaryClip(ClipData.newPlainText(data.second, data.first)) + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { + Snackbar.make(view, view.context.getString(R.string.copied_to_clipboard, data.second), Snackbar.LENGTH_LONG).show() + } + } +} |