Public feed
#889266
// roster - custom {- // gather new data- QMap<QString, QString> newdata;- - QTreeWidgetItemIterator it( d->tw_customRoster );- while(*it) {- newdata[(*it)->data(0, Qt::UserRole).toString()] = (*it)->data(1, Qt::UserRole).toString();- ++it;- }+ QString baseCustomStatusPath = "options.iconsets.custom-status";+ PsiOptions::instance()->beginBulkUpdate(baseCustomStatusPath);+ PsiOptions::instance()->removeOption(baseCustomStatusPath, true); - // remove deleted ones- QStringList previousIdx = PsiOptions::instance()->getChildOptionNames("options.iconsets.custom-status", true, true);- QMap<QString,QString> previous; // (regexp, base)- foreach(QString base, previousIdx) {- previous[PsiOptions::instance()->getOption(base + ".regexp").toString()] = base;+ int index = 0;+ QTreeWidgetItemIterator it(d->tw_customRoster);+ while (*it) {+ QString path = baseCustomStatusPath + ".a" + QString::number(index++);+ PsiOptions::instance()->setOption(path + ".regexp", (*it)->data(0, RegexpRole).toString());+ PsiOptions::instance()->setOption(path + ".iconset", (*it)->data(0, IconsetRole).toString()); }- foreach(QString todel, previous.keys().toSet() - newdata.keys().toSet()) {- QString base = previous[todel];- PsiOptions::instance()->removeOption(base, true);- }- // update/add all others- foreach(QString regexp, newdata.keys()) {- QString base;- if (previous.contains(regexp)) {- base = previous[regexp];- } else {- int idx = 0;- do {- base = "options.iconsets.custom-status" ".a" + QString::number(idx);- idx++;- } while (previousIdx.contains(base));- previous[regexp] = base;- PsiOptions::instance()->setOption(base + ".regexp", regexp);- }- PsiOptions::instance()->setOption(base + ".iconset", newdata[regexp]);- }+ PsiOptions::instance()->endBulkUpdate(); }