Skip to content
Permalink
Browse files

Merge pull request #5992 from 3nids/fix17790

fix NULL constraint on date/time widget with allow NULL
  • Loading branch information
3nids committed Jan 5, 2018
2 parents ed2f056 + 42976df commit 333347b9a0216ec3babec885277a2a6f1816582e
@@ -12,6 +12,13 @@ class QgsDateTimeEdit : QDateTimeEdit
{
%Docstring
The QgsDateTimeEdit class is a QDateTimeEdit with the capability of setting/reading null date/times.

.. warning::

You should use the signal valueChanged of this subclass
rather than QDateTimeEdit.dateTimeChanged. If you consequently connect parent's
dateTimeChanged signal and call dateTime() afterwards there is no warranty to
have a proper NULL value handling.
%End

%TypeHeaderCode
@@ -63,6 +70,14 @@ Set the current date as NULL
Resets the widget to show no value (ie, an "unknown" state).

.. versionadded:: 2.16
%End

signals:

void valueChanged( const QDateTime &date );
%Docstring
signal emitted whenever the value changes.
@param date the new date/time value.
%End

protected:
@@ -62,7 +62,11 @@ void QgsDateTimeEdit::clear()

changed( QDateTime() );

// avoid slot double activation
// emit signal of QDateTime::dateTimeChanged with an invalid date
// anyway, using parent's signal should be avoided
// If you consequently connect parent's dateTimeChanged signal
// and call dateTime() afterwards there is no warranty to
// have a proper NULL value handling
disconnect( this, &QDateTimeEdit::dateTimeChanged, this, &QgsDateTimeEdit::changed );
emit dateTimeChanged( QDateTime() );
connect( this, &QDateTimeEdit::dateTimeChanged, this, &QgsDateTimeEdit::changed );
@@ -174,6 +178,8 @@ void QgsDateTimeEdit::changed( const QDateTime &dateTime )
}

mClearAction->setVisible( mAllowNull && !mIsNull );

emit QgsDateTimeEdit::valueChanged( dateTime );
}

void QgsDateTimeEdit::displayNull( bool updateCalendar )
@@ -23,6 +23,11 @@
/**
* \ingroup gui
* \brief The QgsDateTimeEdit class is a QDateTimeEdit with the capability of setting/reading null date/times.
*
* \warning You should use the signal valueChanged of this subclass
* rather than QDateTimeEdit::dateTimeChanged. If you consequently connect parent's
* dateTimeChanged signal and call dateTime() afterwards there is no warranty to
* have a proper NULL value handling.
*/
class GUI_EXPORT QgsDateTimeEdit : public QDateTimeEdit
{
@@ -62,6 +67,14 @@ class GUI_EXPORT QgsDateTimeEdit : public QDateTimeEdit
*/
void setEmpty();

signals:

/**
* signal emitted whenever the value changes.
* @param date the new date/time value.
*/
void valueChanged( const QDateTime &date );

protected:
void mousePressEvent( QMouseEvent *event ) override;
void focusOutEvent( QFocusEvent *event ) override;
@@ -93,7 +93,7 @@ void QgsDateTimeEditWrapper::initWidget( QWidget *editor )

if ( mQgsDateTimeEdit )
{
connect( mQgsDateTimeEdit, &QDateTimeEdit::dateTimeChanged, this, &QgsDateTimeEditWrapper::dateTimeChanged );
connect( mQgsDateTimeEdit, &QgsDateTimeEdit::valueChanged, this, &QgsDateTimeEditWrapper::dateTimeChanged );
}
else
{

0 comments on commit 333347b

Please sign in to comment.
You can’t perform that action at this time.