|
|
@@ -1,5 +1,6 @@
|
|
|
package info.knacki.pass.ui;
|
|
|
|
|
|
+import android.content.Context;
|
|
|
import android.content.Intent;
|
|
|
import android.os.Bundle;
|
|
|
import android.support.v7.app.AppCompatActivity;
|
|
|
@@ -9,17 +10,20 @@ import android.text.Editable;
|
|
|
import android.text.InputType;
|
|
|
import android.view.Menu;
|
|
|
import android.view.MenuItem;
|
|
|
+import android.view.View;
|
|
|
+import android.widget.TextView;
|
|
|
import android.widget.Toast;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.util.logging.Level;
|
|
|
import java.util.logging.Logger;
|
|
|
|
|
|
+import info.knacki.gitdroid.callback.OnResponseListener;
|
|
|
import info.knacki.pass.R;
|
|
|
import info.knacki.pass.io.FileInterfaceFactory;
|
|
|
import info.knacki.pass.io.IFileInterface;
|
|
|
-import info.knacki.gitdroid.callback.OnResponseListener;
|
|
|
import info.knacki.pass.settings.SettingsManager;
|
|
|
+import info.knacki.pass.settings.ui.SettingsActivity;
|
|
|
import info.knacki.pass.ui.passwordPicker.PasswordPickerFactory;
|
|
|
|
|
|
public class EditPasswordActivity extends AppCompatActivity {
|
|
|
@@ -39,17 +43,30 @@ public class EditPasswordActivity extends AppCompatActivity {
|
|
|
return super.onCreateOptionsMenu(menu);
|
|
|
}
|
|
|
|
|
|
+ private void ShowFileInfo() {
|
|
|
+ Intent i = new Intent(this, EncryptionInformationActivity.class);
|
|
|
+ i.putExtra(EncryptionInformationActivity.FILE_PATH, fOutputFile.getAbsolutePath());
|
|
|
+ startActivity(i);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public boolean onOptionsItemSelected(MenuItem item) {
|
|
|
if (item.getItemId() == R.id.encryption_information) {
|
|
|
- Intent i = new Intent(this, EncryptionInformationActivity.class);
|
|
|
- i.putExtra(EncryptionInformationActivity.FILE_PATH, fOutputFile.getAbsolutePath());
|
|
|
- startActivity(i);
|
|
|
+ ShowFileInfo();
|
|
|
return true;
|
|
|
}
|
|
|
return super.onOptionsItemSelected(item);
|
|
|
}
|
|
|
|
|
|
+ private String PrepareText(Editable t) {
|
|
|
+ if (t == null)
|
|
|
+ return "";
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ for (String i: t.toString().split("\r?\n"))
|
|
|
+ sb.append(i.trim()).append("\n");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
super.onCreate(savedInstanceState);
|
|
|
@@ -61,14 +78,28 @@ public class EditPasswordActivity extends AppCompatActivity {
|
|
|
}
|
|
|
fOutputFile = new File(path);
|
|
|
fTextEdit = findViewById(R.id.password_edit);
|
|
|
+ TextView rawFileWarning = findViewById(R.id.unencrypted_warning);
|
|
|
+ rawFileWarning.setVisibility(View.GONE);
|
|
|
+ if (SettingsManager.GetDefaultEncryptionType(getApplicationContext()).equals(SettingsManager.EncryptionType.TYPE_RAW)) {
|
|
|
+ rawFileWarning.setOnClickListener(v -> {
|
|
|
+ Context ctx = EditPasswordActivity.this.getApplicationContext();
|
|
|
+ Intent i = new Intent(ctx, SettingsActivity.class);
|
|
|
+ i.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, SettingsActivity.EncryptionPreferenceFragment.class.getName());
|
|
|
+ ctx.startActivity(i);
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ rawFileWarning.setText(R.string.password_not_encrypted);
|
|
|
+ rawFileWarning.setOnClickListener(v -> {
|
|
|
+ ShowFileInfo();
|
|
|
+ });
|
|
|
+ }
|
|
|
((AppCompatCheckBox) findViewById(R.id.showPasswordCheckbox)).setOnCheckedChangeListener((compoundButton, b) -> {
|
|
|
final int cursorPos = fTextEdit.getSelectionEnd();
|
|
|
fTextEdit.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE | (compoundButton.isChecked() ? InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD : InputType.TYPE_TEXT_VARIATION_PASSWORD));
|
|
|
fTextEdit.setSelection(cursorPos);
|
|
|
});
|
|
|
findViewById(R.id.saveButton).setOnClickListener(view -> {
|
|
|
- final Editable text = fTextEdit.getText();
|
|
|
- final String textStr = text == null ? "" : text.toString();
|
|
|
+ final String textStr = PrepareText(fTextEdit.getText());
|
|
|
|
|
|
try {
|
|
|
FileInterfaceFactory.GetFileInterface(EditPasswordActivity.this, PasswordPickerFactory.GetPasswordPicker(EditPasswordActivity.this), fOutputFile).WriteFile(textStr, new OnResponseListener<Void>() {
|
|
|
@@ -100,12 +131,14 @@ public class EditPasswordActivity extends AppCompatActivity {
|
|
|
|
|
|
protected void populateContent(final boolean requestFocus) {
|
|
|
fTextEdit.setEnabled(false);
|
|
|
+ if (FileInterfaceFactory.GetEncryptionType(fOutputFile).equals(SettingsManager.EncryptionType.TYPE_RAW))
|
|
|
+ findViewById(R.id.unencrypted_warning).setVisibility(View.VISIBLE);
|
|
|
FileInterfaceFactory.GetFileInterface(this, PasswordPickerFactory.GetPasswordPicker(this), fOutputFile).ReadFile(new OnResponseListener<String>() {
|
|
|
@Override
|
|
|
public void OnResponse(final String pass) {
|
|
|
EditPasswordActivity.this.runOnUiThread(() -> {
|
|
|
fTextEdit.setEnabled(true);
|
|
|
- fTextEdit.setText(pass);
|
|
|
+ fTextEdit.setText(pass.trim());
|
|
|
if (requestFocus) {
|
|
|
fTextEdit.setSelection(pass.length());
|
|
|
fTextEdit.requestFocus();
|