Skip to content

Commit 3dbd198

Browse files
committed
move CopyDialog in a separate file
1 parent 78b1491 commit 3dbd198

File tree

3 files changed

+102
-79
lines changed

3 files changed

+102
-79
lines changed

app/src/main/java/com/simplemobiletools/filemanager/fragments/ItemsFragment.java

Lines changed: 10 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.simplemobiletools.filemanager.fragments;
22

33
import android.content.ActivityNotFoundException;
4-
import android.content.DialogInterface;
54
import android.content.Intent;
65
import android.content.res.Resources;
76
import android.graphics.Color;
@@ -12,7 +11,6 @@
1211
import android.support.annotation.Nullable;
1312
import android.support.design.widget.CoordinatorLayout;
1413
import android.support.design.widget.Snackbar;
15-
import android.support.v4.util.Pair;
1614
import android.support.v4.widget.SwipeRefreshLayout;
1715
import android.support.v7.app.AlertDialog;
1816
import android.util.SparseBooleanArray;
@@ -26,7 +24,6 @@
2624
import android.webkit.MimeTypeMap;
2725
import android.widget.AdapterView;
2826
import android.widget.ListView;
29-
import android.widget.RadioGroup;
3027
import android.widget.TextView;
3128

3229
import com.simplemobiletools.filemanager.Config;
@@ -35,10 +32,10 @@
3532
import com.simplemobiletools.filemanager.Utils;
3633
import com.simplemobiletools.filemanager.adapters.ItemsAdapter;
3734
import com.simplemobiletools.filemanager.asynctasks.CopyTask;
35+
import com.simplemobiletools.filemanager.dialogs.CopyDialog;
3836
import com.simplemobiletools.filemanager.dialogs.CreateNewItemDialog;
3937
import com.simplemobiletools.filemanager.dialogs.PropertiesDialog;
4038
import com.simplemobiletools.filemanager.dialogs.RenameItemDialog;
41-
import com.simplemobiletools.filepicker.dialogs.FilePickerDialog;
4239
import com.simplemobiletools.filepicker.models.FileDirItem;
4340

