package farom.iparcos; import farom.iparcos.R; import java.io.IOException; import java.util.ArrayList; 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.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.view.View; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; public class TextPropPref extends PropPref { public TextPropPref(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() { ArrayList<INDIElement> elements = prop.getElementsAsList(); if (elements.size() > 0) { String temp = ""; int i = 0; temp = temp + elements.get(0).getLabel() + ": "; for (i = 0; i < elements.size() - 1; i++) { temp = temp + elements.get(i).getValueAsString(); temp = temp + ", "; temp = temp + elements.get(i + 1).getLabel() + ": "; } temp = temp + elements.get(i).getValueAsString(); Spannable summaryText = new SpannableString(temp); return summaryText; } else { return new SpannableString(""); } } @Override protected void onClick() { DialogFragment newFragment = new TextRequestFragment((INDITextProperty) prop); newFragment.show(((Activity) getContext()).getFragmentManager(), "request"); } @SuppressLint("ValidFragment") public class TextRequestFragment extends DialogFragment { private INDITextProperty prop; public TextRequestFragment(INDITextProperty 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(); final ArrayList<EditText> editTextViews = new ArrayList<EditText>(elements.size()); LinearLayout layout = new LinearLayout(getContext()); layout.setOrientation(LinearLayout.VERTICAL); int padding = getContext().getResources().getDimensionPixelSize(R.dimen.padding_medium); for (int i = 0; i < elements.size(); i++) { TextView textView = new TextView(getContext()); textView.setText(elements.get(i).getLabel()); textView.setTextSize(22); textView.setPadding(padding, padding, padding, 0); layout.addView(textView); editTextViews.add(new EditText(getContext())); editTextViews.get(i).setText(elements.get(i).getValueAsString()); editTextViews.get(i).setPadding(padding, padding, padding, padding); editTextViews.get(i).setEnabled(prop.getPermission() != Constants.PropertyPermissions.RO); layout.addView(editTextViews.get(i)); } builder.setView(layout); 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(editTextViews.get(i).getText().toString()); } 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(); } } }