1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
// SPDX-FileCopyrightText: 2017 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef DMAINWINDOW_H
#define DMAINWINDOW_H
#include <dtkwidget_global.h>
#include <DFloatingMessage>
#include <DObject>
#include <QMainWindow>
#include <QPainterPath>
DWIDGET_BEGIN_NAMESPACE
class DMainWindowPrivate;
class DTitlebar;
class LIBDTKWIDGETSHARED_EXPORT DMainWindow : public QMainWindow, public DTK_CORE_NAMESPACE::DObject
{
Q_OBJECT
Q_PROPERTY(int windowRadius READ windowRadius WRITE setWindowRadius NOTIFY windowRadiusChanged)
Q_PROPERTY(int borderWidth READ borderWidth WRITE setBorderWidth NOTIFY borderWidthChanged)
Q_PROPERTY(QColor borderColor READ borderColor WRITE setBorderColor NOTIFY borderColorChanged)
Q_PROPERTY(int shadowRadius READ shadowRadius WRITE setShadowRadius NOTIFY shadowRadiusChanged)
Q_PROPERTY(QPoint shadowOffset READ shadowOffset WRITE setShadowOffset NOTIFY shadowOffsetChanged)
Q_PROPERTY(QColor shadowColor READ shadowColor WRITE setShadowColor NOTIFY shadowColorChanged)
Q_PROPERTY(QPainterPath clipPath READ clipPath WRITE setClipPath NOTIFY clipPathChanged)
Q_PROPERTY(QRegion frameMask READ frameMask WRITE setFrameMask NOTIFY frameMaskChanged)
Q_PROPERTY(QMargins frameMargins READ frameMargins NOTIFY frameMarginsChanged)
Q_PROPERTY(bool translucentBackground READ translucentBackground WRITE setTranslucentBackground NOTIFY translucentBackgroundChanged)
Q_PROPERTY(bool enableSystemResize READ enableSystemResize WRITE setEnableSystemResize NOTIFY enableSystemResizeChanged)
Q_PROPERTY(bool enableSystemMove READ enableSystemMove WRITE setEnableSystemMove NOTIFY enableSystemMoveChanged)
Q_PROPERTY(bool enableBlurWindow READ enableBlurWindow WRITE setEnableBlurWindow NOTIFY enableBlurWindowChanged)
Q_PROPERTY(bool autoInputMaskByClipPath READ autoInputMaskByClipPath WRITE setAutoInputMaskByClipPath NOTIFY autoInputMaskByClipPathChanged)
Q_PROPERTY(bool titlebarShadowEnabled READ titlebarShadowIsEnabled WRITE setTitlebarShadowEnabled)
public:
explicit DMainWindow(QWidget *parent = 0);
DTitlebar *titlebar() const;
void setSidebarWidget(QWidget *widget);
QWidget * sidebarWidget();
int sidebarWidth() const;
void setSidebarWidth(int width);
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
D_DECL_DEPRECATED_X("Please use sidebarVisible") bool sidebarVisble() const;
#endif
bool sidebarVisible() const ;
void setSidebarVisible(bool visible);
bool sidebarExpanded() const;
void setSidebarExpanded(bool expended);
bool isDXcbWindow() const;
int windowRadius() const;
int borderWidth() const;
QColor borderColor() const;
int shadowRadius() const;
QPoint shadowOffset() const;
QColor shadowColor() const;
QPainterPath clipPath() const;
QRegion frameMask() const;
QMargins frameMargins() const;
bool translucentBackground() const;
bool enableSystemResize() const;
bool enableSystemMove() const;
bool enableBlurWindow() const;
bool autoInputMaskByClipPath() const;
bool titlebarShadowIsEnabled() const;
public Q_SLOTS:
void setWindowRadius(int windowRadius);
void setBorderWidth(int borderWidth);
void setBorderColor(const QColor &borderColor);
void setShadowRadius(int shadowRadius);
void setShadowOffset(const QPoint &shadowOffset);
void setShadowColor(const QColor &shadowColor);
void setClipPath(const QPainterPath &clipPath);
void setFrameMask(const QRegion &frameMask);
void setTranslucentBackground(bool translucentBackground);
void setEnableSystemResize(bool enableSystemResize);
void setEnableSystemMove(bool enableSystemMove);
void setEnableBlurWindow(bool enableBlurWindow);
void setAutoInputMaskByClipPath(bool autoInputMaskByClipPath);
// TODO: remove it if there is an batter sulotion
#ifdef Q_OS_MAC
void setWindowFlags(Qt::WindowFlags type);
#endif
void sendMessage(const QIcon &icon, const QString &message);
void sendMessage(DFloatingMessage *message);
void setTitlebarShadowEnabled(bool titlebarShadowEnabled);
Q_SIGNALS:
void windowRadiusChanged();
void borderWidthChanged();
void borderColorChanged();
void shadowRadiusChanged();
void shadowOffsetChanged();
void shadowColorChanged();
void clipPathChanged();
void frameMaskChanged();
void frameMarginsChanged();
void translucentBackgroundChanged();
void enableSystemResizeChanged();
void enableSystemMoveChanged();
void enableBlurWindowChanged();
void autoInputMaskByClipPathChanged();
void sidebarVisbleChanged(bool visible);
void sidebarExpanedChanged(bool expaned);
protected:
DMainWindow(DMainWindowPrivate &dd, QWidget *parent = 0);
void mouseMoveEvent(QMouseEvent *event) override;
void resizeEvent(QResizeEvent *event) override;
void changeEvent(QEvent *event) override;
private:
D_DECLARE_PRIVATE(DMainWindow)
D_PRIVATE_SLOT(void _q_autoShowFeatureDialog())
};
DWIDGET_END_NAMESPACE
#endif // DMAINWINDOW_H
|