From 8f33896e1c7bfb3643be925462d55c5a5aa11a68 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 13 Mar 2016 18:20:52 +0000 Subject: [PATCH] refs #608, simplified direct main window access. Just set the corresponding components and you are done. --- src/blackgui/mainwindowaccess.cpp | 47 +++++++++++++++++++++++++++++++ src/blackgui/mainwindowaccess.h | 23 +++++++++++++-- src/swiftcore/swiftcore.cpp | 4 +++ src/swiftcore/swiftcore.h | 4 ++- 4 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 src/blackgui/mainwindowaccess.cpp diff --git a/src/blackgui/mainwindowaccess.cpp b/src/blackgui/mainwindowaccess.cpp new file mode 100644 index 000000000..b8e7f8a4d --- /dev/null +++ b/src/blackgui/mainwindowaccess.cpp @@ -0,0 +1,47 @@ +/* Copyright (C) 2016 + * swift project Community / Contributors + * + * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +#include "mainwindowaccess.h" +#include "managedstatusbar.h" +#include "overlaymessagesframe.h" +#include "components/logcomponent.h" + +namespace BlackGui +{ + IMainWindowAccess::~IMainWindowAccess() + { + // void + } + + bool IMainWindowAccess::displayTextInConsole(const QString &message) + { + if (message.isEmpty()) { return false; } + if (!this->m_mwaLogComponent) { return false; } + this->m_mwaLogComponent->appendPlainTextToConsole(message); + this->m_mwaLogComponent->displayConsole(true); + return true; + } + + bool IMainWindowAccess::displayInStatusBar(const BlackMisc::CStatusMessage &message) + { + if (message.isEmpty()) { return false; } + if (!this->m_mwaStatusBar) { return false; } + this->m_mwaStatusBar->displayStatusMessage(message); + return true; + } + + bool IMainWindowAccess::displayInOverlayWindow(const BlackMisc::CStatusMessage &message) + { + if (message.isEmpty()) { return false; } + if (!this->m_mwaOverlayFrame) { return false; } + this->m_mwaOverlayFrame->showOverlayMessage(message); + return true; + } + +} // ns diff --git a/src/blackgui/mainwindowaccess.h b/src/blackgui/mainwindowaccess.h index 92f1c2954..e0df2ba62 100644 --- a/src/blackgui/mainwindowaccess.h +++ b/src/blackgui/mainwindowaccess.h @@ -10,21 +10,38 @@ #ifndef BLACKGUI_MAINWINDOWACCESS_H #define BLACKGUI_MAINWINDOWACCESS_H +#include "blackgui/blackguiexport.h" #include "blackmisc/statusmessage.h" +#include namespace BlackGui { + class CManagedStatusBar; + class COverlayMessagesFrame; + namespace Components { class CLogComponent; } + /*! * Direct acccess to main window`s status bar, info bar and such */ - class IMainWindowAccess + class BLACKGUI_EXPORT IMainWindowAccess { public: + //! Destructor + virtual ~IMainWindowAccess(); + + //! Display in console + virtual bool displayTextInConsole(const QString &message); + //! Display in status bar - virtual bool displayInStatusBar(const BlackMisc::CStatusMessage &message) = 0; + virtual bool displayInStatusBar(const BlackMisc::CStatusMessage &message); //! Display in overlay window - virtual bool displayInOverlayWindow(const BlackMisc::CStatusMessage &message) = 0; + virtual bool displayInOverlayWindow(const BlackMisc::CStatusMessage &message); + + protected: + Components::CLogComponent *m_mwaLogComponent = nullptr; //!< the log component if any + CManagedStatusBar *m_mwaStatusBar = nullptr; //!< status bar if any + COverlayMessagesFrame *m_mwaOverlayFrame = nullptr; //!< overlay messages if any }; } // ns diff --git a/src/swiftcore/swiftcore.cpp b/src/swiftcore/swiftcore.cpp index e96336333..86d998604 100644 --- a/src/swiftcore/swiftcore.cpp +++ b/src/swiftcore/swiftcore.cpp @@ -36,6 +36,10 @@ CSwiftCore::CSwiftCore(QWidget *parent) : setSystemTrayMode(MinimizeToTray | QuitOnClose); setSystemTrayToolTip(name); + this->m_mwaLogComponent = this->ui->comp_InfoArea->getLogComponent(); + this->m_mwaOverlayFrame = nullptr; + this->m_mwaStatusBar = nullptr; + initLogDisplay(); initSlots(); initStyleSheet(); diff --git a/src/swiftcore/swiftcore.h b/src/swiftcore/swiftcore.h index 87783ddaf..234627f39 100644 --- a/src/swiftcore/swiftcore.h +++ b/src/swiftcore/swiftcore.h @@ -12,8 +12,9 @@ #ifndef SWIFTCORE_H #define SWIFTCORE_H -#include "blackcore/corefacade.h" #include "blackgui/systemtraywindow.h" +#include "blackgui/mainwindowaccess.h" +#include "blackcore/corefacade.h" #include "blackmisc/statusmessage.h" #include "blackmisc/identifiable.h" @@ -24,6 +25,7 @@ namespace Ui { class CSwiftCore; } //! swift core control class CSwiftCore : public BlackGui::CSystemTrayWindow, + public BlackGui::IMainWindowAccess, public BlackMisc::CIdentifiable { Q_OBJECT