diff options
Diffstat (limited to 'app/src/main')
3 files changed, 42 insertions, 71 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java index 2af74075..74b134aa 100644 --- a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java +++ b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java @@ -32,11 +32,8 @@ import java.io.File; import java.io.IOException; import java.util.Stack; - public class PasswordStore extends ActionBarActivity { - private Stack<Integer> scrollPositions; - /** if we leave the activity to do something, do not add any other fragment */ - public boolean leftActivity = false; + private static final String TAG = "PwdStrAct"; private File currentDir; private SharedPreferences settings; private Activity activity; @@ -46,7 +43,6 @@ public class PasswordStore extends ActionBarActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pwdstore); - scrollPositions = new Stack<Integer>(); settings = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext()); activity = this; } @@ -54,18 +50,15 @@ public class PasswordStore extends ActionBarActivity { @Override public void onResume(){ super.onResume(); - // create the repository static variable in PasswordRepository PasswordRepository.getRepository(new File(getFilesDir() + this.getResources().getString(R.string.store_git))); - // re-check that there was no change with the repository state checkLocalRepository(); } @Override public void onPause() { super.onPause(); - this.leftActivity = true; } @Override @@ -74,6 +67,7 @@ public class PasswordStore extends ActionBarActivity { getMenuInflater().inflate(R.menu.pwdstore, menu); MenuItem searchItem = menu.findItem(R.id.action_search); SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String s) { @@ -130,7 +124,6 @@ public class PasswordStore extends ActionBarActivity { System.out.println("Exception caught :("); e.printStackTrace(); } - this.leftActivity = true; return true; case R.id.menu_add_password: @@ -154,7 +147,6 @@ public class PasswordStore extends ActionBarActivity { intent = new Intent(this, GitActivity.class); intent.putExtra("Operation", GitActivity.REQUEST_PUSH); startActivityForResult(intent, GitActivity.REQUEST_PUSH); - this.leftActivity = true; return true; case R.id.git_pull: @@ -166,7 +158,6 @@ public class PasswordStore extends ActionBarActivity { intent = new Intent(this, GitActivity.class); intent.putExtra("Operation", GitActivity.REQUEST_PULL); startActivityForResult(intent, GitActivity.REQUEST_PULL); - this.leftActivity = true; return true; case R.id.refresh: @@ -210,6 +201,7 @@ public class PasswordStore extends ActionBarActivity { git.add().addFilepattern("."), git.commit().setMessage(R.string.initialization_commit_text + keyId) ); + settings.edit().putBoolean("repository_initialized", true).commit(); } catch (Exception e) { e.printStackTrace(); localDir.delete(); @@ -273,63 +265,38 @@ public class PasswordStore extends ActionBarActivity { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); - int status = 0; - - if (localDir.exists()) { - // if we are coming back from gpg do not anything - if (this.leftActivity) { - this.leftActivity = false; - return; - } - - File[] folders = localDir.listFiles(); - status = folders.length; - // this means that the repository has been correctly cloned - // if this file does not exist, well... this will not work if there is no other files - if ((new File(localDir.getAbsolutePath() + "/.gpg-id")).exists()) - status++; - } - - // either the repo is empty or it was not correctly cloned - switch (status) { - case 0: - if(!localDir.equals(PasswordRepository.getWorkTree()) && localDir.exists()) - break; - PasswordRepository.setInitialized(false); + if (settings.getBoolean("repository_initialized", false)) { + // do not push the fragment if we already have it + if (fragmentManager.findFragmentByTag("PasswordsList") == null) { - // if we still have the pass list (after deleting for instance) remove it - if (fragmentManager.findFragmentByTag("PasswordsList") != null) { + // clean things up + if (fragmentManager.findFragmentByTag("ToCloneOrNot") != null) { fragmentManager.popBackStack(); } - ToCloneOrNot cloneFrag = new ToCloneOrNot(); - fragmentTransaction.replace(R.id.main_layout, cloneFrag, "ToCloneOrNot"); - fragmentTransaction.commit(); - break; - default: + PasswordRepository.setInitialized(true); + plist = new PasswordFragment(); + Bundle args = new Bundle(); + args.putString("Path", PasswordRepository.getWorkTree().getAbsolutePath()); - if (fragmentManager.findFragmentByTag("PasswordsList") == null) { + plist.setArguments(args); - // clean things up - if (fragmentManager.findFragmentByTag("ToCloneOrNot") != null) { - fragmentManager.popBackStack(); - } - - PasswordRepository.setInitialized(true); - plist = new PasswordFragment(); - Bundle args = new Bundle(); - args.putString("Path", localDir.getAbsolutePath()); - - plist.setArguments(args); + fragmentTransaction.addToBackStack("passlist"); - fragmentTransaction.addToBackStack("passlist"); + fragmentTransaction.replace(R.id.main_layout, plist, "PasswordsList"); + fragmentTransaction.commit(); + } + } else { + // if we still have the pass list (after deleting the repository for instance) remove it + if (fragmentManager.findFragmentByTag("PasswordsList") != null) { + fragmentManager.popBackStack(); + } - fragmentTransaction.replace(R.id.main_layout, plist, "PasswordsList"); - fragmentTransaction.commit(); - } + ToCloneOrNot cloneFrag = new ToCloneOrNot(); + fragmentTransaction.replace(R.id.main_layout, cloneFrag, "ToCloneOrNot"); + fragmentTransaction.commit(); } - this.leftActivity = false; } @@ -348,8 +315,6 @@ public class PasswordStore extends ActionBarActivity { } public void decryptPassword(PasswordItem item) { - this.leftActivity = true; - Intent intent = new Intent(this, PgpHandler.class); intent.putExtra("NAME", item.toString()); intent.putExtra("FILE_PATH", item.getFile().getAbsolutePath()); @@ -360,7 +325,6 @@ public class PasswordStore extends ActionBarActivity { public void createPassword(View v) { this.currentDir = getCurrentDir(); Log.i("PWDSTR", "Adding file to : " + this.currentDir.getAbsolutePath()); - this.leftActivity = true; Intent intent = new Intent(this, PgpHandler.class); intent.putExtra("FILE_PATH", getCurrentDir().getAbsolutePath()); @@ -433,10 +397,11 @@ public class PasswordStore extends ActionBarActivity { protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { - if (requestCode == GitActivity.REQUEST_CLONE) - checkLocalRepository(); - switch (requestCode) { + case GitActivity.REQUEST_CLONE: + // if we get here with a RESULT_OK then it's probably OK :) + settings.edit().putBoolean("repository_initialized", true).commit(); + break; case PgpHandler.REQUEST_CODE_ENCRYPT : Git git = new Git(PasswordRepository.getRepository(new File(""))); GitAsyncTask tasks = new GitAsyncTask(this, false, false, CommitCommand.class); diff --git a/app/src/main/java/com/zeapo/pwdstore/UserPreference.java b/app/src/main/java/com/zeapo/pwdstore/UserPreference.java index 43198738..199d1172 100644 --- a/app/src/main/java/com/zeapo/pwdstore/UserPreference.java +++ b/app/src/main/java/com/zeapo/pwdstore/UserPreference.java @@ -7,6 +7,7 @@ import android.net.Uri; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; +import android.preference.PreferenceManager; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.MenuItem; @@ -123,10 +124,10 @@ public class UserPreference extends ActionBarActivity implements Preference.OnPr try { FileUtils.deleteDirectory(PasswordRepository.getWorkTree()); } catch (Exception e) { - //This is what happens when jgit fails :( //TODO Handle the diffent cases of exceptions } + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putBoolean("repository_initialized", false).commit(); dialog.cancel(); finish(); } diff --git a/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java b/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java index ba05b939..0db20811 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java +++ b/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java @@ -130,6 +130,13 @@ public class GitActivity extends ActionBarActivity { connection_mode_spinner.setSelection(1); connection_mode_spinner.setEnabled(false); } + + // however, if we have some saved that, that's more important! + if (connectionMode.equals("ssh-key")) { + connection_mode_spinner.setSelection(0); + } else { + connection_mode_spinner.setSelection(1); + } } @Override @@ -145,12 +152,6 @@ public class GitActivity extends ActionBarActivity { protcol_spinner.setSelection(1); } - if (connectionMode.equals("ssh-key")) { - connection_mode_spinner.setSelection(0); - } else { - connection_mode_spinner.setSelection(1); - } - // init the server information final EditText server_url = ((EditText) findViewById(R.id.server_url)); final EditText server_port = ((EditText) findViewById(R.id.server_port)); @@ -594,6 +595,10 @@ public class GitActivity extends ActionBarActivity { GitOperation op; switch (requestCode) { + case REQUEST_CLONE: + setResult(RESULT_OK); + finish(); + return; case REQUEST_PULL: op = new PullOperation(localDir, activity).setCommand(); break; |