Public feed #889266

Mine

public diff v1 · immutable
Raw Edit
·published 2008-02-02 20:29 UTC
rendered paste body
 	// 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(); 	}