registrykey: rename

RegistryKey is a better name than Registry.

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
Yuhang Zhao 2022-08-17 10:42:48 +08:00
parent 0535276f55
commit a49756ee45
7 changed files with 51 additions and 41 deletions

View File

@ -34,14 +34,14 @@ QT_END_NAMESPACE
FRAMELESSHELPER_BEGIN_NAMESPACE FRAMELESSHELPER_BEGIN_NAMESPACE
class FRAMELESSHELPER_CORE_API Registry : public QObject class FRAMELESSHELPER_CORE_API RegistryKey : public QObject
{ {
Q_OBJECT Q_OBJECT
Q_DISABLE_COPY_MOVE(Registry) Q_DISABLE_COPY_MOVE(RegistryKey)
public: public:
explicit Registry(const Global::RegistryRootKey root, const QString &key, QObject *parent = nullptr); explicit RegistryKey(const Global::RegistryRootKey root, const QString &key, QObject *parent = nullptr);
~Registry() override; ~RegistryKey() override;
Q_NODISCARD Global::RegistryRootKey rootKey() const; Q_NODISCARD Global::RegistryRootKey rootKey() const;
Q_NODISCARD QString subKey() const; Q_NODISCARD QString subKey() const;
@ -54,13 +54,12 @@ private:
Global::RegistryRootKey m_rootKey = Global::RegistryRootKey::CurrentUser; Global::RegistryRootKey m_rootKey = Global::RegistryRootKey::CurrentUser;
QString m_subKey = {}; QString m_subKey = {};
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
QScopedPointer<QWinRegistryKey> m_registry; QScopedPointer<QWinRegistryKey> m_registryKey;
#else #else
QScopedPointer<QSettings> m_settings; QScopedPointer<QSettings> m_settings;
bool m_valid = false;
#endif #endif
}; };
FRAMELESSHELPER_END_NAMESPACE FRAMELESSHELPER_END_NAMESPACE
Q_DECLARE_METATYPE2(FRAMELESSHELPER_PREPEND_NAMESPACE(Registry)) Q_DECLARE_METATYPE2(FRAMELESSHELPER_PREPEND_NAMESPACE(RegistryKey))

View File

@ -86,10 +86,10 @@ if(WIN32)
${INCLUDE_PREFIX}/FramelessHelper_Win ${INCLUDE_PREFIX}/FramelessHelper_Win
) )
list(APPEND PRIVATE_HEADERS list(APPEND PRIVATE_HEADERS
${INCLUDE_PREFIX}/private/registry_p.h ${INCLUDE_PREFIX}/private/registrykey_p.h
) )
list(APPEND SOURCES list(APPEND SOURCES
registry.cpp registrykey.cpp
utils_win.cpp utils_win.cpp
framelesshelper_win.cpp framelesshelper_win.cpp
) )

View File

@ -37,7 +37,7 @@
#include "chromepalette_p.h" #include "chromepalette_p.h"
#include "micamaterial_p.h" #include "micamaterial_p.h"
#ifdef Q_OS_WINDOWS #ifdef Q_OS_WINDOWS
# include "registry_p.h" # include "registrykey_p.h"
#endif #endif
#include <QtGui/qguiapplication.h> #include <QtGui/qguiapplication.h>
@ -176,7 +176,7 @@ void initialize()
qRegisterMetaType<MicaMaterial>(); qRegisterMetaType<MicaMaterial>();
qRegisterMetaType<MicaMaterialPrivate>(); qRegisterMetaType<MicaMaterialPrivate>();
# ifdef Q_OS_WINDOWS # ifdef Q_OS_WINDOWS
qRegisterMetaType<Registry>(); qRegisterMetaType<RegistryKey>();
# endif # endif
#endif #endif
} }

View File

@ -1 +0,0 @@
#include "../../include/FramelessHelper/Core/private/registry_p.h"

View File

