summaryrefslogtreecommitdiffstats
path: root/qt-ui/divelistview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui/divelistview.cpp')
-rw-r--r--qt-ui/divelistview.cpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp
index 92a10ca38..b2f33ffa1 100644
--- a/qt-ui/divelistview.cpp
+++ b/qt-ui/divelistview.cpp
@@ -47,8 +47,62 @@ DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelec
connect(showSearchBox, SIGNAL(triggered(bool)), this, SLOT(showSearchEdit()));
connect(searchBox, SIGNAL(textChanged(QString)), model, SLOT(setFilterFixedString(QString)));
selectedTrips.clear();
+
+ setupUi();
}
+DiveListView::~DiveListView()
+{
+ QSettings settings;
+ settings.beginGroup("ListWidget");
+ for (int i = DiveTripModel::NR; i < DiveTripModel::COLUMNS; i++){
+ if (isColumnHidden(i))
+ continue;
+ settings.setValue(QString("colwidth%1").arg(i), columnWidth(i));
+ }
+ settings.endGroup();
+}
+
+void DiveListView::setupUi(){
+ QSettings settings;
+ static bool firstRun = true;
+ if(firstRun)
+ 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 */
+ expandAll();
+ for (int i = DiveTripModel::NR; i < DiveTripModel::COLUMNS; i++) {
+ if(isColumnHidden(i))
+ continue;
+ QVariant width = settings.value(QString("colwidth%1").arg(i));
+ if (width.isValid())
+ setColumnWidth(i, width.toInt());
+ else
+ setColumnWidth(i, 100);
+ }
+ settings.endGroup();
+ if(firstRun)
+ restoreExpandedRows();
+ else
+ collapseAll();
+ firstRun = false;
+}
+
+void DiveListView::backupExpandedRows(){
+ expandedRows.clear();
+ for(int i = 0; i < model()->rowCount(); i++){
+ if(isExpanded( model()->index(i, 0) )){
+ expandedRows.push_back(i);
+ }
+ }
+}
+
+void DiveListView::restoreExpandedRows(){
+ Q_FOREACH(const int &i, expandedRows){
+ setExpanded( model()->index(i, 0), true );
+ }
+}
void DiveListView::fixMessyQtModelBehaviour()
{
QAbstractItemModel *m = model();
@@ -132,9 +186,15 @@ void DiveListView::headerClicked(int i)
sortByColumn(i, currentOrder);
} else {
// clear the model, repopulate with new indexes.
+ if(currentLayout == DiveTripModel::TREE){
+ backupExpandedRows();
+ }
reload(newLayout, false);
currentOrder = Qt::DescendingOrder;
sortByColumn(i, currentOrder);
+ if (newLayout == DiveTripModel::TREE){
+ restoreExpandedRows();
+ }
}
// repopulate the selections.
@@ -178,6 +238,7 @@ void DiveListView::reload(DiveTripModel::Layout layout, bool forceSort)
setCurrentIndex(firstDiveOrTrip);
}
}
+ setupUi();
}
void DiveListView::reloadHeaderActions()