Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit caf5f004 authored by Sam Blitzstein's avatar Sam Blitzstein
Browse files

Enable new time picker for setting alarms.

Change-Id: Ie6c8299b56c04daedeec7e16e506b722e751f818
parent 121b8a59
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

# include res directory from timepicker
datetimepicker_dir := ../../../frameworks/opt/datetimepicker/res
res_dirs := $(datetimepicker_dir) res
LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))

LOCAL_MODULE_TAGS := optional

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
LOCAL_STATIC_JAVA_LIBRARIES += android-opt-datetimepicker

LOCAL_SRC_FILES := $(call all-java-files-under, src)

@@ -15,6 +21,10 @@ LOCAL_OVERRIDES_PACKAGES := AlarmClock
LOCAL_SDK_VERSION := current

LOCAL_PROGUARD_FLAG_FILES := proguard.flags
LOCAL_PROGUARD_FLAG_FILES += ../../../frameworks/opt/datetimepicker/proguard.flags

LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS += --extra-packages com.android.datetimepicker

include $(BUILD_PACKAGE)

+20 −9
Original line number Diff line number Diff line
@@ -62,6 +62,8 @@ import android.widget.Switch;
import android.widget.TextView;
import android.widget.ToggleButton;

import com.android.datetimepicker.time.RadialPickerLayout;
import com.android.datetimepicker.time.TimePickerDialog;
import com.android.deskclock.provider.Alarm;
import com.android.deskclock.provider.DaysOfWeek;
import com.android.deskclock.widget.ActionableToastBar;
@@ -75,7 +77,7 @@ import java.util.HashSet;
 */
public class AlarmClockFragment extends DeskClockFragment implements
        LoaderManager.LoaderCallbacks<Cursor>,
        AlarmTimePickerDialogFragment.AlarmTimePickerDialogHandler,
        TimePickerDialog.OnTimeSetListener,
        DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
    private static final String KEY_EXPANDED_IDS = "expandedIds";
    private static final String KEY_REPEAT_CHECKED_IDS = "repeatCheckedIds";
@@ -230,6 +232,13 @@ public class AlarmClockFragment extends DeskClockFragment implements
            // An external app asked us to create a blank alarm.
            asyncAddAlarm();
        }

        TimePickerDialog tpd = (TimePickerDialog) getActivity().getFragmentManager().
                findFragmentByTag(AlarmUtils.FRAG_TAG_TIME_PICKER);
        if (tpd != null) {
            // The dialog is already open so we need to set the listener again.
            tpd.setOnTimeSetListener(this);
        }
    }

    private void hideUndoBar(boolean animate, MotionEvent event) {
@@ -278,12 +287,12 @@ public class AlarmClockFragment extends DeskClockFragment implements

    // Callback used by AlarmTimePickerDialogFragment
    @Override
    public void onDialogTimeSet(Alarm alarm, int hourOfDay, int minute) {
        alarm.hour = hourOfDay;
        alarm.minutes = minute;
        alarm.enabled = true;
        mScrollToAlarmId = alarm.id;
        asyncUpdateAlarm(alarm, true);
    public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {
        mSelectedAlarm.hour = hourOfDay;
        mSelectedAlarm.minutes = minute;
        mSelectedAlarm.enabled = true;
        mScrollToAlarmId = mSelectedAlarm.id;
        asyncUpdateAlarm(mSelectedAlarm, true);
    }

    private void showLabelDialog(final Alarm alarm) {
@@ -615,8 +624,9 @@ public class AlarmClockFragment extends DeskClockFragment implements
            itemHolder.clock.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mSelectedAlarm = itemHolder.alarm;
                    AlarmUtils.showTimeEditDialog(AlarmClockFragment.this.getFragmentManager(),
                            alarm, AlarmClockFragment.this);
                            alarm, AlarmClockFragment.this, Alarms.get24HourMode(getActivity()));
                    expandAlarm(itemHolder, true);
                    itemHolder.alarmItem.post(mScrollRunnable);
                }
@@ -1281,8 +1291,9 @@ public class AlarmClockFragment extends DeskClockFragment implements
                View view = mAlarmsList.getChildAt(0);
                mAdapter.getView(0, view, mAlarmsList);
                if (showTimePicker) {
                    mSelectedAlarm = alarm;
                    AlarmUtils.showTimeEditDialog(AlarmClockFragment.this.getFragmentManager(),
                            alarm, AlarmClockFragment.this);
                            alarm, AlarmClockFragment.this, Alarms.get24HourMode(getActivity()));
                }
            }
        };
