package org.primftpd.prefs; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.res.TypedArray; import android.preference.EditTextPreference; import android.preference.Preference; import android.util.AttributeSet; import android.widget.Toast; import org.primftpd.R; import org.primftpd.util.Defaults; import java.io.File; public class StartDirEditTextPreference extends EditTextPreference implements Preference.OnPreferenceChangeListener { public StartDirEditTextPreference( Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setOnPreferenceChangeListener(this); } public StartDirEditTextPreference(Context context, AttributeSet attrs) { super(context, attrs); setOnPreferenceChangeListener(this); } @Override protected Object onGetDefaultValue(TypedArray a, int index) { return Defaults.HOME_DIR.getAbsolutePath(); } @Override protected void onPrepareDialogBuilder(AlertDialog.Builder builder) { super.onPrepareDialogBuilder(builder); builder.setNeutralButton(R.string.reset, this); } @Override public void onClick(DialogInterface dialog, int which) { super.onClick(dialog, which); if (which == DialogInterface.BUTTON_NEUTRAL) { setText(Defaults.HOME_DIR.getAbsolutePath()); } } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { File file = new File(newValue.toString()); boolean valid = file.exists() && file.isDirectory(); if (!valid) { Toast.makeText( getContext(), R.string.invalidDir, Toast.LENGTH_LONG).show(); } return valid; } }