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 );
169 const QMetaType::Type fieldType = field.
type();
170 const QString fieldName = field.
name();
173 case QMetaType::Type::QDateTime:
176 case QMetaType::Type::QDate:
179 case QMetaType::Type::QTime:
188void QgsDateTimeSearchWidgetWrapper::dateTimeChanged(
const QDateTime &dt )
192 const QVariant v =
value();
193 QString valueAsString;
194 switch ( v.userType() )
196 case QMetaType::Type::QDateTime:
197 valueAsString = v.toDateTime().toString( Qt::ISODate );
199 case QMetaType::Type::QDate:
200 valueAsString = v.toDate().toString( Qt::ISODate );
202 case QMetaType::Type::QTime:
203 valueAsString = v.toTime().toString( Qt::ISODate );
206 valueAsString = v.toString();
211 if ( dt.isValid() && !dt.isNull() )
228 mDateTimeEdit = qobject_cast<QgsDateTimeEdit *>( editor );
232 mDateTimeEdit->setAllowNull(
false );
235 mDateTimeEdit->setDisplayFormat( displayFormat );
237 const bool calendar =
config( u
"calendar_popup"_s,
false ).toBool();
238 mDateTimeEdit->setCalendarPopup( calendar );
239 if ( calendar && mDateTimeEdit->calendarWidget() )
242 QTextCharFormat todayFormat;
243 todayFormat.setBackground( QColor( 160, 180, 200 ) );
244 mDateTimeEdit->calendarWidget()->setDateTextFormat( QDate::currentDate(), todayFormat );
247 mDateTimeEdit->setEmpty();
249 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.