]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/statusbarmessagelabel.h
SVN_SILENT: minor coding style fixes
[dolphin.git] / src / statusbarmessagelabel.h
index 03683c107290cf732b0274f621599f532e4d91b6..264a3538de657f8a7e6b48db77778e7365d671b7 100644 (file)
 #ifndef STATUSBARMESSAGELABEL_H
 #define STATUSBARMESSAGELABEL_H
 
-#include <qwidget.h>
-#include <qpixmap.h>
-#include <qstring.h>
-//Added by qt3to4:
-#include <QPaintEvent>
-#include <QResizeEvent>
 #include <dolphinstatusbar.h>
+
+#include <QtCore/QList>
+#include <QtGui/QPixmap>
+
+#include <QtGui/QWidget>
+
+class QPaintEvent;
+class QResizeEvent;
+class QPushButton;
 class QTimer;
 
 /**
  * @brief Represents a message text label as part of the status bar.
  *
- * Dependant from the given type automatically a corresponding icon
+ * Dependent from the given type automatically a corresponding icon
  * is shown in front of the text. For message texts having the type
  * DolphinStatusBar::Error a dynamic color blending is done to get the
  * attention from the user.
@@ -46,15 +49,18 @@ public:
     explicit StatusBarMessageLabel(QWidget* parent);
     virtual ~StatusBarMessageLabel();
 
-    void setType(DolphinStatusBar::Type type);
-    DolphinStatusBar::Type type() const { return m_type; }
+    void setMessage(const QString& text, DolphinStatusBar::Type type);
+
+    DolphinStatusBar::Type type() const;
 
-    void setText(const QString& text);
-    const QString& text() const { return m_text; }
+    const QString& text() const;
+
+    void setDefaultText(const QString& text);
+    const QString& defaultText() const;
 
     // TODO: maybe a better approach is possible with the size hint
     void setMinimumTextHeight(int min);
-    int minimumTextHeight() const { return m_minTextHeight; }
+    int minimumTextHeight() const;
 
     /**
      * Returns the gap of the width of the current set text to the
@@ -84,8 +90,35 @@ private slots:
      */
     int availableTextWidth() const;
 
+    /**
+     * Moves the close button to the upper right corner
+     * of the message label.
+     */
+    void updateCloseButtonPosition();
+
+    /**
+     * Closes the currently shown error message and replaces it
+     * by the next pending message.
+     */
+    void closeErrorMessage();
+
+private:
+    /**
+     * Shows the next pending error message. If no pending message
+     * was in the queue, false is returned.
+     */
+    bool showPendingMessage();
+
+    /**
+     * Resets the message label properties. This is useful when the
+     * result of invoking StatusBarMessageLabel::setMessage() should
+     * not rely on previous states.
+     */
+    void reset();
+
 private:
-    enum State {
+    enum State
+    {
         Default,
         Illuminate,
         Illuminated,
@@ -93,6 +126,7 @@ private:
     };
 
     enum { GeometryTimeout = 100 };
+    enum { BorderGap = 2 };
 
     DolphinStatusBar::Type m_type;
     State m_state;
@@ -100,13 +134,35 @@ private:
     int m_minTextHeight;
     QTimer* m_timer;
     QString m_text;
+    QString m_defaultText;
+    QList<QString> m_pendingMessages;
     QPixmap m_pixmap;
+    QPushButton* m_closeButton;
+};
 
-    QColor mixColors(const QColor& c1,
-                     const QColor& c2,
-                     int percent) const;
+inline DolphinStatusBar::Type StatusBarMessageLabel::type() const
+{
+    return m_type;
+}
 
-    int pixmapGap() const { return 3; }
-};
+inline const QString& StatusBarMessageLabel::text() const
+{
+    return m_text;
+}
+
+inline void StatusBarMessageLabel::setDefaultText(const QString& text)
+{
+    m_defaultText = text;
+}
+
+inline const QString& StatusBarMessageLabel::defaultText() const
+{
+    return m_defaultText;
+}
+
+inline int StatusBarMessageLabel::minimumTextHeight() const
+{
+    return m_minTextHeight;
+}
 
 #endif