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 DateTimeFieldElements_h
27
#define DateTimeFieldElements_h
29
#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
30
#include "DateTimeNumericFieldElement.h"
31
#include "DateTimeSymbolicFieldElement.h"
35
class DateTimeAMPMFieldElement : public DateTimeSymbolicFieldElement {
36
WTF_MAKE_NONCOPYABLE(DateTimeAMPMFieldElement);
39
static PassRefPtr<DateTimeAMPMFieldElement> create(Document*, FieldOwner&, const Vector<String>&);
42
DateTimeAMPMFieldElement(Document*, FieldOwner&, const Vector<String>&);
44
// DateTimeFieldElement functions.
45
virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
46
virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
47
virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
50
class DateTimeDayFieldElement : public DateTimeNumericFieldElement {
51
WTF_MAKE_NONCOPYABLE(DateTimeDayFieldElement);
54
static PassRefPtr<DateTimeDayFieldElement> create(Document*, FieldOwner&, const String& placeholder);
57
DateTimeDayFieldElement(Document*, FieldOwner&, const String& placeholder);
59
// DateTimeFieldElement functions.
60
virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
61
virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
62
virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
65
// DateTimeHourFieldElement is used for hour field of date time format
66
// supporting following patterns:
71
class DateTimeHourFieldElement : public DateTimeNumericFieldElement {
72
WTF_MAKE_NONCOPYABLE(DateTimeHourFieldElement);
75
static PassRefPtr<DateTimeHourFieldElement> create(Document*, FieldOwner&, int minimum, int maximum);
78
DateTimeHourFieldElement(Document*, FieldOwner&, int minimum, int maximum);
80
// DateTimeFieldElement functions.
81
virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
82
virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
83
virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
84
virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) OVERRIDE FINAL;
85
virtual int valueAsInteger() const OVERRIDE FINAL;
87
const int m_alignment;
90
class DateTimeMillisecondFieldElement : public DateTimeNumericFieldElement {
91
WTF_MAKE_NONCOPYABLE(DateTimeMillisecondFieldElement);
94
static PassRefPtr<DateTimeMillisecondFieldElement> create(Document*, FieldOwner&);
97
DateTimeMillisecondFieldElement(Document*, FieldOwner&);
99
// DateTimeFieldElement functions.
100
virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
101
virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
102
virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
105
class DateTimeMinuteFieldElement : public DateTimeNumericFieldElement {
106
WTF_MAKE_NONCOPYABLE(DateTimeMinuteFieldElement);
109
static PassRefPtr<DateTimeMinuteFieldElement> create(Document*, FieldOwner&);
112
DateTimeMinuteFieldElement(Document*, FieldOwner&);
114
// DateTimeFieldElement functions.
115
virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
116
virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
117
virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
120
class DateTimeMonthFieldElement : public DateTimeNumericFieldElement {
121
WTF_MAKE_NONCOPYABLE(DateTimeMonthFieldElement);
124
static PassRefPtr<DateTimeMonthFieldElement> create(Document*, FieldOwner&, const String& placeholder);
127
DateTimeMonthFieldElement(Document*, FieldOwner&, const String& placeholder);
129
// DateTimeFieldElement functions.
130
virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
131
virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
132
virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
135
class DateTimeSecondFieldElement : public DateTimeNumericFieldElement {
136
WTF_MAKE_NONCOPYABLE(DateTimeSecondFieldElement);
139
static PassRefPtr<DateTimeSecondFieldElement> create(Document*, FieldOwner&);
142
DateTimeSecondFieldElement(Document*, FieldOwner&);
144
// DateTimeFieldElement functions.
145
virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
146
virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
147
virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
150
class DateTimeSymbolicMonthFieldElement : public DateTimeSymbolicFieldElement {
151
WTF_MAKE_NONCOPYABLE(DateTimeSymbolicMonthFieldElement);
154
static PassRefPtr<DateTimeSymbolicMonthFieldElement> create(Document*, FieldOwner&, const Vector<String>&);
157
DateTimeSymbolicMonthFieldElement(Document*, FieldOwner&, const Vector<String>&);
159
// DateTimeFieldElement functions.
160
virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
161
virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
162
virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
165
class DateTimeWeekFieldElement : public DateTimeNumericFieldElement {
166
WTF_MAKE_NONCOPYABLE(DateTimeWeekFieldElement);
169
static PassRefPtr<DateTimeWeekFieldElement> create(Document*, FieldOwner&);
172
DateTimeWeekFieldElement(Document*, FieldOwner&);
174
// DateTimeFieldElement functions.
175
virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
176
virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
177
virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
180
class DateTimeYearFieldElement : public DateTimeNumericFieldElement {
181
WTF_MAKE_NONCOPYABLE(DateTimeYearFieldElement);
194
, minIsSpecified(false)
195
, maxIsSpecified(false)
200
static PassRefPtr<DateTimeYearFieldElement> create(Document*, FieldOwner&, const Parameters&);
203
DateTimeYearFieldElement(Document*, FieldOwner&, const Parameters&);
205
// DateTimeFieldElement functions.
206
virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
207
virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
208
virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) OVERRIDE FINAL;
210
// DateTimeNumericFieldElement functions.
211
virtual int clampValueForHardLimits(int) const OVERRIDE FINAL;
212
virtual int defaultValueForStepDown() const OVERRIDE FINAL;
213
virtual int defaultValueForStepUp() const OVERRIDE FINAL;
215
bool m_minIsSpecified;
216
bool m_maxIsSpecified;
219
} // namespace WebCore