+0 −99
Original line number Diff line number Diff line
/*
 * Copyright (C) 2012 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License
 */

package com.android.deskclock;

import android.app.Activity;
import android.app.DialogFragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.android.deskclock.provider.Alarm;

/**
 * Dialog to set alarm time.
 */
public class AlarmTimePickerDialogFragment extends DialogFragment {

    private static final String KEY_ALARM = "alarm";

    private Button mSet, mCancel;
    private TimePicker mPicker;
    private AlarmTimePickerDialogHandler mListener;

    public static AlarmTimePickerDialogFragment newInstance(Alarm alarm,
            AlarmTimePickerDialogHandler listener) {
        final AlarmTimePickerDialogFragment frag = new AlarmTimePickerDialogFragment();
        Bundle args = new Bundle();
        args.putParcelable(KEY_ALARM, alarm);
        frag.setArguments(args);
        frag.setListener(listener);
        return frag;
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(DialogFragment.STYLE_NO_TITLE, 0);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        final Alarm alarm = getArguments().getParcelable(KEY_ALARM);

        View v = inflater.inflate(R.layout.time_picker_dialog, null);
        mSet = (Button) v.findViewById(R.id.set_button);
        mCancel = (Button) v.findViewById(R.id.cancel_button);
        mCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dismiss();
            }
        });
        mPicker = (TimePicker) v.findViewById(R.id.time_picker);
        mPicker.setSetButton(mSet);
        mSet.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (mListener != null) {
                    mListener.onDialogTimeSet(alarm, mPicker.getHours(), mPicker.getMinutes());
                } else {
                    Log.e("The listener for setting a time was null!");
                }
                dismiss();
            }
        });

        return v;
    }

    private void setListener(AlarmTimePickerDialogHandler listener) {
        mListener = listener;
    }

    interface AlarmTimePickerDialogHandler {
        void onDialogTimeSet(Alarm alarm, int hourOfDay, int minute);
    }
}
+15 −6
Original line number Diff line number Diff line
@@ -22,24 +22,33 @@ import android.app.FragmentTransaction;
import android.content.Context;
import android.widget.Toast;

import com.android.deskclock.AlarmTimePickerDialogFragment.AlarmTimePickerDialogHandler;
import com.android.datetimepicker.time.TimePickerDialog;
import com.android.deskclock.provider.Alarm;

/**
 * Static utility methods for Alarms.
 */
public class AlarmUtils {
    public static final String FRAG_TAG_TIME_PICKER = "time_dialog";

    public static void showTimeEditDialog(FragmentManager manager, final Alarm alarm,
            AlarmTimePickerDialogHandler listener) {
            TimePickerDialog.OnTimeSetListener listener, boolean is24HourMode) {

        TimePickerDialog dialog = TimePickerDialog.newInstance(listener,
                alarm.hour, alarm.minutes, is24HourMode);

        // Make sure the dialog isn't already added.
        manager.executePendingTransactions();
        final FragmentTransaction ft = manager.beginTransaction();
        final Fragment prev = manager.findFragmentByTag("time_dialog");
        final Fragment prev = manager.findFragmentByTag(FRAG_TAG_TIME_PICKER);
        if (prev != null) {
            ft.remove(prev);
        }
        ft.commit();

        final AlarmTimePickerDialogFragment fragment = AlarmTimePickerDialogFragment.newInstance(
                alarm, listener);
        fragment.show(ft, "time_dialog");
        if (dialog != null && !dialog.isAdded()) {
            dialog.show(manager, FRAG_TAG_TIME_PICKER);
        }
    }

    /**