diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2018-07-26 18:03:07 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2018-07-27 09:08:42 -0700 |
commit | 67a875ef81290fe49a0b25e174615942d8404bea (patch) | |
tree | 455d985065a290cca1b6e2c1f16d66b2a57bd1ed | |
parent | 079b99135a2340d9ffc97ceec2b2b5e288f597de (diff) | |
download | subsurface-67a875ef81290fe49a0b25e174615942d8404bea.tar.gz |
Dive list view: setup columns in constructor
The column-widths must only be set once the source-model is that.
The old code realized this with a rather complicated logic.
Instead, simply set the source-model in the constructor and
set the column widths after that. Rename the corresponding
function from "setupUi" to "setColumnWidths".
Moreover, the setupUi function had different code-paths for
the first and other calls. Since it is only called once,
remove the other code paths.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r-- | desktop-widgets/divelistview.cpp | 25 | ||||
-rw-r--r-- | desktop-widgets/divelistview.h | 2 |
2 files changed, 7 insertions, 20 deletions
diff --git a/desktop-widgets/divelistview.cpp b/desktop-widgets/divelistview.cpp index a4be59058..a6a570127 100644 --- a/desktop-widgets/divelistview.cpp +++ b/desktop-widgets/divelistview.cpp @@ -36,6 +36,8 @@ DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelec model->setSortRole(DiveTripModel::SORT_ROLE); model->setFilterKeyColumn(-1); // filter all columns model->setFilterCaseSensitivity(Qt::CaseInsensitive); + DiveTripModel *tripModel = new DiveTripModel(this); + model->setSourceModel(tripModel); setModel(model); connect(model, SIGNAL(layoutChanged()), this, SLOT(fixMessyQtModelBehaviour())); @@ -48,11 +50,9 @@ DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelec installEventFilter(this); - // TODO: We use a dummy DiveTripModel to calculated column widths. - // Change this to a global object. - DiveTripModel tripModel; for (int i = DiveTripModel::NR; i < DiveTripModel::COLUMNS; i++) calculateInitialColumnWidth(tripModel, i); + setColumnWidths(); } DiveListView::~DiveListView() @@ -112,12 +112,10 @@ void DiveListView::calculateInitialColumnWidth(const DiveTripModel &tripModel, i initialColumnWidths[col] = std::max(initialColumnWidths[col], width); } -void DiveListView::setupUi() +void DiveListView::setColumnWidths() { QSettings settings; - static bool firstRun = true; - if (firstRun) - backupExpandedRows(); + backupExpandedRows(); settings.beginGroup("ListWidget"); /* if no width are set, use the calculated width for each column; * for that to work we need to temporarily expand all rows */ @@ -132,11 +130,7 @@ void DiveListView::setupUi() setColumnWidth(i, initialColumnWidths[i]); } settings.endGroup(); - if (firstRun) - restoreExpandedRows(); - else - collapseAll(); - firstRun = false; + restoreExpandedRows(); setColumnWidth(lastVisibleColumn(), 10); } @@ -399,13 +393,6 @@ void DiveListView::headerClicked(int i) void DiveListView::reload(DiveTripModel::Layout layout, bool forceSort) { - // we want to run setupUi() once we actually are displaying something - // in the widget - static bool first = true; - if (first && dive_table.nr > 0) { - setupUi(); - first = false; - } if (layout == DiveTripModel::CURRENT) layout = currentLayout; else diff --git a/desktop-widgets/divelistview.h b/desktop-widgets/divelistview.h index e6ae8395d..eaabe5c8d 100644 --- a/desktop-widgets/divelistview.h +++ b/desktop-widgets/divelistview.h @@ -77,7 +77,7 @@ private: /* if dive_trip_t is null, there's no problem. */ QMultiHash<dive_trip_t *, int> selectedDives; void merge_trip(const QModelIndex &a, const int offset); - void setupUi(); + void setColumnWidths(); void calculateInitialColumnWidth(const DiveTripModel &tripModel, int col); void backupExpandedRows(); void restoreExpandedRows(); |