package com.vaguehope.onosendai.ui.pref; import java.util.ArrayList; import java.util.Collection; import org.json.JSONException; import android.content.Context; import android.preference.DialogPreference; import android.view.View; import com.vaguehope.onosendai.config.Account; import com.vaguehope.onosendai.config.Column; import com.vaguehope.onosendai.config.Prefs; import com.vaguehope.onosendai.util.ArrayHelper; import com.vaguehope.onosendai.util.CollectionHelper; import com.vaguehope.onosendai.util.DialogHelper; import com.vaguehope.onosendai.util.Functions; public class ColumnDialogPreference extends DialogPreference { private final Column column; private final ColumnsPrefFragment columnsPrefFragment; private ColumnDialog dialog; public ColumnDialogPreference (final Context context, final Column column, final Collection<Account> accounts, final ColumnsPrefFragment columnsPrefFragment) { super(context, null); this.column = column; this.columnsPrefFragment = columnsPrefFragment; setKey(Prefs.makeColumnId(column.getId())); setTitle(column.getUiTitle()); setSummary(accounts != null ? ArrayHelper.join(CollectionHelper.map(accounts, Functions.TITLE, new ArrayList<String>()), ", ") : null); setDialogTitle("Edit Column (" + getKey() + ")"); //ES setPositiveButtonText(android.R.string.ok); setNegativeButtonText(android.R.string.cancel); } @Override protected View onCreateDialogView () { this.dialog = new ColumnDialog(getContext(), this.columnsPrefFragment.getPrefs(), this.column); return this.dialog.getRootView(); } @Override protected void onDialogClosed (final boolean positiveResult) { if (positiveResult) { try { if (this.dialog.isDeleteSelected()) { this.columnsPrefFragment.askDeleteColumn(this.dialog.getInitialValue()); } else { final Column newColumn = this.dialog.getValue(); persistString(newColumn.toJson().toString()); this.columnsPrefFragment.moveColumnToPosition(newColumn, this.dialog.getPosition()); this.columnsPrefFragment.refreshColumnsList(); } } catch (JSONException e) { DialogHelper.alert(getContext(), e); } } super.onDialogClosed(positiveResult); } }