diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2013-05-26 10:12:45 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-05-26 10:16:01 -0700 |
commit | 43892e36fd58e23c5bd2b1dc400d34afc7d8c9ae (patch) | |
tree | 26b1d6c2ec89e3441bf4a645b6f2661ed9e9af88 /qt-ui | |
parent | 2896dbdaf1a7e430a3614d451cbaf8e7d9a1c101 (diff) | |
download | subsurface-43892e36fd58e23c5bd2b1dc400d34afc7d8c9ae.tar.gz |
Fix colum visibility selection in the divelist
Several changes:
- split the reload of the DiveListView from the reload of the header
- don't include the column title in the name of the setting; the title
will change depending on the units and localization chosen by the user
- rename the slot that toggles visibility to make the code more readable
- use setCollumHidden() method to simplify the code
- don't save the width of hidden columns (as they would be saved as zero
width and can then no longer be enabled)
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r-- | qt-ui/divelistview.cpp | 29 | ||||
-rw-r--r-- | qt-ui/divelistview.h | 3 | ||||
-rw-r--r-- | qt-ui/mainwindow.cpp | 4 |
3 files changed, 19 insertions, 17 deletions
diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp index abd9d4ede..4957e3374 100644 --- a/qt-ui/divelistview.cpp +++ b/qt-ui/divelistview.cpp @@ -40,6 +40,10 @@ void DiveListView::reload() else setCurrentIndex(firstDiveOrTrip); } +} + +void DiveListView::reloadHeaderActions() +{ // Populate the context menu of the headers that will show // the menu to show / hide columns. if (!header()->actions().size()) { @@ -48,24 +52,23 @@ void DiveListView::reload() QSettings s; s.beginGroup("DiveListColumnState"); for(int i = 0; i < model()->columnCount(); i++) { - QString title = QString("show %1").arg(model()->headerData( i, Qt::Horizontal).toString()); + QString title = QString("show %1").arg(model()->headerData(i, Qt::Horizontal).toString()); + QString settingName = QString("showColumn%1").arg(i); QAction *a = new QAction(title, header()); + bool shown = s.value(settingName, true).toBool(); a->setCheckable(true); - a->setChecked( s.value(title, true).toBool()); + a->setChecked(shown); a->setProperty("index", i); - connect(a, SIGNAL(triggered(bool)), this, SLOT(hideColumnByIndex())); + a->setProperty("settingName", settingName); + connect(a, SIGNAL(triggered(bool)), this, SLOT(toggleColumnVisibilityByIndex())); header()->addAction(a); - if (a->isChecked()) - showColumn(true); - else - hideColumn(false); + setColumnHidden(i, !shown); } s.endGroup(); - s.sync(); } } -void DiveListView::hideColumnByIndex() +void DiveListView::toggleColumnVisibilityByIndex() { QAction *action = qobject_cast<QAction*>(sender()); if (!action) @@ -73,14 +76,10 @@ void DiveListView::hideColumnByIndex() QSettings s; s.beginGroup("DiveListColumnState"); - s.setValue(action->text(), action->isChecked()); + s.setValue(action->property("settingName").toString(), action->isChecked()); s.endGroup(); s.sync(); - - if (action->isChecked()) - showColumn(action->property("index").toInt()); - else - hideColumn(action->property("index").toInt()); + setColumnHidden(action->property("index").toInt(), !action->isChecked()); } void DiveListView::setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command) diff --git a/qt-ui/divelistview.h b/qt-ui/divelistview.h index 6cbcd8319..c1a33db51 100644 --- a/qt-ui/divelistview.h +++ b/qt-ui/divelistview.h @@ -31,7 +31,8 @@ public: void reload(); public slots: - void hideColumnByIndex(); + void toggleColumnVisibilityByIndex(); + void reloadHeaderActions(); Q_SIGNALS: void currentDiveChanged(int divenr); diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index 8e0e54eaa..4d0299d7e 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -44,6 +44,7 @@ MainWindow::MainWindow() : ui(new Ui::MainWindow()) ui->ProfileWidget->setFocusProxy(ui->ListWidget); ui->ListWidget->reload(); readSettings(); + ui->ListWidget->reloadHeaderActions(); ui->ListWidget->setFocus(); ui->globe->reload(); instance = this; @@ -432,7 +433,8 @@ void MainWindow::writeSettings() settings.beginGroup("ListWidget"); for (i = TreeItemDT::NR; i < TreeItemDT::COLUMNS; i++) - settings.setValue(QString("colwidth%1").arg(i), ui->ListWidget->columnWidth(i)); + if (!ui->ListWidget->isColumnHidden(i)) + settings.setValue(QString("colwidth%1").arg(i), ui->ListWidget->columnWidth(i)); settings.endGroup(); settings.beginGroup("Units"); SAVE_VALUE("feet", units.length); |