Skip to content

Commit 85dd8b3

Browse files
mrnomuglide
authored andcommitted
Improve Save button
- Remove updated value dialog - Enable Save button onTextChanged - Add valueUpdated signal - Add "saving" state to Save button - Show saving process indicator
1 parent 91e417b commit 85dd8b3

File tree

3 files changed

+36
-12
lines changed

3 files changed

+36
-12
lines changed

src/modules/value-editor/valueviewmodel.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ void ValueEditor::ValueViewModel::updateRow(int rowIndex, const QVariantMap& row
245245
return;
246246
}
247247
emit dataChanged(index(rowIndex, 0), index(rowIndex, m_model->getColumnNames().size() - 1));
248+
emit valueUpdated();
248249
});
249250
}
250251

src/modules/value-editor/valueviewmodel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class ValueViewModel : public BaseListModel {
7575
void singlePageModeChanged();
7676
void modelLoaded();
7777
void tabClosed();
78+
void valueUpdated();
7879

7980
private:
8081
QSharedPointer<Model> m_model;

src/qml/value-editor/editors/MultilineEditor.qml

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,6 @@ Item
305305
}
306306
}
307307

308-
309308
ColumnLayout {
310309
anchors.fill: parent
311310

@@ -437,8 +436,6 @@ Item
437436

438437
function saveChanges() {
439438
if (!valueEditor.item || !valueEditor.item.isEdited()) {
440-
savingConfirmation.text = qsTranslate("RDM","Nothing to save")
441-
savingConfirmation.open()
442439
return
443440
}
444441

@@ -447,20 +444,45 @@ Item
447444
return;
448445

449446
var value = valueEditor.item.getValue()
447+
saveBtnTimer.start()
450448
keyTab.keyModel.updateRow(valueEditor.currentRow, value)
449+
})
450+
}
451+
452+
states: [
453+
State {
454+
name: "saving"
455+
456+
PropertyChanges {
457+
target: saveBtn
458+
iconSource: "qrc:/images/wait.svg"
459+
enabled: false
460+
}
461+
}
462+
]
463+
464+
Connections {
465+
target: keyTab.keyModel
451466

467+
onValueUpdated: {
452468
root.isEdited = false
469+
saveBtnTimer.resetSaveBtn()
470+
}
453471

454-
savingConfirmation.text = qsTranslate("RDM","Value was updated!")
455-
savingConfirmation.open()
456-
})
472+
onError: saveBtnTimer.resetSaveBtn()
457473
}
458474

459-
OkDialog {
460-
id: savingConfirmation
461-
title: qsTranslate("RDM","Save value")
462-
text: ""
463-
visible: false
475+
Timer {
476+
id: saveBtnTimer
477+
interval: 500
478+
repeat: true
479+
triggeredOnStart: true
480+
onTriggered: saveBtn.state = "saving"
481+
482+
function resetSaveBtn() {
483+
saveBtnTimer.stop()
484+
saveBtn.state = ""
485+
}
464486
}
465487
}
466488

@@ -518,7 +540,7 @@ Item
518540
textFormat: textView.textFormat
519541
readOnly: textView.readOnly
520542

521-
Keys.onReleased: {
543+
onTextChanged: {
522544
root.isEdited = true
523545
textView.model && textView.model.setTextChunk(index, textAreaPart.text)
524546
}

0 commit comments

Comments
 (0)