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(); }