@@ -49,11 +49,11 @@ int QgsAttributeForm::sFormCounter = 0;
49
49
50
50
QgsAttributeForm::QgsAttributeForm ( QgsVectorLayer* vl, const QgsFeature &feature, const QgsAttributeEditorContext &context, QWidget* parent )
51
51
: QWidget( parent )
52
- , mInvalidConstraintMessageBarItem( nullptr )
53
52
, mLayer( vl )
54
53
, mMessageBar( nullptr )
55
54
, mMultiEditUnsavedMessageBarItem( nullptr )
56
55
, mMultiEditMessageBarItem( nullptr )
56
+ , mInvalidConstraintMessage( nullptr )
57
57
, mContext( context )
58
58
, mButtonBox( nullptr )
59
59
, mSearchButtonBox( nullptr )
@@ -762,29 +762,29 @@ bool QgsAttributeForm::currentFormFeature( QgsFeature &feature )
762
762
763
763
void QgsAttributeForm::clearInvalidConstraintsMessage ()
764
764
{
765
- if ( mInvalidConstraintMessageBarItem != nullptr )
766
- {
767
- mMessageBar ->popWidget ( mInvalidConstraintMessageBarItem );
768
- mInvalidConstraintMessageBarItem = nullptr ;
769
- }
765
+ mInvalidConstraintMessage ->clear ();
766
+ mInvalidConstraintMessage ->setStyleSheet ( " " );
770
767
}
771
768
772
769
void QgsAttributeForm::displayInvalidConstraintMessage ( const QStringList &f,
773
770
const QStringList &d )
774
771
{
775
772
clearInvalidConstraintsMessage ();
776
773
777
- // show only the third first error
774
+ // show only the third first errors (to avoid a too long label)
778
775
int max = 3 ;
779
776
int size = f.size () > max ? max : f.size ();
780
777
QString descriptions;
781
778
for ( int i = 0 ; i < size; i++ )
782
- descriptions += " <br />- " + f[i] + " : " + d[i];
779
+ descriptions += QString ( " <li>%1: <i>%2</i></li>" ).arg ( f[i] ).arg ( d[i] );
780
+
781
+ QString icPath = QgsApplication::iconPath ( " /mIconWarn.png" );
783
782
784
- mInvalidConstraintMessageBarItem =
785
- new QgsMessageBarItem ( tr ( " Invalid fields: " ),
786
- descriptions, QgsMessageBar::WARNING );
787
- mMessageBar ->pushItem ( mInvalidConstraintMessageBarItem );
783
+ QString title = QString ( " <img src=\" %1\" > <b>%2:" ).arg ( icPath ).arg ( tr ( " Invalid fields" ) );
784
+ QString msg = QString ( " %1</b><ul>%2</ul>" ).arg ( title ).arg ( descriptions ) ;
785
+
786
+ mInvalidConstraintMessage ->setText ( msg );
787
+ mInvalidConstraintMessage ->setStyleSheet ( " QLabel { background-color : #ffc800; }" );
788
788
}
789
789
790
790
bool QgsAttributeForm::currentFormValidConstraints ( QStringList &invalidFields,
@@ -1025,6 +1025,10 @@ void QgsAttributeForm::init()
1025
1025
mMessageBar = new QgsMessageBar ( this );
1026
1026
mMessageBar ->setSizePolicy ( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed );
1027
1027
vl->addWidget ( mMessageBar );
1028
+
1029
+ mInvalidConstraintMessage = new QLabel ( this );
1030
+ vl->addWidget ( mInvalidConstraintMessage );
1031
+
1028
1032
setLayout ( vl );
1029
1033
1030
1034
// Get a layout
0 commit comments