ui: added loader animation gif to StatusBar

The loader animation can be activated by setting the showLoader flag on MessageStatus.
This commit is contained in:
Eberhard Graether
2015-04-28 20:26:31 +02:00
parent 791189c3c3
commit 749b1647e4
10 changed files with 49 additions and 20 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

+24 -1
View File
@@ -1,8 +1,22 @@
#include "qt/element/QtStatusBar.h"
#include <QMovie>
QtStatusBar::QtStatusBar()
: m_text(this)
{
QMovie* movie = new QMovie("data/gui/statusbar_view/loader.gif");
// if movie doesn't loop forever, force it to.
if (movie->loopCount() != -1)
{
connect(movie, SIGNAL(finished()), movie, SLOT(start()));
}
movie->start();
m_loader.setMovie(movie);
m_loader.hide();
addWidget(&m_loader);
m_text.setText("");
addWidget(&m_text);
}
@@ -11,7 +25,7 @@ QtStatusBar::~QtStatusBar()
{
}
void QtStatusBar::setText(const std::string& text, bool isError)
void QtStatusBar::setText(const std::string& text, bool isError, bool showLoader)
{
if (isError)
{
@@ -22,5 +36,14 @@ void QtStatusBar::setText(const std::string& text, bool isError)
m_text.setStyleSheet("");
}
if (showLoader)
{
m_loader.show();
}
else
{
m_loader.hide();
}
m_text.setText(text.c_str());
}
+5 -3
View File
@@ -3,18 +3,20 @@
#include <string>
#include <QStatusBar>
#include <QProgressBar>
#include <QLabel>
class QtStatusBar : public QStatusBar
class QtStatusBar
: public QStatusBar
{
public:
QtStatusBar(void);
~QtStatusBar(void);
void setText(const std::string& text, bool isError = false);
void setText(const std::string& text, bool isError, bool showLoader);
private:
QLabel m_text;
QLabel m_loader;
};
#endif // QT_STATUS_BAR_H
+6 -6
View File
@@ -6,7 +6,8 @@
QtStatusBarView::QtStatusBarView(ViewLayout* viewLayout)
: StatusBarView(viewLayout)
, m_showMessageFunctor(std::bind(&QtStatusBarView::doShowMessage, this, std::placeholders::_1, std::placeholders::_2))
, m_showMessageFunctor(std::bind(
&QtStatusBarView::doShowMessage, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3))
{
QtMainView* mw = static_cast<QtMainView*>(viewLayout);
m_widget = std::make_shared<QtStatusBar>();
@@ -21,7 +22,6 @@ QtStatusBarView::~QtStatusBarView()
void QtStatusBarView::createWidgetWrapper()
{
//setWidgetWrapper(std::make_shared<QtViewWidgetWrapper>(m_widget));
}
void QtStatusBarView::initView()
@@ -32,12 +32,12 @@ void QtStatusBarView::refreshView()
{
}
void QtStatusBarView::doShowMessage(const std::string& message, bool isError)
void QtStatusBarView::doShowMessage(const std::string& message, bool isError, bool showLoader)
{
m_widget->setText(message, isError);
m_widget->setText(message, isError, showLoader);
}
void QtStatusBarView::showMessage(const std::string& message, bool isError)
void QtStatusBarView::showMessage(const std::string& message, bool isError, bool showLoader)
{
m_showMessageFunctor(message, isError);
m_showMessageFunctor(message, isError, showLoader);
}
+4 -3
View File
@@ -20,12 +20,13 @@ public:
virtual void refreshView();
// StatusBar view implementation
virtual void showMessage(const std::string& message, bool isError);
virtual void showMessage(const std::string& message, bool isError, bool showLoader);
private:
void doShowMessage(const std::string& message, bool isError);
void doShowMessage(const std::string& message, bool isError, bool showLoader);
std::shared_ptr<QtStatusBar> m_widget;
QtThreadedFunctor<const std::string&, bool> m_showMessageFunctor;
QtThreadedFunctor<const std::string&, bool, bool> m_showMessageFunctor;
};
#endif // !QT_STATUS_BAR_VIEW_H
@@ -19,15 +19,15 @@ StatusBarView* StatusBarController::getView()
void StatusBarController::handleMessage(MessageStatus* message)
{
setStatus(message->status, message->isError);
setStatus(message->status, message->isError, message->showLoader);
}
void StatusBarController::setStatus(const std::string& status, bool isError)
void StatusBarController::setStatus(const std::string& status, bool isError, bool showLoader)
{
if (!status.empty())
{
LOG_INFO_STREAM(<< "STATUS " << status);
getView()->showMessage(status, isError);
getView()->showMessage(status, isError, showLoader);
}
}
@@ -23,7 +23,7 @@ public:
private:
virtual void handleMessage(MessageStatus* message);
void setStatus(const std::string& status, bool isError);
void setStatus(const std::string& status, bool isError, bool showLoader);
};
#endif // STATUS_BAR_CONTROLLER_H
+2 -1
View File
@@ -12,7 +12,8 @@ public:
~StatusBarView(void);
virtual std::string getName() const;
virtual void showMessage(const std::string& message, bool isError) = 0;
virtual void showMessage(const std::string& message, bool isError, bool showLoader) = 0;
protected:
StatusBarController* getController();
};
+1 -1
View File
@@ -64,7 +64,7 @@ Task::TaskState TaskParseCxx::update()
ss << fileRegister->getParsedFilesCount() << "/" << fileRegister->getFilesCount() << "] ";
ss << sourcePath;
MessageStatus(ss.str()).dispatch();
MessageStatus(ss.str(), false, true).dispatch();
m_parser.runTool(std::vector<std::string>(1, sourcePath));
@@ -7,9 +7,10 @@ class MessageStatus
: public Message<MessageStatus>
{
public:
MessageStatus(const std::string& status, bool isError = false)
MessageStatus(const std::string& status, bool isError = false, bool showLoader = false)
: status(status)
, isError(isError)
, showLoader(showLoader)
{
setSendAsTask(false);
}
@@ -21,6 +22,7 @@ public:
const std::string status;
const bool isError;
const bool showLoader;
};
#endif // MESSAGE_STATUS_H