From: Andrey Paskal Date: Sat, 5 Jul 2008 11:21:08 +0000 (+0400) Subject: Добился раскраски рамки поля ввода при валидации. X-Git-Url: https://gitweb.ananas.su/?a=commitdiff_plain;h=9ecd720f3d6a362d30ea44f6f95c0f377b5c9b43;p=projects%2Fananas-labs.git Добился раскраски рамки поля ввода при валидации. Проверено под Linux/Gnome. TODO: Проверить под Windows. --- diff --git a/src/plugins/wfield.cpp b/src/plugins/wfield.cpp index f05ddc1..1ee2549 100644 --- a/src/plugins/wfield.cpp +++ b/src/plugins/wfield.cpp @@ -84,6 +84,9 @@ wField::wField( QWidget *parent, const char *name, WFlags fl ) checkBox = new wCheckBox(this); checkBox->hide(); vEditorType = Unknown; + defaultLineEditFrameMargin = lineEdit->margin(); + defaultLineEditPalette = lineEdit->palette(); + defaultLineEditFrameStyle = lineEdit->frameStyle(); } /* wField::wField( QWidget *parent, const char *name, WFlags fl, bool dbf ) @@ -369,27 +372,41 @@ wField::setValue(const QDate& newDate) void wField::Validate(const QString &test) { + int p = 0; QString s = test; + // restore LineEdit color state + lineEdit->setPalette( defaultLineEditPalette ); + lineEdit->setMargin( defaultLineEditFrameMargin ); + lineEdit->setFrameStyle( defaultLineEditFrameStyle ); + + if ( test.isNull() || test.isEmpty() ) return; + QPalette pal = lineEdit->palette(); switch ( v->validate(s, p) ) { case QValidator::Invalid: - pal.setColor(QColorGroup::Highlight, Qt::red); + lineEdit->setFrameStyle(QFrame::Box); + lineEdit->setMargin(2); + pal.setColor(QPalette::Active, QColorGroup::Light, Qt::red); lineEdit->setPalette(pal); emit inputInvalid(); break; case QValidator::Intermediate: + lineEdit->setFrameStyle(QFrame::Box); + lineEdit->setMargin(2); if (two_state == 0) { - pal.setColor(QColorGroup::Highlight, Qt::yellow); + pal.setColor(QPalette::Active, QColorGroup::Light, Qt::yellow); }else{ - pal.setColor(QColorGroup::Highlight, Qt::red); + pal.setColor(QPalette::Active, QColorGroup::Light, Qt::red); } lineEdit->setPalette(pal); setValue( test ); break; case QValidator::Acceptable: - pal.setColor(QColorGroup::Highlight, Qt::green); + lineEdit->setFrameStyle(QFrame::Box); + lineEdit->setMargin(2); + pal.setColor(QPalette::Active, QColorGroup::Light, Qt::green); lineEdit->setPalette(pal); setValue( test ); break; diff --git a/src/plugins/wfield.h b/src/plugins/wfield.h index edf58e8..b173127 100644 --- a/src/plugins/wfield.h +++ b/src/plugins/wfield.h @@ -129,6 +129,11 @@ private: int loaded; int md_oid, md_fid; void popupCalendar(QDateEdit *dateEdit); +// QColorGroup::ColorRole defaultFrameBorderLightColor; +// QColorGroup::ColorRole defaultFrameBorderDarkColor; + QPalette defaultLineEditPalette; + int defaultLineEditFrameMargin; + int defaultLineEditFrameStyle; }; class wCatButton: public QPushButton