/* * Copyright (C) 2012 The CyanogenMod 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.settings.cyanogenmod; import java.util.Calendar; import java.util.Date; import android.app.TimePickerDialog; import android.content.Context; import android.preference.Preference; import android.text.format.DateFormat; import android.util.AttributeSet; import android.view.View; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.TimePicker; import com.android.settings.R; public class TimeRangePreference extends Preference implements View.OnClickListener { private static final String TAG = TimeRangePreference.class.getSimpleName(); private static final int DIALOG_START_TIME = 1; private static final int DIALOG_END_TIME = 2; private TextView mStartTimeText; private TextView mEndTimeText; private int mStartTime; private int mEndTime; /** * @param context * @param attrs */ public TimeRangePreference(Context context, AttributeSet attrs) { super(context, attrs); init(); } /** * @param context * @param stime * @param etime */ public TimeRangePreference(Context context, int stime, int etime) { super(context); mStartTime = stime; mEndTime = etime; init(); } @Override protected void onBindView(View view) { super.onBindView(view); View startTimeLayout = view.findViewById(R.id.start_time); if ((startTimeLayout != null) && startTimeLayout instanceof LinearLayout) { startTimeLayout.setOnClickListener(this); } View endTimeLayout = view.findViewById(R.id.end_time); if ((endTimeLayout != null) && endTimeLayout instanceof LinearLayout) { endTimeLayout.setOnClickListener(this); } mStartTimeText = (TextView) view.findViewById(R.id.start_time_text); mEndTimeText = (TextView) view.findViewById(R.id.end_time_text); updatePreferenceViews(); } private void init() { setLayoutResource(R.layout.preference_time_range); } private void updatePreferenceViews() { if (mStartTimeText != null) { mStartTimeText.setText(returnTime(mStartTime)); } if (mEndTimeText != null) { mEndTimeText.setText(returnTime(mEndTime)); } } public void setStartTime(int time) { mStartTime = time; updatePreferenceViews(); } public void setEndTime(int time) { mEndTime = time; updatePreferenceViews(); } public void setTimeRange(int stime, int etime) { mStartTime = stime; mEndTime = etime; updatePreferenceViews(); } public int getStartTime() { return(mStartTime); } public int getEndTime() { return(mEndTime); } @Override public void onClick(android.view.View v) { if (v != null) { if (R.id.start_time == v.getId()) { TimePicker(DIALOG_START_TIME); } else if (R.id.end_time == v.getId()) { TimePicker(DIALOG_END_TIME); } } } private void TimePicker(final int key) { int hour; int minutes; int value = (key == DIALOG_START_TIME ? mStartTime : mEndTime); if (value < 0) { Calendar calendar = Calendar.getInstance(); hour = calendar.get(Calendar.HOUR_OF_DAY); minutes = calendar.get(Calendar.MINUTE); } else { hour = value / 60; minutes = value % 60; } Context context = getContext(); TimePickerDialog dlg = new TimePickerDialog(context, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker v, int hours, int minutes) { int time = hours * 60 + minutes; if (key == DIALOG_START_TIME) { mStartTime = time; mStartTimeText.setText(returnTime(time)); } else { mEndTime = time; mEndTimeText.setText(returnTime(time)); } callChangeListener(this); }; }, hour, minutes, DateFormat.is24HourFormat(context)); dlg.show(); } private String returnTime(int t) { if (t < 0) { return ""; } int hr = t; int mn = t; hr = hr / 60; mn = mn % 60; Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, hr); cal.set(Calendar.MINUTE, mn); Date date = cal.getTime(); return DateFormat.getTimeFormat(getContext()).format(date); } }