mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 13:10:19 +00:00
3c6cdfd8c0
The command-objects select a current item, but this selection was not propagated to the front-end. The current item is the base for keyboard-navigation through the dive-list and therefore should be set correctly. It took some experimentation to get the flags right: QItemSelectionModel::Current Hopefully, these are the correct flags across all supported Qt versions! Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
92 lines
2.8 KiB
C++
92 lines
2.8 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* divelistview.h
|
|
*
|
|
* header file for the dive list of Subsurface
|
|
*
|
|
*/
|
|
#ifndef DIVELISTVIEW_H
|
|
#define DIVELISTVIEW_H
|
|
|
|
/*! A view subclass for use with dives
|
|
Note: calling this a list view might be misleading?
|
|
*/
|
|
|
|
#include <QTreeView>
|
|
#include <QLineEdit>
|
|
#include <QNetworkAccessManager>
|
|
#include "qt-models/divetripmodel.h"
|
|
|
|
class DiveListView : public QTreeView {
|
|
Q_OBJECT
|
|
public:
|
|
DiveListView(QWidget *parent = 0);
|
|
~DiveListView();
|
|
void mouseDoubleClickEvent(QMouseEvent * event);
|
|
void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
|
|
void currentChanged(const QModelIndex ¤t, const QModelIndex &previous);
|
|
void reload(DiveTripModel::Layout layout, bool forceSort = true);
|
|
bool eventFilter(QObject *, QEvent *);
|
|
void unselectDives();
|
|
void clearTripSelection();
|
|
void selectDive(int dive_table_idx, bool scrollto = false, bool toggle = false);
|
|
void selectDives(const QList<int> &newDiveSelection);
|
|
void rememberSelection();
|
|
void restoreSelection();
|
|
void contextMenuEvent(QContextMenuEvent *event);
|
|
QList<dive_trip_t *> selectedTrips();
|
|
static QString lastUsedImageDir();
|
|
static void updateLastUsedImageDir(const QString &s);
|
|
public
|
|
slots:
|
|
void toggleColumnVisibilityByIndex();
|
|
void reloadHeaderActions();
|
|
void headerClicked(int);
|
|
void removeFromTrip();
|
|
void deleteDive();
|
|
void markDiveInvalid();
|
|
void rowsInserted(const QModelIndex &parent, int start, int end) override;
|
|
void reset() override;
|
|
void mergeTripAbove();
|
|
void mergeTripBelow();
|
|
void newTripAbove();
|
|
void addToTripAbove();
|
|
void addToTripBelow();
|
|
void mergeDives();
|
|
void splitDives();
|
|
void renumberDives();
|
|
void shiftTimes();
|
|
void loadImages();
|
|
void loadWebImages();
|
|
void diveSelectionChanged(const QVector<QModelIndex> &indexes, bool select);
|
|
void currentDiveChanged(QModelIndex index);
|
|
private:
|
|
bool mouseClickSelection;
|
|
QList<int> expandedRows;
|
|
int sortColumn;
|
|
Qt::SortOrder currentOrder;
|
|
DiveTripModel::Layout currentLayout;
|
|
QModelIndex contextMenuIndex;
|
|
bool dontEmitDiveChangedSignal;
|
|
bool selectionSaved;
|
|
// Remember the initial column widths, to avoid writing unchanged widths to the settings
|
|
QVector<int> initialColumnWidths;
|
|
|
|
/* if dive_trip_t is null, there's no problem. */
|
|
QMultiHash<dive_trip_t *, int> selectedDives;
|
|
void merge_trip(const QModelIndex &a, const int offset);
|
|
void setColumnWidths();
|
|
void calculateInitialColumnWidth(int col);
|
|
void backupExpandedRows();
|
|
void restoreExpandedRows();
|
|
int lastVisibleColumn();
|
|
void selectTrip(dive_trip_t *trip);
|
|
void updateLastImageTimeOffset(int offset);
|
|
int lastImageTimeOffset();
|
|
void addToTrip(int delta);
|
|
void matchImagesToDives(QStringList fileNames);
|
|
void loadImageFromURL(QUrl url);
|
|
QNetworkAccessManager manager;
|
|
};
|
|
|
|
#endif // DIVELISTVIEW_H
|