24 #include <QStackedWidget>
25 #include <QProgressBar>
26 #include <QToolButton>
28 #include <QGridLayout>
30 #include <QMouseEvent>
34 :
QFrame( parent ), mCurrentItem( NULL )
48 mCountStyleSheet =
QString(
"QProgressBar { border: 1px solid rgba(0, 0, 0, 75%);"
49 " border-radius: 2px; background: rgba(0, 0, 0, 0);"
50 " image: url(:/images/themes/default/%1) }"
51 "QProgressBar::chunk { background-color: rgba(0, 0, 0, 30%); width: 5px; }" );
53 mCountProgress->
setStyleSheet( mCountStyleSheet.
arg(
"mIconTimerPause.png" ) );
56 mCountProgress->
setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
60 mLayout->
addWidget( mCountProgress, 0, 0, 1, 1 );
62 mItemCount =
new QLabel(
this );
65 mItemCount->
setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Preferred );
66 mLayout->
addWidget( mItemCount, 0, 2, 1, 1 );
68 mCloseMenu =
new QMenu(
this );
70 mActionCloseAll =
new QAction(
tr(
"Close all" ),
this );
79 "QToolButton { background-color: rgba(0, 0, 0, 0); }"
80 "QToolButton::menu-button { background-color: rgba(0, 0, 0, 0); }" );
81 mCloseBtn->
setCursor( Qt::PointingHandCursor );
84 mCloseBtn->
setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum );
85 mCloseBtn->
setMenu( mCloseMenu );
88 mLayout->
addWidget( mCloseBtn, 0, 3, 1, 1 );
90 mCountdownTimer =
new QTimer(
this );
92 connect( mCountdownTimer, SIGNAL( timeout() ),
this, SLOT( updateCountdown() ) );
107 if ( mCountProgress ==
childAt( e->
pos() ) && e->
button() == Qt::LeftButton )
111 mCountdownTimer->
stop();
112 mCountProgress->
setStyleSheet( mCountStyleSheet.
arg(
"mIconTimerContinue.png" ) );
116 mCountdownTimer->
start();
117 mCountProgress->
setStyleSheet( mCountStyleSheet.
arg(
"mIconTimerPause.png" ) );
126 if ( item != mCurrentItem && !mItems.
contains( item ) )
129 if ( item == mCurrentItem )
135 mCurrentItem->
hide();
143 showItem( mItems.
first() );
160 if ( !item || !mCurrentItem )
163 if ( item == mCurrentItem )
165 popItem( mCurrentItem );
171 if ( existingItem == item )
197 if ( !mCurrentItem && mItems.
empty() )
200 while ( mItems.
count() > 0 )
206 return !mCurrentItem && mItems.
empty();
233 if ( mCurrentItem != 0 )
236 if ( item == mCurrentItem )
244 mItems.
prepend( mCurrentItem );
246 mCurrentItem->
hide();
251 mCurrentItem->
show();
258 mCountdownTimer->
start();
314 void QgsMessageBar::updateCountdown()
321 if ( mCountProgress->
value() < 2 )
331 void QgsMessageBar::resetCountdown()
334 mCountdownTimer->
stop();
336 mCountProgress->
setStyleSheet( mCountStyleSheet.
arg(
"mIconTimerPause.png" ) );
340 void QgsMessageBar::updateItemCount()
345 mCloseBtn->
setMenu( mItems.
count() > 0 ? mCloseMenu : 0 );
346 mCloseBtn->
setPopupMode( mItems.
count() > 0 ? QToolButton::MenuButtonPopup : QToolButton::DelayedPopup );
void setInterval(int msec)
void setBrush(ColorRole role, const QBrush &brush)
void pushMessage(const QString &text, MessageLevel level=INFO, int duration=0)
convenience method for pushing a message to the bar
void setContentsMargins(int left, int top, int right, int bottom)
void mousePressEvent(QMouseEvent *e) override
void pushInfo(const QString &title, const QString &message)
Pushes a information message with default timeout to the message bar.
void setFrameShape(Shape)
void widgetRemoved(QgsMessageBarItem *item)
emitted when a message widget was removed from the bar
static QIcon getThemeIcon(const QString &theName)
Helper to get a theme icon.
bool disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)
QString tr(const char *sourceText, const char *disambiguation, int n)
void pushSuccess(const QString &title, const QString &message)
Pushes a success message with default timeout to the message bar.
void pushWarning(const QString &title, const QString &message)
Pushes a warning with default timeout to the message bar.
int count(const T &value) const
static QgsMessageBarItem * createMessage(const QString &text, QWidget *parent=0)
make out a widget containing a message to be displayed on the bar
void setObjectName(const QString &name)
int duration() const
returns the duration in second of the message
void widgetAdded(QgsMessageBarItem *item)
emitted when a message widget is added to the bar
void setText(const QString &)
bool contains(const T &value) const
void setFrameShadow(Shadow)
QgsMessageBarItem * pushWidget(QWidget *widget, MessageLevel level=INFO, int duration=0)
QString getStyleSheet()
returns the styleSheet
void pushItem(QgsMessageBarItem *item)
Display a message item on the bar after hiding the currently visible one and putting it in a stack...
QgsMessageBarItem * setLevel(QgsMessageBar::MessageLevel level)
QgsMessageBarItem * setDuration(int duration)
QgsMessageBar(QWidget *parent=0)
void prepend(const T &value)
const QPoint & pos() const
const QBrush & window() const
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
void setTextVisible(bool visible)
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
void setRange(int minimum, int maximum)
bool removeOne(const T &value)
void pushCritical(const QString &title, const QString &message)
Pushes a critical warning with default timeout to the message bar.