Check if registry key for file extension exists, before trying to actually read it. Avoids warning in the case when key doesn't exist.

This commit is contained in:
LoRd_MuldeR 2015-07-26 15:08:27 +02:00
parent 6c59b4caf6
commit df44d9b2d8

View File

@ -203,26 +203,36 @@ void ShellIntegration::initializeTypes(const QString &lamexpFileType, const QStr
continue; continue;
} }
bool hasExistingType = false;
QString currentType; QString currentType;
if(MUtils::Registry::reg_value_read(MUtils::Registry::root_classes, currentExt, QString(), currentType)) if(MUtils::Registry::reg_key_exists(MUtils::Registry::root_classes, currentExt))
{ {
currentType = QDir::toNativeSeparators(currentType); if(MUtils::Registry::reg_value_read(MUtils::Registry::root_classes, currentExt, QString(), currentType))
if((currentType.compare(lamexpFileType, Qt::CaseInsensitive) != 0) && (!nativeTypes.contains(currentType, Qt::CaseInsensitive)))
{ {
nativeTypes.append(currentType); currentType = QDir::toNativeSeparators(currentType);
if((currentType.compare(lamexpFileType, Qt::CaseInsensitive) != 0) && (!nativeTypes.contains(currentType, Qt::CaseInsensitive)))
{
nativeTypes.append(currentType);
hasExistingType = true;
}
} }
} }
else if(!hasExistingType)
{ {
currentType = lamexpFileType;
MUtils::Registry::reg_value_write(MUtils::Registry::root_user, QString("Software\\Classes\\%1").arg(currentExt), QString(), lamexpFileType); MUtils::Registry::reg_value_write(MUtils::Registry::root_user, QString("Software\\Classes\\%1").arg(currentExt), QString(), lamexpFileType);
} }
if(MUtils::Registry::reg_value_read(MUtils::Registry::root_user, QString("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\%1\\UserChoice").arg(currentExt), progId, currentType)) const QString userChoiceKey = QString("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\%1\\UserChoice").arg(currentExt);
if(MUtils::Registry::reg_key_exists(MUtils::Registry::root_user, userChoiceKey))
{ {
currentType = QDir::toNativeSeparators(currentType); if(MUtils::Registry::reg_value_read(MUtils::Registry::root_user, userChoiceKey, progId, currentType))
if((currentType.compare(lamexpFileType, Qt::CaseInsensitive) != 0) && (!nativeTypes.contains(currentType, Qt::CaseInsensitive)))
{ {
nativeTypes.append(currentType); currentType = QDir::toNativeSeparators(currentType);
if((currentType.compare(lamexpFileType, Qt::CaseInsensitive) != 0) && (!nativeTypes.contains(currentType, Qt::CaseInsensitive)))
{
nativeTypes.append(currentType);
}
} }
} }