2
* Copyright (C) 2012 Google Inc. All rights reserved.
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions
7
* 1. Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* 2. Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
13
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
14
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16
* ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
17
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26
#ifndef DateTimeFieldsState_h
27
#define DateTimeFieldsState_h
29
#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
30
#include <wtf/text/WTFString.h>
34
class FormControlState;
36
// DateTimeFieldsState represents fields in date/time for form state
37
// save/restore for input type "date", "datetime", "datetime-local", "month",
38
// "time", and "week" with multiple fields input UI.
40
// Each field can contain invalid value for date, e.g. day of month field can
41
// be 30 even if month field is February.
42
class DateTimeFieldsState {
50
static const unsigned emptyValue;
52
DateTimeFieldsState();
54
static DateTimeFieldsState restoreFormControlState(const FormControlState&);
55
FormControlState saveFormControlState() const;
57
AMPMValue ampm() const { return m_ampm; }
58
unsigned dayOfMonth() const { return m_dayOfMonth; }
59
unsigned hour() const { return m_hour; }
60
unsigned hour23() const;
61
unsigned millisecond() const { return m_millisecond; }
62
unsigned minute() const { return m_minute; }
63
unsigned month() const { return m_month; }
64
unsigned second() const { return m_second; }
65
unsigned weekOfYear() const { return m_weekOfYear; }
66
unsigned year() const { return m_year; }
68
bool hasAMPM() const { return m_ampm != AMPMValueEmpty; }
69
bool hasDayOfMonth() const { return m_dayOfMonth != emptyValue; }
70
bool hasHour() const { return m_hour != emptyValue; }
71
bool hasMillisecond() const { return m_millisecond != emptyValue; }
72
bool hasMinute() const { return m_minute != emptyValue; }
73
bool hasMonth() const { return m_month != emptyValue; }
74
bool hasSecond() const { return m_second != emptyValue; }
75
bool hasWeekOfYear() const { return m_weekOfYear != emptyValue; }
76
bool hasYear() const { return m_year != emptyValue; }
78
void setAMPM(AMPMValue ampm) { m_ampm = ampm; }
79
void setDayOfMonth(unsigned dayOfMonth) { m_dayOfMonth = dayOfMonth; }
80
void setHour(unsigned hour12) { m_hour = hour12; }
81
void setMillisecond(unsigned millisecond) { m_millisecond = millisecond; }
82
void setMinute(unsigned minute) { m_minute = minute; }
83
void setMonth(unsigned month) { m_month = month; }
84
void setSecond(unsigned second) { m_second = second; }
85
void setWeekOfYear(unsigned weekOfYear) { m_weekOfYear = weekOfYear; }
86
void setYear(unsigned year) { m_year = year; }
90
unsigned m_month; // 1 to 12.
91
unsigned m_dayOfMonth;
92
unsigned m_hour; // 1 to 12.
95
unsigned m_millisecond;
96
unsigned m_weekOfYear;
100
} // namespace WebCore