annotate src/metadataview.cpp @ 90:c3000fa6ca56

Add back button to subfolder selection dialog
author Andre Heinecke <andre.heinecke@intevation.de>
date Fri, 19 Jun 2015 14:27:56 +0200
parents b8c7644a9d49
children
rev   line source
25
64a51a42c01f Assign copyright correctly
Andre Heinecke <andre.heinecke@intevation.de>
parents: 24
diff changeset
1 /* Copyright (C) 2015 by ETH Zürich
64a51a42c01f Assign copyright correctly
Andre Heinecke <andre.heinecke@intevation.de>
parents: 24
diff changeset
2 * Software engineering by Intevation GmbH
24
6b9b5efcd7f4 Add missing copyright header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 22
diff changeset
3 *
6b9b5efcd7f4 Add missing copyright header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 22
diff changeset
4 * This file is Free Software under the GNU GPL (v>=2)
6b9b5efcd7f4 Add missing copyright header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 22
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY!
6b9b5efcd7f4 Add missing copyright header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 22
diff changeset
6 * See LICENSE.txt for details.
6b9b5efcd7f4 Add missing copyright header
Andre Heinecke <andre.heinecke@intevation.de>
parents: 22
diff changeset
7 */
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
8 #include "metadataview.h"
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
9 #include "qxtcsvmodel.h"
4
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
10 #include "filterwidget.h"
88
3916cb3c9105 Add new FilterSort model that allows to include empty values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 82
diff changeset
11 #include "includeemptysortmodel.h"
28
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
12 #include "constants.h"
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
13
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
14 #include <QTextCodec>
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
15 #include <QTableView>
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
16 #include <QSortFilterProxyModel>
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
17 #include <QVBoxLayout>
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
18 #include <QLabel>
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
19 #include <QDebug>
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
20 #include <QModelIndex>
22
0a08c1c2531a Fix missing include and update translations accordingly
Andre Heinecke <andre.heinecke@intevation.de>
parents: 17
diff changeset
21 #include <QHeaderView>
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
22 #include <QItemSelectionModel>
28
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
23 #include <QSettings>
35
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
24 #include <QFontMetrics>
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
25 #include <QApplication>
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
26
56
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
27 /**@brief Small wrapper around csv model to enable numerical sorting. */
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
28 class numericSortCSVModel : public QxtCsvModel
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
29 {
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
30 public:
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
31 /**@brief returns the data as string, integer or double variant. */
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
32 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const {
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
33 QVariant base = QxtCsvModel::data(index, role);
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
34 bool ok = false;
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
35 int intVal = base.toInt(&ok);
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
36 if (ok) {
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
37 return intVal;
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
38 }
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
39 double dblVal = base.toDouble(&ok);
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
40 if (ok) {
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
41 return dblVal;
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
42 }
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
43 return base;
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
44 }
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
45 };
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
46
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
47 MetaDataView::MetaDataView(QWidget *parent, Qt::WindowFlags f) :
44
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
48 QWidget(parent, f),
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
49 mDateColIdx(-1) {
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
50 /* Create models */
88
3916cb3c9105 Add new FilterSort model that allows to include empty values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 82
diff changeset
51 mSortModel = new IncludeEmptySortModel;
56
016cbcb1a233 Wrap the CSV model to have it return not only string variants but also numerical types
Andre Heinecke <andre.heinecke@intevation.de>
parents: 55
diff changeset
52 mCSVModel = new numericSortCSVModel;
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
53 setupGUI();
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
54
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
55 connect(mView->selectionModel(), &QItemSelectionModel::selectionChanged,
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
56 this, &MetaDataView::viewSelectionChanged);
4
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
57 connect(mSortModel, &QSortFilterProxyModel::dataChanged,
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
58 this, &MetaDataView::dataChanged);
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
59 return;
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
60 }
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
61
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
62 void MetaDataView::setupGUI() {
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
63 QVBoxLayout *baseLayout = new QVBoxLayout;
4
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
64
88
3916cb3c9105 Add new FilterSort model that allows to include empty values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 82
diff changeset
65 mFilterWidget = new FilterWidget(mSortModel, true);
3916cb3c9105 Add new FilterSort model that allows to include empty values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 82
diff changeset
66 connect(mFilterWidget, &FilterWidget::filterHasChanged,
28
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
67 this, &MetaDataView::applyDefaultSort);
88
3916cb3c9105 Add new FilterSort model that allows to include empty values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 82
diff changeset
68 connect(mFilterWidget, &FilterWidget::includeEmptyChanged,
3916cb3c9105 Add new FilterSort model that allows to include empty values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 82
diff changeset
69 mSortModel, &IncludeEmptySortModel::setIncludeEmpty);
3916cb3c9105 Add new FilterSort model that allows to include empty values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 82
diff changeset
70 connect(mFilterWidget, &FilterWidget::filterHasChanged,
53
28d5a77db9fb Ensure that the first row is properly set after filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 44
diff changeset
71 this, &MetaDataView::selectFirstRow);
88
3916cb3c9105 Add new FilterSort model that allows to include empty values
Andre Heinecke <andre.heinecke@intevation.de>
parents: 82
diff changeset
72 baseLayout->addWidget(mFilterWidget);
4
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
73
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
74 mView = new QTableView;
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
75 mView->setModel(mSortModel);
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
76
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
77 mView->horizontalHeader()->setStretchLastSection(true);
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
78 // mView->setColumnWidth(0, 60);
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
79 mView->setSelectionBehavior(QAbstractItemView::SelectRows);
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
80 mView->setSelectionMode(QAbstractItemView::SingleSelection);
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
81 mView->setSortingEnabled(true);
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
82 mView->setEditTriggers(QAbstractItemView::NoEditTriggers);
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
83
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
84 baseLayout->addWidget(mView);
37
0c05958d254c (issue 13, 6) Add constant index number column to data and view
Andre Heinecke <andre.heinecke@intevation.de>
parents: 35
diff changeset
85 mView->verticalHeader()->setVisible(false);
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
86
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
87 setLayout(baseLayout);
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
88 }
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
89
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
90 QString MetaDataView::parseMetaData(const QString& filePath) {
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
91 mCSVModel->setSource(filePath, true, ';', QTextCodec::codecForName("UTF8"));
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
92 if (!mCSVModel->rowCount()) {
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
93 return tr("Failed to parse file: '%1'").arg(filePath);
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
94 }
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
95
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
96 mSortModel->setSourceModel(mCSVModel);
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
97 qDebug() << "Parsed: " << mCSVModel->rowCount() << " rows.";
89
b8c7644a9d49 Add config settings to hide specific columns
Andre Heinecke <andre.heinecke@intevation.de>
parents: 88
diff changeset
98 mFilterWidget->headersChanged();
b8c7644a9d49 Add config settings to hide specific columns
Andre Heinecke <andre.heinecke@intevation.de>
parents: 88
diff changeset
99 hideCols();
28
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
100 applyDefaultSort();
35
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
101 resizeColsToHeaders();
44
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
102
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
103 QSettings settings;
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
104 const QString displayDate = settings.value(DATE_COLUMN_KEY, DATE_COLUMN_DEFAULT).toString();
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
105 settings.setValue(DATE_COLUMN_KEY, displayDate);
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
106 for (int i=0; i < mSortModel->columnCount(); i++) {
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
107 QString entry = mSortModel->headerData(i, Qt::Horizontal).toString();
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
108 if (entry.toLower() == displayDate.toLower()) {
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
109 mDateColIdx = i;
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
110 break;
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
111 }
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
112 }
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
113 if (mDateColIdx == -1) {
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
114 qDebug() << "Failed to find displayDate column: " << displayDate;
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
115 mDateColIdx = DATE_COLUMN_FALLBACK_IDX;
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
116 }
81
5923d569167b Make Header tooltips configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 56
diff changeset
117 setupHeaderTooltips();
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
118 return QString();
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
119 }
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
120
4
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
121 void MetaDataView::dataChanged()
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
122 {
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
123 QItemSelectionModel *selection = mView->selectionModel();
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
124 QModelIndexList selected = selection->selectedIndexes();
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
125
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
126 qDebug() << "Data Changed.";
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
127 if (selected.isEmpty()) {
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
128 /* Nothing selected still we need to emit this signal to update
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
129 * the viewer otherwise selection changed handles it. */
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
130 emit selectionChanged(QString(), 0, mSortModel->rowCount() - 1,
44
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
131 QString(), 0);
4
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
132 }
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
133 }
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
134
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
135 void MetaDataView::viewSelectionChanged(const QItemSelection& selected,
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
136 const QItemSelection& deselected) {
4
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
137 if (selected.indexes().isEmpty()) {
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
138 /* Nothing selected */
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
139 return;
e4748da7140b Add filter functionalty to metadataview
Andre Heinecke <andre.heinecke@intevation.de>
parents: 3
diff changeset
140 }
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
141 /* One row selected */
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
142 Q_ASSERT(selected.indexes().count() == mCSVModel->columnCount());
44
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
143 const QModelIndex idx = selected.indexes()[FILENAME_COLUMN_IDX];
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
144 const QString dateString = selected.indexes()[mDateColIdx].data().toString();
3
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
145 bool ok;
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
146 qint64 secondsSinceEpoch = dateString.toLongLong(&ok);
44
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
147 QString timestamp = dateString;
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
148 if (ok) {
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
149 QDateTime datetime = QDateTime::fromMSecsSinceEpoch(secondsSinceEpoch * 1000);
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
150 if (datetime.isValid()) {
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
151 timestamp = datetime.toString(LONG_DATE_FORMAT);
73e6b6b12412 (issue 1,2) Make the column used for the Timestamp value configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 37
diff changeset
152 }
3
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
153 }
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
154 emit selectionChanged(idx.data().toString(), idx.row(), mSortModel->rowCount() - 1,
37
0c05958d254c (issue 13, 6) Add constant index number column to data and view
Andre Heinecke <andre.heinecke@intevation.de>
parents: 35
diff changeset
155 timestamp, selected.indexes()[0].data().toInt());
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
156 qDebug() << "Selection changed: " << idx.data();
82
9a03703622b8 Scroll to selection when invisible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 81
diff changeset
157 if (!isVisible()) {
9a03703622b8 Scroll to selection when invisible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 81
diff changeset
158 mView->scrollTo(selected.indexes()[0], QAbstractItemView::PositionAtTop);
9a03703622b8 Scroll to selection when invisible
Andre Heinecke <andre.heinecke@intevation.de>
parents: 81
diff changeset
159 }
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
160 }
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
161
53
28d5a77db9fb Ensure that the first row is properly set after filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 44
diff changeset
162 void MetaDataView::selectFirstRow() {
28d5a77db9fb Ensure that the first row is properly set after filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 44
diff changeset
163 qDebug() << "Selecting first row";
28d5a77db9fb Ensure that the first row is properly set after filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 44
diff changeset
164 selectRow(0);
28d5a77db9fb Ensure that the first row is properly set after filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 44
diff changeset
165 }
28d5a77db9fb Ensure that the first row is properly set after filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 44
diff changeset
166
3
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
167 void MetaDataView::selectRow(int row) {
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
168 QItemSelectionModel *selection = mView->selectionModel();
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
169 if (!mSortModel->hasIndex(row, 0)) {
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
170 qDebug() << "Invalid row: " << row;
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
171 return;
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
172 }
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
173 QModelIndex newIdx = mSortModel->index(row, 0);
53
28d5a77db9fb Ensure that the first row is properly set after filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 44
diff changeset
174 selection->select(newIdx, QItemSelectionModel::Clear | QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows);
3
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
175 }
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
176
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
177 void MetaDataView::selectPrevRow() {
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
178 QItemSelectionModel *selection = mView->selectionModel();
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
179 QModelIndexList selected = selection->selectedIndexes();
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
180 int row = 0,
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
181 col = 0;
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
182 if (selected.isEmpty()) {
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
183 qDebug() << "Selection empty. Start at row 0";
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
184 if (!mSortModel->hasIndex(row, col)) {
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
185 qDebug() << "Empty model. Failed to advance.";
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
186 return;
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
187 }
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
188 } else {
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
189 QModelIndex old = selection->selectedIndexes().first();
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
190 if (!mSortModel->hasIndex(old.row() - 1, old.column())) {
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
191 qDebug() << "No less rows.";
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
192 return;
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
193 }
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
194 row = old.row() - 1;
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
195 col = old.column();
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
196 }
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
197 QModelIndex newIdx = mSortModel->index(row, col);
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
198 selection->select(newIdx, QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows);
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
199 }
248d5d1cdb38 Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 2
diff changeset
200
2
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
201 void MetaDataView::selectNextRow() {
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
202 QItemSelectionModel *selection = mView->selectionModel();
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
203 QModelIndexList selected = selection->selectedIndexes();
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
204 int row = 0,
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
205 col = 0;
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
206 if (selected.isEmpty()) {
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
207 qDebug() << "Selection empty. Start at row 0";
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
208 if (!mSortModel->hasIndex(row, col)) {
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
209 qDebug() << "Empty model. Failed to advance.";
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
210 return;
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
211 }
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
212 } else {
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
213 QModelIndex old = selection->selectedIndexes().first();
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
214 if (!mSortModel->hasIndex(old.row() + 1, old.column())) {
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
215 qDebug() << "No more rows.";
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
216 return;
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
217 }
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
218 row = old.row() + 1;
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
219 col = old.column();
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
220 }
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
221 QModelIndex newIdx = mSortModel->index(row, col);
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
222 selection->select(newIdx, QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows);
97d2c8869c39 First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff changeset
223 }
28
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
224
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
225 void MetaDataView::applyDefaultSort() {
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
226 QSettings settings;
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
227 QString sortField = settings.value(SORT_COLUMN_KEY, SORT_COLUMN_DEFAULT).toString();
55
23672cbc3e5f Write out default values for sortsettings in the ini file.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 53
diff changeset
228 settings.setValue(SORT_COLUMN_KEY, sortField);
28
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
229 bool sortAsc = settings.value(SORT_ORDER_KEY, SORT_ORDER_VALUE).toBool();
55
23672cbc3e5f Write out default values for sortsettings in the ini file.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 53
diff changeset
230 settings.setValue(SORT_ORDER_KEY, sortAsc);
28
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
231
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
232 int idx = -1;
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
233 for (int i=0; i < mSortModel->columnCount(); i++) {
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
234 QString entry = mSortModel->headerData(i, Qt::Horizontal).toString();
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
235 if (entry.toLower() == sortField.toLower()) {
37
0c05958d254c (issue 13, 6) Add constant index number column to data and view
Andre Heinecke <andre.heinecke@intevation.de>
parents: 35
diff changeset
236 idx = i;
28
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
237 break;
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
238 }
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
239 }
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
240 if (idx == -1) {
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
241 return;
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
242 }
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
243 qDebug() << "Applying default sort order on column " << idx;
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
244 mView->sortByColumn(idx, sortAsc ? Qt::AscendingOrder : Qt::DescendingOrder);
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
245 }
4e16fbd10945 (issue3-5) Make the default sort order configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 25
diff changeset
246
35
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
247 void MetaDataView::resizeColsToHeaders() {
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
248 QFontMetrics fm(qApp->font());
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
249 /* We do this manually here to avoid resizing to the real contents as
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
250 * we want the columns in the width of the header data. And we only
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
251 * want to increase that size. */
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
252 for (int i=0; i < mSortModel->columnCount(); i++) {
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
253 const QString entry = mSortModel->headerData(i, Qt::Horizontal).toString();
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
254 int w = fm.width(entry) + 20;
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
255 if (w > mView->horizontalHeader()->sectionSize(i)) {
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
256 mView->horizontalHeader()->resizeSection(i, w);
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
257 qDebug() << "Resizing " << i << " to: " << w;
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
258 }
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
259 }
f10d4e035eec (issue10) Use width of header as minimum of the column size
Andre Heinecke <andre.heinecke@intevation.de>
parents: 28
diff changeset
260 }
81
5923d569167b Make Header tooltips configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 56
diff changeset
261
5923d569167b Make Header tooltips configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 56
diff changeset
262 void MetaDataView::setupHeaderTooltips() {
5923d569167b Make Header tooltips configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 56
diff changeset
263 QSettings settings;
5923d569167b Make Header tooltips configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 56
diff changeset
264 settings.beginGroup(TOOLTIP_CONFIG_GROUP);
5923d569167b Make Header tooltips configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 56
diff changeset
265 for (int i=0; i < mSortModel->columnCount(); i++) {
5923d569167b Make Header tooltips configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 56
diff changeset
266 QString entry = mSortModel->headerData(i, Qt::Horizontal).toString();
5923d569167b Make Header tooltips configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 56
diff changeset
267 QString toolTip = settings.value(entry).toString();
5923d569167b Make Header tooltips configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 56
diff changeset
268 settings.setValue(entry, toolTip);
5923d569167b Make Header tooltips configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 56
diff changeset
269 if (!mSortModel->setHeaderData(i, Qt::Horizontal, toolTip, Qt::ToolTipRole)) {
5923d569167b Make Header tooltips configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 56
diff changeset
270 qDebug() << "Failed to set header data";
5923d569167b Make Header tooltips configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 56
diff changeset
271 }
5923d569167b Make Header tooltips configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 56
diff changeset
272 }
5923d569167b Make Header tooltips configurable
Andre Heinecke <andre.heinecke@intevation.de>
parents: 56
diff changeset
273 }
89
b8c7644a9d49 Add config settings to hide specific columns
Andre Heinecke <andre.heinecke@intevation.de>
parents: 88
diff changeset
274
b8c7644a9d49 Add config settings to hide specific columns
Andre Heinecke <andre.heinecke@intevation.de>
parents: 88
diff changeset
275 void MetaDataView::hideCols() {
b8c7644a9d49 Add config settings to hide specific columns
Andre Heinecke <andre.heinecke@intevation.de>
parents: 88
diff changeset
276 QSettings settings;
b8c7644a9d49 Add config settings to hide specific columns
Andre Heinecke <andre.heinecke@intevation.de>
parents: 88
diff changeset
277 settings.beginGroup(HIDE_CONFIG_GROUP);
b8c7644a9d49 Add config settings to hide specific columns
Andre Heinecke <andre.heinecke@intevation.de>
parents: 88
diff changeset
278 for (int i=0; i < mSortModel->columnCount(); i++) {
b8c7644a9d49 Add config settings to hide specific columns
Andre Heinecke <andre.heinecke@intevation.de>
parents: 88
diff changeset
279 QString entry = mSortModel->headerData(i, Qt::Horizontal).toString();
b8c7644a9d49 Add config settings to hide specific columns
Andre Heinecke <andre.heinecke@intevation.de>
parents: 88
diff changeset
280 bool hidden = settings.value(entry, false).toBool();
b8c7644a9d49 Add config settings to hide specific columns
Andre Heinecke <andre.heinecke@intevation.de>
parents: 88
diff changeset
281 settings.setValue(entry, hidden);
b8c7644a9d49 Add config settings to hide specific columns
Andre Heinecke <andre.heinecke@intevation.de>
parents: 88
diff changeset
282 mView->setColumnHidden(i, hidden);
b8c7644a9d49 Add config settings to hide specific columns
Andre Heinecke <andre.heinecke@intevation.de>
parents: 88
diff changeset
283 }
b8c7644a9d49 Add config settings to hide specific columns
Andre Heinecke <andre.heinecke@intevation.de>
parents: 88
diff changeset
284 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)