Allow message bar items to be dismissed from QgsMessageBarItem

This commit is contained in:
Nyall Dawson 2018-10-25 08:31:24 +10:00
parent 0a02432b0c
commit 124f738188
4 changed files with 37 additions and 0 deletions

View File

@ -82,6 +82,17 @@ returns the duration in second of the message
QString getStyleSheet();
%Docstring
returns the styleSheet
%End
public slots:
void dismiss();
%Docstring
Dismisses the item, removing it from the message bar and deleting
it. Calling this on items which have not been added to a message bar
has no effect.
.. versionadded:: 3.4
%End
signals:

View File

@ -267,6 +267,9 @@ void QgsMessageBar::showItem( QgsMessageBarItem *item )
void QgsMessageBar::pushItem( QgsMessageBarItem *item )
{
resetCountdown();
item->mMessageBar = this;
// avoid duplicated widget
popWidget( item );
showItem( item );

View File

@ -269,6 +269,14 @@ QgsMessageBarItem *QgsMessageBarItem::setDuration( int duration )
return this;
}
void QgsMessageBarItem::dismiss()
{
if ( !mMessageBar )
return;
mMessageBar->popWidget( this );
}
void QgsMessageBarItem::urlClicked( const QUrl &url )
{
QFileInfo file( url.toLocalFile() );

View File

@ -27,6 +27,7 @@
class QTextBrowser;
class QLabel;
class QgsMessageBar;
/**
* \ingroup gui
@ -91,6 +92,17 @@ class GUI_EXPORT QgsMessageBarItem : public QWidget
//! returns the styleSheet
QString getStyleSheet() { return mStyleSheet; }
public slots:
/**
* Dismisses the item, removing it from the message bar and deleting
* it. Calling this on items which have not been added to a message bar
* has no effect.
*
* \since QGIS 3.4
*/
void dismiss();
signals:
//! emitted when the message level has changed
void styleChanged( const QString &styleSheet );
@ -112,6 +124,9 @@ class GUI_EXPORT QgsMessageBarItem : public QWidget
QLabel *mLblIcon = nullptr;
QString mStyleSheet;
QTextBrowser *mTextBrowser = nullptr;
QgsMessageBar *mMessageBar = nullptr;
friend class QgsMessageBar;
};
#endif // qgsmessagebaritem_H