2017-04-27 20:26:05 +02:00
|
|
|
// SPDX-License-Identifier: GPL-2.0
|
2013-04-13 20:44:02 -07:00
|
|
|
/*
|
|
|
|
* divelistview.h
|
|
|
|
*
|
|
|
|
* header file for the dive list of Subsurface
|
|
|
|
*
|
|
|
|
*/
|
2013-04-12 08:24:07 +01:00
|
|
|
#ifndef DIVELISTVIEW_H
|
|
|
|
#define DIVELISTVIEW_H
|
|
|
|
|
|
|
|
/*! A view subclass for use with dives
|
|
|
|
Note: calling this a list view might be misleading?
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <QTreeView>
|
2015-04-24 17:10:55 +02:00
|
|
|
#include <QNetworkAccessManager>
|
2016-04-04 22:02:03 -07:00
|
|
|
#include "qt-models/divetripmodel.h"
|
2020-02-03 19:33:06 +01:00
|
|
|
#include "core/subsurface-qt/divelistnotifier.h"
|
2013-04-12 08:24:07 +01:00
|
|
|
|
2014-02-27 20:09:57 -08:00
|
|
|
class DiveListView : public QTreeView {
|
2013-05-14 08:18:26 -03:00
|
|
|
Q_OBJECT
|
2013-04-12 08:24:07 +01:00
|
|
|
public:
|
|
|
|
DiveListView(QWidget *parent = 0);
|
2013-11-08 20:30:17 -02:00
|
|
|
~DiveListView();
|
2018-11-04 17:54:38 +01:00
|
|
|
void setSortOrder(int i, Qt::SortOrder order); // Call to set sort order
|
|
|
|
void reload(); // Call to reload model data
|
2018-06-09 16:24:39 +02:00
|
|
|
static QString lastUsedImageDir();
|
2018-06-10 16:40:23 +02:00
|
|
|
static void updateLastUsedImageDir(const QString &s);
|
2020-04-26 18:57:51 +02:00
|
|
|
void loadImages();
|
|
|
|
void loadWebImages();
|
2019-06-23 12:46:42 +02:00
|
|
|
signals:
|
2022-09-03 22:45:08 +02:00
|
|
|
// currentDC = -1: don't change dc number.
|
|
|
|
void divesSelected(const std::vector<dive *> &dives, dive *currentDive, int currentDC);
|
2014-02-27 20:09:57 -08:00
|
|
|
public
|
|
|
|
slots:
|
2020-11-24 12:50:52 +01:00
|
|
|
void settingsChanged();
|
2020-04-26 18:57:51 +02:00
|
|
|
private
|
|
|
|
slots:
|
|
|
|
void toggleColumnVisibilityByIndex();
|
2018-11-04 17:54:38 +01:00
|
|
|
void sortIndicatorChanged(int index, Qt::SortOrder order);
|
2013-06-06 09:06:42 +09:00
|
|
|
void removeFromTrip();
|
2013-06-06 10:37:18 +09:00
|
|
|
void deleteDive();
|
2013-12-06 17:40:59 -08:00
|
|
|
void markDiveInvalid();
|
2019-12-13 06:33:12 +01:00
|
|
|
void markDiveValid();
|
2013-06-26 19:16:40 -10:00
|
|
|
void mergeTripAbove();
|
|
|
|
void mergeTripBelow();
|
2013-11-15 11:32:19 +09:00
|
|
|
void newTripAbove();
|
2013-11-17 15:36:57 -08:00
|
|
|
void addToTripAbove();
|
2014-03-20 07:42:20 +01:00
|
|
|
void addToTripBelow();
|
2013-09-23 21:57:28 -07:00
|
|
|
void mergeDives();
|
2015-10-01 21:17:37 -04:00
|
|
|
void splitDives();
|
2014-05-20 06:11:32 +09:00
|
|
|
void renumberDives();
|
2020-09-29 23:29:53 +02:00
|
|
|
void addDivesToTrip();
|
2013-11-18 14:53:05 +01:00
|
|
|
void shiftTimes();
|
2022-09-04 08:21:48 +02:00
|
|
|
void divesSelectedSlot(const QVector<QModelIndex> &indices, QModelIndex currentDive, int currentDC);
|
2022-08-27 17:28:34 +02:00
|
|
|
void tripSelected(QModelIndex trip, QModelIndex currentDive);
|
2013-05-13 22:14:59 -03:00
|
|
|
private:
|
2020-04-26 18:57:51 +02:00
|
|
|
void rowsInserted(const QModelIndex &parent, int start, int end) override;
|
|
|
|
void reset() override;
|
2022-08-28 17:58:04 +02:00
|
|
|
void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) override;
|
2022-09-03 22:45:08 +02:00
|
|
|
void selectDiveSitesOnMap(const std::vector<dive *> &dives);
|
2022-08-27 17:28:34 +02:00
|
|
|
void selectTripItems(QModelIndex index);
|
2018-12-27 10:06:11 +01:00
|
|
|
DiveTripModelBase::Layout currentLayout;
|
2013-06-06 09:06:42 +09:00
|
|
|
QModelIndex contextMenuIndex;
|
2018-07-25 20:40:47 +02:00
|
|
|
// Remember the initial column widths, to avoid writing unchanged widths to the settings
|
|
|
|
QVector<int> initialColumnWidths;
|
2013-11-26 15:44:18 -02:00
|
|
|
|
2018-12-27 10:06:11 +01:00
|
|
|
void resetModel(); // Call after model changed
|
2013-06-26 19:16:40 -10:00
|
|
|
void merge_trip(const QModelIndex &a, const int offset);
|
2018-07-26 18:03:07 +02:00
|
|
|
void setColumnWidths();
|
2018-07-25 21:23:19 +02:00
|
|
|
void calculateInitialColumnWidth(int col);
|
2019-11-28 21:55:26 +01:00
|
|
|
std::vector<int> backupExpandedRows();
|
|
|
|
void restoreExpandedRows(const std::vector<int> &);
|
2013-11-13 16:59:56 -02:00
|
|
|
int lastVisibleColumn();
|
2019-05-31 16:09:14 +02:00
|
|
|
void selectTrip(dive_trip *trip);
|
2024-01-16 17:39:19 +01:00
|
|
|
void updateLastImageTimeOffset(timestamp_t offset);
|
2014-02-12 16:46:17 +01:00
|
|
|
int lastImageTimeOffset();
|
2014-08-21 14:20:03 -05:00
|
|
|
void addToTrip(int delta);
|
2024-01-15 21:22:20 +01:00
|
|
|
void matchImagesToDives(const QStringList &fileNames);
|
|
|
|
void loadImagesFromURLs(const QString &urls);
|
2020-04-25 21:07:38 +02:00
|
|
|
bool eventFilter(QObject *, QEvent *) override;
|
|
|
|
void mouseDoubleClickEvent(QMouseEvent *event) override;
|
|
|
|
void contextMenuEvent(QContextMenuEvent *event) override;
|
|
|
|
void currentChanged(const QModelIndex ¤t, const QModelIndex &previous) override;
|
2015-04-24 17:10:55 +02:00
|
|
|
QNetworkAccessManager manager;
|
2020-04-26 18:44:59 +02:00
|
|
|
bool programmaticalSelectionChange;
|
2013-04-12 08:24:07 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // DIVELISTVIEW_H
|