Ignore:
Timestamp:
Aug 2, 2010, 9:27:30 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.3 sources from branches/vendor/nokia/qt.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/qmake/generators/win32/msvc_vcproj.cpp

    r651 r769  
    6868#ifdef Q_OS_WIN32
    6969#include <qt_windows.h>
     70#include <windows/registry.h>
    7071
    7172QT_BEGIN_NAMESPACE
     
    9495};
    9596
    96 static QString keyPath(const QString &rKey)
    97 {
    98     int idx = rKey.lastIndexOf(QLatin1Char('\\'));
    99     if (idx == -1)
    100         return QString();
    101     return rKey.left(idx + 1);
    102 }
    103 
    104 static QString keyName(const QString &rKey)
    105 {
    106     int idx = rKey.lastIndexOf(QLatin1Char('\\'));
    107     if (idx == -1)
    108         return rKey;
    109 
    110     QString res(rKey.mid(idx + 1));
    111     if (res == "Default" || res == ".")
    112         res = "";
    113     return res;
    114 }
    115 
    116 static QString readRegistryKey(HKEY parentHandle, const QString &rSubkey)
    117 {
    118 
    119     QString rSubkeyName = keyName(rSubkey);
    120     QString rSubkeyPath = keyPath(rSubkey);
    121 
    122     HKEY handle = 0;
    123     LONG res = RegOpenKeyEx(parentHandle, (wchar_t*)rSubkeyPath.utf16(), 0, KEY_READ, &handle);
    124 
    125     if (res != ERROR_SUCCESS)
    126         return QString();
    127 
    128     // get the size and type of the value
    129     DWORD dataType;
    130     DWORD dataSize;
    131     res = RegQueryValueEx(handle, (wchar_t*)rSubkeyName.utf16(), 0, &dataType, 0, &dataSize);
    132     if (res != ERROR_SUCCESS) {
    133         RegCloseKey(handle);
    134         return QString();
    135     }
    136 
    137     // get the value
    138     QByteArray data(dataSize, 0);
    139     res = RegQueryValueEx(handle, (wchar_t*)rSubkeyName.utf16(), 0, 0,
    140                           reinterpret_cast<unsigned char*>(data.data()), &dataSize);
    141     if (res != ERROR_SUCCESS) {
    142         RegCloseKey(handle);
    143         return QString();
    144     }
    145 
    146     QString result;
    147     switch (dataType) {
    148         case REG_EXPAND_SZ:
    149         case REG_SZ: {
    150             result = QString::fromWCharArray(((const wchar_t *)data.constData()));
    151             break;
    152         }
    153 
    154         case REG_MULTI_SZ: {
    155             QStringList l;
    156             int i = 0;
    157             for (;;) {
    158                 QString s = QString::fromWCharArray((const wchar_t *)data.constData() + i);
    159                 i += s.length() + 1;
    160 
    161                 if (s.isEmpty())
    162                     break;
    163                 l.append(s);
    164             }
    165             result = l.join(", ");
    166             break;
    167         }
    168 
    169         case REG_NONE:
    170         case REG_BINARY: {
    171             result = QString::fromWCharArray((const wchar_t *)data.constData(), data.size() / 2);
    172             break;
    173         }
    174 
    175         case REG_DWORD_BIG_ENDIAN:
    176         case REG_DWORD: {
    177             Q_ASSERT(data.size() == sizeof(int));
    178             int i;
    179             memcpy((char*)&i, data.constData(), sizeof(int));
    180             result = QString::number(i);
    181             break;
    182         }
    183 
    184         default:
    185             qWarning("QSettings: unknown data %d type in windows registry", dataType);
    186             break;
    187     }
    188 
    189     RegCloseKey(handle);
    190     return result;
    191 }
    19297QT_END_NAMESPACE
    19398#endif
  • trunk/qmake/generators/win32/winmakefile.cpp

    r682 r769  
    151151                       exists((*it).local() + Option::dir_sep + lib + extension)) {
    152152                        out = (*it).real() + Option::dir_sep + lib + extension;
     153                        if (out.contains(QLatin1Char(' '))) {
     154                            out.prepend(QLatin1Char('\"'));
     155                            out.append(QLatin1Char('\"'));
     156                        }
    153157                        break;
    154158                    }
Note: See TracChangeset for help on using the changeset viewer.