diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2013-06-13 19:56:36 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-06-13 19:56:36 +0200 |
commit | e34da61362c0a64b8fd932c3363421c766595d4a (patch) | |
tree | a1e71824e9e94eafd791c0c005b78371fa7dc1e5 /qt-ui | |
parent | 863c48593949e91beb6b7ff02a1385b9977182f5 (diff) | |
parent | 7e9d6e28297432d4a15721a49a9dd0c0d067ce7e (diff) | |
download | subsurface-e34da61362c0a64b8fd932c3363421c766595d4a.tar.gz |
Merge branch 'linusDiveList' of https://github.com/tcanabrava/subsurface
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r-- | qt-ui/divelistview.cpp | 12 | ||||
-rw-r--r-- | qt-ui/divelistview.h | 3 | ||||
-rw-r--r-- | qt-ui/mainwindow.cpp | 52 | ||||
-rw-r--r-- | qt-ui/mainwindow.h | 5 | ||||
-rw-r--r-- | qt-ui/mainwindow.ui | 16 | ||||
-rw-r--r-- | qt-ui/models.cpp | 7 | ||||
-rw-r--r-- | qt-ui/profilegraphics.cpp | 2 |
7 files changed, 60 insertions, 37 deletions
diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp index fd189e926..744f3d911 100644 --- a/qt-ui/divelistview.cpp +++ b/qt-ui/divelistview.cpp @@ -28,6 +28,8 @@ DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelec model->setSortRole(TreeItemDT::SORT_ROLE); model->setFilterKeyColumn(-1); // filter all columns setModel(model); + connect(model, SIGNAL(layoutChanged()), this, SLOT(fixMessyQtModelBehaviour())); + setSortingEnabled(false); setContextMenuPolicy(Qt::DefaultContextMenu); header()->setContextMenuPolicy(Qt::ActionsContextMenu); @@ -42,6 +44,16 @@ DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelec connect(searchBox, SIGNAL(textChanged(QString)), model, SLOT(setFilterFixedString(QString))); } +void DiveListView::fixMessyQtModelBehaviour() +{ + QAbstractItemModel *m = model(); + for(int i = 0; i < model()->rowCount(); i++){ + if (m->rowCount( m->index(i, 0) ) != 0){ + setFirstColumnSpanned(i, QModelIndex(), true); + } + } +} + void DiveListView::unselectDives() { selectionModel()->clearSelection(); diff --git a/qt-ui/divelistview.h b/qt-ui/divelistview.h index c578baa17..36e3e59fc 100644 --- a/qt-ui/divelistview.h +++ b/qt-ui/divelistview.h @@ -38,7 +38,8 @@ public slots: void removeFromTrip(); void deleteDive(); void testSlot(); - + void fixMessyQtModelBehaviour(); + Q_SIGNALS: void currentDiveChanged(int divenr); diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index 339996845..8b216bd8c 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -240,44 +240,54 @@ void MainWindow::on_actionYearlyStatistics_triggered() qDebug("actionYearlyStatistics"); } +/** + * So, here's the deal. + * We have a few QSplitters that takes care of helping us with the + * size of a few widgets, they are ok, and we should continue using them + * to manage the visibility of them too. But the way that we did before was to + * widget->hide(); something, and if you hided something using the splitter, + * by holding it's handle and collapsing the widget, then you used the 'ctrl+number' + * shortcut to show it, it whould only show a gray panel. + * + * This patch makes everything behave using the splitters. + */ + +#define BEHAVIOR QList<int>() void MainWindow::on_actionViewList_triggered() { - ui->InfoWidget->setVisible(false); - ui->ListWidget->setVisible(true); - ui->ProfileWidget->setVisible(false); - ui->globe->setVisible(false); + ui->listGlobeSplitter->setSizes( BEHAVIOR << EXPANDED << COLLAPSED); + ui->mainSplitter->setSizes( BEHAVIOR << COLLAPSED << EXPANDED); } void MainWindow::on_actionViewProfile_triggered() { - ui->InfoWidget->setVisible(false); - ui->ListWidget->setVisible(false); - ui->ProfileWidget->setVisible(true); - ui->globe->setVisible(false); + ui->infoProfileSplitter->setSizes(BEHAVIOR << COLLAPSED << EXPANDED); + ui->mainSplitter->setSizes( BEHAVIOR << EXPANDED << COLLAPSED); } void MainWindow::on_actionViewInfo_triggered() { - ui->InfoWidget->setVisible(true); - ui->ListWidget->setVisible(false); - ui->ProfileWidget->setVisible(false); - ui->globe->setVisible(false); + ui->infoProfileSplitter->setSizes(BEHAVIOR << EXPANDED << COLLAPSED); + ui->mainSplitter->setSizes( BEHAVIOR << EXPANDED << COLLAPSED); } void MainWindow::on_actionViewGlobe_triggered() { - ui->InfoWidget->setVisible(false); - ui->ListWidget->setVisible(false); - ui->ProfileWidget->setVisible(false); - ui->globe->setVisible(true); + ui->infoProfileSplitter->setSizes(BEHAVIOR << COLLAPSED << EXPANDED); + ui->mainSplitter->setSizes( BEHAVIOR << COLLAPSED << EXPANDED); } +#undef BEHAVIOR void MainWindow::on_actionViewAll_triggered() { - ui->InfoWidget->setVisible(true); - ui->ListWidget->setVisible(true); - ui->ProfileWidget->setVisible(true); - ui->globe->setVisible(true); + // big number squash the info profile to it's minimum. + ui->infoProfileSplitter->setSizes(QList<int>() << 1 << 20000); + + // big number squash the globe view. + ui->listGlobeSplitter->setSizes(QList<int>() << 2000 << 1 ); + + // half and half? + ui->mainSplitter->setSizes( QList<int>() << 1 << 1); } void MainWindow::on_actionPreviousDC_triggered() @@ -417,6 +427,7 @@ void MainWindow::initialUiSetup() resize(sz); ui->mainSplitter->restoreState(settings.value("mainSplitter").toByteArray()); ui->infoProfileSplitter->restoreState(settings.value("infoProfileSplitter").toByteArray()); + ui->listGlobeSplitter->restoreState(settings.value("listGlobeSplitter").toByteArray()); settings.endGroup(); settings.beginGroup("ListWidget"); @@ -508,6 +519,7 @@ void MainWindow::writeSettings() settings.setValue("size",size()); settings.setValue("mainSplitter", ui->mainSplitter->saveState()); settings.setValue("infoProfileSplitter", ui->infoProfileSplitter->saveState()); + settings.setValue("listGlobeSplitter", ui->listGlobeSplitter->saveState()); settings.endGroup(); settings.beginGroup("ListWidget"); diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h index 937d6d214..0b3812469 100644 --- a/qt-ui/mainwindow.h +++ b/qt-ui/mainwindow.h @@ -8,13 +8,13 @@ #define MAINWINDOW_H #include <QMainWindow> -#include <QModelIndex> #include <QAction> struct DiveList; class QSortFilterProxyModel; class DiveTripModel; + namespace Ui { class MainWindow; @@ -35,6 +35,8 @@ class MainWindow : public QMainWindow { Q_OBJECT public: + enum {COLLAPSED, EXPANDED}; + MainWindow(); ProfileGraphicsView *graphics(); MainTab *information(); @@ -103,6 +105,7 @@ private: void redrawProfile(); void file_save(); void file_save_as(); + void setupSplitters(); }; MainWindow *mainWindow(); diff --git a/qt-ui/mainwindow.ui b/qt-ui/mainwindow.ui index a91b96133..1a985f812 100644 --- a/qt-ui/mainwindow.ui +++ b/qt-ui/mainwindow.ui @@ -14,8 +14,8 @@ <string>MainWindow</string> </property> <widget class="QWidget" name="centralwidget"> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> <widget class="QSplitter" name="mainSplitter"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -92,7 +92,7 @@ </widget> </widget> </item> - <item> + <item row="1" column="0"> <widget class="KMessageWidget" name="mainErrorMessage" native="true"/> </item> </layout> @@ -147,8 +147,9 @@ <addaction name="actionViewList"/> <addaction name="actionViewProfile"/> <addaction name="actionViewInfo"/> - <addaction name="actionViewAll"/> <addaction name="actionViewGlobe"/> + <addaction name="actionViewAll"/> + <addaction name="separator"/> <addaction name="actionPreviousDC"/> <addaction name="actionNextDC"/> </widget> @@ -317,7 +318,7 @@ <string>View All</string> </property> <property name="shortcut"> - <string>Ctrl+4</string> + <string>Ctrl+5</string> </property> </action> <action name="actionPreviousDC"> @@ -363,11 +364,8 @@ <property name="text"> <string>View Globe</string> </property> - <property name="toolTip"> - <string>View Globe</string> - </property> <property name="shortcut"> - <string>Ctrl+5</string> + <string>Ctrl+4</string> </property> </action> </widget> diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp index 23f0758ce..1cc9ab869 100644 --- a/qt-ui/models.cpp +++ b/qt-ui/models.cpp @@ -785,11 +785,8 @@ QVariant TripItem::data(int column, int role) const if (role == Qt::DisplayRole) { switch (column) { - case LOCATION: - ret = QString(trip->location); - break; - case DATE: - ret = QString(get_trip_date_string(trip->when, trip->nrdives)); + case NR: + ret = QString(trip->location) + QString(get_trip_date_string(trip->when, trip->nrdives)); break; } } diff --git a/qt-ui/profilegraphics.cpp b/qt-ui/profilegraphics.cpp index 11249d831..39edd690a 100644 --- a/qt-ui/profilegraphics.cpp +++ b/qt-ui/profilegraphics.cpp @@ -217,7 +217,7 @@ void ProfileGraphicsView::showEvent(QShowEvent* event) // but the dive was not ploted. // force a replot by modifying the dive // hold by the view, and issuing a plot. - if (dive) { + if (dive && !scene()->items().count()) { dive = 0; plot(get_dive(selected_dive)); } |