summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2013-06-27 15:33:43 +0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-06-27 20:57:10 +0800
commit8678e2d57c6e456952dc2d75857f60b0129ed0ff (patch)
tree09908a1f39c3e380932751fd12da3b370de1026f /qt-ui
parent937fef819a8d1a4b9a7f643f19317fe460457a14 (diff)
downloadsubsurface-8678e2d57c6e456952dc2d75857f60b0129ed0ff.tar.gz
Better positioning of the plus sign icons in the Equip. tab
There are a couple of problems with said icons: - When the Equip. tab is first seen, no relative event is monitored so that the correct position is updated and the icons are positioned. To solve that we connect the signal MainTab::currentChanged(int) and call MainTab::equipmentPlusUpdate(). - When the info-profile QSplitter resizes with a snap towards/from the edges of the main window, no resize handler is called such as MainTab::resizeEvent(). A solution is to monitor the resize of the info-profile splitter with MainWindow::on_infoProfileSplitter_splitterMoved() and again call MainTab::equipmentPlusUpdate() Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/maintab.cpp27
-rw-r--r--qt-ui/maintab.h2
-rw-r--r--qt-ui/mainwindow.cpp6
-rw-r--r--qt-ui/mainwindow.h3
4 files changed, 30 insertions, 8 deletions
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index c6b49da39..843724374 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -90,28 +90,39 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
ui->weights->horizontalHeader()->setResizeMode (WeightModel::REMOVE , QHeaderView::Fixed);
ui->weights->verticalHeader()->setDefaultSectionSize( metrics.height() +8 );
ui->weights->setItemDelegateForColumn(WeightModel::TYPE, new WSInfoDelegate());
+
+ connect(this, SIGNAL(currentChanged(int)), this, SLOT(tabChanged(int)));
initialUiSetup();
}
// We need to manually position the 'plus' on cylinder and weight.
void MainTab::resizeEvent(QResizeEvent* event)
{
- if (ui->cylindersGroup->isVisible())
- addCylinder->setGeometry(ui->cylindersGroup->contentsRect().width() - 30, 2, 24,24);
-
- if (ui->weightGroup->isVisible())
- addWeight->setGeometry(ui->weightGroup->contentsRect().width() - 30, 2, 24,24);
-
+ equipmentPlusUpdate();
QTabWidget::resizeEvent(event);
}
void MainTab::showEvent(QShowEvent* event)
{
QTabWidget::showEvent(event);
- addCylinder->setGeometry(ui->cylindersGroup->contentsRect().width() - 30, 2, 24,24);
- addWeight->setGeometry(ui->weightGroup->contentsRect().width() - 30, 2, 24,24);
+ equipmentPlusUpdate();
+}
+
+void MainTab::tabChanged(int idx)
+{
+ /* if the current tab has become of index 1 (i.e. the equipment tab) call update
+ * for the plus signs */
+ if (idx == 1)
+ equipmentPlusUpdate();
}
+void MainTab::equipmentPlusUpdate()
+{
+ if (ui->cylindersGroup->isVisible())
+ addCylinder->setGeometry(ui->cylindersGroup->contentsRect().width() - 30, 2, 24,24);
+ if (ui->weightGroup->isVisible())
+ addWeight->setGeometry(ui->weightGroup->contentsRect().width() - 30, 2, 24,24);
+}
bool MainTab::eventFilter(QObject* object, QEvent* event)
{
diff --git a/qt-ui/maintab.h b/qt-ui/maintab.h
index 739c089ec..764ed2306 100644
--- a/qt-ui/maintab.h
+++ b/qt-ui/maintab.h
@@ -43,6 +43,7 @@ public:
virtual void hideEvent(QHideEvent* );
void initialUiSetup();
+ void equipmentPlusUpdate();
public slots:
@@ -58,6 +59,7 @@ public slots:
void on_notes_textChanged();
void on_rating_valueChanged(int value);
void on_visibility_valueChanged(int value);
+ void tabChanged(int idx);
private:
Ui::MainTab *ui;
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index 0655e7a40..43376f9ac 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -299,6 +299,12 @@ void MainWindow::on_actionYearlyStatistics_triggered()
view->show();
}
+void MainWindow::on_infoProfileSplitter_splitterMoved(int pos, int idx)
+{
+ /* always update the floating plus sign icons in the equipment tab */
+ ui->InfoWidget->equipmentPlusUpdate();
+}
+
/**
* So, here's the deal.
* We have a few QSplitters that takes care of helping us with the
diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h
index bac74689d..4890cb2ef 100644
--- a/qt-ui/mainwindow.h
+++ b/qt-ui/mainwindow.h
@@ -88,6 +88,9 @@ private slots:
void on_actionUserManual_triggered();
void on_actionDivePlanner_triggered();
+ /* monitor resize of the info-profile splitter */
+ void on_infoProfileSplitter_splitterMoved(int pos, int idx);
+
void current_dive_changed(int divenr);
void initialUiSetup();