@ -22,7 +22,7 @@
* SOFTWARE. * SOFTWARE.
*/ */
#include "registry_p.h" #include "registrykey_p.h"
#include <QtCore/qdebug.h> #include <QtCore/qdebug.h>
#include <QtCore/qvariant.h> #include <QtCore/qvariant.h>
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
@ -33,11 +33,11 @@
FRAMELESSHELPER_BEGIN_NAMESPACE FRAMELESSHELPER_BEGIN_NAMESPACE
Q_LOGGING_CATEGORY(lcCoreRegistry, "wangwenx190.framelesshelper.core.registry") Q_LOGGING_CATEGORY(lcCoreRegistryKey, "wangwenx190.framelesshelper.core.registrykey")
#define INFO qCInfo(lcCoreRegistry) #define INFO qCInfo(lcCoreRegistryKey)
#define DEBUG qCDebug(lcCoreRegistry) #define DEBUG qCDebug(lcCoreRegistryKey)
#define WARNING qCWarning(lcCoreRegistry) #define WARNING qCWarning(lcCoreRegistryKey)
#define CRITICAL qCCritical(lcCoreRegistry) #define CRITICAL qCCritical(lcCoreRegistryKey)
using namespace Global; using namespace Global;
@ -69,7 +69,7 @@ static const QString g_strMap[] = {
}; };
static_assert(std::size(g_strMap) == std::size(g_keyMap)); static_assert(std::size(g_strMap) == std::size(g_keyMap));
Registry::Registry(const RegistryRootKey root, const QString &key, QObject *parent) : QObject(parent) RegistryKey::RegistryKey(const RegistryRootKey root, const QString &key, QObject *parent) : QObject(parent)
{ {
Q_ASSERT(!key.isEmpty()); Q_ASSERT(!key.isEmpty());
if (key.isEmpty()) { if (key.isEmpty()) {
@ -78,39 +78,43 @@ Registry::Registry(const RegistryRootKey root, const QString &key, QObject *pare
m_rootKey = root; m_rootKey = root;
m_subKey = key; m_subKey = key;
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
m_registry.reset(new QWinRegistryKey(g_keyMap[static_cast<int>(m_rootKey)], m_subKey)); m_registryKey.reset(new QWinRegistryKey(g_keyMap[static_cast<int>(m_rootKey)], m_subKey));
if (!m_registryKey->isValid()) {
m_registryKey.reset();
}
#else #else
const QString rootKey = g_strMap[static_cast<int>(m_rootKey)]; const QString rootKey = g_strMap[static_cast<int>(m_rootKey)];
m_settings.reset(new QSettings(rootKey, QSettings::NativeFormat)); m_settings.reset(new QSettings(rootKey, QSettings::NativeFormat));
if (m_settings->contains(m_subKey)) { if (m_settings->contains(m_subKey)) {
m_settings.reset(new QSettings(rootKey + u'\\' + m_subKey, QSettings::NativeFormat)); m_settings.reset(new QSettings(rootKey + u'\\' + m_subKey, QSettings::NativeFormat));
m_valid = true; } else {
m_settings.reset();
} }
#endif #endif
} }
Registry::~Registry() = default; RegistryKey::~RegistryKey() = default;
RegistryRootKey Registry::rootKey() const RegistryRootKey RegistryKey::rootKey() const
{ {
return m_rootKey; return m_rootKey;
} }
QString Registry::subKey() const QString RegistryKey::subKey() const
{ {
return m_subKey; return m_subKey;
} }
bool Registry::isValid() const bool RegistryKey::isValid() const
{ {
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
return m_registry->isValid(); return (!m_registryKey.isNull() && m_registryKey->isValid());
#else #else
return m_valid; return !m_settings.isNull();
#endif #endif
} }
QVariant Registry::value(const QString &name) const QVariant RegistryKey::value(const QString &name) const
{ {
Q_ASSERT(!name.isEmpty()); Q_ASSERT(!name.isEmpty());
Q_ASSERT(isValid()); Q_ASSERT(isValid());
@ -118,11 +122,15 @@ QVariant Registry::value(const QString &name) const
return {}; return {};
} }
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
const QPair<DWORD, bool> dwValue = m_registry->dwordValue(name); const QPair<DWORD, bool> dwVal = m_registryKey->dwordValue(name);
if (dwValue.second) { if (dwVal.second) {
return qulonglong(dwValue.first); return qulonglong(dwVal.first);
} }
return m_registry->stringValue(name); const QString strVal = m_registryKey->stringValue(name);
if (!strVal.isEmpty()) {
return strVal;
}
return {};
#else #else
return m_settings->value(name); return m_settings->value(name);
#endif #endif

1
src/core/registrykey_p.h Normal file
View File

@ -0,0 +1 @@
#include "../../include/FramelessHelper/Core/private/registrykey_p.h"

View File

@ -41,7 +41,7 @@
#include "framelesshelper_windows.h" #include "framelesshelper_windows.h"
#include "framelessconfig_p.h" #include "framelessconfig_p.h"
#include "sysapiloader_p.h" #include "sysapiloader_p.h"
#include "registry_p.h" #include "registrykey_p.h"
#include <uxtheme.h> #include <uxtheme.h>
#include <d2d1.h> #include <d2d1.h>
@ -375,7 +375,7 @@ private:
if (code == ERROR_SUCCESS) { if (code == ERROR_SUCCESS) {
return kSuccessMessageText; return kSuccessMessageText;
} }
#if 0 #if 0 // The following code works well, we commented it out just because we want to use as many Qt functionalities as possible.
LPWSTR buf = nullptr; LPWSTR buf = nullptr;
if (FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, if (FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
nullptr, code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast<LPWSTR>(&buf), 0, nullptr) == 0) { nullptr, code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast<LPWSTR>(&buf), 0, nullptr) == 0) {
@ -607,7 +607,7 @@ bool Utils::isDwmCompositionEnabled()
return true; return true;
} }
const auto resultFromRegistry = []() -> bool { const auto resultFromRegistry = []() -> bool {
const Registry registry(RegistryRootKey::CurrentUser, dwmRegistryKey()); const RegistryKey registry(RegistryRootKey::CurrentUser, dwmRegistryKey());
if (!registry.isValid()) { if (!registry.isValid()) {
return false; return false;
} }
@ -733,7 +733,7 @@ QString Utils::getSystemErrorMessage(const QString &function)
QColor Utils::getDwmColorizationColor() QColor Utils::getDwmColorizationColor()
{ {
const auto resultFromRegistry = []() -> QColor { const auto resultFromRegistry = []() -> QColor {
const Registry registry(RegistryRootKey::CurrentUser, dwmRegistryKey()); const RegistryKey registry(RegistryRootKey::CurrentUser, dwmRegistryKey());
if (!registry.isValid()) { if (!registry.isValid()) {
return kDefaultDarkGrayColor; return kDefaultDarkGrayColor;
} }
@ -761,10 +761,10 @@ DwmColorizationArea Utils::getDwmColorizationArea()
if (!isWin10OrGreater) { if (!isWin10OrGreater) {
return DwmColorizationArea::None_; return DwmColorizationArea::None_;
} }
const Registry themeRegistry(RegistryRootKey::CurrentUser, personalizeRegistryKey()); const RegistryKey themeRegistry(RegistryRootKey::CurrentUser, personalizeRegistryKey());
bool themeOk = false; bool themeOk = false;
const DWORD themeValue = themeRegistry.isValid() ? themeRegistry.value(qDwmColorKeyName).toULongLong(&themeOk) : 0; const DWORD themeValue = themeRegistry.isValid() ? themeRegistry.value(qDwmColorKeyName).toULongLong(&themeOk) : 0;
const Registry dwmRegistry(RegistryRootKey::CurrentUser, dwmRegistryKey()); const RegistryKey dwmRegistry(RegistryRootKey::CurrentUser, dwmRegistryKey());
bool dwmOk = false; bool dwmOk = false;
const DWORD dwmValue = dwmRegistry.isValid() ? dwmRegistry.value(qDwmColorKeyName).toULongLong(&dwmOk) : 0; const DWORD dwmValue = dwmRegistry.isValid() ? dwmRegistry.value(qDwmColorKeyName).toULongLong(&dwmOk) : 0;
const bool theme = (themeOk && (themeValue != 0)); const bool theme = (themeOk && (themeValue != 0));
@ -1573,9 +1573,12 @@ bool Utils::shouldAppsUseDarkMode_windows()
} else { } else {
WARNING << "Failed to retrieve the platform native interface."; WARNING << "Failed to retrieve the platform native interface.";
} }
#else
// Qt gained the ability to detect the system dark mode setting only since 5.15.
// We should detect it ourself on versions below that.
#endif #endif
const auto resultFromRegistry = []() -> bool { const auto resultFromRegistry = []() -> bool {
const Registry registry(RegistryRootKey::CurrentUser, personalizeRegistryKey()); const RegistryKey registry(RegistryRootKey::CurrentUser, personalizeRegistryKey());
if (!registry.isValid()) { if (!registry.isValid()) {
return false; return false;
} }
@ -1809,7 +1812,7 @@ QColor Utils::getDwmAccentColor()
// so we'd better also do the same thing. // so we'd better also do the same thing.
// There's no Windows API to get this value, so we can only read it // There's no Windows API to get this value, so we can only read it
// directly from the registry. // directly from the registry.
const Registry registry(RegistryRootKey::CurrentUser, dwmRegistryKey()); const RegistryKey registry(RegistryRootKey::CurrentUser, dwmRegistryKey());
if (!registry.isValid()) { if (!registry.isValid()) {
return kDefaultDarkGrayColor; return kDefaultDarkGrayColor;
} }
@ -1837,7 +1840,7 @@ QString Utils::getWallpaperFilePath()
WallpaperAspectStyle Utils::getWallpaperAspectStyle() WallpaperAspectStyle Utils::getWallpaperAspectStyle()
{ {
static constexpr const auto defaultStyle = WallpaperAspectStyle::Fill; static constexpr const auto defaultStyle = WallpaperAspectStyle::Fill;
const Registry registry(RegistryRootKey::CurrentUser, desktopRegistryKey()); const RegistryKey registry(RegistryRootKey::CurrentUser, desktopRegistryKey());
if (!registry.isValid()) { if (!registry.isValid()) {
return defaultStyle; return defaultStyle;
} }