diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-09-13 13:56:22 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-09-16 09:48:31 +0300 |
commit | 73ffd814281d9fa07f5d25b2b3a8ce04a011780c (patch) | |
tree | 99cfff8e2cc95b0366b582bf912c0f9ff47f2382 /examples | |
parent | cff52478831a7653514fb382c27db0faba395c7c (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.cpp | 9 | ||||
-rw-r--r-- | examples/qmlbarchart/qml/qmlbarchart/axes.qml | 9 | ||||
-rw-r--r-- | examples/qmlbarchart/qml/qmlbarchart/data.qml | 42 | ||||
-rw-r--r-- | examples/qmlbarchart/qml/qmlbarchart/main.qml | 46 | ||||
-rw-r--r-- | examples/qmlsurface/qml/qmlsurface/data.qml | 2 | ||||
-rw-r--r-- | examples/qmlsurface/qml/qmlsurface/main.qml | 1 |
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 |