package farom.iparcos; import java.io.IOException; import java.util.ArrayList; import farom.iparcos.R; import farom.iparcos.TextPropPref.TextRequestFragment; import laazotea.indi.Constants; import laazotea.indi.Constants.SwitchStatus; import laazotea.indi.client.INDIElement; import laazotea.indi.client.INDIProperty; import laazotea.indi.client.INDISwitchElement; import laazotea.indi.client.INDISwitchProperty; import laazotea.indi.client.INDITextProperty; import laazotea.indi.client.INDIValueException; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.Context; import android.content.DialogInterface; import android.graphics.Typeface; import android.os.Bundle; import android.text.Spannable; import android.text.SpannableString; import android.text.style.StyleSpan; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; public class SwitchPropPref extends PropPref { public SwitchPropPref(Context context, INDIProperty prop) { super(context, prop); // TODO Auto-generated constructor stub } /** * Create the summary rich-text string * * @return the summary */ @Override protected Spannable createSummary() { String temp = ""; ArrayList<INDIElement> elements = prop.getElementsAsList(); int[] starts = new int[elements.size()]; int[] ends = new int[elements.size()]; starts[0] = 0; for (int i = 0; i < elements.size(); i++) { starts[i] = temp.length(); temp = temp + elements.get(i).getLabel() + " "; ends[i] = temp.length(); } Spannable summaryText = new SpannableString(temp); StyleSpan boldSpan = new StyleSpan(Typeface.BOLD); for (int i = 0; i < elements.size(); i++) { if (((INDISwitchElement) (elements.get(i))).getValue() == SwitchStatus.ON) { summaryText.setSpan(boldSpan, starts[i], ends[i], 0); } } return summaryText; } @Override protected void onClick() { DialogFragment newFragment = new SwitchRequestFragment((INDISwitchProperty) prop); newFragment.show(((Activity) getContext()).getFragmentManager(), "request"); } @SuppressLint("ValidFragment") public class SwitchRequestFragment extends DialogFragment { private INDISwitchProperty prop; public SwitchRequestFragment(INDISwitchProperty prop) { this.prop = prop; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the Builder class for convenient dialog construction AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); final ArrayList<INDIElement> elements = prop.getElementsAsList(); String[] elementsString = new String[elements.size()]; final boolean[] elementsChecked = new boolean[elements.size()]; for (int i = 0; i < elements.size(); i++) { elementsString[i] = elements.get(i).getLabel(); elementsChecked[i] = ((INDISwitchElement) (elements.get(i))).getValue() == SwitchStatus.ON; } builder.setMultiChoiceItems(elementsString, elementsChecked, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { elementsChecked[which] = isChecked; } }); builder.setTitle(prop.getLabel()); if (prop.getPermission() != Constants.PropertyPermissions.RO) { builder.setPositiveButton(R.string.send_request, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { try { for (int i = 0; i < elements.size(); i++) { elements.get(i).setDesiredValue(elementsChecked[i] ? SwitchStatus.ON : SwitchStatus.OFF); } prop.sendChangesToDriver(); } catch (INDIValueException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }); builder.setNegativeButton(R.string.cancel_request, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); } else { builder.setNegativeButton(R.string.back_request, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); } // Create the AlertDialog object and return it return builder.create(); } } }