From ac5f4a8e76fe9c5fbd809d7e3797b702e57ff78c Mon Sep 17 00:00:00 2001 From: Sebastian Schuberth Date: Tue, 1 Oct 2013 18:57:32 +0200 Subject: Allow to use short names for Windows Registry root keys Change-Id: I58b7681bb49e93b7577bc559d754c81d3c6f007b Reviewed-by: Friedemann Kleint Reviewed-by: Oswald Buddenhagen --- src/corelib/io/qsettings_win.cpp | 12 ++++++++++++ tests/auto/corelib/io/qsettings/tst_qsettings.cpp | 13 +++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/corelib/io/qsettings_win.cpp b/src/corelib/io/qsettings_win.cpp index 2d086efd4e..69f16f994a 100644 --- a/src/corelib/io/qsettings_win.cpp +++ b/src/corelib/io/qsettings_win.cpp @@ -442,15 +442,27 @@ QWinSettingsPrivate::QWinSettingsPrivate(QString rPath) if (rPath.startsWith(QLatin1String("HKEY_CURRENT_USER"))) { keyLength = 17; keyName = HKEY_CURRENT_USER; + } else if (rPath.startsWith(QLatin1String("HKCU"))) { + keyLength = 4; + keyName = HKEY_CURRENT_USER; } else if (rPath.startsWith(QLatin1String("HKEY_LOCAL_MACHINE"))) { keyLength = 18; keyName = HKEY_LOCAL_MACHINE; + } else if (rPath.startsWith(QLatin1String("HKLM"))) { + keyLength = 4; + keyName = HKEY_LOCAL_MACHINE; } else if (rPath.startsWith(QLatin1String("HKEY_CLASSES_ROOT"))) { keyLength = 17; keyName = HKEY_CLASSES_ROOT; + } else if (rPath.startsWith(QLatin1String("HKCR"))) { + keyLength = 4; + keyName = HKEY_CLASSES_ROOT; } else if (rPath.startsWith(QLatin1String("HKEY_USERS"))) { keyLength = 10; keyName = HKEY_USERS; + } else if (rPath.startsWith(QLatin1String("HKU"))) { + keyLength = 3; + keyName = HKEY_USERS; } else { return; } diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp index 290d4ac240..f0fa860686 100644 --- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp +++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp @@ -106,6 +106,7 @@ private slots: void testThreadSafety(); void testEmptyData(); void testResourceFiles(); + void testRegistryShortRootNames(); #ifdef Q_OS_MAC void fileName(); #endif @@ -1949,6 +1950,18 @@ void tst_QSettings::testResourceFiles() QCOMPARE(settings.value("Field 1/Bottom").toInt(), 90); } +void tst_QSettings::testRegistryShortRootNames() +{ +#ifndef Q_OS_WIN + QSKIP("This test is specific to the Windows registry only."); +#else + QVERIFY(QSettings("HKEY_CURRENT_USER", QSettings::NativeFormat).childGroups() == QSettings("HKCU", QSettings::NativeFormat).childGroups()); + QVERIFY(QSettings("HKEY_LOCAL_MACHINE", QSettings::NativeFormat).childGroups() == QSettings("HKLM", QSettings::NativeFormat).childGroups()); + QVERIFY(QSettings("HKEY_CLASSES_ROOT", QSettings::NativeFormat).childGroups() == QSettings("HKCR", QSettings::NativeFormat).childGroups()); + QVERIFY(QSettings("HKEY_USERS", QSettings::NativeFormat).childGroups() == QSettings("HKU", QSettings::NativeFormat).childGroups()); +#endif +} + void tst_QSettings::fromFile_data() { populateWithFormats(); -- cgit v1.2.3