package ar.rulosoft.custompref;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Environment;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceDialogFragmentCompat;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import ar.rulosoft.mimanganu.R;
import ar.rulosoft.mimanganu.utils.Util;
/**
* Created by Raul on 15/04/2016.
*/
public class PreferenceListDirFragment extends PreferenceDialogFragmentCompat {
private Context context = getContext();
private String actual;
private ListView dirs;
private TextView dirs_path;
PreferencesListDir parent;
public static PreferenceListDirFragment newInstance(Preference preference) {
PreferenceListDirFragment fragment = new PreferenceListDirFragment();
fragment.setParent((PreferencesListDir) preference);
Bundle bundle = new Bundle(1);
bundle.putString("key", preference.getKey());
fragment.setArguments(bundle);
return fragment;
}
@Override
protected void onBindDialogView(@NonNull View view) {
SharedPreferences pm = PreferenceManager.getDefaultSharedPreferences(getContext());
actual = pm.getString(parent.getKey(), Environment.getExternalStorageDirectory().getPath() + "/");
dirs = (ListView) view.findViewById(R.id.dirList);
dirs_path = (TextView) view.findViewById(R.id.dirBreadcrumb);
ArrayList<String> dirList = Util.getInstance().dirList(actual);
context = getActivity();
ArrayAdapter<String> adap = new ArrayAdapterDirectory(context, R.layout.listitem_dir, dirList);
dirs_path.setText(actual);
dirs.setAdapter(adap);
dirs.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
String item = (String) dirs.getItemAtPosition(arg2);
if (!item.equals("..")) {
actual += item + "/";
} else {
actual = actual.substring(0, actual.lastIndexOf("/"));
actual = actual.substring(0, actual.lastIndexOf("/") + 1);
}
ArrayList<String> dirList = Util.getInstance().dirList(actual);
ArrayAdapter<String> adap =
new ArrayAdapterDirectory(context, R.layout.listitem_dir, dirList);
dirs_path.setText(actual);
dirs.setAdapter(adap);
}
});
super.onBindDialogView(view);
}
@Override
protected void onPrepareDialogBuilder(android.support.v7.app.AlertDialog.Builder builder) {
builder.setPositiveButton(getContext().getString(android.R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
File nd;
if (actual.contains("MiManga")) {
nd = new File(actual, ".nomedia");
} else {
nd = new File(actual + "MiMangaNu/", ".nomedia");
}
nd.mkdirs();
try {
nd.createNewFile();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (nd.exists()) {
Toast.makeText(context, context.getResources().getString(R.string.folder_changed), Toast.LENGTH_SHORT).show();
//TODO moveFiles to new folder
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(getContext());
SharedPreferences.Editor editor = prefs.edit();
editor.putString(parent.getKey(), actual);
editor.apply();
} else {
Toast.makeText(context, context.getResources().getString(R.string.unwritable_folder), Toast.LENGTH_SHORT).show();
}
dialog.dismiss();
}
}
});
builder.setNegativeButton(getContext().getString(android.R.string.cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
super.onPrepareDialogBuilder(builder);
}
public PreferencesListDir getParent() {
return parent;
}
public void setParent(PreferencesListDir parent) {
this.parent = parent;
}
@Override
public void onDialogClosed(boolean b) {
}
}