From d7a9ccaa54f4586cbc51ed6896c4f001e5eca8e2 Mon Sep 17 00:00:00 2001 From: jared Date: Tue, 30 Jun 2020 00:34:25 +0800 Subject: [PATCH] move app to examples --- .qmake.conf | 2 + .../TaoCommon/Common/filereadwrite.h | 7 +- 3rdparty/TaoCommon/Common/objectmap.h | 125 +++++++++++++++ 3rdparty/TaoCommon/Common/singleton.h | 42 +++++ 3rdparty/TaoCommon/Common/subject.h | 116 ++++++++++++++ 3rdparty/TaoCommon/Logger/logger.cpp | 145 ++++++++++++++++++ 3rdparty/TaoCommon/Logger/logger.h | 23 +++ .../TaoCommon/Logger/loggertemplate.h | 8 +- 3rdparty/TaoCommon/TaoCommon.pri | 25 +++ 3rdparty/TaoCommon/TaoCommon.pro | 14 ++ 3rdparty/TaoCommon/Thread/threadcommon.h | 10 ++ 3rdparty/TaoCommon/Thread/threadpool.cpp | 22 +++ 3rdparty/TaoCommon/Thread/threadpool.h | 41 +++++ .../TaoCommon/Thread/threadworkercontroller.h | 129 ++++++++++++++++ 3rdparty/TaoCommon/taocommonglobal.h | 12 ++ TaoQuick.pro | 4 +- .../TaoQuickShow}/App.rc | Bin .../TaoQuickShow}/Image.qrc | 0 .../TaoQuickShow}/Image/Tao/qq.jpg | Bin .../TaoQuickShow}/Image/Tao/qq_connect.jpg | Bin .../TaoQuickShow}/Image/Tao/qqgroup.jpg | Bin .../TaoQuickShow}/Image/Tao/qqgroup2.jpg | Bin .../TaoQuickShow}/Image/Tao/weixin.jpg | Bin .../Image/Tao/weixin_connect.jpg | Bin .../Image/Tao/weixingongzhonghao.jpg | Bin .../TaoQuickShow}/Image/Tao/zhifubao.jpg | Bin .../TaoQuickShow}/Image/Window/about_gray.png | Bin .../Image/Window/about_white.png | Bin .../TaoQuickShow}/Image/Window/close_gray.png | Bin .../Image/Window/close_white.png | Bin .../TaoQuickShow}/Image/Window/flower.jpg | Bin .../TaoQuickShow}/Image/Window/lang_gray.png | Bin .../TaoQuickShow}/Image/Window/lang_white.png | Bin .../TaoQuickShow}/Image/Window/max_gray.png | Bin .../TaoQuickShow}/Image/Window/max_white.png | Bin .../Image/Window/minimal_gray.png | Bin .../Image/Window/minimal_white.png | Bin .../Image/Window/normal_gray.png | Bin .../Image/Window/normal_white.png | Bin .../TaoQuickShow}/Image/Window/skin_gray.png | Bin .../TaoQuickShow}/Image/Window/skin_white.png | Bin .../TaoQuickShow}/Image/logo/milk.ico | Bin .../TaoQuickShow}/Image/logo/milk.png | Bin .../TaoQuickShow}/Image/logo/splash.gif | Bin .../TaoQuickShow}/Languages.qrc | 0 .../TaoEffectPlugin/Img/Dissolve_1.jpg | Bin .../TaoEffectPlugin/Img/Dissolve_2.png | Bin .../TaoEffectPlugin/Img/Girls/girl1.jpeg | Bin .../TaoEffectPlugin/Img/Girls/girl10.jpeg | Bin .../TaoEffectPlugin/Img/Girls/girl11.jpeg | Bin .../TaoEffectPlugin/Img/Girls/girl12.jpeg | Bin .../TaoEffectPlugin/Img/Girls/girl14.jpeg | Bin .../TaoEffectPlugin/Img/Girls/girl15.jpeg | Bin .../TaoEffectPlugin/Img/Girls/girl2.jpeg | Bin .../TaoEffectPlugin/Img/Girls/girl3.jpeg | Bin .../TaoEffectPlugin/Img/Girls/girl4.jpeg | Bin .../TaoEffectPlugin/Img/Girls/girl5.jpeg | Bin .../TaoEffectPlugin/Img/Girls/girl6.jpeg | Bin .../TaoEffectPlugin/Img/Girls/girl7.jpeg | Bin .../TaoEffectPlugin/Img/Girls/girl8.jpeg | Bin .../TaoEffectPlugin/Img/Girls/girl9.jpeg | Bin .../Plugins}/TaoEffectPlugin/Img/arrow.png | Bin .../TaoEffectPlugin/Img/astronomy.jpg | Bin .../Plugins}/TaoEffectPlugin/Img/baby.jpg | Bin .../Plugins}/TaoEffectPlugin/Img/girl.jpg | Bin .../TaoEffectPlugin/Img/soundRect.png | Bin .../Plugins}/TaoEffectPlugin/Qml.qrc | 0 .../Qml/ContentPage/Animation/Board.qml | 0 .../Qml/ContentPage/Animation/Circle.qml | 0 .../Qml/ContentPage/Animation/Cleavage.qml | 0 .../Qml/ContentPage/Animation/Cross.qml | 0 .../Qml/ContentPage/Animation/Diagonal.qml | 0 .../Qml/ContentPage/Animation/Dissolve.qml | 0 .../Qml/ContentPage/Animation/Enter.qml | 0 .../Qml/ContentPage/Animation/Grad.qml | 0 .../Qml/ContentPage/Animation/Louver.qml | 0 .../Qml/ContentPage/Animation/Rhombus.qml | 0 .../Qml/ContentPage/Animation/Square.qml | 0 .../Qml/ContentPage/Animation/Wheel.qml | 0 .../Qml/ContentPage/Effect/ARound.qml | 0 .../Qml/ContentPage/Effect/Arrow.qml | 0 .../ContentPage/Effect/Effects/TAround.qml | 0 .../Qml/ContentPage/Effect/Effects/TArrow.qml | 0 .../ContentPage/Effect/Effects/TRingPage.qml | 0 .../ContentPage/Effect/Effects/TSoundByte.qml | 0 .../ContentPage/Effect/Effects/TSwapper.qml | 0 .../Qml/ContentPage/Effect/RingPage.qml | 0 .../Qml/ContentPage/Effect/SoundByte.qml | 0 .../Qml/ContentPage/Effect/Swapper.qml | 0 .../Qml/ContentPage/PageSwitch/Board.qml | 0 .../Qml/ContentPage/PageSwitch/Circle.qml | 0 .../Qml/ContentPage/PageSwitch/Cleavage.qml | 0 .../Qml/ContentPage/PageSwitch/Cross.qml | 0 .../Qml/ContentPage/PageSwitch/Diagonal.qml | 0 .../Qml/ContentPage/PageSwitch/Dissolve.qml | 0 .../Qml/ContentPage/PageSwitch/FadeInOut.qml | 0 .../Qml/ContentPage/PageSwitch/Grad.qml | 0 .../Qml/ContentPage/PageSwitch/Louver.qml | 0 .../ContentPage/PageSwitch/PageSwitchBase.qml | 0 .../Qml/ContentPage/PageSwitch/Rhombus.qml | 0 .../Qml/ContentPage/PageSwitch/Sector.qml | 0 .../Qml/ContentPage/PageSwitch/Square.qml | 0 .../Qml/ContentPage/PageSwitch/Wheel.qml | 0 .../Qml/ContentPage/Shape/KLine.qml | 0 .../Qml/ContentPage/Shape/RoundRect.qml | 0 .../TaoEffectPlugin/Src/EffectsPlugin.cpp | 0 .../TaoEffectPlugin/Src/EffectsPlugin.h | 0 .../TaoEffectPlugin/TaoEffectPlugin.pro | 0 .../TaoQuickPlugin/Image/Button/cry-fill.png | Bin .../Image/Button/smile-fill-hover.png | Bin .../Image/Button/smile-fill.png | Bin .../Plugins}/TaoQuickPlugin/Qml.qrc | 0 .../Qml/Contents/BaseComponent/Buttons.qml | 0 .../Qml/Contents/BaseComponent/Dialogs.qml | 0 .../Qml/Contents/BaseComponent/Drags.qml | 0 .../Qml/Contents/BaseComponent/Gradiants.qml | 0 .../Qml/Contents/BaseComponent/Progresses.qml | 0 .../Qml/Contents/ShaderEffect/CloudHole.qml | 0 .../Qml/Contents/ShaderEffect/Planet.qml | 0 .../Qml/Contents/ShaderEffect/Planet1.png | 0 .../Qml/Contents/ShaderEffect/Snail.qml | 0 .../Qml/Contents/ShaderEffect/SuperMario.qml | 0 .../TaoQuickPlugin/Src/TaoQuickPlugin.cpp | 0 .../TaoQuickPlugin/Src/TaoQuickPlugin.h | 0 .../TaoQuickPlugin/TaoQuickPlugin.pro | 0 .../TaoQuickShow}/Qml.qrc | 0 .../TaoQuickShow}/Qml/MainPage.qml | 0 .../TaoQuickShow}/Qml/Page/AboutDialog.qml | 0 .../TaoQuickShow}/Qml/Page/Biz/Background.qml | 0 .../TaoQuickShow}/Qml/Page/Biz/LangBtn.qml | 0 .../TaoQuickShow}/Qml/Page/Biz/SkinBtn.qml | 0 .../TaoQuickShow}/Qml/Page/ContentData.qml | 0 .../TaoQuickShow}/Qml/Page/ContentPage.qml | 0 .../TaoQuickShow}/Qml/Page/MenuPage.qml | 0 .../TaoQuickShow}/Qml/Page/NotifyBox.qml | 0 .../TaoQuickShow}/Qml/Page/TitlePage.qml | 0 .../TaoQuickShow}/Qml/Splash.qml | 0 .../TaoQuickShow}/Qml/Welcome/Welcome.qml | 0 .../TaoQuickShow}/Qml/main.qml | 0 .../TaoQuickShow}/Src/ITaoQuickPlugin.h | 6 +- .../TaoQuickShow}/Src/PluginLoader.cpp | 2 +- .../TaoQuickShow}/Src/PluginLoader.h | 0 .../TaoQuickShow}/Src/TaoView.cpp | 0 .../TaoQuickShow}/Src/TaoView.h | 0 .../TaoQuickShow}/Src/Trans.cpp | 2 +- .../TaoQuickShow}/Src/Trans.h | 0 .../TaoQuickShow}/Src/main.cpp | 3 +- .../TaoQuickShow}/Src/stdafx.h | 4 +- {src => examples/TaoQuickShow}/TaoPlugin.pri | 0 .../TaoQuickShow/TaoQuickShow.pri | 6 +- .../TaoQuickShow/TaoQuickShow.pro | 2 +- .../TaoQuickShow}/Trans/keys.json | 0 .../TaoQuickShow}/Trans/language_ara.json | 0 .../TaoQuickShow}/Trans/language_bul.json | 0 .../TaoQuickShow}/Trans/language_cht.json | 0 .../TaoQuickShow}/Trans/language_cs.json | 0 .../TaoQuickShow}/Trans/language_dan.json | 0 .../TaoQuickShow}/Trans/language_de.json | 0 .../TaoQuickShow}/Trans/language_el.json | 0 .../TaoQuickShow}/Trans/language_est.json | 0 .../TaoQuickShow}/Trans/language_fin.json | 0 .../TaoQuickShow}/Trans/language_fra.json | 0 .../TaoQuickShow}/Trans/language_hu.json | 0 .../TaoQuickShow}/Trans/language_it.json | 0 .../TaoQuickShow}/Trans/language_jp.json | 0 .../TaoQuickShow}/Trans/language_kor.json | 0 .../TaoQuickShow}/Trans/language_nl.json | 0 .../TaoQuickShow}/Trans/language_pl.json | 0 .../TaoQuickShow}/Trans/language_pt.json | 0 .../TaoQuickShow}/Trans/language_rom.json | 0 .../TaoQuickShow}/Trans/language_ru.json | 0 .../TaoQuickShow}/Trans/language_slo.json | 0 .../TaoQuickShow}/Trans/language_spa.json | 0 .../TaoQuickShow}/Trans/language_swe.json | 0 .../TaoQuickShow}/Trans/language_th.json | 0 .../TaoQuickShow}/Trans/language_vie.json | 0 .../TaoQuickShow}/Trans/language_wyw.json | 0 .../TaoQuickShow}/Trans/language_yue.json | 0 .../TaoQuickShow}/Trans/language_zh.json | 0 .../TaoQuickShow}/Trans/trnas.ps1 | 0 .../TaoQuickShow}/Ver-u16.h | Bin .../TaoQuickShow}/Ver-u8.h | 0 .../TaoQuickShow}/milk.icns | Bin .../TaoQuickShow}/milk.ico | Bin examples/examples.pro | 4 + mkspecs/features/taoVersion.prf | 4 +- src/TaoBundle.pri | 9 -- src/TaoQuick/TaoQuick.pri | 1 + src/TaoQuick/TaoQuick.pro | 2 +- .../{TaoQuickDesigner.pri => designer.pri} | 0 src/TaoQuickApp/Src/Logger/Logger.cpp | 84 ---------- src/TaoQuickApp/Src/Logger/Logger.h | 18 --- src/TaoVersion.pri | 37 ----- src/src.pro | 5 +- 194 files changed, 737 insertions(+), 177 deletions(-) rename src/TaoQuickApp/Src/FileReadWrite.h => 3rdparty/TaoCommon/Common/filereadwrite.h (90%) create mode 100644 3rdparty/TaoCommon/Common/objectmap.h create mode 100644 3rdparty/TaoCommon/Common/singleton.h create mode 100644 3rdparty/TaoCommon/Common/subject.h create mode 100644 3rdparty/TaoCommon/Logger/logger.cpp create mode 100644 3rdparty/TaoCommon/Logger/logger.h rename src/TaoQuickApp/Src/Logger/LoggerTemplate.h => 3rdparty/TaoCommon/Logger/loggertemplate.h (93%) create mode 100644 3rdparty/TaoCommon/TaoCommon.pri create mode 100644 3rdparty/TaoCommon/TaoCommon.pro create mode 100644 3rdparty/TaoCommon/Thread/threadcommon.h create mode 100644 3rdparty/TaoCommon/Thread/threadpool.cpp create mode 100644 3rdparty/TaoCommon/Thread/threadpool.h create mode 100644 3rdparty/TaoCommon/Thread/threadworkercontroller.h create mode 100644 3rdparty/TaoCommon/taocommonglobal.h rename {src/TaoQuickApp => examples/TaoQuickShow}/App.rc (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image.qrc (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Tao/qq.jpg (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Tao/qq_connect.jpg (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Tao/qqgroup.jpg (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Tao/qqgroup2.jpg (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Tao/weixin.jpg (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Tao/weixin_connect.jpg (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Tao/weixingongzhonghao.jpg (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Tao/zhifubao.jpg (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Window/about_gray.png (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Window/about_white.png (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Window/close_gray.png (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Window/close_white.png (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Window/flower.jpg (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Window/lang_gray.png (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Window/lang_white.png (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Window/max_gray.png (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Window/max_white.png (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Window/minimal_gray.png (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Window/minimal_white.png (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Window/normal_gray.png (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Window/normal_white.png (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Window/skin_gray.png (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/Window/skin_white.png (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/logo/milk.ico (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/logo/milk.png (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Image/logo/splash.gif (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Languages.qrc (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Dissolve_1.jpg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Dissolve_2.png (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Girls/girl1.jpeg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Girls/girl10.jpeg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Girls/girl11.jpeg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Girls/girl12.jpeg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Girls/girl14.jpeg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Girls/girl15.jpeg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Girls/girl2.jpeg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Girls/girl3.jpeg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Girls/girl4.jpeg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Girls/girl5.jpeg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Girls/girl6.jpeg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Girls/girl7.jpeg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Girls/girl8.jpeg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/Girls/girl9.jpeg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/arrow.png (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/astronomy.jpg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/baby.jpg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/girl.jpg (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Img/soundRect.png (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml.qrc (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Animation/Board.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Animation/Circle.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Animation/Cleavage.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Animation/Cross.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Animation/Diagonal.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Animation/Dissolve.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Animation/Enter.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Animation/Grad.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Animation/Louver.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Animation/Rhombus.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Animation/Square.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Animation/Wheel.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Effect/ARound.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Effect/Arrow.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Effect/Effects/TAround.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Effect/Effects/TArrow.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Effect/Effects/TRingPage.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Effect/Effects/TSoundByte.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Effect/Effects/TSwapper.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Effect/RingPage.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Effect/SoundByte.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Effect/Swapper.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/PageSwitch/Board.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/PageSwitch/Circle.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/PageSwitch/Cleavage.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/PageSwitch/Cross.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/PageSwitch/Diagonal.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/PageSwitch/Dissolve.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/PageSwitch/FadeInOut.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/PageSwitch/Grad.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/PageSwitch/Louver.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/PageSwitch/PageSwitchBase.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/PageSwitch/Rhombus.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/PageSwitch/Sector.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/PageSwitch/Square.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/PageSwitch/Wheel.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Shape/KLine.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Qml/ContentPage/Shape/RoundRect.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Src/EffectsPlugin.cpp (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/Src/EffectsPlugin.h (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoEffectPlugin/TaoEffectPlugin.pro (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Image/Button/cry-fill.png (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Image/Button/smile-fill-hover.png (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Image/Button/smile-fill.png (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Qml.qrc (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Qml/Contents/BaseComponent/Buttons.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Qml/Contents/BaseComponent/Dialogs.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Qml/Contents/BaseComponent/Drags.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Qml/Contents/BaseComponent/Gradiants.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Qml/Contents/BaseComponent/Progresses.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Qml/Contents/ShaderEffect/CloudHole.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Qml/Contents/ShaderEffect/Planet.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Qml/Contents/ShaderEffect/Planet1.png (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Qml/Contents/ShaderEffect/Snail.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Qml/Contents/ShaderEffect/SuperMario.qml (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Src/TaoQuickPlugin.cpp (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/Src/TaoQuickPlugin.h (100%) rename {src => examples/TaoQuickShow/Plugins}/TaoQuickPlugin/TaoQuickPlugin.pro (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Qml.qrc (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Qml/MainPage.qml (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Qml/Page/AboutDialog.qml (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Qml/Page/Biz/Background.qml (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Qml/Page/Biz/LangBtn.qml (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Qml/Page/Biz/SkinBtn.qml (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Qml/Page/ContentData.qml (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Qml/Page/ContentPage.qml (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Qml/Page/MenuPage.qml (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Qml/Page/NotifyBox.qml (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Qml/Page/TitlePage.qml (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Qml/Splash.qml (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Qml/Welcome/Welcome.qml (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Qml/main.qml (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Src/ITaoQuickPlugin.h (60%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Src/PluginLoader.cpp (97%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Src/PluginLoader.h (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Src/TaoView.cpp (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Src/TaoView.h (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Src/Trans.cpp (99%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Src/Trans.h (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Src/main.cpp (96%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Src/stdafx.h (92%) rename {src => examples/TaoQuickShow}/TaoPlugin.pri (100%) rename src/TaoQuickApp/TaoQuickApp.pri => examples/TaoQuickShow/TaoQuickShow.pri (86%) rename src/TaoQuickApp/TaoQuickApp.pro => examples/TaoQuickShow/TaoQuickShow.pro (93%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/keys.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_ara.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_bul.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_cht.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_cs.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_dan.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_de.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_el.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_est.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_fin.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_fra.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_hu.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_it.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_jp.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_kor.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_nl.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_pl.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_pt.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_rom.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_ru.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_slo.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_spa.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_swe.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_th.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_vie.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_wyw.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_yue.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/language_zh.json (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Trans/trnas.ps1 (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Ver-u16.h (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/Ver-u8.h (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/milk.icns (100%) rename {src/TaoQuickApp => examples/TaoQuickShow}/milk.ico (100%) create mode 100644 examples/examples.pro delete mode 100644 src/TaoBundle.pri rename src/TaoQuick/TaoQuick/{TaoQuickDesigner.pri => designer.pri} (100%) delete mode 100644 src/TaoQuickApp/Src/Logger/Logger.cpp delete mode 100644 src/TaoQuickApp/Src/Logger/Logger.h delete mode 100644 src/TaoVersion.pri diff --git a/.qmake.conf b/.qmake.conf index f5be993..485065c 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -4,4 +4,6 @@ TaoQuick_BUILD_TREE = $$PWD/build TaoQuick_RUN_TREE = $$PWD/bin +TaoQuick_3RDPARTY_TREE = $$PWD/3rdparty + TaoQuick_VERSION_MAJOR = 0.3 diff --git a/src/TaoQuickApp/Src/FileReadWrite.h b/3rdparty/TaoCommon/Common/filereadwrite.h similarity index 90% rename from src/TaoQuickApp/Src/FileReadWrite.h rename to 3rdparty/TaoCommon/Common/filereadwrite.h index 8267511..b47ffae 100644 --- a/src/TaoQuickApp/Src/FileReadWrite.h +++ b/3rdparty/TaoCommon/Common/filereadwrite.h @@ -5,6 +5,7 @@ #include #include #include +#include "Logger/logger.h" namespace TaoCommon { static bool readFile(const QString &filePath, QByteArray &content) @@ -12,7 +13,7 @@ namespace TaoCommon QFile file(filePath); if (!file.open(QFile::ReadOnly)) { - qWarning() << "open file " << filePath << "failed:" << file.errorString(); + LOG_WARN << "open file " << filePath << "failed:" << file.errorString(); return false; } content = file.readAll(); @@ -25,7 +26,7 @@ namespace TaoCommon doc = QJsonDocument::fromJson(data, &err); if (doc.isNull()) { - qWarning() << "parse json failed:" << err.errorString(); + LOG_WARN << "parse json failed:" << err.errorString(); return false; } return true; @@ -83,7 +84,7 @@ namespace TaoCommon QFile file(filePath); if (!file.open(QFile::WriteOnly)) { - qWarning() << "open file " << filePath << "failed:" << file.errorString(); + LOG_WARN << "open file " << filePath << "failed:" << file.errorString(); return false; } file.write(content); diff --git a/3rdparty/TaoCommon/Common/objectmap.h b/3rdparty/TaoCommon/Common/objectmap.h new file mode 100644 index 0000000..8e75129 --- /dev/null +++ b/3rdparty/TaoCommon/Common/objectmap.h @@ -0,0 +1,125 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +namespace TaoCommon +{ + + //对象存储器 + template + class ObjectMap + { + public: + virtual ~ObjectMap() + { + clear(); + } + void setObj(const Key &key, const Value &obj) + { + m_objMap[key] = obj; + } + Value getObj(const Key &key) const + { + auto itor = m_objMap.find(key); + if (itor == m_objMap.end()) + { + return nullptr; + } + else + { + return itor->second; + } + } + void clear() + { + m_objMap.clear(); + } + + protected: + std::unordered_map m_objMap; + }; + //智能对象存储器。自动生成key,自动管理对象。 + template + class CObjectMap : public ObjectMap> + { + public: + template + DeriveObjectType *getObject() const + { + static_assert(std::is_base_of::value, "DeriveObjectType must be derive from ObjectType"); + auto objPtr = getObj(std::type_index(typeid(std::shared_ptr))); + return std::static_pointer_cast(objPtr).get(); + } + template + void setObject(Args &&... args) + { + static_assert(std::is_base_of::value, "DeriveObjectType must be derive from ObjectType"); + auto obj = std::make_shared(std::forward(args...)); + setObj(std::type_index(typeid(obj)), std::static_pointer_cast(obj)); + } + void forEach(const std::function &callback) const + { + for (const auto &pair : m_objMap) + { + callback(pair.second.get()); + } + } + }; + //优先级对象存储器。自动生成key,自动管理对象。支持按优先级处理 + template + class CLevelObjectMap + { + public: + virtual ~CLevelObjectMap() + { + clear(); + } + template + DeriveObjectType *getObject() const + { + static_assert(std::is_base_of::value, "DeriveObjectType must be derive from ObjectType"); + auto index = std::type_index(typeid(std::shared_ptr)); + + for (const auto &mainPair : m_map) + { + const std::unordered_map> &subMap = mainPair.second; + + auto itor = subMap.find(index); + if (itor != subMap.end()) + { + return std::static_pointer_cast(itor->second).get(); + } + } + return nullptr; + } + template + void setObject(uint32_t level, Args &&... args) + { + static_assert(std::is_base_of::value, "DeriveObjectType must be derive from ObjectType"); + auto obj = std::make_shared(args...); + m_map[level][std::type_index(typeid(obj))] = std::static_pointer_cast(obj); + } + void forEach(const std::function &callback) const + { + for (const auto &mainPair : m_map) + { + const std::unordered_map> &subMap = mainPair.second; + for (const auto &subPair : subMap) + { + callback(subPair.second.get()); + } + } + } + void clear() + { + m_map.clear(); + } + + private: + std::map>> m_map; + }; +} // namespace TaoCommon diff --git a/3rdparty/TaoCommon/Common/singleton.h b/3rdparty/TaoCommon/Common/singleton.h new file mode 100644 index 0000000..9319e94 --- /dev/null +++ b/3rdparty/TaoCommon/Common/singleton.h @@ -0,0 +1,42 @@ +#pragma once +namespace TaoCommon +{ + //单例模板 + template + class Singleton + { + public: + static T &instance() + { + static T t; + return t; + } + virtual ~Singleton() {} + + Singleton(const Singleton &) = delete; + Singleton &operator=(const Singleton &) = delete; + + protected: + Singleton() {} + }; +/* +使用示例: + +定义: +class DataManager : public Singleton +{ + friend class Singleton; +public: + void loadData(); +protected: + DataManager(); + +private: + +}; + +调用: + DataManager::instance().loadData(); +*/ + +} // namespace TaoCommon diff --git a/3rdparty/TaoCommon/Common/subject.h b/3rdparty/TaoCommon/Common/subject.h new file mode 100644 index 0000000..d0083a5 --- /dev/null +++ b/3rdparty/TaoCommon/Common/subject.h @@ -0,0 +1,116 @@ +#pragma once +#include +#include +#include +namespace TaoCommon +{ + //观察者模式,Subject-Observer。 + //Subject 事件或消息的主体。模板参数为观察者类型 + template + class Subject + { + public: + virtual ~Subject() + { + m_obsList.clear(); + } + //订阅 + void subscibe(ObserverType *obs) + { + auto itor = std::find(m_obsList.begin(), m_obsList.end(), obs); + if (m_obsList.end() == itor) + { + m_obsList.push_back(obs); + } + } + //取消订阅 + void unSubscibe(ObserverType *obs) + { + m_obsList.erase(std::remove(m_obsList.begin(), m_obsList.end(), obs)); + } + //发布。这里的模板参数为函数类型。 + template + void publish(FuncType func) + { + for (auto obs : m_obsList) + { + //调用回调函数,将obs作为第一个参数传递 + func(obs); + } + } + //发布。支持过滤观察者。通常用在 观察者触发消息发布时,过滤观察者自己。 + template + void publish(FuncType func, ObserverType *exceptObs) + { + for (auto obs : m_obsList) + { + //调用回调函数,将obs作为第一个参数传递 + if (obs != exceptObs) + { + func(obs); + } + } + } + + private: + std::vector m_obsList; + }; + + //优先级观察者模式,Subject-Observer。 + template + class LevelSubject + { + public: + virtual ~LevelSubject() + { + m_obsMap.clear(); + } + //订阅 + void subscibe(ObserverType *obs, uint32_t level) + { + auto &vec = m_obsMap[level]; + auto itor = std::find(vec.begin(), vec.end(), obs); + if (vec.end() == itor) + { + vec.push_back(obs); + } + } + //取消订阅 + void unSubscibe(ObserverType *obs) + { + for (auto &obsPair : m_obsMap) + { + obsPair.second.erase(std::remove(obsPair.second.begin(), obsPair.second.end(), obs)); + } + } + //发布。这里的模板参数为函数类型。 + template + void publish(FuncType func) + { + for (const auto &obsPair : m_obsMap) + { + for (const auto &obs : obsPair.second) + { + func(obs); + } + } + } + template + void publish(FuncType func, ObserverType *exceptObs) + { + for (const auto &obsPair : m_obsMap) + { + for (const auto &obs : obsPair.second) + { + if (obs != exceptObs) + { + func(obs); + } + } + } + } + + private: + std::map> m_obsMap; + }; +} // namespace TaoCommon diff --git a/3rdparty/TaoCommon/Logger/logger.cpp b/3rdparty/TaoCommon/Logger/logger.cpp new file mode 100644 index 0000000..7c7f0be --- /dev/null +++ b/3rdparty/TaoCommon/Logger/logger.cpp @@ -0,0 +1,145 @@ +#include "logger.h" +#include "loggertemplate.h" + +#include +#include +#include +#include +#include + +#include + +#ifdef Q_OS_WIN +#include +#else +#include +#endif + +namespace Logger +{ + static QString gLogDir; + static int gLogMaxCount; + + static void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg); + static void outputMessageAsync(QtMsgType type, const QMessageLogContext& context, const QString& msg); + + void initLog(const QString &logPath, int logMaxCount, bool async) + { + if (async) + { + qInstallMessageHandler(outputMessageAsync); + } + else + { + qInstallMessageHandler(outputMessage); + } + + gLogDir = QCoreApplication::applicationDirPath() + QStringLiteral("/") + logPath; + gLogMaxCount = logMaxCount; + QDir dir(gLogDir); + if (!dir.exists()) + { + dir.mkpath(dir.absolutePath()); + } + QStringList infoList = dir.entryList(QDir::Files, QDir::Name); + while (infoList.size() > gLogMaxCount) + { + dir.remove(infoList.first()); + infoList.removeFirst(); + } + } + static void outputMessageAsync(QtMsgType type, const QMessageLogContext &context, const QString &msg) + { + static const QString messageTemp = QStringLiteral("
%2
\r\n"); + static const char typeList[] = { 'd', 'w', 'c', 'f', 'i' }; + static QMutex mutex; + static QFile file; + static QTextStream textStream; + static uint count = 0; + static const uint maxCount = 512; + Q_UNUSED(context) + QDateTime dt = QDateTime::currentDateTime(); + + //每小时一个文件 + QString fileNameDt = dt.toString(QStringLiteral("yyyy-MM-dd_hh")); + + //每分钟一个文件 + //QString fileNameDt = dt.toString("yyyy-MM-dd_hh_mm"); + + QString contentDt = dt.toString(QStringLiteral("yyyy-MM-dd hh:mm:ss")); + QString message = QStringLiteral("%1 %2").arg(contentDt).arg(msg); + QString htmlMessage = messageTemp.arg(typeList[static_cast(type)]).arg(message); + QString newfileName = QStringLiteral("%1/%2_log.html").arg(gLogDir).arg(fileNameDt); + mutex.lock(); + if (file.fileName() != newfileName) + { + if (file.isOpen()) + { + file.close(); + } + file.setFileName(newfileName); + bool exist = file.exists(); + file.open(QIODevice::WriteOnly | QIODevice::Append); + textStream.setDevice(&file); + textStream.setCodec("UTF-8"); + if (!exist) + { + textStream << logTemplate << "\r\n"; + } + } + textStream << htmlMessage; + textStream.flush(); + count += htmlMessage.length(); + if (count >= maxCount) + { + file.close(); + file.open(QIODevice::WriteOnly | QIODevice::Append); + } + mutex.unlock(); +#ifdef Q_OS_WIN + ::OutputDebugString(message.toStdWString().data()); + ::OutputDebugString(L"\r\n"); +#else + fprintf(stderr, message.toStdString().data()); +#endif + } + static void outputMessage(QtMsgType type, const QMessageLogContext& context, const QString& msg) + { + static const QString messageTemp = QStringLiteral("
%2
\r\n"); + static const char typeList[] = { 'd', 'w', 'c', 'f', 'i' }; + static QMutex mutex; + + Q_UNUSED(context) + QDateTime dt = QDateTime::currentDateTime(); + + //每小时一个文件 + QString fileNameDt = dt.toString(QStringLiteral("yyyy-MM-dd_hh")); + + //每分钟一个文件 + //QString fileNameDt = dt.toString("yyyy-MM-dd_hh_mm"); + + QString contentDt = dt.toString(QStringLiteral("yyyy-MM-dd hh:mm:ss")); + QString message = QStringLiteral("%1 %2").arg(contentDt).arg(msg); + QString htmlMessage = messageTemp.arg(typeList[static_cast(type)]).arg(message); + QFile file(QStringLiteral("%1/%2_log.html").arg(gLogDir).arg(fileNameDt)); + mutex.lock(); + + bool exist = file.exists(); + file.open(QIODevice::WriteOnly | QIODevice::Append); + QTextStream textStream(&file); + textStream.setCodec("UTF-8"); + if (!exist) + { + textStream << logTemplate << "\r\n"; + } + textStream << htmlMessage; + file.close(); + mutex.unlock(); +#ifdef Q_OS_WIN + ::OutputDebugString(message.toStdWString().data()); + ::OutputDebugString(L"\r\n"); +#else + fprintf(stderr, message.toStdString().data()); +#endif + } +} // namespace Logger diff --git a/3rdparty/TaoCommon/Logger/logger.h b/3rdparty/TaoCommon/Logger/logger.h new file mode 100644 index 0000000..0a6e24c --- /dev/null +++ b/3rdparty/TaoCommon/Logger/logger.h @@ -0,0 +1,23 @@ +#pragma once +#include "taocommonglobal.h" +#include +#include +namespace Logger +{ +#ifdef _DEBUG +#define LOG_DEBUG qDebug() << __FILE__ << __LINE__ +#define LOG_INFO qInfo() << __FILE__ << __LINE__ +#define LOG_WARN qWarning() << __FILE__ << __LINE__ +#define LOG_CRIT qCritical() << __FILE__ << __LINE__ +#else +#define LOG_DEBUG qDebug() +#define LOG_INFO qInfo() +#define LOG_WARN qWarning() +#define LOG_CRIT qCritical() +#endif + // 初始化Log存储。包括创建Log文件夹、删除超过最大数的log(仅初始化时删除,运行过程中不删除)。 + // logPath 存储路径 + // logMaxCount 最大数 + // async 是否异步存储 默认异步存储。异步存储会缓存log,达到一定数量、或者软件退出时才写入文件。 + void TAO_API initLog(const QString &logPath = QStringLiteral("Log"), int logMaxCount = 1024, bool async = true); +} // namespace Logger diff --git a/src/TaoQuickApp/Src/Logger/LoggerTemplate.h b/3rdparty/TaoCommon/Logger/loggertemplate.h similarity index 93% rename from src/TaoQuickApp/Src/Logger/LoggerTemplate.h rename to 3rdparty/TaoCommon/Logger/loggertemplate.h index 8607b8a..f8da4b3 100644 --- a/src/TaoQuickApp/Src/Logger/LoggerTemplate.h +++ b/3rdparty/TaoCommon/Logger/loggertemplate.h @@ -3,13 +3,13 @@ #include namespace Logger { - const static QString logTemplate = u8R"logTemplate( + const static auto logTemplate = QString::fromUtf8(u8R"logTemplate( - TaoLogger + Lubansoft log file