package org.softeg.slartus.forpdaplus.classes;
import android.content.Context;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.view.View;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import org.softeg.slartus.forpdaplus.App;
import org.softeg.slartus.forpdaplus.R;
import java.util.Arrays;
/**
* Created by radiationx on 16.02.16.
*/
public class ActionSelectDialogFragment {
public interface OkListener {
public void execute(CharSequence value);
}
public static void showSaveNavigateActionDialog(final Context context,
final String preferenceKey,
final String selectedAction,
final Runnable showTopicAction) {
final String navigateAction = App.getInstance().getPreferences()
.getString(preferenceKey, null);
if (navigateAction == null || !selectedAction.equals(navigateAction)) {
showSelectDialog(context, preferenceKey, selectedAction, showTopicAction);
} else {
showTopicAction.run();
}
}
public static void showSelectDialog(final Context context,
final String preferenceKey,
final String selectedAction,
final Runnable showTopicAction) {
new MaterialDialog.Builder(context)
.content(R.string.assign_default)
.positiveText(R.string.yes)
.negativeText(R.string.no)
.neutralText(R.string.ask)
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(MaterialDialog dialog, DialogAction which) {
App.getInstance().getPreferences()
.edit().putString(preferenceKey, selectedAction).commit();
showTopicAction.run();
}
})
.onNegative(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(MaterialDialog dialog, DialogAction which) {
showTopicAction.run();
}
})
.onNeutral(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(MaterialDialog dialog, DialogAction which) {
App.getInstance().getPreferences()
.edit().putString(preferenceKey, null).commit();
showTopicAction.run();
}
})
.show();
}
public static void execute(final Context context,
final String title,
final String preferenceKey,
CharSequence[] titles,
final CharSequence[] values,
final OkListener okListener,
final String hintForChangeDefault) {
final String value = App.getInstance().getPreferences().getString(preferenceKey, null);
if (Arrays.asList(values).contains(value)) {
okListener.execute(value);
return;
}
final int[] selectedValue = {0};
new MaterialDialog.Builder(context)
.title(title)
.items(titles)
.itemsCallbackSingleChoice(0, new MaterialDialog.ListCallbackSingleChoice() {
@Override
public boolean onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
selectedValue[0] = which;
return true;
}
})
.alwaysCallSingleChoiceCallback()
.positiveText(R.string.always)
.neutralText(R.string.only_now)
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(MaterialDialog dialog, DialogAction which) {
final CharSequence newValue = values[selectedValue[0]];
App.getInstance().getPreferences()
.edit()
.putString(preferenceKey, newValue.toString())
.commit();
if (!TextUtils.isEmpty(hintForChangeDefault))
new MaterialDialog.Builder(context)
.title(R.string.hint)
.content(hintForChangeDefault)
.cancelable(false)
.positiveText(R.string.ok)
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
okListener.execute(newValue);
}
})
.show();
else
okListener.execute(newValue);
}
})
.onNeutral(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(MaterialDialog dialog, DialogAction which) {
okListener.execute(values[selectedValue[0]]);
}
})
.show();
}
}