summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2013-06-13 19:56:36 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-06-13 19:56:36 +0200
commite34da61362c0a64b8fd932c3363421c766595d4a (patch)
treea1e71824e9e94eafd791c0c005b78371fa7dc1e5 /qt-ui
parent863c48593949e91beb6b7ff02a1385b9977182f5 (diff)
parent7e9d6e28297432d4a15721a49a9dd0c0d067ce7e (diff)
downloadsubsurface-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.cpp12
-rw-r--r--qt-ui/divelistview.h3
-rw-r--r--qt-ui/mainwindow.cpp52
-rw-r--r--qt-ui/mainwindow.h5
-rw-r--r--qt-ui/mainwindow.ui16
-rw-r--r--qt-ui/models.cpp7
-rw-r--r--qt-ui/profilegraphics.cpp2
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));
}