diff --git a/example/src/AppInfo.cpp b/example/src/AppInfo.cpp index 57e39130..29ce0f6c 100644 --- a/example/src/AppInfo.cpp +++ b/example/src/AppInfo.cpp @@ -4,11 +4,11 @@ #include #include "Version.h" -AppInfo::AppInfo(QObject *parent) - : QObject{parent} { +AppInfo::AppInfo(QObject *parent) : QObject{parent} { version(APPLICATION_VERSION); } + [[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 67780f88..49f907e9 100644 --- a/example/src/AppInfo.h +++ b/example/src/AppInfo.h @@ -6,13 +6,12 @@ #include "singleton.h" class AppInfo : public QObject { -Q_OBJECT -Q_PROPERTY_AUTO(QString, version) + Q_OBJECT + Q_PROPERTY_AUTO(QString, version) private: explicit AppInfo(QObject *parent = nullptr); public: -SINGLETON(AppInfo) - - [[maybe_unused]] Q_INVOKABLE void testCrash(); + SINGLETON(AppInfo) + Q_INVOKABLE [[maybe_unused]] void testCrash(); }; diff --git a/example/src/app_dmp.h b/example/src/app_dmp.h index 114ba376..0fbcc1a4 100644 --- a/example/src/app_dmp.h +++ b/example/src/app_dmp.h @@ -11,21 +11,28 @@ #pragma comment(lib, "Dbghelp.lib") -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); +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) { MiniDumpWriteDumpPtr mini_dump_write_dump; - mini_dump_write_dump = reinterpret_cast(GetProcAddress(module, "MiniDumpWriteDump")); + 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); + 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) { +BOOL CALLBACK MyMiniDumpCallback(PVOID, const PMINIDUMP_CALLBACK_INPUT input, + PMINIDUMP_CALLBACK_OUTPUT output) { if (input == nullptr || output == nullptr) return FALSE; @@ -42,8 +49,7 @@ BOOL CALLBACK MyMiniDumpCallback(PVOID, const PMINIDUMP_CALLBACK_INPUT input, PM output->ModuleWriteFlags &= ~ModuleWriteModule; } ret = TRUE; - } - break; + } break; default: break; } @@ -51,7 +57,9 @@ BOOL CALLBACK MyMiniDumpCallback(PVOID, const PMINIDUMP_CALLBACK_INPUT input, PM } 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); + 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; @@ -64,8 +72,10 @@ void WriteDump(EXCEPTION_POINTERS *exp, const std::wstring &path) { } 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 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()) { dumpDir.mkpath(dumpDirPath); @@ -76,4 +86,4 @@ LONG WINAPI MyUnhandledExceptionFilter(EXCEPTION_POINTERS *exp) { arguments << "-crashed=" + dumpFilePath; QProcess::startDetached(QGuiApplication::applicationFilePath(), arguments); return EXCEPTION_EXECUTE_HANDLER; -} \ No newline at end of file +} diff --git a/example/src/component/CircularReveal.cpp b/example/src/component/CircularReveal.cpp index ada137b0..65de3f88 100644 --- a/example/src/component/CircularReveal.cpp +++ b/example/src/component/CircularReveal.cpp @@ -15,9 +15,7 @@ CircularReveal::CircularReveal(QQuickItem *parent) : QQuickPaintedItem(parent) { setVisible(false); Q_EMIT animationFinished(); }); - connect(this, &CircularReveal::radiusChanged, this, [=]() { - update(); - }); + connect(this, &CircularReveal::radiusChanged, this, [=]() { update(); }); } void CircularReveal::paint(QPainter *painter) { @@ -36,7 +34,8 @@ void CircularReveal::paint(QPainter *painter) { _anim->setEndValue(radius); _center = center; _grabResult = _target->grabToImage(QSize(w, h)); - connect(_grabResult.data(), &QQuickItemGrabResult::ready, this, &CircularReveal::handleGrabResult); + connect(_grabResult.data(), &QQuickItemGrabResult::ready, this, + &CircularReveal::handleGrabResult); } void CircularReveal::handleGrabResult() { diff --git a/example/src/component/CircularReveal.h b/example/src/component/CircularReveal.h index 7f719851..e8e706d3 100644 --- a/example/src/component/CircularReveal.h +++ b/example/src/component/CircularReveal.h @@ -7,20 +7,15 @@ #include "src/stdafx.h" class CircularReveal : public QQuickPaintedItem { -Q_OBJECT -Q_PROPERTY_AUTO_P(QQuickItem*, target) -Q_PROPERTY_AUTO(int, radius) + Q_OBJECT + Q_PROPERTY_AUTO_P(QQuickItem *, target) + Q_PROPERTY_AUTO(int, radius) public: explicit CircularReveal(QQuickItem *parent = nullptr); - void paint(QPainter *painter) override; - - [[maybe_unused]] Q_INVOKABLE void start(int w, int h, const QPoint ¢er, int radius); - + 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: diff --git a/example/src/component/FileWatcher.h b/example/src/component/FileWatcher.h index e70844cc..934933dc 100644 --- a/example/src/component/FileWatcher.h +++ b/example/src/component/FileWatcher.h @@ -6,11 +6,10 @@ #include "src/stdafx.h" class FileWatcher : public QObject { -Q_OBJECT -Q_PROPERTY_AUTO(QString, path); + Q_OBJECT + Q_PROPERTY_AUTO(QString, path) public: explicit FileWatcher(QObject *parent = nullptr); - Q_SIGNAL void fileChanged(); private: diff --git a/example/src/component/FpsItem.cpp b/example/src/component/FpsItem.cpp index 84a5fd66..e1f7c946 100644 --- a/example/src/component/FpsItem.cpp +++ b/example/src/component/FpsItem.cpp @@ -12,7 +12,9 @@ FpsItem::FpsItem() { }); connect(this, &QQuickItem::windowChanged, this, [this] { if (window()) { - connect(window(), &QQuickWindow::afterRendering, this, [this] { _frameCount++; }, Qt::DirectConnection); + 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 e30f63bc..c4afdb8c 100644 --- a/example/src/component/FpsItem.h +++ b/example/src/component/FpsItem.h @@ -4,12 +4,11 @@ #include "src/stdafx.h" class FpsItem : public QQuickItem { -Q_OBJECT -Q_PROPERTY_AUTO(int, fps) + Q_OBJECT + Q_PROPERTY_AUTO(int, fps) public: FpsItem(); private: int _frameCount = 0; - -}; \ No newline at end of file +}; diff --git a/example/src/component/OpenGLItem.cpp b/example/src/component/OpenGLItem.cpp index 4e0f687a..9ab82f80 100644 --- a/example/src/component/OpenGLItem.cpp +++ b/example/src/component/OpenGLItem.cpp @@ -7,11 +7,8 @@ class FBORenderer : public QQuickFramebufferObject::Renderer, protected QOpenGLFunctions { public: explicit FBORenderer(const OpenGLItem *item); - void render() override; - QOpenGLFramebufferObject *createFramebufferObject(const QSize &size) override; - QOpenGLShaderProgram program; const OpenGLItem *item = nullptr; }; @@ -19,22 +16,22 @@ class FBORenderer : public QQuickFramebufferObject::Renderer, protected QOpenGLF FBORenderer::FBORenderer(const OpenGLItem *item) { this->item = item; initializeOpenGLFunctions(); - program.addCacheableShaderFromSourceCode(QOpenGLShader::Vertex, - "attribute highp vec4 vertices;" - "varying highp vec2 coords;" - "void main() {" - " gl_Position = vertices;" - " coords = vertices.xy;" - "}"); - program.addCacheableShaderFromSourceCode(QOpenGLShader::Fragment, - "uniform lowp float t;" - "varying highp vec2 coords;" - "void main() {" - " lowp float i = 1. - (pow(abs(coords.x), 4.) + pow(abs(coords.y), 4.));" - " i = smoothstep(t - 0.8, t + 0.8, i);" - " i = floor(i * 20.) / 20.;" - " gl_FragColor = vec4(coords * .5 + .5, i, i);" - "}"); + program.addCacheableShaderFromSourceCode(QOpenGLShader::Vertex, "attribute highp vec4 vertices;" + "varying highp vec2 coords;" + "void main() {" + " gl_Position = vertices;" + " coords = vertices.xy;" + "}"); + program.addCacheableShaderFromSourceCode( + QOpenGLShader::Fragment, + "uniform lowp float t;" + "varying highp vec2 coords;" + "void main() {" + " lowp float i = 1. - (pow(abs(coords.x), 4.) + pow(abs(coords.y), 4.));" + " i = smoothstep(t - 0.8, t + 0.8, i);" + " i = floor(i * 20.) / 20.;" + " gl_FragColor = vec4(coords * .5 + .5, i, i);" + "}"); program.bindAttributeLocation("vertices", 0); program.link(); @@ -54,16 +51,11 @@ void FBORenderer::render() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); program.bind(); program.enableAttributeArray(0); - float values[] = { - -1, -1, - 1, -1, - -1, 1, - 1, 1 - }; + float values[] = {-1, -1, 1, -1, -1, 1, 1, 1}; glBindBuffer(GL_ARRAY_BUFFER, 0); program.setAttributeArray(0, GL_FLOAT, values, 2); program.setUniformValue("t", (float) item->t()); - glViewport(0, 0, qRound(item->width()*pixelRatio), qRound(item->height()*pixelRatio)); + glViewport(0, 0, qRound(item->width() * pixelRatio), qRound(item->height() * pixelRatio)); glDisable(GL_DEPTH_TEST); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE); diff --git a/example/src/component/OpenGLItem.h b/example/src/component/OpenGLItem.h index d1570c7f..6190ddce 100644 --- a/example/src/component/OpenGLItem.h +++ b/example/src/component/OpenGLItem.h @@ -7,21 +7,17 @@ class FBORenderer; class OpenGLItem : public QQuickFramebufferObject, protected QOpenGLFunctions { -Q_OBJECT + Q_OBJECT Q_PROPERTY(qreal t READ t WRITE setT NOTIFY tChanged) public: explicit OpenGLItem(QQuickItem *parent = nullptr); - [[nodiscard]] QQuickFramebufferObject::Renderer *createRenderer() const override; - void timerEvent(QTimerEvent *) override; - - [[nodiscard]] qreal t() const { return m_t; } - + [[nodiscard]] qreal t() const { + return m_t; + } void setT(qreal t); - signals: - void tChanged(); private: diff --git a/example/src/helper/InitializrHelper.cpp b/example/src/helper/InitializrHelper.cpp index 39d54e37..e4c50396 100644 --- a/example/src/helper/InitializrHelper.cpp +++ b/example/src/helper/InitializrHelper.cpp @@ -4,11 +4,11 @@ #include [[maybe_unused]] InitializrHelper::InitializrHelper(QObject *parent) : QObject(parent) { - } InitializrHelper::~InitializrHelper() = default; + bool InitializrHelper::copyDir(const QDir &fromDir, const QDir &toDir, bool coverIfFileExists) { const QDir &_formDir = fromDir; QDir _toDir = toDir; @@ -17,25 +17,25 @@ bool InitializrHelper::copyDir(const QDir &fromDir, const QDir &toDir, bool cove 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 +template void InitializrHelper::templateToFile(const QString &source, const QString &dest, Args &&...args) { QFile file(source); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { @@ -61,7 +61,8 @@ void InitializrHelper::templateToFile(const QString &source, const QString &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); + QFile::setPermissions(dest, QFile::WriteOwner | QFile::WriteUser | QFile::WriteGroup | + QFile::WriteOther); } [[maybe_unused]] void InitializrHelper::generate(const QString &name, const QString &path) { @@ -87,15 +88,21 @@ void InitializrHelper::copyFile(const QString &source, const QString &dest) { 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); + 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+"/CMakeLists.txt"); + return this->success(projectPath + "/CMakeLists.txt"); } diff --git a/example/src/helper/InitializrHelper.h b/example/src/helper/InitializrHelper.h index 3f3ba910..a4410f6a 100644 --- a/example/src/helper/InitializrHelper.h +++ b/example/src/helper/InitializrHelper.h @@ -6,25 +6,18 @@ #include "src/singleton.h" class InitializrHelper : public QObject { -Q_OBJECT + Q_OBJECT private: [[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 + template void templateToFile(const QString &source, const QString &dest, Args &&...args); public: -SINGLETON(InitializrHelper) - + SINGLETON(InitializrHelper) ~InitializrHelper() override; - 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); }; diff --git a/example/src/helper/Log.cpp b/example/src/helper/Log.cpp index 3f9ddd66..24582a64 100644 --- a/example/src/helper/Log.cpp +++ b/example/src/helper/Log.cpp @@ -13,11 +13,9 @@ #include "Version.h" #ifdef WIN32 - -#include - +# include #else -#include +# include #endif #ifndef QT_ENDL @@ -38,19 +36,20 @@ 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() { auto productName = QSysInfo::prettyProductName(); #if QT_VERSION < QT_VERSION_CHECK(6, 5, 0) -#if defined(Q_OS_MACOS) - auto macosVersionFile = QString::fromUtf8("/System/Library/CoreServices/.SystemVersionPlatform.plist"); - auto fi = QFileInfo (macosVersionFile); +# if defined(Q_OS_MACOS) + auto macosVersionFile = + QString::fromUtf8("/System/Library/CoreServices/.SystemVersionPlatform.plist"); + auto fi = QFileInfo(macosVersionFile); if (fi.exists() && fi.isReadable()) { auto plistFile = QFile(macosVersionFile); plistFile.open(QIODevice::ReadOnly); @@ -69,10 +68,12 @@ QString Log::prettyProductInfoWrapper() { } } } -#endif +# endif #endif #if defined(Q_OS_WIN) - QSettings regKey{QString::fromUtf8(R"(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) { @@ -91,7 +92,8 @@ QString Log::prettyProductInfoWrapper() { return productName; } -static inline void messageHandler(const QtMsgType type, const QMessageLogContext &context, const QString &message) { +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; } @@ -132,14 +134,15 @@ static inline void messageHandler(const QtMsgType type, const QMessageLogContext 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); + 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); if ((type == QtInfoMsg) || (type == QtDebugMsg)) { std::cout << qPrintable(finalMessage) << std::endl; } else { @@ -151,7 +154,8 @@ static inline void messageHandler(const QtMsgType type, const QMessageLogContext if (!g_logFile) { g_logFile = std::make_unique(g_file_path); if (!g_logFile->open(QFile::WriteOnly | QFile::Text | QFile::Append)) { - std::cerr << "Can't open file to write: " << qPrintable(g_logFile->errorString()) << std::endl; + std::cerr << "Can't open file to write: " << qPrintable(g_logFile->errorString()) + << std::endl; g_logFile.reset(); g_logError = true; return; @@ -179,8 +183,10 @@ 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()) { logDir.mkpath(logDirPath); @@ -195,7 +201,7 @@ void Log::setup(char *argv[], const QString &app, int level) { #ifdef WIN32 qInfo() << "[ProcessId]" << QString::number(_getpid()); #else - qInfo()<<"[ProcessId]"< #include - NetworkCallable::NetworkCallable(QObject *parent) : QObject{parent} { - } QString NetworkParams::method2String() const { @@ -64,12 +62,11 @@ bool NetworkParams::getOpenLog() const { return Network::getInstance()->openLog(); } -FluDownloadParam::FluDownloadParam(QObject *parent) - : QObject{parent} { +FluDownloadParam::FluDownloadParam(QObject *parent) : QObject{parent} { } FluDownloadParam::FluDownloadParam(QString destPath, bool append, QObject *parent) - : QObject{parent} { + : QObject{parent} { this->_destPath = std::move(destPath); this->_append = append; } @@ -80,7 +77,7 @@ NetworkParams::NetworkParams(QObject *parent) : QObject{parent} { } NetworkParams::NetworkParams(QString url, Type type, Method method, QObject *parent) - : QObject{parent} { + : QObject{parent} { this->_method = method; this->_url = std::move(url); this->_type = type; @@ -178,12 +175,14 @@ void Network::handle(NetworkParams *params, NetworkCallable *c) { callable->start(); } QString cacheKey = params->buildCacheKey(); - if (params->_cacheMode == NetworkType::CacheMode::FirstCacheThenRequest && cacheExists(cacheKey)) { + if (params->_cacheMode == NetworkType::CacheMode::FirstCacheThenRequest && + cacheExists(cacheKey)) { if (!callable.isNull()) { callable->cache(readCache(cacheKey)); } } - if (params->_cacheMode == NetworkType::CacheMode::IfNoneCacheRequest && cacheExists(cacheKey)) { + if (params->_cacheMode == NetworkType::CacheMode::IfNoneCacheRequest && + cacheExists(cacheKey)) { if (!callable.isNull()) { callable->cache(readCache(cacheKey)); callable->finish(); @@ -194,7 +193,8 @@ 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(); }); + 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); @@ -216,9 +216,11 @@ void Network::handle(NetworkParams *params, NetworkCallable *c) { QMetaObject::Connection conn_destroyed = {}; QMetaObject::Connection conn_quit = {}; if (params->_target) { - conn_destroyed = connect(params->_target, &QObject::destroyed, &manager, abortCallable); + conn_destroyed = + connect(params->_target, &QObject::destroyed, &manager, abortCallable); } - conn_quit = connect(QGuiApplication::instance(), &QGuiApplication::aboutToQuit, &manager, abortCallable); + conn_quit = connect(QGuiApplication::instance(), &QGuiApplication::aboutToQuit, + &manager, abortCallable); loop.exec(); if (conn_destroyed) { disconnect(conn_destroyed); @@ -247,7 +249,8 @@ void Network::handle(NetworkParams *params, NetworkCallable *c) { } else { if (i == params->getRetry() - 1) { if (!callable.isNull()) { - if (params->_cacheMode == NetworkType::CacheMode::RequestFailedReadCache && cacheExists(cacheKey)) { + if (params->_cacheMode == NetworkType::CacheMode::RequestFailedReadCache && + cacheExists(cacheKey)) { if (!callable.isNull()) { callable->cache(readCache(cacheKey)); } @@ -332,35 +335,41 @@ void Network::handleDownload(NetworkParams *params, NetworkCallable *c) { reply->abort(); } }; - connect(&manager, &QNetworkAccessManager::finished, &manager, [&loop](QNetworkReply *reply) { loop.quit(); }); - connect(QGuiApplication::instance(), &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); } - 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); - QString eTag = reply->header(QNetworkRequest::ETagHeader).toString(); - downInfo.insert("eTag", eTag); - destFile->write(reply->readAll()); - destFile->flush(); - 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); - } - }); + 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); + QString eTag = reply->header(QNetworkRequest::ETagHeader).toString(); + downInfo.insert("eTag", eTag); + destFile->write(reply->readAll()); + destFile->flush(); + 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); + } + }); loop.exec(); int httpStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (httpStatus == 200) { @@ -430,7 +439,9 @@ QString Network::map2String(const QMap &map) { return parameters.join(" "); } -void Network::sendRequest(QNetworkAccessManager *manager, QNetworkRequest request, NetworkParams *params, QNetworkReply *&reply, bool isFirst, const 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: { @@ -438,13 +449,14 @@ void Network::sendRequest(QNetworkAccessManager *manager, QNetworkRequest reques if (isFormData) { auto *multiPart = new QHttpMultiPart(); multiPart->setContentType(QHttpMultiPart::FormDataType); - for (const auto &each: params->_paramMap.toStdMap()) { + for (const auto &each : params->_paramMap.toStdMap()) { QHttpPart part; - part.setHeader(QNetworkRequest::ContentDispositionHeader, QString("form-data; name=\"%1\"").arg(each.first)); + 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()) { + for (const auto &each : params->_fileMap.toStdMap()) { QString filePath = each.second.toString(); QString name = each.first; auto *file = new QFile(filePath); @@ -452,21 +464,25 @@ void Network::sendRequest(QNetworkAccessManager *manager, QNetworkRequest reques 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.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); - } - }); + 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")); + request.setHeader(QNetworkRequest::ContentTypeHeader, + QString("application/x-www-form-urlencoded")); QString value; - for (const auto &each: params->_paramMap.toStdMap()) { + for (const auto &each : params->_paramMap.toStdMap()) { value += QString("%1=%2").arg(each.first, each.second.toString()); value += "&"; } @@ -479,9 +495,10 @@ void Network::sendRequest(QNetworkAccessManager *manager, QNetworkRequest reques break; } case NetworkParams::TYPE_JSON: { - request.setHeader(QNetworkRequest::ContentTypeHeader, QString("application/json;charset=utf-8")); + request.setHeader(QNetworkRequest::ContentTypeHeader, + QString("application/json;charset=utf-8")); QJsonObject json; - for (const auto &each: params->_paramMap.toStdMap()) { + for (const auto &each : params->_paramMap.toStdMap()) { json.insert(each.first, each.second.toJsonValue()); } QByteArray data = QJsonDocument(json).toJson(QJsonDocument::Compact); @@ -489,9 +506,10 @@ void Network::sendRequest(QNetworkAccessManager *manager, QNetworkRequest reques break; } case NetworkParams::TYPE_JSONARRAY: { - request.setHeader(QNetworkRequest::ContentTypeHeader, QString("application/json;charset=utf-8")); + request.setHeader(QNetworkRequest::ContentTypeHeader, + QString("application/json;charset=utf-8")); QJsonArray jsonArray; - for (const auto &each: params->_paramMap.toStdMap()) { + for (const auto &each : params->_paramMap.toStdMap()) { QJsonObject json; json.insert(each.first, each.second.toJsonValue()); jsonArray.append(json); @@ -501,7 +519,8 @@ void Network::sendRequest(QNetworkAccessManager *manager, QNetworkRequest reques break; } case NetworkParams::TYPE_BODY: { - request.setHeader(QNetworkRequest::ContentTypeHeader, QString("text/plain;charset=utf-8")); + request.setHeader(QNetworkRequest::ContentTypeHeader, + QString("text/plain;charset=utf-8")); QByteArray data = params->_body.toUtf8(); reply = manager->sendCustomRequest(request, verb, data); break; @@ -519,15 +538,20 @@ void Network::printRequestStartLog(const QNetworkRequest &request, NetworkParams if (!params->getOpenLog()) { return; } - qDebug() << "<------" << qUtf8Printable(request.header(QNetworkRequest::UserAgentHeader).toString()) << "Request Start ------>"; - qDebug() << qUtf8Printable(QString::fromStdString("<%1>").arg(params->method2String())) << qUtf8Printable(params->_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() << qUtf8Printable(QString::fromStdString("
%1=%2").arg("Content-Type", contentType)); + qDebug() << qUtf8Printable( + QString::fromStdString("
%1=%2").arg("Content-Type", contentType)); } QList headers = request.rawHeaderList(); - for (const QByteArray &header: headers) { - qDebug() << qUtf8Printable(QString::fromStdString("
%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() << "" << qUtf8Printable(map2String(params->_queryMap)); @@ -543,12 +567,16 @@ void Network::printRequestStartLog(const QNetworkRequest &request, NetworkParams } } -void Network::printRequestEndLog(const QNetworkRequest &request, NetworkParams *params, QNetworkReply *&reply, const QString &response) { +void Network::printRequestEndLog(const QNetworkRequest &request, NetworkParams *params, + QNetworkReply *&reply, const QString &response) { if (!params->getOpenLog()) { return; } - qDebug() << "<------" << qUtf8Printable(request.header(QNetworkRequest::UserAgentHeader).toString()) << "Request End ------>"; - qDebug() << qUtf8Printable(QString::fromStdString("<%1>").arg(params->method2String())) << qUtf8Printable(params->_url); + qDebug() << "<------" + << qUtf8Printable(request.header(QNetworkRequest::UserAgentHeader).toString()) + << "Request End ------>"; + qDebug() << qUtf8Printable(QString::fromStdString("<%1>").arg(params->method2String())) + << qUtf8Printable(params->_url); qDebug() << "" << qUtf8Printable(response); } @@ -562,7 +590,10 @@ void Network::saveResponse(const QString &key, const QString &response) { } void Network::addHeaders(QNetworkRequest *request, const QMap &headers) { - request->setHeader(QNetworkRequest::UserAgentHeader, QString::fromStdString("Mozilla/5.0 %1/%2").arg(QGuiApplication::applicationName(), QGuiApplication::applicationVersion())); + request->setHeader( + QNetworkRequest::UserAgentHeader, + QString::fromStdString("Mozilla/5.0 %1/%2") + .arg(QGuiApplication::applicationName(), QGuiApplication::applicationVersion())); QMapIterator iter(headers); while (iter.hasNext()) { iter.next(); @@ -584,7 +615,9 @@ Network::Network(QObject *parent) : QObject{parent} { _timeout = 5000; _retry = 3; _openLog = false; - _cacheDir = QStandardPaths::writableLocation(QStandardPaths::CacheLocation).append(QDir::separator()).append("network"); + _cacheDir = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + .append(QDir::separator()) + .append("network"); } NetworkParams *Network::get(const QString &url) { @@ -656,7 +689,8 @@ NetworkParams *Network::patchJsonArray(const QString &url) { } NetworkParams *Network::deleteJsonArray(const QString &url) { - return new NetworkParams(url, NetworkParams::TYPE_JSONARRAY, NetworkParams::METHOD_DELETE, this); + return new NetworkParams(url, NetworkParams::TYPE_JSONARRAY, NetworkParams::METHOD_DELETE, + this); } void Network::setInterceptor(QJSValue interceptor) { diff --git a/example/src/helper/Network.h b/example/src/helper/Network.h index d0f7e3e2..cf4cfb38 100644 --- a/example/src/helper/Network.h +++ b/example/src/helper/Network.h @@ -28,7 +28,7 @@ namespace NetworkType { * @brief The NetworkCallable class */ class NetworkCallable : public QObject { -Q_OBJECT + Q_OBJECT QML_NAMED_ELEMENT(NetworkCallable) public: explicit NetworkCallable(QObject *parent = nullptr); @@ -52,7 +52,7 @@ Q_OBJECT * @brief The FluDownloadParam class */ class FluDownloadParam : public QObject { -Q_OBJECT + Q_OBJECT public: explicit FluDownloadParam(QObject *parent = nullptr); @@ -67,24 +67,11 @@ Q_OBJECT * @brief The NetworkParams class */ class NetworkParams : public QObject { -Q_OBJECT + Q_OBJECT QML_NAMED_ELEMENT(NetworkParams) public: - enum Method { - METHOD_GET, - METHOD_HEAD, - METHOD_POST, - METHOD_PUT, - METHOD_PATCH, - METHOD_DELETE - }; - enum Type { - TYPE_NONE, - TYPE_FORM, - TYPE_JSON, - TYPE_JSONARRAY, - TYPE_BODY - }; + enum Method { METHOD_GET, METHOD_HEAD, METHOD_POST, METHOD_PUT, METHOD_PATCH, METHOD_DELETE }; + enum Type { TYPE_NONE, TYPE_FORM, TYPE_JSON, TYPE_JSONARRAY, TYPE_BODY }; explicit NetworkParams(QObject *parent = nullptr); @@ -145,11 +132,11 @@ Q_OBJECT * @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) + 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 @@ -157,9 +144,11 @@ Q_PROPERTY_AUTO(bool, openLog) explicit Network(QObject *parent = nullptr); public: -SINGLETON(Network) + SINGLETON(Network) - static Network *create(QQmlEngine *qmlEngine, QJSEngine *jsEngine) { return getInstance(); } + static Network *create(QQmlEngine *qmlEngine, QJSEngine *jsEngine) { + return getInstance(); + } Q_INVOKABLE NetworkParams *get(const QString &url); @@ -204,7 +193,9 @@ SINGLETON(Network) void handleDownload(NetworkParams *params, NetworkCallable *result); private: - static void sendRequest(QNetworkAccessManager *manager, QNetworkRequest request, NetworkParams *params, QNetworkReply *&reply, bool isFirst, const QPointer &callable); + static void sendRequest(QNetworkAccessManager *manager, QNetworkRequest request, + NetworkParams *params, QNetworkReply *&reply, bool isFirst, + const QPointer &callable); static void addQueryParam(QUrl *url, const QMap ¶ms); @@ -222,7 +213,8 @@ SINGLETON(Network) static void printRequestStartLog(const QNetworkRequest &request, NetworkParams *params); - static void printRequestEndLog(const QNetworkRequest &request, NetworkParams *params, QNetworkReply *&reply, const QString &response); + static void printRequestEndLog(const QNetworkRequest &request, NetworkParams *params, + QNetworkReply *&reply, const QString &response); static QString map2String(const QMap &map); diff --git a/example/src/helper/SettingsHelper.cpp b/example/src/helper/SettingsHelper.cpp index 34e8cfda..5bbd1508 100644 --- a/example/src/helper/SettingsHelper.cpp +++ b/example/src/helper/SettingsHelper.cpp @@ -4,7 +4,6 @@ #include SettingsHelper::SettingsHelper(QObject *parent) : QObject(parent) { - } SettingsHelper::~SettingsHelper() = default; @@ -13,6 +12,7 @@ void SettingsHelper::save(const QString &key, QVariant val) { m_settings->setValue(key, val); } + QVariant SettingsHelper::get(const QString &key, QVariant def) { QVariant data = m_settings->value(key); if (!data.isNull() && data.isValid()) { @@ -25,6 +25,7 @@ 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; + const QString iniFilePath = + QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + "/" + iniFileName; m_settings.reset(new QSettings(iniFilePath, QSettings::IniFormat)); } diff --git a/example/src/helper/SettingsHelper.h b/example/src/helper/SettingsHelper.h index 9440fdf7..a8917570 100644 --- a/example/src/helper/SettingsHelper.h +++ b/example/src/helper/SettingsHelper.h @@ -10,32 +10,35 @@ #include "src/singleton.h" class SettingsHelper : public QObject { -Q_OBJECT + Q_OBJECT private: 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(const 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 = {}); private: diff --git a/example/src/helper/TranslateHelper.cpp b/example/src/helper/TranslateHelper.cpp index 5ac3bf09..38c34c0d 100644 --- a/example/src/helper/TranslateHelper.cpp +++ b/example/src/helper/TranslateHelper.cpp @@ -18,7 +18,8 @@ void TranslateHelper::init(QQmlEngine *engine) { _translator = new QTranslator(this); QGuiApplication::installTranslator(_translator); QString translatorPath = QGuiApplication::applicationDirPath() + "/i18n"; - if (_translator->load(QString::fromStdString("%1/example_%2.qm").arg(translatorPath, _current))) { + 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 1476871a..7e7a73e5 100644 --- a/example/src/helper/TranslateHelper.h +++ b/example/src/helper/TranslateHelper.h @@ -7,20 +7,18 @@ #include "src/stdafx.h" class TranslateHelper : public QObject { -Q_OBJECT -Q_PROPERTY_AUTO(QString, current) -Q_PROPERTY_READONLY_AUTO(QStringList, languages) + Q_OBJECT + Q_PROPERTY_AUTO(QString, current) + Q_PROPERTY_READONLY_AUTO(QStringList, languages) private: [[maybe_unused]] explicit TranslateHelper(QObject *parent = nullptr); public: -SINGLETON(TranslateHelper) - + 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 ede4fc23..a6b4d918 100644 --- a/example/src/main.cpp +++ b/example/src/main.cpp @@ -20,36 +20,36 @@ #include "src/helper/TranslateHelper.h" #include "src/helper/Network.h" + #ifdef FLUENTUI_BUILD_STATIC_LIB -#if (QT_VERSION > QT_VERSION_CHECK(6, 2, 0)) +# if (QT_VERSION > QT_VERSION_CHECK(6, 2, 0)) Q_IMPORT_QML_PLUGIN(FluentUIPlugin) -#endif -#include +# endif +# include #endif #ifdef WIN32 -#include "app_dmp.h" +# include "app_dmp.h" #endif -int main(int argc, char *argv[]) -{ +int main(int argc, char *argv[]) { const char *uri = "example"; int major = 1; int minor = 0; #ifdef WIN32 ::SetUnhandledExceptionFilter(MyUnhandledExceptionFilter); - qputenv("QT_QPA_PLATFORM","windows:darkmode=2"); + qputenv("QT_QPA_PLATFORM", "windows:darkmode=2"); #endif #if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) - qputenv("QT_QUICK_CONTROLS_STYLE","Basic"); + qputenv("QT_QUICK_CONTROLS_STYLE", "Basic"); #else - qputenv("QT_QUICK_CONTROLS_STYLE","Default"); + qputenv("QT_QUICK_CONTROLS_STYLE", "Default"); #endif #ifdef Q_OS_LINUX - //fix bug UOSv20 does not print logs - qputenv("QT_LOGGING_RULES",""); - //fix bug UOSv20 v-sync does not work - qputenv("QSG_RENDER_LOOP","basic"); + // fix bug UOSv20 does not print logs + qputenv("QT_LOGGING_RULES", ""); + // fix bug UOSv20 v-sync does not work + qputenv("QSG_RENDER_LOOP", "basic"); #endif QApplication::setOrganizationName("ZhuZiChu"); QApplication::setOrganizationDomain("https://zhuzichu520.github.io"); @@ -58,43 +58,47 @@ int main(int argc, char *argv[]) QApplication::setApplicationVersion(APPLICATION_VERSION); QApplication::setQuitOnLastWindowClosed(false); SettingsHelper::getInstance()->init(argv); - Log::setup(argv,uri); + Log::setup(argv, uri); #if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL); #endif #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); -#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) - QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); -#endif +# if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QApplication::setHighDpiScaleFactorRoundingPolicy( + Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); +# endif #endif QApplication app(argc, argv); //@uri example qmlRegisterType(uri, major, minor, "CircularReveal"); qmlRegisterType(uri, major, minor, "FileWatcher"); 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"); + 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()); - engine.rootContext()->setContextProperty("SettingsHelper",SettingsHelper::getInstance()); - engine.rootContext()->setContextProperty("InitializrHelper",InitializrHelper::getInstance()); - engine.rootContext()->setContextProperty("TranslateHelper",TranslateHelper::getInstance()); - engine.rootContext()->setContextProperty("Network",Network::getInstance()); + engine.rootContext()->setContextProperty("AppInfo", AppInfo::getInstance()); + engine.rootContext()->setContextProperty("SettingsHelper", SettingsHelper::getInstance()); + engine.rootContext()->setContextProperty("InitializrHelper", InitializrHelper::getInstance()); + engine.rootContext()->setContextProperty("TranslateHelper", TranslateHelper::getInstance()); + engine.rootContext()->setContextProperty("Network", Network::getInstance()); #ifdef FLUENTUI_BUILD_STATIC_LIB FluentUI::getInstance()->registerTypes(&engine); #endif const QUrl url(QStringLiteral("qrc:/example/qml/App.qml")); - QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, - &app, [url](QObject *obj, const QUrl &objUrl) { + QObject::connect( + &engine, &QQmlApplicationEngine::objectCreated, &app, + [url](QObject *obj, const QUrl &objUrl) { if (!obj && url == objUrl) QCoreApplication::exit(-1); - }, Qt::QueuedConnection); + }, + Qt::QueuedConnection); engine.load(url); const int exec = QApplication::exec(); if (exec == 931) { diff --git a/example/src/singleton.h b/example/src/singleton.h index 9583c687..9eaa2da1 100644 --- a/example/src/singleton.h +++ b/example/src/singleton.h @@ -3,22 +3,23 @@ /** * @brief The Singleton class */ -template +template class Singleton { public: static T *getInstance(); }; -template +template T *Singleton::getInstance() { static T *instance = new T(); return instance; } -#define SINGLETON(Class) \ -private: \ - friend class Singleton; \ - public: \ - static Class* getInstance() { \ - return Singleton::getInstance(); \ -} +#define SINGLETON(Class) \ +private: \ + friend class Singleton; \ + \ +public: \ + static Class *getInstance() { \ + return Singleton::getInstance(); \ + } diff --git a/example/src/stdafx.h b/example/src/stdafx.h index f902bad0..1728caf4 100644 --- a/example/src/stdafx.h +++ b/example/src/stdafx.h @@ -1,50 +1,47 @@ #pragma once -#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) \ -{ \ - _##M = in_##M; \ - Q_EMIT M##Changed(); \ -} \ - TYPE M() \ -{ \ - return _##M; \ -} \ - private: \ +#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) { \ + _##M = in_##M; \ + Q_EMIT M##Changed(); \ + } \ + TYPE M() { \ + return _##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: \ +#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) \ -Q_PROPERTY(TYPE M READ M NOTIFY M##Changed FINAL) \ - public: \ - Q_SIGNAL void M##Changed(); \ - void M(const TYPE& in_##M) \ -{ \ - _##M = in_##M; \ - Q_EMIT M##Changed(); \ -} \ - TYPE M() \ -{ \ - return _##M; \ -} \ - private: \ +#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(const TYPE &in_##M) { \ + _##M = in_##M; \ + Q_EMIT M##Changed(); \ + } \ + TYPE M() { \ + return _##M; \ + } \ + \ +private: \ TYPE _##M; diff --git a/src/Def.h b/src/Def.h index 872d9e0d..0f534c7b 100644 --- a/src/Def.h +++ b/src/Def.h @@ -59,11 +59,7 @@ namespace FluPageType { namespace FluWindowType { Q_NAMESPACE - enum LaunchMode { - Standard = 0x0000, - SingleTask = 0x0001, - SingleInstance = 0x0002 - }; + enum LaunchMode { Standard = 0x0000, SingleTask = 0x0001, SingleInstance = 0x0002 }; Q_ENUM_NS(LaunchMode) @@ -72,11 +68,7 @@ namespace FluWindowType { namespace FluTreeViewType { Q_NAMESPACE - enum SelectionMode { - None = 0x0000, - Single = 0x0001, - Multiple = 0x0002 - }; + enum SelectionMode { None = 0x0000, Single = 0x0001, Multiple = 0x0002 }; Q_ENUM_NS(SelectionMode) @@ -85,12 +77,7 @@ namespace FluTreeViewType { namespace FluStatusLayoutType { Q_NAMESPACE - enum StatusMode { - Loading = 0x0000, - Empty = 0x0001, - Error = 0x0002, - Success = 0x0004 - }; + enum StatusMode { Loading = 0x0000, Empty = 0x0001, Error = 0x0002, Success = 0x0004 }; Q_ENUM_NS(StatusMode) @@ -99,11 +86,7 @@ namespace FluStatusLayoutType { namespace FluContentDialogType { Q_NAMESPACE - enum ButtonFlag { - NeutralButton = 0x0001, - NegativeButton = 0x0002, - PositiveButton = 0x0004 - }; + enum ButtonFlag { NeutralButton = 0x0001, NegativeButton = 0x0002, PositiveButton = 0x0004 }; Q_ENUM_NS(ButtonFlag) @@ -112,10 +95,7 @@ namespace FluContentDialogType { namespace FluTimePickerType { Q_NAMESPACE - enum HourFormat { - H = 0x0000, - HH = 0x0001 - }; + enum HourFormat { H = 0x0000, HH = 0x0001 }; Q_ENUM_NS(HourFormat) @@ -124,11 +104,7 @@ namespace FluTimePickerType { namespace FluCalendarViewType { Q_NAMESPACE - enum DisplayMode { - Month = 0x0000, - Year = 0x0001, - Decade = 0x0002 - }; + enum DisplayMode { Month = 0x0000, Year = 0x0001, Decade = 0x0002 }; Q_ENUM_NS(DisplayMode) @@ -137,19 +113,11 @@ namespace FluCalendarViewType { namespace FluTabViewType { Q_NAMESPACE - enum TabWidthBehavior { - Equal = 0x0000, - SizeToContent = 0x0001, - Compact = 0x0002 - }; + enum TabWidthBehavior { Equal = 0x0000, SizeToContent = 0x0001, Compact = 0x0002 }; Q_ENUM_NS(TabWidthBehavior) - enum CloseButtonVisibility { - Never = 0x0000, - Always = 0x0001, - OnHover = 0x0002 - }; + enum CloseButtonVisibility { Never = 0x0000, Always = 0x0001, OnHover = 0x0002 }; Q_ENUM_NS(CloseButtonVisibility) @@ -158,19 +126,11 @@ namespace FluTabViewType { namespace FluNavigationViewType { Q_NAMESPACE - enum DisplayMode { - Open = 0x0000, - Compact = 0x0001, - Minimal = 0x0002, - Auto = 0x0004 - }; + enum DisplayMode { Open = 0x0000, Compact = 0x0001, Minimal = 0x0002, Auto = 0x0004 }; Q_ENUM_NS(DisplayMode) - enum PageMode { - Stack = 0x0000, - NoStack = 0x0001 - }; + enum PageMode { Stack = 0x0000, NoStack = 0x0001 }; Q_ENUM_NS(PageMode) diff --git a/src/FluAccentColor.h b/src/FluAccentColor.h index f8c2edda..5c33fea0 100644 --- a/src/FluAccentColor.h +++ b/src/FluAccentColor.h @@ -9,15 +9,15 @@ * @brief The FluAccentColor class */ class FluAccentColor : public QObject { -Q_OBJECT + 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) + 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); diff --git a/src/FluApp.cpp b/src/FluApp.cpp index da3ab8d6..65f0b3e7 100644 --- a/src/FluApp.cpp +++ b/src/FluApp.cpp @@ -23,7 +23,7 @@ void FluApp::init(QObject *launcher, QLocale locale) { _translator = new QTranslator(this); QGuiApplication::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)) { _engine->retranslate(); @@ -34,7 +34,8 @@ void FluApp::init(QObject *launcher, QLocale locale) { [[maybe_unused]] QJsonArray FluApp::iconData(const QString &keyword) { QJsonArray arr; - QMetaEnum enumType = FluentIcons::staticMetaObject.enumerator(FluentIcons::staticMetaObject.indexOfEnumerator("Type")); + QMetaEnum enumType = FluentIcons::staticMetaObject.enumerator( + FluentIcons::staticMetaObject.indexOfEnumerator("Type")); for (int i = 0; i <= enumType.keyCount() - 1; ++i) { QString name = enumType.key(i); int icon = enumType.value(i); diff --git a/src/FluApp.h b/src/FluApp.h index f3d47ab7..a78305a9 100644 --- a/src/FluApp.h +++ b/src/FluApp.h @@ -16,12 +16,11 @@ * @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) -Q_PROPERTY_AUTO_P(QObject*,launcher) + Q_OBJECT + Q_PROPERTY_AUTO(bool, useSystemAppBar) + Q_PROPERTY_AUTO(QString, windowIcon) + Q_PROPERTY_AUTO(QLocale, locale) + Q_PROPERTY_AUTO_P(QObject *, launcher) QML_NAMED_ELEMENT(FluApp) QML_SINGLETON @@ -31,9 +30,11 @@ Q_PROPERTY_AUTO_P(QObject*,launcher) ~FluApp() override; public: -SINGLETON(FluApp) + SINGLETON(FluApp) - static FluApp *create(QQmlEngine *, QJSEngine *) { return getInstance(); } + static FluApp *create(QQmlEngine *, QJSEngine *) { + return getInstance(); + } Q_INVOKABLE void init(QObject *launcher, QLocale locale = QLocale::system()); diff --git a/src/FluCaptcha.cpp b/src/FluCaptcha.cpp index 6dc4e94c..a328854b 100644 --- a/src/FluCaptcha.cpp +++ b/src/FluCaptcha.cpp @@ -40,7 +40,8 @@ void FluCaptcha::paint(QPainter *painter) { 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(); } diff --git a/src/FluCaptcha.h b/src/FluCaptcha.h index b0bc0e3d..451c8eba 100644 --- a/src/FluCaptcha.h +++ b/src/FluCaptcha.h @@ -9,10 +9,10 @@ * @brief The FluCaptcha class */ class FluCaptcha : public QQuickPaintedItem { -Q_OBJECT + Q_OBJECT -Q_PROPERTY_AUTO(QFont, font); -Q_PROPERTY_AUTO(bool, ignoreCase); + Q_PROPERTY_AUTO(QFont, font) + Q_PROPERTY_AUTO(bool, ignoreCase) QML_NAMED_ELEMENT(FluCaptcha) public: diff --git a/src/FluColors.h b/src/FluColors.h index 55efac31..841c4317 100644 --- a/src/FluColors.h +++ b/src/FluColors.h @@ -11,41 +11,41 @@ * @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_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); + 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 @@ -53,9 +53,11 @@ Q_PROPERTY_AUTO_P(FluAccentColor*, Green); explicit FluColors(QObject *parent = nullptr); public: -SINGLETON(FluColors) + SINGLETON(FluColors) [[maybe_unused]] Q_INVOKABLE FluAccentColor *createAccentColor(const QColor &primaryColor); - static FluColors *create(QQmlEngine *, QJSEngine *) { return getInstance(); } + static FluColors *create(QQmlEngine *, QJSEngine *) { + return getInstance(); + } }; diff --git a/src/FluFrameless.h b/src/FluFrameless.h index e57fc447..332fb33d 100644 --- a/src/FluFrameless.h +++ b/src/FluFrameless.h @@ -14,16 +14,15 @@ using QT_NATIVE_EVENT_RESULT_TYPE = long; using QT_ENTER_EVENT_TYPE = QEvent; #endif - 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) + 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); @@ -32,7 +31,8 @@ Q_PROPERTY_AUTO(bool, fixSize) void componentComplete() override; - [[maybe_unused]] bool nativeEventFilter(const QByteArray &eventType, void *message, QT_NATIVE_EVENT_RESULT_TYPE *result) override; + [[maybe_unused]] bool nativeEventFilter(const QByteArray &eventType, void *message, + QT_NATIVE_EVENT_RESULT_TYPE *result) override; [[maybe_unused]] Q_INVOKABLE void showFullScreen(); diff --git a/src/FluHotkey.cpp b/src/FluHotkey.cpp index 9744b573..efe51090 100644 --- a/src/FluHotkey.cpp +++ b/src/FluHotkey.cpp @@ -1,31 +1,26 @@ #include "FluHotkey.h" - #include "QGuiApplication" -FluHotkey::FluHotkey(QObject *parent) - : QObject{parent} -{ + +FluHotkey::FluHotkey(QObject *parent) : QObject{parent} { _sequence = ""; _isRegistered = false; - connect(this,&FluHotkey::sequenceChanged,this,[=]{ - if(_hotkey){ - delete _hotkey; + connect(this, &FluHotkey::sequenceChanged, this, [=] { + if (_hotkey) { + delete _hotkey; _hotkey = nullptr; } _hotkey = new QHotkey(QKeySequence(_sequence), true, qApp); this->isRegistered(_hotkey->isRegistered()); - QObject::connect(_hotkey, &QHotkey::activated, qApp, [=](){ - Q_EMIT this->activated(); - }); - QObject::connect(_hotkey, &QHotkey::registeredChanged, qApp, [=](){ - this->isRegistered(_hotkey->isRegistered()); - }); + QObject::connect(_hotkey, &QHotkey::activated, qApp, [=]() { Q_EMIT this->activated(); }); + QObject::connect(_hotkey, &QHotkey::registeredChanged, qApp, + [=]() { this->isRegistered(_hotkey->isRegistered()); }); }); } -FluHotkey::~FluHotkey(){ - if(_hotkey){ +FluHotkey::~FluHotkey() { + if (_hotkey) { delete _hotkey; _hotkey = nullptr; } diff --git a/src/FluHotkey.h b/src/FluHotkey.h index 56816abf..9b63861a 100644 --- a/src/FluHotkey.h +++ b/src/FluHotkey.h @@ -6,19 +6,20 @@ #include "qhotkey/qhotkey.h" #include "stdafx.h" -class FluHotkey : public QObject -{ +class FluHotkey : public QObject { + Q_OBJECT - Q_PROPERTY_AUTO(QString,sequence) - Q_PROPERTY_AUTO(QString,name) - Q_PROPERTY_READONLY_AUTO(bool,isRegistered) + Q_PROPERTY_AUTO(QString, sequence) + Q_PROPERTY_AUTO(QString, name) + Q_PROPERTY_READONLY_AUTO(bool, isRegistered) QML_NAMED_ELEMENT(FluHotkey) public: explicit FluHotkey(QObject *parent = nullptr); ~FluHotkey(); Q_SIGNAL void activated(); + private: - QHotkey* _hotkey = nullptr; + QHotkey *_hotkey = nullptr; }; #endif // FLUHOTKEY_H diff --git a/src/FluQrCodeItem.h b/src/FluQrCodeItem.h index 0e665d61..fefa00d4 100644 --- a/src/FluQrCodeItem.h +++ b/src/FluQrCodeItem.h @@ -9,15 +9,15 @@ * @brief The FluQrCodeItem class */ class FluQrCodeItem : public QQuickPaintedItem { -Q_OBJECT + Q_OBJECT -Q_PROPERTY_AUTO(QString, text) -Q_PROPERTY_AUTO(QColor, color) -Q_PROPERTY_AUTO(QColor, bgColor) -Q_PROPERTY_AUTO(int, size); + 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; -}; \ No newline at end of file +}; diff --git a/src/FluRectangle.cpp b/src/FluRectangle.cpp index b6e62246..00890a76 100644 --- a/src/FluRectangle.cpp +++ b/src/FluRectangle.cpp @@ -8,6 +8,7 @@ FluRectangle::FluRectangle(QQuickItem *parent) : QQuickPaintedItem(parent) { connect(this, &FluRectangle::radiusChanged, this, [=] { update(); }); } + void FluRectangle::paint(QPainter *painter) { painter->save(); painter->setRenderHint(QPainter::Antialiasing); @@ -15,13 +16,19 @@ void FluRectangle::paint(QPainter *painter) { QRectF rect = boundingRect(); path.moveTo(rect.bottomRight() - QPointF(0, _radius[2])); path.lineTo(rect.topRight() + QPointF(0, _radius[1])); - path.arcTo(QRectF(QPointF(rect.topRight() - QPointF(_radius[1] * 2, 0)), QSize(_radius[1] * 2, _radius[1] * 2)), 0, 90); + path.arcTo(QRectF(QPointF(rect.topRight() - QPointF(_radius[1] * 2, 0)), + QSize(_radius[1] * 2, _radius[1] * 2)), + 0, 90); path.lineTo(rect.topLeft() + QPointF(_radius[0], 0)); path.arcTo(QRectF(QPointF(rect.topLeft()), QSize(_radius[0] * 2, _radius[0] * 2)), 90, 90); path.lineTo(rect.bottomLeft() - QPointF(0, _radius[3])); - path.arcTo(QRectF(QPointF(rect.bottomLeft() - QPointF(0, _radius[3] * 2)), QSize(_radius[3] * 2, _radius[3] * 2)), 180, 90); + 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); + 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->restore(); } diff --git a/src/FluRectangle.h b/src/FluRectangle.h index 579b7c6f..4690ff39 100644 --- a/src/FluRectangle.h +++ b/src/FluRectangle.h @@ -9,9 +9,9 @@ * @brief The FluRectangle class */ class FluRectangle : public QQuickPaintedItem { -Q_OBJECT -Q_PROPERTY_AUTO(QColor, color) -Q_PROPERTY_AUTO(QList, radius) + Q_OBJECT + Q_PROPERTY_AUTO(QColor, color) + Q_PROPERTY_AUTO(QList, radius) QML_NAMED_ELEMENT(FluRectangle) public: explicit FluRectangle(QQuickItem *parent = nullptr); diff --git a/src/FluTableModel.cpp b/src/FluTableModel.cpp index eb22de64..35e6526d 100644 --- a/src/FluTableModel.cpp +++ b/src/FluTableModel.cpp @@ -1,13 +1,13 @@ #include "FluTableModel.h" FluTableModel::FluTableModel(QObject *parent) : QAbstractTableModel{parent} { - } int FluTableModel::rowCount(const QModelIndex &parent) const { return _rows.count(); } + int FluTableModel::columnCount(const QModelIndex &parent) const { return this->_columnSource.size(); } @@ -26,8 +26,8 @@ QVariant FluTableModel::data(const QModelIndex &index, int role) const { QHash FluTableModel::roleNames() const { return { - {FluTableModel::RowModel, "rowModel"}, - {FluTableModel::ColumnModel, "columnModel"} + {FluTableModel::RowModel, "rowModel" }, + {FluTableModel::ColumnModel, "columnModel"} }; } diff --git a/src/FluTableModel.h b/src/FluTableModel.h index a734aa80..e16824b1 100644 --- a/src/FluTableModel.h +++ b/src/FluTableModel.h @@ -7,16 +7,14 @@ #include "stdafx.h" class FluTableModel : public QAbstractTableModel { -Q_OBJECT -Q_PROPERTY_AUTO(QList, columnSource) -Q_PROPERTY_AUTO(QList, rows) + Q_OBJECT + Q_PROPERTY_AUTO(QList, columnSource) + Q_PROPERTY_AUTO(QList, rows) Q_PROPERTY(int rowCount READ rowCount CONSTANT) QML_NAMED_ELEMENT(FluTableModel) public: - enum TableModelRoles { - RowModel = 0x0101, - ColumnModel = 0x0102 - }; + enum TableModelRoles { RowModel = 0x0101, ColumnModel = 0x0102 }; + explicit FluTableModel(QObject *parent = nullptr); @@ -24,7 +22,8 @@ Q_PROPERTY_AUTO(QList, rows) [[nodiscard]] int columnCount(const QModelIndex &parent = {}) const override; - [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + [[nodiscard]] QVariant data(const QModelIndex &index, + int role = Qt::DisplayRole) const override; [[nodiscard]] QHash roleNames() const override; @@ -39,7 +38,6 @@ Q_PROPERTY_AUTO(QList, rows) Q_INVOKABLE void removeRow(int rowIndex, int rows = 1); Q_INVOKABLE void appendRow(QVariant row); - }; diff --git a/src/FluTableSortProxyModel.cpp b/src/FluTableSortProxyModel.cpp index 796c8113..0803f3de 100644 --- a/src/FluTableSortProxyModel.cpp +++ b/src/FluTableSortProxyModel.cpp @@ -2,13 +2,14 @@ #include -FluTableSortProxyModel::FluTableSortProxyModel(QSortFilterProxyModel *parent) : QSortFilterProxyModel{parent} { - connect(this, &FluTableSortProxyModel::modelChanged, this, [=] { - setSourceModel(this->model().value()); - }); +FluTableSortProxyModel::FluTableSortProxyModel(QSortFilterProxyModel *parent) + : QSortFilterProxyModel{parent} { + connect(this, &FluTableSortProxyModel::modelChanged, this, + [=] { setSourceModel(this->model().value()); }); } -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()) { return true; @@ -18,11 +19,13 @@ bool FluTableSortProxyModel::filterAcceptsRow(int source_row, const QModelIndex return filter.call(data).toBool(); } -bool FluTableSortProxyModel::filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const { +bool FluTableSortProxyModel::filterAcceptsColumn(int source_column, + const QModelIndex &source_parent) const { return true; } -bool FluTableSortProxyModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const { +bool FluTableSortProxyModel::lessThan(const QModelIndex &source_left, + const QModelIndex &source_right) const { QJSValue comparator = _comparator; if (comparator.isUndefined()) { return true; @@ -58,18 +61,25 @@ bool FluTableSortProxyModel::lessThan(const QModelIndex &source_left, const QMod [[maybe_unused]] QVariant FluTableSortProxyModel::getRow(int rowIndex) { QVariant result; - QMetaObject::invokeMethod(_model.value(), "getRow", Q_RETURN_ARG(QVariant, result), Q_ARG(int, mapToSource(index(rowIndex, 0)).row())); + QMetaObject::invokeMethod(_model.value(), "getRow", + Q_RETURN_ARG(QVariant, result), + Q_ARG(int, mapToSource(index(rowIndex, 0)).row())); return result; } [[maybe_unused]] void FluTableSortProxyModel::setRow(int rowIndex, const QVariant &val) { - QMetaObject::invokeMethod(_model.value(), "setRow", Q_ARG(int, mapToSource(index(rowIndex, 0)).row()), Q_ARG(QVariant, val)); + QMetaObject::invokeMethod(_model.value(), "setRow", + Q_ARG(int, mapToSource(index(rowIndex, 0)).row()), + Q_ARG(QVariant, val)); } [[maybe_unused]] void FluTableSortProxyModel::insertRow(int rowIndex, const QVariant &val) { - QMetaObject::invokeMethod(_model.value(), "insertRow", Q_ARG(int, mapToSource(index(rowIndex, 0)).row()), Q_ARG(QVariant, val)); + QMetaObject::invokeMethod(_model.value(), "insertRow", + Q_ARG(int, mapToSource(index(rowIndex, 0)).row()), + Q_ARG(QVariant, val)); } [[maybe_unused]] void FluTableSortProxyModel::removeRow(int rowIndex, int rows) { - QMetaObject::invokeMethod(_model.value(), "removeRow", Q_ARG(int, mapToSource(index(rowIndex, 0)).row()), Q_ARG(int, rows)); + QMetaObject::invokeMethod(_model.value(), "removeRow", + Q_ARG(int, mapToSource(index(rowIndex, 0)).row()), Q_ARG(int, rows)); } diff --git a/src/FluTableSortProxyModel.h b/src/FluTableSortProxyModel.h index 319dc118..bf73a7da 100644 --- a/src/FluTableSortProxyModel.h +++ b/src/FluTableSortProxyModel.h @@ -7,8 +7,8 @@ #include "stdafx.h" class FluTableSortProxyModel : public QSortFilterProxyModel { -Q_OBJECT -Q_PROPERTY_AUTO_P(QVariant, model) + Q_OBJECT + Q_PROPERTY_AUTO_P(QVariant, model) QML_NAMED_ELEMENT(FluTableSortProxyModel) public: explicit FluTableSortProxyModel(QSortFilterProxyModel *parent = nullptr); diff --git a/src/FluTextStyle.h b/src/FluTextStyle.h index 8143ce1e..da93f777 100644 --- a/src/FluTextStyle.h +++ b/src/FluTextStyle.h @@ -10,16 +10,17 @@ * @brief The FluTextStyle class */ class FluTextStyle : public QObject { -Q_OBJECT + 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 @@ -27,7 +28,9 @@ Q_PROPERTY_AUTO(QFont, Display); explicit FluTextStyle(QObject *parent = nullptr); public: -SINGLETON(FluTextStyle) + SINGLETON(FluTextStyle) - static FluTextStyle *create(QQmlEngine *, QJSEngine *) { return getInstance(); } + static FluTextStyle *create(QQmlEngine *, QJSEngine *) { + return getInstance(); + } }; diff --git a/src/FluTheme.cpp b/src/FluTheme.cpp index 31be64e6..e9a9fd5d 100644 --- a/src/FluTheme.cpp +++ b/src/FluTheme.cpp @@ -24,15 +24,13 @@ FluTheme::FluTheme(QObject *parent) : QObject{parent} { _blurBehindWindowEnabled = false; QGuiApplication::instance()->installEventFilter(this); refreshColors(); - connect(this, &FluTheme::darkModeChanged, this, [=] { - Q_EMIT darkChanged(); - }); + connect(this, &FluTheme::darkModeChanged, this, [=] { Q_EMIT darkChanged(); }); connect(this, &FluTheme::darkChanged, this, [=] { refreshColors(); }); connect(this, &FluTheme::accentColorChanged, this, [=] { refreshColors(); }); - connect(&_watcher, &QFileSystemWatcher::fileChanged, this, [=](const QString &path) { - Q_EMIT desktopImagePathChanged(); - }); - connect(this, &FluTheme::blurBehindWindowEnabledChanged, this, [=] { checkUpdateDesktopImage(); }); + connect(&_watcher, &QFileSystemWatcher::fileChanged, this, + [=](const QString &path) { Q_EMIT desktopImagePathChanged(); }); + connect(this, &FluTheme::blurBehindWindowEnabledChanged, this, + [=] { checkUpdateDesktopImage(); }); startTimer(1000); } @@ -47,11 +45,16 @@ void FluTheme::refreshColors() { 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)); - frameColor(isDark ? QColor(56, 56, 56, qRound(255 * 0.8)) : QColor(243, 243, 243, qRound(255 * 0.8))); - frameActiveColor(isDark ? QColor(48, 48, 48, qRound(255 * 0.8)) : QColor(255, 255, 255, qRound(255 * 0.8))); - 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))); + frameColor(isDark ? QColor(56, 56, 56, qRound(255 * 0.8)) + : QColor(243, 243, 243, qRound(255 * 0.8))); + frameActiveColor(isDark ? QColor(48, 48, 48, qRound(255 * 0.8)) + : QColor(255, 255, 255, qRound(255 * 0.8))); + 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 *, QEvent *event) { diff --git a/src/FluTheme.h b/src/FluTheme.h index 3fa1c52e..3687cadd 100644 --- a/src/FluTheme.h +++ b/src/FluTheme.h @@ -16,28 +16,28 @@ * @brief The FluTheme class */ class FluTheme : public QObject { -Q_OBJECT + Q_OBJECT Q_PROPERTY(bool dark READ dark NOTIFY darkChanged) -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, frameColor); -Q_PROPERTY_AUTO(QColor, frameActiveColor); -Q_PROPERTY_AUTO(QColor, itemHoverColor); -Q_PROPERTY_AUTO(QColor, itemPressColor); -Q_PROPERTY_AUTO(QColor, itemCheckColor); -Q_PROPERTY_AUTO(QString, desktopImagePath); -Q_PROPERTY_AUTO(int, darkMode); -Q_PROPERTY_AUTO(bool, nativeText); -Q_PROPERTY_AUTO(bool, animationEnabled); -Q_PROPERTY_AUTO(bool, blurBehindWindowEnabled); + 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, frameColor) + Q_PROPERTY_AUTO(QColor, frameActiveColor) + Q_PROPERTY_AUTO(QColor, itemHoverColor) + Q_PROPERTY_AUTO(QColor, itemPressColor) + Q_PROPERTY_AUTO(QColor, itemCheckColor) + Q_PROPERTY_AUTO(QString, desktopImagePath) + Q_PROPERTY_AUTO(int, darkMode) + Q_PROPERTY_AUTO(bool, nativeText) + Q_PROPERTY_AUTO(bool, animationEnabled) + Q_PROPERTY_AUTO(bool, blurBehindWindowEnabled) QML_NAMED_ELEMENT(FluTheme) QML_SINGLETON @@ -49,17 +49,18 @@ Q_PROPERTY_AUTO(bool, blurBehindWindowEnabled); void refreshColors(); protected: - void timerEvent(QTimerEvent *event) override; void checkUpdateDesktopImage(); public: -SINGLETON(FluTheme) + SINGLETON(FluTheme) Q_SIGNAL void darkChanged(); - static FluTheme *create(QQmlEngine *, QJSEngine *) { return getInstance(); } + static FluTheme *create(QQmlEngine *, QJSEngine *) { + return getInstance(); + } bool dark() const; @@ -67,4 +68,4 @@ SINGLETON(FluTheme) bool _systemDark; QFileSystemWatcher _watcher; QMutex _mutex; -}; \ No newline at end of file +}; diff --git a/src/FluTools.cpp b/src/FluTools.cpp index bae664c3..dbe03a06 100644 --- a/src/FluTools.cpp +++ b/src/FluTools.cpp @@ -17,15 +17,14 @@ #include #ifdef Q_OS_WIN -#pragma comment (lib, "user32.lib") +# pragma comment(lib, "user32.lib") -#include -#include +# include +# include #endif FluTools::FluTools(QObject *parent) : QObject{parent} { - } void FluTools::clipText(const QString &text) { @@ -164,11 +163,12 @@ void FluTools::showFileInFolder(const QString &path) { #if defined(Q_OS_LINUX) QFileInfo fileInfo(path); auto process = "xdg-open"; - auto arguments = { fileInfo.absoluteDir().absolutePath() }; + auto arguments = {fileInfo.absoluteDir().absolutePath()}; QProcess::startDetached(process, arguments); #endif #if defined(Q_OS_MACOS) - QProcess::execute("/usr/bin/osascript", {"-e", "tell application \"Finder\" to reveal POSIX file \"" + path + "\""}); + QProcess::execute("/usr/bin/osascript", + {"-e", "tell application \"Finder\" to reveal POSIX file \"" + path + "\""}); QProcess::execute("/usr/bin/osascript", {"-e", "tell application \"Finder\" to activate"}); #endif } @@ -206,7 +206,9 @@ int FluTools::cursorScreenIndex() { int FluTools::windowBuildNumber() { #if defined(Q_OS_WIN) - QSettings regKey{QString::fromUtf8(R"(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; @@ -289,7 +291,7 @@ QString FluTools::getWallpaperFilePath() { process.start("osascript", args); process.waitForFinished(); QByteArray result = process.readAllStandardOutput().trimmed(); - if(result.isEmpty()){ + if (result.isEmpty()) { return "/System/Library/CoreServices/DefaultDesktop.heic"; } return result; @@ -313,5 +315,7 @@ QColor FluTools::imageMainColor(const QImage &image, double bright) { } } } - return QColor(int(bright * r / t) > 255 ? 255 : int(bright * r / t), int(bright * g / t) > 255 ? 255 : int(bright * g / t), int(bright * b / t) > 255 ? 255 : int(bright * b / t)); + return QColor(int(bright * r / t) > 255 ? 255 : int(bright * r / t), + int(bright * g / t) > 255 ? 255 : int(bright * g / t), + int(bright * b / t) > 255 ? 255 : int(bright * b / t)); } diff --git a/src/FluTools.h b/src/FluTools.h index a044c5d5..c46c809a 100644 --- a/src/FluTools.h +++ b/src/FluTools.h @@ -11,7 +11,7 @@ * @brief The FluTools class */ class FluTools : public QObject { -Q_OBJECT + Q_OBJECT QML_NAMED_ELEMENT(FluTools) QML_SINGLETON @@ -19,9 +19,11 @@ Q_OBJECT explicit FluTools(QObject *parent = nullptr); public: -SINGLETON(FluTools) + SINGLETON(FluTools) - static FluTools *create(QQmlEngine *, QJSEngine *) { return getInstance(); } + static FluTools *create(QQmlEngine *, QJSEngine *) { + return getInstance(); + } Q_INVOKABLE int qtMajor(); diff --git a/src/FluTreeModel.cpp b/src/FluTreeModel.cpp index f080a034..2308275c 100644 --- a/src/FluTreeModel.cpp +++ b/src/FluTreeModel.cpp @@ -31,8 +31,8 @@ QVariant FluTreeModel::data(const QModelIndex &index, int role) const { QHash FluTreeModel::roleNames() const { return { - {TreeModelRoles::RowModel, "rowModel"}, - {TreeModelRoles::ColumnModel, "columnModel"} + {TreeModelRoles::RowModel, "rowModel" }, + {TreeModelRoles::ColumnModel, "columnModel"} }; } @@ -90,9 +90,9 @@ void FluTreeModel::checkRow(int row, bool checked) { 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 { @@ -102,7 +102,6 @@ void FluTreeModel::checkRow(int row, bool checked) { itemData->_checked = checked; } Q_EMIT dataChanged(index(0, 0), index(rowCount() - 1, 0)); - } void FluTreeModel::setDataSource(QList> data) { @@ -184,9 +183,9 @@ void FluTreeModel::expand(int row) { 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); @@ -223,9 +222,9 @@ void FluTreeModel::allExpand() { 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; @@ -245,9 +244,9 @@ void FluTreeModel::allCollapse() { 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; @@ -256,10 +255,10 @@ void FluTreeModel::allCollapse() { QVariant FluTreeModel::selectionModel() { QList data; - foreach (auto item, _dataSource) { - if (item->checked()) { - data.append(item); - } + foreach (auto item, _dataSource) { + if (item->checked()) { + data.append(item); } + } return QVariant::fromValue(data); } diff --git a/src/FluTreeModel.h b/src/FluTreeModel.h index e9d5f48b..a6dc7c5c 100644 --- a/src/FluTreeModel.h +++ b/src/FluTreeModel.h @@ -7,11 +7,12 @@ #include #include "stdafx.h" + /** * @brief The FluTreeNode class */ class FluTreeNode : public QObject { -Q_OBJECT + Q_OBJECT Q_PROPERTY(QVariantMap data READ data CONSTANT) Q_PROPERTY(int depth READ depth CONSTANT) Q_PROPERTY(bool isExpanded READ isExpanded CONSTANT) @@ -19,13 +20,21 @@ Q_OBJECT public: explicit FluTreeNode(QObject *parent = nullptr); - [[nodiscard]] Q_INVOKABLE int depth() const { return _depth; }; + [[nodiscard]] Q_INVOKABLE int depth() const { + return _depth; + }; - [[nodiscard]] Q_INVOKABLE bool isExpanded() const { return _isExpanded; }; + [[nodiscard]] Q_INVOKABLE bool isExpanded() const { + return _isExpanded; + }; - [[nodiscard]] Q_INVOKABLE QVariantMap data() const { return _data; }; + [[nodiscard]] Q_INVOKABLE QVariantMap data() const { + return _data; + }; - [[nodiscard]] Q_INVOKABLE bool hasChildren() const { return !_children.isEmpty(); }; + [[nodiscard]] Q_INVOKABLE bool hasChildren() const { + return !_children.isEmpty(); + }; Q_INVOKABLE bool hasNextNodeByIndex(int index) { FluTreeNode *p = this; @@ -87,15 +96,12 @@ Q_OBJECT }; class FluTreeModel : public QAbstractTableModel { -Q_OBJECT -Q_PROPERTY_AUTO(int, dataSourceSize) -Q_PROPERTY_AUTO(QList, columnSource) + Q_OBJECT + Q_PROPERTY_AUTO(int, dataSourceSize) + Q_PROPERTY_AUTO(QList, columnSource) QML_NAMED_ELEMENT(FluTreeModel) public: - enum TreeModelRoles { - RowModel = 0x0101, - ColumnModel = 0x0102 - }; + enum TreeModelRoles { RowModel = 0x0101, ColumnModel = 0x0102 }; explicit FluTreeModel(QObject *parent = nullptr); @@ -103,7 +109,8 @@ Q_PROPERTY_AUTO(QList, columnSource) [[nodiscard]] int columnCount(const QModelIndex &parent = {}) const override; - [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + [[nodiscard]] QVariant data(const QModelIndex &index, + int role = Qt::DisplayRole) const override; [[nodiscard]] QHash roleNames() const override; diff --git a/src/FluWatermark.cpp b/src/FluWatermark.cpp index 62a42b11..f0a21faf 100644 --- a/src/FluWatermark.cpp +++ b/src/FluWatermark.cpp @@ -17,6 +17,7 @@ FluWatermark::FluWatermark(QQuickItem *parent) : QQuickPaintedItem(parent) { connect(this, &FluWatermark::textSizeChanged, this, [=] { update(); }); } + void FluWatermark::paint(QPainter *painter) { QFont font; font.setFamily(FluTextStyle::getInstance()->family()); @@ -37,7 +38,8 @@ void FluWatermark::paint(QPainter *painter) { painter->save(); painter->translate(centerX, centerY); painter->rotate(_rotate); - painter->drawText(QRectF(-fontWidth / 2.0, -fontHeight / 2.0, fontWidth, fontHeight), _text); + painter->drawText(QRectF(-fontWidth / 2.0, -fontHeight / 2.0, fontWidth, fontHeight), + _text); painter->restore(); } } diff --git a/src/FluentUI.h b/src/FluentUI.h index eb454741..600e4a0a 100644 --- a/src/FluentUI.h +++ b/src/FluentUI.h @@ -8,10 +8,10 @@ * @brief The FluentUI class */ class FluentUI : public QObject { -Q_OBJECT + Q_OBJECT public: -SINGLETON(FluentUI) + SINGLETON(FluentUI) Q_DECL_EXPORT void registerTypes(QQmlEngine *engine); @@ -23,4 +23,4 @@ SINGLETON(FluentUI) const int _major = 1; const int _minor = 0; const char *_uri = "FluentUI"; -}; \ No newline at end of file +}; diff --git a/src/fluentuiplugin.h b/src/fluentuiplugin.h index bc609baa..0cd7a368 100644 --- a/src/fluentuiplugin.h +++ b/src/fluentuiplugin.h @@ -6,7 +6,7 @@ * @brief The FluentUIPlugin class */ class FluentUIPlugin : public QQmlExtensionPlugin { -Q_OBJECT + Q_OBJECT Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: @@ -15,4 +15,4 @@ Q_OBJECT void registerTypes(const char *uri) Q_DECL_OVERRIDE; void initializeEngine(QQmlEngine *engine, const char *uri) Q_DECL_OVERRIDE; -}; \ No newline at end of file +}; diff --git a/src/singleton.h b/src/singleton.h index 9583c687..01c00a7a 100644 --- a/src/singleton.h +++ b/src/singleton.h @@ -1,24 +1,26 @@ #pragma once + /** * @brief The Singleton class */ -template +template class Singleton { public: static T *getInstance(); }; -template +template T *Singleton::getInstance() { static T *instance = new T(); return instance; } -#define SINGLETON(Class) \ -private: \ - friend class Singleton; \ - public: \ - static Class* getInstance() { \ - return Singleton::getInstance(); \ -} +#define SINGLETON(Class) \ +private: \ + friend class Singleton; \ + \ +public: \ + static Class *getInstance() { \ + return Singleton::getInstance(); \ + } diff --git a/src/stdafx.h b/src/stdafx.h index f902bad0..4ee94c19 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -1,50 +1,48 @@ #pragma once -#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) \ -{ \ - _##M = in_##M; \ - Q_EMIT M##Changed(); \ -} \ - TYPE M() \ -{ \ - return _##M; \ -} \ - private: \ + +#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) { \ + _##M = in_##M; \ + Q_EMIT M##Changed(); \ + } \ + TYPE M() { \ + return _##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: \ +#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) \ -Q_PROPERTY(TYPE M READ M NOTIFY M##Changed FINAL) \ - public: \ - Q_SIGNAL void M##Changed(); \ - void M(const TYPE& in_##M) \ -{ \ - _##M = in_##M; \ - Q_EMIT M##Changed(); \ -} \ - TYPE M() \ -{ \ - return _##M; \ -} \ - private: \ +#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(const TYPE &in_##M) { \ + _##M = in_##M; \ + Q_EMIT M##Changed(); \ + } \ + TYPE M() { \ + return _##M; \ + } \ + \ +private: \ TYPE _##M;