/** * Attaches onKey listener to the Button passed as a parameter to the method. If enter key on the * keyboard or center key on the keypad is pressed, the value of the parameter passed is checked. * * @param button The button with which the onKeyListener is to be associated. * @param buttonFlag If the value of buttonFlag is 1, an alert dialog is displayed, to confirm the * delete operation. If the value of buttonFlag is 2, the contact is copied to the SD card. If * the value of buttonFlag is 3, all the contacts are exported to the SD card. If the value of * buttonFlag is 4, contacts are imported from the SD card. */ private void attachKeyListener(Button button, final int buttonFlag) { button.setOnKeyListener( new OnKeyListener() { @Override public boolean onKey(View view, int keyCode, KeyEvent keyEvent) { if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) { switch (keyCode) { case KeyEvent.KEYCODE_DPAD_CENTER: case KeyEvent.KEYCODE_ENTER: switch (buttonFlag) { case 1: confirmDelete(getString(R.string.deleteSingleContacConfirm)); break; case 2: copyToSDcard(); break; case 3: export(); break; case 4: importContact(); break; } break; } } return false; } }); }
@Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (getShowsDialog()) { getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); } View view = inflater.inflate(R.layout.radial_time_picker_dialog, null); KeyboardListener keyboardListener = new KeyboardListener(); view.findViewById(R.id.time_picker_dialog).setOnKeyListener(keyboardListener); Resources res = getResources(); TypedArray themeColors = getActivity().obtainStyledAttributes(mStyleResId, R.styleable.BetterPickersDialogs); // Prepare some colors to use. int headerBgColor = themeColors.getColor( R.styleable.BetterPickersDialogs_bpHeaderBackgroundColor, R.color.bpBlue); int bodyBgColor = themeColors.getColor( R.styleable.BetterPickersDialogs_bpBodyBackgroundColor, R.color.bpWhite); int buttonBgColor = themeColors.getColor( R.styleable.BetterPickersDialogs_bpButtonsBackgroundColor, R.color.bpWhite); int buttonTextColor = themeColors.getColor(R.styleable.BetterPickersDialogs_bpButtonsTextColor, R.color.bpBlue); mSelectedColor = themeColors.getColor( R.styleable.BetterPickersDialogs_bpHeaderSelectedTextColor, R.color.bpWhite); mUnselectedColor = themeColors.getColor( R.styleable.BetterPickersDialogs_bpHeaderUnselectedTextColor, R.color.radial_gray_light); mHourPickerDescription = res.getString(R.string.hour_picker_description); mSelectHours = res.getString(R.string.select_hours); mMinutePickerDescription = res.getString(R.string.minute_picker_description); mSelectMinutes = res.getString(R.string.select_minutes); mHourView = (TextView) view.findViewById(R.id.hours); mHourView.setOnKeyListener(keyboardListener); mHourSpaceView = (TextView) view.findViewById(R.id.hour_space); mMinuteSpaceView = (TextView) view.findViewById(R.id.minutes_space); mMinuteView = (TextView) view.findViewById(R.id.minutes); mMinuteView.setOnKeyListener(keyboardListener); mAmPmTextView = (TextView) view.findViewById(R.id.ampm_label); mAmPmTextView.setOnKeyListener(keyboardListener); String[] amPmTexts = new DateFormatSymbols().getAmPmStrings(); mAmText = amPmTexts[0]; mPmText = amPmTexts[1]; mHapticFeedbackController = new HapticFeedbackController(getActivity()); mTimePicker = (RadialPickerLayout) view.findViewById(R.id.time_picker); mTimePicker.setOnValueSelectedListener(this); mTimePicker.setOnKeyListener(keyboardListener); mTimePicker.initialize( getActivity(), mHapticFeedbackController, mInitialHourOfDay, mInitialMinute, mIs24HourMode); int currentItemShowing = HOUR_INDEX; if (savedInstanceState != null && savedInstanceState.containsKey(KEY_CURRENT_ITEM_SHOWING)) { currentItemShowing = savedInstanceState.getInt(KEY_CURRENT_ITEM_SHOWING); } setCurrentItemShowing(currentItemShowing, false, true, true); mTimePicker.invalidate(); mHourView.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { setCurrentItemShowing(HOUR_INDEX, true, false, true); tryVibrate(); } }); mMinuteView.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { setCurrentItemShowing(MINUTE_INDEX, true, false, true); tryVibrate(); } }); mTitleTextView = (TextView) view.findViewById(R.id.time_picker_header); if (mTitleText != null) { mTitleTextView.setVisibility(View.VISIBLE); mTitleTextView.setText(mTitleText); } else { mTitleTextView.setVisibility(View.GONE); } mError = (NumberPickerErrorTextView) view.findViewById(R.id.error); if (hasTimeLimits()) { mError.setVisibility(View.INVISIBLE); } else { mError.setVisibility(View.GONE); } mDoneButton = (Button) view.findViewById(R.id.done_button); if (mDoneText != null) { mDoneButton.setText(mDoneText); } mDoneButton.setTextColor(buttonTextColor); mDoneButton.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { if (mInKbMode && isTypedTimeFullyLegal()) { finishKbMode(false); } else { tryVibrate(); } doneClickValidateAndCallback(); } }); mDoneButton.setOnKeyListener(keyboardListener); Button cancelButton = (Button) view.findViewById(R.id.cancel_button); if (mCancelText != null) { cancelButton.setText(mCancelText); } cancelButton.setTextColor(buttonTextColor); cancelButton.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { tryVibrate(); dismiss(); } }); // Enable or disable the AM/PM view. mAmPmHitspace = view.findViewById(R.id.ampm_hitspace); if (mIs24HourMode) { mAmPmTextView.setVisibility(View.GONE); RelativeLayout.LayoutParams paramsSeparator = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); paramsSeparator.addRule(RelativeLayout.CENTER_IN_PARENT); TextView separatorView = (TextView) view.findViewById(R.id.separator); separatorView.setLayoutParams(paramsSeparator); } else { mAmPmTextView.setVisibility(View.VISIBLE); updateAmPmDisplay(mInitialHourOfDay < 12 ? AM : PM); mAmPmHitspace.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { tryVibrate(); int amOrPm = mTimePicker.getIsCurrentlyAmOrPm(); if (amOrPm == AM) { amOrPm = PM; } else if (amOrPm == PM) { amOrPm = AM; } updateAmPmDisplay(amOrPm); mTimePicker.setAmOrPm(amOrPm); } }); } mAllowAutoAdvance = true; setHour(mInitialHourOfDay, true); setMinute(mInitialMinute); // Set up for keyboard mode. mDoublePlaceholderText = res.getString(R.string.time_placeholder); mDeletedKeyFormat = res.getString(R.string.deleted_key); mPlaceholderText = mDoublePlaceholderText.charAt(0); mAmKeyCode = mPmKeyCode = -1; generateLegalTimesTree(); if (mInKbMode) { mTypedTimes = savedInstanceState.getIntegerArrayList(KEY_TYPED_TIMES); tryStartingKbMode(-1); mHourView.invalidate(); } else if (mTypedTimes == null) { mTypedTimes = new ArrayList<Integer>(); } // Set the theme at the end so that the initialize()s above don't counteract the theme. mTimePicker.setTheme(themeColors); // Set the colors for each view based on the theme. view.findViewById(R.id.time_display_background).setBackgroundColor(headerBgColor); view.findViewById(R.id.ok_cancel_buttons_layout).setBackgroundColor(buttonBgColor); view.findViewById(R.id.time_display).setBackgroundColor(headerBgColor); view.findViewById(R.id.time_picker_error_holder).setBackgroundColor(headerBgColor); ((TextView) view.findViewById(R.id.separator)).setTextColor(mUnselectedColor); ((TextView) view.findViewById(R.id.ampm_label)).setTextColor(mUnselectedColor); mTimePicker.setBackgroundColor(bodyBgColor); return view; }