aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeyGenFragment.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeyGenFragment.kt')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeyGenFragment.kt90
1 files changed, 90 insertions, 0 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeyGenFragment.kt b/app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeyGenFragment.kt
new file mode 100644
index 00000000..19011758
--- /dev/null
+++ b/app/src/main/java/com/zeapo/pwdstore/sshkeygen/SshKeyGenFragment.kt
@@ -0,0 +1,90 @@
+/*
+ * Copyright © 2014-2019 The Android Password Store Authors. All Rights Reserved.
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+package com.zeapo.pwdstore.sshkeygen
+
+import android.os.Bundle
+import android.text.InputType
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.inputmethod.InputMethodManager
+import android.widget.ArrayAdapter
+import android.widget.Button
+import android.widget.CheckBox
+import android.widget.EditText
+import android.widget.Spinner
+import androidx.core.content.getSystemService
+import androidx.fragment.app.Fragment
+import com.google.android.material.textfield.TextInputEditText
+import com.zeapo.pwdstore.R
+
+class SshKeyGenFragment : Fragment() {
+
+ private lateinit var checkBox: CheckBox
+ private lateinit var comment: EditText
+ private lateinit var generate: Button
+ private lateinit var passphrase: TextInputEditText
+ private lateinit var spinner: Spinner
+ private lateinit var activity: SshKeyGenActivity
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ return inflater.inflate(R.layout.fragment_ssh_keygen, container, false)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ activity = requireActivity() as SshKeyGenActivity
+ findViews(view)
+ val lengths = arrayOf(2048, 4096)
+ val adapter = ArrayAdapter(requireContext(), android.R.layout.simple_spinner_dropdown_item, lengths)
+ spinner.adapter = adapter
+ generate.setOnClickListener { generate() }
+ checkBox.setOnCheckedChangeListener { _, isChecked: Boolean ->
+ val selection = passphrase.selectionEnd
+ if (isChecked) {
+ passphrase.inputType = (
+ InputType.TYPE_CLASS_TEXT
+ or InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD)
+ } else {
+ passphrase.inputType = (
+ InputType.TYPE_CLASS_TEXT
+ or InputType.TYPE_TEXT_VARIATION_PASSWORD)
+ }
+ passphrase.setSelection(selection)
+ }
+ }
+
+ private fun findViews(view: View) {
+ checkBox = view.findViewById(R.id.show_passphrase)
+ comment = view.findViewById(R.id.comment)
+ generate = view.findViewById(R.id.generate)
+ passphrase = view.findViewById(R.id.passphrase)
+ spinner = view.findViewById(R.id.length)
+ }
+
+ // Invoked when 'Generate' button of SshKeyGenFragment clicked. Generates a
+ // private and public key, then replaces the SshKeyGenFragment with a
+ // ShowSshKeyFragment which displays the public key.
+ fun generate() {
+ val length = (spinner.selectedItem as Int).toString()
+ val passphrase = passphrase.text.toString()
+ val comment = comment.text.toString()
+ KeyGenerateTask(activity).execute(length, passphrase, comment)
+ hideKeyboard()
+ }
+
+ private fun hideKeyboard() {
+ val imm = activity.getSystemService<InputMethodManager>()
+ var view = activity.currentFocus
+ if (view == null) {
+ view = View(activity)
+ }
+ imm?.hideSoftInputFromWindow(view.windowToken, 0)
+ }
+}