diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-03-13 09:40:44 +0200 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-03-13 09:48:46 +0200 |
commit | 61c614240da9a2ecb5458e2796186339cbfd8762 (patch) | |
tree | aa095d786101e3ee14448674bae5da272f838c03 /src | |
parent | 3ca866b2af83fe54000c54f8435ce7e47af6c819 (diff) |
SelectionMode as combination of checkboxes
Change-Id: I30f697ae3f94258717f01b34813dc7fd66c2485c
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/datavisualizationqml2/designer/Bars3DSpecifics.qml | 171 | ||||
-rw-r--r-- | src/datavisualizationqml2/designer/Surface3DSpecifics.qml | 161 |
2 files changed, 292 insertions, 40 deletions
diff --git a/src/datavisualizationqml2/designer/Bars3DSpecifics.qml b/src/datavisualizationqml2/designer/Bars3DSpecifics.qml index 55b06d97..e52320ac 100644 --- a/src/datavisualizationqml2/designer/Bars3DSpecifics.qml +++ b/src/datavisualizationqml2/designer/Bars3DSpecifics.qml @@ -19,6 +19,7 @@ import QtQuick 2.0 import HelperWidgets 2.0 import QtQuick.Layouts 1.0 +import QtQuick.Controls 1.1 as Controls Column { anchors.left: parent.left @@ -139,32 +140,152 @@ Column { Layout.fillWidth: true } SecondColumnLayout { - ComboBox { - backendValue: backendValues.selectionMode - model: [ - "SelectionNone", - "SelectionItem", - "SelectionRow", - "SelectionItemAndRow", - "SelectionColumn", - "SelectionItemAndColumn", - "SelectionRowAndColumn", - "SelectionItemRowAndColumn", - "SelectionRow | SelectionSlice", - "SelectionItemAndRow | SelectionSlice", - "SelectionColumn | SelectionSlice", - "SelectionItemAndColumn | SelectionSlice", - "SelectionRow | SelectionMultiSeries", - "SelectionItemAndRow | SelectionMultiSeries", - "SelectionColumn | SelectionMultiSeries", - "SelectionItemAndColumn | SelectionMultiSeries", - "SelectionRow | SelectionSlice | SelectionMultiSeries", - "SelectionItemAndRow | SelectionSlice | SelectionMultiSeries", - "SelectionColumn | SelectionSlice | SelectionMultiSeries", - "SelectionItemAndColumn | SelectionSlice | SelectionMultiSeries" - ] + id: selectionLayout + property bool isInModel: backendValue.isInModel; + property bool isInSubState: backendValue.isInSubState; + property bool selectionChangedFlag: selectionChanged + property variant backendValue: backendValues.selectionMode + property variant valueFromBackend: backendValue.value + property string enumScope: "AbstractGraph3D" + property string enumSeparator: " | " + property int checkedCount: 0 + property bool selectionItem: false + property bool selectionRow: false + property bool selectionColumn: false + property bool selectionSlice: false + property bool selectionMulti: false + + function checkValue(checkedVariable, variableText, expressionBase) { + var expressionStr = expressionBase + if (checkedVariable) { + if (expressionStr !== "") { + expressionStr += enumSeparator + } + expressionStr += enumScope + expressionStr += "." + expressionStr += variableText + checkedCount++ + } + return expressionStr + } + + function composeSelectionMode() { + var expressionStr = "" + checkedCount = 0 + expressionStr = checkValue(selectionItem, "SelectionItem", expressionStr) + expressionStr = checkValue(selectionRow, "SelectionRow", expressionStr) + expressionStr = checkValue(selectionColumn, "SelectionColumn", expressionStr) + expressionStr = checkValue(selectionSlice, "SelectionSlice", expressionStr) + expressionStr = checkValue(selectionMulti, "SelectionMultiSeries", expressionStr) + + if (checkedCount === 0) + backendValue.expression = enumScope + ".SelectionNone" + else + backendValue.expression = expressionStr + } + + function evaluate() { + if (backendValue.value === undefined) + return + + selectionItem = (backendValue.expression.indexOf("SelectionItem") !== -1) + selectionRow = (backendValue.expression.indexOf("SelectionRow") !== -1) + selectionColumn = (backendValue.expression.indexOf("SelectionColumn") !== -1) + selectionSlice = (backendValue.expression.indexOf("SelectionSlice") !== -1) + selectionMulti = (backendValue.expression.indexOf("SelectionMultiSeries") !== -1) + + selectionItemBox.checked = selectionItem + selectionRowBox.checked = selectionRow + selectionColumnBox.checked = selectionColumn + selectionSliceBox.checked = selectionSlice + selectionMultiSeriesBox.checked = selectionMulti + } + + onSelectionChangedFlagChanged: evaluate() + + onIsInModelChanged: evaluate() + + onIsInSubStateChanged: evaluate() + + onBackendValueChanged: evaluate() + + onValueFromBackendChanged: evaluate() + + ColumnLayout { + anchors.fill: parent + + Controls.CheckBox { + id: selectionItemBox + style: checkBox.style + text: "SelectionItem" + Layout.fillWidth: true + onClicked: { + selectionLayout.selectionItem = checked + selectionLayout.composeSelectionMode() + } + } + Controls.CheckBox { + id: selectionRowBox + style: checkBox.style + text: "SelectionRow" + Layout.fillWidth: true + onClicked: { + selectionLayout.selectionRow = checked + selectionLayout.composeSelectionMode() + } + } + Controls.CheckBox { + id: selectionColumnBox + style: checkBox.style + text: "SelectionColumn" + Layout.fillWidth: true + onClicked: { + selectionLayout.selectionColumn = checked + selectionLayout.composeSelectionMode() + } + } + Controls.CheckBox { + id: selectionSliceBox + style: checkBox.style + text: "SelectionSlice" + Layout.fillWidth: true + onClicked: { + selectionLayout.selectionSlice = checked + selectionLayout.composeSelectionMode() + } + } + Controls.CheckBox { + id: selectionMultiSeriesBox + style: checkBox.style + text: "SelectionMultiSeries" + Layout.fillWidth: true + onClicked: { + selectionLayout.selectionMulti = checked + selectionLayout.composeSelectionMode() + } + } + } + } + // Kept for debugging + Label { } + SecondColumnLayout { + TextEdit { + id: debugLabel Layout.fillWidth: true - scope: "AbstractGraph3D" + wrapMode: TextEdit.WordWrap + textFormat: TextEdit.RichText + width: 400 + visible: false + } + } + Controls.CheckBox { + property color textColor: colorLogic.textColor + id: checkBox + style: CustomCheckBoxStyle {} + visible: false + ColorLogic { + id: colorLogic + backendValue: backendValues.selectionMode } } } diff --git a/src/datavisualizationqml2/designer/Surface3DSpecifics.qml b/src/datavisualizationqml2/designer/Surface3DSpecifics.qml index 7723e7ec..74470e4b 100644 --- a/src/datavisualizationqml2/designer/Surface3DSpecifics.qml +++ b/src/datavisualizationqml2/designer/Surface3DSpecifics.qml @@ -19,6 +19,7 @@ import QtQuick 2.0 import HelperWidgets 2.0 import QtQuick.Layouts 1.0 +import QtQuick.Controls 1.1 as Controls Column { anchors.left: parent.left @@ -77,22 +78,152 @@ Column { Layout.fillWidth: true } SecondColumnLayout { - ComboBox { - backendValue: backendValues.selectionMode - model: [ - "SelectionNone", - "SelectionItem", - "SelectionRow | SelectionSlice", - "SelectionItemAndRow | SelectionSlice", - "SelectionColumn | SelectionSlice", - "SelectionItemAndColumn | SelectionSlice", - "SelectionRow | SelectionSlice | SelectionMultiSeries", - "SelectionItemAndRow | SelectionSlice | SelectionMultiSeries", - "SelectionColumn | SelectionSlice | SelectionMultiSeries", - "SelectionItemAndColumn | SelectionSlice | SelectionMultiSeries" - ] + id: selectionLayout + property bool isInModel: backendValue.isInModel; + property bool isInSubState: backendValue.isInSubState; + property bool selectionChangedFlag: selectionChanged + property variant backendValue: backendValues.selectionMode + property variant valueFromBackend: backendValue.value + property string enumScope: "AbstractGraph3D" + property string enumSeparator: " | " + property int checkedCount: 0 + property bool selectionItem: false + property bool selectionRow: false + property bool selectionColumn: false + property bool selectionSlice: false + property bool selectionMulti: false + + function checkValue(checkedVariable, variableText, expressionBase) { + var expressionStr = expressionBase + if (checkedVariable) { + if (expressionStr !== "") { + expressionStr += enumSeparator + } + expressionStr += enumScope + expressionStr += "." + expressionStr += variableText + checkedCount++ + } + return expressionStr + } + + function composeSelectionMode() { + var expressionStr = "" + checkedCount = 0 + expressionStr = checkValue(selectionItem, "SelectionItem", expressionStr) + expressionStr = checkValue(selectionRow, "SelectionRow", expressionStr) + expressionStr = checkValue(selectionColumn, "SelectionColumn", expressionStr) + expressionStr = checkValue(selectionSlice, "SelectionSlice", expressionStr) + expressionStr = checkValue(selectionMulti, "SelectionMultiSeries", expressionStr) + + if (checkedCount === 0) + backendValue.expression = enumScope + ".SelectionNone" + else + backendValue.expression = expressionStr + } + + function evaluate() { + if (backendValue.value === undefined) + return + + selectionItem = (backendValue.expression.indexOf("SelectionItem") !== -1) + selectionRow = (backendValue.expression.indexOf("SelectionRow") !== -1) + selectionColumn = (backendValue.expression.indexOf("SelectionColumn") !== -1) + selectionSlice = (backendValue.expression.indexOf("SelectionSlice") !== -1) + selectionMulti = (backendValue.expression.indexOf("SelectionMultiSeries") !== -1) + + selectionItemBox.checked = selectionItem + selectionRowBox.checked = selectionRow + selectionColumnBox.checked = selectionColumn + selectionSliceBox.checked = selectionSlice + selectionMultiSeriesBox.checked = selectionMulti + } + + onSelectionChangedFlagChanged: evaluate() + + onIsInModelChanged: evaluate() + + onIsInSubStateChanged: evaluate() + + onBackendValueChanged: evaluate() + + onValueFromBackendChanged: evaluate() + + ColumnLayout { + anchors.fill: parent + + Controls.CheckBox { + id: selectionItemBox + style: checkBox.style + text: "SelectionItem" + Layout.fillWidth: true + onClicked: { + selectionLayout.selectionItem = checked + selectionLayout.composeSelectionMode() + } + } + Controls.CheckBox { + id: selectionRowBox + style: checkBox.style + text: "SelectionRow" + Layout.fillWidth: true + onClicked: { + selectionLayout.selectionRow = checked + selectionLayout.composeSelectionMode() + } + } + Controls.CheckBox { + id: selectionColumnBox + style: checkBox.style + text: "SelectionColumn" + Layout.fillWidth: true + onClicked: { + selectionLayout.selectionColumn = checked + selectionLayout.composeSelectionMode() + } + } + Controls.CheckBox { + id: selectionSliceBox + style: checkBox.style + text: "SelectionSlice" + Layout.fillWidth: true + onClicked: { + selectionLayout.selectionSlice = checked + selectionLayout.composeSelectionMode() + } + } + Controls.CheckBox { + id: selectionMultiSeriesBox + style: checkBox.style + text: "SelectionMultiSeries" + Layout.fillWidth: true + onClicked: { + selectionLayout.selectionMulti = checked + selectionLayout.composeSelectionMode() + } + } + } + } + // Kept for debugging + Label { } + SecondColumnLayout { + TextEdit { + id: debugLabel Layout.fillWidth: true - scope: "AbstractGraph3D" + wrapMode: TextEdit.WordWrap + textFormat: TextEdit.RichText + width: 400 + visible: false + } + } + Controls.CheckBox { + property color textColor: colorLogic.textColor + id: checkBox + style: CustomCheckBoxStyle {} + visible: false + ColorLogic { + id: colorLogic + backendValue: backendValues.selectionMode } } } |