From 2c929441a791889b9fdd2342702118563442ef7d Mon Sep 17 00:00:00 2001 From: knuthy Date: Mon, 29 Sep 2014 21:47:29 +0200 Subject: a simple solution to resolve #13 --- .../java/com/zeapo/pwdstore/PasswordStore.java | 39 +++++++++++++--------- .../zeapo/pwdstore/utils/PasswordRepository.java | 7 +++- app/src/main/res/menu/pwdstore.xml | 2 +- 3 files changed, 31 insertions(+), 17 deletions(-) (limited to 'app/src') diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java index 4fadb65e..4d3ed8ee 100644 --- a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java +++ b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java @@ -10,19 +10,11 @@ import android.content.SharedPreferences; import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; -import android.text.InputType; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.ExpandableListView; -import android.widget.LinearLayout; - -import com.jcraft.jsch.JSch; -import com.jcraft.jsch.JSchException; -import com.jcraft.jsch.Session; + import com.zeapo.pwdstore.crypto.PgpHandler; import com.zeapo.pwdstore.utils.PasswordItem; import com.zeapo.pwdstore.utils.PasswordRepository; @@ -30,12 +22,6 @@ import com.zeapo.pwdstore.utils.PasswordRepository; import org.apache.commons.io.FileUtils; import org.eclipse.jgit.api.CommitCommand; import org.eclipse.jgit.api.Git; -import org.eclipse.jgit.revwalk.RevCommit; -import org.eclipse.jgit.transport.JschConfigSessionFactory; -import org.eclipse.jgit.transport.OpenSshConfig; -import org.eclipse.jgit.transport.SshSessionFactory; -import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; -import org.eclipse.jgit.util.FS; import java.io.File; import java.io.IOException; @@ -91,6 +77,14 @@ public class PasswordStore extends Activity implements ToCloneOrNot.OnFragmentI int id = item.getItemId(); Intent intent; + AlertDialog.Builder initBefore = new AlertDialog.Builder(this) + .setMessage("Please clone or create a new repository below before trying to add a password or any synchronization operation.") + .setPositiveButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + } + }); + switch (id) { case R.id.user_pref: try { @@ -104,6 +98,11 @@ public class PasswordStore extends Activity implements ToCloneOrNot.OnFragmentI return true; case R.id.menu_add_password: + if (PasswordRepository.isInitialized()) { + initBefore.show(); + break; + } + createPassword(getCurrentFocus()); break; @@ -111,6 +110,11 @@ public class PasswordStore extends Activity implements ToCloneOrNot.OnFragmentI // break; case R.id.git_push: + if (PasswordRepository.isInitialized()) { + initBefore.show(); + break; + } + intent = new Intent(this, GitHandler.class); intent.putExtra("Operation", GitHandler.REQUEST_PUSH); startActivityForResult(intent, GitHandler.REQUEST_PUSH); @@ -118,6 +122,11 @@ public class PasswordStore extends Activity implements ToCloneOrNot.OnFragmentI return true; case R.id.git_pull: + if (PasswordRepository.isInitialized()) { + initBefore.show(); + break; + } + intent = new Intent(this, GitHandler.class); intent.putExtra("Operation", GitHandler.REQUEST_PULL); startActivityForResult(intent, GitHandler.REQUEST_PULL); diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.java b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.java index 289f9f43..3e40d4b9 100644 --- a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.java +++ b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.java @@ -26,6 +26,7 @@ import static java.util.Collections.sort; public class PasswordRepository { private static Repository repository; + private static boolean initialized = false; protected PasswordRepository(){ } @@ -37,7 +38,7 @@ public class PasswordRepository { .readEnvironment() .findGitDir() .build(); - + initialized = true; } catch (Exception e) { e.printStackTrace(); return null; @@ -46,6 +47,10 @@ public class PasswordRepository { return repository; } + public static boolean isInitialized() { + return initialized; + } + public static void createRepository(File localDir) { localDir.delete(); diff --git a/app/src/main/res/menu/pwdstore.xml b/app/src/main/res/menu/pwdstore.xml index 65bc0272..a3f44f73 100644 --- a/app/src/main/res/menu/pwdstore.xml +++ b/app/src/main/res/menu/pwdstore.xml @@ -17,7 +17,7 @@ Date: Mon, 29 Sep 2014 22:04:47 +0200 Subject: show toast on copy and dismiss dialog if error on openkeychain --- app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java | 12 ++++++++++++ app/src/main/res/layout/decrypt_layout.xml | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'app/src') diff --git a/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java b/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java index 78902d8a..efeabc3e 100644 --- a/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java +++ b/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java @@ -147,6 +147,9 @@ public class PgpHandler extends Activity implements OpenPgpServiceConnection.OnB case R.id.copy_password: ClipData clip = ClipData.newPlainText("pgp_handler_result_pm", ((TextView) findViewById(R.id.crypto_password_show)).getText()); clipboard.setPrimaryClip(clip); + showToast("Password copied to clipboard, you have " + + Integer.parseInt(settings.getString("general_show_time", "45")) + + " seconds to paste it somewhere."); } return super.onOptionsItemSelected(item); } @@ -387,10 +390,19 @@ public class PgpHandler extends Activity implements OpenPgpServiceConnection.OnB break; } case OpenPgpApi.RESULT_CODE_ERROR: { + // TODO show what kind of error it is + /* For example: + * No suitable key found -> no key in OpenKeyChain + * + * Check in open-pgp-lib how their definitions and error code + */ showToast("ERROR"); OpenPgpError error = result.getParcelableExtra(OpenPgpApi.RESULT_ERROR); handleError(error); + + // close the dialog + bindingDialog.dismiss(); break; } diff --git a/app/src/main/res/layout/decrypt_layout.xml b/app/src/main/res/layout/decrypt_layout.xml index 300e1d49..6169dd19 100644 --- a/app/src/main/res/layout/decrypt_layout.xml +++ b/app/src/main/res/layout/decrypt_layout.xml @@ -77,7 +77,7 @@ Date: Tue, 30 Sep 2014 00:46:58 +0200 Subject: a first draft, not complete yet --- app/src/main/res/drawable/bottom_line.xml | 14 ++ app/src/main/res/layout/activity_git_clone.xml | 185 +++++++++++++++++++++---- app/src/main/res/values/strings.xml | 13 +- 3 files changed, 183 insertions(+), 29 deletions(-) create mode 100644 app/src/main/res/drawable/bottom_line.xml (limited to 'app/src') diff --git a/app/src/main/res/drawable/bottom_line.xml b/app/src/main/res/drawable/bottom_line.xml new file mode 100644 index 00000000..c24a04df --- /dev/null +++ b/app/src/main/res/drawable/bottom_line.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_git_clone.xml b/app/src/main/res/layout/activity_git_clone.xml index b427ac8d..7aa9eea9 100644 --- a/app/src/main/res/layout/activity_git_clone.xml +++ b/app/src/main/res/layout/activity_git_clone.xml @@ -1,46 +1,175 @@ - + tools:context="com.zeapo.pwdstore.GitHandler" + android:orientation="vertical"> - - + + + + + - - - + android:text="@string/server_protocol" + android:id="@+id/label_server_protocol" + android:layout_centerVertical="true" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" /> + + + + + + + + + + + + + + + + + + + android:hint="@string/server_path_hint" + android:layout_toEndOf="@+id/label_server_path" + android:layout_toRightOf="@+id/label_server_path" + android:layout_alignParentRight="true" + android:layout_alignParentEnd="true"/> + + + + -