From 61c614240da9a2ecb5458e2796186339cbfd8762 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= Date: Thu, 13 Mar 2014 09:40:44 +0200 Subject: SelectionMode as combination of checkboxes Change-Id: I30f697ae3f94258717f01b34813dc7fd66c2485c Reviewed-by: Miikka Heikkinen --- .../designer/Bars3DSpecifics.qml | 171 ++++++++++++++++++--- .../designer/Surface3DSpecifics.qml | 161 +++++++++++++++++-- 2 files changed, 292 insertions(+), 40 deletions(-) (limited to 'src/datavisualizationqml2/designer') 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 } } } -- cgit v1.2.3