Browse Source

Fix #40 Add trash

isundil 7 years ago
parent
commit
3e6b9e2113

+ 0 - 5
app/src/main/AndroidManifest.xml

@@ -56,11 +56,6 @@
                 android:name="android.support.PARENT_ACTIVITY"
                 android:value="info.knacki.pass.ui.MainActivity" />
         </activity>
-        <activity android:name=".ui.TrashActivity">
-            <meta-data
-                android:name="android.support.PARENT_ACTIVITY"
-                android:value="info.knacki.pass.ui.MainActivity" />
-        </activity>
 
         <provider
             android:name="android.support.v4.content.FileProvider"

+ 6 - 8
app/src/main/java/info/knacki/pass/git/entities/GitCommit.java

@@ -130,17 +130,15 @@ public class GitCommit implements GitPackable {
                 } while (obj != null);
             } else {
                 GitObject obj = fTree.GetObjectFullPath(relativeFilename);
-                do {
-                    if (obj != null && obj.GetParent() != null) {
+                if (obj != null)
+                    do {
                         obj.GetParent().Remove(obj.fName);
                         fToPack.remove(obj.GetGitPath());
                         obj = obj.GetParent();
-                    }
-                } while (obj instanceof GitObject.GitTree && ((GitObject.GitTree) obj).fItems.size() == 0);
-                if (obj instanceof GitObject.GitTree)
-                    for (String i: fToPack)
-                        if (i.startsWith(relativeFilename +"/"))
-                            fToPack.remove(i);
+                    } while (obj != null && ((GitObject.GitTree) obj).fItems.size() == 0 && obj.GetParent() != null);
+                for (String i: fToPack)
+                    if (i.startsWith(relativeFilename +"/"))
+                        fToPack.remove(i);
                 while (obj != null) {
                     fToPack.add(obj.GetGitPath());
                     obj.fSha1 = null;

+ 3 - 0
app/src/main/java/info/knacki/pass/ui/GitPullActivity.java

@@ -42,6 +42,7 @@ public class GitPullActivity extends AppCompatActivity {
     private GitCommit fHeadCommit;
 
     private void OnMsg(final String msg) {
+        log.info(msg);
         GitPullActivity.this.runOnUiThread(() -> {
             TextView logView = findViewById(R.id.logView);
             logView.append(msg +"\n");
@@ -98,6 +99,8 @@ public class GitPullActivity extends AppCompatActivity {
         Set<String> filesToPush = new HashSet<>();
         HashMap<String, GitObject.GitBlob> conflictingFiles = new HashMap<>();
 
+        OnMsg("Done reading remote tree");
+        OnMsg("Building change list");
         for (Map.Entry<String, GitObject.GitBlob>i: fHeadCommit.GetTree().FindAllBlobs().entrySet()) {
             final String remoteKnownHash = localVersion.GetHash(i.getKey(), "");
             final String remoteHash = GitSha1.BytesToString(i.getValue().GetHash());

+ 9 - 2
app/src/main/java/info/knacki/pass/ui/MainActivity.java

@@ -144,8 +144,9 @@ public class MainActivity extends AppCompatActivity implements PasswordEditListe
                 ShowSettings();
                 break;
             case R.id.trash:
-                startActivity(new Intent(this, TrashActivity.class));
-                break;
+                boolean checked = !item.isChecked();
+                item.setChecked(checked);
+                fPasswordListView.SetDisplayHiddenFiles(checked);
             default:
                 log.log(Level.WARNING, "Error: Unknown MenuItem id: " +item.getItemId());
                 return false;
@@ -251,6 +252,12 @@ public class MainActivity extends AppCompatActivity implements PasswordEditListe
         }
     }
 
+    @Override
+    public void OnRestorePassword(File f) {
+        FileUtils.RestoreFile(f);
+        fPasswordListView.refresh();
+    }
+
     @Override
     public void OnCopyToClipboard(File f) {
         FileInterfaceFactory.GetFileInterface(this, PasswordPickerFactory.GetPasswordPicker(this), f).ReadFile(new OnResponseListener<String>() {

+ 0 - 59
app/src/main/java/info/knacki/pass/ui/TrashActivity.java

@@ -1,59 +0,0 @@
-package info.knacki.pass.ui;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AppCompatActivity;
-import android.widget.ScrollView;
-
-import java.io.File;
-
-import info.knacki.pass.R;
-import info.knacki.pass.io.PathUtils;
-import info.knacki.pass.ui.passwordList.EditablePasswordListView;
-import info.knacki.pass.ui.passwordList.PasswordEditListener;
-
-public class TrashActivity extends AppCompatActivity implements PasswordEditListener {
-    private EditablePasswordListView fPasswordListView;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_pass_list);
-
-        setTitle(R.string.title);
-        fPasswordListView = new EditablePasswordListView<>(this, PathUtils.GetPassDir(this), true);
-        ((ScrollView)findViewById(R.id.passwordListContainer)).addView(fPasswordListView);
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        fPasswordListView.refresh();
-    }
-
-    @Override
-    public void OnRemovePassword(File f) {
-
-    }
-
-    @Override
-    public void OnRemoveDirectory(File f) {
-
-    }
-
-    @Override
-    public void OnEncryptionInformation(File f) {
-        Intent i = new Intent(this, EncryptionInformationActivity.class);
-        i.putExtra(EncryptionInformationActivity.FILE_PATH, f.getAbsolutePath());
-        startActivity(i);
-    }
-
-    @Override
-    public void OnCopyToClipboard(File f) { }
-
-    @Override
-    public void OnPasswordClicked(File f) {
-        OnEncryptionInformation(f);
-    }
-}

+ 11 - 1
app/src/main/java/info/knacki/pass/ui/passwordList/EditablePasswordListView.java

@@ -28,13 +28,19 @@ public class EditablePasswordListView<T extends Activity & PasswordEditListener>
         return (PathUtils.IsHidden(f.getAbsolutePath()) != fDisplayHiddenFiles);
     }
 
+    protected int GetMenuForFile(FileIdentity f) {
+        if (f.fIsDir)
+            return R.menu.context_dir_menu;
+        return (PathUtils.IsHidden(f.fName)) ? R.menu.context_trashed_menu : R.menu.context_file_menu;
+    }
+
     protected void AddContextMenu(final FileIdentity file, final PasswordView pv) {
         if (file.isParent())
             return;
         pv.setOnLongClickListener(v -> {
             fSelectedPassword = pv;
             PopupMenu menu = new PopupMenu(fClickListener, pv);
-            menu.getMenuInflater().inflate(file.fIsDir ? R.menu.context_dir_menu : R.menu.context_file_menu, menu.getMenu());
+            menu.getMenuInflater().inflate(GetMenuForFile(file), menu.getMenu());
             menu.setOnMenuItemClickListener(EditablePasswordListView.this);
             menu.show();
             return true;
@@ -61,6 +67,10 @@ public class EditablePasswordListView<T extends Activity & PasswordEditListener>
                 }
                 break;
 
+            case R.id.restore:
+                fClickListener.OnRestorePassword(new File(fCurrentDir + "/" + fSelectedPassword.fFullName));
+                break;
+
             case R.id.encryption_information:
                 fClickListener.OnEncryptionInformation(new File(fCurrentDir +"/" +fSelectedPassword.fFullName));
                 break;

+ 1 - 0
app/src/main/java/info/knacki/pass/ui/passwordList/PasswordEditListener.java

@@ -4,6 +4,7 @@ import java.io.File;
 
 public interface PasswordEditListener extends PasswordClickListener {
     void OnRemovePassword(File f);
+    void OnRestorePassword(File f);
     void OnRemoveDirectory(File f);
     void OnEncryptionInformation(File f);
     void OnCopyToClipboard(File f);

+ 6 - 0
app/src/main/res/menu/context_trashed_menu.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@+id/encryption_information" android:title="@string/encryption_information"/>
+    <item android:id="@+id/restore" android:title="@string/restore"/>
+    <item android:id="@+id/remove" android:title="@string/remove"/>
+</menu>

+ 1 - 1
app/src/main/res/menu/main_menu.xml

@@ -4,7 +4,7 @@
         android:icon="@drawable/ic_sync"
         android:id="@+id/id_sync"
         android:title="@string/sync" />
-    <item android:id="@+id/trash" android:title="@string/trash"/>
+    <item android:checkable="true" android:title="@string/trash" android:id="@+id/trash" />
     <item android:title="@string/New">
         <menu>
             <item android:id="@+id/new_folder" android:title="@string/newFolder"/>

+ 1 - 0
app/src/main/res/values-fr/lang.xml

@@ -74,6 +74,7 @@
     <string name="useMine">Utiliser ma version</string>
     <string name="useTheir">Utiliser leur version</string>
     <string name="remove">Supprimer</string>
+    <string name="restore">Restaurer</string>
     <string name="copy_clipboard">Copier dans le presse-papier</string>
     <string name="copied_clipboard">Mot de passe dans le presse-papier</string>
     <string name="gpg_import_ok">Clé GPG importée avec succès</string>

+ 1 - 0
app/src/main/res/values/lang.xml

@@ -74,6 +74,7 @@
     <string name="useMine">Use mine</string>
     <string name="useTheir">Use their</string>
     <string name="remove">Remove</string>
+    <string name="restore">Restore</string>
     <string name="copy_clipboard">Copy to clipboard</string>
     <string name="copied_clipboard">Password copied to Clipboard</string>
     <string name="gpg_import_ok">Done importing GPG Key</string>