summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2013-05-02 22:06:01 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-05-02 22:06:01 -0700
commita6b89b3254adf7c559fe6fb89367cc50c9f41900 (patch)
tree8ac36a91971f18fb38002f14ed5408b024395701
parentff2ce399702d3a487316bfcc4b1fff01dbb8d309 (diff)
downloadsubsurface-a6b89b3254adf7c559fe6fb89367cc50c9f41900.tar.gz
Don't hard-code column width.
Auto-detect on first start and keep in settings afterwards. So if the user resizes them, Subsurface remembers the correct sizes. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--qt-ui/mainwindow.cpp53
1 files changed, 20 insertions, 33 deletions
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index cdd33ff45..3193eb2a8 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -35,39 +35,6 @@ MainWindow::MainWindow() : ui(new Ui::MainWindow()),
sortModel->setSourceModel(model);
ui->ListWidget->setModel(sortModel);
connect(ui->ListWidget, SIGNAL(activated(QModelIndex)), this, SLOT(diveSelected(QModelIndex)));
-
- /* figure out appropriate widths for the columns. The strings chosen
- * are somewhat random (but at least we're trying to allow them to be
- * localized so they are somewhat universal) */
- QFontMetrics fm(QApplication::font());
- int pixelsWide = fm.width(tr("Trip Wed, Mar 29, 2000 (100 dives)"));
- ui->ListWidget->setColumnWidth(TreeItemDT::DATE, pixelsWide);
-
- /* all the columns that have usually up to four numbers plus maybe
- * a decimal separator */
- pixelsWide = fm.width("000.0");
- ui->ListWidget->setColumnWidth(TreeItemDT::DEPTH, pixelsWide);
- ui->ListWidget->setColumnWidth(TreeItemDT::TEMPERATURE, pixelsWide);
- ui->ListWidget->setColumnWidth(TreeItemDT::TOTALWEIGHT, pixelsWide);
- ui->ListWidget->setColumnWidth(TreeItemDT::SAC, pixelsWide);
- ui->ListWidget->setColumnWidth(TreeItemDT::OTU, pixelsWide);
-
- /* this one is likely dominated by the header (need extra pixels) */
- pixelsWide = fm.width(tr("maxCNS")) + 10;
- ui->ListWidget->setColumnWidth(TreeItemDT::MAXCNS, pixelsWide);
-
- /* the rest we try to cover with reasonable sample text again */
- pixelsWide = fm.width(" 123456");
- ui->ListWidget->setColumnWidth(TreeItemDT::NR, pixelsWide);
- pixelsWide = fm.width("00:00:00");
- ui->ListWidget->setColumnWidth(TreeItemDT::DURATION, pixelsWide);
- pixelsWide = fm.width(tr("twin HP119"));
- ui->ListWidget->setColumnWidth(TreeItemDT::CYLINDER, pixelsWide);
- pixelsWide = fm.width("888888");
- ui->ListWidget->setColumnWidth(TreeItemDT::NITROX, pixelsWide);
- pixelsWide = fm.width(tr("7mm wet, farmer johns and jacket"));
- ui->ListWidget->setColumnWidth(TreeItemDT::SUIT, pixelsWide);
-
setWindowIcon(QIcon(":subsurface-icon"));
readSettings();
}
@@ -333,6 +300,8 @@ bool MainWindow::askSaveChanges()
void MainWindow::readSettings()
{
+ int i;
+
QSettings settings("hohndel.org","subsurface");
settings.beginGroup("MainWindow");
@@ -341,16 +310,34 @@ void MainWindow::readSettings()
ui->mainSplitter->restoreState(settings.value("mainSplitter").toByteArray());
ui->infoProfileSplitter->restoreState(settings.value("infoProfileSplitter").toByteArray());
settings.endGroup();
+
+ settings.beginGroup("ListWidget");
+ for (i = TreeItemDT::NR; i < TreeItemDT::COLUMNS; i++) {
+ QVariant width = settings.value(QString("colwidth%1").arg(i));
+ if (width.isValid())
+ ui->ListWidget->setColumnWidth(i, width.toInt());
+ else
+ ui->ListWidget->resizeColumnToContents(i);
+ }
+ settings.endGroup();
}
void MainWindow::writeSettings()
{
+ int i;
QSettings settings("hohndel.org","subsurface");
+
settings.beginGroup("MainWindow");
settings.setValue("size",size());
settings.setValue("mainSplitter", ui->mainSplitter->saveState());
settings.setValue("infoProfileSplitter", ui->infoProfileSplitter->saveState());
settings.endGroup();
+
+ settings.beginGroup("ListWidget");
+ for (i = TreeItemDT::NR; i < TreeItemDT::COLUMNS; i++)
+ settings.setValue(QString("colwidth%1").arg(i), ui->ListWidget->columnWidth(i));
+ settings.endGroup();
+
/* other groups here; avoid '/' and '\' in keys with setValue(...) please */
}