CMakeList and RibbonTitleBar: Optimization and bug fix.
This commit is contained in:
parent
bcf9a3e03a
commit
8275fe1093
|
@ -2,6 +2,10 @@ cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
project(RibbonUI_Project VERSION 1.0.2 LANGUAGES CXX)
|
project(RibbonUI_Project VERSION 1.0.2 LANGUAGES CXX)
|
||||||
|
|
||||||
|
find_package(Qt6 REQUIRED COMPONENTS Core)
|
||||||
|
set(QT_SDK_DIR ${Qt6_DIR}/../../..)
|
||||||
|
cmake_path(SET QT_SDK_DIR NORMALIZE ${QT_SDK_DIR})
|
||||||
|
|
||||||
option(RIBBONUI_BUILD_EXAMPLES "Build RibbonUI APP." ON)
|
option(RIBBONUI_BUILD_EXAMPLES "Build RibbonUI APP." ON)
|
||||||
option(RIBBONUI_BUILD_FRAMELESSHEPLER "Build FramelessHelper." ON)
|
option(RIBBONUI_BUILD_FRAMELESSHEPLER "Build FramelessHelper." ON)
|
||||||
option(RIBBONUI_BUILD_STATIC_LIB "Build RibbonUI static library." OFF)
|
option(RIBBONUI_BUILD_STATIC_LIB "Build RibbonUI static library." OFF)
|
||||||
|
@ -18,10 +22,15 @@ if (RIBBONUI_BUILD_FRAMELESSHEPLER)
|
||||||
add_subdirectory(3rdparty/framelesshelper)
|
add_subdirectory(3rdparty/framelesshelper)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(NOT RIBBONUI_QML_PLUGIN_DIRECTORY)
|
||||||
|
set(RIBBONUI_QML_PLUGIN_DIRECTORY ${QT_SDK_DIR}/qml/RibbonUI CACHE PATH "RibbonUI Plugin Path")
|
||||||
|
endif()
|
||||||
|
|
||||||
add_subdirectory(lib_source)
|
add_subdirectory(lib_source)
|
||||||
|
|
||||||
message("---------------------------- RibbonUI ----------------------------")
|
message("---------------------------- RibbonUI ----------------------------")
|
||||||
message("Build RibbonUI APP: ${RIBBONUI_BUILD_EXAMPLES}")
|
message("Build RibbonUI APP: ${RIBBONUI_BUILD_EXAMPLES}")
|
||||||
message("Build FramelessHelper: ${RIBBONUI_BUILD_FRAMELESSHEPLER}")
|
message("Build FramelessHelper: ${RIBBONUI_BUILD_FRAMELESSHEPLER}")
|
||||||
message("Build RibbonUI static library: ${RIBBONUI_BUILD_STATIC_LIB}")
|
message("Build RibbonUI static library: ${RIBBONUI_BUILD_STATIC_LIB}")
|
||||||
|
message("RibbonUI QML Plugin Path: ${RIBBONUI_QML_PLUGIN_DIRECTORY}")
|
||||||
message("------------------------------------------------------------------")
|
message("------------------------------------------------------------------")
|
||||||
|
|
|
@ -2,9 +2,17 @@ cmake_minimum_required(VERSION 3.21)
|
||||||
|
|
||||||
project(RibbonUIAPP VERSION ${CMAKE_PROJECT_VERSION} LANGUAGES CXX)
|
project(RibbonUIAPP VERSION ${CMAKE_PROJECT_VERSION} LANGUAGES CXX)
|
||||||
|
|
||||||
set(CMAKE_AUTOMOC ON)
|
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
if(QT_VERSION VERSION_GREATER_EQUAL "6.3")
|
||||||
|
qt_standard_project_setup()
|
||||||
|
qt_policy(SET QTP0001 NEW)
|
||||||
|
else()
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
|
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -19,17 +19,10 @@ int main(int argc, char *argv[])
|
||||||
#endif
|
#endif
|
||||||
FramelessConfig::instance()->set(Global::Option::DisableLazyInitializationForMicaMaterial);
|
FramelessConfig::instance()->set(Global::Option::DisableLazyInitializationForMicaMaterial);
|
||||||
FramelessConfig::instance()->set(Global::Option::CenterWindowBeforeShow);
|
FramelessConfig::instance()->set(Global::Option::CenterWindowBeforeShow);
|
||||||
FramelessConfig::instance()->set(Global::Option::ForceNonNativeBackgroundBlur);
|
|
||||||
FramelessConfig::instance()->set(Global::Option::EnableBlurBehindWindow);
|
FramelessConfig::instance()->set(Global::Option::EnableBlurBehindWindow);
|
||||||
#ifdef Q_OS_MACOS
|
|
||||||
FramelessConfig::instance()->set(Global::Option::ForceNonNativeBackgroundBlur,false);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
QQmlApplicationEngine engine;
|
QQmlApplicationEngine engine;
|
||||||
FramelessHelper::Quick::registerTypes(&engine);
|
FramelessHelper::Quick::registerTypes(&engine);
|
||||||
#ifdef RIBBONUI_BUILD_STATIC_LIB
|
|
||||||
engine.addImportPath("qrc:/");
|
|
||||||
#endif
|
|
||||||
const QUrl url(u"qrc:/qt/qml/RibbonUIAPP/example.qml"_qs);
|
const QUrl url(u"qrc:/qt/qml/RibbonUIAPP/example.qml"_qs);
|
||||||
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
|
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
|
||||||
&app, [url](QObject *obj, const QUrl &objUrl) {
|
&app, [url](QObject *obj, const QUrl &objUrl) {
|
||||||
|
|
|
@ -573,7 +573,7 @@ RibbonWindow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Image {
|
Image {
|
||||||
source: "qrc:/RibbonUI/resources/imgs/icon.png"
|
source: "qrc:/qt/qml/RibbonUI/resources/imgs/icon.png"
|
||||||
fillMode:Image.PreserveAspectFit
|
fillMode:Image.PreserveAspectFit
|
||||||
Layout.preferredHeight: 300
|
Layout.preferredHeight: 300
|
||||||
Layout.preferredWidth: height
|
Layout.preferredWidth: height
|
||||||
|
|
|
@ -2,14 +2,22 @@ cmake_minimum_required(VERSION 3.21)
|
||||||
|
|
||||||
project(RibbonUI VERSION ${CMAKE_PROJECT_VERSION} LANGUAGES CXX)
|
project(RibbonUI VERSION ${CMAKE_PROJECT_VERSION} LANGUAGES CXX)
|
||||||
|
|
||||||
set(CMAKE_AUTOMOC ON)
|
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
if(QT_VERSION VERSION_GREATER_EQUAL "6.3")
|
||||||
|
qt_standard_project_setup()
|
||||||
|
qt_policy(SET QTP0001 NEW)
|
||||||
|
else()
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
|
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(Qt6 COMPONENTS Core Quick Qml ShaderTools REQUIRED)
|
find_package(Qt6 COMPONENTS Core Quick Qml REQUIRED)
|
||||||
|
|
||||||
set(version_str "${CMAKE_PROJECT_VERSION_MAJOR},${CMAKE_PROJECT_VERSION_MINOR},${CMAKE_PROJECT_VERSION_PATCH}")
|
set(version_str "${CMAKE_PROJECT_VERSION_MAJOR},${CMAKE_PROJECT_VERSION_MINOR},${CMAKE_PROJECT_VERSION_PATCH}")
|
||||||
add_definitions(-DRIBBONUI_VERSION=${version_str})
|
add_definitions(-DRIBBONUI_VERSION=${version_str})
|
||||||
|
@ -17,7 +25,7 @@ add_definitions(-DRIBBONUI_VERSION=${version_str})
|
||||||
if (RIBBONUI_BUILD_STATIC_LIB)
|
if (RIBBONUI_BUILD_STATIC_LIB)
|
||||||
set(LIB_TYPE "STATIC")
|
set(LIB_TYPE "STATIC")
|
||||||
set(PLUGIN_TARGET_NAME "")
|
set(PLUGIN_TARGET_NAME "")
|
||||||
qt_add_resources(${PROJECT_NAME} RibbonUI.qmltypes qmldir)
|
set(RIBBONUI_QML_PLUGIN_DIRECTORY ${CMAKE_BINARY_DIR}/RibbonUI)
|
||||||
else()
|
else()
|
||||||
set(LIB_TYPE "SHARED")
|
set(LIB_TYPE "SHARED")
|
||||||
set(PLUGIN_TARGET_NAME ${PROJECT_NAME})
|
set(PLUGIN_TARGET_NAME ${PROJECT_NAME})
|
||||||
|
@ -40,26 +48,17 @@ foreach(qmlfile ${qml_files})
|
||||||
string(REPLACE "qml/" "" fixedfile ${qmlfile})
|
string(REPLACE "qml/" "" fixedfile ${qmlfile})
|
||||||
set_source_files_properties(${qmlfile} PROPERTIES QT_RESOURCE_ALIAS ${fixedfile})
|
set_source_files_properties(${qmlfile} PROPERTIES QT_RESOURCE_ALIAS ${fixedfile})
|
||||||
endforeach(qmlfile)
|
endforeach(qmlfile)
|
||||||
|
message(${RIBBONUI_QML_PLUGIN_DIRECTORY})
|
||||||
qt_add_library(${PROJECT_NAME} ${LIB_TYPE})
|
qt_add_library(${PROJECT_NAME} ${LIB_TYPE})
|
||||||
qt_add_qml_module(${PROJECT_NAME}
|
qt_add_qml_module(${PROJECT_NAME}
|
||||||
PLUGIN_TARGET ${PLUGIN_TARGET_NAME}
|
PLUGIN_TARGET ${PLUGIN_TARGET_NAME}
|
||||||
OUTPUT_DIRECTORY ${CMAKE_PREFIX_PATH}/qml/RibbonUI
|
OUTPUT_DIRECTORY ${RIBBONUI_QML_PLUGIN_DIRECTORY}
|
||||||
URI ${PROJECT_NAME}
|
URI ${PROJECT_NAME}
|
||||||
VERSION ${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}
|
VERSION ${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}
|
||||||
QML_FILES ${qml_files}
|
QML_FILES ${qml_files}
|
||||||
SOURCES ribbonui.cpp ribbonui.h definitions.h ribbontheme.h ribbontheme.cpp
|
SOURCES ribbonui.cpp ribbonui.h definitions.h ribbontheme.h ribbontheme.cpp
|
||||||
RESOURCES resources/FluentSystemIcons-Resizable.ttf resources/imgs/icon.png
|
RESOURCES resources/FluentSystemIcons-Resizable.ttf resources/imgs/icon.png
|
||||||
)
|
RESOURCE_PREFIX "/qt/qml/"
|
||||||
|
|
||||||
qt_add_shaders(${PROJECT_NAME} "shaders"
|
|
||||||
BATCHABLE
|
|
||||||
PRECOMPILE
|
|
||||||
OPTIMIZED
|
|
||||||
PREFIX
|
|
||||||
"RibbonUI"
|
|
||||||
FILES
|
|
||||||
"effects/gaussianblur.frag"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
target_compile_definitions(${PROJECT_NAME}
|
target_compile_definitions(${PROJECT_NAME}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,42 +0,0 @@
|
||||||
#version 440
|
|
||||||
|
|
||||||
layout(location = 0) in vec2 qt_TexCoord0;
|
|
||||||
layout(location = 0) out vec4 fragColor;
|
|
||||||
|
|
||||||
layout(std140, binding = 0) uniform buf {
|
|
||||||
mat4 qt_Matrix;
|
|
||||||
float qt_Opacity;
|
|
||||||
vec2 pixelStep;
|
|
||||||
int radius;
|
|
||||||
float deviation;
|
|
||||||
};
|
|
||||||
layout(binding = 1) uniform sampler2D src;
|
|
||||||
|
|
||||||
#define PI 3.1415926538
|
|
||||||
|
|
||||||
float gaussianWeight(vec2 coords)
|
|
||||||
{
|
|
||||||
float x2 = pow(coords.x, 2.0);
|
|
||||||
float y2 = pow(coords.y, 2.0);
|
|
||||||
float deviation2 = pow(deviation, 2.0);
|
|
||||||
|
|
||||||
return (1.0 / (2.0 * PI * deviation2)) * exp(-(x2 + y2) / (2.0 * deviation2));
|
|
||||||
}
|
|
||||||
|
|
||||||
void main(void)
|
|
||||||
{
|
|
||||||
vec4 sum = vec4(0.0);
|
|
||||||
|
|
||||||
float gaussianSum = 0.0;
|
|
||||||
for (int x = -radius; x <= radius; ++x) {
|
|
||||||
for (int y = -radius; y <= radius; ++y) {
|
|
||||||
vec2 c = qt_TexCoord0 + vec2(x, y) * pixelStep;
|
|
||||||
float w = gaussianWeight(vec2(x, y));
|
|
||||||
vec4 color = texture(src, c);
|
|
||||||
sum += color * w;
|
|
||||||
gaussianSum += w;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fragColor = sum / gaussianSum * qt_Opacity;
|
|
||||||
}
|
|
|
@ -23,7 +23,7 @@ Text {
|
||||||
|
|
||||||
FontLoader{
|
FontLoader{
|
||||||
id: loader
|
id: loader
|
||||||
source: "qrc:/RibbonUI/resources/FluentSystemIcons-Resizable.ttf"
|
source: "qrc:/qt/qml/RibbonUI/resources/FluentSystemIcons-Resizable.ttf"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ Item {
|
||||||
property bool show_darkmode_btn: true
|
property bool show_darkmode_btn: true
|
||||||
property bool dark_mode: RibbonTheme.dark_mode
|
property bool dark_mode: RibbonTheme.dark_mode
|
||||||
property bool modern_style: RibbonTheme.modern_style
|
property bool modern_style: RibbonTheme.modern_style
|
||||||
property string title_color: modern_style ? "transparent" : dark_mode ? "#282828" : "#2C59B7"
|
property string title_color: modern_style ? Qt.platform.os === "windows" ? dark_mode ? "#141414" : "#F5F5F5" :"transparent" : dark_mode ? "#282828" : "#2C59B7"
|
||||||
property string title_text_color: modern_style ? dark_mode ? "white" : "black" : "white"
|
property string title_text_color: modern_style ? dark_mode ? "white" : "black" : "white"
|
||||||
default property alias content: left_container.data
|
default property alias content: left_container.data
|
||||||
property alias left_content: left_container.data
|
property alias left_content: left_container.data
|
||||||
|
@ -112,6 +112,7 @@ Item {
|
||||||
RibbonButton{
|
RibbonButton{
|
||||||
id: maximizeBtn
|
id: maximizeBtn
|
||||||
show_bg:false
|
show_bg:false
|
||||||
|
show_tooltip: Qt.platform.os !== "windows"
|
||||||
icon_source: Window.window.visibility === Window.Maximized ? RibbonIcons.ArrowMinimize : RibbonIcons.ArrowMaximize
|
icon_source: Window.window.visibility === Window.Maximized ? RibbonIcons.ArrowMinimize : RibbonIcons.ArrowMaximize
|
||||||
text_color: titleBar.title_text_color
|
text_color: titleBar.title_text_color
|
||||||
hover_color: "#61C554"
|
hover_color: "#61C554"
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
module RibbonUI
|
|
||||||
linktarget RibbonUI
|
|
||||||
optional plugin RibbonUI
|
|
||||||
classname RibbonUIPlugin
|
|
||||||
typeinfo RibbonUI.qmltypes
|
|
||||||
prefer :/RibbonUI/
|
|
||||||
RibbonTabBar 1.0 qml/RibbonTabBar.qml
|
|
||||||
RibbonTabButton 1.0 qml/RibbonTabButton.qml
|
|
||||||
RibbonView 1.0 qml/RibbonView.qml
|
|
||||||
RibbonTabPage 1.0 qml/RibbonTabPage.qml
|
|
||||||
RibbonTabGroup 1.0 qml/RibbonTabGroup.qml
|
|
||||||
RibbonButton 1.0 qml/RibbonButton.qml
|
|
||||||
RibbonBottomBar 1.0 qml/RibbonBottomBar.qml
|
|
||||||
RibbonIcon 1.0 qml/RibbonIcon.qml
|
|
||||||
RibbonToolTip 1.0 qml/RibbonToolTip.qml
|
|
||||||
RibbonTitleBar 1.0 qml/RibbonTitleBar.qml
|
|
||||||
RibbonSlider 1.0 qml/RibbonSlider.qml
|
|
||||||
RibbonSwitchButton 1.0 qml/RibbonSwitchButton.qml
|
|
||||||
RibbonCheckBox 1.0 qml/RibbonCheckBox.qml
|
|
||||||
RibbonMenu 1.0 qml/RibbonMenu.qml
|
|
||||||
RibbonMenuItem 1.0 qml/RibbonMenuItem.qml
|
|
||||||
RibbonShadow 1.0 qml/RibbonShadow.qml
|
|
||||||
RibbonBlur 1.0 qml/RibbonBlur.qml
|
|
||||||
RibbonMenuSeparator 1.0 qml/RibbonMenuSeparator.qml
|
|
||||||
RibbonPaperView 1.0 qml/RibbonPaperView.qml
|
|
||||||
RibbonPushButton 1.0 qml/RibbonPushButton.qml
|
|
||||||
RibbonRectangle 1.0 qml/RibbonRectangle.qml
|
|
||||||
RibbonText 1.0 qml/RibbonText.qml
|
|
||||||
RibbonTextBoxMenu 1.0 qml/RibbonTextBoxMenu.qml
|
|
||||||
RibbonPopup 1.0 qml/RibbonPopup.qml
|
|
||||||
RibbonPopupDialog 1.0 qml/RibbonPopupDialog.qml
|
|
||||||
RibbonLineEdit 1.0 qml/RibbonLineEdit.qml
|
|
||||||
RibbonTextEdit 1.0 qml/RibbonTextEdit.qml
|
|
||||||
RibbonComboBox 1.0 qml/RibbonComboBox.qml
|
|
||||||
RibbonSpinBox 1.0 qml/RibbonSpinBox.qml
|
|
||||||
|
|
Loading…
Reference in New Issue