From b0374047dd6a31d8b16c6991ee0ffc51c198569e Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Tue, 14 May 2013 08:18:26 -0300 Subject: [PATCH] code to show profile again Signed-off-by: Tomaz Canabrava --- divelist.c | 10 ++++++---- qt-ui/divelistview.cpp | 18 ++++++++++++++++++ qt-ui/divelistview.h | 8 ++++---- qt-ui/mainwindow.cpp | 9 +++++++++ qt-ui/mainwindow.h | 2 ++ 5 files changed, 39 insertions(+), 8 deletions(-) diff --git a/divelist.c b/divelist.c index deab1b05c..1398c78e8 100644 --- a/divelist.c +++ b/divelist.c @@ -144,7 +144,7 @@ int trip_has_selected_dives(dive_trip_t *trip) return 0; } -/* Get the values as we want to show them. Whole feet. But meters with one decimal for +/* Get the values as we want to show them. Whole feet. But meters with one decimal for * values less than 20m, without decimals for larger values */ void get_depth_values(int depth, int *depth_int, int *depth_decimal, int *show_decimal) { @@ -924,9 +924,11 @@ void merge_dive_index(int i, struct dive *a) void select_dive(int idx) { struct dive *dive = get_dive(idx); - if (dive && !dive->selected) { - dive->selected = 1; - amount_selected++; + if (dive) { + if (!dive->selected){ + dive->selected = 1; + amount_selected++; + } selected_dive = idx; } } diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp index d192d84aa..d2354d910 100644 --- a/qt-ui/divelistview.cpp +++ b/qt-ui/divelistview.cpp @@ -55,6 +55,24 @@ void DiveListView::keyReleaseEvent(QKeyEvent* event) QWidget::keyReleaseEvent(event); } +void DiveListView::currentChanged(const QModelIndex& current, const QModelIndex& previous) +{ + if (!current.isValid()) + return; + const QAbstractItemModel *model = current.model(); + int selectedDive = 0; + struct dive *dive = (struct dive*) model->data(current, TreeItemDT::DIVE_ROLE).value(); + if (!dive) { // it's a trip! select first child. + dive = (struct dive*) model->data(current.child(0,0), TreeItemDT::DIVE_ROLE).value(); + selectedDive = get_divenr(dive); + }else{ + selectedDive = get_divenr(dive); + } + if (selectedDive == selected_dive) + return; + Q_EMIT currentDiveChanged(selectedDive); +} + void DiveListView::selectionChanged(const QItemSelection& selected, const QItemSelection& deselected) { QList parents; diff --git a/qt-ui/divelistview.h b/qt-ui/divelistview.h index 9df8b5fa1..ce6238d25 100644 --- a/qt-ui/divelistview.h +++ b/qt-ui/divelistview.h @@ -18,19 +18,19 @@ class DiveListView : public QTreeView { + Q_OBJECT public: DiveListView(QWidget *parent = 0); - void selectionChanged(const QItemSelection& selected, const QItemSelection& deselected); + void currentChanged(const QModelIndex& current, const QModelIndex& previous); void setModel(QAbstractItemModel* model); - void mousePressEvent(QMouseEvent* event); void mouseReleaseEvent(QMouseEvent* event); void keyPressEvent(QKeyEvent* event); void keyReleaseEvent(QKeyEvent*); - void setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command); - +Q_SIGNALS: + void currentDiveChanged(int divenr); private: bool mouseClickSelection; }; diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index 58cb86286..60a4623c7 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -42,6 +42,15 @@ MainWindow::MainWindow() : ui(new Ui::MainWindow()), ui->ListWidget->setCurrentIndex(sortModel->index(0,0, firstDiveOrTrip)); else ui->ListWidget->setCurrentIndex(firstDiveOrTrip); + + connect(ui->ListWidget, SIGNAL(currentDiveChanged(int)), this, SLOT(current_dive_changed(int))); +} + +void MainWindow::current_dive_changed(int divenr) +{ + select_dive(divenr); + redrawProfile(); + ui->InfoWidget->updateDiveInfo(divenr); } void MainWindow::redrawProfile() diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h index 084818319..04392ada9 100644 --- a/qt-ui/mainwindow.h +++ b/qt-ui/mainwindow.h @@ -69,6 +69,8 @@ private Q_SLOTS: void on_actionAboutSubsurface_triggered(); void on_actionUserManual_triggered(); + void current_dive_changed(int divenr); + protected: void closeEvent(QCloseEvent *);