@@ -121,44 +121,26 @@ Rectangle {
121121 OptionSelector {
122122 id: categorySelector
123123 anchors { left: parent.left; right: parent.right }
124−
125124 model: scopeView.scope ? scopeView.scope.categories : null
125+
126+ property Item selectedItem
127+
126128 delegate: OptionSelectorDelegate {
129+ id: categoryDelegate
127130 text: model.name
128− }
131+ property string categoryId: model.categoryId
132+ property string template: JSON.stringify(JSON.parse(model.rawRendererTemplate), null, " ");
129133
130− onSelectedIndexChanged: {
131− categoryJson.refreshText();
134+ onSelectedChanged: if (selected) categorySelector.selectedItem = categoryDelegate
132135 }
133136 }
134137
135− Repeater {
136− id: categoryRepeater
137− model: categorySelector.model
138− Item {
139− property var data: model.rawRendererTemplate
140− property var categoryId: model.categoryId
141− onDataChanged: {
142− if (model.index != categorySelector.selectedIndex) return;
143− categoryJson.refreshText();
144− }
145− }
146− onItemAdded: categoryJson.refreshText()
147− }
148−
149138 TextArea {
150139 id: categoryJson
151140 width: parent.width
152141 autoSize: true
153142 readOnly: true
154−
155− function refreshText() {
156− if (categoryRepeater.count > categorySelector.selectedIndex) {
157− var item = categoryRepeater.itemAt(categorySelector.selectedIndex);
158− if (item == null) return;
159− categoryJson.text = JSON.stringify(JSON.parse(item.data), null, " ");
160− }
161− }
143+ text: categorySelector.selectedItem && categorySelector.selectedItem.template
162144 }
163145
164146 Button {
@@ -188,8 +170,7 @@ Rectangle {
188170 onCancelClicked: PopupUtils.close(sheet)
189171 onConfirmClicked: {
190172 PopupUtils.close(sheet);
191− var categoryId = categoryRepeater.itemAt(categorySelector.selectedIndex).categoryId;
192− scopeView.scope.categories.overrideCategoryJson(categoryId, categoryEditorArea.text);
173+ scopeView.scope.categories.overrideCategoryJson(categorySelector.selectedItem.categoryId, categoryEditorArea.text);
193174 }
194175 }
195176 }