From 312aebae73bb1854e2bf16073ccf78db3435bfc1 Mon Sep 17 00:00:00 2001 From: zhuzichu Date: Thu, 10 Aug 2023 16:08:27 +0800 Subject: [PATCH] update --- .cmake/GetGitRevisionDescription.cmake | 308 ++++++++++++++++++++++ .cmake/GetGitRevisionDescription.cmake.in | 43 +++ .cmake/Version.h.in | 12 + .cmake/version_dll.rc.in | 32 +++ .cmake/version_exe.rc.in | 34 +++ .gitignore | 5 +- CMakeLists.txt | 4 + example/CMakeLists.txt | 24 +- example/example.rc | 42 --- example/qml/component/CodeExpander.qml | 2 +- example/qml/page/T_Http.qml | 4 +- example/src/AppInfo.cpp | 8 +- src/CMakeLists.txt | 15 +- src/FluTools.cpp | 7 + src/FluTools.h | 6 + src/fluentui.rc | 40 --- 16 files changed, 484 insertions(+), 102 deletions(-) create mode 100644 .cmake/GetGitRevisionDescription.cmake create mode 100644 .cmake/GetGitRevisionDescription.cmake.in create mode 100644 .cmake/Version.h.in create mode 100644 .cmake/version_dll.rc.in create mode 100644 .cmake/version_exe.rc.in delete mode 100644 example/example.rc delete mode 100644 src/fluentui.rc diff --git a/.cmake/GetGitRevisionDescription.cmake b/.cmake/GetGitRevisionDescription.cmake new file mode 100644 index 00000000..8a8387a8 --- /dev/null +++ b/.cmake/GetGitRevisionDescription.cmake @@ -0,0 +1,308 @@ +if(__get_git_revision_description) + return() +endif() +set(__get_git_revision_description YES) + +get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH) + +function(_git_find_closest_git_dir _start_dir _git_dir_var) + set(cur_dir "${_start_dir}") + set(git_dir "${_start_dir}/.git") + while(NOT EXISTS "${git_dir}") + set(git_previous_parent "${cur_dir}") + get_filename_component(cur_dir ${cur_dir} DIRECTORY) + if(cur_dir STREQUAL git_previous_parent) + set(${_git_dir_var} + "" + PARENT_SCOPE) + return() + endif() + set(git_dir "${cur_dir}/.git") + endwhile() + set(${_git_dir_var} + "${git_dir}" + PARENT_SCOPE) +endfunction() + +function(get_git_head_revision _refspecvar _hashvar) + _git_find_closest_git_dir("${CMAKE_CURRENT_SOURCE_DIR}" GIT_DIR) + + if("${ARGN}" STREQUAL "ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR") + set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR TRUE) + else() + set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR FALSE) + endif() + if(NOT "${GIT_DIR}" STREQUAL "") + file(RELATIVE_PATH _relative_to_source_dir "${CMAKE_SOURCE_DIR}" + "${GIT_DIR}") + if("${_relative_to_source_dir}" MATCHES "[.][.]" AND NOT ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR) + set(GIT_DIR "") + endif() + endif() + if("${GIT_DIR}" STREQUAL "") + set(${_refspecvar} + "GITDIR-NOTFOUND" + PARENT_SCOPE) + set(${_hashvar} + "GITDIR-NOTFOUND" + PARENT_SCOPE) + return() + endif() + + if(NOT IS_DIRECTORY ${GIT_DIR}) + execute_process( + COMMAND "${GIT_EXECUTABLE}" rev-parse + --show-superproject-working-tree + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + OUTPUT_VARIABLE out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT "${out}" STREQUAL "") + file(READ ${GIT_DIR} submodule) + string(REGEX REPLACE "gitdir: (.*)$" "\\1" GIT_DIR_RELATIVE + ${submodule}) + string(STRIP ${GIT_DIR_RELATIVE} GIT_DIR_RELATIVE) + get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH) + get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} + ABSOLUTE) + set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD") + else() + file(READ ${GIT_DIR} worktree_ref) + string(REGEX REPLACE "gitdir: (.*)$" "\\1" git_worktree_dir + ${worktree_ref}) + string(STRIP ${git_worktree_dir} git_worktree_dir) + _git_find_closest_git_dir("${git_worktree_dir}" GIT_DIR) + set(HEAD_SOURCE_FILE "${git_worktree_dir}/HEAD") + endif() + else() + set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD") + endif() + set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data") + if(NOT EXISTS "${GIT_DATA}") + file(MAKE_DIRECTORY "${GIT_DATA}") + endif() + + if(NOT EXISTS "${HEAD_SOURCE_FILE}") + return() + endif() + set(HEAD_FILE "${GIT_DATA}/HEAD") + configure_file("${HEAD_SOURCE_FILE}" "${HEAD_FILE}" COPYONLY) + + configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in" + "${GIT_DATA}/grabRef.cmake" @ONLY) + include("${GIT_DATA}/grabRef.cmake") + + set(${_refspecvar} + "${HEAD_REF}" + PARENT_SCOPE) + set(${_hashvar} + "${HEAD_HASH}" + PARENT_SCOPE) +endfunction() + +function(git_latest_tag _var) + if(NOT GIT_FOUND) + find_package(Git QUIET) + endif() + if(NOT GIT_FOUND) + set(${_var} + "GIT-NOTFOUND" + PARENT_SCOPE) + return() + endif() + execute_process( + COMMAND "${GIT_EXECUTABLE}" describe --abbrev=0 --tag + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE res + OUTPUT_VARIABLE out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT res EQUAL 0) + set(out "GIT-TAG-NOTFOUND") + endif() + + set(${_var} + "${out}" + PARENT_SCOPE) +endfunction() + +function(git_commit_counts _var) + if(NOT GIT_FOUND) + find_package(Git QUIET) + endif() + if(NOT GIT_FOUND) + set(${_var} + "GIT-NOTFOUND" + PARENT_SCOPE) + return() + endif() + execute_process( + COMMAND "${GIT_EXECUTABLE}" rev-list HEAD --count + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE res + OUTPUT_VARIABLE out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT res EQUAL 0) + set(out "GIT-TAG-NOTFOUND") + endif() + + set(${_var} + "${out}" + PARENT_SCOPE) +endfunction() + +function(git_describe _var) + if(NOT GIT_FOUND) + find_package(Git QUIET) + endif() + get_git_head_revision(refspec hash ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR) + if(NOT GIT_FOUND) + set(${_var} + "GIT-NOTFOUND" + PARENT_SCOPE) + return() + endif() + if(NOT hash) + set(${_var} + "HEAD-HASH-NOTFOUND" + PARENT_SCOPE) + return() + endif() + + execute_process( + COMMAND "${GIT_EXECUTABLE}" describe --tags --always ${hash} ${ARGN} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE res + OUTPUT_VARIABLE out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT res EQUAL 0) + set(out "${out}-${res}-NOTFOUND") + endif() + + set(${_var} + "${out}" + PARENT_SCOPE) +endfunction() + +function(git_release_version _var) + if(NOT GIT_FOUND) + find_package(Git QUIET) + endif() + get_git_head_revision(refspec hash ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR) + if(NOT GIT_FOUND) + set(${_var} + "GIT-NOTFOUND" + PARENT_SCOPE) + return() + endif() + if(NOT hash) + set(${_var} + "HEAD-HASH-NOTFOUND" + PARENT_SCOPE) + return() + endif() + + execute_process( + COMMAND "${GIT_EXECUTABLE}" symbolic-ref --short -q HEAD + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE res + OUTPUT_VARIABLE out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT res EQUAL 0) + set(out "${out}-${res}-NOTFOUND") + endif() + + string(FIND ${out} "release/" found}) + if(${out} MATCHES "^release/.+$") + string(REPLACE "release/" "" tmp_out ${out}) + set(${_var} "${tmp_out}" PARENT_SCOPE) + else() + set(${_var} "" PARENT_SCOPE) + endif() +endfunction() + +function(git_describe_working_tree _var) + if(NOT GIT_FOUND) + find_package(Git QUIET) + endif() + if(NOT GIT_FOUND) + set(${_var} + "GIT-NOTFOUND" + PARENT_SCOPE) + return() + endif() + + execute_process( + COMMAND "${GIT_EXECUTABLE}" describe --dirty ${ARGN} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE res + OUTPUT_VARIABLE out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT res EQUAL 0) + set(out "${out}-${res}-NOTFOUND") + endif() + + set(${_var} + "${out}" + PARENT_SCOPE) +endfunction() + +function(git_get_exact_tag _var) + git_describe(out --exact-match ${ARGN}) + set(${_var} + "${out}" + PARENT_SCOPE) +endfunction() + +function(git_local_changes _var) + if(NOT GIT_FOUND) + find_package(Git QUIET) + endif() + get_git_head_revision(refspec hash) + if(NOT GIT_FOUND) + set(${_var} + "GIT-NOTFOUND" + PARENT_SCOPE) + return() + endif() + if(NOT hash) + set(${_var} + "HEAD-HASH-NOTFOUND" + PARENT_SCOPE) + return() + endif() + + execute_process( + COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD -- + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE res + OUTPUT_VARIABLE out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + if(res EQUAL 0) + set(${_var} + "CLEAN" + PARENT_SCOPE) + else() + set(${_var} + "DIRTY" + PARENT_SCOPE) + endif() +endfunction() + +git_release_version(GIT_TAG) +git_get_exact_tag(GIT_EXACT_TAG) +if(GIT_TAG STREQUAL "") + git_latest_tag(GIT_TAG) +endif() +if(GIT_TAG STREQUAL "GIT-TAG-NOTFOUND") + set(GIT_TAG "1.0.0") +endif () +git_describe(GIT_DESCRIBE) +git_commit_counts(GIT_COMMIT_COUNT) +string(REPLACE "." "," GIT_TAG_WITH_COMMA ${GIT_TAG}) +string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" GIT_SEMVER "${GIT_TAG}") +string(REGEX MATCH "([0-9]+)\\.([0-9]+)\\.([0-9]+)" SEMVER_SPLITED "${GIT_SEMVER}") +set(MAJOR_VERSION ${CMAKE_MATCH_1}) +set(MINOR_VERSION ${CMAKE_MATCH_2}) +set(PATCH_VERSION ${CMAKE_MATCH_3}) +MATH(EXPR VERSION_COUNTER "${MAJOR_VERSION} * 10000 + ${MINOR_VERSION} * 100 + ${PATCH_VERSION}") +message(STATUS "Current git tag: ${GIT_TAG}, commit count: ${GIT_COMMIT_COUNT}, describe: ${GIT_DESCRIBE}") +message(STATUS "Current semver: major: ${MAJOR_VERSION}, minor: ${MINOR_VERSION}, patch: ${PATCH_VERSION}, counter: ${VERSION_COUNTER}") \ No newline at end of file diff --git a/.cmake/GetGitRevisionDescription.cmake.in b/.cmake/GetGitRevisionDescription.cmake.in new file mode 100644 index 00000000..116efc4e --- /dev/null +++ b/.cmake/GetGitRevisionDescription.cmake.in @@ -0,0 +1,43 @@ +# +# Internal file for GetGitRevisionDescription.cmake +# +# Requires CMake 2.6 or newer (uses the 'function' command) +# +# Original Author: +# 2009-2010 Ryan Pavlik +# http://academic.cleardefinition.com +# Iowa State University HCI Graduate Program/VRAC +# +# Copyright 2009-2012, Iowa State University +# Copyright 2011-2015, Contributors +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) +# SPDX-License-Identifier: BSL-1.0 + +set(HEAD_HASH) + +file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024) + +string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS) +if(HEAD_CONTENTS MATCHES "ref") + # named branch + string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}") + if(EXISTS "@GIT_DIR@/${HEAD_REF}") + configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) + else() + configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY) + file(READ "@GIT_DATA@/packed-refs" PACKED_REFS) + if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}") + set(HEAD_HASH "${CMAKE_MATCH_1}") + endif() + endif() +else() + # detached HEAD + configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY) +endif() + +if(NOT HEAD_HASH) + file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024) + string(STRIP "${HEAD_HASH}" HEAD_HASH) +endif() diff --git a/.cmake/Version.h.in b/.cmake/Version.h.in new file mode 100644 index 00000000..30d87aaa --- /dev/null +++ b/.cmake/Version.h.in @@ -0,0 +1,12 @@ +// 应用程序版本信息 +// 请勿修改此头文件,因为这个文件是自动生成的 +#ifndef VERSION_H +#define VERSION_H + +#include + +#define APPLICATION_VERSION "${GIT_SEMVER}.${GIT_COMMIT_COUNT}" +#define VERSION_COUNTER ${GIT_COMMIT_COUNT} +#define COMMIT_HASH "${GIT_DESCRIBE}" + +#endif // VERSION_H diff --git a/.cmake/version_dll.rc.in b/.cmake/version_dll.rc.in new file mode 100644 index 00000000..ed756918 --- /dev/null +++ b/.cmake/version_dll.rc.in @@ -0,0 +1,32 @@ +1 VERSIONINFO + FILEVERSION ${GIT_TAG_WITH_COMMA},${GIT_COMMIT_COUNT} + PRODUCTVERSION ${GIT_TAG_WITH_COMMA},${GIT_COMMIT_COUNT} + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080404b0" + BEGIN + VALUE "CompanyName", "ZhuZiChu" + VALUE "FileDescription", "${PROJECT_DESCRIPTION}" + VALUE "FileVersion", "${GIT_SEMVER}.${GIT_COMMIT_COUNT}" + VALUE "InternalName", "${PROJECT_NAME}.dll" + VALUE "LegalCopyright", "Copyright (C) 2023 ZhuZiChu. All rights reserved." + VALUE "OriginalFilename", "${PROJECT_NAME}.dll" + VALUE "ProductName", "${PROJECT_NAME}" + VALUE "ProductVersion", "${GIT_SEMVER}.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x804, 1200 + END +END \ No newline at end of file diff --git a/.cmake/version_exe.rc.in b/.cmake/version_exe.rc.in new file mode 100644 index 00000000..9dbe5048 --- /dev/null +++ b/.cmake/version_exe.rc.in @@ -0,0 +1,34 @@ +1 VERSIONINFO + FILEVERSION ${GIT_TAG_WITH_COMMA},${GIT_COMMIT_COUNT} + PRODUCTVERSION ${GIT_TAG_WITH_COMMA},${GIT_COMMIT_COUNT} + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080404b0" + BEGIN + VALUE "CompanyName", "ZhuZiChu" + VALUE "FileDescription", "${PROJECT_DESCRIPTION}" + VALUE "FileVersion", "${GIT_SEMVER}.${GIT_COMMIT_COUNT}" + VALUE "InternalName", "${PROJECT_NAME}.exe" + VALUE "LegalCopyright", "Copyright (C) 2023 ZhuZiChu. All rights reserved." + VALUE "OriginalFilename", "${PROJECT_NAME}.exe" + VALUE "ProductName", "${PROJECT_NAME}" + VALUE "ProductVersion", "${GIT_SEMVER}.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x804, 1200 + END +END + +IDI_ICON1 ICON DISCARDABLE "${CMAKE_SOURCE_DIR}/example/favicon.ico" diff --git a/.gitignore b/.gitignore index f0e747b1..d1dd29a6 100644 --- a/.gitignore +++ b/.gitignore @@ -31,9 +31,10 @@ target_wrapper.* # QtCreator CMake CMakeLists.txt.user* -src/build-preset/plugins.qmltypes bin .DS_Store build cmake-build-* -.idea \ No newline at end of file +.idea + +example/Version.h \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b938173..1d7d3d93 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,10 @@ cmake_minimum_required(VERSION 3.20) project(FluentUI VERSION 0.1 LANGUAGES CXX) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/.cmake/") + +include(GetGitRevisionDescription) + option(FLUENTUI_BUILD_EXAMPLES "Build FluentUI demo applications." ON) option(FLUENTUI_BUILD_FRAMELESSHEPLER "Build FramelessHelper." ON) option(FLUENTUI_BUILD_STATIC_LIB "Build static library." OFF) diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt index 76bcce2a..00296b03 100644 --- a/example/CMakeLists.txt +++ b/example/CMakeLists.txt @@ -26,9 +26,6 @@ endif() #获取文件路径分隔符(解决执行命令的时候有些平台会报错) file(TO_CMAKE_PATH "/" PATH_SEPARATOR) -#设置版本号 -add_definitions(-DVERSION=1,5,0,0) - find_package(Qt6 REQUIRED COMPONENTS Quick Svg Network) if(QT_VERSION VERSION_GREATER_EQUAL "6.3") @@ -39,6 +36,13 @@ else() set(CMAKE_AUTOUIC ON) endif() +##生成版本信息头文件 +set(HEADER_FILE_VERSION_PATH ${CMAKE_SOURCE_DIR}/example/Version.h) +configure_file( + ${CMAKE_SOURCE_DIR}/.cmake/Version.h.in + ${HEADER_FILE_VERSION_PATH} +) + #遍历所有Cpp文件 file(GLOB_RECURSE CPP_FILES *.cpp *.h) foreach(filepath ${CPP_FILES}) @@ -60,11 +64,21 @@ foreach(filepath ${RES_PATHS}) list(APPEND resource_files ${filename}) endforeach(filepath) +#如果是Windows平台,则生成rc文件 +set(EXAMPLE_VERSION_RC_PATH "") +if(WIN32) + set(EXAMPLE_VERSION_RC_PATH ${CMAKE_BINARY_DIR}/version_${PROJECT_NAME}.rc) + configure_file( + ${CMAKE_SOURCE_DIR}/.cmake/version_exe.rc.in + ${EXAMPLE_VERSION_RC_PATH} + ) +endif() + #添加可执行文件 -if (CMAKE_SYSTEM_NAME STREQUAL "Windows") +if (WIN32) qt_add_executable(example ${sources_files} - example.rc + ${EXAMPLE_VERSION_RC_PATH} ) else () qt_add_executable(example diff --git a/example/example.rc b/example/example.rc deleted file mode 100644 index 8d7a9ef4..00000000 --- a/example/example.rc +++ /dev/null @@ -1,42 +0,0 @@ -#include - -IDI_ICON1 ICON "favicon.ico" - -#define STR(x) #x -#define VER_JOIN(a,b,c,d) STR(a.b.c.d) -#define VER_JOIN_(x) VER_JOIN x -#define VER_STR VER_JOIN_((VERSION)) - -VS_VERSION_INFO VERSIONINFO -FILEVERSION VERSION -PRODUCTVERSION VERSION -FILEFLAGSMASK 0x3fL -#ifdef _DEBUG -FILEFLAGS VS_FF_DEBUG -#else -FILEFLAGS 0x0L -#endif -FILEOS VOS_NT_WINDOWS32 -FILETYPE VFT_APP -FILESUBTYPE VFT2_UNKNOWN -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "Built by the FluentUI." - VALUE "CompanyName", "zhuzichu" - VALUE "FileDescription", "example" - VALUE "FileVersion", VER_STR - VALUE "InternalName", "" - VALUE "LegalCopyright", "Copyright (C) 2023" - VALUE "OriginalFilename", "" - VALUE "ProductName", "example" - VALUE "ProductVersion", VER_STR - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END diff --git a/example/qml/component/CodeExpander.qml b/example/qml/component/CodeExpander.qml index 0ff675af..c46fe24c 100644 --- a/example/qml/component/CodeExpander.qml +++ b/example/qml/component/CodeExpander.qml @@ -38,7 +38,7 @@ FluExpander{ topMargin: 5 } onClicked:{ - FluTools.clipText(content.text) + FluTools.clipText(FluTools.html2PlantText(content.text)) showSuccess("复制成功") } } diff --git a/example/qml/page/T_Http.qml b/example/qml/page/T_Http.qml index e8a00bd7..1ee6bbc3 100644 --- a/example/qml/page/T_Http.qml +++ b/example/qml/page/T_Http.qml @@ -102,7 +102,7 @@ FluContentPage{ param.custname = "朱子楚" param.custtel = "1234567890" param.custemail = "zhuzichu520@gmail.com" -// http.postJson("https://httpbingo.org/post",callable,param) + http.postJson("https://httpbingo.org/post",callable,param) } } FluButton{ @@ -125,7 +125,7 @@ FluContentPage{ console.debug(status+";"+errorString) } var param = "我命由我不由天" -// http.postString("https://httpbingo.org/post",callable,param) + http.postString("https://httpbingo.org/post",callable,param) } } FluButton{ diff --git a/example/src/AppInfo.cpp b/example/src/AppInfo.cpp index 25891cbd..7eb78036 100644 --- a/example/src/AppInfo.cpp +++ b/example/src/AppInfo.cpp @@ -4,16 +4,12 @@ #include #include "lang/En.h" #include "lang/Zh.h" - -#define STR(x) #x -#define VER_JOIN(a,b,c,d) STR(a.b.c.d) -#define VER_JOIN_(x) VER_JOIN x -#define VER_STR VER_JOIN_((VERSION)) +#include "Version.h" AppInfo::AppInfo(QObject *parent) : QObject{parent} { - version(VER_STR); + version(APPLICATION_VERSION); lang(new En()); } diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c181e824..748338f9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -11,9 +11,6 @@ if(APPLE) set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE) endif() -#设置版本号 -add_definitions(-DVERSION=1,5,0,0) - find_package(Qt6 REQUIRED COMPONENTS Core Quick Qml) if(QT_VERSION VERSION_GREATER_EQUAL "6.3") @@ -66,6 +63,16 @@ else() set(PLUGIN_TARGET_NAME ${PROJECT_NAME}) endif() +#如果是Windows平台,则生成rc文件 +set(FLUENTUI_VERSION_RC_PATH "") +if(WIN32) + set(FLUENTUI_VERSION_RC_PATH ${CMAKE_BINARY_DIR}/version_${PROJECT_NAME}.rc) + configure_file( + ${CMAKE_SOURCE_DIR}/.cmake/version_dll.rc.in + ${FLUENTUI_VERSION_RC_PATH} + ) +endif() + qt_add_qml_module(${PROJECT_NAME} PLUGIN_TARGET ${PLUGIN_TARGET_NAME} OUTPUT_DIRECTORY ${FLUENTUI_QML_PLUGIN_DIRECTORY} @@ -73,7 +80,7 @@ qt_add_qml_module(${PROJECT_NAME} URI "FluentUI" #修改qmltypes文件名称。默认fluentuiplugin.qmltypes,使用默认名称有时候import FluentUI会爆红,所以修改成plugins.qmltypes TYPEINFO "plugins.qmltypes" - SOURCES ${sources_files} fluentui.rc + SOURCES ${sources_files} ${FLUENTUI_VERSION_RC_PATH} QML_FILES ${qml_files} RESOURCES ${resource_files} ) diff --git a/src/FluTools.cpp b/src/FluTools.cpp index d1364878..1e15d549 100644 --- a/src/FluTools.cpp +++ b/src/FluTools.cpp @@ -3,6 +3,7 @@ #include #include #include +#include FluTools* FluTools::m_instance = nullptr; @@ -98,3 +99,9 @@ void FluTools::deleteItem(QObject *p){ QString FluTools::toLocalPath(const QUrl& url){ return url.toLocalFile(); } + +QString FluTools::html2PlantText(const QString& html){ + QTextDocument textDocument; + textDocument.setHtml(html); + return textDocument.toPlainText(); +} diff --git a/src/FluTools.h b/src/FluTools.h index 15d45c84..e887de7e 100644 --- a/src/FluTools.h +++ b/src/FluTools.h @@ -90,6 +90,12 @@ public: */ Q_INVOKABLE void restoreOverrideCursor(); + /** + * @brief html2PlantText 将html转换成纯文本 + * @param html + */ + Q_INVOKABLE QString html2PlantText(const QString& html); + /** * @brief toLocalPath 获取文件路径,可以去掉windows系统下的file:///,macos下的file:// * @param url diff --git a/src/fluentui.rc b/src/fluentui.rc deleted file mode 100644 index 9c3ea4aa..00000000 --- a/src/fluentui.rc +++ /dev/null @@ -1,40 +0,0 @@ -#include - -#define STR(x) #x -#define VER_JOIN(a,b,c,d) STR(a.b.c.d) -#define VER_JOIN_(x) VER_JOIN x -#define VER_STR VER_JOIN_((VERSION)) - -VS_VERSION_INFO VERSIONINFO -FILEVERSION VERSION -PRODUCTVERSION VERSION -FILEFLAGSMASK 0x3fL -#ifdef _DEBUG -FILEFLAGS VS_FF_DEBUG -#else -FILEFLAGS 0x0L -#endif -FILEOS VOS_NT_WINDOWS32 -FILETYPE VFT_APP -FILESUBTYPE VFT2_UNKNOWN -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", "FluentUI for QML." - VALUE "CompanyName", "zhuzichu" - VALUE "FileDescription", "fluentui" - VALUE "FileVersion", VER_STR - VALUE "InternalName", "" - VALUE "LegalCopyright", "Copyright (C) 2023" - VALUE "OriginalFilename", "" - VALUE "ProductName", "fluentui" - VALUE "ProductVersion", VER_STR - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END