Ref T357, support for overlay messages in QWizardPage

This commit is contained in:
Klaus Basan
2018-09-17 02:30:02 +02:00
parent e57f275608
commit 6955e66641
5 changed files with 64 additions and 23 deletions

View File

@@ -203,23 +203,6 @@ namespace BlackGui
return typeId; return typeId;
} }
COverlayMessagesFrame *CGuiUtility::nextOverlayMessageFrame(QWidget *widget, int maxLevels)
{
if (!widget || maxLevels < 1) { return nullptr; }
COverlayMessagesFrame *o = qobject_cast<COverlayMessagesFrame *> (widget);
if (o) { return o; }
int cl = 0;
QWidget *cw = widget->parentWidget();
while (cl < maxLevels && cw)
{
o = qobject_cast<COverlayMessagesFrame *> (cw);
if (o) { return o; }
cl++;
cw = cw->parentWidget();
}
return nullptr;
}
const QString &CGuiUtility::swiftJsonDragAndDropMimeType() const QString &CGuiUtility::swiftJsonDragAndDropMimeType()
{ {
static const QString m("text/json/swift"); static const QString m("text/json/swift");
@@ -251,6 +234,21 @@ namespace BlackGui
return fn.endsWith("json", Qt::CaseInsensitive); return fn.endsWith("json", Qt::CaseInsensitive);
} }
COverlayMessagesFrame *CGuiUtility::nextOverlayMessageFrame(QWidget *widget, int maxLevels)
{
return nextOverlayMessageWidget<COverlayMessagesFrame>(widget, maxLevels);
}
COverlayMessagesTabWidget *CGuiUtility::nextOverlayMessageTabWidget(QWidget *widget, int maxLevels)
{
return nextOverlayMessageWidget<COverlayMessagesTabWidget>(widget, maxLevels);
}
COverlayMessagesWizardPage *CGuiUtility::nextOverlayMessageWizardPage(QWidget *widget, int maxLevels)
{
return nextOverlayMessageWidget<COverlayMessagesWizardPage>(widget, maxLevels);
}
void CGuiUtility::checkBoxReadOnly(QCheckBox *checkBox, bool readOnly) void CGuiUtility::checkBoxReadOnly(QCheckBox *checkBox, bool readOnly)
{ {
static const QCheckBox defaultBox; static const QCheckBox defaultBox;

View File

@@ -38,6 +38,8 @@ namespace BlackGui
{ {
class CEnableForFramelessWindow; class CEnableForFramelessWindow;
class COverlayMessagesFrame; class COverlayMessagesFrame;
class COverlayMessagesWizardPage;
class COverlayMessagesTabWidget;
//! GUI utilities //! GUI utilities
class BLACKGUI_EXPORT CGuiUtility class BLACKGUI_EXPORT CGuiUtility
@@ -102,9 +104,33 @@ namespace BlackGui
//! Is representing existing JSON file //! Is representing existing JSON file
static bool isMimeRepresentingReadableJsonFile(const QMimeData *mime); static bool isMimeRepresentingReadableJsonFile(const QMimeData *mime);
//! Find next BlackGui::COverlayMessages QFrame //! Find next BlackGui::COverlayMessages QFrame or other implementing widget
template <class OverlayWidget> static OverlayWidget *nextOverlayMessageWidget(QWidget *widget, int maxLevels = 10)
{
if (!widget || maxLevels < 1) { return nullptr; }
OverlayWidget *o = qobject_cast<OverlayWidget *> (widget);
if (o) { return o; }
int cl = 0;
QWidget *cw = widget->parentWidget();
while (cl < maxLevels && cw)
{
o = qobject_cast<OverlayWidget *> (cw);
if (o) { return o; }
cl++;
cw = cw->parentWidget();
}
return nullptr;
}
//! Find next COverlayMessagesFrame
static COverlayMessagesFrame *nextOverlayMessageFrame(QWidget *widget, int maxLevels = 10); static COverlayMessagesFrame *nextOverlayMessageFrame(QWidget *widget, int maxLevels = 10);
//! Find next COverlayMessagesTabWidget
static COverlayMessagesTabWidget *nextOverlayMessageTabWidget(QWidget *widget, int maxLevels = 10);
//! Find next COverlayMessagesWizardPage
static COverlayMessagesWizardPage *nextOverlayMessageWizardPage(QWidget *widget, int maxLevels = 10);
//! Metatype //! Metatype
static const QString &swiftJsonDragAndDropMimeType(); static const QString &swiftJsonDragAndDropMimeType();

View File

@@ -51,7 +51,7 @@ namespace BlackGui
explicit COverlayMessages(const QString &headerText, int w, int h, QWidget *parent); explicit COverlayMessages(const QString &headerText, int w, int h, QWidget *parent);
//! Destructor //! Destructor
virtual ~COverlayMessages(); virtual ~COverlayMessages() override;
//! Messages mode //! Messages mode
void setModeToMessages(bool withKillButton = false); void setModeToMessages(bool withKillButton = false);

View File

@@ -26,11 +26,14 @@ using namespace BlackMisc::Network;
namespace BlackGui namespace BlackGui
{ {
COverlayMessagesFrame::COverlayMessagesFrame(QWidget *parent) : COverlayMessagesBase(parent) COverlayMessagesFrame::COverlayMessagesFrame(QWidget *parent, Qt::WindowFlags f) : COverlayMessagesBase(parent, f)
{ } { }
COverlayMessagesTabWidget::COverlayMessagesTabWidget(QWidget *parent) : COverlayMessagesBase(parent) COverlayMessagesTabWidget::COverlayMessagesTabWidget(QWidget *parent) : COverlayMessagesBase(parent)
{ } { }
COverlayMessagesWizardPage::COverlayMessagesWizardPage(QWidget *parent) : COverlayMessagesBase(parent)
{ }
} // ns } // ns

View File

@@ -23,6 +23,7 @@
#include <QFrame> #include <QFrame>
#include <QTabWidget> #include <QTabWidget>
#include <QWizardPage>
#include <QMessageBox> #include <QMessageBox>
#include <QObject> #include <QObject>
#include <QSize> #include <QSize>
@@ -31,7 +32,6 @@
class QKeyEvent; class QKeyEvent;
class QPaintEvent; class QPaintEvent;
class QWidget;
namespace BlackGui namespace BlackGui
{ {
@@ -167,8 +167,9 @@ namespace BlackGui
COverlayMessages *m_overlayMessages = nullptr; //!< embedded QFrame with status messages COverlayMessages *m_overlayMessages = nullptr; //!< embedded QFrame with status messages
//! Constructor //! Constructor
COverlayMessagesBase(QWidget *parent) : WIDGET(parent) COverlayMessagesBase(QWidget *parent, Qt::WindowFlags f = Qt::WindowFlags()) : WIDGET(parent)
{ {
this->setWindowFlags(f);
const bool isFrameless = CGuiUtility::isMainWindowFrameless(); const bool isFrameless = CGuiUtility::isMainWindowFrameless();
m_middleFactor = isFrameless ? 1.25 : 1.5; // 2 is middle in normal window m_middleFactor = isFrameless ? 1.25 : 1.5; // 2 is middle in normal window
} }
@@ -253,7 +254,7 @@ namespace BlackGui
public: public:
//! Constructor //! Constructor
explicit COverlayMessagesFrame(QWidget *parent = nullptr); explicit COverlayMessagesFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
}; };
/*! /*!
@@ -267,6 +268,19 @@ namespace BlackGui
//! Constructor //! Constructor
explicit COverlayMessagesTabWidget(QWidget *parent = nullptr); explicit COverlayMessagesTabWidget(QWidget *parent = nullptr);
}; };
/*!
* Using this class provides a QWizardPage with the overlay functionality already integrated.
*/
class BLACKGUI_EXPORT COverlayMessagesWizardPage : public COverlayMessagesBase<QWizardPage>
{
Q_OBJECT
public:
//! Constructor
explicit COverlayMessagesWizardPage(QWidget *parent = nullptr);
};
} // ns } // ns
#endif // guard #endif // guard