25 #include <QDateTimeEdit> 28 #include <QTextCharFormat> 29 #include <QCalendarWidget> 40 widget->
setDateTime( QDateTime::currentDateTime() );
49 mQgsDateTimeEdit = qgsEditor;
54 QDateTimeEdit *qtEditor =
dynamic_cast<QDateTimeEdit *
>( editor );
57 mQDateTimeEdit = qtEditor;
60 if ( !mQDateTimeEdit )
62 QgsDebugMsg( QStringLiteral(
"Date/time edit widget could not be initialized because provided widget is not a QDateTimeEdit." ) );
68 mQDateTimeEdit->setDisplayFormat( displayFormat );
70 const bool calendar =
config( QStringLiteral(
"calendar_popup" ),
true ).toBool();
71 if ( calendar != mQDateTimeEdit->calendarPopup() )
73 mQDateTimeEdit->setCalendarPopup( calendar );
75 if ( calendar && mQDateTimeEdit->calendarWidget() )
78 QTextCharFormat todayFormat;
79 todayFormat.setBackground( QColor( 160, 180, 200 ) );
80 mQDateTimeEdit->calendarWidget()->setDateTextFormat( QDate::currentDate(), todayFormat );
83 const bool allowNull =
config( QStringLiteral(
"allow_null" ),
true ).toBool();
84 if ( mQgsDateTimeEdit )
91 "For that the QGIS custom widget QgsDateTimeEdit needs to be used." ),
92 tr(
"field widgets" ) );
95 if ( mQgsDateTimeEdit )
101 connect( mQDateTimeEdit, &QDateTimeEdit::dateTimeChanged,
this, &QgsDateTimeEditWrapper::dateTimeChanged );
107 return mQgsDateTimeEdit || mQDateTimeEdit;
112 if ( mQgsDateTimeEdit )
116 void QgsDateTimeEditWrapper::dateTimeChanged(
const QDateTime &dateTime )
118 switch (
field().type() )
120 case QVariant::DateTime:
139 if ( !dateTime.isValid() || dateTime.isNull() )
148 const bool fieldIsoFormat =
config( QStringLiteral(
"field_iso_format" ),
false ).toBool();
150 if ( fieldIsoFormat )
171 if ( !mQDateTimeEdit )
172 return QVariant(
field().type() );
175 if ( mQgsDateTimeEdit )
177 dateTime = mQgsDateTimeEdit->
dateTime();
181 dateTime = mQDateTimeEdit->dateTime();
184 switch (
field().type() )
186 case QVariant::DateTime:
189 return dateTime.date();
191 return dateTime.time();
193 const bool fieldIsoFormat =
config( QStringLiteral(
"field_iso_format" ),
false ).toBool();
195 if ( fieldIsoFormat )
197 return dateTime.toString( Qt::ISODate );
201 return dateTime.toString( fieldFormat );
204 #ifndef _MSC_VER // avoid warnings 209 void QgsDateTimeEditWrapper::updateValues(
const QVariant &
value,
const QVariantList & )
211 if ( !mQDateTimeEdit )
215 switch (
field().type() )
217 case QVariant::DateTime:
220 dateTime =
value.toDateTime();
223 const bool fieldIsoFormat =
config( QStringLiteral(
"field_iso_format" ),
false ).toBool();
225 if ( fieldIsoFormat )
227 dateTime = QDateTime::fromString(
value.toString(), Qt::ISODate );
231 dateTime = QDateTime::fromString(
value.toString(), fieldFormat );
236 if ( mQgsDateTimeEdit )
242 mQDateTimeEdit->setDateTime( dateTime );
248 if ( !mQDateTimeEdit )
251 mQDateTimeEdit->setEnabled( enabled );
QWidget * createWidget(QWidget *parent) override
This method should create a new widget with the provided parent.
#define Q_NOWARN_DEPRECATED_PUSH
QVariant value() const override
Will be used to access the widget's value.
static QgsMessageLog * messageLog()
Returns the application's message log.
void setEnabled(bool enabled) override
static void logMessage(const QString &message, const QString &tag=QString(), Qgis::MessageLevel level=Qgis::Warning, bool notifyUser=true)
Adds a message to the log instance (and creates it if necessary).
void initWidget(QWidget *editor) override
This method should initialize the editor widget with runtime data.
#define Q_NOWARN_DEPRECATED_POP
bool valid() const override
Returns true if the widget has been properly initialized.
void valueChanged(const QDateTime &date)
Signal emitted whenever the value changes.
QgsDateTimeEditWrapper(QgsVectorLayer *layer, int fieldIdx, QWidget *editor, QWidget *parent=nullptr)
Constructor for QgsDateTimeEditWrapper.
void showIndeterminateState() override
Sets the widget to display in an indeterminate "mixed value" state.
void setEmpty()
Resets the widget to show no value (ie, an "unknown" state).
void setAllowNull(bool allowNull)
Determines if the widget allows setting null date/time.
void setDateTime(const QDateTime &dateTime)
Set the date time in the widget and handles null date times.
Represents a vector layer which manages a vector based data sets.
QDateTime dateTime() const
Returns the date time which can be a null date/time.
The QgsDateTimeEdit class is a QDateTimeEdit with the capability of setting/reading null date/times...