27#include <qcalendarwidget.h>
29#include "moc_qgsdatetimesearchwidgetwrapper.cpp"
31using namespace Qt::StringLiterals;
53 QMetaType::Type fieldType = QMetaType::QString;
56 fieldType = vl->fields().at(
mFieldIdx ).type();
61 case QMetaType::Type::QDateTime:
62 return mDateTimeEdit->dateTime();
63 case QMetaType::Type::QDate:
64 return mDateTimeEdit->date();
65 case QMetaType::Type::QTime:
66 return mDateTimeEdit->time();
72 const bool fieldIsoFormat =
config( u
"field_iso_format"_s,
false ).toBool();
76 return mDateTimeEdit->dateTime().toString( Qt::ISODate );
80 return mDateTimeEdit->dateTime().toString( fieldFormat );
102 return fieldName +
" IS NULL";
104 return fieldName +
" IS NOT NULL";
106 const QVariant v =
value();
113 case QMetaType::Type::QDateTime:
114 valuePart = u
"to_datetime('%1')"_s.arg( v.toDateTime().toString( Qt::ISODate ) );
116 case QMetaType::Type::QDate:
117 valuePart = u
"to_date('%1')"_s.arg( v.toDate().toString( Qt::ISODate ) );
119 case QMetaType::Type::QTime:
120 valuePart = u
"to_time('%1')"_s.arg( v.toTime().toString( Qt::ISODate ) );
128 return fieldName +
"=" + valuePart;
130 return fieldName +
"<>" + valuePart;
132 return fieldName +
">" + valuePart;
134 return fieldName +
"<" + valuePart;
136 return fieldName +
">=" + valuePart;
138 return fieldName +
"<=" + valuePart;
147 mDateTimeEdit->setEmpty();
155 mDateTimeEdit->setEnabled( enabled );
167 const QMetaType::Type fieldType = field.
type();
168 const QString fieldName = field.
name();
171 case QMetaType::Type::QDateTime:
174 case QMetaType::Type::QDate:
177 case QMetaType::Type::QTime:
186void QgsDateTimeSearchWidgetWrapper::dateTimeChanged(
const QDateTime &dt )
190 const QVariant v =
value();
191 QString valueAsString;
192 switch ( v.userType() )
194 case QMetaType::Type::QDateTime:
195 valueAsString = v.toDateTime().toString( Qt::ISODate );
197 case QMetaType::Type::QDate:
198 valueAsString = v.toDate().toString( Qt::ISODate );
200 case QMetaType::Type::QTime:
201 valueAsString = v.toTime().toString( Qt::ISODate );
204 valueAsString = v.toString();
209 if ( dt.isValid() && !dt.isNull() )
226 mDateTimeEdit = qobject_cast<QgsDateTimeEdit *>( editor );
230 mDateTimeEdit->setAllowNull(
false );
233 mDateTimeEdit->setDisplayFormat( displayFormat );
235 const bool calendar =
config( u
"calendar_popup"_s,
false ).toBool();
236 mDateTimeEdit->setCalendarPopup( calendar );
237 if ( calendar && mDateTimeEdit->calendarWidget() )
240 QTextCharFormat todayFormat;
241 todayFormat.setBackground( QColor( 160, 180, 200 ) );
242 mDateTimeEdit->calendarWidget()->setDateTextFormat( QDate::currentDate(), todayFormat );
245 mDateTimeEdit->setEmpty();
247 connect( mDateTimeEdit, &QDateTimeEdit::dateTimeChanged,
this, &QgsDateTimeSearchWidgetWrapper::dateTimeChanged );
A QDateTimeEdit with the capability of setting/reading null date/times.
static QString quotedString(QString text)
Returns a quoted version of a string (in single quotes).
static QString createFieldEqualityExpression(const QString &fieldName, const QVariant &value, QMetaType::Type fieldType=QMetaType::Type::UnknownType)
Create an expression allowing to evaluate if a field is equal to a value.
static QString quotedColumnRef(QString name)
Returns a quoted column reference (in double quotes).
Encapsulate a field in an attribute table or data source.
QgsField at(int i) const
Returns the field at particular index (must be in range 0..N-1).
Represents a vector layer which manages a vector based dataset.