Introduces a new `WindowControls` component in the desktop top bar with minimize, maximize/restore, and close actions for the focused window. `WindowService` now exposes focused-window presence/maximized state plus focused-window convenience actions to support this UI. Also extends Nebula UI with a reusable `NebulaToolTip`, keyboard/pressed-state support in `NebulaIconButton`, new window-control glyphs in `NebulaIcon`, and theme tokens for pressed/danger hover states, with CMake and README updates to register/document the new components.
43 lines
1023 B
CMake
43 lines
1023 B
CMake
cmake_minimum_required(VERSION 3.20)
|
|
|
|
if(NOT TARGET Qt6::Quick)
|
|
project(NebulaUI LANGUAGES CXX)
|
|
find_package(Qt6 6.4 REQUIRED COMPONENTS Quick)
|
|
qt_standard_project_setup(REQUIRES 6.4)
|
|
endif()
|
|
|
|
qt_add_library(NebulaUI STATIC)
|
|
|
|
set(NEBULA_UI_QML_DIR "${CMAKE_CURRENT_SOURCE_DIR}/qml/Nebula/UI")
|
|
|
|
set(NEBULA_UI_QML_FILES
|
|
Theme.qml
|
|
NebulaButton.qml
|
|
NebulaCard.qml
|
|
NebulaIconButton.qml
|
|
NebulaTextField.qml
|
|
NebulaToolTip.qml
|
|
FocusFrame.qml
|
|
NebulaIcon.qml
|
|
)
|
|
|
|
set(NEBULA_UI_QML_PATHS)
|
|
foreach(qml_file IN LISTS NEBULA_UI_QML_FILES)
|
|
set(qml_path "${NEBULA_UI_QML_DIR}/${qml_file}")
|
|
set_source_files_properties("${qml_path}" PROPERTIES
|
|
QT_RESOURCE_ALIAS "${qml_file}"
|
|
)
|
|
list(APPEND NEBULA_UI_QML_PATHS "${qml_path}")
|
|
endforeach()
|
|
|
|
set_source_files_properties("${NEBULA_UI_QML_DIR}/Theme.qml" PROPERTIES
|
|
QT_QML_SINGLETON_TYPE TRUE
|
|
)
|
|
|
|
qt_add_qml_module(NebulaUI
|
|
URI Nebula.UI
|
|
VERSION 1.0
|
|
RESOURCE_PREFIX /qt/qml
|
|
QML_FILES ${NEBULA_UI_QML_PATHS}
|
|
)
|