void MainSettingsDialog::populateAutoProfiles() { exeAutoProfiles.clear(); defaultAutoProfiles.clear(); settings->beginGroup("DefaultAutoProfiles"); QStringList defaultkeys = settings->allKeys(); settings->endGroup(); QString allProfile = settings->value(QString("DefaultAutoProfileAll/Profile"), "").toString(); QString allActive = settings->value(QString("DefaultAutoProfileAll/Active"), "0").toString(); if (!allProfile.isEmpty()) { bool defaultActive = allActive == "1" ? true : false; allDefaultProfile = new AutoProfileInfo("all", allProfile, defaultActive, this); allDefaultProfile->setDefaultState(true); } else { allDefaultProfile = new AutoProfileInfo("all", "", false, this); allDefaultProfile->setDefaultState(true); } QStringListIterator iter(defaultkeys); while (iter.hasNext()) { QString tempkey = iter.next(); QString guid = QString(tempkey).replace("GUID", ""); QString profile = settings->value(QString("DefaultAutoProfile-%1/Profile").arg(guid), "").toString(); QString active = settings->value(QString("DefaultAutoProfile-%1/Active").arg(guid), "0").toString(); QString deviceName = settings->value(QString("DefaultAutoProfile-%1/DeviceName").arg(guid), "").toString(); if (!guid.isEmpty() && !profile.isEmpty() && !deviceName.isEmpty()) { bool profileActive = active == "1" ? true : false; if (!defaultAutoProfiles.contains(guid) && guid != "all") { AutoProfileInfo *info = new AutoProfileInfo(guid, profile, profileActive, this); info->setDefaultState(true); info->setDeviceName(deviceName); defaultAutoProfiles.insert(guid, info); defaultList.append(info); QList<AutoProfileInfo*> templist; templist.append(info); deviceAutoProfiles.insert(guid, templist); } } } settings->beginGroup("AutoProfiles"); bool quitSearch = false; QHash<QString, QList<QString> > tempAssociation; for (int i = 1; !quitSearch; i++) { QString exe = settings->value(QString("AutoProfile%1Exe").arg(i), "").toString(); QString guid = settings->value(QString("AutoProfile%1GUID").arg(i), "").toString(); QString profile = settings->value(QString("AutoProfile%1Profile").arg(i), "").toString(); QString active = settings->value(QString("AutoProfile%1Active").arg(i), 0).toString(); QString deviceName = settings->value(QString("AutoProfile%1DeviceName").arg(i), "").toString(); // Check if all required elements exist. If not, assume that the end of the // list has been reached. if (!exe.isEmpty() && !guid.isEmpty() && !profile.isEmpty() && !deviceName.isEmpty()) { bool profileActive = active == "1" ? true : false; QList<AutoProfileInfo*> templist; if (exeAutoProfiles.contains(exe)) { templist = exeAutoProfiles.value(exe); } QList<QString> tempguids; if (tempAssociation.contains(exe)) { tempguids = tempAssociation.value(exe); } if (!tempguids.contains(guid) && guid != "all") { AutoProfileInfo *info = new AutoProfileInfo(guid, profile, exe, profileActive, this); info->setDeviceName(deviceName); tempguids.append(guid); tempAssociation.insert(exe, tempguids); templist.append(info); exeAutoProfiles.insert(exe, templist); profileList.append(info); QList<AutoProfileInfo*> templist; if (deviceAutoProfiles.contains(guid)) { templist = deviceAutoProfiles.value(guid); } templist.append(info); deviceAutoProfiles.insert(guid, templist); } } else { quitSearch = true; } } settings->endGroup(); }