- QFontMetrics fontMetrics(font());
- QRect bounds(fontMetrics.boundingRect(0, 0, availableWidth, height(),
- Qt::AlignVCenter | Qt::TextWordWrap,
- m_text));
- int requiredHeight = bounds.height();
- if (requiredHeight < m_minTextHeight) {
- requiredHeight = m_minTextHeight;
- }
- setMinimumHeight(requiredHeight);
- updateGeometry();
+ updateCloseButtonPosition();
+}
+
+int StatusBarMessageLabel::availableTextWidth() const
+{
+ const int buttonWidth = (m_type == DolphinStatusBar::Error) ?
+ m_closeButton->width() + BorderGap : 0;
+ return width() - m_pixmap.width() - (BorderGap * 4) - buttonWidth;
+}
+
+void StatusBarMessageLabel::updateCloseButtonPosition()
+{
+ const int x = width() - m_closeButton->width() - BorderGap;
+ const int y = (height() - m_closeButton->height()) / 2;
+ m_closeButton->move(x, y);
+}
+
+void StatusBarMessageLabel::closeErrorMessage()
+{
+ if (!showPendingMessage()) {
+ reset();
+ setMessage(m_defaultText, DolphinStatusBar::Default);
+ }
+}
+
+bool StatusBarMessageLabel::showPendingMessage()
+{
+ if (!m_pendingMessages.isEmpty()) {
+ reset();
+ setMessage(m_pendingMessages.takeFirst(), DolphinStatusBar::Error);
+ return true;
+ }
+ return false;