1 /***************************************************************************
2 * Copyright (C) 2006 by Peter Penz *
4 * Code borrowed from Dolphin, adapted (2008) to Kdenlive by *
5 * Jean-Baptiste Mardelle, jb@kdenlive.org *
7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. *
12 * This program is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
17 * You should have received a copy of the GNU General Public License *
18 * along with this program; if not, write to the *
19 * Free Software Foundation, Inc., *
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
21 ***************************************************************************/
23 #ifndef STATUSBARMESSAGELABEL_H
24 #define STATUSBARMESSAGELABEL_H
32 #include <definitions.h>
39 * @brief Represents a message text label as part of the status bar.
41 * Dependent from the given type automatically a corresponding icon
42 * is shown in front of the text. For message texts having the type
43 * DolphinStatusBar::Error a dynamic color blending is done to get the
44 * attention from the user.
46 class StatusBarMessageLabel : public QWidget
51 explicit StatusBarMessageLabel(QWidget* parent);
52 virtual ~StatusBarMessageLabel();
54 MessageType type() const;
56 const QString& text() const;
58 // TODO: maybe a better approach is possible with the size hint
59 void setMinimumTextHeight(int min);
60 int minimumTextHeight() const;
63 /** @see QWidget::paintEvent() */
64 virtual void paintEvent(QPaintEvent* event);
66 /** @see QWidget::resizeEvent() */
67 virtual void resizeEvent(QResizeEvent* event);
70 void setMessage(const QString& text, MessageType type);
76 * Increases the height of the message label so that
77 * the given text fits into given area.
79 void assureVisibleText();
82 * Returns the available width in pixels for the text.
84 int availableTextWidth() const;
87 * Moves the close button to the upper right corner
88 * of the message label.
90 void updateCloseButtonPosition();
93 * Closes the currently shown error message and replaces it
94 * by the next pending message.
96 void closeErrorMessage();
100 * Shows the next pending error message. If no pending message
101 * was in the queue, false is returned.
103 bool showPendingMessage();
106 * Resets the message label properties. This is useful when the
107 * result of invoking StatusBarMessageLabel::setMessage() should
108 * not rely on previous states.
120 enum { GeometryTimeout = 100 };
121 enum { BorderGap = 2 };
130 QList<QString> m_pendingMessages;
132 QPushButton* m_closeButton;
135 inline MessageType StatusBarMessageLabel::type() const
140 inline const QString& StatusBarMessageLabel::text() const
145 inline int StatusBarMessageLabel::minimumTextHeight() const
147 return m_minTextHeight;