diff options
Diffstat (limited to 'qt-ui')
-rw-r--r-- | qt-ui/divelistview.cpp | 13 | ||||
-rw-r--r-- | qt-ui/divelistview.h | 2 | ||||
-rw-r--r-- | qt-ui/globe.cpp | 7 | ||||
-rw-r--r-- | qt-ui/maintab.cpp | 6 | ||||
-rw-r--r-- | qt-ui/maintab.ui | 3 | ||||
-rw-r--r-- | qt-ui/mainwindow.cpp | 1 | ||||
-rw-r--r-- | qt-ui/models.cpp | 2 | ||||
-rw-r--r-- | qt-ui/profilegraphics.cpp | 17 | ||||
-rw-r--r-- | qt-ui/profilegraphics.h | 2 | ||||
-rw-r--r-- | qt-ui/subsurfacewebservices.cpp | 8 |
10 files changed, 48 insertions, 13 deletions
diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp index cbd62408b..fd189e926 100644 --- a/qt-ui/divelistview.cpp +++ b/qt-ui/divelistview.cpp @@ -47,16 +47,19 @@ void DiveListView::unselectDives() selectionModel()->clearSelection(); } -void DiveListView::selectDive(struct dive *dive, bool scrollto) +void DiveListView::selectDive(struct dive *dive, bool scrollto, bool toggle) { QSortFilterProxyModel *m = qobject_cast<QSortFilterProxyModel*>(model()); QModelIndexList match = m->match(m->index(0,0), TreeItemDT::NR, dive->number, 1, Qt::MatchRecursive); + QItemSelectionModel::SelectionFlags flags; QModelIndex idx = match.first(); QModelIndex parent = idx.parent(); if (parent.isValid()) expand(parent); - selectionModel()->select( idx, QItemSelectionModel::Select | QItemSelectionModel::Rows); + flags = toggle ? QItemSelectionModel::Toggle : QItemSelectionModel::Select; + flags |= QItemSelectionModel::Rows; + selectionModel()->select( idx, flags); if (scrollto) scrollTo(idx, PositionAtCenter); } @@ -183,6 +186,12 @@ void DiveListView::reloadHeaderActions() setColumnHidden(i, !shown); } s.endGroup(); + } else { + // Skip first QAction item ( static text Visible ) + for(int i = 0; i < model()->columnCount(); i++) { + QString title = QString("%1").arg(model()->headerData(i, Qt::Horizontal).toString()); + header()->actions()[i+1]->setText( title ); + } } } diff --git a/qt-ui/divelistview.h b/qt-ui/divelistview.h index a9b986f97..c578baa17 100644 --- a/qt-ui/divelistview.h +++ b/qt-ui/divelistview.h @@ -27,7 +27,7 @@ public: void reload(DiveTripModel::Layout layout, bool forceSort = true); bool eventFilter(QObject* , QEvent* ); void unselectDives(); - void selectDive(struct dive *, bool scrollto = false); + void selectDive(struct dive *, bool scrollto = false, bool toggle = false); void contextMenuEvent(QContextMenuEvent *event); public slots: diff --git a/qt-ui/globe.cpp b/qt-ui/globe.cpp index 78283e49e..24806d520 100644 --- a/qt-ui/globe.cpp +++ b/qt-ui/globe.cpp @@ -82,6 +82,7 @@ void GlobeGPS::mouseClicked(qreal lon, qreal lat, GeoDataCoordinates::Unit unit) int idx; struct dive *dive; bool clear = !(QApplication::keyboardModifiers() && Qt::ControlModifier); + bool toggle = !clear; bool first = true; for_each_dive(idx, dive) { long lat_diff, lon_diff; @@ -100,7 +101,7 @@ void GlobeGPS::mouseClicked(qreal lon, qreal lat, GeoDataCoordinates::Unit unit) mainWindow()->dive_list()->unselectDives(); clear = false; } - mainWindow()->dive_list()->selectDive(dive, first); + mainWindow()->dive_list()->selectDive(dive, first, toggle); first = false; } } @@ -129,10 +130,10 @@ void GlobeGPS::reload() place->setCoordinate(dive->longitude.udeg / 1000000.0,dive->latitude.udeg / 1000000.0 , 0, GeoDataCoordinates::Degree); // don't add dive locations twice, unless they are at least 50m apart if (locationMap[QString(dive->location)]) { - GeoDataPoint existingLocation = locationMap[QString(dive->location)]->coordinate(); + GeoDataCoordinates existingLocation = locationMap[QString(dive->location)]->coordinate(); GeoDataLineString segment = GeoDataLineString(); segment.append(existingLocation); - GeoDataPoint newLocation = place->coordinate(); + GeoDataCoordinates newLocation = place->coordinate(); segment.append(newLocation); double dist = segment.length(6371); // the dist is scaled to the radius given - so with 6371km as radius diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp index b9b5d0ab7..080ebdf44 100644 --- a/qt-ui/maintab.cpp +++ b/qt-ui/maintab.cpp @@ -27,7 +27,11 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent), ui->weights->setModel(weightModel); ui->diveNotesMessage->hide(); ui->diveNotesMessage->setCloseButtonVisible(false); - +#ifdef __APPLE__ + setDocumentMode(false); +#else + setDocumentMode(true); +#endif // we start out with the fields read-only; once things are // filled from a dive, they are made writeable ui->location->setReadOnly(true); diff --git a/qt-ui/maintab.ui b/qt-ui/maintab.ui index 55d4f3a54..c05589d20 100644 --- a/qt-ui/maintab.ui +++ b/qt-ui/maintab.ui @@ -16,9 +16,6 @@ <property name="currentIndex"> <number>3</number> </property> - <property name="documentMode"> - <bool>true</bool> - </property> <widget class="QWidget" name="notesTab"> <attribute name="title"> <string>Dive Notes</string> diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index b2baa8c26..ce9aadc62 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -44,6 +44,7 @@ MainWindow::MainWindow() : ui(new Ui::MainWindow()), helpView(0) connect(ui->ListWidget, SIGNAL(currentDiveChanged(int)), this, SLOT(current_dive_changed(int))); connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), this, SLOT(readSettings())); connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), ui->ListWidget, SLOT(update())); + connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), ui->ListWidget, SLOT(reloadHeaderActions())); connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), ui->ProfileWidget, SLOT(refresh())); ui->mainErrorMessage->hide(); ui->ProfileWidget->setFocusProxy(ui->ListWidget); diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp index 045592deb..86773fd52 100644 --- a/qt-ui/models.cpp +++ b/qt-ui/models.cpp @@ -835,7 +835,7 @@ QVariant DiveItem::data(int column, int role) const break; case SORT_ROLE: switch (column) { - case NR: retVal = dive->number; break; + case NR: retVal = (qulonglong) dive->when; break; case DATE: retVal = (qulonglong) dive->when; break; case RATING: retVal = dive->rating; break; case DEPTH: retVal = dive->maxdepth.mm; break; diff --git a/qt-ui/profilegraphics.cpp b/qt-ui/profilegraphics.cpp index cfd155132..164de13ff 100644 --- a/qt-ui/profilegraphics.cpp +++ b/qt-ui/profilegraphics.cpp @@ -179,6 +179,12 @@ void ProfileGraphicsView::mouseMoveEvent(QMouseEvent* event) bool ProfileGraphicsView::eventFilter(QObject* obj, QEvent* event) { + if (event->type() == QEvent::Leave) { + if (toolTip && toolTip->isExpanded()) + toolTip->collapse(); + return true; + } + // This will "Eat" the default tooltip behavior. if (event->type() == QEvent::GraphicsSceneHelp) { event->ignore(); @@ -1324,6 +1330,9 @@ void ToolTipItem::collapse() animation->setStartValue(boundingRect()); animation->setEndValue(QRect(0, 0, ICON_SMALL, ICON_SMALL)); animation->start(QAbstractAnimation::DeleteWhenStopped); + clear(); + + status = COLLAPSED; } void ToolTipItem::expand() @@ -1358,6 +1367,7 @@ void ToolTipItem::expand() animation->setEndValue(nextRectangle); animation->start(QAbstractAnimation::DeleteWhenStopped); + status = EXPANDED; } ToolTipItem::ToolTipItem(QGraphicsItem* parent): QGraphicsPathItem(parent), background(0) @@ -1368,6 +1378,8 @@ ToolTipItem::ToolTipItem(QGraphicsItem* parent): QGraphicsPathItem(parent), back setFlag(ItemIgnoresTransformations); setFlag(ItemIsMovable); + status = COLLAPSED; + updateTitlePosition(); setZValue(99); } @@ -1401,6 +1413,11 @@ void ToolTipItem::updateTitlePosition() } } +bool ToolTipItem::isExpanded() { + return status == EXPANDED; +} + + EventItem::EventItem(QGraphicsItem* parent): QGraphicsPolygonItem(parent) { setFlag(ItemIgnoresTransformations); diff --git a/qt-ui/profilegraphics.h b/qt-ui/profilegraphics.h index b440adf5d..9c1c5dbc1 100644 --- a/qt-ui/profilegraphics.h +++ b/qt-ui/profilegraphics.h @@ -32,6 +32,7 @@ public: void addToolTip(const QString& toolTip, const QIcon& icon = QIcon()); void removeToolTip(const QString& toolTip); void refresh(struct graphics_context* gc, QPointF pos); + bool isExpanded(); public Q_SLOTS: void setRect(const QRectF& rect); @@ -42,6 +43,7 @@ private: QGraphicsPathItem *background; QGraphicsLineItem *separator; QGraphicsSimpleTextItem *title; + Status status; QRectF rectangle; }; diff --git a/qt-ui/subsurfacewebservices.cpp b/qt-ui/subsurfacewebservices.cpp index 2f82d6d26..cd944ca17 100644 --- a/qt-ui/subsurfacewebservices.cpp +++ b/qt-ui/subsurfacewebservices.cpp @@ -59,10 +59,14 @@ void SubsurfaceWebServices::buttonClicked(QAbstractButton* button) QSettings s; s.setValue("webservice_uid", ui->userID->text()); s.sync(); + hide(); + close(); } break; case QDialogButtonBox::RejectRole: - manager->deleteLater(); + // we may want to clean up after ourselves, but this + // makes Subsurface throw a SIGSEGV... + // manager->deleteLater(); reply->deleteLater(); ui->progressBar->setMaximum(1); break; @@ -90,7 +94,7 @@ void SubsurfaceWebServices::startDownload() ui->buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false); connect(reply, SIGNAL(finished()), this, SLOT(downloadFinished())); - connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(downloadError(QNetworkReply::NetworkError))); } |