/* * Copyright (c) 2011 Denis Solonenko. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v2.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html */ package ru.orangesoftware.financisto2.dialog; import android.content.Context; import android.preference.DialogPreference; import android.util.AttributeSet; import android.view.View; import android.widget.TimePicker; import ru.orangesoftware.financisto2.R; import static ru.orangesoftware.financisto2.datetime.DateUtils.is24HourFormat; /** * Created by IntelliJ IDEA. * User: Denis Solonenko * Date: 12/17/11 1:59 AM */ public class TimePreference extends DialogPreference implements TimePicker.OnTimeChangedListener { private static final int DEFAULT_VALUE = 600; private int hh; private int mm; public TimePreference(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setPersistent(true); } public TimePreference(Context context, AttributeSet attrs) { super(context, attrs); setPersistent(true); } @Override protected View onCreateDialogView() { Context context = getContext(); TimePicker timePicker = new TimePicker(context); timePicker.setIs24HourView(is24HourFormat(context)); timePicker.setOnTimeChangedListener(this); timePicker.setCurrentHour(getHour()); timePicker.setCurrentMinute(getMinute()); return timePicker; } @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); if (!positiveResult) { return; } if (shouldPersist()) { persistInt(100*hh+mm); } notifyChanged(); } private int getHour() { return getPersistedInt(DEFAULT_VALUE)/100; } private int getMinute() { int hm = getPersistedInt(DEFAULT_VALUE); int h = hm/100; return hm-100*h; } @Override public void onTimeChanged(TimePicker timePicker, int hh, int mm) { this.hh = hh; this.mm = mm; } @Override public CharSequence getSummary() { return getContext().getString(R.string.auto_backup_time_summary, getHour(), getMinute()); } }