diff --git a/examples/qtquick/customtitlebar/MyTitleBar.qml b/examples/qtquick/customtitlebar/MyTitleBar.qml new file mode 100644 index 00000000..ebaf7927 --- /dev/null +++ b/examples/qtquick/customtitlebar/MyTitleBar.qml @@ -0,0 +1,54 @@ +/* + This file is part of KDDockWidgets. + + SPDX-FileCopyrightText: 2020 Klarälvdalens Datakonsult AB, a KDAB Group company + Author: Sergio Martins + + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only + + Contact KDAB at for commercial licensing options. +*/ + +import QtQuick 2.6 + +// Will be moved to a plugin in the future +import "qrc:/kddockwidgets/private/quick/qml/" as KDDW + +KDDW.TitleBarBase { + id: root + color: "black" + border.color: "orange" + border.width: 2 + height: 50 + + Text { + color: "orange" + font.bold: true + text: root.title + anchors { + left: parent.left + leftMargin: 10 + verticalCenter: root.verticalCenter + } + } + + Rectangle { + id: closeButton + enabled: root.closeButtonEnabled + radius: 5 + color: "green" + height: root.height - 20 + width: height + anchors { + right: root.right + rightMargin: 10 + verticalCenter: root.verticalCenter + } + MouseArea { + anchors.fill: parent + onClicked: { + root.closeButtonClicked(); + } + } + } +} diff --git a/examples/qtquick/customtitlebar/main.cpp b/examples/qtquick/customtitlebar/main.cpp index 085f12dc..f3bbacc4 100644 --- a/examples/qtquick/customtitlebar/main.cpp +++ b/examples/qtquick/customtitlebar/main.cpp @@ -17,7 +17,15 @@ #include #include -#include + +class CustomFrameworkWidgetFactory : public KDDockWidgets::DefaultWidgetFactory +{ +public: + QUrl titleBarFilename() const override + { + return QUrl("qrc:/MyTitleBar.qml"); + } +}; int main(int argc, char *argv[]) { @@ -25,52 +33,12 @@ int main(int argc, char *argv[]) QGuiApplication::setAttribute(Qt::AA_UseOpenGLES); #endif QGuiApplication app(argc, argv); - QCommandLineParser parser; - parser.setApplicationDescription("KDDockWidgets example application"); - parser.addHelpOption(); + auto &config = KDDockWidgets::Config::self(); + auto flags = config.flags(); -#if defined(DOCKS_DEVELOPER_MODE) - QCommandLineOption noQtTool("no-qttool", QCoreApplication::translate("main", "(internal) Don't use Qt::Tool")); - QCommandLineOption noParentForFloating("no-parent-for-floating", QCoreApplication::translate("main", "(internal) FloatingWindows won't have a parent")); - QCommandLineOption nativeTitleBar("native-title-bar", QCoreApplication::translate("main", "(internal) FloatingWindows a native title bar")); - QCommandLineOption noDropIndicators("no-drop-indicators", QCoreApplication::translate("main", "(internal) Don't use any drop indicators")); - - parser.addOption(noQtTool); - parser.addOption(noParentForFloating); - parser.addOption(nativeTitleBar); - parser.addOption(noDropIndicators); - -# if defined(Q_OS_WIN) - QCommandLineOption noAeroSnap("no-aero-snap", QCoreApplication::translate("main", "(internal) Disable AeroSnap")); - parser.addOption(noAeroSnap); -# endif -#endif - - auto flags = KDDockWidgets::Config::self().flags(); - -#if defined(DOCKS_DEVELOPER_MODE) - parser.process(app); - - if (parser.isSet(noQtTool)) - flags |= KDDockWidgets::Config::Flag_internal_DontUseQtToolWindowsForFloatingWindows; - - if (parser.isSet(noParentForFloating)) - flags |= KDDockWidgets::Config::Flag_internal_DontUseParentForFloatingWindows; - - if (parser.isSet(nativeTitleBar)) - flags |= KDDockWidgets::Config::Flag_NativeTitleBar; - else if (parser.isSet(noDropIndicators)) - KDDockWidgets::DefaultWidgetFactory::s_dropIndicatorType = KDDockWidgets::DropIndicatorType::None; - -# if defined(Q_OS_WIN) - if (parser.isSet(noAeroSnap)) - flags |= KDDockWidgets::Config::Flag_internal_NoAeroSnap; -# endif - -#endif - - KDDockWidgets::Config::self().setFlags(flags); + config.setFlags(flags); + config.setFrameworkWidgetFactory(new CustomFrameworkWidgetFactory()); QQuickView view; view.setObjectName("MainWindow QQuickView"); @@ -98,6 +66,5 @@ int main(int argc, char *argv[]) KDDockWidgets::MainWindowBase *mainWindow = KDDockWidgets::DockRegistry::self()->mainwindows().constFirst(); mainWindow->addDockWidget(dw2, KDDockWidgets::Location_OnTop); - return app.exec(); } diff --git a/examples/qtquick/customtitlebar/resources_qtquick_example.qrc b/examples/qtquick/customtitlebar/resources_qtquick_example.qrc index f80890cb..295a5f1c 100644 --- a/examples/qtquick/customtitlebar/resources_qtquick_example.qrc +++ b/examples/qtquick/customtitlebar/resources_qtquick_example.qrc @@ -5,5 +5,6 @@ Guest2.qml Guest3.qml Guest.qml + MyTitleBar.qml diff --git a/src/private/quick/qml/TitleBar.qml b/src/private/quick/qml/TitleBar.qml index 8352f568..5de1ac18 100644 --- a/src/private/quick/qml/TitleBar.qml +++ b/src/private/quick/qml/TitleBar.qml @@ -49,7 +49,7 @@ TitleBarBase { rightMargin: 2 } onClicked: { - root.floatClicked(); + root.floatButtonClicked(); } } @@ -66,7 +66,7 @@ TitleBarBase { rightMargin: 2 } onClicked: { - root.closeClicked(); + root.closeButtonClicked(); } } }