From 5676d5a35393b51b0ae1243ac4e158583558b8e7 Mon Sep 17 00:00:00 2001 From: talksik Date: Fri, 11 Apr 2025 12:12:13 -0700 Subject: [PATCH] feat: add gallery app for viewing/testing --- gallery/.gitignore | 84 ++++++++++++++++++++++++++++++++++++++++++ gallery/CMakeLists.txt | 48 ++++++++++++++++++++++++ gallery/Main.qml | 61 ++++++++++++++++++++++++++++++ gallery/main.cpp | 23 ++++++++++++ gallery/run-debug.sh | 18 +++++++++ 5 files changed, 234 insertions(+) create mode 100644 gallery/.gitignore create mode 100644 gallery/CMakeLists.txt create mode 100644 gallery/Main.qml create mode 100644 gallery/main.cpp create mode 100755 gallery/run-debug.sh diff --git a/gallery/.gitignore b/gallery/.gitignore new file mode 100644 index 0000000..e8b4cbf --- /dev/null +++ b/gallery/.gitignore @@ -0,0 +1,84 @@ +# This file is used to ignore files which are generated +# ---------------------------------------------------------------------------- + +*~ +*.autosave +*.a +*.core +*.moc +*.o +*.obj +*.orig +*.rej +*.so +*.so.* +*_pch.h.cpp +*_resource.rc +*.qm +.#* +*.*# +core +!core/ +tags +.DS_Store +.directory +*.debug +*.prl +*.app +moc_*.cpp +ui_*.h +qrc_*.cpp +Thumbs.db +*.res +*.rc +/.qmake.cache +/.qmake.stash + +# qtcreator generated files +*.pro.user* +*.qbs.user* +CMakeLists.txt.user* + +# xemacs temporary files +*.flc + +# Vim temporary files +.*.swp + +# Visual Studio generated files +*.ib_pdb_index +*.idb +*.ilk +*.pdb +*.sln +*.suo +*.vcproj +*vcproj.*.*.user +*.ncb +*.sdf +*.opensdf +*.vcxproj +*vcxproj.* + +# MinGW generated files +*.Debug +*.Release + +# Python byte code +*.pyc + +# Binaries +# -------- +*.dll +*.exe + +# Directories with generated files +.moc/ +.obj/ +.pch/ +.rcc/ +.uic/ +build*/ + +.cache/ +.qmlls.ini diff --git a/gallery/CMakeLists.txt b/gallery/CMakeLists.txt new file mode 100644 index 0000000..ca1339f --- /dev/null +++ b/gallery/CMakeLists.txt @@ -0,0 +1,48 @@ +cmake_minimum_required(VERSION 3.21.1) + +project(gallery VERSION 1.0.0 LANGUAGES CXX) + +# generate compile_commands.json +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +add_subdirectory(../ ${CMAKE_BINARY_DIR}/designsystem) + +find_package(Qt6 6.8 REQUIRED COMPONENTS + Quick + Core + QuickControls2 +) + +qt_standard_project_setup(REQUIRES 6.8) + +set(SOURCES main.cpp) +qt_add_executable(Gallery MACOSX_BUNDLE ${SOURCES}) + +qt_add_qml_module(Gallery + URI Gallery + VERSION 1.0 + RESOURCE_PREFIX /live.flowy/imports + QML_FILES + Main.qml + RESOURCES +) + +# including every subdirectory because : https://bugreports.qt.io/browse/QTBUG-101146 +target_include_directories(Gallery PRIVATE src) + +target_link_libraries(Gallery + PRIVATE + Qt6::Quick + Qt6::Core + designsystemplugin +) + +include(GNUInstallDirs) +install(TARGETS Gallery + BUNDLE DESTINATION . + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +) diff --git a/gallery/Main.qml b/gallery/Main.qml new file mode 100644 index 0000000..0045a5d --- /dev/null +++ b/gallery/Main.qml @@ -0,0 +1,61 @@ +import QtQuick +import Qt.labs.platform +import Gallery +import DesignSystem +import QtQuick.Layouts +import QtQuick.Controls.Basic + +ApplicationWindow { + id: window + width: 640 + height: 480 + visible: true + title: qsTr("flowy - gallery") + + palette { + accent: Theme.accent + dark: Theme.foreground + window: Theme.background + windowText: Theme.foreground + base: Theme.muted + brightText: Theme.muted + text: Theme.foreground + button: Theme.accent + buttonText: "#FFFFFF" + } + + ColumnLayout { + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + anchors.margins: 10 + + AppPrimaryButton { + text: "Toggle theme" + onClicked: { + Theme.toggleTheme() + } + } + + AppCard { + Column { + spacing: 10 + AppText { + text: "This is a card" + } + AppCaption { + text: "Caption" + } + AppHeadline { + text: "Headline" + } + AppSubHeadline { + text: "SubHeadline" + } + AppLabel { + text: "Label" + } + } + } + } +} diff --git a/gallery/main.cpp b/gallery/main.cpp new file mode 100644 index 0000000..0094c21 --- /dev/null +++ b/gallery/main.cpp @@ -0,0 +1,23 @@ +#include +#include +#include + +#include +Q_IMPORT_QML_PLUGIN(DesignSystemPlugin) + +int main(int argc, char *argv[]) +{ + QGuiApplication app(argc, argv); + + QQmlApplicationEngine engine; + QObject::connect( + &engine, &QQmlApplicationEngine::objectCreationFailed, &app, []() { QCoreApplication::exit(-1); }, + Qt::QueuedConnection); + + // https://doc.qt.io/qt-6/qtqml-writing-a-module.html#eliminating-run-time-file-system-access + engine.addImportPath(":/live.flowy/imports"); + + engine.loadFromModule("Gallery", "Main"); + + return app.exec(); +} diff --git a/gallery/run-debug.sh b/gallery/run-debug.sh new file mode 100755 index 0000000..78d9271 --- /dev/null +++ b/gallery/run-debug.sh @@ -0,0 +1,18 @@ +#!/bin/bash -e + +BUILD_DIR=build + +#NOTE: the PROJECT_VERSION is a dummy placeholder just for local builds +if [ ! -d "$BUILD_DIR" ]; then + cmake -B$BUILD_DIR -S. -GNinja \ + -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_FLAGS="-Wall -Wextra" \ + -DCMAKE_PREFIX_PATH="$HOME/Qt/6.8.3/macos" \ + -DCMAKE_COLOR_DIAGNOSTICS=ON \ + -DCMAKE_CXX_FLAGS_INIT="-DQT_QML_DEBUG" \ + -DCMAKE_OSX_ARCHITECTURES="arm64" +fi + +cmake --build $BUILD_DIR --target all + +$BUILD_DIR/Gallery.app/Contents/MacOS/Gallery