package org.openhab.habdroid.ui.widget; import android.content.Context; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.Toast; import org.openhab.habdroid.R; import org.openhab.habdroid.ui.OpenHABWidgetArrayAdapter; import org.openhab.habdroid.ui.SecondaryTouchListener; import org.openhab.habdroid.ui.TouchRepeatListener; /** * Created by Tony Alpskog in 2014. */ public class OpenHABSetpointWidget extends OpenHABWidgetBase { private Context mActivityContext; public OpenHABSetpointWidget(Context activityContext, IHABWidgetCommunication habWidgetCommunication, OpenHABWidgetArrayAdapter.ViewData viewData) { super(habWidgetCommunication, viewData); mActivityContext = activityContext; } public View getWidget() { mViewData.splitString = mViewData.openHABWidget.getLabel().split("\\[|\\]"); if (mViewData.labelTextView != null) mViewData.labelTextView.setText(mViewData.splitString[0]); if (mViewData.valueTextView != null) { if (mViewData.splitString.length > 1) { // If value is not empty, show TextView mViewData.valueTextView.setVisibility(View.VISIBLE); mViewData.valueTextView.setText(mViewData.splitString[1]); } } Button setPointMinusButton = (Button)mViewData.widgetView.findViewById(R.id.setpointbutton_minus); Button setPointPlusButton = (Button)mViewData.widgetView.findViewById(R.id.setpointbutton_plus); setPointMinusButton.setTag(mViewData.openHABWidget); setPointPlusButton.setTag(mViewData.openHABWidget); TouchRepeatListener.OnRepeatClickListener minusButtonOnRepeatClickListener = new SetpointRepeatClickListener(mViewData, true, mHABWidgetCommunication); setPointMinusButton.setOnTouchListener(new TouchRepeatListener(400, 150, minusButtonOnRepeatClickListener)); TouchRepeatListener.OnRepeatClickListener plusButtonOnRepeatClickListener = new SetpointRepeatClickListener(mViewData, false, mHABWidgetCommunication); setPointPlusButton.setOnTouchListener(new TouchRepeatListener(400, 150, plusButtonOnRepeatClickListener)); SecondaryTouchListener.OnSecondaryClickListener valueTextOnSecondaryClickListener = new SecondaryTouchListener.OnSecondaryClickListener() { @Override public boolean onSecondary(View v, SecondaryTouchListener.SecondaryClickEvent event) { if(event == SecondaryTouchListener.SecondaryClickEvent.Down) { Toast.makeText(getWidget().getContext(), "A numeric input dialog will be shown...", Toast.LENGTH_LONG).show(); // EditText txtName = new EditText(mActivityContext); // txtName.setKeyListener(DigitsKeyListener.getInstance("0123456789.,")); // txtName.requestFocus(); InputMethodManager imm = (InputMethodManager) mActivityContext.getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.RESULT_UNCHANGED_SHOWN); // ((InputMethodManager) mActivityContext.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(txtName, InputMethodManager.SHOW_FORCED); // } else if(event == SecondaryTouchListener.SecondaryClickEvent.Up) { // ((InputMethodManager) mActivityContext.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(txtName.getWindowToken(), 0); } return false; } }; mViewData.valueTextView.setOnTouchListener(new SecondaryTouchListener(valueTextOnSecondaryClickListener)); return mViewData.widgetView; } }