From 6749401b803be18d8e6e0e63ca8f04bc19c7f570 Mon Sep 17 00:00:00 2001 From: Mauricio Togneri Date: Sat, 1 Oct 2016 22:58:59 +0200 Subject: [PATCH] Avoiding pasting in same origin folder --- .../fragments/FolderFragment.java | 2 +- .../fileexplorer/models/Clipboard.java | 19 ++++++++++++++++++- .../fileexplorer/models/FileInfo.java | 5 +++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/mauriciotogneri/fileexplorer/fragments/FolderFragment.java b/app/src/main/java/com/mauriciotogneri/fileexplorer/fragments/FolderFragment.java index 12504dd..6a0bbf6 100644 --- a/app/src/main/java/com/mauriciotogneri/fileexplorer/fragments/FolderFragment.java +++ b/app/src/main/java/com/mauriciotogneri/fileexplorer/fragments/FolderFragment.java @@ -165,7 +165,7 @@ private void updateButtonBar() { Clipboard clipboard = mainActivity.clipboard(); - mainActivity.buttonBar().displayButtons(adapter.itemsSelected(), !adapter.allItemsSelected(), !clipboard.isEmpty()); + mainActivity.buttonBar().displayButtons(adapter.itemsSelected(), !adapter.allItemsSelected(), !clipboard.isEmpty() && !clipboard.hasParent(folder())); } public String folderName() diff --git a/app/src/main/java/com/mauriciotogneri/fileexplorer/models/Clipboard.java b/app/src/main/java/com/mauriciotogneri/fileexplorer/models/Clipboard.java index 0f74cd0..ad407a4 100644 --- a/app/src/main/java/com/mauriciotogneri/fileexplorer/models/Clipboard.java +++ b/app/src/main/java/com/mauriciotogneri/fileexplorer/models/Clipboard.java @@ -1,11 +1,12 @@ package com.mauriciotogneri.fileexplorer.models; +import java.io.File; import java.util.ArrayList; import java.util.List; - public class Clipboard { + private File parent = null; private Mode mode = Mode.NONE; private List items = new ArrayList<>(); @@ -32,12 +33,22 @@ public boolean isCopy() public void cut(List items) { + if (!items.isEmpty()) + { + parent = items.get(0).parent(); + } + mode = Mode.CUT; this.items = items; } public void copy(List items) { + if (!items.isEmpty()) + { + parent = items.get(0).parent(); + } + mode = Mode.COPY; this.items = items; } @@ -66,6 +77,7 @@ public boolean paste(FileInfo target) items.clear(); mode = Mode.NONE; + parent = null; return allPasted; } @@ -74,4 +86,9 @@ public boolean isEmpty() { return items.isEmpty(); } + + public boolean hasParent(File parent) + { + return this.parent.compareTo(parent) == 0; + } } \ No newline at end of file diff --git a/app/src/main/java/com/mauriciotogneri/fileexplorer/models/FileInfo.java b/app/src/main/java/com/mauriciotogneri/fileexplorer/models/FileInfo.java index 5569033..2fc68ba 100644 --- a/app/src/main/java/com/mauriciotogneri/fileexplorer/models/FileInfo.java +++ b/app/src/main/java/com/mauriciotogneri/fileexplorer/models/FileInfo.java @@ -162,6 +162,11 @@ public boolean delete() return file.delete(); } + public File parent() + { + return file.getParentFile(); + } + public String name() { if (cachedName == null)