/* * 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 #include #include "models.h" class DiveListView : public QTreeView { Q_OBJECT public: DiveListView(QWidget *parent = 0); ~DiveListView(); 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 selectDive(int dive_table_idx, bool scrollto = false, bool toggle = false); void selectDives(const QList &newDiveSelection); void rememberSelection(); void restoreSelection(); void contextMenuEvent(QContextMenuEvent *event); QList selectedTrips(); public slots: void toggleColumnVisibilityByIndex(); void reloadHeaderActions(); void headerClicked(int); void showSearchEdit(); void removeFromTrip(); void deleteDive(); void markDiveInvalid(); void testSlot(); void fixMessyQtModelBehaviour(); void mergeTripAbove(); void mergeTripBelow(); void newTripAbove(); void addToTripAbove(); void addToTripBelow(); void mergeDives(); void renumberDives(); void saveSelectedDivesAs(); void exportDives(); void shiftTimes(); void loadImages(); static QString lastUsedImageDir(); signals: void currentDiveChanged(int divenr); private: bool mouseClickSelection; QList expandedRows; int sortColumn; Qt::SortOrder currentOrder; DiveTripModel::Layout currentLayout; QLineEdit searchBox; QModelIndex contextMenuIndex; /* if dive_trip_t is null, there's no problem. */ QMultiHash selectedDives; void merge_trip(const QModelIndex &a, const int offset); void setupUi(); void backupExpandedRows(); void restoreExpandedRows(); int lastVisibleColumn(); void selectTrip(dive_trip_t *trip); void updateLastUsedImageDir(const QString &s); void updateLastImageTimeOffset(int offset); int lastImageTimeOffset(); void addToTrip(bool); }; #endif // DIVELISTVIEW_H