From 38299f7169c3e0a9cebed7b5c7d6df8972eef50c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blak?= Date: Tue, 4 Oct 2022 22:25:14 +0200 Subject: [PATCH] feat(Storybook): Initial project config and main qml/cpp Closes: #7547 --- storybook/CMakeLists.txt | 49 ++++++++++++++++++++++++++++++++++ storybook/main.cpp | 32 ++++++++++++++++++++++ storybook/main.qml | 57 ++++++++++++++++++++++++++++++++++++++++ storybook/qml.qrc | 5 ++++ 4 files changed, 143 insertions(+) create mode 100644 storybook/CMakeLists.txt create mode 100644 storybook/main.cpp create mode 100644 storybook/main.qml create mode 100644 storybook/qml.qrc diff --git a/storybook/CMakeLists.txt b/storybook/CMakeLists.txt new file mode 100644 index 0000000000..139da5253c --- /dev/null +++ b/storybook/CMakeLists.txt @@ -0,0 +1,49 @@ +cmake_minimum_required(VERSION 3.19) +project(Storybook) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package( + Qt5 + COMPONENTS Core Quick QuickControls2 + REQUIRED) + +file(GLOB_RECURSE QML_FILES "stubs/*.qml" "../ui/StatusQ/*.qml" "../ui/app/*.qml") +file(GLOB_RECURSE JS_FILES "../ui/StatusQ/*.js" "../ui/app/*.js") +file(GLOB_RECURSE HEADERS *.h) +if(APPLE) + file(GLOB_RECURSE SOURCES *.cpp *.mm) +else() + file(GLOB_RECURSE SOURCES *.cpp) +endif() + +add_executable( + ${PROJECT_NAME} + qml.qrc + ${HEADERS} + ${SOURCES} + ${QML_FILES} + ${JS_FILES} +) + +target_compile_definitions(${PROJECT_NAME} + PRIVATE SRC_DIR="${CMAKE_CURRENT_LIST_DIR}") +target_link_libraries( + ${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Quick Qt5::QuickControls2 + SortFilterProxyModel) + +if (APPLE) + find_library(AppKit AppKit) + find_library(Foundation Foundation) + + target_link_libraries(${PROJECT_NAME} PRIVATE ${AppKit} ${Foundation}) +endif() + +add_subdirectory(../ui/StatusQ/vendor/SortFilterProxyModel ./SortFilterProxyModel) diff --git a/storybook/main.cpp b/storybook/main.cpp new file mode 100644 index 0000000000..ba9c2f4546 --- /dev/null +++ b/storybook/main.cpp @@ -0,0 +1,32 @@ +#include +#include + + +int main(int argc, char *argv[]) +{ +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); +#endif + QGuiApplication app(argc, argv); + app.setOrganizationName("Status"); + app.setOrganizationDomain("status.im"); + app.setApplicationName("Status Desktop Storybook"); + + QQmlApplicationEngine engine; + + engine.addImportPath(QStringLiteral(":/")); + engine.addImportPath(SRC_DIR + QStringLiteral("/../ui/StatusQ/src")); + engine.addImportPath(SRC_DIR + QStringLiteral("/../ui/app")); + engine.addImportPath(SRC_DIR + QStringLiteral("/../ui/imports")); + engine.addImportPath(SRC_DIR + QStringLiteral("/stubs")); + + const QUrl url(QStringLiteral("qrc:/main.qml")); + QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, + &app, [url](QObject *obj, const QUrl &objUrl) { + if (!obj && url == objUrl) + QCoreApplication::exit(-1); + }, Qt::QueuedConnection); + engine.load(url); + + return app.exec(); +} diff --git a/storybook/main.qml b/storybook/main.qml new file mode 100644 index 0000000000..a8bce642fe --- /dev/null +++ b/storybook/main.qml @@ -0,0 +1,57 @@ +import QtQuick 2.14 +import QtQuick.Controls 2.14 + +import StatusQ.Core 0.1 +import StatusQ.Components 0.1 +import StatusQ.Layout 0.1 + +import Qt.labs.settings 1.0 + + +ApplicationWindow { + id: rootWindow + + width: 1450 + height: 840 + visible: true + + StatusSectionLayout { + id: mainPageView + + anchors.fill: parent + + showHeader: false + + function page(name, fillPage) { + viewLoader.source = Qt.resolvedUrl("./pages/" + name + "Page.qml"); + storeSettings.selected = viewLoader.source + } + + leftPanel: StatusScrollView { + anchors.fill: parent + anchors.topMargin: 48 + + Column { + id: navigation + spacing: 0 + } + } + + centerPanel: Item { + id: centerPanel + anchors.fill: parent + + Loader { + id: viewLoader + anchors.fill: parent + clip: true + source: storeSettings.selected + } + } + } + + Settings { + id: storeSettings + property string selected: "" + } +} diff --git a/storybook/qml.qrc b/storybook/qml.qrc new file mode 100644 index 0000000000..5f6483ac33 --- /dev/null +++ b/storybook/qml.qrc @@ -0,0 +1,5 @@ + + + main.qml + +