From 87c6e4612b572edb8d7137164c0ced52ef740d3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Adri=C3=A3o?= Date: Sun, 30 Oct 2022 21:47:53 +0000 Subject: [PATCH] Added copy to clipboard of several fields. (#17) * Added copy to clipboard when clicking ip address, subnet address and public key. * Android CI * Update CI * Update `PATH` in CI * Add NDK in CI * Fix filename in CI * Capture artifact in CI * Tweaks in CI * Update MainActivity.kt * Update SettingsActivity.kt Co-authored-by: Neil Alexander --- .../neilalexander/yggdrasil/MainActivity.kt | 24 +++++++++++++++---- .../yggdrasil/SettingsActivity.kt | 12 +++++++++- app/src/main/res/values/strings.xml | 1 + 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/neilalexander/yggdrasil/MainActivity.kt b/app/src/main/java/eu/neilalexander/yggdrasil/MainActivity.kt index ea56090..82fb296 100644 --- a/app/src/main/java/eu/neilalexander/yggdrasil/MainActivity.kt +++ b/app/src/main/java/eu/neilalexander/yggdrasil/MainActivity.kt @@ -1,16 +1,14 @@ package eu.neilalexander.yggdrasil import android.app.Activity -import android.content.BroadcastReceiver -import android.content.Context -import android.content.Intent -import android.content.IntentFilter +import android.content.* import android.graphics.Color import android.net.VpnService import android.os.Bundle import android.widget.Switch import android.widget.TableRow import android.widget.TextView +import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity import androidx.localbroadcastmanager.content.LocalBroadcastManager @@ -97,6 +95,22 @@ class MainActivity : AppCompatActivity() { val intent = Intent(this, SettingsActivity::class.java) startActivity(intent) } + + ipAddressLabel.setOnLongClickListener { + val clipboard: ClipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager + val clip = ClipData.newPlainText("ip", ipAddressLabel.text) + clipboard.setPrimaryClip(clip) + Toast.makeText(applicationContext,R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show() + true + } + + subnetLabel.setOnLongClickListener { + val clipboard: ClipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager + val clip = ClipData.newPlainText("subnet", subnetLabel.text) + clipboard.setPrimaryClip(clip) + Toast.makeText(applicationContext,R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show() + true + } } override fun onResume() { @@ -153,4 +167,4 @@ class MainActivity : AppCompatActivity() { super.onPause() LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver) } -} \ No newline at end of file +} diff --git a/app/src/main/java/eu/neilalexander/yggdrasil/SettingsActivity.kt b/app/src/main/java/eu/neilalexander/yggdrasil/SettingsActivity.kt index 9ad3e25..4e4fbcc 100644 --- a/app/src/main/java/eu/neilalexander/yggdrasil/SettingsActivity.kt +++ b/app/src/main/java/eu/neilalexander/yggdrasil/SettingsActivity.kt @@ -1,6 +1,8 @@ package eu.neilalexander.yggdrasil import android.app.AlertDialog +import android.content.ClipData +import android.content.ClipboardManager import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.ContextThemeWrapper @@ -55,6 +57,14 @@ class SettingsActivity : AppCompatActivity() { builder.show() } + publicKeyLabel.setOnLongClickListener { + val clipboard: ClipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager + val clip = ClipData.newPlainText("public key", publicKeyLabel.text) + clipboard.setPrimaryClip(clip) + Toast.makeText(applicationContext,R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show() + true + } + updateView() } @@ -68,4 +78,4 @@ class SettingsActivity : AppCompatActivity() { publicKeyLabel.text = config.getJSON().getString("PublicKey") } -} \ No newline at end of file +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bd74bd7..242d96b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,6 @@ Yggdrasil + Copied to clipboard Use these DNS servers while Yggdrasil is running. Note that all DNS requests, including for non-Yggdrasil internet hostnames, will be sent to these servers. Yggdrasil will not configure any DNS servers when the service starts. All DNS requests will be resolved by the default resolver. These DNS servers are provided by community members. Click the + button to add them to the list above. Long-tap to see more info.