This change puts the initial project loading into a MessageLoadProject so that the UI thread is still responding. Also the StatusBar is now responding to more Messages and it's MessageListeners get added to the MessageQueue in front of other listeners so that the StatusBar UI can announce actions.
61 lines
1.4 KiB
C++
61 lines
1.4 KiB
C++
#include "component/controller/StatusBarController.h"
|
|
|
|
#include "component/view/StatusBarView.h"
|
|
|
|
StatusBarController::StatusBarController()
|
|
: MessageListener<MessageError>(true)
|
|
, MessageListener<MessageFinishedParsing>(true)
|
|
, MessageListener<MessageLoadProject>(true)
|
|
, MessageListener<MessageLoadSource>(true)
|
|
, MessageListener<MessageRefresh>(true)
|
|
, MessageListener<MessageStatus>(true)
|
|
{
|
|
}
|
|
|
|
StatusBarController::~StatusBarController()
|
|
{
|
|
}
|
|
|
|
StatusBarView* StatusBarController::getView()
|
|
{
|
|
return Controller::getView<StatusBarView>();
|
|
}
|
|
|
|
void StatusBarController::handleMessage(MessageFinishedParsing* message)
|
|
{
|
|
setStatus("Parsing Finished");
|
|
}
|
|
|
|
void StatusBarController::handleMessage(MessageStatus* message)
|
|
{
|
|
setStatus(message->status);
|
|
}
|
|
|
|
void StatusBarController::handleMessage(MessageError* message)
|
|
{
|
|
setStatus(message->error, true);
|
|
}
|
|
|
|
void StatusBarController::handleMessage(MessageLoadProject* message)
|
|
{
|
|
setStatus("Loading Project: " + message->projectSettingsFilePath);
|
|
}
|
|
|
|
void StatusBarController::handleMessage(MessageLoadSource* message)
|
|
{
|
|
setStatus("Loading Source: " + message->sourceDirectoryPath);
|
|
}
|
|
|
|
void StatusBarController::handleMessage(MessageRefresh* message)
|
|
{
|
|
setStatus("Refreshing Project");
|
|
}
|
|
|
|
void StatusBarController::setStatus(const std::string& status, bool isError)
|
|
{
|
|
if (!status.empty())
|
|
{
|
|
getView()->showMessage(status, isError);
|
|
}
|
|
}
|