OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | |
3 * | |
4 * Redistribution and use in source and binary forms, with or without | |
5 * modification, are permitted provided that the following conditions | |
6 * are met: | |
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. | |
12 * | |
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 | |
23 * SUCH DAMAGE. | |
24 */ | |
25 | |
26 #ifndef DateTimeFieldsState_h | |
27 #define DateTimeFieldsState_h | |
28 | |
29 #if ENABLE(INPUT_MULTIPLE_FIELDS_UI) | |
30 | |
31 namespace WebCore { | |
32 | |
33 class FormControlState; | |
34 | |
35 // DateTimeFieldsState represents fields in date/time for form state | |
36 // save/restore for input type "date", "datetime", "datetime-local", "month", | |
37 // "time", and "week" with multiple fields input UI. | |
38 // | |
39 // Each field can contain invalid value for date, e.g. day of month field can | |
40 // be 30 even if month field is February. | |
41 class DateTimeFieldsState { | |
42 public: | |
43 enum AMPMValue { | |
44 AMPMValueEmpty = -1, | |
45 AMPMValueAM, | |
46 AMPMValuePM, | |
47 }; | |
48 | |
49 static const unsigned emptyValue; | |
50 | |
51 DateTimeFieldsState(); | |
52 | |
53 static DateTimeFieldsState restoreFormControlState(const FormControlState&); | |
54 FormControlState saveFormControlState() const; | |
55 | |
56 AMPMValue ampm() const { return m_ampm; } | |
57 unsigned dayOfMonth() const { return m_dayOfMonth; } | |
58 unsigned hour() const { return m_hour; } | |
59 unsigned hour23() const; | |
60 unsigned millisecond() const { return m_millisecond; } | |
61 unsigned minute() const { return m_minute; } | |
62 unsigned month() const { return m_month; } | |
63 unsigned second() const { return m_second; } | |
64 unsigned weekOfYear() const { return m_weekOfYear; } | |
65 unsigned year() const { return m_year; } | |
66 | |
67 bool hasAMPM() const { return m_ampm != AMPMValueEmpty; } | |
68 bool hasDayOfMonth() const { return m_dayOfMonth != emptyValue; } | |
69 bool hasHour() const { return m_hour != emptyValue; } | |
70 bool hasMillisecond() const { return m_millisecond != emptyValue; } | |
71 bool hasMinute() const { return m_minute != emptyValue; } | |
72 bool hasMonth() const { return m_month != emptyValue; } | |
73 bool hasSecond() const { return m_second != emptyValue; } | |
74 bool hasWeekOfYear() const { return m_weekOfYear != emptyValue; } | |
75 bool hasYear() const { return m_year != emptyValue; } | |
76 | |
77 void setAMPM(AMPMValue ampm) { m_ampm = ampm; } | |
78 void setDayOfMonth(unsigned dayOfMonth) { m_dayOfMonth = dayOfMonth; } | |
79 void setHour(unsigned hour12) { m_hour = hour12; } | |
80 void setMillisecond(unsigned millisecond) { m_millisecond = millisecond; } | |
81 void setMinute(unsigned minute) { m_minute = minute; } | |
82 void setMonth(unsigned month) { m_month = month; } | |
83 void setSecond(unsigned second) { m_second = second; } | |
84 void setWeekOfYear(unsigned weekOfYear) { m_weekOfYear = weekOfYear; } | |
85 void setYear(unsigned year) { m_year = year; } | |
86 | |
87 private: | |
88 unsigned m_year; | |
89 unsigned m_month; // 1 to 12. | |
90 unsigned m_dayOfMonth; | |
91 unsigned m_hour; // 1 to 12. | |
92 unsigned m_minute; | |
93 unsigned m_second; | |
94 unsigned m_millisecond; | |
95 unsigned m_weekOfYear; | |
96 AMPMValue m_ampm; | |
97 }; | |
98 | |
99 } // namespace WebCore | |
100 | |
101 #endif | |
102 #endif | |
OLD | NEW |