Skip to content

Commit 6a2841a

Browse files
committed
move CreateNewItem dialog into an own file
1 parent 5be7657 commit 6a2841a

File tree

4 files changed

+108
-62
lines changed

4 files changed

+108
-62
lines changed

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

Lines changed: 5 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@
3737
import com.simplemobiletools.filemanager.Utils;
3838
import com.simplemobiletools.filemanager.adapters.ItemsAdapter;
3939
import com.simplemobiletools.filemanager.asynctasks.CopyTask;
40+
import com.simplemobiletools.filemanager.dialogs.CreateNewItemDialog;
4041
import com.simplemobiletools.filemanager.dialogs.PropertiesDialog;
4142
import com.simplemobiletools.filepicker.dialogs.FilePickerDialog;
4243
import com.simplemobiletools.filepicker.models.FileDirItem;
4344

4445
import java.io.File;
4546
import java.io.FileFilter;
46-
import java.io.IOException;
4747
import java.util.ArrayList;
4848
import java.util.Collections;
4949
import java.util.HashMap;
@@ -221,69 +221,12 @@ private boolean tryGenericMimeType(Intent intent, String mimeType, File file) {
221221

222222
@OnClick(R.id.items_fab)
223223
public void fabClicked(View view) {
224-
final View newItemView = getActivity().getLayoutInflater().inflate(R.layout.create_new, null);
225-
226-
final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
227-
builder.setTitle(getResources().getString(R.string.create_new));
228-
builder.setView(newItemView);
229-
builder.setPositiveButton(R.string.ok, null);
230-
builder.setNegativeButton(R.string.cancel, null);
231-
232-
final AlertDialog alertDialog = builder.create();
233-
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
234-
alertDialog.show();
235-
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
224+
new CreateNewItemDialog(getContext(), mPath, new CreateNewItemDialog.OnCreateNewItemListener() {
236225
@Override
237-
public void onClick(View v) {
238-
final EditText itemName = (EditText) newItemView.findViewById(R.id.item_name);
239-
final String name = itemName.getText().toString().trim();
240-
if (Utils.isNameValid(name)) {
241-
final File file = new File(mPath, name);
242-
if (file.exists()) {
243-
Utils.showToast(getContext(), R.string.name_taken);
244-
return;
245-
}
246-
final RadioGroup radio = (RadioGroup) newItemView.findViewById(R.id.dialog_radio_group);
247-
if (radio.getCheckedRadioButtonId() == R.id.dialog_radio_directory) {
248-
if (!createDirectory(file, alertDialog)) {
249-
errorOccurred();
250-
}
251-
} else {
252-
if (!createFile(file, alertDialog)) {
253-
errorOccurred();
254-
}
255-
}
256-
} else {
257-
Utils.showToast(getContext(), R.string.invalid_name);
258-
}
259-
}
260-
});
261-
}
262-
263-
private boolean createDirectory(File file, AlertDialog alertDialog) {
264-
if (file.mkdirs()) {
265-
alertDialog.dismiss();
266-
fillItems();
267-
return true;
268-
}
269-
return false;
270-
}
271-
272-
private void errorOccurred() {
273-
Utils.showToast(getContext(), R.string.error_occurred);
274-
}
275-
276-
private boolean createFile(File file, AlertDialog alertDialog) {
277-
try {
278-
if (file.createNewFile()) {
279-
alertDialog.dismiss();
226+
public void onSuccess() {
280227
fillItems();
281-
return true;
282228
}
283-
} catch (IOException ignored) {
284-
285-
}
286-
return false;
229+
});
287230
}
288231

289232
@Override
@@ -448,7 +391,7 @@ public void onClick(View v) {
448391
alertDialog.dismiss();
449392
fillItems();
450393
} else {
451-
errorOccurred();
394+
Utils.showToast(getContext(), R.string.error_occurred);
452395
}
453396
} else {
454397
Utils.showToast(getContext(), R.string.invalid_name);
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package com.simplemobiletools.filemanager.dialogs
2+
3+
import android.content.Context
4+
import android.support.v7.app.AlertDialog
5+
import android.view.LayoutInflater
6+
import android.view.View
7+
import android.view.WindowManager
8+
import com.simplemobiletools.filemanager.R
9+
import com.simplemobiletools.filemanager.Utils
10+
import com.simplemobiletools.filemanager.extensions.toast
11+
import com.simplemobiletools.filemanager.extensions.value
12+
import kotlinx.android.synthetic.main.create_new.view.*
13+
import java.io.File
14+
import java.io.IOException
15+
16+
class CreateNewItemDialog() {
17+
interface OnCreateNewItemListener {
18+
fun onSuccess()
19+
}
20+
21+
lateinit var mContext: Context
22+
var mListener: OnCreateNewItemListener? = null
23+
24+
constructor(context: Context, path: String, listener: OnCreateNewItemListener) : this() {
25+
mContext = context
26+
mListener = listener
27+
28+
val view = LayoutInflater.from(context).inflate(R.layout.create_new, null)
29+
30+
AlertDialog.Builder(context)
31+
.setTitle(context.resources.getString(R.string.create_new))
32+
.setView(view)
33+
.setPositiveButton(R.string.ok, null)
34+
.setNegativeButton(R.string.cancel, null)
35+
.create().apply {
36+
window!!.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
37+
show()
38+
getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(View.OnClickListener {
39+
val name = view.item_name.value
40+
if (Utils.isNameValid(name)) {
41+
val file = File(path, name)
42+
if (file.exists()) {
43+
context.toast(R.string.name_taken)
44+
return@OnClickListener
45+
}
46+
47+
if (view.dialog_radio_group.checkedRadioButtonId == R.id.dialog_radio_directory) {
48+
if (!createDirectory(file, this)) {
49+
errorOccurred()
50+
}
51+
} else {
52+
if (!createFile(file, this)) {
53+
errorOccurred()
54+
}
55+
}
56+
} else {
57+
context.toast(R.string.invalid_name)
58+
}
59+
})
60+
}
61+
}
62+
63+
64+
private fun createDirectory(file: File, alertDialog: AlertDialog): Boolean {
65+
return if (file.mkdirs()) {
66+
alertDialog.dismiss()
67+
mListener?.onSuccess()
68+
true
69+
} else
70+
false
71+
}
72+
73+
private fun errorOccurred() {
74+
mContext.toast(R.string.error_occurred)
75+
}
76+
77+
private fun createFile(file: File, alertDialog: AlertDialog): Boolean {
78+
try {
79+
if (file.createNewFile()) {
80+
alertDialog.dismiss()
81+
mListener?.onSuccess()
82+
return true
83+
}
84+
} catch (ignored: IOException) {
85+
86+
}
87+
88+
return false
89+
}
90+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.simplemobiletools.filemanager.extensions
2+
3+
import android.content.Context
4+
import android.widget.Toast
5+
6+
fun Context.toast(id: Int) = Toast.makeText(this, resources.getString(id), Toast.LENGTH_SHORT).show()
7+
8+
fun Context.toast(message: String) = Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
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.EditText
4+
5+
val EditText.value: String get() = this.text.toString().trim()

0 commit comments

Comments
 (0)