package org.iilab.pb.fragment; import android.widget.Toast; import org.iilab.pb.R; import org.iilab.pb.WizardActivity; import org.iilab.pb.common.AppConstants; import org.iilab.pb.common.ApplicationSettings; import org.iilab.pb.data.PBDatabase; import org.iilab.pb.model.Page; import org.iilab.pb.trigger.MultiClickEvent; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Vibrator; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; /** * Created by aoe on 1/16/14. */ public class WizardAlarmTestDisguiseFragment extends Fragment { private static final String PAGE_ID = "page_id"; private Activity activity; private int[] buttonIds = {R.id.one, R.id.two, R.id.three, R.id.four, R.id.five, R.id.six, R.id.seven, R.id.eight, R.id.nine, R.id.zero, R.id.equals_sign, R.id.plus, R.id.minus, R.id.multiply, R.id.divide, R.id.decimal_point, R.id.char_c}; private int lastClickId = -1; Page currentPage; public static WizardAlarmTestDisguiseFragment newInstance(String pageId) { WizardAlarmTestDisguiseFragment f = new WizardAlarmTestDisguiseFragment(); Bundle args = new Bundle(); args.putString(PAGE_ID, pageId); f.setArguments(args); return (f); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.e(">>>>>", "onCreateView before inflate"); View view = inflater.inflate(R.layout.calculator_layout, container, false); Log.e(">>>>>", "onCreateView before registerButtonEvents"); registerButtonEvents(view); Log.e(">>>>>", "onCreateView after registerButtonEvents"); return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); activity = getActivity(); if (activity != null) { String pageId = getArguments().getString(PAGE_ID); String selectedLang = ApplicationSettings.getSelectedLanguage(activity); PBDatabase dbInstance = new PBDatabase(activity); dbInstance.open(); currentPage = dbInstance.retrievePage(pageId, selectedLang); dbInstance.close(); } } @Override public void onPause() { super.onPause(); Log.e(">>>>>", "onPause WizardAlarmTestDisguiseFragment"); } @Override public void onResume() { super.onResume(); Log.e(">>>>>", "onResume WizardAlarmTestDisguiseFragment"); } @Override public void onDestroyView() { super.onDestroyView(); Log.e(">>>>>", "onDestroyView WizardAlarmTestDisguiseFragment"); } @Override public void onDestroy() { super.onDestroy(); Log.e(">>>>>", "onDestroy WizardAlarmTestDisguiseFragment"); } private void registerButtonEvents(View view) { for (int buttonId : buttonIds) { Button button = (Button) view.findViewById(buttonId); button.setOnClickListener(clickListener); } } private void unregisterButtonEvents(Activity activity) { for (int buttonId : buttonIds) { Button button = (Button) activity.findViewById(buttonId); button.setOnClickListener(null); } } private View.OnClickListener clickListener = new View.OnClickListener() { @Override public void onClick(View view) { int id = view.getId(); Log.e(">>>>>", "onClick id " + id); Log.e(">>>>>", "onClick lastClickId " + lastClickId); MultiClickEvent multiClickEvent = (MultiClickEvent) view.getTag(); if (multiClickEvent == null) { Log.e(">>>>>", "multiClickEvent reset"); multiClickEvent = resetEvent(view); } if (id != lastClickId) multiClickEvent.reset(); lastClickId = id; multiClickEvent.registerClick(System.currentTimeMillis()); if(multiClickEvent.skipCurrentClick()){ Log.e(">>>>>", "multiClickEvent skip"); multiClickEvent.resetSkipCurrentClickFlag(); return; } if(multiClickEvent.canStartVibration()) { vibrate(AppConstants.HAPTIC_FEEDBACK_DURATION); CharSequence text = ((Button) view).getText(); Toast.makeText(activity, "Press the button '" + text + "' once the vibration ends to trigger alerts", Toast.LENGTH_LONG).show(); } else if(multiClickEvent.isActivated()){ Log.e(">>>>>", "multiClickEvent isActivated"); vibrate(AppConstants.ALERT_CONFIRMATION_VIBRATION_DURATION); resetEvent(view); //unregisterButtonEvents(activity); String pageId = currentPage.getSuccessId(); Intent i = new Intent(activity, WizardActivity.class); i.putExtra("page_id", pageId); activity.startActivity(i); activity.finish(); } } }; private void vibrate(int vibrationDuration) { Vibrator vibrator = (Vibrator) activity.getSystemService(Context.VIBRATOR_SERVICE); vibrator.vibrate(vibrationDuration); } private MultiClickEvent resetEvent(View view) { MultiClickEvent multiClickEvent = new MultiClickEvent(); view.setTag(multiClickEvent); return multiClickEvent; } }