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@users.noreply.github.com>
This commit is contained in:
David Adrião 2022-10-30 21:47:53 +00:00 committed by GitHub
parent 24bcee7934
commit 87c6e4612b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 6 deletions

View file

@ -1,16 +1,14 @@
package eu.neilalexander.yggdrasil package eu.neilalexander.yggdrasil
import android.app.Activity import android.app.Activity
import android.content.BroadcastReceiver import android.content.*
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.graphics.Color import android.graphics.Color
import android.net.VpnService import android.net.VpnService
import android.os.Bundle import android.os.Bundle
import android.widget.Switch import android.widget.Switch
import android.widget.TableRow import android.widget.TableRow
import android.widget.TextView import android.widget.TextView
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.localbroadcastmanager.content.LocalBroadcastManager
@ -97,6 +95,22 @@ class MainActivity : AppCompatActivity() {
val intent = Intent(this, SettingsActivity::class.java) val intent = Intent(this, SettingsActivity::class.java)
startActivity(intent) 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() { override fun onResume() {
@ -153,4 +167,4 @@ class MainActivity : AppCompatActivity() {
super.onPause() super.onPause()
LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver) LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver)
} }
} }

View file

@ -1,6 +1,8 @@
package eu.neilalexander.yggdrasil package eu.neilalexander.yggdrasil
import android.app.AlertDialog import android.app.AlertDialog
import android.content.ClipData
import android.content.ClipboardManager
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle import android.os.Bundle
import android.view.ContextThemeWrapper import android.view.ContextThemeWrapper
@ -55,6 +57,14 @@ class SettingsActivity : AppCompatActivity() {
builder.show() 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() updateView()
} }
@ -68,4 +78,4 @@ class SettingsActivity : AppCompatActivity() {
publicKeyLabel.text = config.getJSON().getString("PublicKey") publicKeyLabel.text = config.getJSON().getString("PublicKey")
} }
} }

View file

@ -1,5 +1,6 @@
<resources> <resources>
<string name="app_name">Yggdrasil</string> <string name="app_name">Yggdrasil</string>
<string name="copied_to_clipboard">Copied to clipboard</string>
<string name="dns_configured_servers_hint">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.</string> <string name="dns_configured_servers_hint">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.</string>
<string name="dns_configured_servers_hint_empty">Yggdrasil will not configure any DNS servers when the service starts. All DNS requests will be resolved by the default resolver.</string> <string name="dns_configured_servers_hint_empty">Yggdrasil will not configure any DNS servers when the service starts. All DNS requests will be resolved by the default resolver.</string>
<string name="dns_usable_servers_hint">These DNS servers are provided by community members. Click the + button to add them to the list above. Long-tap to see more info.</string> <string name="dns_usable_servers_hint">These DNS servers are provided by community members. Click the + button to add them to the list above. Long-tap to see more info.</string>