aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/UserPreference.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/UserPreference.java')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/UserPreference.java43
1 files changed, 43 insertions, 0 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/UserPreference.java b/app/src/main/java/com/zeapo/pwdstore/UserPreference.java
index e2b3de9a..c94f08a6 100644
--- a/app/src/main/java/com/zeapo/pwdstore/UserPreference.java
+++ b/app/src/main/java/com/zeapo/pwdstore/UserPreference.java
@@ -1,6 +1,7 @@
package com.zeapo.pwdstore;
import android.app.AlertDialog;
+import android.app.DialogFragment;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -82,6 +83,24 @@ public class UserPreference extends AppCompatActivity {
}
});
+ findPreference("ssh_keygen").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ callingActivity.makeSshKey();
+ return true;
+ }
+ });
+
+ findPreference("ssh_see_key").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ DialogFragment df = new SshKeyGen.ShowSshKeyFragment();
+ df.show(getFragmentManager(), "public_key");
+ return true;
+ }
+ });
+
+
findPreference("git_server_info").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
@@ -164,6 +183,13 @@ public class UserPreference extends AppCompatActivity {
findPreference("pref_select_external").setOnPreferenceChangeListener(resetRepo);
findPreference("git_external").setOnPreferenceChangeListener(resetRepo);
}
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ final SharedPreferences sharedPreferences = getPreferenceManager().getSharedPreferences();
+ findPreference("ssh_see_key").setEnabled(sharedPreferences.getBoolean("use_generated_key", false));
+ }
}
@Override
@@ -175,6 +201,9 @@ public class UserPreference extends AppCompatActivity {
case "get_ssh_key":
getSshKey();
break;
+ case "make_ssh_key":
+ makeSshKey();
+ break;
case "git_external":
selectExternalGitRepository();
break;
@@ -220,6 +249,16 @@ public class UserPreference extends AppCompatActivity {
startActivityForResult(intent, IMPORT_SSH_KEY);
}
+ /**
+ * Opens a key generator to generate a public/private key pair
+ */
+ public void makeSshKey() {
+ Intent intent = new Intent(getApplicationContext(), SshKeyGen.class);
+ startActivity(intent);
+ setResult(RESULT_OK);
+ finish();
+ }
+
private void copySshKey(Uri uri) throws IOException {
InputStream sshKey = this.getContentResolver().openInputStream(uri);
byte[] privateKey = IOUtils.toByteArray(sshKey);
@@ -238,6 +277,10 @@ public class UserPreference extends AppCompatActivity {
}
copySshKey(data.getData());
Toast.makeText(this, this.getResources().getString(R.string.ssh_key_success_dialog_title), Toast.LENGTH_LONG).show();
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+ SharedPreferences.Editor editor = prefs.edit();
+ editor.putBoolean("use_generated_key", false);
+ editor.apply();
setResult(RESULT_OK);
finish();
} catch (IOException e) {