Add Platform and Platform_qtwidgets

So we can start removing QtWidgets vs QtQuick ifdefs.
Each "platform" will implement the differences
This commit is contained in:
Sergio Martins
2022-04-04 16:21:35 +01:00
parent ac5cb637e7
commit a36f85aae3
6 changed files with 138 additions and 13 deletions

View File

@@ -102,6 +102,10 @@ set(DOCKSLIBS_SRCS
ViewWrapper.h
Controller.cpp
Controller.h
Platform.cpp
Platform.h
qtwidgets/Platform_qtwidgets.cpp
qtwidgets/Platform_qtwidgets.h
qtwidgets/views/View_qtwidgets.cpp
qtwidgets/views/View_qtwidgets.h
qtwidgets/views/ViewWrapper_qtwidgets.cpp

33
src/Platform.cpp Normal file
View File

@@ -0,0 +1,33 @@
/*
This file is part of KDDockWidgets.
SPDX-FileCopyrightText: 2020-2022 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
Author: Sérgio Martins <sergio.martins@kdab.com>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
Contact KDAB at <info@kdab.com> for commercial licensing options.
*/
#include "Platform.h"
#include <qglobal.h>
#include <QDebug>
using namespace KDDockWidgets;
static Platform *s_platform = nullptr;
Platform::Platform()
{
qDebug() << "Created!";
s_platform = this;
}
Platform::~Platform()
{
}
Platform *Platform::instance()
{
return s_platform;
}

34
src/Platform.h Normal file
View File

@@ -0,0 +1,34 @@
/*
This file is part of KDDockWidgets.
SPDX-FileCopyrightText: 2020-2022 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
Author: Sérgio Martins <sergio.martins@kdab.com>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
Contact KDAB at <info@kdab.com> for commercial licensing options.
*/
#pragma once
#include "docks_export.h"
namespace KDDockWidgets {
/// @brief implements functions specific to a particular platform
/// A platform can be for example qtwidgets, qtquick, etc.
class DOCKS_EXPORT Platform
{
public:
virtual ~Platform();
/// @brief Returns the name of the platform, only "qtwidgets" and "qtquick"
virtual const char *name() const = 0;
/// @brief Returns the platform singleton
static Platform *instance();
protected:
Platform();
};
}

View File

@@ -33,9 +33,7 @@
#include <QGuiApplication>
#include <QWindow>
#ifdef KDDOCKWIDGETS_QTWIDGETS
#include "qtwidgets/DebugWindow_p.h"
#else
#ifndef KDDOCKWIDGETS_QTWIDGETS
#include "quick/QmlTypes.h"
#endif
@@ -57,16 +55,7 @@ DockRegistry::DockRegistry(QObject *parent)
{
qApp->installEventFilter(this);
#ifdef KDDOCKWIDGETS_QTWIDGETS
#ifdef DOCKS_DEVELOPER_MODE
if (qEnvironmentVariableIntValue("KDDOCKWIDGETS_SHOW_DEBUG_WINDOW") == 1) {
auto dv = new Debug::DebugWindow();
dv->show();
}
#endif
#else
#ifndef KDDOCKWIDGETS_QTWIDGETS
KDDockWidgets::registerQmlTypes();
QQuickWindow::setDefaultAlphaBuffer(true);
#endif

View File

@@ -0,0 +1,36 @@
/*
This file is part of KDDockWidgets.
SPDX-FileCopyrightText: 2020-2022 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
Author: Sérgio Martins <sergio.martins@kdab.com>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
Contact KDAB at <info@kdab.com> for commercial licensing options.
*/
#include "Platform_qtwidgets.h"
#include "KDDockWidgets.h"
static KDDockWidgets::Platform_qtwidgets s_platformQtWidgets;
using namespace KDDockWidgets;
Platform_qtwidgets::Platform_qtwidgets()
{
#ifdef DOCKS_DEVELOPER_MODE
if (qEnvironmentVariableIntValue("KDDOCKWIDGETS_SHOW_DEBUG_WINDOW") == 1) {
auto dv = new Debug::DebugWindow();
dv->show();
}
#endif
}
Platform_qtwidgets::~Platform_qtwidgets()
{
}
const char *Platform_qtwidgets::name() const
{
return "qtwidgets";
}

View File

@@ -0,0 +1,29 @@
/*
This file is part of KDDockWidgets.
SPDX-FileCopyrightText: 2020-2022 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
Author: Sérgio Martins <sergio.martins@kdab.com>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
Contact KDAB at <info@kdab.com> for commercial licensing options.
*/
#pragma once
#include "Platform.h"
#include "qtwidgets/DebugWindow_p.h"
namespace KDDockWidgets {
/// @brief implements functions specific to a particular platform
/// A platform can be for example qtwidgets, qtquick, etc.
class DOCKS_EXPORT Platform_qtwidgets : public Platform
{
public:
Platform_qtwidgets();
~Platform_qtwidgets() override;
const char *name() const override;
};
}