subsurface/qt-ui/mainwindow.h
Dirk Hohndel c729ae92ed Allow walking the dive list with the cursor keys
Figure out what is our first selected element (in case we start out from a
multiple selection) and then move to the next logical element. So the code
traverses an expanded tree (from a trip 'down' to its first dive or 'up'
to the last dive of the previous trip - and similar from a first dive in a
trip 'up' to its trip and from a last dive in a trip 'down' to the next
trip.

This does not take 'shift-cursor-up/down' into account (i.e. manual
selection extension). Instead with just cursor up and down a single dive
(or single trip) is selected.

My guess is that the code will make someone's eyes bleed. Be warned.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-12 06:58:56 -07:00

96 lines
2.1 KiB
C++

/*
* mainwindow.h
*
* header file for the main window of Subsurface
*
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QModelIndex>
#include <QAction>
class QSortFilterProxyModel;
class DiveTripModel;
namespace Ui
{
class MainWindow;
}
class DiveInfo;
class DiveNotes;
class Stats;
class Equipment;
class QItemSelection;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
private Q_SLOTS:
/* file menu action */
void on_actionNew_triggered();
void on_actionOpen_triggered();
void on_actionSave_triggered();
void on_actionSaveAs_triggered();
void on_actionClose_triggered();
void on_actionImport_triggered();
void on_actionExportUDDF_triggered();
void on_actionPrint_triggered();
void on_actionPreferences_triggered();
void on_actionQuit_triggered();
/* log menu actions */
void on_actionDownloadDC_triggered();
void on_actionDownloadWeb_triggered();
void on_actionEditDeviceNames_triggered();
void on_actionAddDive_triggered();
void on_actionRenumber_triggered();
void on_actionAutoGroup_triggered();
void on_actionToggleZoom_triggered();
void on_actionYearlyStatistics_triggered();
/* view menu actions */
void on_actionViewList_triggered();
void on_actionViewProfile_triggered();
void on_actionViewInfo_triggered();
void on_actionViewAll_triggered();
void on_actionPreviousDC_triggered();
void on_actionNextDC_triggered();
/* other menu actions */
void on_actionSelectEvents_triggered();
void on_actionInputPlan_triggered();
void on_actionAboutSubsurface_triggered();
void on_actionUserManual_triggered();
/* keyboard actions */
void nextDive_triggered();
void previousDive_triggered();
void dive_selection_changed(const QItemSelection& newSelection,
const QItemSelection& oldSelection);
protected:
void closeEvent(QCloseEvent *);
private:
Ui::MainWindow *ui;
DiveTripModel *model;
QSortFilterProxyModel *sortModel;
QAction *actionNextDive;
QAction *actionPreviousDive;
QString filter();
bool askSaveChanges();
void readSettings();
void writeSettings();
void redrawProfile();
};
#endif