comparison src/metadataview.cpp @ 56:016cbcb1a233

Wrap the CSV model to have it return not only string variants but also numerical types
author Andre Heinecke <andre.heinecke@intevation.de>
date Tue, 19 May 2015 11:12:22 +0200
parents 23672cbc3e5f
children 5923d569167b
comparison
equal deleted inserted replaced
55:23672cbc3e5f 56:016cbcb1a233
21 #include <QItemSelectionModel> 21 #include <QItemSelectionModel>
22 #include <QSettings> 22 #include <QSettings>
23 #include <QFontMetrics> 23 #include <QFontMetrics>
24 #include <QApplication> 24 #include <QApplication>
25 25
26 /**@brief Small wrapper around csv model to enable numerical sorting. */
27 class numericSortCSVModel : public QxtCsvModel
28 {
29 public:
30 /**@brief returns the data as string, integer or double variant. */
31 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const {
32 QVariant base = QxtCsvModel::data(index, role);
33 bool ok = false;
34 int intVal = base.toInt(&ok);
35 if (ok) {
36 return intVal;
37 }
38 double dblVal = base.toDouble(&ok);
39 if (ok) {
40 return dblVal;
41 }
42 return base;
43 }
44 };
45
26 MetaDataView::MetaDataView(QWidget *parent, Qt::WindowFlags f) : 46 MetaDataView::MetaDataView(QWidget *parent, Qt::WindowFlags f) :
27 QWidget(parent, f), 47 QWidget(parent, f),
28 mDateColIdx(-1) { 48 mDateColIdx(-1) {
29 /* Create models */ 49 /* Create models */
30 mSortModel = new QSortFilterProxyModel; 50 mSortModel = new QSortFilterProxyModel;
31 mCSVModel = new QxtCsvModel; 51 mCSVModel = new numericSortCSVModel;
32 setupGUI(); 52 setupGUI();
33 53
34 connect(mView->selectionModel(), &QItemSelectionModel::selectionChanged, 54 connect(mView->selectionModel(), &QItemSelectionModel::selectionChanged,
35 this, &MetaDataView::viewSelectionChanged); 55 this, &MetaDataView::viewSelectionChanged);
36 connect(mSortModel, &QSortFilterProxyModel::dataChanged, 56 connect(mSortModel, &QSortFilterProxyModel::dataChanged,
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)