Set better column widths in the dive list

This code seems rather crude to me. I'm sure this could be done better.

This also makes the column alignment work again.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2013-05-02 14:05:53 -07:00
parent f9c97ff97d
commit c4e2c322a3
2 changed files with 39 additions and 6 deletions

View file

@ -14,6 +14,8 @@
#include <QSortFilterProxyModel>
#include <QSettings>
#include <QCloseEvent>
#include <QApplication>
#include <QFontMetrics>
#include "divelistview.h"
#include "starwidget.h"
@ -32,6 +34,38 @@ MainWindow::MainWindow() : ui(new Ui::MainWindow()),
sortModel->setSourceModel(model);
ui->ListWidget->setModel(sortModel);
/* 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();
}

View file

@ -434,7 +434,8 @@ QVariant DiveItem::data(int column, int role) const
{
QVariant retVal;
if (role == Qt::TextAlignmentRole) {
switch (role) {
case Qt::TextAlignmentRole:
switch (column) {
case DATE: /* fall through */
case SUIT: /* fall through */
@ -445,9 +446,8 @@ QVariant DiveItem::data(int column, int role) const
retVal = Qt::AlignRight;
break;
}
}
if (role == Qt::DisplayRole) {
break;
case Qt::DisplayRole:
switch (column) {
case NR:
retVal = dive->number;
@ -492,6 +492,7 @@ QVariant DiveItem::data(int column, int role) const
retVal = dive->rating;
break;
}
break;
}
return retVal;
}
@ -598,8 +599,6 @@ QVariant DiveTripModel::data(const QModelIndex& index, int role) const
if (!index.isValid())
return QVariant();
if (role != Qt::DisplayRole)
return QVariant();
TreeItemDT* item = static_cast<TreeItemDT*>(index.internalPointer());