Skip to content

Commit 10d9653

Browse files
committed
move the rename dialog in a separate file
1 parent ee059eb commit 10d9653

File tree

3 files changed

+76
-39
lines changed

3 files changed

+76
-39
lines changed

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

Lines changed: 4 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,8 @@
2323
import android.view.MotionEvent;
2424
import android.view.View;
2525
import android.view.ViewGroup;
26-
import android.view.WindowManager;
2726
import android.webkit.MimeTypeMap;
2827
import android.widget.AdapterView;
29-
import android.widget.EditText;
3028
import android.widget.ListView;
3129
import android.widget.RadioGroup;
3230
import android.widget.TextView;
@@ -39,6 +37,7 @@
3937
import com.simplemobiletools.filemanager.asynctasks.CopyTask;
4038
import com.simplemobiletools.filemanager.dialogs.CreateNewItemDialog;
4139
import com.simplemobiletools.filemanager.dialogs.PropertiesDialog;
40+
import com.simplemobiletools.filemanager.dialogs.RenameItemDialog;
4241
import com.simplemobiletools.filepicker.dialogs.FilePickerDialog;
4342
import com.simplemobiletools.filepicker.models.FileDirItem;
4443

@@ -358,44 +357,10 @@ private void displayRenameDialog() {
358357
if (item == null)
359358
return;
360359

361-
final View renameView = getActivity().getLayoutInflater().inflate(R.layout.rename_item, null);
362-
final EditText itemName = (EditText) renameView.findViewById(R.id.item_name);
363-
itemName.setText(item.getName());
364-
365-
final int title = (item.isDirectory()) ? R.string.rename_directory : R.string.rename_file;
366-
final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
367-
builder.setTitle(getResources().getString(title));
368-
builder.setView(renameView);
369-
builder.setPositiveButton(R.string.ok, null);
370-
builder.setNegativeButton(R.string.cancel, null);
371-
372-
final AlertDialog alertDialog = builder.create();
373-
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
374-
alertDialog.show();
375-
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
360+
new RenameItemDialog(getContext(), mPath, item, new RenameItemDialog.OnRenameItemListener() {
376361
@Override
377-
public void onClick(View v) {
378-
final String name = itemName.getText().toString().trim();
379-
if (Utils.isNameValid(name)) {
380-
final File currFile = new File(mPath, item.getName());
381-
final File newFile = new File(mPath, name);
382-
383-
if (newFile.exists()) {
384-
Utils.showToast(getContext(), R.string.name_taken);
385-
return;
386-
}
387-
388-
if (currFile.renameTo(newFile)) {
389-
rescanItem(newFile);
390-
MediaScannerConnection.scanFile(getContext(), new String[]{currFile.getAbsolutePath(), newFile.getAbsolutePath()}, null, null);
391-
alertDialog.dismiss();
392-
fillItems();
393-
} else {
394-
Utils.showToast(getContext(), R.string.error_occurred);
395-
}
396-
} else {
397-
Utils.showToast(getContext(), R.string.invalid_name);
398-
}
362+
public void onSuccess() {
363+
fillItems();
399364
}
400365
});
401366
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.simplemobiletools.filemanager.dialogs
2+
3+
import android.content.Context
4+
import android.media.MediaScannerConnection
5+
import android.support.v7.app.AlertDialog
6+
import android.view.LayoutInflater
7+
import android.view.WindowManager
8+
import com.simplemobiletools.filemanager.R
9+
import com.simplemobiletools.filemanager.Utils
10+
import com.simplemobiletools.filemanager.extensions.rescanItem
11+
import com.simplemobiletools.filemanager.extensions.toast
12+
import com.simplemobiletools.filemanager.extensions.value
13+
import com.simplemobiletools.filepicker.models.FileDirItem
14+
import kotlinx.android.synthetic.main.rename_item.view.*
15+
import java.io.File
16+
17+
class RenameItemDialog(val context: Context, val path: String, val item: FileDirItem, val listener: OnRenameItemListener) {
18+
19+
init {
20+
val view = LayoutInflater.from(context).inflate(R.layout.rename_item, null)
21+
view.item_name.setText(item.name)
22+
23+
AlertDialog.Builder(context)
24+
.setTitle(context.resources.getString(R.string.create_new))
25+
.setView(view)
26+
.setPositiveButton(R.string.ok, null)
27+
.setNegativeButton(R.string.cancel, null)
28+
.create().apply {
29+
window!!.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
30+
show()
31+
getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener({
32+
val name = view.item_name.value
33+
if (Utils.isNameValid(name)) {
34+
val currFile = File(path, item.name)
35+
val newFile = File(path, name)
36+
37+
if (newFile.exists()) {
38+
context.toast(R.string.name_taken)
39+
return@setOnClickListener
40+
}
41+
42+
if (currFile.renameTo(newFile)) {
43+
context.rescanItem(newFile)
44+
MediaScannerConnection.scanFile(context, arrayOf(currFile.absolutePath, newFile.absolutePath), null, null)
45+
dismiss()
46+
listener.onSuccess()
47+
} else {
48+
context.toast(R.string.error_occurred)
49+
}
50+
} else {
51+
context.toast(R.string.invalid_name)
52+
}
53+
})
54+
}
55+
}
56+
57+
interface OnRenameItemListener {
58+
fun onSuccess()
59+
}
60+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
11
package com.simplemobiletools.filemanager.extensions
22

33
import android.content.Context
4+
import android.media.MediaScannerConnection
45
import android.widget.Toast
6+
import java.io.File
57

68
fun Context.toast(id: Int) = Toast.makeText(this, resources.getString(id), Toast.LENGTH_SHORT).show()
79

810
fun Context.toast(message: String) = Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
11+
12+
fun Context.rescanItem(item: File) {
13+
if (item.isDirectory) {
14+
for (child in item.listFiles()) {
15+
rescanItem(child)
16+
}
17+
}
18+
19+
MediaScannerConnection.scanFile(this, arrayOf(item.absolutePath), null, null)
20+
}

0 commit comments

Comments
 (0)