summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-13 13:56:22 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-16 09:48:31 +0300
commit73ffd814281d9fa07f5d25b2b3a8ce04a011780c (patch)
tree99cfff8e2cc95b0366b582bf912c0f9ff47f2382 /examples
parentcff52478831a7653514fb382c27db0faba395c7c (diff)
Automatic row/col categories for bar and surface item model mappers
Task-number: QTRD-2271 Change-Id: I571e4010f3780722564f06c06bcc346d5803c646 Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/barchart/main.cpp9
-rw-r--r--examples/qmlbarchart/qml/qmlbarchart/axes.qml9
-rw-r--r--examples/qmlbarchart/qml/qmlbarchart/data.qml42
-rw-r--r--examples/qmlbarchart/qml/qmlbarchart/main.qml46
-rw-r--r--examples/qmlsurface/qml/qmlsurface/data.qml2
-rw-r--r--examples/qmlsurface/qml/qmlsurface/main.qml1
6 files changed, 91 insertions, 18 deletions
diff --git a/examples/barchart/main.cpp b/examples/barchart/main.cpp
index 037fa214..9f17f8d9 100644
--- a/examples/barchart/main.cpp
+++ b/examples/barchart/main.cpp
@@ -236,10 +236,11 @@ int main(int argc, char **argv)
layout->addWidget(container, 1);
layout->addWidget(tableWidget, 1, Qt::AlignHCenter);
- // We don't need to initialize the mapping object in any way, as it defaults
- // to row/column support and uses the Qt::DisplayRole role for value role by default.
- QItemModelBarDataProxy *proxy = new QItemModelBarDataProxy(tableWidget->model(),
- new QItemModelBarDataMapping);
+ // Since we are dealing with QTableWidget, the model will already have data sorted properly
+ // in rows and columns, so create a custom mapping to utilize this.
+ QItemModelBarDataMapping *mapping = new QItemModelBarDataMapping;
+ mapping->setUseModelCategories(true);
+ QItemModelBarDataProxy *proxy = new QItemModelBarDataProxy(tableWidget->model(), mapping);
chart->setActiveDataProxy(proxy);
ChartDataGenerator *generator = new ChartDataGenerator(chart, tableWidget);
diff --git a/examples/qmlbarchart/qml/qmlbarchart/axes.qml b/examples/qmlbarchart/qml/qmlbarchart/axes.qml
index 36324e0d..b0ba3eb2 100644
--- a/examples/qmlbarchart/qml/qmlbarchart/axes.qml
+++ b/examples/qmlbarchart/qml/qmlbarchart/axes.qml
@@ -20,15 +20,14 @@ import QtQuick 2.1
import com.digia.QtDataVisualization 1.0
Item {
- property alias row: rowAxis
property alias column: columnAxis
property alias expenses: expensesAxis
property alias income: incomeAxis
- CategoryAxis3D {
- id: rowAxis
- categoryLabels: ["2000", "2001", "2002", "2003"]
- }
+ // For row labels we can use row labels from data proxy, so default axis
+ // suffices for rows.
+
+ // Custom labels for columns, since the data contains abbreviated month names.
CategoryAxis3D {
id: columnAxis
categoryLabels: ["January", "February", "March", "April", "May", "June",
diff --git a/examples/qmlbarchart/qml/qmlbarchart/data.qml b/examples/qmlbarchart/qml/qmlbarchart/data.qml
index 47c08cce..a6313fb4 100644
--- a/examples/qmlbarchart/qml/qmlbarchart/data.qml
+++ b/examples/qmlbarchart/qml/qmlbarchart/data.qml
@@ -29,9 +29,6 @@ Item {
rowRole: "year"
columnRole: "month"
valueRole: "expenses"
- rowCategories: ["2000", "2001", "2002", "2003"]
- columnCategories: ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
}
ItemModelBarDataProxy {
@@ -42,6 +39,32 @@ Item {
ListModel {
id: dataModel
+ ListElement{ year: "1998"; month: "Jan"; expenses: "4"; income: "5" }
+ ListElement{ year: "1998"; month: "Feb"; expenses: "5"; income: "6" }
+ ListElement{ year: "1998"; month: "Mar"; expenses: "7"; income: "4" }
+ ListElement{ year: "1998"; month: "Apr"; expenses: "3"; income: "2" }
+ ListElement{ year: "1998"; month: "May"; expenses: "4"; income: "1" }
+ ListElement{ year: "1998"; month: "Jun"; expenses: "2"; income: "2" }
+ ListElement{ year: "1998"; month: "Jul"; expenses: "1"; income: "3" }
+ ListElement{ year: "1998"; month: "Aug"; expenses: "5"; income: "1" }
+ ListElement{ year: "1998"; month: "Sep"; expenses: "2"; income: "3" }
+ ListElement{ year: "1998"; month: "Oct"; expenses: "5"; income: "2" }
+ ListElement{ year: "1998"; month: "Nov"; expenses: "8"; income: "5" }
+ ListElement{ year: "1998"; month: "Dec"; expenses: "3"; income: "3" }
+
+ ListElement{ year: "1999"; month: "Jan"; expenses: "3"; income: "1" }
+ ListElement{ year: "1999"; month: "Feb"; expenses: "4"; income: "2" }
+ ListElement{ year: "1999"; month: "Mar"; expenses: "12"; income: "4" }
+ ListElement{ year: "1999"; month: "Apr"; expenses: "13"; income: "6" }
+ ListElement{ year: "1999"; month: "May"; expenses: "14"; income: "11" }
+ ListElement{ year: "1999"; month: "Jun"; expenses: "7"; income: "7" }
+ ListElement{ year: "1999"; month: "Jul"; expenses: "6"; income: "4" }
+ ListElement{ year: "1999"; month: "Aug"; expenses: "4"; income: "15" }
+ ListElement{ year: "1999"; month: "Sep"; expenses: "2"; income: "18" }
+ ListElement{ year: "1999"; month: "Oct"; expenses: "29"; income: "25" }
+ ListElement{ year: "1999"; month: "Nov"; expenses: "23"; income: "29" }
+ ListElement{ year: "1999"; month: "Dec"; expenses: "5"; income: "9" }
+
ListElement{ year: "2000"; month: "Jan"; expenses: "3"; income: "8" }
ListElement{ year: "2000"; month: "Feb"; expenses: "8"; income: "14" }
ListElement{ year: "2000"; month: "Mar"; expenses: "10"; income: "20" }
@@ -93,5 +116,18 @@ Item {
ListElement{ year: "2003"; month: "Oct"; expenses: "13"; income: "15" }
ListElement{ year: "2003"; month: "Nov"; expenses: "8"; income: "17" }
ListElement{ year: "2003"; month: "Dec"; expenses: "7"; income: "10" }
+
+ ListElement{ year: "2004"; month: "Jan"; expenses: "12"; income: "16" }
+ ListElement{ year: "2004"; month: "Feb"; expenses: "24"; income: "28" }
+ ListElement{ year: "2004"; month: "Mar"; expenses: "27"; income: "22" }
+ ListElement{ year: "2004"; month: "Apr"; expenses: "29"; income: "25" }
+ ListElement{ year: "2004"; month: "May"; expenses: "27"; income: "29" }
+ ListElement{ year: "2004"; month: "Jun"; expenses: "19"; income: "18" }
+ ListElement{ year: "2004"; month: "Jul"; expenses: "13"; income: "17" }
+ ListElement{ year: "2004"; month: "Aug"; expenses: "15"; income: "19" }
+ ListElement{ year: "2004"; month: "Sep"; expenses: "3"; income: "8" }
+ ListElement{ year: "2004"; month: "Oct"; expenses: "3"; income: "6" }
+ ListElement{ year: "2004"; month: "Nov"; expenses: "4"; income: "8" }
+ ListElement{ year: "2004"; month: "Dec"; expenses: "5"; income: "9" }
}
}
diff --git a/examples/qmlbarchart/qml/qmlbarchart/main.qml b/examples/qmlbarchart/qml/qmlbarchart/main.qml
index 598de15d..f9a89ef6 100644
--- a/examples/qmlbarchart/qml/qmlbarchart/main.qml
+++ b/examples/qmlbarchart/qml/qmlbarchart/main.qml
@@ -49,17 +49,36 @@ Item {
selectionMode: Bars3D.ModeItem
font.pointSize: 35
theme: Bars3D.ThemeBrownSand
- rows: 4
+ rows: 7
columns: 12
dataProxy: chartData.proxy
barThickness: 0.5
barSpacing: Qt.size(0.5, 0.5)
barSpacingRelative: false
cameraPreset: Bars3D.PresetRight
- rowAxis: chartAxes.row
columnAxis: chartAxes.column
valueAxis: chartAxes.expenses
itemLabelFormat: "@valueTitle for @colLabel, @rowLabel: @valueLabel"
+
+ onSelectedBarPosChanged: {
+ // Set tableView current row to selected bar
+ var rowRole = chartData.proxy.rowLabels[position.x];
+ var colRole = chartData.proxy.columnLabels[position.y];
+ var currentRow = tableView.currentRow
+ if (currentRow === -1 || rowRole !== chartData.model.get(currentRow).year
+ || colRole !== chartData.model.get(currentRow).month) {
+ var totalRows = tableView.rowCount;
+ for (var i = 0; i < totalRows; i++) {
+ var currentRowRole = chartData.model.get(i).year
+ var currentColRole = chartData.model.get(i).month
+ console.log(currentRowRole, currentColRole)
+ if (currentRowRole === rowRole && currentColRole === colRole) {
+ tableView.currentRow = i
+ break
+ }
+ }
+ }
+ }
}
}
@@ -68,7 +87,7 @@ Item {
x: 0
y: 0
width: 298
- height: parent.height - mappingToggle.height - shadowToggle.height
+ height: parent.height - mappingToggle.height - shadowToggle.height - dataToggle.height
TableViewColumn{ role: "year" ; title: "Year" ; width: 80 }
TableViewColumn{ role: "month" ; title: "Month" ; width: 80 }
TableViewColumn{ role: "expenses" ; title: "Expenses" ; width: 60 }
@@ -115,4 +134,25 @@ Item {
}
}
}
+
+ Button {
+ id: dataToggle
+ anchors.bottom: shadowToggle.top
+ width: tableView.width
+ text: "Show 2000 - 2002"
+ onClicked: {
+ if (testchart.rows !== 7) {
+ text = "Show 2000 - 2002"
+ chartData.mapping.autoRowCategories = true
+ testchart.rows = 7;
+ } else {
+ testchart.rows = 3;
+ text = "Show all years"
+ // Explicitly defining row categories, since we do not want to show data for
+ // all years in the model, just for the selected ones.
+ chartData.mapping.autoRowCategories = false
+ chartData.mapping.rowCategories = ["2000", "2001", "2002"]
+ }
+ }
+ }
}
diff --git a/examples/qmlsurface/qml/qmlsurface/data.qml b/examples/qmlsurface/qml/qmlsurface/data.qml
index 6478284b..6cc8ce45 100644
--- a/examples/qmlsurface/qml/qmlsurface/data.qml
+++ b/examples/qmlsurface/qml/qmlsurface/data.qml
@@ -29,8 +29,6 @@ Item {
rowRole: "latitude"
columnRole: "longitude"
valueRole: "height"
- rowCategories: ["99", "98", "97", "96", "95", "94", "93", "92", "91", "90", "89", "88", "87", "86", "85", "84", "83", "82", "81", "80", "79", "78", "77", "76", "75", "74", "73", "72", "71", "70", "69", "68", "67", "66", "65", "64", "63", "62", "61", "60", "59", "58", "57", "56", "55", "54", "53", "52", "51", "50", "49", "48", "47", "46", "45", "44", "43", "42", "41", "40", "39", "38", "37", "36", "35", "34", "33", "32", "31", "30", "29", "28", "27", "26", "25", "24", "23", "22", "21", "20", "19", "18", "17", "16", "15", "14", "13", "12", "11", "10", "9", "8", "7", "6", "5", "4", "3", "2", "1", "0"]
- columnCategories: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99"]
}
ItemModelSurfaceDataProxy {
diff --git a/examples/qmlsurface/qml/qmlsurface/main.qml b/examples/qmlsurface/qml/qmlsurface/main.qml
index 5b78d8fe..b532b80c 100644
--- a/examples/qmlsurface/qml/qmlsurface/main.qml
+++ b/examples/qmlsurface/qml/qmlsurface/main.qml
@@ -47,7 +47,6 @@ Item {
font.family: "STCaiyun"
font.pointSize: 35
cameraPreset: Surface3D.PresetIsometricLeft
- //itemLabelFormat: "X:@xLabel Y:@yLabel Z:@zLabel"
dataProxy: surfaceData.proxy
axisX.min: 0.0
axisX.max: 99.0