4441
import java.io.File;
@@ -370,65 +367,20 @@ private void displayCopyDialog() {
370367
if (itemIndexes.isEmpty())
371368
return;
372369

373-
final View copyView = getActivity().getLayoutInflater().inflate(R.layout.copy_item, null);
374-
375-
final TextView source = (TextView) copyView.findViewById(R.id.source);
376-
source.setText(mPath + "/");
377-
378-
mDestinationView = (TextView) copyView.findViewById(R.id.destination);
379-
mDestinationView.setOnClickListener(destinationPicker);
380-
381-
final int copyString = (itemIndexes.size() == 1) ? R.string.copy_item : R.string.copy_items;
382-
final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
383-
builder.setTitle(getResources().getString(copyString));
384-
builder.setView(copyView);
385-
builder.setPositiveButton(R.string.ok, null);
386-
builder.setNegativeButton(R.string.cancel, null);
370+
final List<File> itemsToCopy = new ArrayList<>(itemIndexes.size());
371+
for (Integer i : itemIndexes) {
372+
FileDirItem item = mItems.get(i);
373+
itemsToCopy.add(new File(item.getPath()));
374+
}
387375

388-
mCopyDialog = builder.create();
389-
mCopyDialog.show();
390-
mCopyDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
376+
new CopyDialog(getActivity(), itemsToCopy, mPath, this, new CopyDialog.OnCopyListener() {
391377
@Override
392-
public void onClick(View v) {
393-
final String destinationPath = mDestinationView.getText().toString().trim();
394-
if (destinationPath.equals(getResources().getString(R.string.select_destination))) {
395-
Utils.showToast(getContext(), R.string.please_select_destination);
396-
return;
397-
}
398-
399-
final File destinationDir = new File(destinationPath);
400-
if (!destinationDir.exists()) {
401-
Utils.showToast(getContext(), R.string.invalid_destination);
402-
return;
403-
}
404-
405-
final List<File> itemsToCopy = new ArrayList<>(itemIndexes.size());
406-
for (Integer i : itemIndexes) {
407-
FileDirItem item = mItems.get(i);
408-
itemsToCopy.add(new File(item.getPath()));
409-
}
410-
411-
final RadioGroup radio = (RadioGroup) copyView.findViewById(R.id.dialog_radio_group);
412-
if (radio.getCheckedRadioButtonId() == R.id.dialog_radio_copy) {
413-
Utils.showToast(getContext(), R.string.copying);
414-
final Pair<List<File>, File> pair = new Pair<>(itemsToCopy, destinationDir);
415-
new CopyTask(ItemsFragment.this).execute(pair);
416-
} else {
417-
for (File f : itemsToCopy) {
418-
final File destination = new File(destinationDir, f.getName());
419-
f.renameTo(destination);
420-
rescanItem(destination);
421-
}
422-
423-
mCopyDialog.dismiss();
424-
fillItems();
425-
}
378+
public void onSuccess() {
379+
fillItems();
426380
}
427-
});
428381

429-
mCopyDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
430382
@Override
431-
public void onDismiss(DialogInterface dialog) {
383+
public void onCancel() {
432384
mCopyDestinationPath = mPath;
433385
}
434386
});
@@ -482,26 +434,6 @@ private void notifyDeletion(int cnt) {
482434
fillItems();
483435
}
484436

485-
private View.OnClickListener destinationPicker = new View.OnClickListener() {
486-
@Override
487-
public void onClick(final View view) {
488-
final boolean showHiddenItems = mConfig.getShowHidden();
489-
final boolean showFullPath = mConfig.getShowFullPath();
490-
new FilePickerDialog(getContext(), mCopyDestinationPath, false, showHiddenItems, showFullPath, new FilePickerDialog.OnFilePickerListener() {
491-
@Override
492-
public void onFail(FilePickerDialog.FilePickerResult pickFolderResult) {
493-
494-
}
495-
496-
@Override
497-
public void onSuccess(String path) {
498-
mCopyDestinationPath = path;
499-
mDestinationView.setText(path);
500-
}
501-
});
502-
}
503-
};
504-
505437
@Override
506438
public boolean onTouch(View v, MotionEvent event) {
507439
if (mSnackbar != null && mSnackbar.isShown()) {
@@ -567,7 +499,6 @@ public void onDestroyActionMode(ActionMode mode) {
567499
@Override
568500
public void copySucceeded(File file) {
569501
rescanItem(file);
570-
mCopyDialog.dismiss();
571502
fillItems();
572503
}
573504

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package com.simplemobiletools.filemanager.dialogs
2+
3+
import android.app.Activity
4+
import android.support.v4.util.Pair
5+
import android.support.v7.app.AlertDialog
6+
import android.view.LayoutInflater
7+
import android.view.WindowManager
8+
import com.simplemobiletools.filemanager.Config
9+
import com.simplemobiletools.filemanager.R
10+
import com.simplemobiletools.filemanager.Utils
11+
import com.simplemobiletools.filemanager.asynctasks.CopyTask
12+
import com.simplemobiletools.filemanager.extensions.rescanItem
13+
import com.simplemobiletools.filemanager.extensions.toast
14+
import com.simplemobiletools.filemanager.extensions.value
15+
import com.simplemobiletools.filepicker.dialogs.FilePickerDialog
16+
import kotlinx.android.synthetic.main.copy_item.view.*
17+
import java.io.File
18+
19+
class CopyDialog(val activity: Activity, val files: List<File>, val path: String, val copyListener: CopyTask.CopyListener, val listener: OnCopyListener) {
20+
val mContext = activity
21+
init {
22+
val view = LayoutInflater.from(mContext).inflate(R.layout.copy_item, null)
23+
view.source.text = "$path/"
24+
25+
view.destination.setOnClickListener {
26+
val config = Config.newInstance(mContext)
27+
FilePickerDialog(activity, path, false, config.showHidden, true, object: FilePickerDialog.OnFilePickerListener {
28+
override fun onFail(error: FilePickerDialog.FilePickerResult) {
29+
}
30+
31+
override fun onSuccess(pickedPath: String) {
32+
view.destination.text = pickedPath
33+
}
34+
})
35+
}
36+
37+
AlertDialog.Builder(mContext)
38+
.setTitle(mContext.resources.getString(R.string.create_new))
39+
.setView(view)
40+
.setPositiveButton(R.string.ok, null)
41+
.setNegativeButton(R.string.cancel, { dialog, which -> dialogDismissed() })
42+
.setOnCancelListener { dialogDismissed() }
43+
.create().apply {
44+
window!!.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
45+
show()
46+
getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener({
47+
val destinationPath = view.destination.value
48+
if (destinationPath == context.resources.getString(R.string.select_destination)) {
49+
context.toast(R.string.please_select_destination)
50+
return@setOnClickListener
51+
}
52+
53+
val destinationDir = File(destinationPath)
54+
if (!destinationDir.exists()) {
55+
context.toast(R.string.invalid_destination)
56+
return@setOnClickListener
57+
}
58+
59+
if (view.dialog_radio_group.checkedRadioButtonId == R.id.dialog_radio_copy) {
60+
Utils.showToast(context, R.string.copying)
61+
val pair = Pair<List<File>, File>(files, destinationDir)
62+
CopyTask(copyListener).execute(pair)
63+
dismiss()
64+
} else {
65+
for (f in files) {
66+
val destination = File(destinationDir, f.name)
67+
f.renameTo(destination)
68+
context.rescanItem(destination)
69+
}
70+
71+
dismiss()
72+
listener.onSuccess()
73+
}
74+
})
75+
}
76+
}
77+
78+
private fun dialogDismissed() {
79+
listener.onCancel()
80+
}
81+
82+
interface OnCopyListener {
83+
fun onSuccess()
84+
85+
fun onCancel()
86+
}
87+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.simplemobiletools.filemanager.extensions
2+
3+
import android.widget.TextView
4+
5+
val TextView.value: String get() = this.text.toString().trim()

0 commit comments

Comments
 (0)