void AutoProfileWatcher::syncProfileAssignment() { clearProfileAssignments(); currentApplication = ""; //QStringList assignments = settings->allKeys(); //QStringListIterator iter(assignments); settings->getLock()->lock(); settings->beginGroup("DefaultAutoProfiles"); QString exe; QString guid; QString profile; QString active; QString windowClass; QString windowName; QStringList registeredGUIDs = settings->value("GUIDs", QStringList()).toStringList(); //QStringList defaultkeys = settings->allKeys(); settings->endGroup(); QString allProfile = settings->value(QString("DefaultAutoProfileAll/Profile"), "").toString(); QString allActive = settings->value(QString("DefaultAutoProfileAll/Active"), "0").toString(); // Handle overall Default profile assignment bool defaultActive = allActive == "1" ? true : false; if (defaultActive) { allDefaultInfo = new AutoProfileInfo("all", allProfile, defaultActive, this); allDefaultInfo->setDefaultState(true); } // Handle device specific Default profile assignments QStringListIterator iter(registeredGUIDs); 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), "").toString(); if (!guid.isEmpty() && !profile.isEmpty()) { bool profileActive = active == "1" ? true : false; if (profileActive && guid != "all") { AutoProfileInfo *info = new AutoProfileInfo(guid, profile, profileActive, this); info->setDefaultState(true); defaultProfileAssignments.insert(guid, info); } } } settings->beginGroup("AutoProfiles"); bool quitSearch = false; //QHash<QString, QList<QString> > tempAssociation; for (int i = 1; !quitSearch; i++) { exe = settings->value(QString("AutoProfile%1Exe").arg(i), "").toString(); exe = QDir::toNativeSeparators(exe); guid = settings->value(QString("AutoProfile%1GUID").arg(i), "").toString(); profile = settings->value(QString("AutoProfile%1Profile").arg(i), "").toString(); active = settings->value(QString("AutoProfile%1Active").arg(i), 0).toString(); windowName = settings->value(QString("AutoProfile%1WindowName").arg(i), "").toString(); #ifdef Q_OS_UNIX windowClass = settings->value(QString("AutoProfile%1WindowClass").arg(i), "").toString(); #else windowClass.clear(); #endif // Check if all required elements exist. If not, assume that the end of the // list has been reached. if ((!exe.isEmpty() || !windowClass.isEmpty() || !windowName.isEmpty()) && !guid.isEmpty()) { bool profileActive = active == "1" ? true : false; if (profileActive) { AutoProfileInfo *info = new AutoProfileInfo(guid, profile, profileActive, this); if (!windowClass.isEmpty()) { info->setWindowClass(windowClass); QList<AutoProfileInfo*> templist; if (windowClassProfileAssignments.contains(windowClass)) { templist = windowClassProfileAssignments.value(windowClass); } templist.append(info); windowClassProfileAssignments.insert(windowClass, templist); } if (!windowName.isEmpty()) { info->setWindowName(windowName); QList<AutoProfileInfo*> templist; if (windowNameProfileAssignments.contains(windowName)) { templist = windowNameProfileAssignments.value(windowName); } templist.append(info); windowNameProfileAssignments.insert(windowName, templist); } if (!exe.isEmpty()) { info->setExe(exe); QList<AutoProfileInfo*> templist; if (appProfileAssignments.contains(exe)) { templist = appProfileAssignments.value(exe); } templist.append(info); appProfileAssignments.insert(exe, templist); QString baseExe = QFileInfo(exe).fileName(); if (!baseExe.isEmpty() && baseExe != exe) { QList<AutoProfileInfo*> templist; if (appProfileAssignments.contains(baseExe)) { templist = appProfileAssignments.value(baseExe); } templist.append(info); appProfileAssignments.insert(baseExe, templist); } } } } else { quitSearch = true; } } settings->endGroup(); settings->getLock()->unlock(); }
void AutoProfileWatcher::syncProfileAssignment() { QListIterator<QList<AutoProfileInfo*> > iterDelete(appProfileAssignments.values()); while (iterDelete.hasNext()) { QList<AutoProfileInfo*> templist = iterDelete.next(); QListIterator<AutoProfileInfo*> iterAuto(templist); while (iterAuto.hasNext()) { AutoProfileInfo *info = iterAuto.next(); if (info) { delete info; info = 0; } } } appProfileAssignments.clear(); QListIterator<AutoProfileInfo*> iterDefaultsDelete(defaultProfileAssignments.values()); while (iterDefaultsDelete.hasNext()) { AutoProfileInfo *info = iterDefaultsDelete.next(); if (info) { delete info; info = 0; } } defaultProfileAssignments.clear(); allDefaultInfo = 0; currentApplication = ""; //QStringList assignments = settings->allKeys(); //QStringListIterator iter(assignments); settings->beginGroup("DefaultAutoProfiles"); QString exe; QString guid; QString profile; QString active; 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; allDefaultInfo = new AutoProfileInfo("all", profile, defaultActive, this); allDefaultInfo->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), "").toString(); if (!guid.isEmpty() && !profile.isEmpty()) { bool profileActive = active == "1" ? true : false; if (guid != "all") { AutoProfileInfo *info = new AutoProfileInfo(guid, profile, profileActive, this); info->setDefaultState(true); defaultProfileAssignments.insert(guid, info); } } } settings->beginGroup("AutoProfiles"); bool quitSearch = false; QHash<QString, QList<QString> > tempAssociation; for (int i = 1; !quitSearch; i++) { exe = settings->value(QString("AutoProfile%1Exe").arg(i), "").toString(); guid = settings->value(QString("AutoProfile%1GUID").arg(i), "").toString(); profile = settings->value(QString("AutoProfile%1Profile").arg(i), "").toString(); active = settings->value(QString("AutoProfile%1Active").arg(i), 0).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()) { bool profileActive = active == "1" ? true : false; QList<AutoProfileInfo*> templist; if (appProfileAssignments.contains(exe)) { templist = appProfileAssignments.value(exe); } QList<QString> tempguids; if (tempAssociation.contains(exe)) { tempguids = tempAssociation.value(exe); } if (!tempguids.contains(guid)) { AutoProfileInfo *info = new AutoProfileInfo(guid, profile, profileActive, this); tempguids.append(guid); tempAssociation.insert(exe, tempguids); templist.append(info); appProfileAssignments.insert(exe, templist); } } else { quitSearch = true; } } settings->endGroup(); }
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(); }