Introduce ViewWrapper - a non-owning view

In many cases we need to access widgets that weren't created by
KDDW, in that case we have no View. Since all our APIs want to
deal in View and not in QWidget, we need a way to wrap stuff like
QWidget::window() and windowHandle()

All methods are unimplemented. Will only implement those that
are required/used.
This commit is contained in:
Sergio Martins
2022-03-24 18:20:05 +00:00
parent e0e6d1fd3e
commit 90a9159748
7 changed files with 428 additions and 2 deletions

77
src/ViewWrapper.h Normal file
View File

@@ -0,0 +1,77 @@
/*
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 "View.h"
namespace KDDockWidgets {
/// @brief The base class for view wrappers
/// A view wrapper is a view that doesn't own the native GUI element(QWidget, QQuickItem etc.)
/// It just adds View API to an existing GUI element
/// Useful for GUI elements that are not created by KDDW.
class ViewWrapper : public View
{
public:
ViewWrapper();
void setParent(View *) override;
QSize minSize() const override;
QSize maxSizeHint() const override;
QSize minimumSizeHint() const override;
QSize maximumSize() const override;
QRect geometry() const override;
QRect normalGeometry() const override;
void setGeometry(QRect) override;
bool isVisible() const override;
void setVisible(bool) override;
void move(int x, int y) override;
void move(QPoint) override;
void setSize(int width, int height) override;
void setWidth(int width) override;
void setHeight(int height) override;
void show() override;
void hide() override;
void update() override;
void raiseAndActivate() override;
void raise() override;
void activateWindow() override;
bool isTopLevel() const override;
QPoint mapToGlobal(QPoint) const override;
QPoint mapFromGlobal(QPoint) const override;
void setSizePolicy(QSizePolicy) override;
QSizePolicy sizePolicy() const override;
void closeWindow() override;
QRect windowGeometry() const override;
QSize parentSize() const override;
bool close() override;
void setFlag(Qt::WindowType, bool = true) override;
void setAttribute(Qt::WidgetAttribute, bool enable = true) override;
bool testAttribute(Qt::WidgetAttribute) const override;
Qt::WindowFlags flags() const override;
void setWindowTitle(const QString &title) override;
void setWindowIcon(const QIcon &) override;
void showNormal() override;
void showMinimized() override;
void showMaximized() override;
bool isMinimized() const override;
bool isMaximized() const override;
void setMaximumSize(QSize sz) override;
bool isActiveWindow() const override;
QWindow *windowHandle() const override;
void setFixedWidth(int) override;
void setFixedHeight(int) override;
std::unique_ptr<ViewWrapper> window() const override;
};
}