diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3ef5a1d8..9863d2ca 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,11 +2,11 @@ cmake_minimum_required(VERSION 3.20)
project(FluentUI VERSION 1.0)
-if(MSVC)
+if (MSVC)
#让Release也生成pdb文件
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
-endif()
+endif ()
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/.cmake/)
@@ -22,8 +22,8 @@ add_subdirectory(src)
#Release也支持日志打印代码位置
target_compile_definitions(fluentuiplugin
- PRIVATE
- QT_MESSAGELOGCONTEXT
+ PRIVATE
+ QT_MESSAGELOGCONTEXT
)
if (FLUENTUI_BUILD_EXAMPLES)
diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt
index c1e8f99a..b4b028bf 100644
--- a/example/CMakeLists.txt
+++ b/example/CMakeLists.txt
@@ -10,18 +10,18 @@ set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
#判断FluentUI库类型
-if(FLUENTUI_BUILD_STATIC_LIB)
+if (FLUENTUI_BUILD_STATIC_LIB)
add_definitions(-DFLUENTUI_BUILD_STATIC_LIB)
-endif()
+endif ()
#设置可执行文件输出目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE})
-if(APPLE)
+if (APPLE)
set(APPLICATION_DIR_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${PROJECT_NAME}.app/Contents/MacOS)
-else()
+else ()
set(APPLICATION_DIR_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
-endif()
+endif ()
#导入Qt相关依赖包
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Quick Svg Network)
@@ -32,46 +32,46 @@ find_program(QT_LUPDATE NAMES lupdate)
find_program(QT_LRELEASE NAMES lrelease)
file(GLOB TS_FILE_PATHS ${CMAKE_CURRENT_LIST_DIR}/ *.ts)
add_custom_target(Script-UpdateTranslations
- COMMAND ${QT_LUPDATE} ${CMAKE_CURRENT_LIST_DIR} -ts ${PROJECT_NAME}_en_US.ts WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
- COMMAND ${QT_LUPDATE} ${CMAKE_CURRENT_LIST_DIR} -ts ${PROJECT_NAME}_zh_CN.ts WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
- COMMAND ${QT_LRELEASE} ${PROJECT_NAME}_en_US.ts WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
- COMMAND ${QT_LRELEASE} ${PROJECT_NAME}_zh_CN.ts WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
- COMMAND ${CMAKE_COMMAND} -E make_directory ${APPLICATION_DIR_PATH}/i18n
- COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_NAME}_en_US.qm ${PROJECT_NAME}_zh_CN.qm ${APPLICATION_DIR_PATH}/i18n
- SOURCES ${TS_FILE_PATHS}
+ COMMAND ${QT_LUPDATE} ${CMAKE_CURRENT_LIST_DIR} -ts ${PROJECT_NAME}_en_US.ts WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
+ COMMAND ${QT_LUPDATE} ${CMAKE_CURRENT_LIST_DIR} -ts ${PROJECT_NAME}_zh_CN.ts WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
+ COMMAND ${QT_LRELEASE} ${PROJECT_NAME}_en_US.ts WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
+ COMMAND ${QT_LRELEASE} ${PROJECT_NAME}_zh_CN.ts WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${APPLICATION_DIR_PATH}/i18n
+ COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_NAME}_en_US.qm ${PROJECT_NAME}_zh_CN.qm ${APPLICATION_DIR_PATH}/i18n
+ SOURCES ${TS_FILE_PATHS}
)
##生成版本信息头文件
set(HEADER_FILE_VERSION_PATH ${CMAKE_SOURCE_DIR}/${PROJECT_NAME}/Version.h)
configure_file(
- ${CMAKE_SOURCE_DIR}/.cmake/Version.h.in
- ${HEADER_FILE_VERSION_PATH}
+ ${CMAKE_SOURCE_DIR}/.cmake/Version.h.in
+ ${HEADER_FILE_VERSION_PATH}
)
#遍历所有Cpp文件
file(GLOB_RECURSE CPP_FILES *.cpp *.h)
-foreach(filepath ${CPP_FILES})
+foreach (filepath ${CPP_FILES})
string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" filename ${filepath})
list(APPEND sources_files ${filename})
-endforeach(filepath)
+endforeach (filepath)
-if(WIN32)
+if (WIN32)
list(APPEND sources_files "src/app_dmp.h")
-endif()
+endif ()
#如果是Windows平台,则生成rc文件,还有inno setup脚本文件
set(EXAMPLE_VERSION_RC_PATH "")
-if(WIN32)
+if (WIN32)
set(EXAMPLE_VERSION_RC_PATH ${CMAKE_CURRENT_BINARY_DIR}/version_${PROJECT_NAME}.rc)
configure_file(
- ${CMAKE_SOURCE_DIR}/.cmake/version_exe.rc.in
- ${EXAMPLE_VERSION_RC_PATH}
+ ${CMAKE_SOURCE_DIR}/.cmake/version_exe.rc.in
+ ${EXAMPLE_VERSION_RC_PATH}
)
-configure_file(
- ${CMAKE_SOURCE_DIR}/.cmake/InstallerScript.iss.in
- ${CMAKE_SOURCE_DIR}/action-cli/InstallerScript.iss
-)
-endif()
+ configure_file(
+ ${CMAKE_SOURCE_DIR}/.cmake/InstallerScript.iss.in
+ ${CMAKE_SOURCE_DIR}/action-cli/InstallerScript.iss
+ )
+endif ()
#加快qrc编译
qt_add_big_resources(QRC_RESOURCES ${PROJECT_NAME}.qrc)
@@ -80,34 +80,34 @@ set_property(SOURCE ${PROJECT_NAME}.qrc PROPERTY SKIP_AUTORCC ON)
list(APPEND sources_files ${QRC_RESOURCES})
#添加可执行文件
-if(WIN32)
+if (WIN32)
list(APPEND sources_files ${EXAMPLE_VERSION_RC_PATH})
-endif()
-if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
+endif ()
+if (${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_executable(${PROJECT_NAME}
- MANUAL_FINALIZATION
- ${sources_files}
+ MANUAL_FINALIZATION
+ ${sources_files}
)
-else()
+else ()
add_executable(${PROJECT_NAME}
- ${sources_files}
+ ${sources_files}
)
-endif()
+endif ()
add_dependencies(${PROJECT_NAME} Script-UpdateTranslations)
#复制程序运行所需要的动态库
-if(WIN32)
- if(MSVC)
- if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+if (WIN32)
+ if (MSVC)
+ if (CMAKE_SIZEOF_VOID_P EQUAL 4)
file(GLOB_RECURSE 3RDPARTY_DLL_DIR ${CMAKE_SOURCE_DIR}/3rdparty/msvc/x86/*.dll)
- elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ elseif (CMAKE_SIZEOF_VOID_P EQUAL 8)
file(GLOB_RECURSE 3RDPARTY_DLL_DIR ${CMAKE_SOURCE_DIR}/3rdparty/msvc/x64/*.dll)
- endif()
- elseif(MINGW)
+ endif ()
+ elseif (MINGW)
file(GLOB_RECURSE 3RDPARTY_DLL_DIR ${CMAKE_SOURCE_DIR}/3rdparty/mingw/*.dll)
- endif()
+ endif ()
file(COPY ${3RDPARTY_DLL_DIR} DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
-endif()
+endif ()
#复制FluentUI源码到运行目录下,用于脚手架生成
file(MAKE_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/source/)
@@ -115,37 +115,37 @@ file(COPY ${CMAKE_SOURCE_DIR}/src/ DESTINATION ${APPLICATION_DIR_PATH}/source/)
#导入component头文件,不然通过QML_NAMED_ELEMENT生成的c++类会找不到头文件报错
target_include_directories(${PROJECT_NAME} PRIVATE
- ${CMAKE_CURRENT_SOURCE_DIR}/src/component
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/component
)
#如果是静态库则需要手动注册插件,导入FluentUI.h头文件
-if(FLUENTUI_BUILD_STATIC_LIB)
+if (FLUENTUI_BUILD_STATIC_LIB)
target_include_directories(${PROJECT_NAME} PRIVATE
- ${CMAKE_SOURCE_DIR}/src
+ ${CMAKE_SOURCE_DIR}/src
)
-endif()
+endif ()
#设置属性
set_target_properties(${PROJECT_NAME} PROPERTIES
- MACOSX_BUNDLE_GUI_IDENTIFIER my.${PROJECT_NAME}.com
- MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
- MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
- MACOSX_BUNDLE TRUE
- WIN32_EXECUTABLE TRUE
+ MACOSX_BUNDLE_GUI_IDENTIFIER my.${PROJECT_NAME}.com
+ MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
+ MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
+ MACOSX_BUNDLE TRUE
+ WIN32_EXECUTABLE TRUE
)
#Release也支持日志打印代码位置
target_compile_definitions(${PROJECT_NAME}
- PRIVATE
- QT_MESSAGELOGCONTEXT
+ PRIVATE
+ QT_MESSAGELOGCONTEXT
)
#目标文件链接库
target_link_libraries(${PROJECT_NAME} PRIVATE
- Qt${QT_VERSION_MAJOR}::Quick
- Qt${QT_VERSION_MAJOR}::Svg
- Qt${QT_VERSION_MAJOR}::Network
- fluentuiplugin
+ Qt${QT_VERSION_MAJOR}::Quick
+ Qt${QT_VERSION_MAJOR}::Svg
+ Qt${QT_VERSION_MAJOR}::Network
+ fluentuiplugin
)
#添加部署脚本
@@ -153,23 +153,28 @@ if (CMAKE_BUILD_TYPE MATCHES "Release")
if (APPLE)
find_program(QT_DEPLOY_QT NAMES macdeployqt)
add_custom_target(Script-DeployRelease
- COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_SOURCE_DIR}/dist
- COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${CMAKE_SOURCE_DIR}/dist
- COMMAND ${QT_DEPLOY_QT} ${CMAKE_SOURCE_DIR}/dist/${PROJECT_NAME}.app -qmldir=${CMAKE_CURRENT_LIST_DIR}
- COMMENT "MacOs Deploying Qt Dependencies After Build........."
- SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_SOURCE_DIR}/dist
+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${CMAKE_SOURCE_DIR}/dist
+ COMMAND ${QT_DEPLOY_QT} ${CMAKE_SOURCE_DIR}/dist/${PROJECT_NAME}.app -qmldir=${CMAKE_CURRENT_LIST_DIR}
+ COMMENT "MacOs Deploying Qt Dependencies After Build........."
+ SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
- endif()
- if(WIN32)
+ endif ()
+ if (WIN32)
find_program(QT_DEPLOY_QT NAMES windeployqt)
add_custom_target(Script-DeployRelease
- COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_SOURCE_DIR}/dist
- COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${CMAKE_SOURCE_DIR}/dist
- COMMAND ${QT_DEPLOY_QT} --qmldir=${CMAKE_CURRENT_LIST_DIR} --plugindir ${CMAKE_SOURCE_DIR}/dist/plugins --no-translations --compiler-runtime ${CMAKE_SOURCE_DIR}/dist/${PROJECT_NAME}.exe
- COMMENT "Windows Deploying Qt Dependencies After Build........."
- SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_SOURCE_DIR}/dist
+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${CMAKE_SOURCE_DIR}/dist
+ COMMAND ${QT_DEPLOY_QT} --qmldir=${CMAKE_CURRENT_LIST_DIR} --plugindir ${CMAKE_SOURCE_DIR}/dist/plugins --no-translations --compiler-runtime ${CMAKE_SOURCE_DIR}/dist/${PROJECT_NAME}.exe
+ COMMENT "Windows Deploying Qt Dependencies After Build........."
+ SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
-endif()
-endif()
+
+ target_sources(Script-DeployRelease
+ PRIVATE
+ src/component/OpenGLItem.h src/component/OpenGLItem.cpp
+ )
+ endif ()
+endif ()
diff --git a/example/example.qrc b/example/example.qrc
index 527028cd..646ef145 100644
--- a/example/example.qrc
+++ b/example/example.qrc
@@ -209,5 +209,7 @@
qml/page/T_GroupBox.qml
res/image/bg_scenic.jpg
qml/window/FluentInitializrWindow.qml
+ qml/page/T_OpenGL.qml
+
diff --git a/example/example_en_US.ts b/example/example_en_US.ts
index 47476754..b3d08a52 100644
--- a/example/example_en_US.ts
+++ b/example/example_en_US.ts
@@ -87,22 +87,22 @@
InitializrHelper
-
+
-
+
-
+
-
+
@@ -475,7 +475,7 @@
-
+
@@ -550,11 +550,6 @@
MainWindow
-
-
-
-
-
@@ -617,6 +612,11 @@
+
+
+
+
+
@@ -1626,6 +1626,14 @@ My only desire is to be permitted to drive out the traitors and restore the Han.
+
+ T_OpenGL
+
+
+
+
+
+
T_Pagination
diff --git a/example/example_zh_CN.ts b/example/example_zh_CN.ts
index 8ae59fac..7ecd333f 100644
--- a/example/example_zh_CN.ts
+++ b/example/example_zh_CN.ts
@@ -87,22 +87,22 @@
InitializrHelper
-
+
名称不能为空
-
+
创建路径不能为空
-
+
路径不存在
-
+
%1 文件夹已经存在
@@ -475,7 +475,7 @@
-
+
@@ -1665,6 +1665,14 @@ My only desire is to be permitted to drive out the traitors and restore the Han.
网络
+
+ T_OpenGL
+
+
+
+
+
+
T_Pagination
diff --git a/example/qml/global/ItemsOriginal.qml b/example/qml/global/ItemsOriginal.qml
index 8e96b2e0..cbd84e99 100644
--- a/example/qml/global/ItemsOriginal.qml
+++ b/example/qml/global/ItemsOriginal.qml
@@ -427,9 +427,9 @@ FluObject{
title: qsTr("Other")
icon: FluentIcons.Shop
FluPaneItem{
- title: qsTr("CodeEditor")
+ title: qsTr("OpenGL")
menuDelegate: paneItemMenu
- url: "qrc:/example/qml/page/T_CodeEditor.qml"
+ url: "qrc:/example/qml/page/T_OpenGL.qml"
onTap: { navigationView.push(url) }
}
FluPaneItem{
diff --git a/example/src/AppInfo.cpp b/example/src/AppInfo.cpp
index 8668e5bc..57e39130 100644
--- a/example/src/AppInfo.cpp
+++ b/example/src/AppInfo.cpp
@@ -1,17 +1,15 @@
#include "AppInfo.h"
#include
-#include
#include
#include "Version.h"
AppInfo::AppInfo(QObject *parent)
- : QObject{parent}
-{
+ : QObject{parent} {
version(APPLICATION_VERSION);
}
-void AppInfo::testCrash(){
+[[maybe_unused]] void AppInfo::testCrash() {
auto *crash = reinterpret_cast(0);
*crash = 0;
}
diff --git a/example/src/AppInfo.h b/example/src/AppInfo.h
index 541d7a4c..f8bb0719 100644
--- a/example/src/AppInfo.h
+++ b/example/src/AppInfo.h
@@ -1,20 +1,18 @@
-#ifndef APPINFO_H
-#define APPINFO_H
+#pragma once
#include
#include
#include "stdafx.h"
#include "singleton.h"
-class AppInfo : public QObject
-{
- Q_OBJECT
- Q_PROPERTY_AUTO(QString,version)
+class AppInfo : public QObject {
+Q_OBJECT
+Q_PROPERTY_AUTO(QString, version)
private:
explicit AppInfo(QObject *parent = nullptr);
-public:
- SINGLETON(AppInfo)
- Q_INVOKABLE void testCrash();
-};
-#endif // APPINFO_H
+public:
+SINGLETON(AppInfo)
+
+ Q_INVOKABLE [[maybe_unused]] void testCrash();
+};
diff --git a/example/src/app_dmp.h b/example/src/app_dmp.h
index 1ca52ae4..9fee040f 100644
--- a/example/src/app_dmp.h
+++ b/example/src/app_dmp.h
@@ -1,5 +1,6 @@
-#ifndef APP_DUMP_H
-#define APP_DUMP_H
+#pragma once
+#pragma clang diagnostic push
+#pragma ide diagnostic ignored "misc-misplaced-const"
#include
#include
@@ -12,71 +13,71 @@
#pragma comment(lib, "Dbghelp.lib")
-static void miniDumpWriteDump(HANDLE hProcess,DWORD ProcessId,HANDLE hFile,MINIDUMP_TYPE DumpType,CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam){
- typedef HRESULT (WINAPI* MiniDumpWriteDumpPtr)(HANDLE hProcess,DWORD ProcessId,HANDLE hFile,MINIDUMP_TYPE DumpType,CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam);
+static void
+miniDumpWriteDump(HANDLE hProcess, DWORD ProcessId, HANDLE hFile, CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam) {
+ typedef HRESULT (WINAPI *MiniDumpWriteDumpPtr)(HANDLE hProcess, DWORD ProcessId, HANDLE hFile, MINIDUMP_TYPE DumpType, CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
+ CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam);
HMODULE module = LoadLibraryW(L"Dbghelp.dll");
- if (module)
- {
+ if (module) {
MiniDumpWriteDumpPtr mini_dump_write_dump;
- mini_dump_write_dump= reinterpret_cast(GetProcAddress(module, "MiniDumpWriteDump"));
- if (mini_dump_write_dump)
- {
- mini_dump_write_dump(hProcess,ProcessId,hFile,DumpType,ExceptionParam,UserStreamParam,CallbackParam);
+ mini_dump_write_dump = reinterpret_cast(GetProcAddress(module, "MiniDumpWriteDump"));
+ if (mini_dump_write_dump) {
+ mini_dump_write_dump(hProcess, ProcessId, hFile, static_cast(80), ExceptionParam, nullptr, CallbackParam);
}
}
}
BOOL CALLBACK MyMiniDumpCallback(PVOID, const PMINIDUMP_CALLBACK_INPUT input, PMINIDUMP_CALLBACK_OUTPUT output) {
- if (input == NULL || output == NULL)
+ if (input == nullptr || output == nullptr)
return FALSE;
BOOL ret = FALSE;
switch (input->CallbackType) {
- case IncludeModuleCallback:
- case IncludeThreadCallback:
- case ThreadCallback:
- case ThreadExCallback:
- ret = TRUE;
- break;
- case ModuleCallback: {
- if (!(output->ModuleWriteFlags & ModuleReferencedByMemory)) {
- output->ModuleWriteFlags &= ~ModuleWriteModule;
+ case IncludeModuleCallback:
+ case IncludeThreadCallback:
+ case ThreadCallback:
+ case ThreadExCallback:
+ ret = TRUE;
+ break;
+ case ModuleCallback: {
+ if (!(output->ModuleWriteFlags & ModuleReferencedByMemory)) {
+ output->ModuleWriteFlags &= ~ModuleWriteModule;
+ }
+ ret = TRUE;
}
- ret = TRUE;
- } break;
- default:
- break;
+ break;
+ default:
+ break;
}
return ret;
}
-void WriteDump(EXCEPTION_POINTERS* exp, const std::wstring& path) {
- HANDLE h = ::CreateFileW(path.c_str(), GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+void WriteDump(EXCEPTION_POINTERS *exp, const std::wstring &path) {
+ HANDLE h = ::CreateFileW(path.c_str(), GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
MINIDUMP_EXCEPTION_INFORMATION info;
info.ThreadId = ::GetCurrentThreadId();
info.ExceptionPointers = exp;
info.ClientPointers = FALSE;
MINIDUMP_CALLBACK_INFORMATION mci;
- mci.CallbackRoutine = (MINIDUMP_CALLBACK_ROUTINE)MyMiniDumpCallback;
- mci.CallbackParam = 0;
- MINIDUMP_TYPE mdt = (MINIDUMP_TYPE)(MiniDumpWithIndirectlyReferencedMemory | MiniDumpScanMemory);
- miniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), h, mdt, &info, NULL, &mci);
+ mci.CallbackRoutine = (MINIDUMP_CALLBACK_ROUTINE) MyMiniDumpCallback;
+ mci.CallbackParam = nullptr;
+ miniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), h, &info, &mci);
::CloseHandle(h);
}
-LONG WINAPI MyUnhandledExceptionFilter(EXCEPTION_POINTERS* exp) {
- const QString dumpFileName = QString("%1_%2.dmp").arg("crash",QDateTime::currentDateTime().toString("yyyyMMdd_hhmmss"));
- const QString dumpDirPath = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation)+"/dmp";
+LONG WINAPI MyUnhandledExceptionFilter(EXCEPTION_POINTERS *exp) {
+ const QString dumpFileName = QString("%1_%2.dmp").arg("crash", QDateTime::currentDateTime().toString("yyyyMMdd_hhmmss"));
+ const QString dumpDirPath = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + "/dmp";
const QDir dumpDir(dumpDirPath);
- if(!dumpDir.exists()){
+ if (!dumpDir.exists()) {
dumpDir.mkpath(dumpDirPath);
}
QString dumpFilePath = dumpDir.filePath(dumpFileName);
WriteDump(exp, dumpFilePath.toStdWString());
QStringList arguments;
arguments << "-crashed=" + dumpFilePath;
- QProcess::startDetached(qApp->applicationFilePath(), arguments);
+ QProcess::startDetached(QGuiApplication::applicationFilePath(), arguments);
return EXCEPTION_EXECUTE_HANDLER;
}
-#endif // APP_DUMP_H
+#pragma clang diagnostic pop
\ No newline at end of file
diff --git a/example/src/component/CircularReveal.cpp b/example/src/component/CircularReveal.cpp
index 7b5d60da..ada137b0 100644
--- a/example/src/component/CircularReveal.cpp
+++ b/example/src/component/CircularReveal.cpp
@@ -3,43 +3,43 @@
#include
#include
-CircularReveal::CircularReveal(QQuickItem* parent) : QQuickPaintedItem(parent)
-{
+CircularReveal::CircularReveal(QQuickItem *parent) : QQuickPaintedItem(parent) {
+ _target = nullptr;
+ _radius = 0;
_anim = new QPropertyAnimation(this, "radius", this);
- setVisible(false);
_anim->setDuration(333);
_anim->setEasingCurve(QEasingCurve::OutCubic);
- connect(_anim, &QPropertyAnimation::finished,this,[=](){
+ setVisible(false);
+ connect(_anim, &QPropertyAnimation::finished, this, [=]() {
update();
setVisible(false);
Q_EMIT animationFinished();
});
- connect(this,&CircularReveal::radiusChanged,this,[=](){
+ connect(this, &CircularReveal::radiusChanged, this, [=]() {
update();
});
}
-void CircularReveal::paint(QPainter* painter)
-{
+void CircularReveal::paint(QPainter *painter) {
painter->save();
painter->drawImage(QRect(0, 0, static_cast(width()), static_cast(height())), _source);
QPainterPath path;
- path.moveTo(_center.x(),_center.y());
- path.addEllipse(QPointF(_center.x(),_center.y()), _radius, _radius);
+ path.moveTo(_center.x(), _center.y());
+ path.addEllipse(QPointF(_center.x(), _center.y()), _radius, _radius);
painter->setCompositionMode(QPainter::CompositionMode_Clear);
painter->fillPath(path, Qt::black);
painter->restore();
}
-void CircularReveal::start(int w,int h,const QPoint& center,int radius){
+[[maybe_unused]] void CircularReveal::start(int w, int h, const QPoint ¢er, int radius) {
_anim->setStartValue(0);
_anim->setEndValue(radius);
_center = center;
- _grabResult = _target->grabToImage(QSize(w,h));
+ _grabResult = _target->grabToImage(QSize(w, h));
connect(_grabResult.data(), &QQuickItemGrabResult::ready, this, &CircularReveal::handleGrabResult);
}
-void CircularReveal::handleGrabResult(){
+void CircularReveal::handleGrabResult() {
_grabResult.data()->image().swap(_source);
update();
setVisible(true);
diff --git a/example/src/component/CircularReveal.h b/example/src/component/CircularReveal.h
index 589205fa..540d4876 100644
--- a/example/src/component/CircularReveal.h
+++ b/example/src/component/CircularReveal.h
@@ -1,5 +1,6 @@
-#ifndef CIRCULARREVEAL_H
-#define CIRCULARREVEAL_H
+#pragma once
+#pragma clang diagnostic push
+#pragma ide diagnostic ignored "NotImplementedFunctions"
#include
#include
@@ -7,23 +8,28 @@
#include
#include "src/stdafx.h"
-class CircularReveal : public QQuickPaintedItem
-{
- Q_OBJECT
- Q_PROPERTY_AUTO(QQuickItem*,target)
- Q_PROPERTY_AUTO(int,radius)
+class CircularReveal : public QQuickPaintedItem {
+Q_OBJECT
+Q_PROPERTY_AUTO_P(QQuickItem*, target)
+Q_PROPERTY_AUTO(int, radius)
public:
- CircularReveal(QQuickItem* parent = nullptr);
- void paint(QPainter* painter) override;
- Q_INVOKABLE void start(int w,int h,const QPoint& center,int radius);
+ explicit CircularReveal(QQuickItem *parent = nullptr);
+
+ void paint(QPainter *painter) override;
+
+ Q_INVOKABLE [[maybe_unused]] void start(int w, int h, const QPoint ¢er, int radius);
+
Q_SIGNAL void imageChanged();
+
Q_SIGNAL void animationFinished();
+
Q_SLOT void handleGrabResult();
+
private:
- QPropertyAnimation* _anim = nullptr;
+ QPropertyAnimation *_anim = nullptr;
QImage _source;
QPoint _center;
- QSharedPointer _grabResult;
+ QSharedPointer _grabResult;
};
-#endif // CIRCULARREVEAL_H
+#pragma clang diagnostic pop
\ No newline at end of file
diff --git a/example/src/component/FileWatcher.cpp b/example/src/component/FileWatcher.cpp
index a7a664a0..8b13cd27 100644
--- a/example/src/component/FileWatcher.cpp
+++ b/example/src/component/FileWatcher.cpp
@@ -1,24 +1,23 @@
#include "FileWatcher.h"
-FileWatcher::FileWatcher(QObject *parent)
- : QObject{parent}
-{
- connect(&_watcher, &QFileSystemWatcher::fileChanged, this, [=](const QString &path){
+FileWatcher::FileWatcher(QObject *parent) : QObject{parent} {
+ connect(&_watcher, &QFileSystemWatcher::fileChanged, this, [=](const QString &path) {
Q_EMIT fileChanged();
clean();
_watcher.addPath(_path);
});
- connect(this,&FileWatcher::pathChanged,this,[=](){
+ connect(this, &FileWatcher::pathChanged, this, [=]() {
clean();
- _watcher.addPath(_path.replace("file:///",""));
+ _watcher.addPath(_path.replace("file:///", ""));
});
- if(!_path.isEmpty()){
+ if (!_path.isEmpty()) {
_watcher.addPath(_path);
}
}
-void FileWatcher::clean(){
- foreach (const QString &item, _watcher.files()) {
+void FileWatcher::clean() {
+ for (int i = 0; i <= _watcher.files().size() - 1; ++i) {
+ auto item = _watcher.files().at(i);
_watcher.removePath(item);
}
}
diff --git a/example/src/component/FileWatcher.h b/example/src/component/FileWatcher.h
index d3bb95cc..14f40fb5 100644
--- a/example/src/component/FileWatcher.h
+++ b/example/src/component/FileWatcher.h
@@ -1,22 +1,25 @@
-#ifndef FILEWATCHER_H
-#define FILEWATCHER_H
+#pragma once
+#pragma clang diagnostic push
+#pragma ide diagnostic ignored "NotImplementedFunctions"
#include
#include
#include
#include "src/stdafx.h"
-class FileWatcher : public QObject
-{
- Q_OBJECT
- Q_PROPERTY_AUTO(QString,path);
+class FileWatcher : public QObject {
+Q_OBJECT
+Q_PROPERTY_AUTO(QString, path);
public:
explicit FileWatcher(QObject *parent = nullptr);
+
Q_SIGNAL void fileChanged();
+
private:
void clean();
+
private:
QFileSystemWatcher _watcher;
};
-#endif // FILEWATCHER_H
+#pragma clang diagnostic pop
\ No newline at end of file
diff --git a/example/src/component/FpsItem.cpp b/example/src/component/FpsItem.cpp
index 23ceb37a..84a5fd66 100644
--- a/example/src/component/FpsItem.cpp
+++ b/example/src/component/FpsItem.cpp
@@ -3,16 +3,16 @@
#include
#include
-FpsItem::FpsItem()
-{
- QTimer *timer = new QTimer(this);
- connect(timer, &QTimer::timeout, this, [this]{
+FpsItem::FpsItem() {
+ _fps = 0;
+ auto *timer = new QTimer(this);
+ connect(timer, &QTimer::timeout, this, [this] {
fps(_frameCount);
_frameCount = 0;
});
- connect(this, &QQuickItem::windowChanged, this, [this]{
- if (window()){
- connect(window(), &QQuickWindow::afterRendering, this, [this]{ _frameCount++; }, Qt::DirectConnection);
+ connect(this, &QQuickItem::windowChanged, this, [this] {
+ if (window()) {
+ connect(window(), &QQuickWindow::afterRendering, this, [this] { _frameCount++; }, Qt::DirectConnection);
}
});
timer->start(1000);
diff --git a/example/src/component/FpsItem.h b/example/src/component/FpsItem.h
index 4b51cdaf..e30f63bc 100644
--- a/example/src/component/FpsItem.h
+++ b/example/src/component/FpsItem.h
@@ -1,19 +1,15 @@
-#ifndef FPSITEM_H
-#define FPSITEM_H
+#pragma once
#include
#include "src/stdafx.h"
-class FpsItem : public QQuickItem
-{
- Q_OBJECT
- Q_PROPERTY_AUTO(int,fps)
+class FpsItem : public QQuickItem {
+Q_OBJECT
+Q_PROPERTY_AUTO(int, fps)
public:
FpsItem();
private:
int _frameCount = 0;
-};
-
-#endif // FPSITEM_H
+};
\ No newline at end of file
diff --git a/example/src/helper/InitializrHelper.cpp b/example/src/helper/InitializrHelper.cpp
index 4567c81b..59904bbd 100644
--- a/example/src/helper/InitializrHelper.cpp
+++ b/example/src/helper/InitializrHelper.cpp
@@ -3,55 +3,47 @@
#include
#include
-InitializrHelper::InitializrHelper(QObject *parent) : QObject(parent)
-{
+[[maybe_unused]] InitializrHelper::InitializrHelper(QObject *parent) : QObject(parent) {
}
InitializrHelper::~InitializrHelper() = default;
-bool InitializrHelper::copyDir(const QDir& fromDir, const QDir& toDir, bool coverIfFileExists){
- QDir _formDir = fromDir;
+bool InitializrHelper::copyDir(const QDir &fromDir, const QDir &toDir, bool coverIfFileExists) {
+ const QDir &_formDir = fromDir;
QDir _toDir = toDir;
- if(!_toDir.exists())
- {
- if(!_toDir.mkdir(toDir.absolutePath()))
+ if (!_toDir.exists()) {
+ if (!_toDir.mkdir(toDir.absolutePath()))
return false;
}
QFileInfoList fileInfoList = _formDir.entryInfoList();
- foreach(QFileInfo fileInfo, fileInfoList)
- {
- if(fileInfo.fileName() == "." || fileInfo.fileName() == "..")
- continue;
- if(fileInfo.isDir())
- {
- if(!copyDir(fileInfo.filePath(), _toDir.filePath(fileInfo.fileName()),true))
- return false;
- }
- else
- {
- if(coverIfFileExists && _toDir.exists(fileInfo.fileName()))
- {
- _toDir.remove(fileInfo.fileName());
- }
- if(!QFile::copy(fileInfo.filePath(), _toDir.filePath(fileInfo.fileName())))
- {
- return false;
+ foreach(QFileInfo fileInfo, fileInfoList) {
+ if (fileInfo.fileName() == "." || fileInfo.fileName() == "..")
+ continue;
+ if (fileInfo.isDir()) {
+ if (!copyDir(fileInfo.filePath(), _toDir.filePath(fileInfo.fileName()), true))
+ return false;
+ } else {
+ if (coverIfFileExists && _toDir.exists(fileInfo.fileName())) {
+ _toDir.remove(fileInfo.fileName());
+ }
+ if (!QFile::copy(fileInfo.filePath(), _toDir.filePath(fileInfo.fileName()))) {
+ return false;
+ }
}
}
- }
return true;
}
-template
-void InitializrHelper::templateToFile(const QString& source,const QString& dest,Args &&...args){
+template
+void InitializrHelper::templateToFile(const QString &source, const QString &dest, Args &&...args) {
QFile file(source);
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&file);
QString content = in.readAll().arg(std::forward(args)...);
file.close();
QDir outputDir = QFileInfo(dest).absoluteDir();
- if(!outputDir.exists()){
+ if (!outputDir.exists()) {
outputDir.mkpath(outputDir.absolutePath());
}
QFile outputFile(dest);
@@ -67,43 +59,43 @@ void InitializrHelper::templateToFile(const QString& source,const QString& dest,
}
}
-void InitializrHelper::copyFile(const QString& source,const QString& dest){
- QFile::copy(source,dest);
+void InitializrHelper::copyFile(const QString &source, const QString &dest) {
+ QFile::copy(source, dest);
QFile::setPermissions(dest, QFile::WriteOwner | QFile::WriteUser | QFile::WriteGroup | QFile::WriteOther);
}
-void InitializrHelper::generate(const QString& name,const QString& path){
- if(name.isEmpty()){
+[[maybe_unused]] void InitializrHelper::generate(const QString &name, const QString &path) {
+ if (name.isEmpty()) {
error(tr("The name cannot be empty"));
return;
}
- if(path.isEmpty()){
+ if (path.isEmpty()) {
error(tr("The creation path cannot be empty"));
return;
}
QDir projectRootDir(path);
- if(!projectRootDir.exists()){
+ if (!projectRootDir.exists()) {
error(tr("The path does not exist"));
return;
}
QString projectPath = projectRootDir.filePath(name);
QDir projectDir(projectPath);
- if(projectDir.exists()){
+ if (projectDir.exists()) {
error(tr("%1 folder already exists").arg(name));
return;
}
projectDir.mkpath(projectPath);
QDir fluentDir(projectDir.filePath("FluentUI"));
- copyDir(QDir(QGuiApplication::applicationDirPath()+"/source"),fluentDir);
- templateToFile(":/example/res/template/CMakeLists.txt.in",projectDir.filePath("CMakeLists.txt"),name);
- templateToFile(":/example/res/template/src/CMakeLists.txt.in",projectDir.filePath("src/CMakeLists.txt"),name);
- templateToFile(":/example/res/template/src/main.cpp.in",projectDir.filePath("src/main.cpp"),name);
- templateToFile(":/example/res/template/src/main.qml.in",projectDir.filePath("src/main.qml"),name);
- templateToFile(":/example/res/template/src/en_US.ts.in",projectDir.filePath("src/"+name+"_en_US.ts"),name);
- templateToFile(":/example/res/template/src/zh_CN.ts.in",projectDir.filePath("src/"+name+"_zh_CN.ts"),name);
- copyFile(":/example/res/template/src/App.qml.in",projectDir.filePath("src/App.qml"));
- copyFile(":/example/res/template/src/qml.qrc.in",projectDir.filePath("src/qml.qrc"));
- copyFile(":/example/res/template/src/logo.ico.in",projectDir.filePath("src/logo.ico"));
- copyFile(":/example/res/template/src/README.md.in",projectDir.filePath("src/README.md"));
+ copyDir(QDir(QGuiApplication::applicationDirPath() + "/source"), fluentDir);
+ templateToFile(":/example/res/template/CMakeLists.txt.in", projectDir.filePath("CMakeLists.txt"), name);
+ templateToFile(":/example/res/template/src/CMakeLists.txt.in", projectDir.filePath("src/CMakeLists.txt"), name);
+ templateToFile(":/example/res/template/src/main.cpp.in", projectDir.filePath("src/main.cpp"), name);
+ templateToFile(":/example/res/template/src/main.qml.in", projectDir.filePath("src/main.qml"), name);
+ templateToFile(":/example/res/template/src/en_US.ts.in", projectDir.filePath("src/" + name + "_en_US.ts"), name);
+ templateToFile(":/example/res/template/src/zh_CN.ts.in", projectDir.filePath("src/" + name + "_zh_CN.ts"), name);
+ copyFile(":/example/res/template/src/App.qml.in", projectDir.filePath("src/App.qml"));
+ copyFile(":/example/res/template/src/qml.qrc.in", projectDir.filePath("src/qml.qrc"));
+ copyFile(":/example/res/template/src/logo.ico.in", projectDir.filePath("src/logo.ico"));
+ copyFile(":/example/res/template/src/README.md.in", projectDir.filePath("src/README.md"));
return this->success(projectPath);
}
diff --git a/example/src/helper/InitializrHelper.h b/example/src/helper/InitializrHelper.h
index 7daea951..2a9c250d 100644
--- a/example/src/helper/InitializrHelper.h
+++ b/example/src/helper/InitializrHelper.h
@@ -1,26 +1,34 @@
-#ifndef INITIALIZRHELPER_H
-#define INITIALIZRHELPER_H
+#pragma clang diagnostic push
+#pragma ide diagnostic ignored "NotImplementedFunctions"
+#pragma once
#include
#include
#include
#include "src/singleton.h"
-class InitializrHelper : public QObject
-{
- Q_OBJECT
+class InitializrHelper : public QObject {
+Q_OBJECT
private:
- explicit InitializrHelper(QObject* parent = nullptr);
- bool copyDir(const QDir& fromDir, const QDir& toDir, bool coverIfFileExists = true);
- void copyFile(const QString& source,const QString& dest);
- template
- void templateToFile(const QString& source,const QString& dest,Args &&...args);
+ [[maybe_unused]] explicit InitializrHelper(QObject *parent = nullptr);
+
+ bool copyDir(const QDir &fromDir, const QDir &toDir, bool coverIfFileExists = true);
+
+ static void copyFile(const QString &source, const QString &dest);
+
+ template
+ void templateToFile(const QString &source, const QString &dest, Args &&...args);
+
public:
- SINGLETON(InitializrHelper)
+SINGLETON(InitializrHelper)
+
~InitializrHelper() override;
- Q_INVOKABLE void generate(const QString& name,const QString& path);
- Q_SIGNAL void error(const QString& message);
- Q_SIGNAL void success(const QString& path);
+
+ Q_INVOKABLE [[maybe_unused]] void generate(const QString &name, const QString &path);
+
+ Q_SIGNAL void error(const QString &message);
+
+ Q_SIGNAL void success(const QString &path);
};
-#endif // INITIALIZRHELPER_H
+#pragma clang diagnostic pop
\ No newline at end of file
diff --git a/example/src/helper/Log.cpp b/example/src/helper/Log.cpp
index 688db453..3f9ddd66 100644
--- a/example/src/helper/Log.cpp
+++ b/example/src/helper/Log.cpp
@@ -11,8 +11,11 @@
#include
#include
#include "Version.h"
+
#ifdef WIN32
+
#include
+
#else
#include
#endif
@@ -26,7 +29,7 @@
#endif
static QString g_app = {};
-static QString g_file_path= {};
+static QString g_file_path = {};
static bool g_logError = false;
static std::unique_ptr g_logFile = nullptr;
@@ -35,15 +38,14 @@ static std::unique_ptr g_logStream = nullptr;
static int g_logLevel = 4;
std::map logLevelMap = {
- {QtFatalMsg,0},
- {QtCriticalMsg,1},
- {QtWarningMsg,2},
- {QtInfoMsg,3},
- {QtDebugMsg,4}
+ {QtFatalMsg, 0},
+ {QtCriticalMsg, 1},
+ {QtWarningMsg, 2},
+ {QtInfoMsg, 3},
+ {QtDebugMsg, 4}
};
-QString Log::prettyProductInfoWrapper()
-{
+QString Log::prettyProductInfoWrapper() {
auto productName = QSysInfo::prettyProductName();
#if QT_VERSION < QT_VERSION_CHECK(6, 5, 0)
#if defined(Q_OS_MACOS)
@@ -70,20 +72,17 @@ QString Log::prettyProductInfoWrapper()
#endif
#endif
#if defined(Q_OS_WIN)
- QSettings regKey {QString::fromUtf8("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"), QSettings::NativeFormat};
+ QSettings regKey{QString::fromUtf8(R"(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion)"), QSettings::NativeFormat};
if (regKey.contains(QString::fromUtf8("CurrentBuildNumber"))) {
auto buildNumber = regKey.value(QString::fromUtf8("CurrentBuildNumber")).toInt();
if (buildNumber > 0) {
if (buildNumber < 9200) {
productName = QString::fromUtf8("Windows 7 build %1").arg(buildNumber);
- }
- else if (buildNumber < 10240) {
+ } else if (buildNumber < 10240) {
productName = QString::fromUtf8("Windows 8 build %1").arg(buildNumber);
- }
- else if (buildNumber < 22000) {
+ } else if (buildNumber < 22000) {
productName = QString::fromUtf8("Windows 10 build %1").arg(buildNumber);
- }
- else {
+ } else {
productName = QString::fromUtf8("Windows 11 build %1").arg(buildNumber);
}
}
@@ -92,56 +91,55 @@ QString Log::prettyProductInfoWrapper()
return productName;
}
-static inline void messageHandler(const QtMsgType type, const QMessageLogContext &context, const QString &message)
-{
- if(message == "Could not get the INetworkConnection instance for the adapter GUID."){
+static inline void messageHandler(const QtMsgType type, const QMessageLogContext &context, const QString &message) {
+ if (message == "Could not get the INetworkConnection instance for the adapter GUID.") {
return;
}
- if(logLevelMap[type]>g_logLevel){
+ if (logLevelMap[type] > g_logLevel) {
return;
}
if (!message.isEmpty()) {
QString levelName;
switch (type) {
- case QtDebugMsg:
- levelName = QStringLiteral("Debug");
- break;
- case QtInfoMsg:
- levelName = QStringLiteral("Info");
- break;
- case QtWarningMsg:
- levelName = QStringLiteral("Warning");
- break;
- case QtCriticalMsg:
- levelName = QStringLiteral("Critical");
- break;
- case QtFatalMsg:
- levelName = QStringLiteral("Fatal");
- break;
+ case QtDebugMsg:
+ levelName = QStringLiteral("Debug");
+ break;
+ case QtInfoMsg:
+ levelName = QStringLiteral("Info");
+ break;
+ case QtWarningMsg:
+ levelName = QStringLiteral("Warning");
+ break;
+ case QtCriticalMsg:
+ levelName = QStringLiteral("Critical");
+ break;
+ case QtFatalMsg:
+ levelName = QStringLiteral("Fatal");
+ break;
}
QString fileAndLineLogStr;
- if(context.file){
+ if (context.file) {
std::string strFileTmp = context.file;
- const char* ptr = strrchr(strFileTmp.c_str(), '/');
+ const char *ptr = strrchr(strFileTmp.c_str(), '/');
if (nullptr != ptr) {
char fn[512] = {0};
sprintf(fn, "%s", ptr + 1);
strFileTmp = fn;
}
- const char* ptrTmp = strrchr(strFileTmp.c_str(), '\\');
+ const char *ptrTmp = strrchr(strFileTmp.c_str(), '\\');
if (nullptr != ptrTmp) {
char fn[512] = {0};
sprintf(fn, "%s", ptrTmp + 1);
strFileTmp = fn;
}
- fileAndLineLogStr = QString::fromStdString("[%1:%2]").arg(QString::fromStdString(strFileTmp),QString::number(context.line));
+ fileAndLineLogStr = QString::fromStdString("[%1:%2]").arg(QString::fromStdString(strFileTmp), QString::number(context.line));
}
const QString finalMessage = QString::fromStdString("%1[%2]%3[%4]:%5").arg(
- QDateTime::currentDateTime().toString("yyyy/MM/dd hh:mm:ss.zzz"),
- levelName,
- fileAndLineLogStr,
- QString::number(reinterpret_cast(QThread::currentThreadId())),
- message);
+ QDateTime::currentDateTime().toString("yyyy/MM/dd hh:mm:ss.zzz"),
+ levelName,
+ fileAndLineLogStr,
+ QString::number(reinterpret_cast(QThread::currentThreadId())),
+ message);
if ((type == QtInfoMsg) || (type == QtDebugMsg)) {
std::cout << qPrintable(finalMessage) << std::endl;
} else {
@@ -168,8 +166,7 @@ static inline void messageHandler(const QtMsgType type, const QMessageLogContext
}
}
-void Log::setup(char *argv[],const QString &app,int level)
-{
+void Log::setup(char *argv[], const QString &app, int level) {
Q_ASSERT(!app.isEmpty());
if (app.isEmpty()) {
return;
@@ -182,30 +179,30 @@ void Log::setup(char *argv[],const QString &app,int level)
QString applicationPath = QString::fromStdString(argv[0]);
once = true;
g_app = app;
- const QString logFileName = QString("%1_%2.log").arg(g_app,QDateTime::currentDateTime().toString("yyyyMMdd"));
- const QString logDirPath = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation)+"/log";
+ const QString logFileName = QString("%1_%2.log").arg(g_app, QDateTime::currentDateTime().toString("yyyyMMdd"));
+ const QString logDirPath = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + "/log";
const QDir logDir(logDirPath);
- if(!logDir.exists()){
+ if (!logDir.exists()) {
logDir.mkpath(logDirPath);
}
g_file_path = logDir.filePath(logFileName);
qInstallMessageHandler(messageHandler);
- qInfo()<<"===================================================";
- qInfo()<<"[AppName]"<
-namespace Log
-{
+namespace Log {
QString prettyProductInfoWrapper();
- void setup(char *argv[], const QString &app,int level = 4);
-}
-#endif // LOG_H
+ void setup(char *argv[], const QString &app, int level = 4);
+}
\ No newline at end of file
diff --git a/example/src/helper/Network.cpp b/example/src/helper/Network.cpp
index 5d345fc9..7f2ebc04 100644
--- a/example/src/helper/Network.cpp
+++ b/example/src/helper/Network.cpp
@@ -1,3 +1,7 @@
+#pragma clang diagnostic push
+#pragma ide diagnostic ignored "UnusedParameter"
+#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection"
+
#include "Network.h"
#include
@@ -17,175 +21,174 @@
#include
#include
#include
+#include
-NetworkCallable::NetworkCallable(QObject *parent):QObject{parent}{
+
+NetworkCallable::NetworkCallable(QObject *parent) : QObject{parent} {
}
-QString NetworkParams::method2String(){
+QString NetworkParams::method2String() const {
switch (_method) {
- case METHOD_GET:
- return "GET";
- case METHOD_HEAD:
- return "HEAD";
- case METHOD_POST:
- return "POST";
- case METHOD_PUT:
- return "PUT";
- case METHOD_PATCH:
- return "PATCH";
- case METHOD_DELETE:
- return "DELETE";
- default:
- return "";
+ case METHOD_GET:
+ return "GET";
+ case METHOD_HEAD:
+ return "HEAD";
+ case METHOD_POST:
+ return "POST";
+ case METHOD_PUT:
+ return "PUT";
+ case METHOD_PATCH:
+ return "PATCH";
+ case METHOD_DELETE:
+ return "DELETE";
+ default:
+ return "";
}
}
-int NetworkParams::getTimeout(){
- if(_timeout != -1){
+int NetworkParams::getTimeout() const {
+ if (_timeout != -1) {
return _timeout;
}
return Network::getInstance()->timeout();
}
-int NetworkParams::getRetry(){
- if(_retry != -1){
+int NetworkParams::getRetry() const {
+ if (_retry != -1) {
return _retry;
}
return Network::getInstance()->retry();
}
-bool NetworkParams::getOpenLog(){
- if(!_openLog.isNull()){
+bool NetworkParams::getOpenLog() const {
+ if (!_openLog.isNull()) {
return _openLog.toBool();
}
return Network::getInstance()->openLog();
}
FluDownloadParam::FluDownloadParam(QObject *parent)
- : QObject{parent}
-{
+ : QObject{parent} {
}
-FluDownloadParam::FluDownloadParam(QString destPath,bool append,QObject *parent)
- : QObject{parent}
-{
- this->_destPath = destPath;
+FluDownloadParam::FluDownloadParam(QString destPath, bool append, QObject *parent)
+ : QObject{parent} {
+ this->_destPath = std::move(destPath);
this->_append = append;
}
-NetworkParams::NetworkParams(QObject *parent)
- : QObject{parent}
-{
+NetworkParams::NetworkParams(QObject *parent) : QObject{parent} {
+ _method = NetworkParams::Method::METHOD_GET;
+ _type = NetworkParams::Type::TYPE_BODY;
}
-NetworkParams::NetworkParams(QString url,Type type,Method method,QObject *parent)
- : QObject{parent}
-{
+NetworkParams::NetworkParams(QString url, Type type, Method method, QObject *parent)
+ : QObject{parent} {
this->_method = method;
- this->_url = url;
+ this->_url = std::move(url);
this->_type = type;
}
-NetworkParams* NetworkParams::add(QString key,QVariant val){
- _paramMap.insert(key,val);
+NetworkParams *NetworkParams::add(const QString &key, const QVariant &val) {
+ _paramMap.insert(key, val);
return this;
}
-NetworkParams* NetworkParams::addFile(QString key,QVariant val){
- _fileMap.insert(key,val);
+NetworkParams *NetworkParams::addFile(const QString &key, const QVariant &val) {
+ _fileMap.insert(key, val);
return this;
}
-NetworkParams* NetworkParams::addHeader(QString key,QVariant val){
- _headerMap.insert(key,val);
+NetworkParams *NetworkParams::addHeader(const QString &key, const QVariant &val) {
+ _headerMap.insert(key, val);
return this;
}
-NetworkParams* NetworkParams::addQuery(QString key,QVariant val){
- _queryMap.insert(key,val);
+NetworkParams *NetworkParams::addQuery(const QString &key, const QVariant &val) {
+ _queryMap.insert(key, val);
return this;
}
-NetworkParams* NetworkParams::setBody(QString val){
- _body = val;
+NetworkParams *NetworkParams::setBody(QString val) {
+ _body = std::move(val);
return this;
}
-NetworkParams* NetworkParams::setTimeout(int val){
+NetworkParams *NetworkParams::setTimeout(int val) {
_timeout = val;
return this;
}
-NetworkParams* NetworkParams::setRetry(int val){
+NetworkParams *NetworkParams::setRetry(int val) {
_retry = val;
return this;
}
-NetworkParams* NetworkParams::setCacheMode(int val){
+NetworkParams *NetworkParams::setCacheMode(int val) {
_cacheMode = val;
return this;
}
-NetworkParams* NetworkParams::toDownload(QString destPath,bool append){
- _downloadParam = new FluDownloadParam(destPath,append,this);
+NetworkParams *NetworkParams::toDownload(QString destPath, bool append) {
+ _downloadParam = new FluDownloadParam(std::move(destPath), append, this);
return this;
}
-NetworkParams* NetworkParams::bind(QObject* target){
+NetworkParams *NetworkParams::bind(QObject *target) {
_target = target;
return this;
}
-NetworkParams* NetworkParams::openLog(QVariant val){
- _openLog = val;
+NetworkParams *NetworkParams::openLog(QVariant val) {
+ _openLog = std::move(val);
return this;
}
-QString NetworkParams::buildCacheKey(){
+QString NetworkParams::buildCacheKey() const {
QJsonObject obj;
- obj.insert("url",_url);
- obj.insert("method",method2String());
- obj.insert("body",_body);
- obj.insert("query",QJsonDocument::fromVariant(_queryMap).object());
- obj.insert("param",QJsonDocument::fromVariant(_paramMap).object());
- obj.insert("header",QJsonDocument::fromVariant(_headerMap).object());
- obj.insert("file",QJsonDocument::fromVariant(_fileMap).object());
- if(_downloadParam){
+ obj.insert("url", _url);
+ obj.insert("method", method2String());
+ obj.insert("body", _body);
+ obj.insert("query", QJsonDocument::fromVariant(_queryMap).object());
+ obj.insert("param", QJsonDocument::fromVariant(_paramMap).object());
+ obj.insert("header", QJsonDocument::fromVariant(_headerMap).object());
+ obj.insert("file", QJsonDocument::fromVariant(_fileMap).object());
+ if (_downloadParam) {
QJsonObject downObj;
- downObj.insert("destPath",_downloadParam->_destPath);
- downObj.insert("append",_downloadParam->_append);
- obj.insert("download",downObj);
+ downObj.insert("destPath", _downloadParam->_destPath);
+ downObj.insert("append", _downloadParam->_append);
+ obj.insert("download", downObj);
}
QByteArray data = QJsonDocument(obj).toJson(QJsonDocument::Compact);
return QCryptographicHash::hash(data, QCryptographicHash::Sha256).toHex();
}
-void NetworkParams::go(NetworkCallable* callable){
+void NetworkParams::go(NetworkCallable *callable) {
QJSValueList data;
- data<newQObject(this);
+ data << qjsEngine(callable)->newQObject(this);
Network::getInstance()->_interceptor.call(data);
- if(_downloadParam){
- Network::getInstance()->handleDownload(this,callable);
- }else{
- Network::getInstance()->handle(this,callable);
+ if (_downloadParam) {
+ Network::getInstance()->handleDownload(this, callable);
+ } else {
+ Network::getInstance()->handle(this, callable);
}
}
-void Network::handle(NetworkParams* params,NetworkCallable* c){
+void Network::handle(NetworkParams *params, NetworkCallable *c) {
QPointer callable(c);
- QThreadPool::globalInstance()->start([=](){
- if(!callable.isNull()){
+ QThreadPool::globalInstance()->start([=]() {
+ if (!callable.isNull()) {
callable->start();
}
QString cacheKey = params->buildCacheKey();
- if(params->_cacheMode == NetworkType::CacheMode::FirstCacheThenRequest && cacheExists(cacheKey)){
- if(!callable.isNull()){
+ if (params->_cacheMode == NetworkType::CacheMode::FirstCacheThenRequest && cacheExists(cacheKey)) {
+ if (!callable.isNull()) {
callable->cache(readCache(cacheKey));
}
}
- if(params->_cacheMode == NetworkType::CacheMode::IfNoneCacheRequest && cacheExists(cacheKey)){
- if(!callable.isNull()){
+ if (params->_cacheMode == NetworkType::CacheMode::IfNoneCacheRequest && cacheExists(cacheKey)) {
+ if (!callable.isNull()) {
callable->cache(readCache(cacheKey));
callable->finish();
params->deleteLater();
@@ -195,131 +198,130 @@ void Network::handle(NetworkParams* params,NetworkCallable* c){
QNetworkAccessManager manager;
manager.setTransferTimeout(params->getTimeout());
QEventLoop loop;
- connect(&manager,&QNetworkAccessManager::finished,&manager,[&loop](QNetworkReply *reply){loop.quit();});
- for (int i = 0; i < params->getRetry(); ++i) {
+ connect(&manager, &QNetworkAccessManager::finished, &manager, [&loop](QNetworkReply *reply) { loop.quit(); });
+ for (int i = 0; i <= params->getRetry() - 1; ++i) {
QUrl url(params->_url);
- addQueryParam(&url,params->_queryMap);
+ addQueryParam(&url, params->_queryMap);
QNetworkRequest request(url);
- addHeaders(&request,params->_headerMap);
- QNetworkReply* reply;
- sendRequest(&manager,request,params,reply,i==0,callable);
- if(!QPointer(qApp)){
+ addHeaders(&request, params->_headerMap);
+ QNetworkReply *reply;
+ sendRequest(&manager, request, params, reply, i == 0, callable);
+ if (!QPointer(QGuiApplication::instance())) {
reply->deleteLater();
reply = nullptr;
return;
}
- auto abortCallable = [&loop,reply,&i,params]{
- if(reply){
+ auto abortCallable = [reply, &i, params] {
+ if (reply) {
i = params->getRetry();
reply->abort();
}
};
QMetaObject::Connection conn_destroyed = {};
QMetaObject::Connection conn_quit = {};
- if(params->_target){
- conn_destroyed = connect(params->_target,&QObject::destroyed,&manager,abortCallable);
+ if (params->_target) {
+ conn_destroyed = connect(params->_target, &QObject::destroyed, &manager, abortCallable);
}
- conn_quit = connect(qApp,&QGuiApplication::aboutToQuit,&manager, abortCallable);
+ conn_quit = connect(QGuiApplication::instance(), &QGuiApplication::aboutToQuit, &manager, abortCallable);
loop.exec();
- if(conn_destroyed){
+ if (conn_destroyed) {
disconnect(conn_destroyed);
}
- if(conn_quit){
+ if (conn_quit) {
disconnect(conn_quit);
}
QString response;
- if(params->_method == NetworkParams::METHOD_HEAD){
+ if (params->_method == NetworkParams::METHOD_HEAD) {
response = headerList2String(reply->rawHeaderPairs());
- }else{
- if(reply->isOpen()){
+ } else {
+ if (reply->isOpen()) {
response = QString::fromUtf8(reply->readAll());
}
}
int httpStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
- if(httpStatus == 200){
- if(!callable.isNull()){
- if(params->_cacheMode != NetworkType::CacheMode::NoCache){
- saveResponse(cacheKey,response);
+ if (httpStatus == 200) {
+ if (!callable.isNull()) {
+ if (params->_cacheMode != NetworkType::CacheMode::NoCache) {
+ saveResponse(cacheKey, response);
}
callable->success(response);
}
- printRequestEndLog(request,params,reply,response);
+ printRequestEndLog(request, params, reply, response);
break;
- }else{
- if(i == params->getRetry()-1){
- if(!callable.isNull()){
- if(params->_cacheMode == NetworkType::CacheMode::RequestFailedReadCache && cacheExists(cacheKey)){
- if(!callable.isNull()){
+ } else {
+ if (i == params->getRetry() - 1) {
+ if (!callable.isNull()) {
+ if (params->_cacheMode == NetworkType::CacheMode::RequestFailedReadCache && cacheExists(cacheKey)) {
+ if (!callable.isNull()) {
callable->cache(readCache(cacheKey));
}
}
- callable->error(httpStatus,reply->errorString(),response);
+ callable->error(httpStatus, reply->errorString(), response);
}
- printRequestEndLog(request,params,reply,response);
+ printRequestEndLog(request, params, reply, response);
}
}
reply->deleteLater();
}
params->deleteLater();
- if(!callable.isNull()){
+ if (!callable.isNull()) {
callable->finish();
}
});
}
-void Network::handleDownload(NetworkParams* params,NetworkCallable* c){
+void Network::handleDownload(NetworkParams *params, NetworkCallable *c) {
QPointer callable(c);
- QThreadPool::globalInstance()->start([=](){
- if(!callable.isNull()){
+ QThreadPool::globalInstance()->start([=]() {
+ if (!callable.isNull()) {
callable->start();
}
QString cacheKey = params->buildCacheKey();
QUrl url(params->_url);
QNetworkAccessManager manager;
manager.setTransferTimeout(params->getTimeout());
- addQueryParam(&url,params->_queryMap);
+ addQueryParam(&url, params->_queryMap);
QNetworkRequest request(url);
- addHeaders(&request,params->_headerMap);
+ addHeaders(&request, params->_headerMap);
QString cachePath = getCacheFilePath(cacheKey);
QString destPath = params->_downloadParam->_destPath;
- QFile* destFile = new QFile(destPath);
- QFile* cacheFile = new QFile(cachePath);
- bool isOpen = false;
- qint64 seek = 0;
- if(cacheFile->exists() && destFile->exists() && params->_downloadParam->_append){
+ auto *destFile = new QFile(destPath);
+ auto *cacheFile = new QFile(cachePath);
+ bool isOpen;
+ qint64 seek;
+ if (cacheFile->exists() && destFile->exists() && params->_downloadParam->_append) {
QJsonObject cacheInfo = QJsonDocument::fromJson(readCache(cacheKey).toUtf8()).object();
- qint64 fileSize = cacheInfo.value("fileSize").toDouble();
- qint64 contentLength = cacheInfo.value("contentLength").toDouble();
- if(fileSize == contentLength && destFile->size() == contentLength){
- if(!callable.isNull()){
- callable->downloadProgress(fileSize,contentLength);
+ qint64 fileSize = qRound(cacheInfo.value("fileSize").toDouble());
+ qint64 contentLength = qRound(cacheInfo.value("contentLength").toDouble());
+ if (fileSize == contentLength && destFile->size() == contentLength) {
+ if (!callable.isNull()) {
+ callable->downloadProgress(fileSize, contentLength);
callable->success(destPath);
callable->finish();
}
return;
}
- if(fileSize==destFile->size()){
+ if (fileSize == destFile->size()) {
request.setRawHeader("Range", QString("bytes=%1-").arg(fileSize).toUtf8());
seek = fileSize;
- isOpen = destFile->open(QIODevice::WriteOnly|QIODevice::Append);
- }else{
- isOpen = destFile->open(QIODevice::WriteOnly|QIODevice::Truncate);
+ isOpen = destFile->open(QIODevice::WriteOnly | QIODevice::Append);
+ } else {
+ isOpen = destFile->open(QIODevice::WriteOnly | QIODevice::Truncate);
}
- }else{
- isOpen = destFile->open(QIODevice::WriteOnly|QIODevice::Truncate);
+ } else {
+ isOpen = destFile->open(QIODevice::WriteOnly | QIODevice::Truncate);
}
- if(!isOpen){
- if(!callable.isNull()){
- callable->error(-1,"device not open","");
+ if (!isOpen) {
+ if (!callable.isNull()) {
+ callable->error(-1, "device not open", "");
callable->finish();
}
return;
}
- if(params->_downloadParam->_append){
- if (!cacheFile->open(QIODevice::WriteOnly|QIODevice::Truncate))
- {
- if(!callable.isNull()){
- callable->error(-1,"cache file device not open","");
+ if (params->_downloadParam->_append) {
+ if (!cacheFile->open(QIODevice::WriteOnly | QIODevice::Truncate)) {
+ if (!callable.isNull()) {
+ callable->error(-1, "cache file device not open", "");
callable->finish();
}
return;
@@ -329,73 +331,72 @@ void Network::handleDownload(NetworkParams* params,NetworkCallable* c){
QNetworkReply *reply = manager.get(request);
destFile->setParent(reply);
cacheFile->setParent(reply);
- auto abortCallable = [&loop,reply,params]{
- if(reply){
+ auto abortCallable = [reply] {
+ if (reply) {
reply->abort();
}
};
- connect(&manager,&QNetworkAccessManager::finished,&manager,[&loop](QNetworkReply *reply){loop.quit();});
- connect(qApp,&QGuiApplication::aboutToQuit,&manager, [&loop,reply](){reply->abort(),loop.quit();});
+ connect(&manager, &QNetworkAccessManager::finished, &manager, [&loop](QNetworkReply *reply) { loop.quit(); });
+ connect(QGuiApplication::instance(), &QGuiApplication::aboutToQuit, &manager, [&loop, reply]() { reply->abort(), loop.quit(); });
QMetaObject::Connection conn_destroyed = {};
QMetaObject::Connection conn_quit = {};
- if(params->_target){
- conn_destroyed = connect(params->_target,&QObject::destroyed,&manager,abortCallable);
+ if (params->_target) {
+ conn_destroyed = connect(params->_target, &QObject::destroyed, &manager, abortCallable);
}
- conn_quit = connect(qApp,&QGuiApplication::aboutToQuit,&manager, abortCallable);
- connect(reply,&QNetworkReply::readyRead,reply,[reply,seek,destFile,cacheFile,callable]{
- if (!reply || !destFile || reply->error() != QNetworkReply::NoError)
- {
+ conn_quit = connect(QGuiApplication::instance(), &QGuiApplication::aboutToQuit, &manager, abortCallable);
+ connect(reply, &QNetworkReply::readyRead, reply, [reply, seek, destFile, cacheFile, callable] {
+ if (!reply || !destFile || reply->error() != QNetworkReply::NoError) {
return;
}
QMap downInfo;
- qint64 contentLength = reply->header(QNetworkRequest::ContentLengthHeader).toLongLong()+seek;
- downInfo.insert("contentLength",contentLength);
+ qint64 contentLength = reply->header(QNetworkRequest::ContentLengthHeader).toLongLong() + seek;
+ downInfo.insert("contentLength", contentLength);
QString eTag = reply->header(QNetworkRequest::ETagHeader).toString();
- downInfo.insert("eTag",eTag);
+ downInfo.insert("eTag", eTag);
destFile->write(reply->readAll());
destFile->flush();
- downInfo.insert("fileSize",destFile->size());
- if(cacheFile->isOpen()){
+ downInfo.insert("fileSize", destFile->size());
+ if (cacheFile->isOpen()) {
cacheFile->resize(0);
cacheFile->write(QJsonDocument::fromVariant(QVariant(downInfo)).toJson().toBase64());
cacheFile->flush();
}
- if(!callable.isNull()){
- callable->downloadProgress(destFile->size(),contentLength);
+ if (!callable.isNull()) {
+ callable->downloadProgress(destFile->size(), contentLength);
}
});
loop.exec();
int httpStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
- if(httpStatus == 200){
- if(!callable.isNull()){
+ if (httpStatus == 200) {
+ if (!callable.isNull()) {
callable->success(destPath);
}
- printRequestEndLog(request,params,reply,destPath);
- }else{
- if(!callable.isNull()){
- callable->error(httpStatus,reply->errorString(),destPath);
+ printRequestEndLog(request, params, reply, destPath);
+ } else {
+ if (!callable.isNull()) {
+ callable->error(httpStatus, reply->errorString(), destPath);
}
- printRequestEndLog(request,params,reply,destPath);
+ printRequestEndLog(request, params, reply, destPath);
}
- if(conn_destroyed){
+ if (conn_destroyed) {
disconnect(conn_destroyed);
}
- if(conn_quit){
+ if (conn_quit) {
disconnect(conn_quit);
}
params->deleteLater();
reply->deleteLater();
- if(!callable.isNull()){
+ if (!callable.isNull()) {
callable->finish();
}
});
}
-QString Network::readCache(const QString& key){
+QString Network::readCache(const QString &key) {
auto filePath = getCacheFilePath(key);
QString result;
QFile file(filePath);
- if(!file.exists()){
+ if (!file.exists()) {
return result;
}
if (file.open(QIODevice::ReadOnly)) {
@@ -405,27 +406,27 @@ QString Network::readCache(const QString& key){
return result;
}
-bool Network::cacheExists(const QString& key){
+bool Network::cacheExists(const QString &key) {
return QFile(getCacheFilePath(key)).exists();
}
-QString Network::getCacheFilePath(const QString& key){
+QString Network::getCacheFilePath(const QString &key) {
QDir cacheDir(_cacheDir);
- if(!cacheDir.exists()){
+ if (!cacheDir.exists()) {
cacheDir.mkpath(_cacheDir);
}
return cacheDir.absoluteFilePath(key);
}
-QString Network::headerList2String(const QList& data){
+QString Network::headerList2String(const QList &data) {
QJsonObject object;
for (auto it = data.constBegin(); it != data.constEnd(); ++it) {
- object.insert(QString(it->first),QString(it->second));
+ object.insert(QString(it->first), QString(it->second));
}
return QJsonDocument(object).toJson(QJsonDocument::Compact);
}
-QString Network::map2String(const QMap& map){
+QString Network::map2String(const QMap &map) {
QStringList parameters;
for (auto it = map.constBegin(); it != map.constEnd(); ++it) {
parameters << QString("%1=%2").arg(it.key(), it.value().toString());
@@ -433,244 +434,237 @@ QString Network::map2String(const QMap& map){
return parameters.join(" ");
}
-void Network::sendRequest(QNetworkAccessManager* manager,QNetworkRequest request,NetworkParams* params,QNetworkReply*& reply,bool isFirst,QPointer callable){
+void Network::sendRequest(QNetworkAccessManager *manager, QNetworkRequest request, NetworkParams *params, QNetworkReply *&reply, bool isFirst, const QPointer &callable) {
QByteArray verb = params->method2String().toUtf8();
switch (params->_type) {
- case NetworkParams::TYPE_FORM:{
- bool isFormData = !params->_fileMap.isEmpty();
- if(isFormData){
- QHttpMultiPart *multiPart = new QHttpMultiPart();
- multiPart->setContentType(QHttpMultiPart::FormDataType);
- for (const auto& each : params->_paramMap.toStdMap())
- {
- QHttpPart part;
- part.setHeader(QNetworkRequest::ContentDispositionHeader, QString("form-data; name=\"%1\"").arg(each.first));
- part.setBody(each.second.toByteArray());
- multiPart->append(part);
- }
- for (const auto& each : params->_fileMap.toStdMap())
- {
- QString filePath = each.second.toString();
- QString name = each.first;
- QFile *file = new QFile(filePath);
- QString fileName = QFileInfo(filePath).fileName();
- file->open(QIODevice::ReadOnly);
- file->setParent(multiPart);
- QHttpPart part;
- part.setHeader(QNetworkRequest::ContentDispositionHeader, QString("form-data; name=\"%1\"; filename=\"%2\"").arg(name,fileName));
- part.setBodyDevice(file);
- multiPart->append(part);
- }
- reply = manager->sendCustomRequest(request,verb,multiPart);
- multiPart->setParent(reply);
- connect(reply,&QNetworkReply::uploadProgress,reply,[callable](qint64 bytesSent, qint64 bytesTotal){
- if(!callable.isNull() && bytesSent!=0 && bytesTotal!=0){
- Q_EMIT callable->uploadProgress(bytesSent,bytesTotal);
+ case NetworkParams::TYPE_FORM: {
+ bool isFormData = !params->_fileMap.isEmpty();
+ if (isFormData) {
+ auto *multiPart = new QHttpMultiPart();
+ multiPart->setContentType(QHttpMultiPart::FormDataType);
+ for (const auto &each: params->_paramMap.toStdMap()) {
+ QHttpPart part;
+ part.setHeader(QNetworkRequest::ContentDispositionHeader, QString("form-data; name=\"%1\"").arg(each.first));
+ part.setBody(each.second.toByteArray());
+ multiPart->append(part);
}
- });
- }else{
- request.setHeader(QNetworkRequest::ContentTypeHeader, QString("application/x-www-form-urlencoded"));
- QString value;
- for (const auto& each : params->_paramMap.toStdMap())
- {
- value += QString("%1=%2").arg(each.first,each.second.toString());
- value += "&";
+ for (const auto &each: params->_fileMap.toStdMap()) {
+ QString filePath = each.second.toString();
+ QString name = each.first;
+ auto *file = new QFile(filePath);
+ QString fileName = QFileInfo(filePath).fileName();
+ file->open(QIODevice::ReadOnly);
+ file->setParent(multiPart);
+ QHttpPart part;
+ part.setHeader(QNetworkRequest::ContentDispositionHeader, QString(R"(form-data; name="%1"; filename="%2")").arg(name, fileName));
+ part.setBodyDevice(file);
+ multiPart->append(part);
+ }
+ reply = manager->sendCustomRequest(request, verb, multiPart);
+ multiPart->setParent(reply);
+ connect(reply, &QNetworkReply::uploadProgress, reply, [callable](qint64 bytesSent, qint64 bytesTotal) {
+ if (!callable.isNull() && bytesSent != 0 && bytesTotal != 0) {
+ Q_EMIT callable->uploadProgress(bytesSent, bytesTotal);
+ }
+ });
+ } else {
+ request.setHeader(QNetworkRequest::ContentTypeHeader, QString("application/x-www-form-urlencoded"));
+ QString value;
+ for (const auto &each: params->_paramMap.toStdMap()) {
+ value += QString("%1=%2").arg(each.first, each.second.toString());
+ value += "&";
+ }
+ if (!params->_paramMap.isEmpty()) {
+ value.chop(1);
+ }
+ QByteArray data = value.toUtf8();
+ reply = manager->sendCustomRequest(request, verb, data);
}
- if(!params->_paramMap.isEmpty()){
- value.chop(1);
- }
- QByteArray data = value.toUtf8();
- reply = manager->sendCustomRequest(request,verb,data);
+ break;
}
- break;
- }
- case NetworkParams::TYPE_JSON:{
- request.setHeader(QNetworkRequest::ContentTypeHeader, QString("application/json;charset=utf-8"));
- QJsonObject json;
- for (const auto& each : params->_paramMap.toStdMap())
- {
- json.insert(each.first,each.second.toJsonValue());
- }
- QByteArray data = QJsonDocument(json).toJson(QJsonDocument::Compact);
- reply = manager->sendCustomRequest(request,verb,data);
- break;
- }
- case NetworkParams::TYPE_JSONARRAY:{
- request.setHeader(QNetworkRequest::ContentTypeHeader, QString("application/json;charset=utf-8"));
- QJsonArray jsonArray;
- for (const auto& each : params->_paramMap.toStdMap())
- {
+ case NetworkParams::TYPE_JSON: {
+ request.setHeader(QNetworkRequest::ContentTypeHeader, QString("application/json;charset=utf-8"));
QJsonObject json;
- json.insert(each.first,each.second.toJsonValue());
- jsonArray.append(json);
+ for (const auto &each: params->_paramMap.toStdMap()) {
+ json.insert(each.first, each.second.toJsonValue());
+ }
+ QByteArray data = QJsonDocument(json).toJson(QJsonDocument::Compact);
+ reply = manager->sendCustomRequest(request, verb, data);
+ break;
}
- QByteArray data = QJsonDocument(jsonArray).toJson(QJsonDocument::Compact);
- reply = manager->sendCustomRequest(request,params->method2String().toUtf8(),data);
- break;
+ case NetworkParams::TYPE_JSONARRAY: {
+ request.setHeader(QNetworkRequest::ContentTypeHeader, QString("application/json;charset=utf-8"));
+ QJsonArray jsonArray;
+ for (const auto &each: params->_paramMap.toStdMap()) {
+ QJsonObject json;
+ json.insert(each.first, each.second.toJsonValue());
+ jsonArray.append(json);
+ }
+ QByteArray data = QJsonDocument(jsonArray).toJson(QJsonDocument::Compact);
+ reply = manager->sendCustomRequest(request, params->method2String().toUtf8(), data);
+ break;
+ }
+ case NetworkParams::TYPE_BODY: {
+ request.setHeader(QNetworkRequest::ContentTypeHeader, QString("text/plain;charset=utf-8"));
+ QByteArray data = params->_body.toUtf8();
+ reply = manager->sendCustomRequest(request, verb, data);
+ break;
+ }
+ default:
+ reply = manager->sendCustomRequest(request, verb);
+ break;
}
- case NetworkParams::TYPE_BODY:{
- request.setHeader(QNetworkRequest::ContentTypeHeader, QString("text/plain;charset=utf-8"));
- QByteArray data = params->_body.toUtf8();
- reply = manager->sendCustomRequest(request,verb,data);
- break;
- }
- default:
- reply = manager->sendCustomRequest(request,verb);
- break;
- }
- if(isFirst){
- printRequestStartLog(request,params);
+ if (isFirst) {
+ printRequestStartLog(request, params);
}
}
-void Network::printRequestStartLog(QNetworkRequest request,NetworkParams* params){
- if(!params->getOpenLog()){
+void Network::printRequestStartLog(const QNetworkRequest &request, NetworkParams *params) {
+ if (!params->getOpenLog()) {
return;
}
- qDebug()<<"<------"<";
- qDebug()<").arg(params->method2String()))<_url);
+ qDebug() << "<------" << qUtf8Printable(request.header(QNetworkRequest::UserAgentHeader).toString()) << "Request Start ------>";
+ qDebug() << qUtf8Printable(QString::fromStdString("<%1>").arg(params->method2String())) << qUtf8Printable(params->_url);
auto contentType = request.header(QNetworkRequest::ContentTypeHeader).toString();
- if(!contentType.isEmpty()){
- qDebug()< %1=%2").arg("Content-Type",contentType));
+ if (!contentType.isEmpty()) {
+ qDebug() << qUtf8Printable(QString::fromStdString(" %1=%2").arg("Content-Type", contentType));
}
QList headers = request.rawHeaderList();
- for(const QByteArray& header:headers){
- qDebug()< %1=%2").arg(header,request.rawHeader(header)));
+ for (const QByteArray &header: headers) {
+ qDebug() << qUtf8Printable(QString::fromStdString(" %1=%2").arg(header, request.rawHeader(header)));
}
- if(!params->_queryMap.isEmpty()){
- qDebug()<<""<_queryMap));
+ if (!params->_queryMap.isEmpty()) {
+ qDebug() << "" << qUtf8Printable(map2String(params->_queryMap));
}
- if(!params->_paramMap.isEmpty()){
- qDebug()<<""<_paramMap));
+ if (!params->_paramMap.isEmpty()) {
+ qDebug() << "" << qUtf8Printable(map2String(params->_paramMap));
}
- if(!params->_fileMap.isEmpty()){
- qDebug()<<""<_fileMap));
+ if (!params->_fileMap.isEmpty()) {
+ qDebug() << "" << qUtf8Printable(map2String(params->_fileMap));
}
- if(!params->_body.isEmpty()){
- qDebug()<<""<_body);
+ if (!params->_body.isEmpty()) {
+ qDebug() << "" << qUtf8Printable(params->_body);
}
}
-void Network::printRequestEndLog(QNetworkRequest request,NetworkParams* params,QNetworkReply*& reply,const QString& response){
- if(!params->getOpenLog()){
+void Network::printRequestEndLog(const QNetworkRequest &request, NetworkParams *params, QNetworkReply *&reply, const QString &response) {
+ if (!params->getOpenLog()) {
return;
}
- qDebug()<<"<------"<";
- qDebug()<").arg(params->method2String()))<_url);
- qDebug()<<""<";
+ qDebug() << qUtf8Printable(QString::fromStdString("<%1>").arg(params->method2String())) << qUtf8Printable(params->_url);
+ qDebug() << "" << qUtf8Printable(response);
}
-void Network::saveResponse(QString key,QString response){
+void Network::saveResponse(const QString &key, const QString &response) {
QSharedPointer file(new QFile(getCacheFilePath(key)));
- QIODevice::OpenMode mode = QIODevice::WriteOnly|QIODevice::Truncate;
- if (!file->open(mode))
- {
+ QIODevice::OpenMode mode = QIODevice::WriteOnly | QIODevice::Truncate;
+ if (!file->open(mode)) {
return;
}
file->write(response.toUtf8().toBase64());
}
-void Network::addHeaders(QNetworkRequest* request,const QMap& headers){
- request->setHeader(QNetworkRequest::UserAgentHeader,QString::fromStdString("Mozilla/5.0 %1/%2").arg(QGuiApplication::applicationName(),QGuiApplication::applicationVersion()));
+void Network::addHeaders(QNetworkRequest *request, const QMap &headers) {
+ request->setHeader(QNetworkRequest::UserAgentHeader, QString::fromStdString("Mozilla/5.0 %1/%2").arg(QGuiApplication::applicationName(), QGuiApplication::applicationVersion()));
QMapIterator iter(headers);
- while (iter.hasNext())
- {
+ while (iter.hasNext()) {
iter.next();
request->setRawHeader(iter.key().toUtf8(), iter.value().toString().toUtf8());
}
}
-void Network::addQueryParam(QUrl* url,const QMap& params){
+void Network::addQueryParam(QUrl *url, const QMap ¶ms) {
QMapIterator iter(params);
QUrlQuery urlQuery(*url);
- while (iter.hasNext())
- {
+ while (iter.hasNext()) {
iter.next();
urlQuery.addQueryItem(iter.key(), iter.value().toString());
}
url->setQuery(urlQuery);
}
-Network::Network(QObject *parent): QObject{parent}
-{
- timeout(5000);
- retry(3);
- openLog(false);
- cacheDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation).append(QDir::separator()).append("network"));
+Network::Network(QObject *parent) : QObject{parent} {
+ _timeout = 5000;
+ _retry = 3;
+ _openLog = false;
+ _cacheDir = QStandardPaths::writableLocation(QStandardPaths::CacheLocation).append(QDir::separator()).append("network");
}
-NetworkParams* Network::get(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_NONE,NetworkParams::METHOD_GET,this);
+NetworkParams *Network::get(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_NONE, NetworkParams::METHOD_GET, this);
}
-NetworkParams* Network::head(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_NONE,NetworkParams::METHOD_HEAD,this);
+NetworkParams *Network::head(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_NONE, NetworkParams::METHOD_HEAD, this);
}
-NetworkParams* Network::postBody(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_BODY,NetworkParams::METHOD_POST,this);
+NetworkParams *Network::postBody(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_BODY, NetworkParams::METHOD_POST, this);
}
-NetworkParams* Network::putBody(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_BODY,NetworkParams::METHOD_PUT,this);
+NetworkParams *Network::putBody(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_BODY, NetworkParams::METHOD_PUT, this);
}
-NetworkParams* Network::patchBody(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_BODY,NetworkParams::METHOD_PATCH,this);
+NetworkParams *Network::patchBody(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_BODY, NetworkParams::METHOD_PATCH, this);
}
-NetworkParams* Network::deleteBody(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_BODY,NetworkParams::METHOD_DELETE,this);
+NetworkParams *Network::deleteBody(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_BODY, NetworkParams::METHOD_DELETE, this);
}
-NetworkParams* Network::postForm(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_FORM,NetworkParams::METHOD_POST,this);
+NetworkParams *Network::postForm(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_FORM, NetworkParams::METHOD_POST, this);
}
-NetworkParams* Network::putForm(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_FORM,NetworkParams::METHOD_PUT,this);
+NetworkParams *Network::putForm(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_FORM, NetworkParams::METHOD_PUT, this);
}
-NetworkParams* Network::patchForm(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_FORM,NetworkParams::METHOD_PATCH,this);
+NetworkParams *Network::patchForm(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_FORM, NetworkParams::METHOD_PATCH, this);
}
-NetworkParams* Network::deleteForm(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_FORM,NetworkParams::METHOD_DELETE,this);
+NetworkParams *Network::deleteForm(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_FORM, NetworkParams::METHOD_DELETE, this);
}
-NetworkParams* Network::postJson(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_JSON,NetworkParams::METHOD_POST,this);
+NetworkParams *Network::postJson(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_JSON, NetworkParams::METHOD_POST, this);
}
-NetworkParams* Network::putJson(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_JSON,NetworkParams::METHOD_PUT,this);
+NetworkParams *Network::putJson(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_JSON, NetworkParams::METHOD_PUT, this);
}
-NetworkParams* Network::patchJson(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_JSON,NetworkParams::METHOD_PATCH,this);
+NetworkParams *Network::patchJson(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_JSON, NetworkParams::METHOD_PATCH, this);
}
-NetworkParams* Network::deleteJson(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_JSON,NetworkParams::METHOD_DELETE,this);
+NetworkParams *Network::deleteJson(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_JSON, NetworkParams::METHOD_DELETE, this);
}
-NetworkParams* Network::postJsonArray(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_JSONARRAY,NetworkParams::METHOD_POST,this);
+NetworkParams *Network::postJsonArray(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_JSONARRAY, NetworkParams::METHOD_POST, this);
}
-NetworkParams* Network::putJsonArray(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_JSONARRAY,NetworkParams::METHOD_PUT,this);
+NetworkParams *Network::putJsonArray(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_JSONARRAY, NetworkParams::METHOD_PUT, this);
}
-NetworkParams* Network::patchJsonArray(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_JSONARRAY,NetworkParams::METHOD_PATCH,this);
+NetworkParams *Network::patchJsonArray(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_JSONARRAY, NetworkParams::METHOD_PATCH, this);
}
-NetworkParams* Network::deleteJsonArray(const QString& url){
- return new NetworkParams(url,NetworkParams::TYPE_JSONARRAY,NetworkParams::METHOD_DELETE,this);
+NetworkParams *Network::deleteJsonArray(const QString &url) {
+ return new NetworkParams(url, NetworkParams::TYPE_JSONARRAY, NetworkParams::METHOD_DELETE, this);
}
-void Network::setInterceptor(QJSValue interceptor){
- this->_interceptor = interceptor;
+void Network::setInterceptor(QJSValue interceptor) {
+ this->_interceptor = std::move(interceptor);
}
+
+#pragma clang diagnostic pop
\ No newline at end of file
diff --git a/example/src/helper/Network.h b/example/src/helper/Network.h
index 7b00a151..1e37707c 100644
--- a/example/src/helper/Network.h
+++ b/example/src/helper/Network.h
@@ -1,5 +1,6 @@
-#ifndef NETWORK_H
-#define NETWORK_H
+#pragma once
+#pragma clang diagnostic push
+#pragma ide diagnostic ignored "NotImplementedFunctions"
#include
#include
@@ -12,56 +13,66 @@
#include "src/singleton.h"
namespace NetworkType {
-Q_NAMESPACE
-enum CacheMode {
- NoCache = 0x0000,
- RequestFailedReadCache = 0x0001,
- IfNoneCacheRequest = 0x0002,
- FirstCacheThenRequest = 0x0004,
-};
-Q_ENUM_NS(CacheMode)
-QML_NAMED_ELEMENT(NetworkType)
+ Q_NAMESPACE
+ enum CacheMode {
+ NoCache = 0x0000,
+ RequestFailedReadCache = 0x0001,
+ IfNoneCacheRequest = 0x0002,
+ FirstCacheThenRequest = 0x0004,
+ };
+
+ Q_ENUM_NS(CacheMode)
+
+ QML_NAMED_ELEMENT(NetworkType)
}
/**
* @brief The NetworkCallable class
*/
-class NetworkCallable : public QObject{
- Q_OBJECT
+class NetworkCallable : public QObject {
+Q_OBJECT
QML_NAMED_ELEMENT(NetworkCallable)
public:
explicit NetworkCallable(QObject *parent = nullptr);
+
Q_SIGNAL void start();
+
Q_SIGNAL void finish();
- Q_SIGNAL void error(int status,QString errorString,QString result);
+
+ Q_SIGNAL void error(int status, QString errorString, QString result);
+
Q_SIGNAL void success(QString result);
+
Q_SIGNAL void cache(QString result);
+
Q_SIGNAL void uploadProgress(qint64 sent, qint64 total);
+
Q_SIGNAL void downloadProgress(qint64 recv, qint64 total);
};
/**
* @brief The FluDownloadParam class
*/
-class FluDownloadParam : public QObject{
- Q_OBJECT
+class FluDownloadParam : public QObject {
+Q_OBJECT
public:
explicit FluDownloadParam(QObject *parent = nullptr);
- FluDownloadParam(QString destPath,bool append,QObject *parent = nullptr);
+
+ FluDownloadParam(QString destPath, bool append, QObject *parent = nullptr);
+
public:
QString _destPath;
- bool _append;
+ bool _append{};
};
/**
* @brief The NetworkParams class
*/
-class NetworkParams : public QObject
-{
- Q_OBJECT
+class NetworkParams : public QObject {
+Q_OBJECT
QML_NAMED_ELEMENT(NetworkParams)
public:
- enum Method{
+ enum Method {
METHOD_GET,
METHOD_HEAD,
METHOD_POST,
@@ -69,35 +80,55 @@ public:
METHOD_PATCH,
METHOD_DELETE
};
- enum Type{
+ enum Type {
TYPE_NONE,
TYPE_FORM,
TYPE_JSON,
TYPE_JSONARRAY,
TYPE_BODY
};
+
explicit NetworkParams(QObject *parent = nullptr);
- NetworkParams(QString url,Type type,Method method,QObject *parent = nullptr);
- Q_INVOKABLE NetworkParams* addQuery(QString key,QVariant val);
- Q_INVOKABLE NetworkParams* addHeader(QString key,QVariant val);
- Q_INVOKABLE NetworkParams* add(QString key,QVariant val);
- Q_INVOKABLE NetworkParams* addFile(QString key,QVariant val);
- Q_INVOKABLE NetworkParams* setBody(QString val);
- Q_INVOKABLE NetworkParams* setTimeout(int val);
- Q_INVOKABLE NetworkParams* setRetry(int val);
- Q_INVOKABLE NetworkParams* setCacheMode(int val);
- Q_INVOKABLE NetworkParams* toDownload(QString destPath,bool append = false);
- Q_INVOKABLE NetworkParams* bind(QObject* target);
- Q_INVOKABLE NetworkParams* openLog(QVariant val);
- Q_INVOKABLE void go(NetworkCallable* result);
- QString buildCacheKey();
- QString method2String();
- int getTimeout();
- int getRetry();
- bool getOpenLog();
+
+ NetworkParams(QString url, Type type, Method method, QObject *parent = nullptr);
+
+ Q_INVOKABLE NetworkParams *addQuery(const QString &key, const QVariant &val);
+
+ Q_INVOKABLE NetworkParams *addHeader(const QString &key, const QVariant &val);
+
+ Q_INVOKABLE NetworkParams *add(const QString &key, const QVariant &val);
+
+ Q_INVOKABLE NetworkParams *addFile(const QString &key, const QVariant &val);
+
+ Q_INVOKABLE NetworkParams *setBody(QString val);
+
+ Q_INVOKABLE NetworkParams *setTimeout(int val);
+
+ Q_INVOKABLE NetworkParams *setRetry(int val);
+
+ Q_INVOKABLE NetworkParams *setCacheMode(int val);
+
+ Q_INVOKABLE NetworkParams *toDownload(QString destPath, bool append = false);
+
+ Q_INVOKABLE NetworkParams *bind(QObject *target);
+
+ Q_INVOKABLE NetworkParams *openLog(QVariant val);
+
+ Q_INVOKABLE void go(NetworkCallable *result);
+
+ QString buildCacheKey() const;
+
+ QString method2String() const;
+
+ int getTimeout() const;
+
+ int getRetry() const;
+
+ bool getOpenLog() const;
+
public:
- FluDownloadParam* _downloadParam = nullptr;
- QObject* _target = nullptr;
+ FluDownloadParam *_downloadParam = nullptr;
+ QObject *_target = nullptr;
Method _method;
Type _type;
QString _url;
@@ -115,55 +146,90 @@ public:
/**
* @brief The Network class
*/
-class Network : public QObject
-{
- Q_OBJECT
- Q_PROPERTY_AUTO(int,timeout)
- Q_PROPERTY_AUTO(int,retry)
- Q_PROPERTY_AUTO(QString,cacheDir)
- Q_PROPERTY_AUTO(bool,openLog)
+class Network : public QObject {
+Q_OBJECT
+Q_PROPERTY_AUTO(int, timeout)
+Q_PROPERTY_AUTO(int, retry)
+Q_PROPERTY_AUTO(QString, cacheDir)
+Q_PROPERTY_AUTO(bool, openLog)
QML_NAMED_ELEMENT(Network)
QML_SINGLETON
+
private:
explicit Network(QObject *parent = nullptr);
+
public:
- SINGLETON(Network)
- static Network *create(QQmlEngine *qmlEngine, QJSEngine *jsEngine){return getInstance();}
- Q_INVOKABLE NetworkParams* get(const QString& url);
- Q_INVOKABLE NetworkParams* head(const QString& url);
- Q_INVOKABLE NetworkParams* postBody(const QString& url);
- Q_INVOKABLE NetworkParams* putBody(const QString& url);
- Q_INVOKABLE NetworkParams* patchBody(const QString& url);
- Q_INVOKABLE NetworkParams* deleteBody(const QString& url);
- Q_INVOKABLE NetworkParams* postForm(const QString& url);
- Q_INVOKABLE NetworkParams* putForm(const QString& url);
- Q_INVOKABLE NetworkParams* patchForm(const QString& url);
- Q_INVOKABLE NetworkParams* deleteForm(const QString& url);
- Q_INVOKABLE NetworkParams* postJson(const QString& url);
- Q_INVOKABLE NetworkParams* putJson(const QString& url);
- Q_INVOKABLE NetworkParams* patchJson(const QString& url);
- Q_INVOKABLE NetworkParams* deleteJson(const QString& url);
- Q_INVOKABLE NetworkParams* postJsonArray(const QString& url);
- Q_INVOKABLE NetworkParams* putJsonArray(const QString& url);
- Q_INVOKABLE NetworkParams* patchJsonArray(const QString& url);
- Q_INVOKABLE NetworkParams* deleteJsonArray(const QString& url);
+SINGLETON(Network)
+
+ static Network *create(QQmlEngine *qmlEngine, QJSEngine *jsEngine) { return getInstance(); }
+
+ Q_INVOKABLE NetworkParams *get(const QString &url);
+
+ Q_INVOKABLE NetworkParams *head(const QString &url);
+
+ Q_INVOKABLE NetworkParams *postBody(const QString &url);
+
+ Q_INVOKABLE NetworkParams *putBody(const QString &url);
+
+ Q_INVOKABLE NetworkParams *patchBody(const QString &url);
+
+ Q_INVOKABLE NetworkParams *deleteBody(const QString &url);
+
+ Q_INVOKABLE NetworkParams *postForm(const QString &url);
+
+ Q_INVOKABLE NetworkParams *putForm(const QString &url);
+
+ Q_INVOKABLE NetworkParams *patchForm(const QString &url);
+
+ Q_INVOKABLE NetworkParams *deleteForm(const QString &url);
+
+ Q_INVOKABLE NetworkParams *postJson(const QString &url);
+
+ Q_INVOKABLE NetworkParams *putJson(const QString &url);
+
+ Q_INVOKABLE NetworkParams *patchJson(const QString &url);
+
+ Q_INVOKABLE NetworkParams *deleteJson(const QString &url);
+
+ Q_INVOKABLE NetworkParams *postJsonArray(const QString &url);
+
+ Q_INVOKABLE NetworkParams *putJsonArray(const QString &url);
+
+ Q_INVOKABLE NetworkParams *patchJsonArray(const QString &url);
+
+ Q_INVOKABLE NetworkParams *deleteJsonArray(const QString &url);
+
Q_INVOKABLE void setInterceptor(QJSValue interceptor);
- void handle(NetworkParams* params,NetworkCallable* result);
- void handleDownload(NetworkParams* params,NetworkCallable* result);
+
+ void handle(NetworkParams *params, NetworkCallable *result);
+
+ void handleDownload(NetworkParams *params, NetworkCallable *result);
+
private:
- void sendRequest(QNetworkAccessManager* manager,QNetworkRequest request,NetworkParams* params,QNetworkReply*& reply,bool isFirst,QPointer callable);
- void addQueryParam(QUrl* url,const QMap& params);
- void addHeaders(QNetworkRequest* request,const QMap& headers);
- void saveResponse(QString key,QString response);
- QString readCache(const QString& key);
- bool cacheExists(const QString& key);
- QString getCacheFilePath(const QString& key);
- QString map2String(const QMap& map);
- QString headerList2String(const QList& data);
- void printRequestStartLog(QNetworkRequest request,NetworkParams* params);
- void printRequestEndLog(QNetworkRequest request,NetworkParams* params,QNetworkReply*& reply,const QString& response);
+ static void sendRequest(QNetworkAccessManager *manager, QNetworkRequest request, NetworkParams *params, QNetworkReply *&reply, bool isFirst, const QPointer& callable);
+
+ static void addQueryParam(QUrl *url, const QMap ¶ms);
+
+ static void addHeaders(QNetworkRequest *request, const QMap &headers);
+
+ void saveResponse(const QString& key, const QString& response);
+
+ QString readCache(const QString &key);
+
+ bool cacheExists(const QString &key);
+
+ QString getCacheFilePath(const QString &key);
+
+ static QString headerList2String(const QList &data);
+
+ static void printRequestStartLog(const QNetworkRequest& request, NetworkParams *params);
+
+ static void printRequestEndLog(const QNetworkRequest& request, NetworkParams *params, QNetworkReply *&reply, const QString &response);
+
+ static QString map2String(const QMap &map);
+
public:
QJSValue _interceptor;
};
-#endif // Network_H
+#pragma clang diagnostic pop
\ No newline at end of file
diff --git a/example/src/helper/SettingsHelper.cpp b/example/src/helper/SettingsHelper.cpp
index 1f5afdc9..af77d709 100644
--- a/example/src/helper/SettingsHelper.cpp
+++ b/example/src/helper/SettingsHelper.cpp
@@ -1,21 +1,22 @@
+#pragma clang diagnostic push
+#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection"
+
#include "SettingsHelper.h"
#include
#include
-SettingsHelper::SettingsHelper(QObject *parent) : QObject(parent)
-{
+SettingsHelper::SettingsHelper(QObject *parent) : QObject(parent) {
}
SettingsHelper::~SettingsHelper() = default;
-void SettingsHelper::save(const QString& key,QVariant val)
-{
+void SettingsHelper::save(const QString &key, QVariant val) {
m_settings->setValue(key, val);
}
-QVariant SettingsHelper::get(const QString& key,QVariant def){
+QVariant SettingsHelper::get(const QString &key, QVariant def) {
QVariant data = m_settings->value(key);
if (!data.isNull() && data.isValid()) {
return data;
@@ -23,10 +24,12 @@ QVariant SettingsHelper::get(const QString& key,QVariant def){
return def;
}
-void SettingsHelper::init(char *argv[]){
+void SettingsHelper::init(char *argv[]) {
QString applicationPath = QString::fromStdString(argv[0]);
const QFileInfo fileInfo(applicationPath);
const QString iniFileName = fileInfo.completeBaseName() + ".ini";
const QString iniFilePath = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + "/" + iniFileName;
m_settings.reset(new QSettings(iniFilePath, QSettings::IniFormat));
}
+
+#pragma clang diagnostic pop
\ No newline at end of file
diff --git a/example/src/helper/SettingsHelper.h b/example/src/helper/SettingsHelper.h
index a8c0b8e9..ab49a49d 100644
--- a/example/src/helper/SettingsHelper.h
+++ b/example/src/helper/SettingsHelper.h
@@ -1,5 +1,6 @@
-#ifndef SETTINGSHELPER_H
-#define SETTINGSHELPER_H
+#pragma clang diagnostic push
+#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection"
+#pragma once
#include
#include
@@ -10,26 +11,36 @@
#include
#include "src/singleton.h"
-class SettingsHelper : public QObject
-{
- Q_OBJECT
+class SettingsHelper : public QObject {
+Q_OBJECT
private:
- explicit SettingsHelper(QObject* parent = nullptr);
+ explicit SettingsHelper(QObject *parent = nullptr);
+
public:
- SINGLETON(SettingsHelper)
+SINGLETON(SettingsHelper)
+
~SettingsHelper() override;
+
void init(char *argv[]);
- Q_INVOKABLE void saveDarkMode(int darkModel){save("darkMode",darkModel);}
- Q_INVOKABLE int getDarkMode(){return get("darkMode",QVariant(0)).toInt();}
- Q_INVOKABLE void saveUseSystemAppBar(bool useSystemAppBar){save("useSystemAppBar",useSystemAppBar);}
- Q_INVOKABLE bool getUseSystemAppBar(){return get("useSystemAppBar",QVariant(false)).toBool();}
- Q_INVOKABLE void saveLanguage(QString language){save("language",language);}
- Q_INVOKABLE QString getLanguage(){return get("language",QVariant("en_US")).toString();}
+
+ Q_INVOKABLE void saveDarkMode(int darkModel) { save("darkMode", darkModel); }
+
+ Q_INVOKABLE int getDarkMode() { return get("darkMode", QVariant(0)).toInt(); }
+
+ Q_INVOKABLE void saveUseSystemAppBar(bool useSystemAppBar) { save("useSystemAppBar", useSystemAppBar); }
+
+ Q_INVOKABLE bool getUseSystemAppBar() { return get("useSystemAppBar", QVariant(false)).toBool(); }
+
+ Q_INVOKABLE void saveLanguage(const QString &language) { save("language", language); }
+
+ Q_INVOKABLE QString getLanguage() { return get("language", QVariant("en_US")).toString(); }
+
private:
- void save(const QString& key,QVariant val);
- QVariant get(const QString& key,QVariant def={});
+ void save(const QString &key, QVariant val);
+
+ QVariant get(const QString &key, QVariant def = {});
+
private:
QScopedPointer m_settings;
};
-
-#endif // SETTINGSHELPER_H
+#pragma clang diagnostic pop
\ No newline at end of file
diff --git a/example/src/helper/TranslateHelper.cpp b/example/src/helper/TranslateHelper.cpp
index 178b9416..5ac3bf09 100644
--- a/example/src/helper/TranslateHelper.cpp
+++ b/example/src/helper/TranslateHelper.cpp
@@ -5,21 +5,20 @@
#include "SettingsHelper.h"
-TranslateHelper::TranslateHelper(QObject *parent) : QObject(parent)
-{
- _languages<<"en_US";
- _languages<<"zh_CN";
+[[maybe_unused]] TranslateHelper::TranslateHelper(QObject *parent) : QObject(parent) {
+ _languages << "en_US";
+ _languages << "zh_CN";
_current = SettingsHelper::getInstance()->getLanguage();
}
TranslateHelper::~TranslateHelper() = default;
-void TranslateHelper::init(QQmlEngine* engine){
+void TranslateHelper::init(QQmlEngine *engine) {
_engine = engine;
_translator = new QTranslator(this);
- qApp->installTranslator(_translator);
- QString translatorPath = QGuiApplication::applicationDirPath()+"/i18n";
- if(_translator->load(QString::fromStdString("%1/example_%2.qm").arg(translatorPath,_current))){
+ QGuiApplication::installTranslator(_translator);
+ QString translatorPath = QGuiApplication::applicationDirPath() + "/i18n";
+ if (_translator->load(QString::fromStdString("%1/example_%2.qm").arg(translatorPath, _current))) {
_engine->retranslate();
}
}
diff --git a/example/src/helper/TranslateHelper.h b/example/src/helper/TranslateHelper.h
index 93e1a4cc..1476871a 100644
--- a/example/src/helper/TranslateHelper.h
+++ b/example/src/helper/TranslateHelper.h
@@ -1,5 +1,4 @@
-#ifndef TRANSLATEHELPER_H
-#define TRANSLATEHELPER_H
+#pragma once
#include
#include
@@ -7,20 +6,21 @@
#include "src/singleton.h"
#include "src/stdafx.h"
-class TranslateHelper : public QObject
-{
- Q_OBJECT
- Q_PROPERTY_AUTO(QString,current)
- Q_PROPERTY_READONLY_AUTO(QStringList,languages)
+class TranslateHelper : public QObject {
+Q_OBJECT
+Q_PROPERTY_AUTO(QString, current)
+Q_PROPERTY_READONLY_AUTO(QStringList, languages)
private:
- explicit TranslateHelper(QObject* parent = nullptr);
-public:
- SINGLETON(TranslateHelper)
- ~TranslateHelper() override;
- void init(QQmlEngine* engine);
-private:
- QQmlEngine* _engine = nullptr;
- QTranslator* _translator = nullptr;
-};
+ [[maybe_unused]] explicit TranslateHelper(QObject *parent = nullptr);
-#endif // TRANSLATEHELPER_H
+public:
+SINGLETON(TranslateHelper)
+
+ ~TranslateHelper() override;
+
+ void init(QQmlEngine *engine);
+
+private:
+ QQmlEngine *_engine = nullptr;
+ QTranslator *_translator = nullptr;
+};
\ No newline at end of file
diff --git a/example/src/main.cpp b/example/src/main.cpp
index be38a0b5..e652ac85 100644
--- a/example/src/main.cpp
+++ b/example/src/main.cpp
@@ -14,6 +14,7 @@
#include "src/component/CircularReveal.h"
#include "src/component/FileWatcher.h"
#include "src/component/FpsItem.h"
+#include "src/component/OpenGLItem.h"
#include "src/helper/SettingsHelper.h"
#include "src/helper/InitializrHelper.h"
#include "src/helper/TranslateHelper.h"
@@ -75,6 +76,9 @@ int main(int argc, char *argv[])
qmlRegisterType(uri, major, minor, "FpsItem");
qmlRegisterType(uri,major,minor,"NetworkCallable");
qmlRegisterType(uri,major,minor,"NetworkParams");
+ qmlRegisterType(uri,major,minor,"OpenGLItem");
+ qmlRegisterUncreatableMetaObject(NetworkType::staticMetaObject, uri, major, minor, "NetworkType", "Access to enums & flags only");
+
QQmlApplicationEngine engine;
TranslateHelper::getInstance()->init(&engine);
engine.rootContext()->setContextProperty("AppInfo",AppInfo::getInstance());
diff --git a/example/src/singleton.h b/example/src/singleton.h
index 8d6c10e6..9583c687 100644
--- a/example/src/singleton.h
+++ b/example/src/singleton.h
@@ -1,18 +1,17 @@
-#ifndef SINGLETON_H
-#define SINGLETON_H
+#pragma once
/**
* @brief The Singleton class
*/
-template
+template
class Singleton {
public:
- static T* getInstance();
+ static T *getInstance();
};
-template
-T* Singleton::getInstance() {
- static T* instance = new T();
+template
+T *Singleton::getInstance() {
+ static T *instance = new T();
return instance;
}
@@ -23,5 +22,3 @@ private: \
static Class* getInstance() { \
return Singleton::getInstance(); \
}
-
-#endif // SINGLETON_H
diff --git a/example/src/stdafx.h b/example/src/stdafx.h
index 4b4d821c..b411a82a 100644
--- a/example/src/stdafx.h
+++ b/example/src/stdafx.h
@@ -1,37 +1,50 @@
-#ifndef STDAFX_H
-#define STDAFX_H
+#pragma once
-#define Q_PROPERTY_AUTO(TYPE, M) \
+#define Q_PROPERTY_AUTO_P(TYPE, M) \
Q_PROPERTY(TYPE M MEMBER _##M NOTIFY M##Changed) \
- public: \
- Q_SIGNAL void M##Changed(); \
- void M(TYPE in_##M) \
+ public: \
+ Q_SIGNAL void M##Changed(); \
+ void M(TYPE in_##M) \
{ \
- _##M = in_##M; \
- Q_EMIT M##Changed(); \
+ _##M = in_##M; \
+ Q_EMIT M##Changed(); \
} \
- TYPE M() \
+ TYPE M() \
{ \
- return _##M; \
+ return _##M; \
} \
- private: \
- TYPE _##M; \
+ private: \
+ TYPE _##M; \
+
+#define Q_PROPERTY_AUTO(TYPE, M) \
+Q_PROPERTY(TYPE M MEMBER _##M NOTIFY M##Changed) \
+ public: \
+ Q_SIGNAL void M##Changed(); \
+ void M(const TYPE& in_##M) \
+{ \
+ _##M = in_##M; \
+ Q_EMIT M##Changed(); \
+} \
+ TYPE M() \
+{ \
+ return _##M; \
+} \
+ private: \
+ TYPE _##M; \
-#define Q_PROPERTY_READONLY_AUTO(TYPE, M) \
+#define Q_PROPERTY_READONLY_AUTO(TYPE, M) \
Q_PROPERTY(TYPE M READ M NOTIFY M##Changed FINAL) \
- public: \
- Q_SIGNAL void M##Changed(); \
- void M(TYPE in_##M) \
+ public: \
+ Q_SIGNAL void M##Changed(); \
+ void M(const TYPE& in_##M) \
{ \
- _##M = in_##M; \
- Q_EMIT M##Changed(); \
+ _##M = in_##M; \
+ Q_EMIT M##Changed(); \
} \
- TYPE M() \
+ TYPE M() \
{ \
- return _##M; \
+ return _##M; \
} \
- private: \
- TYPE _##M; \
-
-#endif // STDAFX_H
+ private: \
+ TYPE _##M; \
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index f4439bd9..bb916ab9 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -2,9 +2,9 @@ cmake_minimum_required(VERSION 3.20)
if (FLUENTUI_BUILD_STATIC_LIB AND (QT_VERSION VERSION_GREATER_EQUAL "6.2"))
project(fluentui VERSION 1.0)
-else()
+else ()
project(fluentuiplugin VERSION 1.0)
-endif()
+endif ()
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/.cmake/)
@@ -17,31 +17,31 @@ add_definitions(-DFLUENTUI_VERSION=1,7,4,0)
if (FLUENTUI_BUILD_STATIC_LIB)
add_definitions(-DFLUENTUI_BUILD_STATIC_LIB)
-endif()
+endif ()
#编译参数设置
option(FLUENTUI_BUILD_STATIC_LIB "Build static library." OFF)
#导入Qt相关依赖包
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Quick Qml)
-find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Quick Qml)
+find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Quick)
set(QT_SDK_DIR "${Qt${QT_VERSION_MAJOR}_DIR}/../../..")
cmake_path(SET QT_SDK_DIR NORMALIZE ${QT_SDK_DIR})
#设置QML插件输出目录,可以通过外部设置,如果外部没有设置就默认到\qml\FluentUI目录下
set(FLUENTUI_QML_PLUGIN_DIRECTORY "" CACHE PATH "Path to FluentUI plugin")
-if(NOT FLUENTUI_QML_PLUGIN_DIRECTORY)
+if (NOT FLUENTUI_QML_PLUGIN_DIRECTORY)
set(FLUENTUI_QML_PLUGIN_DIRECTORY ${QT_SDK_DIR}/qml/FluentUI)
-endif()
+endif ()
-if(QT_VERSION VERSION_GREATER_EQUAL "6.3")
+if (QT_VERSION VERSION_GREATER_EQUAL "6.3")
qt_standard_project_setup()
-else()
+else ()
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
-endif()
+endif ()
#国际化
find_program(QT_LUPDATE NAMES lupdate)
@@ -59,90 +59,90 @@ file(GLOB QM_FILE_PATHS ${CMAKE_CURRENT_LIST_DIR}/ *.qm)
file(COPY ${QM_FILE_PATHS} DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/Qt${QT_VERSION_MAJOR}/imports/FluentUI/i18n")
#遍历所有Cpp文件
-file(GLOB_RECURSE CPP_FILES *.cpp *.h)
-foreach(filepath ${CPP_FILES})
+file(GLOB_RECURSE CPP_FILES *.cpp *.h *.cxx)
+foreach (filepath ${CPP_FILES})
string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" filename ${filepath})
list(APPEND sources_files ${filename})
-endforeach(filepath)
+endforeach (filepath)
-if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
+if (QT_VERSION VERSION_GREATER_EQUAL "6.2")
#删除fluentuiplugin.cpp与fluentuiplugin.h,这些只要Qt5使用,Qt6不需要
list(REMOVE_ITEM sources_files fluentuiplugin.h fluentuiplugin.cpp)
if (NOT FLUENTUI_BUILD_STATIC_LIB)
list(REMOVE_ITEM sources_files FluentUI.h FluentUI.cpp)
- endif()
+ endif ()
#遍历所有qml文件
file(GLOB_RECURSE QML_PATHS *.qml qmldir)
- foreach(filepath ${QML_PATHS})
- if(${filepath} MATCHES "Qt${QT_VERSION_MAJOR}/")
+ foreach (filepath ${QML_PATHS})
+ if (${filepath} MATCHES "Qt${QT_VERSION_MAJOR}/")
string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" filename ${filepath})
- if(${filename} MATCHES "qmldir")
+ if (${filename} MATCHES "qmldir")
list(APPEND resource_files ${filename})
- else()
+ else ()
list(APPEND qml_files ${filename})
- endif()
- endif()
- endforeach(filepath)
+ endif ()
+ endif ()
+ endforeach (filepath)
#遍历所有资源文件
file(GLOB_RECURSE RES_PATHS *.png *.jpg *.svg *.ico *.ttf *.webp *.js *.qm)
- foreach(filepath ${RES_PATHS})
- if(${filepath} MATCHES "Qt${QT_VERSION_MAJOR}/")
+ foreach (filepath ${RES_PATHS})
+ if (${filepath} MATCHES "Qt${QT_VERSION_MAJOR}/")
string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" filename ${filepath})
list(APPEND resource_files ${filename})
- endif()
- endforeach(filepath)
+ endif ()
+ endforeach (filepath)
#修改资源文件导出路径
- foreach(filepath IN LISTS qml_files resource_files)
+ foreach (filepath IN LISTS qml_files resource_files)
string(REPLACE "Qt${QT_VERSION_MAJOR}/imports/FluentUI/" "" filename ${filepath})
set_source_files_properties(${filepath} PROPERTIES QT_RESOURCE_ALIAS ${filename})
- endforeach()
-endif()
+ endforeach ()
+endif ()
if (FLUENTUI_BUILD_STATIC_LIB)
set(LIB_TYPE "STATIC")
-else()
+else ()
set(LIB_TYPE "SHARED")
-endif()
+endif ()
if (FLUENTUI_BUILD_STATIC_LIB)
set(PLUGIN_TARGET_NAME "")
-else()
+else ()
#如果是动态库,则使用插件目标作为其自己的支持目标来定义 QML 模块,在这种情况下,模块必须在运行时动态加载,并且不能由其他目标直接链接到
set(PLUGIN_TARGET_NAME ${PROJECT_NAME})
-endif()
+endif ()
#如果是Windows平台,则生成rc文件
set(FLUENTUI_VERSION_RC_PATH "")
-if(WIN32)
+if (WIN32)
set(FLUENTUI_VERSION_RC_PATH ${CMAKE_CURRENT_BINARY_DIR}/version_${PROJECT_NAME}.rc)
configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/.cmake/version_dll.rc.in
- ${FLUENTUI_VERSION_RC_PATH}
+ ${CMAKE_CURRENT_SOURCE_DIR}/.cmake/version_dll.rc.in
+ ${FLUENTUI_VERSION_RC_PATH}
)
-endif()
+endif ()
-if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
+if (QT_VERSION VERSION_GREATER_EQUAL "6.2")
#如果是Qt6.2版本以上,则使用qt_add_library,qt_add_qml_module函数添加资源文件
- if(FLUENTUI_BUILD_STATIC_LIB)
+ if (FLUENTUI_BUILD_STATIC_LIB)
set(FLUENTUI_QML_PLUGIN_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/FluentUI)
- endif()
+ endif ()
qt_add_library(${PROJECT_NAME} ${LIB_TYPE})
qt_add_qml_module(${PROJECT_NAME}
- PLUGIN_TARGET ${PLUGIN_TARGET_NAME}
- OUTPUT_DIRECTORY ${FLUENTUI_QML_PLUGIN_DIRECTORY}
- VERSION 1.0
- URI "FluentUI"
- #修改qmltypes文件名称。默认fluentuiplugin.qmltypes,使用默认名称有时候import FluentUI 1.0会爆红,所以修改成plugins.qmltypes
- TYPEINFO "plugins.qmltypes"
- SOURCES ${sources_files} ${FLUENTUI_VERSION_RC_PATH}
- QML_FILES ${qml_files}
- RESOURCES ${resource_files}
- RESOURCE_PREFIX "/qt/qml"
+ PLUGIN_TARGET ${PLUGIN_TARGET_NAME}
+ OUTPUT_DIRECTORY ${FLUENTUI_QML_PLUGIN_DIRECTORY}
+ VERSION 1.0
+ URI "FluentUI"
+ #修改qmltypes文件名称。默认fluentuiplugin.qmltypes,使用默认名称有时候import FluentUI 1.0会爆红,所以修改成plugins.qmltypes
+ TYPEINFO "plugins.qmltypes"
+ SOURCES ${sources_files} ${FLUENTUI_VERSION_RC_PATH}
+ QML_FILES ${qml_files}
+ RESOURCES ${resource_files}
+ RESOURCE_PREFIX "/qt/qml"
)
-else()
+else ()
#加快qrc编译
set(QRC_FILE Qt5/imports/fluentui.qrc)
qt_add_big_resources(QRC_RESOURCES ${QRC_FILE})
@@ -151,37 +151,37 @@ else()
#如果是Qt6.2版本以下,则使用add_qmlplugin函数添加资源文件,这是个自定义的函数,详情见.cmake/QmlPlugin.cmake
include(QmlPlugin)
add_qmlplugin(${PROJECT_NAME}
- URI "FluentUI"
- VERSION 1.0
- SOURCES ${sources_files} ${FLUENTUI_VERSION_RC_PATH} ${QRC_RESOURCES}
- QMLFILES ${qml_files}
- QMLDIR imports/FluentUI
- BINARY_DIR ${FLUENTUI_QML_PLUGIN_DIRECTORY}
- LIBTYPE ${LIB_TYPE}
+ URI "FluentUI"
+ VERSION 1.0
+ SOURCES ${sources_files} ${FLUENTUI_VERSION_RC_PATH} ${QRC_RESOURCES}
+ QMLFILES ${qml_files}
+ QMLDIR imports/FluentUI
+ BINARY_DIR ${FLUENTUI_QML_PLUGIN_DIRECTORY}
+ LIBTYPE ${LIB_TYPE}
)
-endif()
+endif ()
target_compile_definitions(${PROJECT_NAME}
- PRIVATE
- #导入qrcode配置文件
- HAVE_CONFIG_H
+ PRIVATE
+ #导入qrcode配置文件
+ HAVE_CONFIG_H
)
#去掉mingw生成的动态库libxxx前缀lib,不去掉前缀会导致 module "FluentUI" plugin "fluentuiplugin" not found
-if(MINGW)
+if (MINGW)
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "")
-endif()
+endif ()
#MSVC Debug 添加后缀d,与Qt插件风格保持一致
-if(MSVC)
+if (MSVC)
set_target_properties(${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX "d")
-endif()
+endif ()
#链接库
target_link_libraries(${PROJECT_NAME} PUBLIC
- Qt${QT_VERSION_MAJOR}::Core
- Qt${QT_VERSION_MAJOR}::Quick
- Qt${QT_VERSION_MAJOR}::Qml
+ Qt${QT_VERSION_MAJOR}::Core
+ Qt${QT_VERSION_MAJOR}::Quick
+ Qt${QT_VERSION_MAJOR}::Qml
)
#安装
diff --git a/src/Def.cpp b/src/Def.cpp
deleted file mode 100644
index 7d0fc38e..00000000
--- a/src/Def.cpp
+++ /dev/null
@@ -1 +0,0 @@
-#include "Def.h"
diff --git a/src/Def.h b/src/Def.h
index 12a2f371..5f2a5b19 100644
--- a/src/Def.h
+++ b/src/Def.h
@@ -1,1564 +1,1591 @@
-#ifndef DEF_H
-#define DEF_H
+#pragma once
#include
#include
namespace FluSheetType {
-Q_NAMESPACE
-enum Position {
- Left = 0x0000,
- Top = 0x0001,
- Right = 0x0002,
- Bottom = 0x0004,
-};
-Q_ENUM_NS(Position)
-QML_NAMED_ELEMENT(FluSheetType)
+ Q_NAMESPACE
+ enum Position {
+ Left = 0x0000,
+ Top = 0x0001,
+ Right = 0x0002,
+ Bottom = 0x0004,
+ };
+
+ Q_ENUM_NS(Position)
+
+ QML_NAMED_ELEMENT(FluSheetType)
}
namespace FluThemeType {
-Q_NAMESPACE
-enum DarkMode {
- System = 0x0000,
- Light = 0x0001,
- Dark = 0x0002,
-};
-Q_ENUM_NS(DarkMode)
-QML_NAMED_ELEMENT(FluThemeType)
+ Q_NAMESPACE
+ enum DarkMode {
+ System = 0x0000,
+ Light = 0x0001,
+ Dark = 0x0002,
+ };
+
+ Q_ENUM_NS(DarkMode)
+
+ QML_NAMED_ELEMENT(FluThemeType)
}
namespace FluTimelineType {
-Q_NAMESPACE
-enum Mode {
- Left = 0x0000,
- Right = 0x0001,
- Alternate = 0x0002,
-};
-Q_ENUM_NS(Mode)
-QML_NAMED_ELEMENT(FluTimelineType)
+ Q_NAMESPACE
+ enum Mode {
+ Left = 0x0000,
+ Right = 0x0001,
+ Alternate = 0x0002,
+ };
+
+ Q_ENUM_NS(Mode)
+
+ QML_NAMED_ELEMENT(FluTimelineType)
}
namespace FluPageType {
-Q_NAMESPACE
-enum LaunchMode {
- Standard = 0x0000,
- SingleTask = 0x0001,
- SingleTop = 0x0002,
- SingleInstance = 0x0004
-};
-Q_ENUM_NS(LaunchMode)
-QML_NAMED_ELEMENT(FluPageType)
+ Q_NAMESPACE
+ enum LaunchMode {
+ Standard = 0x0000,
+ SingleTask = 0x0001,
+ SingleTop = 0x0002,
+ SingleInstance = 0x0004
+ };
+
+ Q_ENUM_NS(LaunchMode)
+
+ QML_NAMED_ELEMENT(FluPageType)
}
namespace FluWindowType {
-Q_NAMESPACE
-enum LaunchMode {
- Standard = 0x0000,
- SingleTask = 0x0001,
- SingleInstance = 0x0002
-};
-Q_ENUM_NS(LaunchMode)
-QML_NAMED_ELEMENT(FluWindowType)
+ Q_NAMESPACE
+ enum LaunchMode {
+ Standard = 0x0000,
+ SingleTask = 0x0001,
+ SingleInstance = 0x0002
+ };
+
+ Q_ENUM_NS(LaunchMode)
+
+ QML_NAMED_ELEMENT(FluWindowType)
}
namespace FluTreeViewType {
-Q_NAMESPACE
-enum SelectionMode {
- None = 0x0000,
- Single = 0x0001,
- Multiple = 0x0002
-};
-Q_ENUM_NS(SelectionMode)
-QML_NAMED_ELEMENT(FluTreeViewType)
+ Q_NAMESPACE
+ enum SelectionMode {
+ None = 0x0000,
+ Single = 0x0001,
+ Multiple = 0x0002
+ };
+
+ Q_ENUM_NS(SelectionMode)
+
+ QML_NAMED_ELEMENT(FluTreeViewType)
}
namespace FluStatusLayoutType {
-Q_NAMESPACE
-enum StatusMode {
- Loading = 0x0000,
- Empty = 0x0001,
- Error = 0x0002,
- Success = 0x0004
-};
-Q_ENUM_NS(StatusMode)
-QML_NAMED_ELEMENT(FluStatusLayoutType)
+ Q_NAMESPACE
+ enum StatusMode {
+ Loading = 0x0000,
+ Empty = 0x0001,
+ Error = 0x0002,
+ Success = 0x0004
+ };
+
+ Q_ENUM_NS(StatusMode)
+
+ QML_NAMED_ELEMENT(FluStatusLayoutType)
}
namespace FluContentDialogType {
-Q_NAMESPACE
-enum ButtonFlag {
- NeutralButton = 0x0001,
- NegativeButton = 0x0002,
- PositiveButton = 0x0004
-};
-Q_ENUM_NS(ButtonFlag)
-QML_NAMED_ELEMENT(FluContentDialogType)
+ Q_NAMESPACE
+ enum ButtonFlag {
+ NeutralButton = 0x0001,
+ NegativeButton = 0x0002,
+ PositiveButton = 0x0004
+ };
+
+ Q_ENUM_NS(ButtonFlag)
+
+ QML_NAMED_ELEMENT(FluContentDialogType)
}
namespace FluTimePickerType {
-Q_NAMESPACE
-enum HourFormat {
- H = 0x0000,
- HH = 0x0001
-};
-Q_ENUM_NS(HourFormat)
-QML_NAMED_ELEMENT(FluTimePickerType)
+ Q_NAMESPACE
+ enum HourFormat {
+ H = 0x0000,
+ HH = 0x0001
+ };
+
+ Q_ENUM_NS(HourFormat)
+
+ QML_NAMED_ELEMENT(FluTimePickerType)
}
namespace FluCalendarViewType {
-Q_NAMESPACE
-enum DisplayMode {
- Month = 0x0000,
- Year = 0x0001,
- Decade = 0x0002
-};
-Q_ENUM_NS(DisplayMode)
-QML_NAMED_ELEMENT(FluCalendarViewType)
+ Q_NAMESPACE
+ enum DisplayMode {
+ Month = 0x0000,
+ Year = 0x0001,
+ Decade = 0x0002
+ };
+
+ Q_ENUM_NS(DisplayMode)
+
+ QML_NAMED_ELEMENT(FluCalendarViewType)
}
namespace FluTabViewType {
-Q_NAMESPACE
-enum TabWidthBehavior {
- Equal = 0x0000,
- SizeToContent = 0x0001,
- Compact = 0x0002
-};
-Q_ENUM_NS(TabWidthBehavior)
-enum CloseButtonVisibility {
- Never = 0x0000,
- Always = 0x0001,
- OnHover = 0x0002
-};
-Q_ENUM_NS(CloseButtonVisibility)
-QML_NAMED_ELEMENT(FluTabViewType)
+ Q_NAMESPACE
+ enum TabWidthBehavior {
+ Equal = 0x0000,
+ SizeToContent = 0x0001,
+ Compact = 0x0002
+ };
+
+ Q_ENUM_NS(TabWidthBehavior)
+
+ enum CloseButtonVisibility {
+ Never = 0x0000,
+ Always = 0x0001,
+ OnHover = 0x0002
+ };
+
+ Q_ENUM_NS(CloseButtonVisibility)
+
+ QML_NAMED_ELEMENT(FluTabViewType)
}
namespace FluNavigationViewType {
-Q_NAMESPACE
-enum DisplayMode {
- Open = 0x0000,
- Compact = 0x0001,
- Minimal = 0x0002,
- Auto = 0x0004
-};
-Q_ENUM_NS(DisplayMode)
-enum PageMode {
- Stack = 0x0000,
- NoStack = 0x0001
-};
-Q_ENUM_NS(PageMode)
-QML_NAMED_ELEMENT(FluNavigationViewType)
+ Q_NAMESPACE
+ enum DisplayMode {
+ Open = 0x0000,
+ Compact = 0x0001,
+ Minimal = 0x0002,
+ Auto = 0x0004
+ };
+
+ Q_ENUM_NS(DisplayMode)
+
+ enum PageMode {
+ Stack = 0x0000,
+ NoStack = 0x0001
+ };
+
+ Q_ENUM_NS(PageMode)
+
+ QML_NAMED_ELEMENT(FluNavigationViewType)
}
namespace Fluent_Awesome {
-Q_NAMESPACE
-enum class Fluent_AwesomeType {
- GlobalNavButton=0xe700,
- Wifi=0xe701,
- Bluetooth=0xe702,
- Connect=0xe703,
- InternetSharing=0xe704,
- VPN=0xe705,
- Brightness=0xe706,
- MapPin=0xe707,
- QuietHours=0xe708,
- Airplane=0xe709,
- Tablet=0xe70a,
- QuickNote=0xe70b,
- RememberedDevice=0xe70c,
- ChevronDown=0xe70d,
- ChevronUp=0xe70e,
- Edit=0xe70f,
- Add=0xe710,
- Cancel=0xe711,
- More=0xe712,
- Settings=0xe713,
- Video=0xe714,
- Mail=0xe715,
- People=0xe716,
- Phone=0xe717,
- Pin=0xe718,
- Shop=0xe719,
- Stop=0xe71a,
- Link=0xe71b,
- Filter=0xe71c,
- AllApps=0xe71d,
- Zoom=0xe71e,
- ZoomOut=0xe71f,
- Microphone=0xe720,
- Search=0xe721,
- Camera=0xe722,
- Attach=0xe723,
- Send=0xe724,
- SendFill=0xe725,
- WalkSolid=0xe726,
- InPrivate=0xe727,
- FavoriteList=0xe728,
- PageSolid=0xe729,
- Forward=0xe72a,
- Back=0xe72b,
- Refresh=0xe72c,
- Share=0xe72d,
- Lock=0xe72e,
- ReportHacked=0xe730,
- EMI=0xe731,
- FavoriteStar=0xe734,
- FavoriteStarFill=0xe735,
- ReadingMode=0xe736,
- Favicon=0xe737,
- Remove=0xe738,
- Checkbox=0xe739,
- CheckboxComposite=0xe73a,
- CheckboxFill=0xe73b,
- CheckboxIndeterminate=0xe73c,
- CheckboxCompositeReversed=0xe73d,
- CheckMark=0xe73e,
- BackToWindow=0xe73f,
- FullScreen=0xe740,
- ResizeTouchLarger=0xe741,
- ResizeTouchSmaller=0xe742,
- ResizeMouseSmall=0xe743,
- ResizeMouseMedium=0xe744,
- ResizeMouseWide=0xe745,
- ResizeMouseTall=0xe746,
- ResizeMouseLarge=0xe747,
- SwitchUser=0xe748,
- Print=0xe749,
- Up=0xe74a,
- Down=0xe74b,
- OEM=0xe74c,
- Delete=0xe74d,
- Save=0xe74e,
- Mute=0xe74f,
- BackSpaceQWERTY=0xe750,
- ReturnKey=0xe751,
- UpArrowShiftKey=0xe752,
- Cloud=0xe753,
- Flashlight=0xe754,
- RotationLock=0xe755,
- CommandPrompt=0xe756,
- SIPMove=0xe759,
- SIPUndock=0xe75a,
- SIPRedock=0xe75b,
- EraseTool=0xe75c,
- UnderscoreSpace=0xe75d,
- GripperTool=0xe75e,
- Dialpad=0xe75f,
- PageLeft=0xe760,
- PageRight=0xe761,
- MultiSelect=0xe762,
- KeyboardLeftHanded=0xe763,
- KeyboardRightHanded=0xe764,
- KeyboardClassic=0xe765,
- KeyboardSplit=0xe766,
- Volume=0xe767,
- Play=0xe768,
- Pause=0xe769,
- ChevronLeft=0xe76b,
- ChevronRight=0xe76c,
- InkingTool=0xe76d,
- Emoji2=0xe76e,
- GripperBarHorizontal=0xe76f,
- System=0xe770,
- Personalize=0xe771,
- Devices=0xe772,
- SearchAndApps=0xe773,
- Globe=0xe774,
- TimeLanguage=0xe775,
- EaseOfAccess=0xe776,
- UpdateRestore=0xe777,
- HangUp=0xe778,
- ContactInfo=0xe779,
- Unpin=0xe77a,
- Contact=0xe77b,
- Memo=0xe77c,
- IncomingCall=0xe77e,
- Paste=0xe77f,
- PhoneBook=0xe780,
- LEDLight=0xe781,
- Error=0xe783,
- GripperBarVertical=0xe784,
- Unlock=0xe785,
- Slideshow=0xe786,
- Calendar=0xe787,
- GripperResize=0xe788,
- Megaphone=0xe789,
- Trim=0xe78a,
- NewWindow=0xe78b,
- SaveLocal=0xe78c,
- Color=0xe790,
- DataSense=0xe791,
- SaveAs=0xe792,
- Light=0xe793,
- AspectRatio=0xe799,
- DataSenseBar=0xe7a5,
- Redo=0xe7a6,
- Undo=0xe7a7,
- Crop=0xe7a8,
- OpenWith=0xe7ac,
- Rotate=0xe7ad,
- RedEye=0xe7b3,
- SetlockScreen=0xe7b5,
- MapPin2=0xe7b7,
- Package=0xe7b8,
- Warning=0xe7ba,
- ReadingList=0xe7bc,
- Education=0xe7be,
- ShoppingCart=0xe7bf,
- Train=0xe7c0,
- Flag=0xe7c1,
- Move=0xe7c2,
- Page=0xe7c3,
- TaskView=0xe7c4,
- BrowsePhotos=0xe7c5,
- HalfStarLeft=0xe7c6,
- HalfStarRight=0xe7c7,
- Record=0xe7c8,
- TouchPointer=0xe7c9,
- LangJPN=0xe7de,
- Ferry=0xe7e3,
- Highlight=0xe7e6,
- ActionCenterNotification=0xe7e7,
- PowerButton=0xe7e8,
- ResizeTouchNarrower=0xe7ea,
- ResizeTouchShorter=0xe7eb,
- DrivingMode=0xe7ec,
- RingerSilent=0xe7ed,
- OtherUser=0xe7ee,
- Admin=0xe7ef,
- CC=0xe7f0,
- SDCard=0xe7f1,
- CallForwarding=0xe7f2,
- SettingsDisplaySound=0xe7f3,
- TVMonitor=0xe7f4,
- Speakers=0xe7f5,
- Headphone=0xe7f6,
- DeviceLaptopPic=0xe7f7,
- DeviceLaptopNoPic=0xe7f8,
- DeviceMonitorRightPic=0xe7f9,
- DeviceMonitorLeftPic=0xe7fa,
- DeviceMonitorNoPic=0xe7fb,
- Game=0xe7fc,
- HorizontalTabKey=0xe7fd,
- StreetsideSplitMinimize=0xe802,
- StreetsideSplitExpand=0xe803,
- Car=0xe804,
- Walk=0xe805,
- Bus=0xe806,
- TiltUp=0xe809,
- TiltDown=0xe80a,
- CallControl=0xe80b,
- RotateMapRight=0xe80c,
- RotateMapLeft=0xe80d,
- Home=0xe80f,
- ParkingLocation=0xe811,
- MapCompassTop=0xe812,
- MapCompassBottom=0xe813,
- IncidentTriangle=0xe814,
- Touch=0xe815,
- MapDirections=0xe816,
- StartPoint=0xe819,
- StopPoint=0xe81a,
- EndPoint=0xe81b,
- History=0xe81c,
- Location=0xe81d,
- MapLayers=0xe81e,
- Accident=0xe81f,
- Work=0xe821,
- Construction=0xe822,
- Recent=0xe823,
- Bank=0xe825,
- DownloadMap=0xe826,
- InkingToolFill2=0xe829,
- HighlightFill2=0xe82a,
- EraseToolFill=0xe82b,
- EraseToolFill2=0xe82c,
- Dictionary=0xe82d,
- DictionaryAdd=0xe82e,
- ToolTip=0xe82f,
- ChromeBack=0xe830,
- ProvisioningPackage=0xe835,
- AddRemoteDevice=0xe836,
- FolderOpen=0xe838,
- Ethernet=0xe839,
- ShareBroadband=0xe83a,
- DirectAccess=0xe83b,
- DialUp=0xe83c,
- DefenderApp=0xe83d,
- BatteryCharging9=0xe83e,
- Battery10=0xe83f,
- Pinned=0xe840,
- PinFill=0xe841,
- PinnedFill=0xe842,
- PeriodKey=0xe843,
- PuncKey=0xe844,
- RevToggleKey=0xe845,
- RightArrowKeyTime1=0xe846,
- RightArrowKeyTime2=0xe847,
- LeftQuote=0xe848,
- RightQuote=0xe849,
- DownShiftKey=0xe84a,
- UpShiftKey=0xe84b,
- PuncKey0=0xe84c,
- PuncKeyLeftBottom=0xe84d,
- RightArrowKeyTime3=0xe84e,
- RightArrowKeyTime4=0xe84f,
- Battery0=0xe850,
- Battery1=0xe851,
- Battery2=0xe852,
- Battery3=0xe853,
- Battery4=0xe854,
- Battery5=0xe855,
- Battery6=0xe856,
- Battery7=0xe857,
- Battery8=0xe858,
- Battery9=0xe859,
- BatteryCharging0=0xe85a,
- BatteryCharging1=0xe85b,
- BatteryCharging2=0xe85c,
- BatteryCharging3=0xe85d,
- BatteryCharging4=0xe85e,
- BatteryCharging5=0xe85f,
- BatteryCharging6=0xe860,
- BatteryCharging7=0xe861,
- BatteryCharging8=0xe862,
- BatterySaver0=0xe863,
- BatterySaver1=0xe864,
- BatterySaver2=0xe865,
- BatterySaver3=0xe866,
- BatterySaver4=0xe867,
- BatterySaver5=0xe868,
- BatterySaver6=0xe869,
- BatterySaver7=0xe86a,
- BatterySaver8=0xe86b,
- SignalBars1=0xe86c,
- SignalBars2=0xe86d,
- SignalBars3=0xe86e,
- SignalBars4=0xe86f,
- SignalBars5=0xe870,
- SignalNotConnected=0xe871,
- Wifi1=0xe872,
- Wifi2=0xe873,
- Wifi3=0xe874,
- MobSIMLock=0xe875,
- MobSIMMissing=0xe876,
- Vibrate=0xe877,
- RoamingInternational=0xe878,
- RoamingDomestic=0xe879,
- CallForwardInternational=0xe87a,
- CallForwardRoaming=0xe87b,
- JpnRomanji=0xe87c,
- JpnRomanjiLock=0xe87d,
- JpnRomanjiShift=0xe87e,
- JpnRomanjiShiftLock=0xe87f,
- StatusDataTransfer=0xe880,
- StatusDataTransferVPN=0xe881,
- StatusDualSIM2=0xe882,
- StatusDualSIM2VPN=0xe883,
- StatusDualSIM1=0xe884,
- StatusDualSIM1VPN=0xe885,
- StatusSGLTE=0xe886,
- StatusSGLTECell=0xe887,
- StatusSGLTEDataVPN=0xe888,
- StatusVPN=0xe889,
- WifiHotspot=0xe88a,
- LanguageKor=0xe88b,
- LanguageCht=0xe88c,
- LanguageChs=0xe88d,
- USB=0xe88e,
- InkingToolFill=0xe88f,
- View=0xe890,
- HighlightFill=0xe891,
- Previous=0xe892,
- Next=0xe893,
- Clear=0xe894,
- Sync=0xe895,
- Download=0xe896,
- Help=0xe897,
- Upload=0xe898,
- Emoji=0xe899,
- TwoPage=0xe89a,
- LeaveChat=0xe89b,
- MailForward=0xe89c,
- RotateCamera=0xe89e,
- ClosePane=0xe89f,
- OpenPane=0xe8a0,
- PreviewLink=0xe8a1,
- AttachCamera=0xe8a2,
- ZoomIn=0xe8a3,
- Bookmarks=0xe8a4,
- Document=0xe8a5,
- ProtectedDocument=0xe8a6,
- OpenInNewWindow=0xe8a7,
- MailFill=0xe8a8,
- ViewAll=0xe8a9,
- VideoChat=0xe8aa,
- Switch=0xe8ab,
- Rename=0xe8ac,
- Go=0xe8ad,
- SurfaceHub=0xe8ae,
- Remote=0xe8af,
- Click=0xe8b0,
- Shuffle=0xe8b1,
- Movies=0xe8b2,
- SelectAll=0xe8b3,
- Orientation=0xe8b4,
- Import=0xe8b5,
- ImportAll=0xe8b6,
- Folder=0xe8b7,
- Webcam=0xe8b8,
- Picture=0xe8b9,
- Caption=0xe8ba,
- ChromeClose=0xe8bb,
- ShowResults=0xe8bc,
- Message=0xe8bd,
- Leaf=0xe8be,
- CalendarDay=0xe8bf,
- CalendarWeek=0xe8c0,
- Characters=0xe8c1,
- MailReplyAll=0xe8c2,
- Read=0xe8c3,
- ShowBcc=0xe8c4,
- HideBcc=0xe8c5,
- Cut=0xe8c6,
- PaymentCard=0xe8c7,
- Copy=0xe8c8,
- Important=0xe8c9,
- MailReply=0xe8ca,
- Sort=0xe8cb,
- MobileTablet=0xe8cc,
- DisconnectDrive=0xe8cd,
- MapDrive=0xe8ce,
- ContactPresence=0xe8cf,
- Priority=0xe8d0,
- GotoToday=0xe8d1,
- Font=0xe8d2,
- FontColor=0xe8d3,
- Contact2=0xe8d4,
- FolderFill=0xe8d5,
- Audio=0xe8d6,
- Permissions=0xe8d7,
- DisableUpdates=0xe8d8,
- Unfavorite=0xe8d9,
- OpenLocal=0xe8da,
- Italic=0xe8db,
- Underline=0xe8dc,
- Bold=0xe8dd,
- MoveToFolder=0xe8de,
- LikeDislike=0xe8df,
- Dislike=0xe8e0,
- Like=0xe8e1,
- AlignRight=0xe8e2,
- AlignCenter=0xe8e3,
- AlignLeft=0xe8e4,
- OpenFile=0xe8e5,
- ClearSelection=0xe8e6,
- FontDecrease=0xe8e7,
- FontIncrease=0xe8e8,
- FontSize=0xe8e9,
- CellPhone=0xe8ea,
- Reshare=0xe8eb,
- Tag=0xe8ec,
- RepeatOne=0xe8ed,
- RepeatAll=0xe8ee,
- Calculator=0xe8ef,
- Directions=0xe8f0,
- Library=0xe8f1,
- ChatBubbles=0xe8f2,
- PostUpdate=0xe8f3,
- NewFolder=0xe8f4,
- CalendarReply=0xe8f5,
- UnsyncFolder=0xe8f6,
- SyncFolder=0xe8f7,
- BlockContact=0xe8f8,
- SwitchApps=0xe8f9,
- AddFriend=0xe8fa,
- Accept=0xe8fb,
- GoToStart=0xe8fc,
- BulletedList=0xe8fd,
- Scan=0xe8fe,
- Preview=0xe8ff,
- Group=0xe902,
- ZeroBars=0xe904,
- OneBar=0xe905,
- TwoBars=0xe906,
- ThreeBars=0xe907,
- FourBars=0xe908,
- World=0xe909,
- Comment=0xe90a,
- MusicInfo=0xe90b,
- DockLeft=0xe90c,
- DockRight=0xe90d,
- DockBottom=0xe90e,
- Repair=0xe90f,
- Accounts=0xe910,
- DullSound=0xe911,
- Manage=0xe912,
- Street=0xe913,
- Printer3D=0xe914,
- RadioBullet=0xe915,
- Stopwatch=0xe916,
- Photo=0xe91b,
- ActionCenter=0xe91c,
- FullCircleMask=0xe91f,
- ChromeMinimize=0xe921,
- ChromeMaximize=0xe922,
- ChromeRestore=0xe923,
- Annotation=0xe924,
- BackSpaceQWERTYSm=0xe925,
- BackSpaceQWERTYMd=0xe926,
- Swipe=0xe927,
- Fingerprint=0xe928,
- Handwriting=0xe929,
- ChromeBackToWindow=0xe92c,
- ChromeFullScreen=0xe92d,
- KeyboardStandard=0xe92e,
- KeyboardDismiss=0xe92f,
- Completed=0xe930,
- ChromeAnnotate=0xe931,
- Label=0xe932,
- IBeam=0xe933,
- IBeamOutline=0xe934,
- FlickDown=0xe935,
- FlickUp=0xe936,
- FlickLeft=0xe937,
- FlickRight=0xe938,
- FeedbackApp=0xe939,
- MusicAlbum=0xe93c,
- Streaming=0xe93e,
- Code=0xe943,
- ReturnToWindow=0xe944,
- LightningBolt=0xe945,
- Info=0xe946,
- CalculatorMultiply=0xe947,
- CalculatorAddition=0xe948,
- CalculatorSubtract=0xe949,
- CalculatorDivide=0xe94a,
- CalculatorSquareroot=0xe94b,
- CalculatorPercentage=0xe94c,
- CalculatorNegate=0xe94d,
- CalculatorEqualTo=0xe94e,
- CalculatorBackspace=0xe94f,
- Component=0xe950,
- DMC=0xe951,
- Dock=0xe952,
- MultimediaDMS=0xe953,
- MultimediaDVR=0xe954,
- MultimediaPMP=0xe955,
- PrintfaxPrinterFile=0xe956,
- Sensor=0xe957,
- StorageOptical=0xe958,
- Communications=0xe95a,
- Headset=0xe95b,
- Projector=0xe95d,
- Health=0xe95e,
- Wire=0xe95f,
- Webcam2=0xe960,
- Input=0xe961,
- Mouse=0xe962,
- Smartcard=0xe963,
- SmartcardVirtual=0xe964,
- MediaStorageTower=0xe965,
- ReturnKeySm=0xe966,
- GameConsole=0xe967,
- Network=0xe968,
- StorageNetworkWireless=0xe969,
- StorageTape=0xe96a,
- ChevronUpSmall=0xe96d,
- ChevronDownSmall=0xe96e,
- ChevronLeftSmall=0xe96f,
- ChevronRightSmall=0xe970,
- ChevronUpMed=0xe971,
- ChevronDownMed=0xe972,
- ChevronLeftMed=0xe973,
- ChevronRightMed=0xe974,
- Devices2=0xe975,
- ExpandTile=0xe976,
- PC1=0xe977,
- PresenceChicklet=0xe978,
- PresenceChickletVideo=0xe979,
- Reply=0xe97a,
- SetTile=0xe97b,
- Type=0xe97c,
- Korean=0xe97d,
- HalfAlpha=0xe97e,
- FullAlpha=0xe97f,
- Key12On=0xe980,
- ChineseChangjie=0xe981,
- QWERTYOn=0xe982,
- QWERTYOff=0xe983,
- ChineseQuick=0xe984,
- Japanese=0xe985,
- FullHiragana=0xe986,
- FullKatakana=0xe987,
- HalfKatakana=0xe988,
- ChineseBoPoMoFo=0xe989,
- ChinesePinyin=0xe98a,
- ConstructionCone=0xe98f,
- XboxOneConsole=0xe990,
- Volume0=0xe992,
- Volume1=0xe993,
- Volume2=0xe994,
- Volume3=0xe995,
- BatteryUnknown=0xe996,
- WifiAttentionOverlay=0xe998,
- Robot=0xe99a,
- TapAndSend=0xe9a1,
- FitPage=0xe9a6,
- PasswordKeyShow=0xe9a8,
- PasswordKeyHide=0xe9a9,
- BidiLtr=0xe9aa,
- BidiRtl=0xe9ab,
- ForwardSm=0xe9ac,
- CommaKey=0xe9ad,
- DashKey=0xe9ae,
- DullSoundKey=0xe9af,
- HalfDullSound=0xe9b0,
- RightDoubleQuote=0xe9b1,
- LeftDoubleQuote=0xe9b2,
- PuncKeyRightBottom=0xe9b3,
- PuncKey1=0xe9b4,
- PuncKey2=0xe9b5,
- PuncKey3=0xe9b6,
- PuncKey4=0xe9b7,
- PuncKey5=0xe9b8,
- PuncKey6=0xe9b9,
- PuncKey9=0xe9ba,
- PuncKey7=0xe9bb,
- PuncKey8=0xe9bc,
- Frigid=0xe9ca,
- Unknown=0xe9ce,
- AreaChart=0xe9d2,
- CheckList=0xe9d5,
- Diagnostic=0xe9d9,
- Equalizer=0xe9e9,
- Process=0xe9f3,
- Processing=0xe9f5,
- ReportDocument=0xe9f9,
- VideoSolid=0xea0c,
- MixedMediaBadge=0xea0d,
- DisconnectDisplay=0xea14,
- Shield=0xea18,
- Info2=0xea1f,
- ActionCenterAsterisk=0xea21,
- Beta=0xea24,
- SaveCopy=0xea35,
- List=0xea37,
- Asterisk=0xea38,
- ErrorBadge=0xea39,
- CircleRing=0xea3a,
- CircleFill=0xea3b,
- MergeCall=0xea3c,
- PrivateCall=0xea3d,
- Record2=0xea3f,
- AllAppsMirrored=0xea40,
- BookmarksMirrored=0xea41,
- BulletedListMirrored=0xea42,
- CallForwardInternationalMirrored=0xea43,
- CallForwardRoamingMirrored=0xea44,
- ChromeBackMirrored=0xea47,
- ClearSelectionMirrored=0xea48,
- ClosePaneMirrored=0xea49,
- ContactInfoMirrored=0xea4a,
- DockRightMirrored=0xea4b,
- DockLeftMirrored=0xea4c,
- ExpandTileMirrored=0xea4e,
- GoMirrored=0xea4f,
- GripperResizeMirrored=0xea50,
- HelpMirrored=0xea51,
- ImportMirrored=0xea52,
- ImportAllMirrored=0xea53,
- LeaveChatMirrored=0xea54,
- ListMirrored=0xea55,
- MailForwardMirrored=0xea56,
- MailReplyMirrored=0xea57,
- MailReplyAllMirrored=0xea58,
- OpenPaneMirrored=0xea5b,
- OpenWithMirrored=0xea5c,
- ParkingLocationMirrored=0xea5e,
- ResizeMouseMediumMirrored=0xea5f,
- ResizeMouseSmallMirrored=0xea60,
- ResizeMouseTallMirrored=0xea61,
- ResizeTouchNarrowerMirrored=0xea62,
- SendMirrored=0xea63,
- SendFillMirrored=0xea64,
- ShowResultsMirrored=0xea65,
- Media=0xea69,
- SyncError=0xea6a,
- Devices3=0xea6c,
- SlowMotionOn=0xea79,
- Lightbulb=0xea80,
- StatusCircle=0xea81,
- StatusTriangle=0xea82,
- StatusError=0xea83,
- StatusWarning=0xea84,
- Puzzle=0xea86,
- CalendarSolid=0xea89,
- HomeSolid=0xea8a,
- ParkingLocationSolid=0xea8b,
- ContactSolid=0xea8c,
- ConstructionSolid=0xea8d,
- AccidentSolid=0xea8e,
- Ringer=0xea8f,
- PDF=0xea90,
- ThoughtBubble=0xea91,
- HeartBroken=0xea92,
- BatteryCharging10=0xea93,
- BatterySaver9=0xea94,
- BatterySaver10=0xea95,
- CallForwardingMirrored=0xea97,
- MultiSelectMirrored=0xea98,
- Broom=0xea99,
- ForwardCall=0xeac2,
- Trackers=0xeadf,
- Market=0xeafc,
- PieSingle=0xeb05,
- StockUp=0xeb0f,
- StockDown=0xeb11,
- Design=0xeb3c,
- Website=0xeb41,
- Drop=0xeb42,
- Radar=0xeb44,
- BusSolid=0xeb47,
- FerrySolid=0xeb48,
- StartPointSolid=0xeb49,
- StopPointSolid=0xeb4a,
- EndPointSolid=0xeb4b,
- AirplaneSolid=0xeb4c,
- TrainSolid=0xeb4d,
- WorkSolid=0xeb4e,
- ReminderFill=0xeb4f,
- Reminder=0xeb50,
- Heart=0xeb51,
- HeartFill=0xeb52,
- EthernetError=0xeb55,
- EthernetWarning=0xeb56,
- StatusConnecting1=0xeb57,
- StatusConnecting2=0xeb58,
- StatusUnsecure=0xeb59,
- WifiError0=0xeb5a,
- WifiError1=0xeb5b,
- WifiError2=0xeb5c,
- WifiError3=0xeb5d,
- WifiError4=0xeb5e,
- WifiWarning0=0xeb5f,
- WifiWarning1=0xeb60,
- WifiWarning2=0xeb61,
- WifiWarning3=0xeb62,
- WifiWarning4=0xeb63,
- Devices4=0xeb66,
- NUIIris=0xeb67,
- NUIFace=0xeb68,
- GatewayRouter=0xeb77,
- EditMirrored=0xeb7e,
- NUIFPStartSlideHand=0xeb82,
- NUIFPStartSlideAction=0xeb83,
- NUIFPContinueSlideHand=0xeb84,
- NUIFPContinueSlideAction=0xeb85,
- NUIFPRollRightHand=0xeb86,
- NUIFPRollRightHandAction=0xeb87,
- NUIFPRollLeftHand=0xeb88,
- NUIFPRollLeftAction=0xeb89,
- NUIFPPressHand=0xeb8a,
- NUIFPPressAction=0xeb8b,
- NUIFPPressRepeatHand=0xeb8c,
- NUIFPPressRepeatAction=0xeb8d,
- StatusErrorFull=0xeb90,
- TaskViewExpanded=0xeb91,
- Certificate=0xeb95,
- BackSpaceQWERTYLg=0xeb96,
- ReturnKeyLg=0xeb97,
- FastForward=0xeb9d,
- Rewind=0xeb9e,
- Photo2=0xeb9f,
- MobBattery0=0xeba0,
- MobBattery1=0xeba1,
- MobBattery2=0xeba2,
- MobBattery3=0xeba3,
- MobBattery4=0xeba4,
- MobBattery5=0xeba5,
- MobBattery6=0xeba6,
- MobBattery7=0xeba7,
- MobBattery8=0xeba8,
- MobBattery9=0xeba9,
- MobBattery10=0xebaa,
- MobBatteryCharging0=0xebab,
- MobBatteryCharging1=0xebac,
- MobBatteryCharging2=0xebad,
- MobBatteryCharging3=0xebae,
- MobBatteryCharging4=0xebaf,
- MobBatteryCharging5=0xebb0,
- MobBatteryCharging6=0xebb1,
- MobBatteryCharging7=0xebb2,
- MobBatteryCharging8=0xebb3,
- MobBatteryCharging9=0xebb4,
- MobBatteryCharging10=0xebb5,
- MobBatterySaver0=0xebb6,
- MobBatterySaver1=0xebb7,
- MobBatterySaver2=0xebb8,
- MobBatterySaver3=0xebb9,
- MobBatterySaver4=0xebba,
- MobBatterySaver5=0xebbb,
- MobBatterySaver6=0xebbc,
- MobBatterySaver7=0xebbd,
- MobBatterySaver8=0xebbe,
- MobBatterySaver9=0xebbf,
- MobBatterySaver10=0xebc0,
- DictionaryCloud=0xebc3,
- ResetDrive=0xebc4,
- VolumeBars=0xebc5,
- Project=0xebc6,
- AdjustHologram=0xebd2,
- CloudDownload=0xebd3,
- MobWifiCallBars=0xebd4,
- MobWifiCall0=0xebd5,
- MobWifiCall1=0xebd6,
- MobWifiCall2=0xebd7,
- MobWifiCall3=0xebd8,
- MobWifiCall4=0xebd9,
- Family=0xebda,
- LockFeedback=0xebdb,
- DeviceDiscovery=0xebde,
- WindDirection=0xebe6,
- RightArrowKeyTime0=0xebe7,
- Bug=0xebe8,
- TabletMode=0xebfc,
- StatusCircleLeft=0xebfd,
- StatusTriangleLeft=0xebfe,
- StatusErrorLeft=0xebff,
- StatusWarningLeft=0xec00,
- MobBatteryUnknown=0xec02,
- NetworkTower=0xec05,
- CityNext=0xec06,
- CityNext2=0xec07,
- Courthouse=0xec08,
- Groceries=0xec09,
- Sustainable=0xec0a,
- BuildingEnergy=0xec0b,
- ToggleFilled=0xec11,
- ToggleBorder=0xec12,
- SliderThumb=0xec13,
- ToggleThumb=0xec14,
- MiracastLogoSmall=0xec15,
- MiracastLogoLarge=0xec16,
- PLAP=0xec19,
- Badge=0xec1b,
- SignalRoaming=0xec1e,
- MobileLocked=0xec20,
- InsiderHubApp=0xec24,
- PersonalFolder=0xec25,
- HomeGroup=0xec26,
- MyNetwork=0xec27,
- KeyboardFull=0xec31,
- Cafe=0xec32,
- MobSignal1=0xec37,
- MobSignal2=0xec38,
- MobSignal3=0xec39,
- MobSignal4=0xec3a,
- MobSignal5=0xec3b,
- MobWifi1=0xec3c,
- MobWifi2=0xec3d,
- MobWifi3=0xec3e,
- MobWifi4=0xec3f,
- MobAirplane=0xec40,
- MobBluetooth=0xec41,
- MobActionCenter=0xec42,
- MobLocation=0xec43,
- MobWifiHotspot=0xec44,
- LanguageJpn=0xec45,
- MobQuietHours=0xec46,
- MobDrivingMode=0xec47,
- SpeedOff=0xec48,
- SpeedMedium=0xec49,
- SpeedHigh=0xec4a,
- ThisPC=0xec4e,
- MusicNote=0xec4f,
- FileExplorer=0xec50,
- FileExplorerApp=0xec51,
- LeftArrowKeyTime0=0xec52,
- MicOff=0xec54,
- MicSleep=0xec55,
- MicError=0xec56,
- PlaybackRate1x=0xec57,
- PlaybackRateOther=0xec58,
- CashDrawer=0xec59,
- BarcodeScanner=0xec5a,
- ReceiptPrinter=0xec5b,
- MagStripeReader=0xec5c,
- CompletedSolid=0xec61,
- CompanionApp=0xec64,
- Favicon2=0xec6c,
- SwipeRevealArt=0xec6d,
- MicOn=0xec71,
- MicClipping=0xec72,
- TabletSelected=0xec74,
- MobileSelected=0xec75,
- LaptopSelected=0xec76,
- TVMonitorSelected=0xec77,
- DeveloperTools=0xec7a,
- MobCallForwarding=0xec7e,
- MobCallForwardingMirrored=0xec7f,
- BodyCam=0xec80,
- PoliceCar=0xec81,
- Draw=0xec87,
- DrawSolid=0xec88,
- LowerBrightness=0xec8a,
- ScrollUpDown=0xec8f,
- DateTime=0xec92,
- HoloLens=0xec94,
- Tiles=0xeca5,
- PartyLeader=0xeca7,
- AppIconDefault=0xecaa,
- Calories=0xecad,
- POI=0xecaf,
- BandBattery0=0xecb9,
- BandBattery1=0xecba,
- BandBattery2=0xecbb,
- BandBattery3=0xecbc,
- BandBattery4=0xecbd,
- BandBattery5=0xecbe,
- BandBattery6=0xecbf,
- AddSurfaceHub=0xecc4,
- DevUpdate=0xecc5,
- Unit=0xecc6,
- AddTo=0xecc8,
- RemoveFrom=0xecc9,
- RadioBtnOff=0xecca,
- RadioBtnOn=0xeccb,
- RadioBullet2=0xeccc,
- ExploreContent=0xeccd,
- Blocked2=0xece4,
- ScrollMode=0xece7,
- ZoomMode=0xece8,
- PanMode=0xece9,
- WiredUSB=0xecf0,
- WirelessUSB=0xecf1,
- USBSafeConnect=0xecf3,
- ActionCenterNotificationMirrored=0xed0c,
- ActionCenterMirrored=0xed0d,
- SubscriptionAdd=0xed0e,
- ResetDevice=0xed10,
- SubscriptionAddMirrored=0xed11,
- QRCode=0xed14,
- Feedback=0xed15,
- Hide=0xed1a,
- Subtitles=0xed1e,
- SubtitlesAudio=0xed1f,
- OpenFolderHorizontal=0xed25,
- CalendarMirrored=0xed28,
- MobeSIM=0xed2a,
- MobeSIMNoProfile=0xed2b,
- MobeSIMLocked=0xed2c,
- MobeSIMBusy=0xed2d,
- SignalError=0xed2e,
- StreamingEnterprise=0xed2f,
- Headphone0=0xed30,
- Headphone1=0xed31,
- Headphone2=0xed32,
- Headphone3=0xed33,
- Apps=0xed35,
- KeyboardBrightness=0xed39,
- KeyboardLowerBrightness=0xed3a,
- SkipBack10=0xed3c,
- SkipForward30=0xed3d,
- TreeFolderFolder=0xed41,
- TreeFolderFolderFill=0xed42,
- TreeFolderFolderOpen=0xed43,
- TreeFolderFolderOpenFill=0xed44,
- MultimediaDMP=0xed47,
- KeyboardOneHanded=0xed4c,
- Narrator=0xed4d,
- EmojiTabPeople=0xed53,
- EmojiTabSmilesAnimals=0xed54,
- EmojiTabCelebrationObjects=0xed55,
- EmojiTabFoodPlants=0xed56,
- EmojiTabTransitPlaces=0xed57,
- EmojiTabSymbols=0xed58,
- EmojiTabTextSmiles=0xed59,
- EmojiTabFavorites=0xed5a,
- EmojiSwatch=0xed5b,
- ConnectApp=0xed5c,
- CompanionDeviceFramework=0xed5d,
- Ruler=0xed5e,
- FingerInking=0xed5f,
- StrokeErase=0xed60,
- PointErase=0xed61,
- ClearAllInk=0xed62,
- Pencil=0xed63,
- Marker=0xed64,
- InkingCaret=0xed65,
- InkingColorOutline=0xed66,
- InkingColorFill=0xed67,
- HardDrive=0xeda2,
- NetworkAdapter=0xeda3,
- Touchscreen=0xeda4,
- NetworkPrinter=0xeda5,
- CloudPrinter=0xeda6,
- KeyboardShortcut=0xeda7,
- BrushSize=0xeda8,
- NarratorForward=0xeda9,
- NarratorForwardMirrored=0xedaa,
- SyncBadge12=0xedab,
- RingerBadge12=0xedac,
- AsteriskBadge12=0xedad,
- ErrorBadge12=0xedae,
- CircleRingBadge12=0xedaf,
- CircleFillBadge12=0xedb0,
- ImportantBadge12=0xedb1,
- MailBadge12=0xedb3,
- PauseBadge12=0xedb4,
- PlayBadge12=0xedb5,
- PenWorkspace=0xedc6,
- CaretLeft8=0xedd5,
- CaretRight8=0xedd6,
- CaretUp8=0xedd7,
- CaretDown8=0xedd8,
- CaretLeftSolid8=0xedd9,
- CaretRightSolid8=0xedda,
- CaretUpSolid8=0xeddb,
- CaretDownSolid8=0xeddc,
- Strikethrough=0xede0,
- Export=0xede1,
- ExportMirrored=0xede2,
- ButtonMenu=0xede3,
- CloudSearch=0xede4,
- PinyinIMELogo=0xede5,
- CalligraphyPen=0xedfb,
- ReplyMirrored=0xee35,
- LockscreenDesktop=0xee3f,
- TaskViewSettings=0xee40,
- MiniExpand2Mirrored=0xee47,
- MiniContract2Mirrored=0xee49,
- Play36=0xee4a,
- PenPalette=0xee56,
- GuestUser=0xee57,
- SettingsBattery=0xee63,
- TaskbarPhone=0xee64,
- LockScreenGlance=0xee65,
- GenericScan=0xee6f,
- ImageExport=0xee71,
- WifiEthernet=0xee77,
- ActionCenterQuiet=0xee79,
- ActionCenterQuietNotification=0xee7a,
- TrackersMirrored=0xee92,
- DateTimeMirrored=0xee93,
- Wheel=0xee94,
- VirtualMachineGroup=0xeea3,
- ButtonView2=0xeeca,
- PenWorkspaceMirrored=0xef15,
- PenPaletteMirrored=0xef16,
- StrokeEraseMirrored=0xef17,
- PointEraseMirrored=0xef18,
- ClearAllInkMirrored=0xef19,
- BackgroundToggle=0xef1f,
- Marquee=0xef20,
- ChromeCloseContrast=0xef2c,
- ChromeMinimizeContrast=0xef2d,
- ChromeMaximizeContrast=0xef2e,
- ChromeRestoreContrast=0xef2f,
- TrafficLight=0xef31,
- Replay=0xef3b,
- Eyedropper=0xef3c,
- LineDisplay=0xef3d,
- PINPad=0xef3e,
- SignatureCapture=0xef3f,
- ChipCardCreditCardReader=0xef40,
- MarketDown=0xef42,
- PlayerSettings=0xef58,
- LandscapeOrientation=0xef6b,
- Flow=0xef90,
- Touchpad=0xefa5,
- Speech=0xefa9,
- KnowledgeArticle=0xf000,
- Relationship=0xf003,
- ZipFolder=0xf012,
- DefaultAPN=0xf080,
- UserAPN=0xf081,
- DoublePinyin=0xf085,
- BlueLight=0xf08c,
- CaretSolidLeft=0xf08d,
- CaretSolidDown=0xf08e,
- CaretSolidRight=0xf08f,
- CaretSolidUp=0xf090,
- ButtonA=0xf093,
- ButtonB=0xf094,
- ButtonY=0xf095,
- ButtonX=0xf096,
- ArrowUp8=0xf0ad,
- ArrowDown8=0xf0ae,
- ArrowRight8=0xf0af,
- ArrowLeft8=0xf0b0,
- QuarentinedItems=0xf0b2,
- QuarentinedItemsMirrored=0xf0b3,
- Protractor=0xf0b4,
- ChecklistMirrored=0xf0b5,
- StatusCircle7=0xf0b6,
- StatusCheckmark7=0xf0b7,
- StatusErrorCircle7=0xf0b8,
- Connected=0xf0b9,
- PencilFill=0xf0c6,
- CalligraphyFill=0xf0c7,
- QuarterStarLeft=0xf0ca,
- QuarterStarRight=0xf0cb,
- ThreeQuarterStarLeft=0xf0cc,
- ThreeQuarterStarRight=0xf0cd,
- QuietHoursBadge12=0xf0ce,
- BackMirrored=0xf0d2,
- ForwardMirrored=0xf0d3,
- ChromeBackContrast=0xf0d5,
- ChromeBackContrastMirrored=0xf0d6,
- ChromeBackToWindowContrast=0xf0d7,
- ChromeFullScreenContrast=0xf0d8,
- GridView=0xf0e2,
- ClipboardList=0xf0e3,
- ClipboardListMirrored=0xf0e4,
- OutlineQuarterStarLeft=0xf0e5,
- OutlineQuarterStarRight=0xf0e6,
- OutlineHalfStarLeft=0xf0e7,
- OutlineHalfStarRight=0xf0e8,
- OutlineThreeQuarterStarLeft=0xf0e9,
- OutlineThreeQuarterStarRight=0xf0ea,
- SpatialVolume0=0xf0eb,
- SpatialVolume1=0xf0ec,
- SpatialVolume2=0xf0ed,
- SpatialVolume3=0xf0ee,
- ApplicationGuard=0xf0ef,
- OutlineStarLeftHalf=0xf0f7,
- OutlineStarRightHalf=0xf0f8,
- ChromeAnnotateContrast=0xf0f9,
- DefenderBadge12=0xf0fb,
- DetachablePC=0xf103,
- LeftStick=0xf108,
- RightStick=0xf109,
- TriggerLeft=0xf10a,
- TriggerRight=0xf10b,
- BumperLeft=0xf10c,
- BumperRight=0xf10d,
- Dpad=0xf10e,
- EnglishPunctuation=0xf110,
- ChinesePunctuation=0xf111,
- HMD=0xf119,
- CtrlSpatialRight=0xf11b,
- PaginationDotOutline10=0xf126,
- PaginationDotSolid10=0xf127,
- StrokeErase2=0xf128,
- SmallErase=0xf129,
- LargeErase=0xf12a,
- FolderHorizontal=0xf12b,
- MicrophoneListening=0xf12e,
- StatusExclamationCircle7=0xf12f,
- Video360=0xf131,
- GiftboxOpen=0xf133,
- StatusCircleOuter=0xf136,
- StatusCircleInner=0xf137,
- StatusCircleRing=0xf138,
- StatusTriangleOuter=0xf139,
- StatusTriangleInner=0xf13a,
- StatusTriangleExclamation=0xf13b,
- StatusCircleExclamation=0xf13c,
- StatusCircleErrorX=0xf13d,
- StatusCircleCheckmark=0xf13e,
- StatusCircleInfo=0xf13f,
- StatusCircleBlock=0xf140,
- StatusCircleBlock2=0xf141,
- StatusCircleQuestionMark=0xf142,
- StatusCircleSync=0xf143,
- Dial1=0xf146,
- Dial2=0xf147,
- Dial3=0xf148,
- Dial4=0xf149,
- Dial5=0xf14a,
- Dial6=0xf14b,
- Dial7=0xf14c,
- Dial8=0xf14d,
- Dial9=0xf14e,
- Dial10=0xf14f,
- Dial11=0xf150,
- Dial12=0xf151,
- Dial13=0xf152,
- Dial14=0xf153,
- Dial15=0xf154,
- Dial16=0xf155,
- DialShape1=0xf156,
- DialShape2=0xf157,
- DialShape3=0xf158,
- DialShape4=0xf159,
- ClosedCaptionsInternational=0xf15f,
- TollSolid=0xf161,
- TrafficCongestionSolid=0xf163,
- ExploreContentSingle=0xf164,
- CollapseContent=0xf165,
- CollapseContentSingle=0xf166,
- InfoSolid=0xf167,
- GroupList=0xf168,
- CaretBottomRightSolidCenter8=0xf169,
- ProgressRingDots=0xf16a,
- Checkbox14=0xf16b,
- CheckboxComposite14=0xf16c,
- CheckboxIndeterminateCombo14=0xf16d,
- CheckboxIndeterminateCombo=0xf16e,
- StatusPause7=0xf175,
- CharacterAppearance=0xf17f,
- Lexicon=0xf180,
- ScreenTime=0xf182,
- HeadlessDevice=0xf191,
- NetworkSharing=0xf193,
- EyeGaze=0xf19d,
- ToggleLeft=0xf19e,
- ToggleRight=0xf19f,
- WindowsInsider=0xf1ad,
- ChromeSwitch=0xf1cb,
- ChromeSwitchContast=0xf1cc,
- StatusCheckmark=0xf1d8,
- StatusCheckmarkLeft=0xf1d9,
- KeyboardLeftAligned=0xf20c,
- KeyboardRightAligned=0xf20d,
- KeyboardSettings=0xf210,
- NetworkPhysical=0xf211,
- IOT=0xf22c,
- UnknownMirrored=0xf22e,
- ViewDashboard=0xf246,
- ExploitProtectionSettings=0xf259,
- KeyboardNarrow=0xf260,
- Keyboard12Key=0xf261,
- KeyboardDock=0xf26b,
- KeyboardUndock=0xf26c,
- KeyboardLeftDock=0xf26d,
- KeyboardRightDock=0xf26e,
- Ear=0xf270,
- PointerHand=0xf271,
- Bullseye=0xf272,
- DocumentApproval=0xf28b,
- LocaleLanguage=0xf2b7,
- PassiveAuthentication=0xf32a,
- ColorSolid=0xf354,
- NetworkOffline=0xf384,
- NetworkConnected=0xf385,
- NetworkConnectedCheckmark=0xf386,
- SignOut=0xf3b1,
- StatusInfo=0xf3cc,
- StatusInfoLeft=0xf3cd,
- NearbySharing=0xf3e2,
- CtrlSpatialLeft=0xf3e7,
- InteractiveDashboard=0xf404,
- DeclineCall=0xf405,
- ClippingTool=0xf406,
- RectangularClipping=0xf407,
- FreeFormClipping=0xf408,
- CopyTo=0xf413,
- IDBadge=0xf427,
- DynamicLock=0xf439,
- PenTips=0xf45e,
- PenTipsMirrored=0xf45f,
- HWPJoin=0xf460,
- HWPInsert=0xf461,
- HWPStrikeThrough=0xf462,
- HWPScratchOut=0xf463,
- HWPSplit=0xf464,
- HWPNewLine=0xf465,
- HWPOverwrite=0xf466,
- MobWifiWarning1=0xf473,
- MobWifiWarning2=0xf474,
- MobWifiWarning3=0xf475,
- MobWifiWarning4=0xf476,
- MicLocationCombo=0xf47f,
- Globe2=0xf49a,
- SpecialEffectSize=0xf4a5,
- GIF=0xf4a9,
- Sticker2=0xf4aa,
- SurfaceHubSelected=0xf4be,
- HoloLensSelected=0xf4bf,
- Earbud=0xf4c0,
- MixVolumes=0xf4c3,
- Safe=0xf540,
- LaptopSecure=0xf552,
- PrintDefault=0xf56d,
- PageMirrored=0xf56e,
- LandscapeOrientationMirrored=0xf56f,
- ColorOff=0xf570,
- PrintAllPages=0xf571,
- PrintCustomRange=0xf572,
- PageMarginPortraitNarrow=0xf573,
- PageMarginPortraitNormal=0xf574,
- PageMarginPortraitModerate=0xf575,
- PageMarginPortraitWide=0xf576,
- PageMarginLandscapeNarrow=0xf577,
- PageMarginLandscapeNormal=0xf578,
- PageMarginLandscapeModerate=0xf579,
- PageMarginLandscapeWide=0xf57a,
- CollateLandscape=0xf57b,
- CollatePortrait=0xf57c,
- CollatePortraitSeparated=0xf57d,
- DuplexLandscapeOneSided=0xf57e,
- DuplexLandscapeOneSidedMirrored=0xf57f,
- DuplexLandscapeTwoSidedLongEdge=0xf580,
- DuplexLandscapeTwoSidedLongEdgeMirrored=0xf581,
- DuplexLandscapeTwoSidedShortEdge=0xf582,
- DuplexLandscapeTwoSidedShortEdgeMirrored=0xf583,
- DuplexPortraitOneSided=0xf584,
- DuplexPortraitOneSidedMirrored=0xf585,
- DuplexPortraitTwoSidedLongEdge=0xf586,
- DuplexPortraitTwoSidedLongEdgeMirrored=0xf587,
- DuplexPortraitTwoSidedShortEdge=0xf588,
- DuplexPortraitTwoSidedShortEdgeMirrored=0xf589,
- PPSOneLandscape=0xf58a,
- PPSTwoLandscape=0xf58b,
- PPSTwoPortrait=0xf58c,
- PPSFourLandscape=0xf58d,
- PPSFourPortrait=0xf58e,
- HolePunchOff=0xf58f,
- HolePunchPortraitLeft=0xf590,
- HolePunchPortraitRight=0xf591,
- HolePunchPortraitTop=0xf592,
- HolePunchPortraitBottom=0xf593,
- HolePunchLandscapeLeft=0xf594,
- HolePunchLandscapeRight=0xf595,
- HolePunchLandscapeTop=0xf596,
- HolePunchLandscapeBottom=0xf597,
- StaplingOff=0xf598,
- StaplingPortraitTopLeft=0xf599,
- StaplingPortraitTopRight=0xf59a,
- StaplingPortraitBottomRight=0xf59b,
- StaplingPortraitTwoLeft=0xf59c,
- StaplingPortraitTwoRight=0xf59d,
- StaplingPortraitTwoTop=0xf59e,
- StaplingPortraitTwoBottom=0xf59f,
- StaplingPortraitBookBinding=0xf5a0,
- StaplingLandscapeTopLeft=0xf5a1,
- StaplingLandscapeTopRight=0xf5a2,
- StaplingLandscapeBottomLeft=0xf5a3,
- StaplingLandscapeBottomRight=0xf5a4,
- StaplingLandscapeTwoLeft=0xf5a5,
- StaplingLandscapeTwoRight=0xf5a6,
- StaplingLandscapeTwoTop=0xf5a7,
- StaplingLandscapeTwoBottom=0xf5a8,
- StaplingLandscapeBookBinding=0xf5a9,
- StatusDataTransferRoaming=0xf5aa,
- MobSIMError=0xf5ab,
- CollateLandscapeSeparated=0xf5ac,
- PPSOnePortrait=0xf5ad,
- StaplingPortraitBottomLeft=0xf5ae,
- PlaySolid=0xf5b0,
- RepeatOff=0xf5e7,
- Set=0xf5ed,
- SetSolid=0xf5ee,
- FuzzyReading=0xf5ef,
- VerticalBattery0=0xf5f2,
- VerticalBattery1=0xf5f3,
- VerticalBattery2=0xf5f4,
- VerticalBattery3=0xf5f5,
- VerticalBattery4=0xf5f6,
- VerticalBattery5=0xf5f7,
- VerticalBattery6=0xf5f8,
- VerticalBattery7=0xf5f9,
- VerticalBattery8=0xf5fa,
- VerticalBattery9=0xf5fb,
- VerticalBattery10=0xf5fc,
- VerticalBatteryCharging0=0xf5fd,
- VerticalBatteryCharging1=0xf5fe,
- VerticalBatteryCharging2=0xf5ff,
- VerticalBatteryCharging3=0xf600,
- VerticalBatteryCharging4=0xf601,
- VerticalBatteryCharging5=0xf602,
- VerticalBatteryCharging6=0xf603,
- VerticalBatteryCharging7=0xf604,
- VerticalBatteryCharging8=0xf605,
- VerticalBatteryCharging9=0xf606,
- VerticalBatteryCharging10=0xf607,
- VerticalBatteryUnknown=0xf608,
- SIMError=0xf618,
- SIMMissing=0xf619,
- SIMLock=0xf61a,
- eSIM=0xf61b,
- eSIMNoProfile=0xf61c,
- eSIMLocked=0xf61d,
- eSIMBusy=0xf61e,
- NoiseCancelation=0xf61f,
- NoiseCancelationOff=0xf620,
- MusicSharing=0xf623,
- MusicSharingOff=0xf624,
- CircleShapeSolid=0xf63c,
- WifiCallBars=0xf657,
- WifiCall0=0xf658,
- WifiCall1=0xf659,
- WifiCall2=0xf65a,
- WifiCall3=0xf65b,
- WifiCall4=0xf65c,
- CHTLanguageBar=0xf69e,
- ComposeMode=0xf6a9,
- ExpressiveInputEntry=0xf6b8,
- EmojiTabMoreSymbols=0xf6ba,
- WebSearch=0xf6fa,
- Kiosk=0xf712,
- RTTLogo=0xf714,
- VoiceCall=0xf715,
- GoToMessage=0xf716,
- ReturnToCall=0xf71a,
- StartPresenting=0xf71c,
- StopPresenting=0xf71d,
- ProductivityMode=0xf71e,
- SetHistoryStatus=0xf738,
- SetHistoryStatus2=0xf739,
- Keyboardsettings20=0xf73d,
- OneHandedRight20=0xf73e,
- OneHandedLeft20=0xf73f,
- Split20=0xf740,
- Full20=0xf741,
- Handwriting20=0xf742,
- ChevronLeft20=0xf743,
- ChevronLeft32=0xf744,
- ChevronRight20=0xf745,
- ChevronRight32=0xf746,
- Event12=0xf763,
- MicOff2=0xf781,
- DeliveryOptimization=0xf785,
- CancelMedium=0xf78a,
- SearchMedium=0xf78b,
- AcceptMedium=0xf78c,
- RevealPasswordMedium=0xf78d,
- DeleteWord=0xf7ad,
- DeleteWordFill=0xf7ae,
- DeleteLines=0xf7af,
- DeleteLinesFill=0xf7b0,
- InstertWords=0xf7b1,
- InstertWordsFill=0xf7b2,
- JoinWords=0xf7b3,
- JoinWordsFill=0xf7b4,
- OverwriteWords=0xf7b5,
- OverwriteWordsFill=0xf7b6,
- AddNewLine=0xf7b7,
- AddNewLineFill=0xf7b8,
- OverwriteWordsKorean=0xf7b9,
- OverwriteWordsFillKorean=0xf7ba,
- EducationIcon=0xf7bb,
- WindowSnipping=0xf7ed,
- VideoCapture=0xf7ee,
- StatusSecured=0xf809,
- NarratorApp=0xf83b,
- PowerButtonUpdate=0xf83d,
- RestartUpdate=0xf83e,
- UpdateStatusDot=0xf83f,
- Eject=0xf847,
- Spelling=0xf87b,
- SpellingKorean=0xf87c,
- SpellingSerbian=0xf87d,
- SpellingChinese=0xf87e,
- FolderSelect=0xf89a,
- SmartScreen=0xf8a5,
- ExploitProtection=0xf8a6,
- AddBold=0xf8aa,
- SubtractBold=0xf8ab,
- BackSolidBold=0xf8ac,
- ForwardSolidBold=0xf8ad,
- PauseBold=0xf8ae,
- ClickSolid=0xf8af,
- SettingsSolid=0xf8b0,
- MicrophoneSolidBold=0xf8b1,
- SpeechSolidBold=0xf8b2,
- ClickedOutLoudSolidBold=0xf8b3,
-};
-Q_ENUM_NS(Fluent_AwesomeType)
-QML_NAMED_ELEMENT(FluentIcons)
-}
+ Q_NAMESPACE
+ enum class Fluent_AwesomeType {
+ GlobalNavButton = 0xe700,
+ Wifi = 0xe701,
+ Bluetooth = 0xe702,
+ Connect = 0xe703,
+ InternetSharing = 0xe704,
+ VPN = 0xe705,
+ Brightness = 0xe706,
+ MapPin = 0xe707,
+ QuietHours = 0xe708,
+ Airplane = 0xe709,
+ Tablet = 0xe70a,
+ QuickNote = 0xe70b,
+ RememberedDevice = 0xe70c,
+ ChevronDown = 0xe70d,
+ ChevronUp = 0xe70e,
+ Edit = 0xe70f,
+ Add = 0xe710,
+ Cancel = 0xe711,
+ More = 0xe712,
+ Settings = 0xe713,
+ Video = 0xe714,
+ Mail = 0xe715,
+ People = 0xe716,
+ Phone = 0xe717,
+ Pin = 0xe718,
+ Shop = 0xe719,
+ Stop = 0xe71a,
+ Link = 0xe71b,
+ Filter = 0xe71c,
+ AllApps = 0xe71d,
+ Zoom = 0xe71e,
+ ZoomOut = 0xe71f,
+ Microphone = 0xe720,
+ Search = 0xe721,
+ Camera = 0xe722,
+ Attach = 0xe723,
+ Send = 0xe724,
+ SendFill = 0xe725,
+ WalkSolid = 0xe726,
+ InPrivate = 0xe727,
+ FavoriteList = 0xe728,
+ PageSolid = 0xe729,
+ Forward = 0xe72a,
+ Back = 0xe72b,
+ Refresh = 0xe72c,
+ Share = 0xe72d,
+ Lock = 0xe72e,
+ ReportHacked = 0xe730,
+ EMI = 0xe731,
+ FavoriteStar = 0xe734,
+ FavoriteStarFill = 0xe735,
+ ReadingMode = 0xe736,
+ Favicon = 0xe737,
+ Remove = 0xe738,
+ Checkbox = 0xe739,
+ CheckboxComposite = 0xe73a,
+ CheckboxFill = 0xe73b,
+ CheckboxIndeterminate = 0xe73c,
+ CheckboxCompositeReversed = 0xe73d,
+ CheckMark = 0xe73e,
+ BackToWindow = 0xe73f,
+ FullScreen = 0xe740,
+ ResizeTouchLarger = 0xe741,
+ ResizeTouchSmaller = 0xe742,
+ ResizeMouseSmall = 0xe743,
+ ResizeMouseMedium = 0xe744,
+ ResizeMouseWide = 0xe745,
+ ResizeMouseTall = 0xe746,
+ ResizeMouseLarge = 0xe747,
+ SwitchUser = 0xe748,
+ Print = 0xe749,
+ Up = 0xe74a,
+ Down = 0xe74b,
+ OEM = 0xe74c,
+ Delete = 0xe74d,
+ Save = 0xe74e,
+ Mute = 0xe74f,
+ BackSpaceQWERTY = 0xe750,
+ ReturnKey = 0xe751,
+ UpArrowShiftKey = 0xe752,
+ Cloud = 0xe753,
+ Flashlight = 0xe754,
+ RotationLock = 0xe755,
+ CommandPrompt = 0xe756,
+ SIPMove = 0xe759,
+ SIPUndock = 0xe75a,
+ SIPRedock = 0xe75b,
+ EraseTool = 0xe75c,
+ UnderscoreSpace = 0xe75d,
+ GripperTool = 0xe75e,
+ Dialpad = 0xe75f,
+ PageLeft = 0xe760,
+ PageRight = 0xe761,
+ MultiSelect = 0xe762,
+ KeyboardLeftHanded = 0xe763,
+ KeyboardRightHanded = 0xe764,
+ KeyboardClassic = 0xe765,
+ KeyboardSplit = 0xe766,
+ Volume = 0xe767,
+ Play = 0xe768,
+ Pause = 0xe769,
+ ChevronLeft = 0xe76b,
+ ChevronRight = 0xe76c,
+ InkingTool = 0xe76d,
+ Emoji2 = 0xe76e,
+ GripperBarHorizontal = 0xe76f,
+ System = 0xe770,
+ Personalize = 0xe771,
+ Devices = 0xe772,
+ SearchAndApps = 0xe773,
+ Globe = 0xe774,
+ TimeLanguage = 0xe775,
+ EaseOfAccess = 0xe776,
+ UpdateRestore = 0xe777,
+ HangUp = 0xe778,
+ ContactInfo = 0xe779,
+ Unpin = 0xe77a,
+ Contact = 0xe77b,
+ Memo = 0xe77c,
+ IncomingCall = 0xe77e,
+ Paste = 0xe77f,
+ PhoneBook = 0xe780,
+ LEDLight = 0xe781,
+ Error = 0xe783,
+ GripperBarVertical = 0xe784,
+ Unlock = 0xe785,
+ Slideshow = 0xe786,
+ Calendar = 0xe787,
+ GripperResize = 0xe788,
+ Megaphone = 0xe789,
+ Trim = 0xe78a,
+ NewWindow = 0xe78b,
+ SaveLocal = 0xe78c,
+ Color = 0xe790,
+ DataSense = 0xe791,
+ SaveAs = 0xe792,
+ Light = 0xe793,
+ AspectRatio = 0xe799,
+ DataSenseBar = 0xe7a5,
+ Redo = 0xe7a6,
+ Undo = 0xe7a7,
+ Crop = 0xe7a8,
+ OpenWith = 0xe7ac,
+ Rotate = 0xe7ad,
+ RedEye = 0xe7b3,
+ SetlockScreen = 0xe7b5,
+ MapPin2 = 0xe7b7,
+ Package = 0xe7b8,
+ Warning = 0xe7ba,
+ ReadingList = 0xe7bc,
+ Education = 0xe7be,
+ ShoppingCart = 0xe7bf,
+ Train = 0xe7c0,
+ Flag = 0xe7c1,
+ Move = 0xe7c2,
+ Page = 0xe7c3,
+ TaskView = 0xe7c4,
+ BrowsePhotos = 0xe7c5,
+ HalfStarLeft = 0xe7c6,
+ HalfStarRight = 0xe7c7,
+ Record = 0xe7c8,
+ TouchPointer = 0xe7c9,
+ LangJPN = 0xe7de,
+ Ferry = 0xe7e3,
+ Highlight = 0xe7e6,
+ ActionCenterNotification = 0xe7e7,
+ PowerButton = 0xe7e8,
+ ResizeTouchNarrower = 0xe7ea,
+ ResizeTouchShorter = 0xe7eb,
+ DrivingMode = 0xe7ec,
+ RingerSilent = 0xe7ed,
+ OtherUser = 0xe7ee,
+ Admin = 0xe7ef,
+ CC = 0xe7f0,
+ SDCard = 0xe7f1,
+ CallForwarding = 0xe7f2,
+ SettingsDisplaySound = 0xe7f3,
+ TVMonitor = 0xe7f4,
+ Speakers = 0xe7f5,
+ Headphone = 0xe7f6,
+ DeviceLaptopPic = 0xe7f7,
+ DeviceLaptopNoPic = 0xe7f8,
+ DeviceMonitorRightPic = 0xe7f9,
+ DeviceMonitorLeftPic = 0xe7fa,
+ DeviceMonitorNoPic = 0xe7fb,
+ Game = 0xe7fc,
+ HorizontalTabKey = 0xe7fd,
+ StreetsideSplitMinimize = 0xe802,
+ StreetsideSplitExpand = 0xe803,
+ Car = 0xe804,
+ Walk = 0xe805,
+ Bus = 0xe806,
+ TiltUp = 0xe809,
+ TiltDown = 0xe80a,
+ CallControl = 0xe80b,
+ RotateMapRight = 0xe80c,
+ RotateMapLeft = 0xe80d,
+ Home = 0xe80f,
+ ParkingLocation = 0xe811,
+ MapCompassTop = 0xe812,
+ MapCompassBottom = 0xe813,
+ IncidentTriangle = 0xe814,
+ Touch = 0xe815,
+ MapDirections = 0xe816,
+ StartPoint = 0xe819,
+ StopPoint = 0xe81a,
+ EndPoint = 0xe81b,
+ History = 0xe81c,
+ Location = 0xe81d,
+ MapLayers = 0xe81e,
+ Accident = 0xe81f,
+ Work = 0xe821,
+ Construction = 0xe822,
+ Recent = 0xe823,
+ Bank = 0xe825,
+ DownloadMap = 0xe826,
+ InkingToolFill2 = 0xe829,
+ HighlightFill2 = 0xe82a,
+ EraseToolFill = 0xe82b,
+ EraseToolFill2 = 0xe82c,
+ Dictionary = 0xe82d,
+ DictionaryAdd = 0xe82e,
+ ToolTip = 0xe82f,
+ ChromeBack = 0xe830,
+ ProvisioningPackage = 0xe835,
+ AddRemoteDevice = 0xe836,
+ FolderOpen = 0xe838,
+ Ethernet = 0xe839,
+ ShareBroadband = 0xe83a,
+ DirectAccess = 0xe83b,
+ DialUp = 0xe83c,
+ DefenderApp = 0xe83d,
+ BatteryCharging9 = 0xe83e,
+ Battery10 = 0xe83f,
+ Pinned = 0xe840,
+ PinFill = 0xe841,
+ PinnedFill = 0xe842,
+ PeriodKey = 0xe843,
+ PuncKey = 0xe844,
+ RevToggleKey = 0xe845,
+ RightArrowKeyTime1 = 0xe846,
+ RightArrowKeyTime2 = 0xe847,
+ LeftQuote = 0xe848,
+ RightQuote = 0xe849,
+ DownShiftKey = 0xe84a,
+ UpShiftKey = 0xe84b,
+ PuncKey0 = 0xe84c,
+ PuncKeyLeftBottom = 0xe84d,
+ RightArrowKeyTime3 = 0xe84e,
+ RightArrowKeyTime4 = 0xe84f,
+ Battery0 = 0xe850,
+ Battery1 = 0xe851,
+ Battery2 = 0xe852,
+ Battery3 = 0xe853,
+ Battery4 = 0xe854,
+ Battery5 = 0xe855,
+ Battery6 = 0xe856,
+ Battery7 = 0xe857,
+ Battery8 = 0xe858,
+ Battery9 = 0xe859,
+ BatteryCharging0 = 0xe85a,
+ BatteryCharging1 = 0xe85b,
+ BatteryCharging2 = 0xe85c,
+ BatteryCharging3 = 0xe85d,
+ BatteryCharging4 = 0xe85e,
+ BatteryCharging5 = 0xe85f,
+ BatteryCharging6 = 0xe860,
+ BatteryCharging7 = 0xe861,
+ BatteryCharging8 = 0xe862,
+ BatterySaver0 = 0xe863,
+ BatterySaver1 = 0xe864,
+ BatterySaver2 = 0xe865,
+ BatterySaver3 = 0xe866,
+ BatterySaver4 = 0xe867,
+ BatterySaver5 = 0xe868,
+ BatterySaver6 = 0xe869,
+ BatterySaver7 = 0xe86a,
+ BatterySaver8 = 0xe86b,
+ SignalBars1 = 0xe86c,
+ SignalBars2 = 0xe86d,
+ SignalBars3 = 0xe86e,
+ SignalBars4 = 0xe86f,
+ SignalBars5 = 0xe870,
+ SignalNotConnected = 0xe871,
+ Wifi1 = 0xe872,
+ Wifi2 = 0xe873,
+ Wifi3 = 0xe874,
+ MobSIMLock = 0xe875,
+ MobSIMMissing = 0xe876,
+ Vibrate = 0xe877,
+ RoamingInternational = 0xe878,
+ RoamingDomestic = 0xe879,
+ CallForwardInternational = 0xe87a,
+ CallForwardRoaming = 0xe87b,
+ JpnRomanji = 0xe87c,
+ JpnRomanjiLock = 0xe87d,
+ JpnRomanjiShift = 0xe87e,
+ JpnRomanjiShiftLock = 0xe87f,
+ StatusDataTransfer = 0xe880,
+ StatusDataTransferVPN = 0xe881,
+ StatusDualSIM2 = 0xe882,
+ StatusDualSIM2VPN = 0xe883,
+ StatusDualSIM1 = 0xe884,
+ StatusDualSIM1VPN = 0xe885,
+ StatusSGLTE = 0xe886,
+ StatusSGLTECell = 0xe887,
+ StatusSGLTEDataVPN = 0xe888,
+ StatusVPN = 0xe889,
+ WifiHotspot = 0xe88a,
+ LanguageKor = 0xe88b,
+ LanguageCht = 0xe88c,
+ LanguageChs = 0xe88d,
+ USB = 0xe88e,
+ InkingToolFill = 0xe88f,
+ View = 0xe890,
+ HighlightFill = 0xe891,
+ Previous = 0xe892,
+ Next = 0xe893,
+ Clear = 0xe894,
+ Sync = 0xe895,
+ Download = 0xe896,
+ Help = 0xe897,
+ Upload = 0xe898,
+ Emoji = 0xe899,
+ TwoPage = 0xe89a,
+ LeaveChat = 0xe89b,
+ MailForward = 0xe89c,
+ RotateCamera = 0xe89e,
+ ClosePane = 0xe89f,
+ OpenPane = 0xe8a0,
+ PreviewLink = 0xe8a1,
+ AttachCamera = 0xe8a2,
+ ZoomIn = 0xe8a3,
+ Bookmarks = 0xe8a4,
+ Document = 0xe8a5,
+ ProtectedDocument = 0xe8a6,
+ OpenInNewWindow = 0xe8a7,
+ MailFill = 0xe8a8,
+ ViewAll = 0xe8a9,
+ VideoChat = 0xe8aa,
+ Switch = 0xe8ab,
+ Rename = 0xe8ac,
+ Go = 0xe8ad,
+ SurfaceHub = 0xe8ae,
+ Remote = 0xe8af,
+ Click = 0xe8b0,
+ Shuffle = 0xe8b1,
+ Movies = 0xe8b2,
+ SelectAll = 0xe8b3,
+ Orientation = 0xe8b4,
+ Import = 0xe8b5,
+ ImportAll = 0xe8b6,
+ Folder = 0xe8b7,
+ Webcam = 0xe8b8,
+ Picture = 0xe8b9,
+ Caption = 0xe8ba,
+ ChromeClose = 0xe8bb,
+ ShowResults = 0xe8bc,
+ Message = 0xe8bd,
+ Leaf = 0xe8be,
+ CalendarDay = 0xe8bf,
+ CalendarWeek = 0xe8c0,
+ Characters = 0xe8c1,
+ MailReplyAll = 0xe8c2,
+ Read = 0xe8c3,
+ ShowBcc = 0xe8c4,
+ HideBcc = 0xe8c5,
+ Cut = 0xe8c6,
+ PaymentCard = 0xe8c7,
+ Copy = 0xe8c8,
+ Important = 0xe8c9,
+ MailReply = 0xe8ca,
+ Sort = 0xe8cb,
+ MobileTablet = 0xe8cc,
+ DisconnectDrive = 0xe8cd,
+ MapDrive = 0xe8ce,
+ ContactPresence = 0xe8cf,
+ Priority = 0xe8d0,
+ GotoToday = 0xe8d1,
+ Font = 0xe8d2,
+ FontColor = 0xe8d3,
+ Contact2 = 0xe8d4,
+ FolderFill = 0xe8d5,
+ Audio = 0xe8d6,
+ Permissions = 0xe8d7,
+ DisableUpdates = 0xe8d8,
+ Unfavorite = 0xe8d9,
+ OpenLocal = 0xe8da,
+ Italic = 0xe8db,
+ Underline = 0xe8dc,
+ Bold = 0xe8dd,
+ MoveToFolder = 0xe8de,
+ LikeDislike = 0xe8df,
+ Dislike = 0xe8e0,
+ Like = 0xe8e1,
+ AlignRight = 0xe8e2,
+ AlignCenter = 0xe8e3,
+ AlignLeft = 0xe8e4,
+ OpenFile = 0xe8e5,
+ ClearSelection = 0xe8e6,
+ FontDecrease = 0xe8e7,
+ FontIncrease = 0xe8e8,
+ FontSize = 0xe8e9,
+ CellPhone = 0xe8ea,
+ Reshare = 0xe8eb,
+ Tag = 0xe8ec,
+ RepeatOne = 0xe8ed,
+ RepeatAll = 0xe8ee,
+ Calculator = 0xe8ef,
+ Directions = 0xe8f0,
+ Library = 0xe8f1,
+ ChatBubbles = 0xe8f2,
+ PostUpdate = 0xe8f3,
+ NewFolder = 0xe8f4,
+ CalendarReply = 0xe8f5,
+ UnsyncFolder = 0xe8f6,
+ SyncFolder = 0xe8f7,
+ BlockContact = 0xe8f8,
+ SwitchApps = 0xe8f9,
+ AddFriend = 0xe8fa,
+ Accept = 0xe8fb,
+ GoToStart = 0xe8fc,
+ BulletedList = 0xe8fd,
+ Scan = 0xe8fe,
+ Preview = 0xe8ff,
+ Group = 0xe902,
+ ZeroBars = 0xe904,
+ OneBar = 0xe905,
+ TwoBars = 0xe906,
+ ThreeBars = 0xe907,
+ FourBars = 0xe908,
+ World = 0xe909,
+ Comment = 0xe90a,
+ MusicInfo = 0xe90b,
+ DockLeft = 0xe90c,
+ DockRight = 0xe90d,
+ DockBottom = 0xe90e,
+ Repair = 0xe90f,
+ Accounts = 0xe910,
+ DullSound = 0xe911,
+ Manage = 0xe912,
+ Street = 0xe913,
+ Printer3D = 0xe914,
+ RadioBullet = 0xe915,
+ Stopwatch = 0xe916,
+ Photo = 0xe91b,
+ ActionCenter = 0xe91c,
+ FullCircleMask = 0xe91f,
+ ChromeMinimize = 0xe921,
+ ChromeMaximize = 0xe922,
+ ChromeRestore = 0xe923,
+ Annotation = 0xe924,
+ BackSpaceQWERTYSm = 0xe925,
+ BackSpaceQWERTYMd = 0xe926,
+ Swipe = 0xe927,
+ Fingerprint = 0xe928,
+ Handwriting = 0xe929,
+ ChromeBackToWindow = 0xe92c,
+ ChromeFullScreen = 0xe92d,
+ KeyboardStandard = 0xe92e,
+ KeyboardDismiss = 0xe92f,
+ Completed = 0xe930,
+ ChromeAnnotate = 0xe931,
+ Label = 0xe932,
+ IBeam = 0xe933,
+ IBeamOutline = 0xe934,
+ FlickDown = 0xe935,
+ FlickUp = 0xe936,
+ FlickLeft = 0xe937,
+ FlickRight = 0xe938,
+ FeedbackApp = 0xe939,
+ MusicAlbum = 0xe93c,
+ Streaming = 0xe93e,
+ Code = 0xe943,
+ ReturnToWindow = 0xe944,
+ LightningBolt = 0xe945,
+ Info = 0xe946,
+ CalculatorMultiply = 0xe947,
+ CalculatorAddition = 0xe948,
+ CalculatorSubtract = 0xe949,
+ CalculatorDivide = 0xe94a,
+ CalculatorSquareroot = 0xe94b,
+ CalculatorPercentage = 0xe94c,
+ CalculatorNegate = 0xe94d,
+ CalculatorEqualTo = 0xe94e,
+ CalculatorBackspace = 0xe94f,
+ Component = 0xe950,
+ DMC = 0xe951,
+ Dock = 0xe952,
+ MultimediaDMS = 0xe953,
+ MultimediaDVR = 0xe954,
+ MultimediaPMP = 0xe955,
+ PrintfaxPrinterFile = 0xe956,
+ Sensor = 0xe957,
+ StorageOptical = 0xe958,
+ Communications = 0xe95a,
+ Headset = 0xe95b,
+ Projector = 0xe95d,
+ Health = 0xe95e,
+ Wire = 0xe95f,
+ Webcam2 = 0xe960,
+ Input = 0xe961,
+ Mouse = 0xe962,
+ Smartcard = 0xe963,
+ SmartcardVirtual = 0xe964,
+ MediaStorageTower = 0xe965,
+ ReturnKeySm = 0xe966,
+ GameConsole = 0xe967,
+ Network = 0xe968,
+ StorageNetworkWireless = 0xe969,
+ StorageTape = 0xe96a,
+ ChevronUpSmall = 0xe96d,
+ ChevronDownSmall = 0xe96e,
+ ChevronLeftSmall = 0xe96f,
+ ChevronRightSmall = 0xe970,
+ ChevronUpMed = 0xe971,
+ ChevronDownMed = 0xe972,
+ ChevronLeftMed = 0xe973,
+ ChevronRightMed = 0xe974,
+ Devices2 = 0xe975,
+ ExpandTile = 0xe976,
+ PC1 = 0xe977,
+ PresenceChicklet = 0xe978,
+ PresenceChickletVideo = 0xe979,
+ Reply = 0xe97a,
+ SetTile = 0xe97b,
+ Type = 0xe97c,
+ Korean = 0xe97d,
+ HalfAlpha = 0xe97e,
+ FullAlpha = 0xe97f,
+ Key12On = 0xe980,
+ ChineseChangjie = 0xe981,
+ QWERTYOn = 0xe982,
+ QWERTYOff = 0xe983,
+ ChineseQuick = 0xe984,
+ Japanese = 0xe985,
+ FullHiragana = 0xe986,
+ FullKatakana = 0xe987,
+ HalfKatakana = 0xe988,
+ ChineseBoPoMoFo = 0xe989,
+ ChinesePinyin = 0xe98a,
+ ConstructionCone = 0xe98f,
+ XboxOneConsole = 0xe990,
+ Volume0 = 0xe992,
+ Volume1 = 0xe993,
+ Volume2 = 0xe994,
+ Volume3 = 0xe995,
+ BatteryUnknown = 0xe996,
+ WifiAttentionOverlay = 0xe998,
+ Robot = 0xe99a,
+ TapAndSend = 0xe9a1,
+ FitPage = 0xe9a6,
+ PasswordKeyShow = 0xe9a8,
+ PasswordKeyHide = 0xe9a9,
+ BidiLtr = 0xe9aa,
+ BidiRtl = 0xe9ab,
+ ForwardSm = 0xe9ac,
+ CommaKey = 0xe9ad,
+ DashKey = 0xe9ae,
+ DullSoundKey = 0xe9af,
+ HalfDullSound = 0xe9b0,
+ RightDoubleQuote = 0xe9b1,
+ LeftDoubleQuote = 0xe9b2,
+ PuncKeyRightBottom = 0xe9b3,
+ PuncKey1 = 0xe9b4,
+ PuncKey2 = 0xe9b5,
+ PuncKey3 = 0xe9b6,
+ PuncKey4 = 0xe9b7,
+ PuncKey5 = 0xe9b8,
+ PuncKey6 = 0xe9b9,
+ PuncKey9 = 0xe9ba,
+ PuncKey7 = 0xe9bb,
+ PuncKey8 = 0xe9bc,
+ Frigid = 0xe9ca,
+ Unknown = 0xe9ce,
+ AreaChart = 0xe9d2,
+ CheckList = 0xe9d5,
+ Diagnostic = 0xe9d9,
+ Equalizer = 0xe9e9,
+ Process = 0xe9f3,
+ Processing = 0xe9f5,
+ ReportDocument = 0xe9f9,
+ VideoSolid = 0xea0c,
+ MixedMediaBadge = 0xea0d,
+ DisconnectDisplay = 0xea14,
+ Shield = 0xea18,
+ Info2 = 0xea1f,
+ ActionCenterAsterisk = 0xea21,
+ Beta = 0xea24,
+ SaveCopy = 0xea35,
+ List = 0xea37,
+ Asterisk = 0xea38,
+ ErrorBadge = 0xea39,
+ CircleRing = 0xea3a,
+ CircleFill = 0xea3b,
+ MergeCall = 0xea3c,
+ PrivateCall = 0xea3d,
+ Record2 = 0xea3f,
+ AllAppsMirrored = 0xea40,
+ BookmarksMirrored = 0xea41,
+ BulletedListMirrored = 0xea42,
+ CallForwardInternationalMirrored = 0xea43,
+ CallForwardRoamingMirrored = 0xea44,
+ ChromeBackMirrored = 0xea47,
+ ClearSelectionMirrored = 0xea48,
+ ClosePaneMirrored = 0xea49,
+ ContactInfoMirrored = 0xea4a,
+ DockRightMirrored = 0xea4b,
+ DockLeftMirrored = 0xea4c,
+ ExpandTileMirrored = 0xea4e,
+ GoMirrored = 0xea4f,
+ GripperResizeMirrored = 0xea50,
+ HelpMirrored = 0xea51,
+ ImportMirrored = 0xea52,
+ ImportAllMirrored = 0xea53,
+ LeaveChatMirrored = 0xea54,
+ ListMirrored = 0xea55,
+ MailForwardMirrored = 0xea56,
+ MailReplyMirrored = 0xea57,
+ MailReplyAllMirrored = 0xea58,
+ OpenPaneMirrored = 0xea5b,
+ OpenWithMirrored = 0xea5c,
+ ParkingLocationMirrored = 0xea5e,
+ ResizeMouseMediumMirrored = 0xea5f,
+ ResizeMouseSmallMirrored = 0xea60,
+ ResizeMouseTallMirrored = 0xea61,
+ ResizeTouchNarrowerMirrored = 0xea62,
+ SendMirrored = 0xea63,
+ SendFillMirrored = 0xea64,
+ ShowResultsMirrored = 0xea65,
+ Media = 0xea69,
+ SyncError = 0xea6a,
+ Devices3 = 0xea6c,
+ SlowMotionOn = 0xea79,
+ Lightbulb = 0xea80,
+ StatusCircle = 0xea81,
+ StatusTriangle = 0xea82,
+ StatusError = 0xea83,
+ StatusWarning = 0xea84,
+ Puzzle = 0xea86,
+ CalendarSolid = 0xea89,
+ HomeSolid = 0xea8a,
+ ParkingLocationSolid = 0xea8b,
+ ContactSolid = 0xea8c,
+ ConstructionSolid = 0xea8d,
+ AccidentSolid = 0xea8e,
+ Ringer = 0xea8f,
+ PDF = 0xea90,
+ ThoughtBubble = 0xea91,
+ HeartBroken = 0xea92,
+ BatteryCharging10 = 0xea93,
+ BatterySaver9 = 0xea94,
+ BatterySaver10 = 0xea95,
+ CallForwardingMirrored = 0xea97,
+ MultiSelectMirrored = 0xea98,
+ Broom = 0xea99,
+ ForwardCall = 0xeac2,
+ Trackers = 0xeadf,
+ Market = 0xeafc,
+ PieSingle = 0xeb05,
+ StockUp = 0xeb0f,
+ StockDown = 0xeb11,
+ Design = 0xeb3c,
+ Website = 0xeb41,
+ Drop = 0xeb42,
+ Radar = 0xeb44,
+ BusSolid = 0xeb47,
+ FerrySolid = 0xeb48,
+ StartPointSolid = 0xeb49,
+ StopPointSolid = 0xeb4a,
+ EndPointSolid = 0xeb4b,
+ AirplaneSolid = 0xeb4c,
+ TrainSolid = 0xeb4d,
+ WorkSolid = 0xeb4e,
+ ReminderFill = 0xeb4f,
+ Reminder = 0xeb50,
+ Heart = 0xeb51,
+ HeartFill = 0xeb52,
+ EthernetError = 0xeb55,
+ EthernetWarning = 0xeb56,
+ StatusConnecting1 = 0xeb57,
+ StatusConnecting2 = 0xeb58,
+ StatusUnsecure = 0xeb59,
+ WifiError0 = 0xeb5a,
+ WifiError1 = 0xeb5b,
+ WifiError2 = 0xeb5c,
+ WifiError3 = 0xeb5d,
+ WifiError4 = 0xeb5e,
+ WifiWarning0 = 0xeb5f,
+ WifiWarning1 = 0xeb60,
+ WifiWarning2 = 0xeb61,
+ WifiWarning3 = 0xeb62,
+ WifiWarning4 = 0xeb63,
+ Devices4 = 0xeb66,
+ NUIIris = 0xeb67,
+ NUIFace = 0xeb68,
+ GatewayRouter = 0xeb77,
+ EditMirrored = 0xeb7e,
+ NUIFPStartSlideHand = 0xeb82,
+ NUIFPStartSlideAction = 0xeb83,
+ NUIFPContinueSlideHand = 0xeb84,
+ NUIFPContinueSlideAction = 0xeb85,
+ NUIFPRollRightHand = 0xeb86,
+ NUIFPRollRightHandAction = 0xeb87,
+ NUIFPRollLeftHand = 0xeb88,
+ NUIFPRollLeftAction = 0xeb89,
+ NUIFPPressHand = 0xeb8a,
+ NUIFPPressAction = 0xeb8b,
+ NUIFPPressRepeatHand = 0xeb8c,
+ NUIFPPressRepeatAction = 0xeb8d,
+ StatusErrorFull = 0xeb90,
+ TaskViewExpanded = 0xeb91,
+ Certificate = 0xeb95,
+ BackSpaceQWERTYLg = 0xeb96,
+ ReturnKeyLg = 0xeb97,
+ FastForward = 0xeb9d,
+ Rewind = 0xeb9e,
+ Photo2 = 0xeb9f,
+ MobBattery0 = 0xeba0,
+ MobBattery1 = 0xeba1,
+ MobBattery2 = 0xeba2,
+ MobBattery3 = 0xeba3,
+ MobBattery4 = 0xeba4,
+ MobBattery5 = 0xeba5,
+ MobBattery6 = 0xeba6,
+ MobBattery7 = 0xeba7,
+ MobBattery8 = 0xeba8,
+ MobBattery9 = 0xeba9,
+ MobBattery10 = 0xebaa,
+ MobBatteryCharging0 = 0xebab,
+ MobBatteryCharging1 = 0xebac,
+ MobBatteryCharging2 = 0xebad,
+ MobBatteryCharging3 = 0xebae,
+ MobBatteryCharging4 = 0xebaf,
+ MobBatteryCharging5 = 0xebb0,
+ MobBatteryCharging6 = 0xebb1,
+ MobBatteryCharging7 = 0xebb2,
+ MobBatteryCharging8 = 0xebb3,
+ MobBatteryCharging9 = 0xebb4,
+ MobBatteryCharging10 = 0xebb5,
+ MobBatterySaver0 = 0xebb6,
+ MobBatterySaver1 = 0xebb7,
+ MobBatterySaver2 = 0xebb8,
+ MobBatterySaver3 = 0xebb9,
+ MobBatterySaver4 = 0xebba,
+ MobBatterySaver5 = 0xebbb,
+ MobBatterySaver6 = 0xebbc,
+ MobBatterySaver7 = 0xebbd,
+ MobBatterySaver8 = 0xebbe,
+ MobBatterySaver9 = 0xebbf,
+ MobBatterySaver10 = 0xebc0,
+ DictionaryCloud = 0xebc3,
+ ResetDrive = 0xebc4,
+ VolumeBars = 0xebc5,
+ Project = 0xebc6,
+ AdjustHologram = 0xebd2,
+ CloudDownload = 0xebd3,
+ MobWifiCallBars = 0xebd4,
+ MobWifiCall0 = 0xebd5,
+ MobWifiCall1 = 0xebd6,
+ MobWifiCall2 = 0xebd7,
+ MobWifiCall3 = 0xebd8,
+ MobWifiCall4 = 0xebd9,
+ Family = 0xebda,
+ LockFeedback = 0xebdb,
+ DeviceDiscovery = 0xebde,
+ WindDirection = 0xebe6,
+ RightArrowKeyTime0 = 0xebe7,
+ Bug = 0xebe8,
+ TabletMode = 0xebfc,
+ StatusCircleLeft = 0xebfd,
+ StatusTriangleLeft = 0xebfe,
+ StatusErrorLeft = 0xebff,
+ StatusWarningLeft = 0xec00,
+ MobBatteryUnknown = 0xec02,
+ NetworkTower = 0xec05,
+ CityNext = 0xec06,
+ CityNext2 = 0xec07,
+ Courthouse = 0xec08,
+ Groceries = 0xec09,
+ Sustainable = 0xec0a,
+ BuildingEnergy = 0xec0b,
+ ToggleFilled = 0xec11,
+ ToggleBorder = 0xec12,
+ SliderThumb = 0xec13,
+ ToggleThumb = 0xec14,
+ MiracastLogoSmall = 0xec15,
+ MiracastLogoLarge = 0xec16,
+ PLAP = 0xec19,
+ Badge = 0xec1b,
+ SignalRoaming = 0xec1e,
+ MobileLocked = 0xec20,
+ InsiderHubApp = 0xec24,
+ PersonalFolder = 0xec25,
+ HomeGroup = 0xec26,
+ MyNetwork = 0xec27,
+ KeyboardFull = 0xec31,
+ Cafe = 0xec32,
+ MobSignal1 = 0xec37,
+ MobSignal2 = 0xec38,
+ MobSignal3 = 0xec39,
+ MobSignal4 = 0xec3a,
+ MobSignal5 = 0xec3b,
+ MobWifi1 = 0xec3c,
+ MobWifi2 = 0xec3d,
+ MobWifi3 = 0xec3e,
+ MobWifi4 = 0xec3f,
+ MobAirplane = 0xec40,
+ MobBluetooth = 0xec41,
+ MobActionCenter = 0xec42,
+ MobLocation = 0xec43,
+ MobWifiHotspot = 0xec44,
+ LanguageJpn = 0xec45,
+ MobQuietHours = 0xec46,
+ MobDrivingMode = 0xec47,
+ SpeedOff = 0xec48,
+ SpeedMedium = 0xec49,
+ SpeedHigh = 0xec4a,
+ ThisPC = 0xec4e,
+ MusicNote = 0xec4f,
+ FileExplorer = 0xec50,
+ FileExplorerApp = 0xec51,
+ LeftArrowKeyTime0 = 0xec52,
+ MicOff = 0xec54,
+ MicSleep = 0xec55,
+ MicError = 0xec56,
+ PlaybackRate1x = 0xec57,
+ PlaybackRateOther = 0xec58,
+ CashDrawer = 0xec59,
+ BarcodeScanner = 0xec5a,
+ ReceiptPrinter = 0xec5b,
+ MagStripeReader = 0xec5c,
+ CompletedSolid = 0xec61,
+ CompanionApp = 0xec64,
+ Favicon2 = 0xec6c,
+ SwipeRevealArt = 0xec6d,
+ MicOn = 0xec71,
+ MicClipping = 0xec72,
+ TabletSelected = 0xec74,
+ MobileSelected = 0xec75,
+ LaptopSelected = 0xec76,
+ TVMonitorSelected = 0xec77,
+ DeveloperTools = 0xec7a,
+ MobCallForwarding = 0xec7e,
+ MobCallForwardingMirrored = 0xec7f,
+ BodyCam = 0xec80,
+ PoliceCar = 0xec81,
+ Draw = 0xec87,
+ DrawSolid = 0xec88,
+ LowerBrightness = 0xec8a,
+ ScrollUpDown = 0xec8f,
+ DateTime = 0xec92,
+ HoloLens = 0xec94,
+ Tiles = 0xeca5,
+ PartyLeader = 0xeca7,
+ AppIconDefault = 0xecaa,
+ Calories = 0xecad,
+ POI = 0xecaf,
+ BandBattery0 = 0xecb9,
+ BandBattery1 = 0xecba,
+ BandBattery2 = 0xecbb,
+ BandBattery3 = 0xecbc,
+ BandBattery4 = 0xecbd,
+ BandBattery5 = 0xecbe,
+ BandBattery6 = 0xecbf,
+ AddSurfaceHub = 0xecc4,
+ DevUpdate = 0xecc5,
+ Unit = 0xecc6,
+ AddTo = 0xecc8,
+ RemoveFrom = 0xecc9,
+ RadioBtnOff = 0xecca,
+ RadioBtnOn = 0xeccb,
+ RadioBullet2 = 0xeccc,
+ ExploreContent = 0xeccd,
+ Blocked2 = 0xece4,
+ ScrollMode = 0xece7,
+ ZoomMode = 0xece8,
+ PanMode = 0xece9,
+ WiredUSB = 0xecf0,
+ WirelessUSB = 0xecf1,
+ USBSafeConnect = 0xecf3,
+ ActionCenterNotificationMirrored = 0xed0c,
+ ActionCenterMirrored = 0xed0d,
+ SubscriptionAdd = 0xed0e,
+ ResetDevice = 0xed10,
+ SubscriptionAddMirrored = 0xed11,
+ QRCode = 0xed14,
+ Feedback = 0xed15,
+ Hide = 0xed1a,
+ Subtitles = 0xed1e,
+ SubtitlesAudio = 0xed1f,
+ OpenFolderHorizontal = 0xed25,
+ CalendarMirrored = 0xed28,
+ MobeSIM = 0xed2a,
+ MobeSIMNoProfile = 0xed2b,
+ MobeSIMLocked = 0xed2c,
+ MobeSIMBusy = 0xed2d,
+ SignalError = 0xed2e,
+ StreamingEnterprise = 0xed2f,
+ Headphone0 = 0xed30,
+ Headphone1 = 0xed31,
+ Headphone2 = 0xed32,
+ Headphone3 = 0xed33,
+ Apps = 0xed35,
+ KeyboardBrightness = 0xed39,
+ KeyboardLowerBrightness = 0xed3a,
+ SkipBack10 = 0xed3c,
+ SkipForward30 = 0xed3d,
+ TreeFolderFolder = 0xed41,
+ TreeFolderFolderFill = 0xed42,
+ TreeFolderFolderOpen = 0xed43,
+ TreeFolderFolderOpenFill = 0xed44,
+ MultimediaDMP = 0xed47,
+ KeyboardOneHanded = 0xed4c,
+ Narrator = 0xed4d,
+ EmojiTabPeople = 0xed53,
+ EmojiTabSmilesAnimals = 0xed54,
+ EmojiTabCelebrationObjects = 0xed55,
+ EmojiTabFoodPlants = 0xed56,
+ EmojiTabTransitPlaces = 0xed57,
+ EmojiTabSymbols = 0xed58,
+ EmojiTabTextSmiles = 0xed59,
+ EmojiTabFavorites = 0xed5a,
+ EmojiSwatch = 0xed5b,
+ ConnectApp = 0xed5c,
+ CompanionDeviceFramework = 0xed5d,
+ Ruler = 0xed5e,
+ FingerInking = 0xed5f,
+ StrokeErase = 0xed60,
+ PointErase = 0xed61,
+ ClearAllInk = 0xed62,
+ Pencil = 0xed63,
+ Marker = 0xed64,
+ InkingCaret = 0xed65,
+ InkingColorOutline = 0xed66,
+ InkingColorFill = 0xed67,
+ HardDrive = 0xeda2,
+ NetworkAdapter = 0xeda3,
+ Touchscreen = 0xeda4,
+ NetworkPrinter = 0xeda5,
+ CloudPrinter = 0xeda6,
+ KeyboardShortcut = 0xeda7,
+ BrushSize = 0xeda8,
+ NarratorForward = 0xeda9,
+ NarratorForwardMirrored = 0xedaa,
+ SyncBadge12 = 0xedab,
+ RingerBadge12 = 0xedac,
+ AsteriskBadge12 = 0xedad,
+ ErrorBadge12 = 0xedae,
+ CircleRingBadge12 = 0xedaf,
+ CircleFillBadge12 = 0xedb0,
+ ImportantBadge12 = 0xedb1,
+ MailBadge12 = 0xedb3,
+ PauseBadge12 = 0xedb4,
+ PlayBadge12 = 0xedb5,
+ PenWorkspace = 0xedc6,
+ CaretLeft8 = 0xedd5,
+ CaretRight8 = 0xedd6,
+ CaretUp8 = 0xedd7,
+ CaretDown8 = 0xedd8,
+ CaretLeftSolid8 = 0xedd9,
+ CaretRightSolid8 = 0xedda,
+ CaretUpSolid8 = 0xeddb,
+ CaretDownSolid8 = 0xeddc,
+ Strikethrough = 0xede0,
+ Export = 0xede1,
+ ExportMirrored = 0xede2,
+ ButtonMenu = 0xede3,
+ CloudSearch = 0xede4,
+ PinyinIMELogo = 0xede5,
+ CalligraphyPen = 0xedfb,
+ ReplyMirrored = 0xee35,
+ LockscreenDesktop = 0xee3f,
+ TaskViewSettings = 0xee40,
+ MiniExpand2Mirrored = 0xee47,
+ MiniContract2Mirrored = 0xee49,
+ Play36 = 0xee4a,
+ PenPalette = 0xee56,
+ GuestUser = 0xee57,
+ SettingsBattery = 0xee63,
+ TaskbarPhone = 0xee64,
+ LockScreenGlance = 0xee65,
+ GenericScan = 0xee6f,
+ ImageExport = 0xee71,
+ WifiEthernet = 0xee77,
+ ActionCenterQuiet = 0xee79,
+ ActionCenterQuietNotification = 0xee7a,
+ TrackersMirrored = 0xee92,
+ DateTimeMirrored = 0xee93,
+ Wheel = 0xee94,
+ VirtualMachineGroup = 0xeea3,
+ ButtonView2 = 0xeeca,
+ PenWorkspaceMirrored = 0xef15,
+ PenPaletteMirrored = 0xef16,
+ StrokeEraseMirrored = 0xef17,
+ PointEraseMirrored = 0xef18,
+ ClearAllInkMirrored = 0xef19,
+ BackgroundToggle = 0xef1f,
+ Marquee = 0xef20,
+ ChromeCloseContrast = 0xef2c,
+ ChromeMinimizeContrast = 0xef2d,
+ ChromeMaximizeContrast = 0xef2e,
+ ChromeRestoreContrast = 0xef2f,
+ TrafficLight = 0xef31,
+ Replay = 0xef3b,
+ Eyedropper = 0xef3c,
+ LineDisplay = 0xef3d,
+ PINPad = 0xef3e,
+ SignatureCapture = 0xef3f,
+ ChipCardCreditCardReader = 0xef40,
+ MarketDown = 0xef42,
+ PlayerSettings = 0xef58,
+ LandscapeOrientation = 0xef6b,
+ Flow = 0xef90,
+ Touchpad = 0xefa5,
+ Speech = 0xefa9,
+ KnowledgeArticle = 0xf000,
+ Relationship = 0xf003,
+ ZipFolder = 0xf012,
+ DefaultAPN = 0xf080,
+ UserAPN = 0xf081,
+ DoublePinyin = 0xf085,
+ BlueLight = 0xf08c,
+ CaretSolidLeft = 0xf08d,
+ CaretSolidDown = 0xf08e,
+ CaretSolidRight = 0xf08f,
+ CaretSolidUp = 0xf090,
+ ButtonA = 0xf093,
+ ButtonB = 0xf094,
+ ButtonY = 0xf095,
+ ButtonX = 0xf096,
+ ArrowUp8 = 0xf0ad,
+ ArrowDown8 = 0xf0ae,
+ ArrowRight8 = 0xf0af,
+ ArrowLeft8 = 0xf0b0,
+ QuarentinedItems = 0xf0b2,
+ QuarentinedItemsMirrored = 0xf0b3,
+ Protractor = 0xf0b4,
+ ChecklistMirrored = 0xf0b5,
+ StatusCircle7 = 0xf0b6,
+ StatusCheckmark7 = 0xf0b7,
+ StatusErrorCircle7 = 0xf0b8,
+ Connected = 0xf0b9,
+ PencilFill = 0xf0c6,
+ CalligraphyFill = 0xf0c7,
+ QuarterStarLeft = 0xf0ca,
+ QuarterStarRight = 0xf0cb,
+ ThreeQuarterStarLeft = 0xf0cc,
+ ThreeQuarterStarRight = 0xf0cd,
+ QuietHoursBadge12 = 0xf0ce,
+ BackMirrored = 0xf0d2,
+ ForwardMirrored = 0xf0d3,
+ ChromeBackContrast = 0xf0d5,
+ ChromeBackContrastMirrored = 0xf0d6,
+ ChromeBackToWindowContrast = 0xf0d7,
+ ChromeFullScreenContrast = 0xf0d8,
+ GridView = 0xf0e2,
+ ClipboardList = 0xf0e3,
+ ClipboardListMirrored = 0xf0e4,
+ OutlineQuarterStarLeft = 0xf0e5,
+ OutlineQuarterStarRight = 0xf0e6,
+ OutlineHalfStarLeft = 0xf0e7,
+ OutlineHalfStarRight = 0xf0e8,
+ OutlineThreeQuarterStarLeft = 0xf0e9,
+ OutlineThreeQuarterStarRight = 0xf0ea,
+ SpatialVolume0 = 0xf0eb,
+ SpatialVolume1 = 0xf0ec,
+ SpatialVolume2 = 0xf0ed,
+ SpatialVolume3 = 0xf0ee,
+ ApplicationGuard = 0xf0ef,
+ OutlineStarLeftHalf = 0xf0f7,
+ OutlineStarRightHalf = 0xf0f8,
+ ChromeAnnotateContrast = 0xf0f9,
+ DefenderBadge12 = 0xf0fb,
+ DetachablePC = 0xf103,
+ LeftStick = 0xf108,
+ RightStick = 0xf109,
+ TriggerLeft = 0xf10a,
+ TriggerRight = 0xf10b,
+ BumperLeft = 0xf10c,
+ BumperRight = 0xf10d,
+ Dpad = 0xf10e,
+ EnglishPunctuation = 0xf110,
+ ChinesePunctuation = 0xf111,
+ HMD = 0xf119,
+ CtrlSpatialRight = 0xf11b,
+ PaginationDotOutline10 = 0xf126,
+ PaginationDotSolid10 = 0xf127,
+ StrokeErase2 = 0xf128,
+ SmallErase = 0xf129,
+ LargeErase = 0xf12a,
+ FolderHorizontal = 0xf12b,
+ MicrophoneListening = 0xf12e,
+ StatusExclamationCircle7 = 0xf12f,
+ Video360 = 0xf131,
+ GiftboxOpen = 0xf133,
+ StatusCircleOuter = 0xf136,
+ StatusCircleInner = 0xf137,
+ StatusCircleRing = 0xf138,
+ StatusTriangleOuter = 0xf139,
+ StatusTriangleInner = 0xf13a,
+ StatusTriangleExclamation = 0xf13b,
+ StatusCircleExclamation = 0xf13c,
+ StatusCircleErrorX = 0xf13d,
+ StatusCircleCheckmark = 0xf13e,
+ StatusCircleInfo = 0xf13f,
+ StatusCircleBlock = 0xf140,
+ StatusCircleBlock2 = 0xf141,
+ StatusCircleQuestionMark = 0xf142,
+ StatusCircleSync = 0xf143,
+ Dial1 = 0xf146,
+ Dial2 = 0xf147,
+ Dial3 = 0xf148,
+ Dial4 = 0xf149,
+ Dial5 = 0xf14a,
+ Dial6 = 0xf14b,
+ Dial7 = 0xf14c,
+ Dial8 = 0xf14d,
+ Dial9 = 0xf14e,
+ Dial10 = 0xf14f,
+ Dial11 = 0xf150,
+ Dial12 = 0xf151,
+ Dial13 = 0xf152,
+ Dial14 = 0xf153,
+ Dial15 = 0xf154,
+ Dial16 = 0xf155,
+ DialShape1 = 0xf156,
+ DialShape2 = 0xf157,
+ DialShape3 = 0xf158,
+ DialShape4 = 0xf159,
+ ClosedCaptionsInternational = 0xf15f,
+ TollSolid = 0xf161,
+ TrafficCongestionSolid = 0xf163,
+ ExploreContentSingle = 0xf164,
+ CollapseContent = 0xf165,
+ CollapseContentSingle = 0xf166,
+ InfoSolid = 0xf167,
+ GroupList = 0xf168,
+ CaretBottomRightSolidCenter8 = 0xf169,
+ ProgressRingDots = 0xf16a,
+ Checkbox14 = 0xf16b,
+ CheckboxComposite14 = 0xf16c,
+ CheckboxIndeterminateCombo14 = 0xf16d,
+ CheckboxIndeterminateCombo = 0xf16e,
+ StatusPause7 = 0xf175,
+ CharacterAppearance = 0xf17f,
+ Lexicon = 0xf180,
+ ScreenTime = 0xf182,
+ HeadlessDevice = 0xf191,
+ NetworkSharing = 0xf193,
+ EyeGaze = 0xf19d,
+ ToggleLeft = 0xf19e,
+ ToggleRight = 0xf19f,
+ WindowsInsider = 0xf1ad,
+ ChromeSwitch = 0xf1cb,
+ ChromeSwitchContast = 0xf1cc,
+ StatusCheckmark = 0xf1d8,
+ StatusCheckmarkLeft = 0xf1d9,
+ KeyboardLeftAligned = 0xf20c,
+ KeyboardRightAligned = 0xf20d,
+ KeyboardSettings = 0xf210,
+ NetworkPhysical = 0xf211,
+ IOT = 0xf22c,
+ UnknownMirrored = 0xf22e,
+ ViewDashboard = 0xf246,
+ ExploitProtectionSettings = 0xf259,
+ KeyboardNarrow = 0xf260,
+ Keyboard12Key = 0xf261,
+ KeyboardDock = 0xf26b,
+ KeyboardUndock = 0xf26c,
+ KeyboardLeftDock = 0xf26d,
+ KeyboardRightDock = 0xf26e,
+ Ear = 0xf270,
+ PointerHand = 0xf271,
+ Bullseye = 0xf272,
+ DocumentApproval = 0xf28b,
+ LocaleLanguage = 0xf2b7,
+ PassiveAuthentication = 0xf32a,
+ ColorSolid = 0xf354,
+ NetworkOffline = 0xf384,
+ NetworkConnected = 0xf385,
+ NetworkConnectedCheckmark = 0xf386,
+ SignOut = 0xf3b1,
+ StatusInfo = 0xf3cc,
+ StatusInfoLeft = 0xf3cd,
+ NearbySharing = 0xf3e2,
+ CtrlSpatialLeft = 0xf3e7,
+ InteractiveDashboard = 0xf404,
+ DeclineCall = 0xf405,
+ ClippingTool = 0xf406,
+ RectangularClipping = 0xf407,
+ FreeFormClipping = 0xf408,
+ CopyTo = 0xf413,
+ IDBadge = 0xf427,
+ DynamicLock = 0xf439,
+ PenTips = 0xf45e,
+ PenTipsMirrored = 0xf45f,
+ HWPJoin = 0xf460,
+ HWPInsert = 0xf461,
+ HWPStrikeThrough = 0xf462,
+ HWPScratchOut = 0xf463,
+ HWPSplit = 0xf464,
+ HWPNewLine = 0xf465,
+ HWPOverwrite = 0xf466,
+ MobWifiWarning1 = 0xf473,
+ MobWifiWarning2 = 0xf474,
+ MobWifiWarning3 = 0xf475,
+ MobWifiWarning4 = 0xf476,
+ MicLocationCombo = 0xf47f,
+ Globe2 = 0xf49a,
+ SpecialEffectSize = 0xf4a5,
+ GIF = 0xf4a9,
+ Sticker2 = 0xf4aa,
+ SurfaceHubSelected = 0xf4be,
+ HoloLensSelected = 0xf4bf,
+ Earbud = 0xf4c0,
+ MixVolumes = 0xf4c3,
+ Safe = 0xf540,
+ LaptopSecure = 0xf552,
+ PrintDefault = 0xf56d,
+ PageMirrored = 0xf56e,
+ LandscapeOrientationMirrored = 0xf56f,
+ ColorOff = 0xf570,
+ PrintAllPages = 0xf571,
+ PrintCustomRange = 0xf572,
+ PageMarginPortraitNarrow = 0xf573,
+ PageMarginPortraitNormal = 0xf574,
+ PageMarginPortraitModerate = 0xf575,
+ PageMarginPortraitWide = 0xf576,
+ PageMarginLandscapeNarrow = 0xf577,
+ PageMarginLandscapeNormal = 0xf578,
+ PageMarginLandscapeModerate = 0xf579,
+ PageMarginLandscapeWide = 0xf57a,
+ CollateLandscape = 0xf57b,
+ CollatePortrait = 0xf57c,
+ CollatePortraitSeparated = 0xf57d,
+ DuplexLandscapeOneSided = 0xf57e,
+ DuplexLandscapeOneSidedMirrored = 0xf57f,
+ DuplexLandscapeTwoSidedLongEdge = 0xf580,
+ DuplexLandscapeTwoSidedLongEdgeMirrored = 0xf581,
+ DuplexLandscapeTwoSidedShortEdge = 0xf582,
+ DuplexLandscapeTwoSidedShortEdgeMirrored = 0xf583,
+ DuplexPortraitOneSided = 0xf584,
+ DuplexPortraitOneSidedMirrored = 0xf585,
+ DuplexPortraitTwoSidedLongEdge = 0xf586,
+ DuplexPortraitTwoSidedLongEdgeMirrored = 0xf587,
+ DuplexPortraitTwoSidedShortEdge = 0xf588,
+ DuplexPortraitTwoSidedShortEdgeMirrored = 0xf589,
+ PPSOneLandscape = 0xf58a,
+ PPSTwoLandscape = 0xf58b,
+ PPSTwoPortrait = 0xf58c,
+ PPSFourLandscape = 0xf58d,
+ PPSFourPortrait = 0xf58e,
+ HolePunchOff = 0xf58f,
+ HolePunchPortraitLeft = 0xf590,
+ HolePunchPortraitRight = 0xf591,
+ HolePunchPortraitTop = 0xf592,
+ HolePunchPortraitBottom = 0xf593,
+ HolePunchLandscapeLeft = 0xf594,
+ HolePunchLandscapeRight = 0xf595,
+ HolePunchLandscapeTop = 0xf596,
+ HolePunchLandscapeBottom = 0xf597,
+ StaplingOff = 0xf598,
+ StaplingPortraitTopLeft = 0xf599,
+ StaplingPortraitTopRight = 0xf59a,
+ StaplingPortraitBottomRight = 0xf59b,
+ StaplingPortraitTwoLeft = 0xf59c,
+ StaplingPortraitTwoRight = 0xf59d,
+ StaplingPortraitTwoTop = 0xf59e,
+ StaplingPortraitTwoBottom = 0xf59f,
+ StaplingPortraitBookBinding = 0xf5a0,
+ StaplingLandscapeTopLeft = 0xf5a1,
+ StaplingLandscapeTopRight = 0xf5a2,
+ StaplingLandscapeBottomLeft = 0xf5a3,
+ StaplingLandscapeBottomRight = 0xf5a4,
+ StaplingLandscapeTwoLeft = 0xf5a5,
+ StaplingLandscapeTwoRight = 0xf5a6,
+ StaplingLandscapeTwoTop = 0xf5a7,
+ StaplingLandscapeTwoBottom = 0xf5a8,
+ StaplingLandscapeBookBinding = 0xf5a9,
+ StatusDataTransferRoaming = 0xf5aa,
+ MobSIMError = 0xf5ab,
+ CollateLandscapeSeparated = 0xf5ac,
+ PPSOnePortrait = 0xf5ad,
+ StaplingPortraitBottomLeft = 0xf5ae,
+ PlaySolid = 0xf5b0,
+ RepeatOff = 0xf5e7,
+ Set = 0xf5ed,
+ SetSolid = 0xf5ee,
+ FuzzyReading = 0xf5ef,
+ VerticalBattery0 = 0xf5f2,
+ VerticalBattery1 = 0xf5f3,
+ VerticalBattery2 = 0xf5f4,
+ VerticalBattery3 = 0xf5f5,
+ VerticalBattery4 = 0xf5f6,
+ VerticalBattery5 = 0xf5f7,
+ VerticalBattery6 = 0xf5f8,
+ VerticalBattery7 = 0xf5f9,
+ VerticalBattery8 = 0xf5fa,
+ VerticalBattery9 = 0xf5fb,
+ VerticalBattery10 = 0xf5fc,
+ VerticalBatteryCharging0 = 0xf5fd,
+ VerticalBatteryCharging1 = 0xf5fe,
+ VerticalBatteryCharging2 = 0xf5ff,
+ VerticalBatteryCharging3 = 0xf600,
+ VerticalBatteryCharging4 = 0xf601,
+ VerticalBatteryCharging5 = 0xf602,
+ VerticalBatteryCharging6 = 0xf603,
+ VerticalBatteryCharging7 = 0xf604,
+ VerticalBatteryCharging8 = 0xf605,
+ VerticalBatteryCharging9 = 0xf606,
+ VerticalBatteryCharging10 = 0xf607,
+ VerticalBatteryUnknown = 0xf608,
+ SIMError = 0xf618,
+ SIMMissing = 0xf619,
+ SIMLock = 0xf61a,
+ eSIM = 0xf61b,
+ eSIMNoProfile = 0xf61c,
+ eSIMLocked = 0xf61d,
+ eSIMBusy = 0xf61e,
+ NoiseCancelation = 0xf61f,
+ NoiseCancelationOff = 0xf620,
+ MusicSharing = 0xf623,
+ MusicSharingOff = 0xf624,
+ CircleShapeSolid = 0xf63c,
+ WifiCallBars = 0xf657,
+ WifiCall0 = 0xf658,
+ WifiCall1 = 0xf659,
+ WifiCall2 = 0xf65a,
+ WifiCall3 = 0xf65b,
+ WifiCall4 = 0xf65c,
+ CHTLanguageBar = 0xf69e,
+ ComposeMode = 0xf6a9,
+ ExpressiveInputEntry = 0xf6b8,
+ EmojiTabMoreSymbols = 0xf6ba,
+ WebSearch = 0xf6fa,
+ Kiosk = 0xf712,
+ RTTLogo = 0xf714,
+ VoiceCall = 0xf715,
+ GoToMessage = 0xf716,
+ ReturnToCall = 0xf71a,
+ StartPresenting = 0xf71c,
+ StopPresenting = 0xf71d,
+ ProductivityMode = 0xf71e,
+ SetHistoryStatus = 0xf738,
+ SetHistoryStatus2 = 0xf739,
+ Keyboardsettings20 = 0xf73d,
+ OneHandedRight20 = 0xf73e,
+ OneHandedLeft20 = 0xf73f,
+ Split20 = 0xf740,
+ Full20 = 0xf741,
+ Handwriting20 = 0xf742,
+ ChevronLeft20 = 0xf743,
+ ChevronLeft32 = 0xf744,
+ ChevronRight20 = 0xf745,
+ ChevronRight32 = 0xf746,
+ Event12 = 0xf763,
+ MicOff2 = 0xf781,
+ DeliveryOptimization = 0xf785,
+ CancelMedium = 0xf78a,
+ SearchMedium = 0xf78b,
+ AcceptMedium = 0xf78c,
+ RevealPasswordMedium = 0xf78d,
+ DeleteWord = 0xf7ad,
+ DeleteWordFill = 0xf7ae,
+ DeleteLines = 0xf7af,
+ DeleteLinesFill = 0xf7b0,
+ InstertWords = 0xf7b1,
+ InstertWordsFill = 0xf7b2,
+ JoinWords = 0xf7b3,
+ JoinWordsFill = 0xf7b4,
+ OverwriteWords = 0xf7b5,
+ OverwriteWordsFill = 0xf7b6,
+ AddNewLine = 0xf7b7,
+ AddNewLineFill = 0xf7b8,
+ OverwriteWordsKorean = 0xf7b9,
+ OverwriteWordsFillKorean = 0xf7ba,
+ EducationIcon = 0xf7bb,
+ WindowSnipping = 0xf7ed,
+ VideoCapture = 0xf7ee,
+ StatusSecured = 0xf809,
+ NarratorApp = 0xf83b,
+ PowerButtonUpdate = 0xf83d,
+ RestartUpdate = 0xf83e,
+ UpdateStatusDot = 0xf83f,
+ Eject = 0xf847,
+ Spelling = 0xf87b,
+ SpellingKorean = 0xf87c,
+ SpellingSerbian = 0xf87d,
+ SpellingChinese = 0xf87e,
+ FolderSelect = 0xf89a,
+ SmartScreen = 0xf8a5,
+ ExploitProtection = 0xf8a6,
+ AddBold = 0xf8aa,
+ SubtractBold = 0xf8ab,
+ BackSolidBold = 0xf8ac,
+ ForwardSolidBold = 0xf8ad,
+ PauseBold = 0xf8ae,
+ ClickSolid = 0xf8af,
+ SettingsSolid = 0xf8b0,
+ MicrophoneSolidBold = 0xf8b1,
+ SpeechSolidBold = 0xf8b2,
+ ClickedOutLoudSolidBold = 0xf8b3,
+ };
-#endif // DEF_H
+ Q_ENUM_NS(Fluent_AwesomeType)
+
+ QML_NAMED_ELEMENT(FluentIcons)
+}
\ No newline at end of file
diff --git a/src/FluAccentColor.cpp b/src/FluAccentColor.cpp
index 976b7912..0d789f00 100644
--- a/src/FluAccentColor.cpp
+++ b/src/FluAccentColor.cpp
@@ -1,4 +1,5 @@
#include "FluAccentColor.h"
-FluAccentColor::FluAccentColor(QObject *parent):QObject{parent}{
+FluAccentColor::FluAccentColor(QObject *parent) : QObject{parent} {
+
}
diff --git a/src/FluAccentColor.h b/src/FluAccentColor.h
index 7ad043ea..f8c2edda 100644
--- a/src/FluAccentColor.h
+++ b/src/FluAccentColor.h
@@ -1,5 +1,4 @@
-#ifndef FLUACCENTCOLOR_H
-#define FLUACCENTCOLOR_H
+#pragma once
#include
#include
@@ -9,19 +8,17 @@
/**
* @brief The FluAccentColor class
*/
-class FluAccentColor : public QObject
-{
- Q_OBJECT
- Q_PROPERTY_AUTO(QColor,darkest)
- Q_PROPERTY_AUTO(QColor,darker)
- Q_PROPERTY_AUTO(QColor,dark)
- Q_PROPERTY_AUTO(QColor,normal)
- Q_PROPERTY_AUTO(QColor,light)
- Q_PROPERTY_AUTO(QColor,lighter)
- Q_PROPERTY_AUTO(QColor,lightest)
+class FluAccentColor : public QObject {
+Q_OBJECT
+
+Q_PROPERTY_AUTO(QColor, darkest)
+Q_PROPERTY_AUTO(QColor, darker)
+Q_PROPERTY_AUTO(QColor, dark)
+Q_PROPERTY_AUTO(QColor, normal)
+Q_PROPERTY_AUTO(QColor, light)
+Q_PROPERTY_AUTO(QColor, lighter)
+Q_PROPERTY_AUTO(QColor, lightest)
QML_NAMED_ELEMENT(FluAccentColor)
public:
explicit FluAccentColor(QObject *parent = nullptr);
};
-
-#endif // FLUACCENTCOLOR_H
diff --git a/src/FluApp.cpp b/src/FluApp.cpp
index 0c5c5b41..13bf6df7 100644
--- a/src/FluApp.cpp
+++ b/src/FluApp.cpp
@@ -2,7 +2,6 @@
#include
#include
-#include
#include
#include
#include
@@ -10,22 +9,21 @@
#include
#include
-FluApp::FluApp(QObject *parent):QObject{parent}{
- useSystemAppBar(false);
+FluApp::FluApp(QObject *parent) : QObject{parent} {
+ _useSystemAppBar = false;
}
-FluApp::~FluApp(){
-}
+FluApp::~FluApp() = default;
-void FluApp::init(QObject *target,QLocale locale){
+void FluApp::init(QObject *target, QLocale locale) {
_locale = locale;
_engine = qmlEngine(target);
_translator = new QTranslator(this);
qApp->installTranslator(_translator);
const QStringList uiLanguages = _locale.uiLanguages();
- for (const QString &name : uiLanguages) {
+ for (const QString &name: uiLanguages) {
const QString baseName = "fluentui_" + QLocale(name).name();
- if (_translator->load(":/qt/qml/FluentUI/i18n/"+ baseName)) {
+ if (_translator->load(":/qt/qml/FluentUI/i18n/" + baseName)) {
_engine->retranslate();
break;
}
diff --git a/src/FluApp.h b/src/FluApp.h
index 3af53db1..c291dbfc 100644
--- a/src/FluApp.h
+++ b/src/FluApp.h
@@ -1,5 +1,4 @@
-#ifndef FLUAPP_H
-#define FLUAPP_H
+#pragma once
#include
#include
@@ -15,24 +14,28 @@
/**
* @brief The FluApp class
*/
-class FluApp : public QObject
-{
- Q_OBJECT
- Q_PROPERTY_AUTO(bool,useSystemAppBar);
- Q_PROPERTY_AUTO(QString,windowIcon);
- Q_PROPERTY_AUTO(QLocale,locale);
+class FluApp : public QObject {
+Q_OBJECT
+
+Q_PROPERTY_AUTO(bool, useSystemAppBar)
+Q_PROPERTY_AUTO(QString, windowIcon)
+Q_PROPERTY_AUTO(QLocale, locale)
QML_NAMED_ELEMENT(FluApp)
QML_SINGLETON
+
private:
explicit FluApp(QObject *parent = nullptr);
- ~FluApp();
-public:
- SINGLETON(FluApp)
- static FluApp *create(QQmlEngine *qmlEngine, QJSEngine *jsEngine){return getInstance();}
- Q_INVOKABLE void init(QObject *target,QLocale locale = QLocale::system());
-private:
- QQmlEngine *_engine;
- QTranslator* _translator = nullptr;
-};
-#endif // FLUAPP_H
+ ~FluApp() override;
+
+public:
+SINGLETON(FluApp)
+
+ static FluApp *create(QQmlEngine *, QJSEngine *) { return getInstance(); }
+
+ Q_INVOKABLE void init(QObject *target, QLocale locale = QLocale::system());
+
+private:
+ QQmlEngine *_engine{};
+ QTranslator *_translator = nullptr;
+};
\ No newline at end of file
diff --git a/src/FluCaptcha.cpp b/src/FluCaptcha.cpp
index 7969010b..bc849009 100644
--- a/src/FluCaptcha.cpp
+++ b/src/FluCaptcha.cpp
@@ -3,74 +3,64 @@
#include
#include
#include
-#include
-FluCaptcha::FluCaptcha(QQuickItem *parent):QQuickPaintedItem(parent){
- ignoreCase(true);
- QFont fontStype;
- fontStype.setPixelSize(28);
- fontStype.setBold(true);
- font(fontStype);
+int generaNumber(int number) {
+ return QRandomGenerator::global()->bounded(0, number);
+}
+
+FluCaptcha::FluCaptcha(QQuickItem *parent) : QQuickPaintedItem(parent) {
+ _ignoreCase = false;
+ QFont fontStyle;
+ fontStyle.setPixelSize(28);
+ fontStyle.setBold(true);
+ font(fontStyle);
setWidth(180);
setHeight(80);
refresh();
}
-void FluCaptcha::paint(QPainter* painter){
+void FluCaptcha::paint(QPainter *painter) {
painter->save();
- painter->fillRect(boundingRect().toRect(),QColor(255,255,255,255));
+ painter->fillRect(boundingRect().toRect(), QColor(255, 255, 255, 255));
QPen pen;
painter->setFont(_font);
- for(int i=0;i<100;i++)
- {
- pen = QPen(QColor(_generaNumber(256),_generaNumber(256),_generaNumber(256)));
+ for (int i = 0; i < 100; i++) {
+ pen = QPen(QColor(generaNumber(256), generaNumber(256), generaNumber(256)));
painter->setPen(pen);
- painter->drawPoint(_generaNumber(180),_generaNumber(80));
+ painter->drawPoint(generaNumber(180), generaNumber(80));
}
- for(int i=0;i<5;i++)
- {
- pen = QPen(QColor(_generaNumber(256),_generaNumber(256),_generaNumber(256)));
+ for (int i = 0; i < 5; i++) {
+ pen = QPen(QColor(generaNumber(256), generaNumber(256), generaNumber(256)));
painter->setPen(pen);
- painter->drawLine(_generaNumber(180),_generaNumber(80),_generaNumber(180),_generaNumber(80));
+ painter->drawLine(generaNumber(180), generaNumber(80), generaNumber(180), generaNumber(80));
}
- for(int i=0;i<4;i++)
- {
- pen = QPen(QColor(_generaNumber(255),_generaNumber(255),_generaNumber(255)));
+ for (int i = 0; i < 4; i++) {
+ pen = QPen(QColor(generaNumber(255), generaNumber(255), generaNumber(255)));
painter->setPen(pen);
- painter->drawText(15+35*i,10+_generaNumber(15),30,40,Qt::AlignCenter, QString(_code[i]));
+ painter->drawText(15 + 35 * i, 10 + generaNumber(15), 30, 40, Qt::AlignCenter, QString(_code[i]));
}
painter->restore();
}
-int FluCaptcha::_generaNumber(int number){
- return QRandomGenerator::global()->bounded(0,number);
-}
-
-void FluCaptcha::refresh(){
+void FluCaptcha::refresh() {
this->_code.clear();
- for(int i = 0;i < 4;++i)
- {
- int num = _generaNumber(3);
- if(num == 0)
- {
- this->_code += QString::number(_generaNumber(10));
- }
- else if(num == 1)
- {
+ for (int i = 0; i < 4; ++i) {
+ int num = generaNumber(3);
+ if (num == 0) {
+ this->_code += QString::number(generaNumber(10));
+ } else if (num == 1) {
int temp = 'A';
- this->_code += static_cast(temp + _generaNumber(26));
- }
- else if(num == 2)
- {
+ this->_code += static_cast(temp + generaNumber(26));
+ } else if (num == 2) {
int temp = 'a';
- this->_code += static_cast(temp + _generaNumber(26));
+ this->_code += static_cast(temp + generaNumber(26));
}
}
update();
}
-bool FluCaptcha::verify(const QString& code){
- if(_ignoreCase){
+[[maybe_unused]] bool FluCaptcha::verify(const QString &code) {
+ if (_ignoreCase) {
return this->_code.toUpper() == code.toUpper();
}
return this->_code == code;
diff --git a/src/FluCaptcha.h b/src/FluCaptcha.h
index 4a260c5f..ea5b7e73 100644
--- a/src/FluCaptcha.h
+++ b/src/FluCaptcha.h
@@ -1,5 +1,4 @@
-#ifndef FLUCAPTCHA_H
-#define FLUCAPTCHA_H
+#pragma once
#include
#include
@@ -9,21 +8,22 @@
/**
* @brief The FluCaptcha class
*/
-class FluCaptcha : public QQuickPaintedItem
-{
- Q_OBJECT
- Q_PROPERTY_AUTO(QFont,font);
- Q_PROPERTY_AUTO(bool,ignoreCase);
+class FluCaptcha : public QQuickPaintedItem {
+Q_OBJECT
+
+Q_PROPERTY_AUTO(QFont, font);
+Q_PROPERTY_AUTO(bool, ignoreCase);
QML_NAMED_ELEMENT(FluCaptcha)
-private:
- int _generaNumber(int number);
+
public:
explicit FluCaptcha(QQuickItem *parent = nullptr);
- void paint(QPainter* painter) override;
+
+ void paint(QPainter *painter) override;
+
Q_INVOKABLE void refresh();
- Q_INVOKABLE bool verify(const QString& code);
+
+ Q_INVOKABLE [[maybe_unused]] bool verify(const QString &code);
+
private:
QString _code;
};
-
-#endif // FLUCAPTCHA_H
diff --git a/src/FluColors.cpp b/src/FluColors.cpp
index 1aef487c..b332f9d2 100644
--- a/src/FluColors.cpp
+++ b/src/FluColors.cpp
@@ -1,35 +1,34 @@
#include "FluColors.h"
#include "FluTools.h"
-FluColors::FluColors(QObject *parent):QObject{parent}{
- Transparent(QColor(0, 0, 0, 0));
- Black(QColor(0, 0, 0));
- White(QColor(255, 255, 255));
- Grey10(QColor(250, 249, 248));
- Grey20(QColor(243, 242, 241));
- Grey30(QColor(237, 235, 233));
- Grey40(QColor(225, 223, 221));
- Grey50(QColor(210, 208, 206));
- Grey60(QColor(200, 198, 196));
- Grey70(QColor(190, 185, 184));
- Grey80(QColor(179, 176, 173));
- Grey90(QColor(161, 159, 157));
- Grey100(QColor(151, 149, 146));
- Grey110(QColor(138, 136, 134));
- Grey120(QColor(121, 119, 117));
- Grey130(QColor(96, 94, 92));
- Grey140(QColor(72, 70, 68));
- Grey150(QColor(59, 58, 57));
- Grey160(QColor(50, 49, 48));
- Grey170(QColor(41, 40, 39));
- Grey180(QColor(37, 36, 35));
- Grey190(QColor(32, 31, 30));
- Grey200(QColor(27, 26, 25));
- Grey210(QColor(22, 21, 20));
- Grey220(QColor(17, 16, 15));
+FluColors::FluColors(QObject *parent) : QObject{parent} {
+ _Transparent = QColor(0, 0, 0, 0);
+ _Black = QColor(0, 0, 0);
+ _White = QColor(255, 255, 255);
+ _Grey10 = QColor(250, 249, 248);
+ _Grey20 = QColor(243, 242, 241);
+ _Grey30 = QColor(237, 235, 233);
+ _Grey40 = QColor(225, 223, 221);
+ _Grey50 = QColor(210, 208, 206);
+ _Grey60 = QColor(200, 198, 196);
+ _Grey70 = QColor(190, 185, 184);
+ _Grey80 = QColor(179, 176, 173);
+ _Grey90 = QColor(161, 159, 157);
+ _Grey100 = QColor(151, 149, 146);
+ _Grey110 = QColor(138, 136, 134);
+ _Grey120 = QColor(121, 119, 117);
+ _Grey130 = QColor(96, 94, 92);
+ _Grey140 = QColor(72, 70, 68);
+ _Grey150 = QColor(59, 58, 57);
+ _Grey160 = QColor(50, 49, 48);
+ _Grey170 = QColor(41, 40, 39);
+ _Grey180 = QColor(37, 36, 35);
+ _Grey190 = QColor(32, 31, 30);
+ _Grey200 = QColor(27, 26, 25);
+ _Grey210 = QColor(22, 21, 20);
+ _Grey220 = QColor(17, 16, 15);
-
- FluAccentColor *yellow = new FluAccentColor(this);
+ auto yellow = new FluAccentColor(this);
yellow->darkest(QColor(249, 168, 37));
yellow->darker(QColor(251, 192, 45));
yellow->dark(QColor(253, 212, 53));
@@ -37,9 +36,9 @@ FluColors::FluColors(QObject *parent):QObject{parent}{
yellow->light(QColor(255, 238, 88));
yellow->lighter(QColor(255, 241, 118));
yellow->lightest(QColor(255, 245, 155));
- Yellow(yellow);
+ _Yellow = yellow;
- FluAccentColor *orange = new FluAccentColor(this);
+ auto orange = new FluAccentColor(this);
orange->darkest(QColor(153, 61, 7));
orange->darker(QColor(172, 68, 8));
orange->dark(QColor(209, 88, 10));
@@ -47,9 +46,9 @@ FluColors::FluColors(QObject *parent):QObject{parent}{
orange->light(QColor(248, 122, 48));
orange->lighter(QColor(249, 145, 84));
orange->lightest(QColor(250, 192, 106));
- Orange(orange);
+ _Orange = orange;
- FluAccentColor *red = new FluAccentColor(this);
+ auto red = new FluAccentColor(this);
red->darkest(QColor(143, 10, 21));
red->darker(QColor(162, 11, 24));
red->dark(QColor(185, 13, 28));
@@ -57,9 +56,9 @@ FluColors::FluColors(QObject *parent):QObject{parent}{
red->light(QColor(236, 64, 79));
red->lighter(QColor(238, 88, 101));
red->lightest(QColor(240, 107, 118));
- Red(red);
+ _Red = red;
- FluAccentColor *magenta = new FluAccentColor(this);
+ auto magenta = new FluAccentColor(this);
magenta->darkest(QColor(111, 0, 79));
magenta->darker(QColor(160, 7, 108));
magenta->dark(QColor(181, 13, 125));
@@ -67,9 +66,9 @@ FluColors::FluColors(QObject *parent):QObject{parent}{
magenta->light(QColor(234, 77, 168));
magenta->lighter(QColor(238, 110, 193));
magenta->lightest(QColor(241, 140, 213));
- Magenta(magenta);
+ _Magenta = magenta;
- FluAccentColor *purple = new FluAccentColor(this);
+ auto purple = new FluAccentColor(this);
purple->darkest(QColor(44, 15, 118));
purple->darker(QColor(61, 15, 153));
purple->dark(QColor(78, 17, 174));
@@ -77,9 +76,9 @@ FluColors::FluColors(QObject *parent):QObject{parent}{
purple->light(QColor(123, 76, 157));
purple->lighter(QColor(141, 110, 189));
purple->lightest(QColor(158, 142, 217));
- Purple(purple);
+ _Purple = purple;
- FluAccentColor *blue = new FluAccentColor(this);
+ auto blue = new FluAccentColor(this);
blue->darkest(QColor(0, 74, 131));
blue->darker(QColor(0, 84, 148));
blue->dark(QColor(0, 102, 180));
@@ -87,9 +86,9 @@ FluColors::FluColors(QObject *parent):QObject{parent}{
blue->light(QColor(38, 140, 220));
blue->lighter(QColor(76, 160, 224));
blue->lightest(QColor(96, 171, 228));
- Blue(blue);
+ _Blue = blue;
- FluAccentColor *teal = new FluAccentColor(this);
+ auto teal = new FluAccentColor(this);
teal->darkest(QColor(0, 110, 91));
teal->darker(QColor(0, 124, 103));
teal->dark(QColor(0, 151, 125));
@@ -97,9 +96,9 @@ FluColors::FluColors(QObject *parent):QObject{parent}{
teal->light(QColor(38, 189, 164));
teal->lighter(QColor(77, 201, 180));
teal->lightest(QColor(96, 207, 188));
- Teal(teal);
+ _Teal = teal;
- FluAccentColor *green = new FluAccentColor(this);
+ auto green = new FluAccentColor(this);
green->darkest(QColor(9, 76, 9));
green->darker(QColor(12, 93, 12));
green->dark(QColor(14, 111, 14));
@@ -107,17 +106,17 @@ FluColors::FluColors(QObject *parent):QObject{parent}{
green->light(QColor(39, 137, 57));
green->lighter(QColor(76, 156, 76));
green->lightest(QColor(106, 173, 106));
- Green(green);
+ _Green = green;
}
-FluAccentColor* FluColors::createAccentColor(QColor primaryColor){
- FluAccentColor *accentColor = new FluAccentColor(this);
- accentColor->darkest(FluTools::getInstance()->withOpacity(primaryColor,0.7));
- accentColor->darker(FluTools::getInstance()->withOpacity(primaryColor,0.8));
- accentColor->dark(FluTools::getInstance()->withOpacity(primaryColor,0.9));
+[[maybe_unused]] FluAccentColor *FluColors::createAccentColor(QColor primaryColor) {
+ auto accentColor = new FluAccentColor(this);
+ accentColor->darkest(FluTools::getInstance()->withOpacity(primaryColor, 0.7));
+ accentColor->darker(FluTools::getInstance()->withOpacity(primaryColor, 0.8));
+ accentColor->dark(FluTools::getInstance()->withOpacity(primaryColor, 0.9));
accentColor->normal(primaryColor);
- accentColor->light(FluTools::getInstance()->withOpacity(primaryColor,0.9));
- accentColor->lighter(FluTools::getInstance()->withOpacity(primaryColor,0.8));
- accentColor->lightest(FluTools::getInstance()->withOpacity(primaryColor,0.7));
+ accentColor->light(FluTools::getInstance()->withOpacity(primaryColor, 0.9));
+ accentColor->lighter(FluTools::getInstance()->withOpacity(primaryColor, 0.8));
+ accentColor->lightest(FluTools::getInstance()->withOpacity(primaryColor, 0.7));
return accentColor;
}
diff --git a/src/FluColors.h b/src/FluColors.h
index 9dc45f23..8568ec5f 100644
--- a/src/FluColors.h
+++ b/src/FluColors.h
@@ -1,5 +1,4 @@
-#ifndef FLUCOLORS_H
-#define FLUCOLORS_H
+#pragma once
#include
#include
@@ -11,50 +10,52 @@
/**
* @brief The FluColors class
*/
-class FluColors : public QObject
-{
- Q_OBJECT
- Q_PROPERTY_AUTO(QColor,Transparent);
- Q_PROPERTY_AUTO(QColor,Black);
- Q_PROPERTY_AUTO(QColor,White);
- Q_PROPERTY_AUTO(QColor,Grey10);
- Q_PROPERTY_AUTO(QColor,Grey20);
- Q_PROPERTY_AUTO(QColor,Grey30);
- Q_PROPERTY_AUTO(QColor,Grey40);
- Q_PROPERTY_AUTO(QColor,Grey50);
- Q_PROPERTY_AUTO(QColor,Grey60);
- Q_PROPERTY_AUTO(QColor,Grey70);
- Q_PROPERTY_AUTO(QColor,Grey80);
- Q_PROPERTY_AUTO(QColor,Grey90);
- Q_PROPERTY_AUTO(QColor,Grey100);
- Q_PROPERTY_AUTO(QColor,Grey110);
- Q_PROPERTY_AUTO(QColor,Grey120);
- Q_PROPERTY_AUTO(QColor,Grey130);
- Q_PROPERTY_AUTO(QColor,Grey140);
- Q_PROPERTY_AUTO(QColor,Grey150);
- Q_PROPERTY_AUTO(QColor,Grey160);
- Q_PROPERTY_AUTO(QColor,Grey170);
- Q_PROPERTY_AUTO(QColor,Grey180);
- Q_PROPERTY_AUTO(QColor,Grey190);
- Q_PROPERTY_AUTO(QColor,Grey200);
- Q_PROPERTY_AUTO(QColor,Grey210);
- Q_PROPERTY_AUTO(QColor,Grey220);
- Q_PROPERTY_AUTO(FluAccentColor*,Yellow);
- Q_PROPERTY_AUTO(FluAccentColor*,Orange);
- Q_PROPERTY_AUTO(FluAccentColor*,Red);
- Q_PROPERTY_AUTO(FluAccentColor*,Magenta);
- Q_PROPERTY_AUTO(FluAccentColor*,Purple);
- Q_PROPERTY_AUTO(FluAccentColor*,Blue);
- Q_PROPERTY_AUTO(FluAccentColor*,Teal);
- Q_PROPERTY_AUTO(FluAccentColor*,Green);
+class FluColors : public QObject {
+Q_OBJECT
+
+Q_PROPERTY_AUTO(QColor, Transparent);
+Q_PROPERTY_AUTO(QColor, Black);
+Q_PROPERTY_AUTO(QColor, White);
+Q_PROPERTY_AUTO(QColor, Grey10);
+Q_PROPERTY_AUTO(QColor, Grey20);
+Q_PROPERTY_AUTO(QColor, Grey30);
+Q_PROPERTY_AUTO(QColor, Grey40);
+Q_PROPERTY_AUTO(QColor, Grey50);
+Q_PROPERTY_AUTO(QColor, Grey60);
+Q_PROPERTY_AUTO(QColor, Grey70);
+Q_PROPERTY_AUTO(QColor, Grey80);
+Q_PROPERTY_AUTO(QColor, Grey90);
+Q_PROPERTY_AUTO(QColor, Grey100);
+Q_PROPERTY_AUTO(QColor, Grey110);
+Q_PROPERTY_AUTO(QColor, Grey120);
+Q_PROPERTY_AUTO(QColor, Grey130);
+Q_PROPERTY_AUTO(QColor, Grey140);
+Q_PROPERTY_AUTO(QColor, Grey150);
+Q_PROPERTY_AUTO(QColor, Grey160);
+Q_PROPERTY_AUTO(QColor, Grey170);
+Q_PROPERTY_AUTO(QColor, Grey180);
+Q_PROPERTY_AUTO(QColor, Grey190);
+Q_PROPERTY_AUTO(QColor, Grey200);
+Q_PROPERTY_AUTO(QColor, Grey210);
+Q_PROPERTY_AUTO(QColor, Grey220);
+Q_PROPERTY_AUTO_P(FluAccentColor*, Yellow);
+Q_PROPERTY_AUTO_P(FluAccentColor*, Orange);
+Q_PROPERTY_AUTO_P(FluAccentColor*, Red);
+Q_PROPERTY_AUTO_P(FluAccentColor*, Magenta);
+Q_PROPERTY_AUTO_P(FluAccentColor*, Purple);
+Q_PROPERTY_AUTO_P(FluAccentColor*, Blue);
+Q_PROPERTY_AUTO_P(FluAccentColor*, Teal);
+Q_PROPERTY_AUTO_P(FluAccentColor*, Green);
QML_NAMED_ELEMENT(FluColors)
QML_SINGLETON
+
private:
explicit FluColors(QObject *parent = nullptr);
-public:
- SINGLETON(FluColors)
- Q_INVOKABLE FluAccentColor* createAccentColor(QColor primaryColor);
- static FluColors *create(QQmlEngine *qmlEngine, QJSEngine *jsEngine){return getInstance();}
-};
-#endif // FLUCOLORS_H
+public:
+SINGLETON(FluColors)
+
+ Q_INVOKABLE [[maybe_unused]] FluAccentColor *createAccentColor(QColor primaryColor);
+
+ static FluColors *create(QQmlEngine *, QJSEngine *) { return getInstance(); }
+};
\ No newline at end of file
diff --git a/src/FluFrameless.cpp b/src/FluFrameless.cpp
index ac0d1e30..7448f8ea 100644
--- a/src/FluFrameless.cpp
+++ b/src/FluFrameless.cpp
@@ -6,130 +6,140 @@
#include
#ifdef Q_OS_WIN
-#pragma comment (lib,"user32.lib")
-#pragma comment (lib,"dwmapi.lib")
+#pragma comment (lib, "user32.lib")
+#pragma comment (lib, "dwmapi.lib")
+
#include
#include
#include
-static inline QByteArray qtNativeEventType()
-{
+
+static inline QByteArray qtNativeEventType() {
static const auto result = "windows_generic_MSG";
return result;
}
-static inline bool isCompositionEnabled(){
- typedef HRESULT (WINAPI* DwmIsCompositionEnabledPtr)(BOOL *pfEnabled);
+
+static inline bool isCompositionEnabled() {
+ typedef HRESULT (WINAPI *DwmIsCompositionEnabledPtr)(BOOL *pfEnabled);
HMODULE module = ::LoadLibraryW(L"dwmapi.dll");
- if (module)
- {
+ if (module) {
BOOL composition_enabled = false;
DwmIsCompositionEnabledPtr dwm_is_composition_enabled;
- dwm_is_composition_enabled= reinterpret_cast(::GetProcAddress(module, "DwmIsCompositionEnabled"));
- if (dwm_is_composition_enabled)
- {
+ dwm_is_composition_enabled = reinterpret_cast(::GetProcAddress(module, "DwmIsCompositionEnabled"));
+ if (dwm_is_composition_enabled) {
dwm_is_composition_enabled(&composition_enabled);
}
return composition_enabled;
}
return false;
}
+
#endif
-FluFrameless::FluFrameless(QQuickItem *parent)
- : QQuickItem{parent}
-{
- appbar(nullptr);
- maximizeButton(nullptr);
- minimizedButton(nullptr);
- closeButton(nullptr);
- topmost(false);
- disabled(false);
+bool containsCursorToItem(QQuickItem *item) {
+ if (!item || !item->isVisible()) {
+ return false;
+ }
+ auto point = QCursor::pos();
+ auto rect = QRectF(item->mapToGlobal(QPoint(0, 0)), item->size());
+ if (point.x() > rect.x() && point.x() < (rect.x() + rect.width()) && point.y() > rect.y() && point.y() < (rect.y() + rect.height())) {
+ return true;
+ }
+ return false;
}
-FluFrameless::~FluFrameless(){
+FluFrameless::FluFrameless(QQuickItem *parent) : QQuickItem{parent} {
+ _fixSize = false;
+ _appbar = nullptr;
+ _maximizeButton = nullptr;
+ _minimizedButton = nullptr;
+ _closeButton = nullptr;
+ _topmost = false;
+ _disabled = false;
}
-void FluFrameless::onDestruction(){
- qApp->removeNativeEventFilter(this);
+FluFrameless::~FluFrameless() = default;
+
+[[maybe_unused]] void FluFrameless::onDestruction() {
+ QGuiApplication::instance()->removeNativeEventFilter(this);
}
-void FluFrameless::componentComplete(){
- if(_disabled){
+void FluFrameless::componentComplete() {
+ if (_disabled) {
return;
}
_current = window()->winId();
- window()->setFlags(( window()->flags()) | Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowCloseButtonHint | Qt::FramelessWindowHint);
-#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
- if(QQuickWindow::sceneGraphBackend() == "software"){
- window()->setFlag(Qt::FramelessWindowHint,false);
+ window()->setFlags((window()->flags()) | Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowCloseButtonHint | Qt::FramelessWindowHint);
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+ if (QQuickWindow::sceneGraphBackend() == "software") {
+ window()->setFlag(Qt::FramelessWindowHint, false);
}
#endif
- if(!_fixSize){
+ if (!_fixSize) {
window()->setFlag(Qt::WindowMaximizeButtonHint);
}
window()->installEventFilter(this);
- qApp->installNativeEventFilter(this);
- if(_maximizeButton){
+ QGuiApplication::instance()->installNativeEventFilter(this);
+ if (_maximizeButton) {
setHitTestVisible(_maximizeButton);
}
- if(_minimizedButton){
+ if (_minimizedButton) {
setHitTestVisible(_minimizedButton);
}
- if(_closeButton){
+ if (_closeButton) {
setHitTestVisible(_closeButton);
}
#ifdef Q_OS_WIN
HWND hwnd = reinterpret_cast(window()->winId());
DWORD style = ::GetWindowLongPtr(hwnd, GWL_STYLE);
- if(_fixSize){
+ if (_fixSize) {
::SetWindowLongPtr(hwnd, GWL_STYLE, style | WS_THICKFRAME);
- for (int i = 0; i < qApp->screens().count(); ++i) {
- connect( qApp->screens().at(i),&QScreen::logicalDotsPerInchChanged,this,[=]{
- SetWindowPos(hwnd,nullptr,0,0,0,0,SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOMOVE | SWP_FRAMECHANGED);
+ for (int i = 0; i <= QGuiApplication::screens().count() - 1; ++i) {
+ connect(QGuiApplication::screens().at(i), &QScreen::logicalDotsPerInchChanged, this, [=] {
+ SetWindowPos(hwnd, nullptr, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOMOVE | SWP_FRAMECHANGED);
});
}
- }else{
+ } else {
::SetWindowLongPtr(hwnd, GWL_STYLE, style | WS_MAXIMIZEBOX | WS_THICKFRAME);
}
- SetWindowPos(hwnd,nullptr,0,0,0,0,SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED);
- connect(window(),&QQuickWindow::screenChanged,this,[hwnd]{
- ::SetWindowPos(hwnd,0,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED | SWP_NOOWNERZORDER);
- ::RedrawWindow(hwnd, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
+ SetWindowPos(hwnd, nullptr, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED);
+ connect(window(), &QQuickWindow::screenChanged, this, [hwnd] {
+ ::SetWindowPos(hwnd, nullptr, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED | SWP_NOOWNERZORDER);
+ ::RedrawWindow(hwnd, nullptr, nullptr, RDW_INVALIDATE | RDW_UPDATENOW);
});
#endif
- connect(this,&FluFrameless::topmostChanged,this,[this]{
+ connect(this, &FluFrameless::topmostChanged, this, [this] {
_setWindowTopmost(topmost());
});
_setWindowTopmost(topmost());
}
-bool FluFrameless::nativeEventFilter(const QByteArray &eventType, void *message, QT_NATIVE_EVENT_RESULT_TYPE *result){
+[[maybe_unused]] bool FluFrameless::nativeEventFilter(const QByteArray &eventType, void *message, QT_NATIVE_EVENT_RESULT_TYPE *result) {
#ifdef Q_OS_WIN
if ((eventType != qtNativeEventType()) || !message) {
return false;
}
const auto msg = static_cast(message);
- const HWND hwnd = msg->hwnd;
- if (!hwnd || !msg) {
+ auto hwnd = msg->hwnd;
+ if (!hwnd) {
return false;
}
- const qint64 wid = reinterpret_cast(hwnd);
- if(wid != _current){
+ const quint64 wid = reinterpret_cast(hwnd);
+ if (wid != _current) {
return false;
}
- const UINT uMsg = msg->message;
- const WPARAM wParam = msg->wParam;
- const LPARAM lParam = msg->lParam;
+ const auto uMsg = msg->message;
+ const auto wParam = msg->wParam;
+ const auto lParam = msg->lParam;
static QPoint offsetXY;
- if(uMsg == WM_WINDOWPOSCHANGING){
- WINDOWPOS* wp = reinterpret_cast(lParam);
- if (wp != nullptr && (wp->flags & SWP_NOSIZE) == 0)
- {
+ if (uMsg == WM_WINDOWPOSCHANGING) {
+ auto *wp = reinterpret_cast(lParam);
+ if (wp != nullptr && (wp->flags & SWP_NOSIZE) == 0) {
wp->flags |= SWP_NOCOPYBITS;
*result = ::DefWindowProcW(hwnd, uMsg, wParam, lParam);
return true;
}
return false;
- }else if(uMsg == WM_NCCALCSIZE){
+ } else if (uMsg == WM_NCCALCSIZE) {
const auto clientRect = ((wParam == FALSE) ? reinterpret_cast(lParam) : &(reinterpret_cast(lParam))->rgrc[0]);
const LONG originalTop = clientRect->top;
const LONG originalLeft = clientRect->left;
@@ -140,28 +150,35 @@ bool FluFrameless::nativeEventFilter(const QByteArray &eventType, void *message,
*result = hitTestResult;
return true;
}
- int offsetSize = 0;
+ int offsetSize;
bool isMaximum = ::IsZoomed(hwnd);
- offsetXY = QPoint(abs(clientRect->left - originalLeft),abs(clientRect->top - originalTop));
- if(isMaximum || _isFullScreen()){
+ offsetXY = QPoint(abs(clientRect->left - originalLeft), abs(clientRect->top - originalTop));
+ if (isMaximum || _isFullScreen()) {
offsetSize = 0;
- }else{
+ } else {
offsetSize = 1;
}
- if(!isCompositionEnabled()){
+ if (!isCompositionEnabled()) {
offsetSize = 0;
}
- if (!isMaximum || QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) {
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+ if (!isMaximum) {
clientRect->top = originalTop + offsetSize;
clientRect->bottom = originalBottom - offsetSize;
clientRect->left = originalLeft + offsetSize;
clientRect->right = originalRight - offsetSize;
}
+#else
+ clientRect->top = originalTop + offsetSize;
+ clientRect->bottom = originalBottom - offsetSize;
+ clientRect->left = originalLeft + offsetSize;
+ clientRect->right = originalRight - offsetSize;
+#endif
_setMaximizeHovered(false);
*result = WVR_REDRAW;
return true;
- }else if(uMsg == WM_NCHITTEST){
- if(_hitMaximizeButton()){
+ } else if (uMsg == WM_NCHITTEST) {
+ if (_hitMaximizeButton()) {
if (*result == HTNOWHERE) {
*result = HTZOOM;
}
@@ -176,8 +193,8 @@ bool FluFrameless::nativeEventFilter(const QByteArray &eventType, void *message,
::ScreenToClient(hwnd, &nativeLocalPos);
RECT clientRect{0, 0, 0, 0};
::GetClientRect(hwnd, &clientRect);
- auto clientWidth = clientRect.right-clientRect.left;
- auto clientHeight = clientRect.bottom-clientRect.top;
+ auto clientWidth = clientRect.right - clientRect.left;
+ auto clientHeight = clientRect.bottom - clientRect.top;
bool left = nativeLocalPos.x < _margins;
bool right = nativeLocalPos.x > clientWidth - _margins;
bool top = nativeLocalPos.y < _margins;
@@ -205,59 +222,59 @@ bool FluFrameless::nativeEventFilter(const QByteArray &eventType, void *message,
if (0 != *result) {
return true;
}
- if(_hitAppBar()){
+ if (_hitAppBar()) {
*result = HTCAPTION;
return true;
}
*result = HTCLIENT;
return true;
- }else if(uMsg == WM_NCLBUTTONDBLCLK || uMsg == WM_NCLBUTTONDOWN){
- if(_hitMaximizeButton()){
+ } else if (uMsg == WM_NCLBUTTONDBLCLK || uMsg == WM_NCLBUTTONDOWN) {
+ if (_hitMaximizeButton()) {
QMouseEvent event = QMouseEvent(QEvent::MouseButtonPress, QPoint(), QPoint(), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
- QGuiApplication::sendEvent(_maximizeButton,&event);
+ QGuiApplication::sendEvent(_maximizeButton, &event);
_setMaximizePressed(true);
return true;
}
- }else if(uMsg == WM_NCLBUTTONUP || uMsg == WM_NCRBUTTONUP){
- if(_hitMaximizeButton()){
+ } else if (uMsg == WM_NCLBUTTONUP || uMsg == WM_NCRBUTTONUP) {
+ if (_hitMaximizeButton()) {
QMouseEvent event = QMouseEvent(QEvent::MouseButtonRelease, QPoint(), QPoint(), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
- QGuiApplication::sendEvent(_maximizeButton,&event);
+ QGuiApplication::sendEvent(_maximizeButton, &event);
_setMaximizePressed(false);
return true;
}
- }else if(uMsg == WM_NCPAINT){
+ } else if (uMsg == WM_NCPAINT) {
*result = FALSE;
return true;
- }else if(uMsg == WM_NCACTIVATE){
+ } else if (uMsg == WM_NCACTIVATE) {
*result = ::DefWindowProcW(hwnd, WM_NCACTIVATE, wParam, -1);
return true;
- }else if(uMsg == WM_GETMINMAXINFO){
- MINMAXINFO* minmaxInfo = reinterpret_cast(lParam);
+ } else if (uMsg == WM_GETMINMAXINFO) {
+ auto *minmaxInfo = reinterpret_cast(lParam);
auto pixelRatio = window()->devicePixelRatio();
auto geometry = window()->screen()->availableGeometry();
RECT rect;
SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);
minmaxInfo->ptMaxPosition.x = rect.left - offsetXY.x();
minmaxInfo->ptMaxPosition.y = rect.top - offsetXY.x();
- minmaxInfo->ptMaxSize.x = geometry.width()*pixelRatio + offsetXY.x() * 2;
- minmaxInfo->ptMaxSize.y = geometry.height()*pixelRatio + offsetXY.y() * 2;
+ minmaxInfo->ptMaxSize.x = qRound(geometry.width() * pixelRatio) + offsetXY.x() * 2;
+ minmaxInfo->ptMaxSize.y = qRound(geometry.height() * pixelRatio) + offsetXY.y() * 2;
return false;
- }else if(uMsg == WM_NCRBUTTONDOWN){
+ } else if (uMsg == WM_NCRBUTTONDOWN) {
if (wParam == HTCAPTION) {
_showSystemMenu(QCursor::pos());
}
- }else if(uMsg == WM_KEYDOWN || uMsg == WM_SYSKEYDOWN){
+ } else if (uMsg == WM_KEYDOWN || uMsg == WM_SYSKEYDOWN) {
const bool altPressed = ((wParam == VK_MENU) || (::GetKeyState(VK_MENU) < 0));
const bool spacePressed = ((wParam == VK_SPACE) || (::GetKeyState(VK_SPACE) < 0));
if (altPressed && spacePressed) {
auto pos = window()->position();
- _showSystemMenu(QPoint(pos.x(),pos.y()+_appbar->height()));
+ _showSystemMenu(QPoint(pos.x(), qRound(pos.y() + _appbar->height())));
}
- }else if(uMsg == WM_SYSCOMMAND){
- if(wParam == SC_MINIMIZE){
- if(window()->transientParent()){
+ } else if (uMsg == WM_SYSCOMMAND) {
+ if (wParam == SC_MINIMIZE) {
+ if (window()->transientParent()) {
window()->transientParent()->showMinimized();
- }else{
+ } else {
window()->showMinimized();
}
return true;
@@ -265,143 +282,136 @@ bool FluFrameless::nativeEventFilter(const QByteArray &eventType, void *message,
return false;
}
return false;
-#endif
+#else
return false;
+#endif
}
-bool FluFrameless::_isMaximized(){
+bool FluFrameless::_isMaximized() {
return window()->visibility() == QWindow::Maximized;
}
-bool FluFrameless::_isFullScreen(){
+bool FluFrameless::_isFullScreen() {
return window()->visibility() == QWindow::FullScreen;
}
-void FluFrameless::_showSystemMenu(QPoint point){
+void FluFrameless::_showSystemMenu(QPoint point) {
#ifdef Q_OS_WIN
HWND hwnd = reinterpret_cast(window()->winId());
- DWORD style = ::GetWindowLongPtr(hwnd,GWL_STYLE);
+ DWORD style = ::GetWindowLongPtr(hwnd, GWL_STYLE);
::SetWindowLongPtr(hwnd, GWL_STYLE, style | WS_SYSMENU);
- const HMENU hMenu = ::GetSystemMenu(hwnd, FALSE);
- if(_isMaximized() || _isFullScreen()){
- ::EnableMenuItem(hMenu,SC_MOVE,MFS_DISABLED);
- ::EnableMenuItem(hMenu,SC_RESTORE,MFS_ENABLED);
- }else{
- ::EnableMenuItem(hMenu,SC_MOVE,MFS_ENABLED);
- ::EnableMenuItem(hMenu,SC_RESTORE,MFS_DISABLED);
+ auto hMenu = ::GetSystemMenu(hwnd, FALSE);
+ if (_isMaximized() || _isFullScreen()) {
+ ::EnableMenuItem(hMenu, SC_MOVE, MFS_DISABLED);
+ ::EnableMenuItem(hMenu, SC_RESTORE, MFS_ENABLED);
+ } else {
+ ::EnableMenuItem(hMenu, SC_MOVE, MFS_ENABLED);
+ ::EnableMenuItem(hMenu, SC_RESTORE, MFS_DISABLED);
}
- if(!_fixSize && !_isMaximized() && !_isFullScreen()){
- ::EnableMenuItem(hMenu,SC_SIZE,MFS_ENABLED);
- ::EnableMenuItem(hMenu,SC_MAXIMIZE,MFS_ENABLED);
- }else{
- ::EnableMenuItem(hMenu,SC_SIZE,MFS_DISABLED);
- ::EnableMenuItem(hMenu,SC_MAXIMIZE,MFS_DISABLED);
+ if (!_fixSize && !_isMaximized() && !_isFullScreen()) {
+ ::EnableMenuItem(hMenu, SC_SIZE, MFS_ENABLED);
+ ::EnableMenuItem(hMenu, SC_MAXIMIZE, MFS_ENABLED);
+ } else {
+ ::EnableMenuItem(hMenu, SC_SIZE, MFS_DISABLED);
+ ::EnableMenuItem(hMenu, SC_MAXIMIZE, MFS_DISABLED);
}
- const int result = ::TrackPopupMenu(hMenu, (TPM_RETURNCMD | (QGuiApplication::isRightToLeft() ? TPM_RIGHTALIGN : TPM_LEFTALIGN)), point.x()*window()->devicePixelRatio(), point.y()*window()->devicePixelRatio(), 0, hwnd, nullptr);
+ const int result = ::TrackPopupMenu(hMenu, (TPM_RETURNCMD | (QGuiApplication::isRightToLeft() ? TPM_RIGHTALIGN : TPM_LEFTALIGN)), qRound(point.x() * window()->devicePixelRatio()),
+ qRound(point.y() * window()->devicePixelRatio()), 0, hwnd, nullptr);
if (result != FALSE) {
::PostMessageW(hwnd, WM_SYSCOMMAND, result, 0);
}
- ::SetWindowLongPtr(hwnd, GWL_STYLE, style &~ WS_SYSMENU);
+ ::SetWindowLongPtr(hwnd, GWL_STYLE, style & ~WS_SYSMENU);
#endif
}
-bool FluFrameless::_containsCursorToItem(QQuickItem* item){
- if(!item || !item->isVisible()){
- return false;
- }
- auto point = QCursor::pos();
- auto rect = QRectF(item->mapToGlobal(QPoint(0,0)),item->size());
- if(point.x()>rect.x() && point.x()<(rect.x()+rect.width()) && point.y()>rect.y() && point.y()<(rect.y()+rect.height())){
- return true;
- }
- return false;
-}
-
-bool FluFrameless::_hitAppBar(){
- foreach (auto item, _hitTestList) {
- if(_containsCursorToItem(item)){
+bool FluFrameless::_hitAppBar() {
+ for (int i = 0; i <= _hitTestList.size() - 1; ++i) {
+ auto item = _hitTestList.at(i);
+ if (containsCursorToItem(item)) {
return false;
}
}
- if(_containsCursorToItem(_appbar)){
+ if (containsCursorToItem(_appbar)) {
return true;
}
return false;
}
-bool FluFrameless::_hitMaximizeButton(){
- if(_containsCursorToItem(_maximizeButton)){
+bool FluFrameless::_hitMaximizeButton() {
+ if (containsCursorToItem(_maximizeButton)) {
return true;
}
return false;
}
-void FluFrameless::_setMaximizePressed(bool val){
- _maximizeButton->setProperty("down",val);
+void FluFrameless::_setMaximizePressed(bool val) {
+ _maximizeButton->setProperty("down", val);
}
-void FluFrameless::_setMaximizeHovered(bool val){
- _maximizeButton->setProperty("hover",val);
+void FluFrameless::_setMaximizeHovered(bool val) {
+ _maximizeButton->setProperty("hover", val);
}
-void FluFrameless::_updateCursor(int edges){
+void FluFrameless::_updateCursor(int edges) {
switch (edges) {
- case 0:
- window()->setCursor(Qt::ArrowCursor);
- break;
- case Qt::LeftEdge:
- case Qt::RightEdge:
- window()->setCursor(Qt::SizeHorCursor);
- break;
- case Qt::TopEdge:
- case Qt::BottomEdge:
- window()->setCursor(Qt::SizeVerCursor);
- break;
- case Qt::LeftEdge | Qt::TopEdge:
- case Qt::RightEdge | Qt::BottomEdge:
- window()->setCursor(Qt::SizeFDiagCursor);
- break;
- case Qt::RightEdge | Qt::TopEdge:
- case Qt::LeftEdge | Qt::BottomEdge:
- window()->setCursor(Qt::SizeBDiagCursor);
- break;
+ case 0:
+ window()->setCursor(Qt::ArrowCursor);
+ break;
+ case Qt::LeftEdge:
+ case Qt::RightEdge:
+ window()->setCursor(Qt::SizeHorCursor);
+ break;
+ case Qt::TopEdge:
+ case Qt::BottomEdge:
+ window()->setCursor(Qt::SizeVerCursor);
+ break;
+ case Qt::LeftEdge | Qt::TopEdge:
+ case Qt::RightEdge | Qt::BottomEdge:
+ window()->setCursor(Qt::SizeFDiagCursor);
+ break;
+ case Qt::RightEdge | Qt::TopEdge:
+ case Qt::LeftEdge | Qt::BottomEdge:
+ window()->setCursor(Qt::SizeBDiagCursor);
+ break;
+ default:
+ break;
}
}
-void FluFrameless::showFullScreen(){
+[[maybe_unused]] void FluFrameless::showFullScreen() {
window()->showFullScreen();
}
-void FluFrameless::showMaximized(){
+void FluFrameless::showMaximized() {
#ifdef Q_OS_WIN
HWND hwnd = reinterpret_cast(window()->winId());
- ::ShowWindow(hwnd,3);
+ ::ShowWindow(hwnd, 3);
#else
window()->showMaximized();
#endif
}
-void FluFrameless::showMinimized(){
+[[maybe_unused]] void FluFrameless::showMinimized() {
window()->showMinimized();
}
-void FluFrameless::showNormal(){
+void FluFrameless::showNormal() {
window()->showNormal();
}
-void FluFrameless::setHitTestVisible(QQuickItem* val){
- if(!_hitTestList.contains(val)){
+void FluFrameless::setHitTestVisible(QQuickItem *val) {
+ if (!_hitTestList.contains(val)) {
_hitTestList.append(val);
}
}
-void FluFrameless::_setWindowTopmost(bool topmost){
+void FluFrameless::_setWindowTopmost(bool topmost) {
#ifdef Q_OS_WIN
HWND hwnd = reinterpret_cast(window()->winId());
- if(topmost){
+ if (topmost) {
::SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
- }else{
+ } else {
::SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
#else
@@ -409,7 +419,7 @@ void FluFrameless::_setWindowTopmost(bool topmost){
#endif
}
-bool FluFrameless::eventFilter(QObject *obj, QEvent *ev){
+bool FluFrameless::eventFilter(QObject *obj, QEvent *ev) {
#ifndef Q_OS_WIN
switch (ev->type()) {
case QEvent::MouseButtonPress:
diff --git a/src/FluFrameless.h b/src/FluFrameless.h
index cce2d0ed..60afec2f 100644
--- a/src/FluFrameless.h
+++ b/src/FluFrameless.h
@@ -1,5 +1,4 @@
-#ifndef FLUFRAMELESS_H
-#define FLUFRAMELESS_H
+#pragma once
#include
#include
@@ -15,47 +14,63 @@ using QT_ENTER_EVENT_TYPE = QEvent;
#endif
-class FluFrameless : public QQuickItem,QAbstractNativeEventFilter
-{
- Q_OBJECT
- Q_PROPERTY_AUTO(QQuickItem*,appbar)
- Q_PROPERTY_AUTO(bool,topmost)
- Q_PROPERTY_AUTO(QQuickItem*,maximizeButton)
- Q_PROPERTY_AUTO(QQuickItem*,minimizedButton)
- Q_PROPERTY_AUTO(QQuickItem*,closeButton)
- Q_PROPERTY_AUTO(bool,disabled)
- Q_PROPERTY_AUTO(bool,fixSize)
+class FluFrameless : public QQuickItem, QAbstractNativeEventFilter {
+Q_OBJECT
+Q_PROPERTY_AUTO_P(QQuickItem*, appbar)
+Q_PROPERTY_AUTO_P(QQuickItem*, maximizeButton)
+Q_PROPERTY_AUTO_P(QQuickItem*, minimizedButton)
+Q_PROPERTY_AUTO_P(QQuickItem*, closeButton)
+Q_PROPERTY_AUTO(bool, topmost)
+Q_PROPERTY_AUTO(bool, disabled)
+Q_PROPERTY_AUTO(bool, fixSize)
QML_NAMED_ELEMENT(FluFrameless)
public:
- explicit FluFrameless(QQuickItem* parent = nullptr);
- ~FluFrameless();
+ explicit FluFrameless(QQuickItem *parent = nullptr);
+
+ ~FluFrameless() override;
+
void componentComplete() override;
- bool nativeEventFilter(const QByteArray &eventType, void *message, QT_NATIVE_EVENT_RESULT_TYPE *result) override;
- Q_INVOKABLE void showFullScreen();
+
+ [[maybe_unused]] bool nativeEventFilter(const QByteArray &eventType, void *message, QT_NATIVE_EVENT_RESULT_TYPE *result) override;
+
+ Q_INVOKABLE [[maybe_unused]] void showFullScreen();
+
Q_INVOKABLE void showMaximized();
- Q_INVOKABLE void showMinimized();
+
+ Q_INVOKABLE [[maybe_unused]] void showMinimized();
+
Q_INVOKABLE void showNormal();
- Q_INVOKABLE void setHitTestVisible(QQuickItem*);
- Q_INVOKABLE void onDestruction();
+
+ Q_INVOKABLE void setHitTestVisible(QQuickItem *);
+
+ Q_INVOKABLE [[maybe_unused]] void onDestruction();
+
protected:
bool eventFilter(QObject *obj, QEvent *event) override;
+
private:
bool _isFullScreen();
+
bool _isMaximized();
+
void _updateCursor(int edges);
+
void _setWindowTopmost(bool topmost);
+
void _showSystemMenu(QPoint point);
- bool _containsCursorToItem(QQuickItem* item);
+
bool _hitAppBar();
+
bool _hitMaximizeButton();
+
void _setMaximizePressed(bool val);
+
void _setMaximizeHovered(bool val);
+
private:
- qint64 _current;
+ quint64 _current = 0;
int _edges = 0;
int _margins = 8;
- qint64 _clickTimer = 0;
+ quint64 _clickTimer = 0;
QList> _hitTestList;
-};
-
-#endif // FLUFRAMELESS_H
+};
\ No newline at end of file
diff --git a/src/FluQrCodeItem.cpp b/src/FluQrCodeItem.cpp
index f8ccd9ed..5a0ce90f 100644
--- a/src/FluQrCodeItem.cpp
+++ b/src/FluQrCodeItem.cpp
@@ -2,51 +2,47 @@
#include "qrcode/qrencode.h"
-FluQrCodeItem::FluQrCodeItem(QQuickItem* parent):QQuickPaintedItem(parent){
- color(QColor(0,0,0,255));
- bgColor(QColor(255,255,255,255));
- size(100);
+FluQrCodeItem::FluQrCodeItem(QQuickItem *parent) : QQuickPaintedItem(parent) {
+ _color = QColor(0, 0, 0, 255);
+ _bgColor = QColor(255, 255, 255, 255);
+ _size = 100;
setWidth(_size);
setHeight(_size);
- connect(this,&FluQrCodeItem::textChanged,this,[=]{update();});
- connect(this,&FluQrCodeItem::colorChanged,this,[=]{update();});
- connect(this,&FluQrCodeItem::bgColorChanged,this,[=]{update();});
- connect(this,&FluQrCodeItem::sizeChanged,this,[=]{
+ connect(this, &FluQrCodeItem::textChanged, this, [=] { update(); });
+ connect(this, &FluQrCodeItem::colorChanged, this, [=] { update(); });
+ connect(this, &FluQrCodeItem::bgColorChanged, this, [=] { update(); });
+ connect(this, &FluQrCodeItem::sizeChanged, this, [=] {
setWidth(_size);
setHeight(_size);
update();
});
}
-
-void FluQrCodeItem::paint(QPainter* painter){
- if(_text.isEmpty()){
+void FluQrCodeItem::paint(QPainter *painter) {
+ if (_text.isEmpty()) {
return;
}
- if(_text.length()>1024){
+ if (_text.length() > 1024) {
return;
}
painter->save();
QRcode *qrcode = QRcode_encodeString(_text.toUtf8().constData(), 2, QR_ECLEVEL_Q, QR_MODE_8, 1);
- qint32 w = width();
- qint32 h = height();
+ auto w = qint32(width());
+ auto h = qint32(height());
qint32 qrcodeW = qrcode->width > 0 ? qrcode->width : 1;
- double scaleX = (double)w / (double)qrcodeW;
- double scaleY = (double)h / (double)qrcodeW;
+ double scaleX = (double) w / (double) qrcodeW;
+ double scaleY = (double) h / (double) qrcodeW;
QImage image = QImage(w, h, QImage::Format_ARGB32);
QPainter p(&image);
p.setBrush(_bgColor);
p.setPen(Qt::NoPen);
p.drawRect(0, 0, w, h);
p.setBrush(_color);
- for (qint32 y = 0; y < qrcodeW; y++)
- {
- for (qint32 x = 0; x < qrcodeW; x++)
- {
- unsigned char b = qrcode->data[y*qrcodeW + x];
- if (b & 0x01)
- {
- QRectF r(x * scaleX,y * scaleY, scaleX, scaleY);
+ for (qint32 y = 0; y < qrcodeW; y++) {
+ for (qint32 x = 0; x < qrcodeW; x++) {
+ unsigned char b = qrcode->data[y * qrcodeW + x];
+ if (b & 0x01) {
+ QRectF r(x * scaleX, y * scaleY, scaleX, scaleY);
p.drawRects(&r, 1);
}
}
diff --git a/src/FluQrCodeItem.h b/src/FluQrCodeItem.h
index 3e2a5814..0e665d61 100644
--- a/src/FluQrCodeItem.h
+++ b/src/FluQrCodeItem.h
@@ -1,5 +1,4 @@
-#ifndef FLUQRCODEITEM_H
-#define FLUQRCODEITEM_H
+#pragma once
#include
#include
@@ -9,17 +8,16 @@
/**
* @brief The FluQrCodeItem class
*/
-class FluQrCodeItem : public QQuickPaintedItem
-{
- Q_OBJECT
- Q_PROPERTY_AUTO(QString,text)
- Q_PROPERTY_AUTO(QColor,color)
- Q_PROPERTY_AUTO(QColor,bgColor)
- Q_PROPERTY_AUTO(int,size);
+class FluQrCodeItem : public QQuickPaintedItem {
+Q_OBJECT
+
+Q_PROPERTY_AUTO(QString, text)
+Q_PROPERTY_AUTO(QColor, color)
+Q_PROPERTY_AUTO(QColor, bgColor)
+Q_PROPERTY_AUTO(int, size);
QML_NAMED_ELEMENT(FluQrCodeItem)
public:
explicit FluQrCodeItem(QQuickItem *parent = nullptr);
- void paint(QPainter* painter) override;
-};
-#endif // FLUQRCODEITEM_H
+ void paint(QPainter *painter) override;
+};
\ No newline at end of file
diff --git a/src/FluRectangle.cpp b/src/FluRectangle.cpp
index be711054..b6e62246 100644
--- a/src/FluRectangle.cpp
+++ b/src/FluRectangle.cpp
@@ -1,14 +1,14 @@
#include "FluRectangle.h"
#include
-FluRectangle::FluRectangle(QQuickItem* parent) : QQuickPaintedItem(parent){
- color(QColor(255,255,255,255));
- radius({0,0,0,0});
- connect(this,&FluRectangle::colorChanged,this,[=]{update();});
- connect(this,&FluRectangle::radiusChanged,this,[=]{update();});
+FluRectangle::FluRectangle(QQuickItem *parent) : QQuickPaintedItem(parent) {
+ color(QColor(255, 255, 255, 255));
+ radius({0, 0, 0, 0});
+ connect(this, &FluRectangle::colorChanged, this, [=] { update(); });
+ connect(this, &FluRectangle::radiusChanged, this, [=] { update(); });
}
-void FluRectangle::paint(QPainter* painter){
+void FluRectangle::paint(QPainter *painter) {
painter->save();
painter->setRenderHint(QPainter::Antialiasing);
QPainterPath path;
@@ -22,6 +22,6 @@ void FluRectangle::paint(QPainter* painter){
path.arcTo(QRectF(QPointF(rect.bottomLeft() - QPointF(0, _radius[3] * 2)), QSize(_radius[3] * 2, _radius[3] * 2)), 180, 90);
path.lineTo(rect.bottomRight() - QPointF(_radius[2], 0));
path.arcTo(QRectF(QPointF(rect.bottomRight() - QPointF(_radius[2] * 2, _radius[2] * 2)), QSize(_radius[2] * 2, _radius[2] * 2)), 270, 90);
- painter->fillPath(path,_color);
+ painter->fillPath(path, _color);
painter->restore();
}
diff --git a/src/FluRectangle.h b/src/FluRectangle.h
index 7a505b43..7950d0a8 100644
--- a/src/FluRectangle.h
+++ b/src/FluRectangle.h
@@ -1,5 +1,4 @@
-#ifndef FLURECTANGLE_H
-#define FLURECTANGLE_H
+#pragma once
#include
#include
@@ -9,15 +8,13 @@
/**
* @brief The FluRectangle class
*/
-class FluRectangle : public QQuickPaintedItem
-{
- Q_OBJECT
- Q_PROPERTY_AUTO(QColor,color)
- Q_PROPERTY_AUTO(QList,radius)
+class FluRectangle : public QQuickPaintedItem {
+Q_OBJECT
+Q_PROPERTY_AUTO(QColor, color)
+Q_PROPERTY_AUTO(QList, radius)
QML_NAMED_ELEMENT(FluRectangle)
public:
explicit FluRectangle(QQuickItem *parent = nullptr);
- void paint(QPainter* painter) override;
-};
-#endif // FLURECTANGLE_H
+ void paint(QPainter *painter) override;
+};
\ No newline at end of file
diff --git a/src/FluTableSortProxyModel.cpp b/src/FluTableSortProxyModel.cpp
index 4101b630..644f652a 100644
--- a/src/FluTableSortProxyModel.cpp
+++ b/src/FluTableSortProxyModel.cpp
@@ -2,74 +2,72 @@
#include
-FluTableSortProxyModel::FluTableSortProxyModel(QSortFilterProxyModel *parent)
- : QSortFilterProxyModel {parent}
-{
+FluTableSortProxyModel::FluTableSortProxyModel(QSortFilterProxyModel *parent) : QSortFilterProxyModel{parent} {
_model = nullptr;
- connect(this,&FluTableSortProxyModel::modelChanged,this,[=]{
+ connect(this, &FluTableSortProxyModel::modelChanged, this, [=] {
setSourceModel(this->model());
});
}
-bool FluTableSortProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const{
+bool FluTableSortProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const {
QJSValue filter = _filter;
- if(filter.isUndefined()){
+ if (filter.isUndefined()) {
return true;
}
QJSValueList data;
- data<_comparator = comparator;
- if(sortOrder()==Qt::AscendingOrder){
- sort(column,Qt::DescendingOrder);
- }else{
- sort(column,Qt::AscendingOrder);
+ if (sortOrder() == Qt::AscendingOrder) {
+ sort(column, Qt::DescendingOrder);
+ } else {
+ sort(column, Qt::AscendingOrder);
}
}
-void FluTableSortProxyModel::setFilter(QJSValue filter){
+[[maybe_unused]] void FluTableSortProxyModel::setFilter(const QJSValue &filter) {
this->_filter = filter;
invalidateFilter();
}
-QVariant FluTableSortProxyModel::getRow(int rowIndex){
+[[maybe_unused]] QVariant FluTableSortProxyModel::getRow(int rowIndex) {
QVariant result;
- QMetaObject::invokeMethod(_model, "getRow",Q_RETURN_ARG(QVariant, result),Q_ARG(int, mapToSource(index(rowIndex,0)).row()));
+ QMetaObject::invokeMethod(_model, "getRow", Q_RETURN_ARG(QVariant, result), Q_ARG(int, mapToSource(index(rowIndex, 0)).row()));
return result;
}
-void FluTableSortProxyModel::setRow(int rowIndex,QVariant val){
- QMetaObject::invokeMethod(_model, "setRow",Q_ARG(int, mapToSource(index(rowIndex,0)).row()),Q_ARG(QVariant,val));
+[[maybe_unused]] void FluTableSortProxyModel::setRow(int rowIndex, const QVariant &val) {
+ QMetaObject::invokeMethod(_model, "setRow", Q_ARG(int, mapToSource(index(rowIndex, 0)).row()), Q_ARG(QVariant, val));
}
-void FluTableSortProxyModel::removeRow(int rowIndex,int rows){
- QMetaObject::invokeMethod(_model, "removeRow",Q_ARG(int, mapToSource(index(rowIndex,0)).row()),Q_ARG(int,rows));
+[[maybe_unused]] void FluTableSortProxyModel::removeRow(int rowIndex, int rows) {
+ QMetaObject::invokeMethod(_model, "removeRow", Q_ARG(int, mapToSource(index(rowIndex, 0)).row()), Q_ARG(int, rows));
}
diff --git a/src/FluTableSortProxyModel.h b/src/FluTableSortProxyModel.h
index baa1b84c..0cf27849 100644
--- a/src/FluTableSortProxyModel.h
+++ b/src/FluTableSortProxyModel.h
@@ -1,5 +1,4 @@
-#ifndef FLUTABLESORTPROXYMODEL_H
-#define FLUTABLESORTPROXYMODEL_H
+#pragma once
#include
#include
@@ -7,24 +6,30 @@
#include
#include "stdafx.h"
-class FluTableSortProxyModel : public QSortFilterProxyModel
-{
- Q_OBJECT
- Q_PROPERTY_AUTO(QAbstractTableModel*,model)
+class FluTableSortProxyModel : public QSortFilterProxyModel {
+Q_OBJECT
+Q_PROPERTY_AUTO_P(QAbstractTableModel*, model)
QML_NAMED_ELEMENT(FluTableSortProxyModel)
public:
explicit FluTableSortProxyModel(QSortFilterProxyModel *parent = nullptr);
+
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
+
bool filterAcceptsColumn(int sourceColumn, const QModelIndex &sourceParent) const override;
+
bool lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const override;
- Q_INVOKABLE QVariant getRow(int rowIndex);
- Q_INVOKABLE void setRow(int rowIndex,QVariant val);
- Q_INVOKABLE void removeRow(int rowIndex,int rows);
- Q_INVOKABLE void setComparator(QJSValue comparator);
- Q_INVOKABLE void setFilter(QJSValue filter);
+
+ Q_INVOKABLE [[maybe_unused]] QVariant getRow(int rowIndex);
+
+ Q_INVOKABLE [[maybe_unused]] void setRow(int rowIndex, const QVariant &val);
+
+ Q_INVOKABLE [[maybe_unused]] void removeRow(int rowIndex, int rows);
+
+ Q_INVOKABLE [[maybe_unused]] [[maybe_unused]] void setComparator(const QJSValue &comparator);
+
+ Q_INVOKABLE [[maybe_unused]] void setFilter(const QJSValue &filter);
+
private:
QJSValue _filter;
QJSValue _comparator;
-};
-
-#endif // FLUTABLESORTPROXYMODEL_H
+};
\ No newline at end of file
diff --git a/src/FluTextStyle.cpp b/src/FluTextStyle.cpp
index 7e81de1a..1d453716 100644
--- a/src/FluTextStyle.cpp
+++ b/src/FluTextStyle.cpp
@@ -1,6 +1,6 @@
#include "FluTextStyle.h"
-FluTextStyle::FluTextStyle(QObject *parent):QObject{parent}{
+FluTextStyle::FluTextStyle(QObject *parent) : QObject{parent} {
_family = QFont().defaultFamily();
#ifdef Q_OS_WIN
_family = "微软雅黑";
diff --git a/src/FluTextStyle.h b/src/FluTextStyle.h
index 8cbabe45..defa9d1e 100644
--- a/src/FluTextStyle.h
+++ b/src/FluTextStyle.h
@@ -1,5 +1,4 @@
-#ifndef FLUTEXTSTYLE_H
-#define FLUTEXTSTYLE_H
+#pragma once
#include
#include
@@ -10,25 +9,25 @@
/**
* @brief The FluTextStyle class
*/
-class FluTextStyle : public QObject
-{
- Q_OBJECT
+class FluTextStyle : public QObject {
+Q_OBJECT
public:
- Q_PROPERTY_AUTO(QString,family)
- Q_PROPERTY_AUTO(QFont,Caption);
- Q_PROPERTY_AUTO(QFont,Body);
- Q_PROPERTY_AUTO(QFont,BodyStrong);
- Q_PROPERTY_AUTO(QFont,Subtitle);
- Q_PROPERTY_AUTO(QFont,Title);
- Q_PROPERTY_AUTO(QFont,TitleLarge);
- Q_PROPERTY_AUTO(QFont,Display);
+Q_PROPERTY_AUTO(QString, family)
+Q_PROPERTY_AUTO(QFont, Caption);
+Q_PROPERTY_AUTO(QFont, Body);
+Q_PROPERTY_AUTO(QFont, BodyStrong);
+Q_PROPERTY_AUTO(QFont, Subtitle);
+Q_PROPERTY_AUTO(QFont, Title);
+Q_PROPERTY_AUTO(QFont, TitleLarge);
+Q_PROPERTY_AUTO(QFont, Display);
QML_NAMED_ELEMENT(FluTextStyle)
QML_SINGLETON
+
private:
explicit FluTextStyle(QObject *parent = nullptr);
-public:
- SINGLETON(FluTextStyle)
- static FluTextStyle *create(QQmlEngine *qmlEngine, QJSEngine *jsEngine){return getInstance();}
-};
-#endif // FLUTEXTSTYLE_H
+public:
+SINGLETON(FluTextStyle)
+
+ static FluTextStyle *create(QQmlEngine *, QJSEngine *) { return getInstance(); }
+};
\ No newline at end of file
diff --git a/src/FluTheme.cpp b/src/FluTheme.cpp
index 7e3c75af..45ece456 100644
--- a/src/FluTheme.cpp
+++ b/src/FluTheme.cpp
@@ -5,40 +5,45 @@
#include "Def.h"
#include "FluColors.h"
-FluTheme::FluTheme(QObject *parent):QObject{parent}{
- connect(this,&FluTheme::darkModeChanged,this,[=]{
+bool systemDark() {
+ QPalette palette = QGuiApplication::palette();
+ QColor color = palette.color(QPalette::Window).rgb();
+ return color.red() * 0.2126 + color.green() * 0.7152 + color.blue() * 0.0722 <= 255.0f / 2;
+}
+
+FluTheme::FluTheme(QObject *parent) : QObject{parent} {
+ _accentColor = FluColors::getInstance()->Blue();
+ _darkMode = FluThemeType::DarkMode::Light;
+ _nativeText = false;
+ _animationEnabled = true;
+ _systemDark = systemDark();
+ QGuiApplication::instance()->installEventFilter(this);
+ connect(this, &FluTheme::darkModeChanged, this, [=] {
Q_EMIT darkChanged();
});
- connect(this,&FluTheme::darkChanged,this,[=]{refreshColors();});
- connect(this,&FluTheme::accentColorChanged,this,[=]{refreshColors();});
- accentColor(FluColors::getInstance()->Blue());
- darkMode(FluThemeType::DarkMode::Light);
- nativeText(false);
- animationEnabled(true);
- _systemDark = systemDark();
- qApp->installEventFilter(this);
+ connect(this, &FluTheme::darkChanged, this, [=] { refreshColors(); });
+ connect(this, &FluTheme::accentColorChanged, this, [=] { refreshColors(); });
+ refreshColors();
}
-void FluTheme::refreshColors(){
+void FluTheme::refreshColors() {
auto isDark = dark();
primaryColor(isDark ? _accentColor->lighter() : _accentColor->dark());
- backgroundColor(isDark ? QColor(0,0,0,255) : QColor(255,255,255,255));
- dividerColor(isDark ? QColor(80,80,80,255) : QColor(210,210,210,255));
- windowBackgroundColor(isDark ? QColor(32,32,32,255) : QColor(237,237,237,255));
- windowActiveBackgroundColor(isDark ? QColor(26,26,26,255) : QColor(243,243,243,255));
- fontPrimaryColor(isDark ? QColor(248,248,248,255) : QColor(7,7,7,255));
- fontSecondaryColor(isDark ? QColor(222,222,222,255) : QColor(102,102,102,255));
- fontTertiaryColor(isDark ? QColor(200,200,200,255) : QColor(153,153,153,255));
- itemNormalColor(isDark ? QColor(255,255,255,0) : QColor(0,0,0,0));
- itemHoverColor(isDark ? QColor(255,255,255,255*0.06) : QColor(0,0,0,255*0.03));
- itemPressColor(isDark ? QColor(255,255,255,255*0.09) : QColor(0,0,0,255*0.06));
- itemCheckColor(isDark ? QColor(255,255,255,255*0.12) : QColor(0,0,0,255*0.09));
+ backgroundColor(isDark ? QColor(0, 0, 0, 255) : QColor(255, 255, 255, 255));
+ dividerColor(isDark ? QColor(80, 80, 80, 255) : QColor(210, 210, 210, 255));
+ windowBackgroundColor(isDark ? QColor(32, 32, 32, 255) : QColor(237, 237, 237, 255));
+ windowActiveBackgroundColor(isDark ? QColor(26, 26, 26, 255) : QColor(243, 243, 243, 255));
+ fontPrimaryColor(isDark ? QColor(248, 248, 248, 255) : QColor(7, 7, 7, 255));
+ fontSecondaryColor(isDark ? QColor(222, 222, 222, 255) : QColor(102, 102, 102, 255));
+ fontTertiaryColor(isDark ? QColor(200, 200, 200, 255) : QColor(153, 153, 153, 255));
+ itemNormalColor(isDark ? QColor(255, 255, 255, 0) : QColor(0, 0, 0, 0));
+ itemHoverColor(isDark ? QColor(255, 255, 255, qRound(255 * 0.06)) : QColor(0, 0, 0, qRound(255 * 0.03)));
+ itemPressColor(isDark ? QColor(255, 255, 255, qRound(255 * 0.09)) : QColor(0, 0, 0, qRound(255 * 0.06)));
+ itemCheckColor(isDark ? QColor(255, 255, 255, qRound(255 * 0.12)) : QColor(0, 0, 0, qRound(255 * 0.09)));
}
-bool FluTheme::eventFilter(QObject *obj, QEvent *event){
- Q_UNUSED(obj);
- if (event->type() == QEvent::ApplicationPaletteChange || event->type() == QEvent::ThemeChange)
- {
+bool FluTheme::eventFilter(QObject *, QEvent *event) {
+ if (event->type() == QEvent::ApplicationPaletteChange || event->type() == QEvent::ThemeChange) {
_systemDark = systemDark();
Q_EMIT darkChanged();
event->accept();
@@ -47,36 +52,28 @@ bool FluTheme::eventFilter(QObject *obj, QEvent *event){
return false;
}
-QJsonArray FluTheme::awesomeList(const QString& keyword){
+[[maybe_unused]] QJsonArray FluTheme::awesomeList(const QString &keyword) {
QJsonArray arr;
QMetaEnum enumType = Fluent_Awesome::staticMetaObject.enumerator(Fluent_Awesome::staticMetaObject.indexOfEnumerator("Fluent_AwesomeType"));
- for(int i=0; i < enumType.keyCount(); ++i){
+ for (int i = 0; i <= enumType.keyCount() - 1; ++i) {
QString name = enumType.key(i);
int icon = enumType.value(i);
- if(keyword.isEmpty() || name.contains(keyword)){
+ if (keyword.isEmpty() || name.contains(keyword)) {
QJsonObject obj;
- obj.insert("name",name);
- obj.insert("icon",icon);
+ obj.insert("name", name);
+ obj.insert("icon", icon);
arr.append(obj);
}
}
return arr;
}
-bool FluTheme::systemDark(){
- QPalette palette = qApp->palette();
- QColor color = palette.color(QPalette::Window).rgb();
- return !(color.red() * 0.2126 + color.green() * 0.7152 + color.blue() * 0.0722 > 255 / 2);
-}
-
-bool FluTheme::dark(){
- if(_darkMode == FluThemeType::DarkMode::Dark){
+bool FluTheme::dark() const {
+ if (_darkMode == FluThemeType::DarkMode::Dark) {
return true;
- }else if(_darkMode == FluThemeType::DarkMode::Light){
- return false;
- }else if(_darkMode == FluThemeType::DarkMode::System){
+ } else if (_darkMode == FluThemeType::DarkMode::System) {
return _systemDark;
- }else{
+ } else {
return false;
}
}
diff --git a/src/FluTheme.h b/src/FluTheme.h
index b36da840..6b5cf5bc 100644
--- a/src/FluTheme.h
+++ b/src/FluTheme.h
@@ -13,39 +13,46 @@
/**
* @brief The FluTheme class
*/
-class FluTheme : public QObject
-{
- Q_OBJECT
+class FluTheme : public QObject {
+Q_OBJECT
Q_PROPERTY(bool dark READ dark NOTIFY darkChanged)
- Q_PROPERTY_AUTO(FluAccentColor*,accentColor);
- Q_PROPERTY_AUTO(QColor,primaryColor);
- Q_PROPERTY_AUTO(QColor,backgroundColor);
- Q_PROPERTY_AUTO(QColor,dividerColor);
- Q_PROPERTY_AUTO(QColor,windowBackgroundColor);
- Q_PROPERTY_AUTO(QColor,windowActiveBackgroundColor);
- Q_PROPERTY_AUTO(QColor,fontPrimaryColor);
- Q_PROPERTY_AUTO(QColor,fontSecondaryColor);
- Q_PROPERTY_AUTO(QColor,fontTertiaryColor);
- Q_PROPERTY_AUTO(QColor,itemNormalColor);
- Q_PROPERTY_AUTO(QColor,itemHoverColor);
- Q_PROPERTY_AUTO(QColor,itemPressColor);
- Q_PROPERTY_AUTO(QColor,itemCheckColor);
- Q_PROPERTY_AUTO(int,darkMode);
- Q_PROPERTY_AUTO(bool,nativeText);
- Q_PROPERTY_AUTO(bool,animationEnabled);
+Q_PROPERTY_AUTO_P(FluAccentColor*, accentColor);
+Q_PROPERTY_AUTO(QColor, primaryColor);
+Q_PROPERTY_AUTO(QColor, backgroundColor);
+Q_PROPERTY_AUTO(QColor, dividerColor);
+Q_PROPERTY_AUTO(QColor, windowBackgroundColor);
+Q_PROPERTY_AUTO(QColor, windowActiveBackgroundColor);
+Q_PROPERTY_AUTO(QColor, fontPrimaryColor);
+Q_PROPERTY_AUTO(QColor, fontSecondaryColor);
+Q_PROPERTY_AUTO(QColor, fontTertiaryColor);
+Q_PROPERTY_AUTO(QColor, itemNormalColor);
+Q_PROPERTY_AUTO(QColor, itemHoverColor);
+Q_PROPERTY_AUTO(QColor, itemPressColor);
+Q_PROPERTY_AUTO(QColor, itemCheckColor);
+Q_PROPERTY_AUTO(int, darkMode);
+Q_PROPERTY_AUTO(bool, nativeText);
+Q_PROPERTY_AUTO(bool, animationEnabled);
QML_NAMED_ELEMENT(FluTheme)
QML_SINGLETON
+
private:
explicit FluTheme(QObject *parent = nullptr);
- bool eventFilter(QObject *obj, QEvent *event);
- bool systemDark();
+
+ bool eventFilter(QObject *obj, QEvent *event) override;
+
void refreshColors();
+
public:
- SINGLETON(FluTheme)
- Q_INVOKABLE QJsonArray awesomeList(const QString& keyword = "");
+SINGLETON(FluTheme)
+
+ Q_INVOKABLE [[maybe_unused]] static QJsonArray awesomeList(const QString &keyword = "");
+
Q_SIGNAL void darkChanged();
- static FluTheme *create(QQmlEngine *qmlEngine, QJSEngine *jsEngine){return getInstance();}
- bool dark();
+
+ static FluTheme *create(QQmlEngine *, QJSEngine *) { return getInstance(); }
+
+ bool dark() const;
+
private:
bool _systemDark;
};
diff --git a/src/FluTools.cpp b/src/FluTools.cpp
index 47473811..22d2c85d 100644
--- a/src/FluTools.cpp
+++ b/src/FluTools.cpp
@@ -1,3 +1,7 @@
+#pragma clang diagnostic push
+#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection"
+#pragma ide diagnostic ignored "readability-convert-member-functions-to-static"
+
#include "FluTools.h"
#include
@@ -16,19 +20,19 @@
#include
#include
-FluTools::FluTools(QObject *parent):QObject{parent}{
+FluTools::FluTools(QObject *parent) : QObject{parent} {
}
-void FluTools::clipText(const QString& text){
+void FluTools::clipText(const QString &text) {
QGuiApplication::clipboard()->setText(text);
}
-QString FluTools::uuid(){
+QString FluTools::uuid() {
return QUuid::createUuid().toString().remove('-').remove('{').remove('}');
}
-QString FluTools::readFile(const QString &fileName){
+QString FluTools::readFile(const QString &fileName) {
QString content;
QFile file(fileName);
if (file.open(QIODevice::ReadOnly)) {
@@ -38,7 +42,7 @@ QString FluTools::readFile(const QString &fileName){
return content;
}
-bool FluTools::isMacos(){
+bool FluTools::isMacos() {
#if defined(Q_OS_MACOS)
return true;
#else
@@ -46,7 +50,7 @@ bool FluTools::isMacos(){
#endif
}
-bool FluTools::isLinux(){
+bool FluTools::isLinux() {
#if defined(Q_OS_LINUX)
return true;
#else
@@ -54,7 +58,7 @@ bool FluTools::isLinux(){
#endif
}
-bool FluTools::isWin(){
+bool FluTools::isWin() {
#if defined(Q_OS_WIN)
return true;
#else
@@ -62,95 +66,94 @@ bool FluTools::isWin(){
#endif
}
-int FluTools::qtMajor(){
+int FluTools::qtMajor() {
const QString qtVersion = QString::fromLatin1(qVersion());
const QStringList versionParts = qtVersion.split('.');
return versionParts[0].toInt();
}
-int FluTools::qtMinor(){
+int FluTools::qtMinor() {
const QString qtVersion = QString::fromLatin1(qVersion());
const QStringList versionParts = qtVersion.split('.');
return versionParts[1].toInt();
}
-void FluTools::setQuitOnLastWindowClosed(bool val){
- qApp->setQuitOnLastWindowClosed(val);
+void FluTools::setQuitOnLastWindowClosed(bool val) {
+ QGuiApplication::setQuitOnLastWindowClosed(val);
}
-void FluTools::setOverrideCursor(Qt::CursorShape shape){
- qApp->setOverrideCursor(QCursor(shape));
+void FluTools::setOverrideCursor(Qt::CursorShape shape) {
+ QGuiApplication::setOverrideCursor(QCursor(shape));
}
-void FluTools::restoreOverrideCursor(){
- qApp->restoreOverrideCursor();
+void FluTools::restoreOverrideCursor() {
+ QGuiApplication::restoreOverrideCursor();
}
-void FluTools::deleteLater(QObject *p){
- if(p){
+void FluTools::deleteLater(QObject *p) {
+ if (p) {
p->deleteLater();
- p = nullptr;
}
}
-QString FluTools::toLocalPath(const QUrl& url){
+QString FluTools::toLocalPath(const QUrl &url) {
return url.toLocalFile();
}
-QString FluTools::getFileNameByUrl(const QUrl& url){
+QString FluTools::getFileNameByUrl(const QUrl &url) {
return QFileInfo(url.toLocalFile()).fileName();
}
-QString FluTools::html2PlantText(const QString& html){
+QString FluTools::html2PlantText(const QString &html) {
QTextDocument textDocument;
textDocument.setHtml(html);
return textDocument.toPlainText();
}
-QRect FluTools::getVirtualGeometry(){
- return qApp->primaryScreen()->virtualGeometry();
+QRect FluTools::getVirtualGeometry() {
+ return QGuiApplication::primaryScreen()->virtualGeometry();
}
-QString FluTools::getApplicationDirPath(){
- return qApp->applicationDirPath();
+QString FluTools::getApplicationDirPath() {
+ return QGuiApplication::applicationDirPath();
}
-QUrl FluTools::getUrlByFilePath(const QString& path){
+QUrl FluTools::getUrlByFilePath(const QString &path) {
return QUrl::fromLocalFile(path);
}
-QColor FluTools::withOpacity(const QColor& color,qreal opacity){
+QColor FluTools::withOpacity(const QColor &color, qreal opacity) {
int alpha = qRound(opacity * 255) & 0xff;
return QColor::fromRgba((alpha << 24) | (color.rgba() & 0xffffff));
}
-QString FluTools::md5(QString text){
+QString FluTools::md5(const QString &text) {
return QCryptographicHash::hash(text.toUtf8(), QCryptographicHash::Md5).toHex();
}
-QString FluTools::toBase64(QString text){
+QString FluTools::toBase64(const QString &text) {
return text.toUtf8().toBase64();
}
-QString FluTools::fromBase64(QString text){
+QString FluTools::fromBase64(const QString &text) {
return QByteArray::fromBase64(text.toUtf8());
}
-bool FluTools::removeDir(QString dirPath){
+bool FluTools::removeDir(const QString &dirPath) {
QDir qDir(dirPath);
return qDir.removeRecursively();
}
-bool FluTools::removeFile(QString filePath){
+bool FluTools::removeFile(const QString &filePath) {
QFile file(filePath);
return file.remove();
}
-QString FluTools::sha256(QString text){
+QString FluTools::sha256(const QString &text) {
return QCryptographicHash::hash(text.toUtf8(), QCryptographicHash::Sha256).toHex();
}
-void FluTools::showFileInFolder(QString path){
+void FluTools::showFileInFolder(const QString &path) {
#if defined(Q_OS_WIN)
QProcess::startDetached("explorer.exe", {"/select,", QDir::toNativeSeparators(path)});
#endif
@@ -166,29 +169,29 @@ void FluTools::showFileInFolder(QString path){
#endif
}
-bool FluTools::isSoftware(){
+bool FluTools::isSoftware() {
return QQuickWindow::sceneGraphBackend() == "software";
}
-QPoint FluTools::cursorPos(){
+QPoint FluTools::cursorPos() {
return QCursor::pos();
}
-qint64 FluTools::currentTimestamp(){
+qint64 FluTools::currentTimestamp() {
return QDateTime::currentMSecsSinceEpoch();
}
-QIcon FluTools::windowIcon(){
+QIcon FluTools::windowIcon() {
return QGuiApplication::windowIcon();
}
-int FluTools::cursorScreenIndex(){
+int FluTools::cursorScreenIndex() {
int screenIndex = 0;
- int screenCount = qApp->screens().count();
+ int screenCount = QGuiApplication::screens().count();
if (screenCount > 1) {
QPoint pos = QCursor::pos();
- for (int i = 0; i < screenCount; ++i) {
- if (qApp->screens().at(i)->geometry().contains(pos)) {
+ for (int i = 0; i <= screenCount - 1; ++i) {
+ if (QGuiApplication::screens().at(i)->geometry().contains(pos)) {
screenIndex = i;
break;
}
@@ -197,9 +200,9 @@ int FluTools::cursorScreenIndex(){
return screenIndex;
}
-int FluTools::windowBuildNumber(){
+int FluTools::windowBuildNumber() {
#if defined(Q_OS_WIN)
- QSettings regKey {QString::fromUtf8("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"), QSettings::NativeFormat};
+ QSettings regKey{QString::fromUtf8(R"(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion)"), QSettings::NativeFormat};
if (regKey.contains(QString::fromUtf8("CurrentBuildNumber"))) {
auto buildNumber = regKey.value(QString::fromUtf8("CurrentBuildNumber")).toInt();
return buildNumber;
@@ -208,40 +211,42 @@ int FluTools::windowBuildNumber(){
return -1;
}
-bool FluTools::isWindows11OrGreater(){
+bool FluTools::isWindows11OrGreater() {
static QVariant var;
- if(var.isNull()){
+ if (var.isNull()) {
#if defined(Q_OS_WIN)
auto buildNumber = windowBuildNumber();
- if(buildNumber>=22000){
+ if (buildNumber >= 22000) {
var = QVariant::fromValue(true);
return true;
}
#endif
var = QVariant::fromValue(false);
- return false;
- }else{
+ return false;
+ } else {
return var.toBool();
}
}
-bool FluTools::isWindows10OrGreater(){
+bool FluTools::isWindows10OrGreater() {
static QVariant var;
- if(var.isNull()){
+ if (var.isNull()) {
#if defined(Q_OS_WIN)
auto buildNumber = windowBuildNumber();
- if(buildNumber>=10240){
+ if (buildNumber >= 10240) {
var = QVariant::fromValue(true);
return true;
}
#endif
var = QVariant::fromValue(false);
- return false;
- }else{
+ return false;
+ } else {
return var.toBool();
}
}
-QRect FluTools::desktopAvailableGeometry(QQuickWindow* window){
+QRect FluTools::desktopAvailableGeometry(QQuickWindow *window) {
return window->screen()->availableGeometry();
}
+
+#pragma clang diagnostic pop
\ No newline at end of file
diff --git a/src/FluTools.h b/src/FluTools.h
index 60b8b3a3..0b97da3a 100644
--- a/src/FluTools.h
+++ b/src/FluTools.h
@@ -1,5 +1,6 @@
-#ifndef FLUTOOLS_H
-#define FLUTOOLS_H
+#pragma clang diagnostic push
+#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection"
+#pragma once
#include
#include
@@ -11,51 +12,88 @@
/**
* @brief The FluTools class
*/
-class FluTools : public QObject
-{
- Q_OBJECT
+class FluTools : public QObject {
+Q_OBJECT
QML_NAMED_ELEMENT(FluTools)
QML_SINGLETON
+
private:
explicit FluTools(QObject *parent = nullptr);
+
public:
- SINGLETON(FluTools)
- static FluTools *create(QQmlEngine *qmlEngine, QJSEngine *jsEngine){return getInstance();}
+SINGLETON(FluTools)
+
+ static FluTools *create(QQmlEngine *, QJSEngine *) { return getInstance(); }
+
Q_INVOKABLE int qtMajor();
+
Q_INVOKABLE int qtMinor();
+
Q_INVOKABLE bool isMacos();
+
Q_INVOKABLE bool isLinux();
+
Q_INVOKABLE bool isWin();
- Q_INVOKABLE void clipText(const QString& text);
+
+ Q_INVOKABLE void clipText(const QString &text);
+
Q_INVOKABLE QString uuid();
- Q_INVOKABLE QString readFile(const QString& fileName);
+
+ Q_INVOKABLE QString readFile(const QString &fileName);
+
Q_INVOKABLE void setQuitOnLastWindowClosed(bool val);
+
Q_INVOKABLE void setOverrideCursor(Qt::CursorShape shape);
+
Q_INVOKABLE void restoreOverrideCursor();
- Q_INVOKABLE QString html2PlantText(const QString& html);
- Q_INVOKABLE QString toLocalPath(const QUrl& url);
+
+ Q_INVOKABLE QString html2PlantText(const QString &html);
+
+ Q_INVOKABLE QString toLocalPath(const QUrl &url);
+
Q_INVOKABLE void deleteLater(QObject *p);
- Q_INVOKABLE QString getFileNameByUrl(const QUrl& url);
+
+ Q_INVOKABLE QString getFileNameByUrl(const QUrl &url);
+
Q_INVOKABLE QRect getVirtualGeometry();
+
Q_INVOKABLE QString getApplicationDirPath();
- Q_INVOKABLE QUrl getUrlByFilePath(const QString& path);
- Q_INVOKABLE QColor withOpacity(const QColor&,qreal alpha);
- Q_INVOKABLE QString md5(QString text);
- Q_INVOKABLE QString sha256(QString text);
- Q_INVOKABLE QString toBase64(QString text);
- Q_INVOKABLE QString fromBase64(QString text);
- Q_INVOKABLE bool removeDir(QString dirPath);
- Q_INVOKABLE bool removeFile(QString filePath);
- Q_INVOKABLE void showFileInFolder(QString path);
+
+ Q_INVOKABLE QUrl getUrlByFilePath(const QString &path);
+
+ Q_INVOKABLE QColor withOpacity(const QColor &, qreal alpha);
+
+ Q_INVOKABLE QString md5(const QString &text);
+
+ Q_INVOKABLE QString sha256(const QString &text);
+
+ Q_INVOKABLE QString toBase64(const QString &text);
+
+ Q_INVOKABLE QString fromBase64(const QString &text);
+
+ Q_INVOKABLE bool removeDir(const QString &dirPath);
+
+ Q_INVOKABLE bool removeFile(const QString &filePath);
+
+ Q_INVOKABLE void showFileInFolder(const QString &path);
+
Q_INVOKABLE bool isSoftware();
+
Q_INVOKABLE qint64 currentTimestamp();
+
Q_INVOKABLE QPoint cursorPos();
+
Q_INVOKABLE QIcon windowIcon();
+
Q_INVOKABLE int cursorScreenIndex();
+
Q_INVOKABLE int windowBuildNumber();
+
Q_INVOKABLE bool isWindows11OrGreater();
+
Q_INVOKABLE bool isWindows10OrGreater();
- Q_INVOKABLE QRect desktopAvailableGeometry(QQuickWindow* window);
+
+ Q_INVOKABLE QRect desktopAvailableGeometry(QQuickWindow *window);
};
-#endif // FLUTOOLS_H
+#pragma clang diagnostic pop
\ No newline at end of file
diff --git a/src/FluTreeModel.cpp b/src/FluTreeModel.cpp
index d2c3b5b9..fd94b58d 100644
--- a/src/FluTreeModel.cpp
+++ b/src/FluTreeModel.cpp
@@ -1,75 +1,80 @@
+#pragma clang diagnostic push
+#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection"
+#pragma ide diagnostic ignored "google-default-arguments"
+
#include "FluTreeModel.h"
#include
+#include
-FluTreeNode::FluTreeNode(QObject *parent): QObject{parent}{
+FluTreeNode::FluTreeNode(QObject *parent) : QObject{parent} {
}
-FluTreeModel::FluTreeModel(QObject *parent): QAbstractItemModel{parent}{
- dataSourceSize(0);
+FluTreeModel::FluTreeModel(QObject *parent) : QAbstractItemModel{parent} {
+ _dataSourceSize = 0;
}
-QModelIndex FluTreeModel::parent(const QModelIndex &child) const{
- return QModelIndex();
+QModelIndex FluTreeModel::parent(const QModelIndex &child) const {
+ return {};
}
-QModelIndex FluTreeModel::index(int row, int column,const QModelIndex &parent) const{
+QModelIndex FluTreeModel::index(int row, int column, const QModelIndex &parent) const {
if (!hasIndex(row, column, parent) || parent.isValid())
- return QModelIndex();
+ return {};
return createIndex(row, column, _rows.at(row));
}
int FluTreeModel::rowCount(const QModelIndex &parent) const {
return _rows.count();
-};
+}
int FluTreeModel::columnCount(const QModelIndex &parent) const {
return this->_columnSource.size();
-};
+}
QVariant FluTreeModel::data(const QModelIndex &index, int role) const {
switch (role) {
- case TreeModelRoles::RowModel:
- return QVariant::fromValue(_rows.at(index.row()));
- case TreeModelRoles::ColumnModel:
- return QVariant::fromValue(_columnSource.at(index.column()));
- default:
- break;
+ case TreeModelRoles::RowModel:
+ return QVariant::fromValue(_rows.at(index.row()));
+ case TreeModelRoles::ColumnModel:
+ return QVariant::fromValue(_columnSource.at(index.column()));
+ default:
+ break;
}
- return QVariant();
-};
+ return {};
+}
QHash FluTreeModel::roleNames() const {
return {
- {TreeModelRoles::RowModel, "rowModel"},
- {TreeModelRoles::ColumnModel, "columnModel"}
+ {TreeModelRoles::RowModel, "rowModel"},
+ {TreeModelRoles::ColumnModel, "columnModel"}
};
-};
+}
-void FluTreeModel::setData(QList data){
+void FluTreeModel::setData(QList data) {
beginResetModel();
- _rows = data;
+ _rows = std::move(data);
endResetModel();
}
-void FluTreeModel::removeRows(int row,int count){
- if (row < 0 || row + count > _rows.size() || count==0)
+void FluTreeModel::removeRows(int row, int count) {
+ if (row < 0 || row + count > _rows.size() || count == 0)
return;
- beginRemoveRows(QModelIndex(),row, row + count - 1);
- QList firstPart = _rows.mid(0,row);
- QList secondPart = _rows.mid(row + count);
+ beginRemoveRows(QModelIndex(), row, row + count - 1);
+ QList firstPart = _rows.mid(0, row);
+ QList secondPart = _rows.mid(row + count);
_rows.clear();
_rows.append(firstPart);
_rows.append(secondPart);
endRemoveRows();
}
-void FluTreeModel::insertRows(int row,QList data){
- if (row < 0 || row > _rows.size() || data.size() == 0)
- return;;
+void FluTreeModel::insertRows(int row, const QList &data) {
+ if (row < 0 || row > _rows.size() || data.empty())
+ return;
beginInsertRows(QModelIndex(), row, row + data.size() - 1);
- QList firstPart = _rows.mid(0, row);
- QList secondPart = _rows.mid(row);
+ QList firstPart = _rows.mid(0, row);
+ QList secondPart = _rows.mid(row);
_rows.clear();
_rows.append(firstPart);
_rows.append(data);
@@ -77,83 +82,83 @@ void FluTreeModel::insertRows(int row,QList data){
endInsertRows();
}
-QObject* FluTreeModel::getRow(int row){
+QObject *FluTreeModel::getRow(int row) {
return _rows.at(row);
}
-void FluTreeModel::setRow(int row,QVariantMap data){
- _rows.at(row)->_data = data;
- Q_EMIT dataChanged(index(row,0),index(row,columnCount()-1));
+void FluTreeModel::setRow(int row, QVariantMap data) {
+ _rows.at(row)->_data = std::move(data);
+ Q_EMIT dataChanged(index(row, 0), index(row, columnCount() - 1));
}
-void FluTreeModel::checkRow(int row,bool checked){
+void FluTreeModel::checkRow(int row, bool checked) {
auto itemData = _rows.at(row);
- if(itemData->hasChildren()){
- QList stack = itemData->_children;
+ if (itemData->hasChildren()) {
+ QList stack = itemData->_children;
std::reverse(stack.begin(), stack.end());
while (stack.count() > 0) {
- auto item = stack.at(stack.count()-1);
+ auto item = stack.at(stack.count() - 1);
stack.pop_back();
- if(!item->hasChildren()){
+ if (!item->hasChildren()) {
item->_checked = checked;
}
- QList children = item->_children;
- if(!children.isEmpty()){
+ QList children = item->_children;
+ if (!children.isEmpty()) {
std::reverse(children.begin(), children.end());
- foreach (auto c, children) {
- stack.append(c);
- }
+ foreach (auto c, children) {
+ stack.append(c);
+ }
}
}
- }else{
- if(itemData->_checked == checked){
+ } else {
+ if (itemData->_checked == checked) {
return;
}
itemData->_checked = checked;
}
- Q_EMIT dataChanged(index(0,0),index(rowCount()-1,0));
- QList data;
- foreach (auto item, _dataSource) {
- if(!item->hasChildren()){
- if(item->_checked){
- data.append(item);
+ Q_EMIT dataChanged(index(0, 0), index(rowCount() - 1, 0));
+ QList data;
+ foreach (auto item, _dataSource) {
+ if (!item->hasChildren()) {
+ if (item->_checked) {
+ data.append(item);
+ }
}
}
- }
selectionModel(data);
}
-void FluTreeModel::setDataSource(QList> data){
+void FluTreeModel::setDataSource(QList> data) {
_dataSource.clear();
- if(_root){
+ if (_root) {
delete _root;
_root = nullptr;
}
_root = new FluTreeNode(this);
std::reverse(data.begin(), data.end());
while (data.count() > 0) {
- auto item = data.at(data.count()-1);
+ auto item = data.at(data.count() - 1);
data.pop_back();
- FluTreeNode* node = new FluTreeNode(this);
+ auto *node = new FluTreeNode(this);
node->_depth = item.value("__depth").toInt();
- node->_parent = item.value("__parent").value();
+ node->_parent = item.value("__parent").value();
node->_data = item;
node->_isExpanded = true;
- if(node->_parent){
+ if (node->_parent) {
node->_parent->_children.append(node);
- }else{
+ } else {
node->_parent = _root;
_root->_children.append(node);
}
_dataSource.append(node);
if (item.contains("children")) {
QList children = item.value("children").toList();
- if(!children.isEmpty()){
+ if (!children.isEmpty()) {
std::reverse(children.begin(), children.end());
- for (int i = 0; i < children.count(); ++i) {
+ for (int i = 0; i <= children.count() - 1; ++i) {
auto child = children.at(i).toMap();
- child.insert("__depth",item.value("__depth").toInt(0)+1);
- child.insert("__parent",QVariant::fromValue(node));
+ child.insert("__depth", item.value("__depth").toInt(nullptr) + 1);
+ child.insert("__parent", QVariant::fromValue(node));
data.append(child);
}
}
@@ -165,108 +170,111 @@ void FluTreeModel::setDataSource(QList> data){
dataSourceSize(_dataSource.size());
}
-void FluTreeModel::collapse(int row){
- if(!_rows.at(row)->_isExpanded){
+void FluTreeModel::collapse(int row) {
+ if (!_rows.at(row)->_isExpanded) {
return;
}
_rows.at(row)->_isExpanded = false;
- Q_EMIT dataChanged(index(row,0),index(row,0));
+ Q_EMIT dataChanged(index(row, 0), index(row, 0));
auto modelData = _rows.at(row);
int removeCount = 0;
- for(int i=row+1;i<_rows.count();i++){
+ for (int i = row + 1; i < _rows.count(); i++) {
auto obj = _rows[i];
- if(obj->_depth<=modelData->_depth){
+ if (obj->_depth <= modelData->_depth) {
break;
}
removeCount = removeCount + 1;
}
- removeRows(row+1,removeCount);
+ removeRows(row + 1, removeCount);
}
-void FluTreeModel::expand(int row){
- if(_rows.at(row)->_isExpanded){
+void FluTreeModel::expand(int row) {
+ if (_rows.at(row)->_isExpanded) {
return;
}
_rows.at(row)->_isExpanded = true;
- Q_EMIT dataChanged(index(row,0),index(row,0));
+ Q_EMIT dataChanged(index(row, 0), index(row, 0));
auto modelData = _rows.at(row);
- QList insertData;
- QList stack = modelData->_children;
+ QList insertData;
+ QList stack = modelData->_children;
std::reverse(stack.begin(), stack.end());
while (stack.count() > 0) {
- auto item = stack.at(stack.count()-1);
+ auto item = stack.at(stack.count() - 1);
stack.pop_back();
- if(item->isShown()){
+ if (item->isShown()) {
insertData.append(item);
}
- QList children = item->_children;
- if(!children.isEmpty()){
+ QList children = item->_children;
+ if (!children.isEmpty()) {
std::reverse(children.begin(), children.end());
- foreach (auto c, children) {
- stack.append(c);
- }
+ foreach (auto c, children) {
+ stack.append(c);
+ }
}
}
- insertRows(row+1,insertData);
+ insertRows(row + 1, insertData);
}
-bool FluTreeModel::hitHasChildrenExpanded(int row){
+bool FluTreeModel::hitHasChildrenExpanded(int row) {
auto itemData = _rows.at(row);
- if(itemData->hasChildren() && itemData->_isExpanded){
+ if (itemData->hasChildren() && itemData->_isExpanded) {
return true;
}
return false;
}
-void FluTreeModel::refreshNode(int row){
- Q_EMIT dataChanged(index(row,0),index(row,0));
-};
+void FluTreeModel::refreshNode(int row) {
+ Q_EMIT dataChanged(index(row, 0), index(row, 0));
+}
-FluTreeNode* FluTreeModel::getNode(int row){
+FluTreeNode *FluTreeModel::getNode(int row) {
return _rows.at(row);
}
-void FluTreeModel::allExpand(){
+void FluTreeModel::allExpand() {
beginResetModel();
- QList data;
- QList stack = _root->_children;
+ QList data;
+ QList stack = _root->_children;
std::reverse(stack.begin(), stack.end());
while (stack.count() > 0) {
- auto item = stack.at(stack.count()-1);
+ auto item = stack.at(stack.count() - 1);
stack.pop_back();
- if(item->hasChildren()){
+ if (item->hasChildren()) {
item->_isExpanded = true;
}
data.append(item);
- QList children = item->_children;
- if(!children.isEmpty()){
+ QList children = item->_children;
+ if (!children.isEmpty()) {
std::reverse(children.begin(), children.end());
- foreach (auto c, children) {
- stack.append(c);
- }
+ foreach (auto c, children) {
+ stack.append(c);
+ }
}
}
_rows = data;
endResetModel();
}
-void FluTreeModel::allCollapse(){
+
+void FluTreeModel::allCollapse() {
beginResetModel();
- QList stack = _root->_children;
+ QList stack = _root->_children;
std::reverse(stack.begin(), stack.end());
while (stack.count() > 0) {
- auto item = stack.at(stack.count()-1);
+ auto item = stack.at(stack.count() - 1);
stack.pop_back();
- if(item->hasChildren()){
+ if (item->hasChildren()) {
item->_isExpanded = false;
}
- QList children = item->_children;
- if(!children.isEmpty()){
+ QList children = item->_children;
+ if (!children.isEmpty()) {
std::reverse(children.begin(), children.end());
- foreach (auto c, children) {
- stack.append(c);
- }
+ foreach (auto c, children) {
+ stack.append(c);
+ }
}
}
_rows = _root->_children;
endResetModel();
}
+
+#pragma clang diagnostic pop
\ No newline at end of file
diff --git a/src/FluTreeModel.h b/src/FluTreeModel.h
index a64e1efb..d46fa250 100644
--- a/src/FluTreeModel.h
+++ b/src/FluTreeModel.h
@@ -1,5 +1,7 @@
-#ifndef FLUTREEMODEL_H
-#define FLUTREEMODEL_H
+#pragma clang diagnostic push
+#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection"
+#pragma ide diagnostic ignored "google-default-arguments"
+#pragma once
#include
#include
@@ -11,79 +13,82 @@
/**
* @brief The FluTreeNode class
*/
-class FluTreeNode : public QObject{
- Q_OBJECT
+class FluTreeNode : public QObject {
+Q_OBJECT
Q_PROPERTY(QVariantMap data READ data CONSTANT)
Q_PROPERTY(int depth READ depth CONSTANT)
Q_PROPERTY(bool isExpanded READ isExpanded CONSTANT)
Q_PROPERTY(bool checked READ checked CONSTANT)
public:
explicit FluTreeNode(QObject *parent = nullptr);
- Q_INVOKABLE int depth(){return _depth;};
- Q_INVOKABLE bool isExpanded(){return _isExpanded;};
- Q_INVOKABLE QVariantMap data(){return _data;};
- Q_INVOKABLE bool hasChildren(){ return !_children.isEmpty();};
- Q_INVOKABLE bool hasNextNodeByIndex(int index){
- FluTreeNode* p = this;
- for(int i=0;i<(_depth - index -1);i++){
+
+ Q_INVOKABLE [[nodiscard]] int depth() const { return _depth; };
+ Q_INVOKABLE [[nodiscard]] bool isExpanded() const { return _isExpanded; };
+ Q_INVOKABLE [[nodiscard]] QVariantMap data() const { return _data; };
+ Q_INVOKABLE [[nodiscard]] bool hasChildren() const { return !_children.isEmpty(); };
+ Q_INVOKABLE bool hasNextNodeByIndex(int index) {
+ FluTreeNode *p = this;
+ for (int i = 0; i <= _depth - index - 1; i++) {
p = p->_parent;
}
- if(p->_parent->_children.indexOf(p) == p->_parent->_children.count()-1){
+ if (p->_parent->_children.indexOf(p) == p->_parent->_children.count() - 1) {
return false;
}
return true;
}
- Q_INVOKABLE bool checked(){
- if(!hasChildren()){
+
+ Q_INVOKABLE [[nodiscard]] bool checked() const {
+ if (!hasChildren()) {
return _checked;
}
- foreach (auto item, _children) {
- if(!item->checked()){
-
+ for (int i = 0; i <= _children.size() - 1; ++i) {
+ auto item = _children.at(i);
+ if (!item->checked()) {
return false;
}
}
return true;
};
- Q_INVOKABLE bool hideLineFooter(){
- if(_parent){
- auto childIndex = _parent->_children.indexOf(this);
- if(childIndex==_parent->_children.count()-1){
+ Q_INVOKABLE bool hideLineFooter() {
+ if (_parent) {
+ auto childIndex = _parent->_children.indexOf(this);
+ if (childIndex == _parent->_children.count() - 1) {
return true;
}
- if(_parent->_children.at(childIndex+1)->hasChildren()){
+ if (_parent->_children.at(childIndex + 1)->hasChildren()) {
return true;
}
return false;
}
return false;
};
- bool isShown(){
+
+ [[nodiscard]] bool isShown() const {
auto p = _parent;
while (p) {
- if(!p->_isExpanded){
+ if (!p->_isExpanded) {
return false;
}
p = p->_parent;
}
return true;
}
+
public:
- QString _title="";
- int _depth=0;
+ QString _title = "";
+ int _depth = 0;
bool _checked = false;
- bool _isExpanded=true;
+ bool _isExpanded = true;
QVariantMap _data;
- QList _children;
- FluTreeNode* _parent = nullptr;
+ QList _children;
+ FluTreeNode *_parent = nullptr;
};
-class FluTreeModel : public QAbstractItemModel
-{
- Q_OBJECT
- Q_PROPERTY_AUTO(int,dataSourceSize)
- Q_PROPERTY_AUTO(QList,selectionModel)
- Q_PROPERTY_AUTO(QList,columnSource)
+class FluTreeModel : public QAbstractItemModel {
+Q_OBJECT
+Q_PROPERTY_AUTO(int, dataSourceSize)
+Q_PROPERTY_AUTO(QList, selectionModel)
+Q_PROPERTY_AUTO(QList, columnSource)
QML_NAMED_ELEMENT(FluTreeModel)
QML_ADDED_IN_MINOR_VERSION(1)
public:
@@ -91,32 +96,53 @@ public:
RowModel = 0x0101,
ColumnModel = 0x0102
};
- explicit FluTreeModel(QObject *parent = nullptr);
- int rowCount(const QModelIndex &parent = QModelIndex()) const override;
- int columnCount(const QModelIndex &parent = QModelIndex()) const override;
- QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
- QHash roleNames() const override;
- QModelIndex parent(const QModelIndex &child) const override;
- QModelIndex index(int row, int column,const QModelIndex &parent = QModelIndex()) const override;
- Q_INVOKABLE void removeRows(int row,int count);
- Q_INVOKABLE void insertRows(int row,QList data);
- Q_INVOKABLE QObject* getRow(int row);
- Q_INVOKABLE void setRow(int row,QVariantMap data);
- Q_INVOKABLE void setData(QList data);
- Q_INVOKABLE void setDataSource(QList> data);
+ explicit FluTreeModel(QObject *parent = nullptr);
+
+ [[nodiscard]] int rowCount(const QModelIndex &parent = {}) const override;
+
+ [[nodiscard]] int columnCount(const QModelIndex &parent = {}) const override;
+
+ [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+
+ [[nodiscard]] QHash roleNames() const override;
+
+ [[nodiscard]] QModelIndex parent(const QModelIndex &child) const override;
+
+ [[nodiscard]] QModelIndex index(int row, int column, const QModelIndex &parent = {}) const override;
+
+ Q_INVOKABLE void removeRows(int row, int count);
+
+ Q_INVOKABLE void insertRows(int row, const QList &data);
+
+ Q_INVOKABLE QObject *getRow(int row);
+
+ Q_INVOKABLE void setRow(int row, QVariantMap data);
+
+ Q_INVOKABLE void setData(QList data);
+
+ Q_INVOKABLE void setDataSource(QList> data);
+
Q_INVOKABLE void collapse(int row);
+
Q_INVOKABLE void expand(int row);
- Q_INVOKABLE FluTreeNode* getNode(int row);
+
+ Q_INVOKABLE FluTreeNode *getNode(int row);
+
Q_INVOKABLE void refreshNode(int row);
- Q_INVOKABLE void checkRow(int row,bool checked);
+
+ Q_INVOKABLE void checkRow(int row, bool checked);
+
Q_INVOKABLE bool hitHasChildrenExpanded(int row);
+
Q_INVOKABLE void allExpand();
+
Q_INVOKABLE void allCollapse();
+
private:
- QList