2013-04-13 20:44:02 -07:00
|
|
|
/*
|
|
|
|
* mainwindow.h
|
|
|
|
*
|
|
|
|
* header file for the main window of Subsurface
|
|
|
|
*
|
|
|
|
*/
|
2013-04-07 15:20:43 -07:00
|
|
|
#ifndef MAINWINDOW_H
|
|
|
|
#define MAINWINDOW_H
|
|
|
|
|
|
|
|
#include <QMainWindow>
|
2013-05-12 06:54:34 -07:00
|
|
|
#include <QAction>
|
2013-12-05 14:02:25 +02:00
|
|
|
#include <QUrl>
|
2013-04-07 15:20:43 -07:00
|
|
|
|
2013-10-03 11:54:24 -07:00
|
|
|
#include "ui_mainwindow.h"
|
2014-01-09 19:21:30 +02:00
|
|
|
#include "usermanual.h"
|
2013-10-03 11:54:24 -07:00
|
|
|
|
2013-05-19 00:09:36 -03:00
|
|
|
struct DiveList;
|
2013-04-25 20:44:06 -03:00
|
|
|
class QSortFilterProxyModel;
|
2013-04-12 08:24:07 +01:00
|
|
|
class DiveTripModel;
|
2013-04-09 09:35:44 +01:00
|
|
|
|
2013-04-07 15:20:43 -07:00
|
|
|
class DiveInfo;
|
|
|
|
class DiveNotes;
|
|
|
|
class Stats;
|
|
|
|
class Equipment;
|
2013-05-03 21:49:40 -03:00
|
|
|
class QItemSelection;
|
2013-05-19 00:09:36 -03:00
|
|
|
class DiveListView;
|
|
|
|
class GlobeGPS;
|
|
|
|
class MainTab;
|
|
|
|
class ProfileGraphicsView;
|
2013-08-22 16:20:47 -03:00
|
|
|
class QWebView;
|
2013-04-07 15:20:43 -07:00
|
|
|
|
2013-06-26 15:13:06 +03:00
|
|
|
enum MainWindowTitleFormat { MWTF_DEFAULT, MWTF_FILENAME };
|
|
|
|
|
2013-04-09 09:35:44 +01:00
|
|
|
class MainWindow : public QMainWindow
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
2013-04-07 15:20:43 -07:00
|
|
|
public:
|
2013-06-12 15:54:55 -03:00
|
|
|
enum {COLLAPSED, EXPANDED};
|
2013-09-26 11:14:40 -03:00
|
|
|
enum StackWidgetIndexes{ PROFILE, PLANNERPROFILE};
|
|
|
|
enum InfoWidgetIndexes{ MAINTAB, PLANNERWIDGET};
|
2013-11-07 11:37:27 -05:00
|
|
|
enum CurrentState{ VIEWALL, GLOBE_MAXIMIZED, INFO_MAXIMIZED, PROFILE_MAXIMIZED, LIST_MAXIMIZED};
|
2013-06-12 15:54:55 -03:00
|
|
|
|
2013-04-07 15:20:43 -07:00
|
|
|
MainWindow();
|
2014-02-12 15:22:54 +01:00
|
|
|
virtual ~MainWindow();
|
|
|
|
static MainWindow *instance();
|
2013-05-19 00:09:36 -03:00
|
|
|
ProfileGraphicsView *graphics();
|
|
|
|
MainTab *information();
|
2014-02-13 22:48:07 +01:00
|
|
|
void loadRecentFiles(QSettings *s);
|
|
|
|
void addRecentFile(const QStringList &newFiles);
|
2013-05-19 00:09:36 -03:00
|
|
|
DiveListView *dive_list();
|
|
|
|
GlobeGPS *globe();
|
2013-05-21 23:13:45 -07:00
|
|
|
void showError(QString message);
|
2013-06-26 15:13:06 +03:00
|
|
|
void setTitle(enum MainWindowTitleFormat format);
|
2013-04-09 09:35:44 +01:00
|
|
|
|
2013-07-04 12:30:05 -03:00
|
|
|
// The 'Change DC Shortcuts' should only be enabled
|
|
|
|
// when the profile's visible.
|
|
|
|
void disableDcShortcuts();
|
|
|
|
void enableDcShortcuts();
|
2013-09-09 05:59:03 -03:00
|
|
|
void loadFiles(const QStringList files);
|
|
|
|
void importFiles(const QStringList importFiles);
|
2013-09-22 22:24:28 -07:00
|
|
|
void cleanUpEmpty();
|
2014-01-15 13:20:05 -02:00
|
|
|
QTabWidget *tabWidget();
|
2013-06-19 10:20:16 -07:00
|
|
|
private slots:
|
2013-04-09 17:26:23 +01:00
|
|
|
/* file menu action */
|
2014-02-13 22:48:07 +01:00
|
|
|
void recentFileTriggered(bool checked);
|
2013-04-09 09:35:44 +01:00
|
|
|
void on_actionNew_triggered();
|
2013-04-09 17:26:23 +01:00
|
|
|
void on_actionOpen_triggered();
|
|
|
|
void on_actionSave_triggered();
|
|
|
|
void on_actionSaveAs_triggered();
|
|
|
|
void on_actionClose_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();
|
2013-10-24 23:02:59 -02:00
|
|
|
void on_actionDivelogs_de_triggered();
|
2013-04-09 17:26:23 +01:00
|
|
|
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();
|
2013-06-12 15:54:55 -03:00
|
|
|
void on_actionViewGlobe_triggered();
|
2013-04-09 17:26:23 +01:00
|
|
|
void on_actionViewAll_triggered();
|
|
|
|
void on_actionPreviousDC_triggered();
|
|
|
|
void on_actionNextDC_triggered();
|
2014-01-14 18:36:07 +01:00
|
|
|
void on_actionFullScreen_triggered(bool checked);
|
2013-04-09 17:26:23 +01:00
|
|
|
|
|
|
|
/* other menu actions */
|
|
|
|
void on_actionSelectEvents_triggered();
|
|
|
|
void on_actionInputPlan_triggered();
|
|
|
|
void on_actionAboutSubsurface_triggered();
|
|
|
|
void on_actionUserManual_triggered();
|
2013-06-20 18:48:21 -03:00
|
|
|
void on_actionDivePlanner_triggered();
|
2013-04-09 09:35:44 +01:00
|
|
|
|
2013-06-27 15:33:43 +03:00
|
|
|
/* monitor resize of the info-profile splitter */
|
2013-07-05 15:33:51 +03:00
|
|
|
void on_mainSplitter_splitterMoved(int pos, int idx);
|
2013-06-27 15:33:43 +03:00
|
|
|
void on_infoProfileSplitter_splitterMoved(int pos, int idx);
|
|
|
|
|
2013-05-14 08:18:26 -03:00
|
|
|
void current_dive_changed(int divenr);
|
2013-06-04 21:40:09 +09:00
|
|
|
void initialUiSetup();
|
2013-05-14 08:18:26 -03:00
|
|
|
|
2013-12-29 18:11:20 +02:00
|
|
|
void on_actionImportDiveLog_triggered();
|
2013-10-16 22:05:19 +03:00
|
|
|
|
2014-02-06 11:38:28 -02:00
|
|
|
/* TODO: Move those slots below to it's own class */
|
|
|
|
void on_profCalcAllTissues_clicked(bool triggered);
|
|
|
|
void on_profCalcCeiling_clicked(bool triggered);
|
|
|
|
void on_profDcCeiling_clicked(bool triggered);
|
|
|
|
void on_profEad_clicked(bool triggered);
|
|
|
|
void on_profIncrement3m_clicked(bool triggered);
|
|
|
|
void on_profMod_clicked(bool triggered);
|
|
|
|
void on_profNtl_tts_clicked(bool triggered);
|
|
|
|
void on_profPO2_clicked(bool triggered);
|
|
|
|
void on_profPhe_clicked(bool triggered);
|
|
|
|
void on_profPn2_clicked(bool triggered);
|
|
|
|
void on_profRuler_clicked(bool triggered);
|
|
|
|
void on_profSAC_clicked(bool triggered);
|
|
|
|
|
2013-04-27 10:09:57 +01:00
|
|
|
protected:
|
|
|
|
void closeEvent(QCloseEvent *);
|
|
|
|
|
2013-06-19 10:20:16 -07:00
|
|
|
public slots:
|
2013-05-26 11:33:45 -07:00
|
|
|
void readSettings();
|
2013-11-14 17:52:03 +09:00
|
|
|
void refreshDisplay(bool recreateDiveList = true);
|
2013-06-27 14:48:03 -03:00
|
|
|
void showProfile();
|
2013-11-01 11:48:34 -04:00
|
|
|
void editCurrentDive();
|
2013-05-26 11:33:45 -07:00
|
|
|
|
2013-04-07 15:20:43 -07:00
|
|
|
private:
|
2013-10-03 11:54:25 -07:00
|
|
|
Ui::MainWindow ui;
|
2013-05-12 06:54:34 -07:00
|
|
|
QAction *actionNextDive;
|
|
|
|
QAction *actionPreviousDive;
|
2014-01-09 19:21:30 +02:00
|
|
|
UserManual *helpView;
|
2013-11-07 11:37:27 -05:00
|
|
|
CurrentState state;
|
2013-04-13 10:17:59 -03:00
|
|
|
QString filter();
|
2014-02-12 15:22:54 +01:00
|
|
|
static MainWindow *m_Instance;
|
2013-04-13 10:17:59 -03:00
|
|
|
bool askSaveChanges();
|
2013-04-27 10:09:57 +01:00
|
|
|
void writeSettings();
|
2013-05-10 10:45:13 -07:00
|
|
|
void redrawProfile();
|
2013-05-19 15:25:47 -07:00
|
|
|
void file_save();
|
|
|
|
void file_save_as();
|
2013-11-07 11:37:27 -05:00
|
|
|
void beginChangeState(CurrentState s);
|
|
|
|
void saveSplitterSizes();
|
2013-11-14 13:42:26 -02:00
|
|
|
QString lastUsedDir();
|
|
|
|
void updateLastUsedDir(const QString& s);
|
2013-04-07 15:20:43 -07:00
|
|
|
};
|
|
|
|
|
2013-05-19 00:09:36 -03:00
|
|
|
MainWindow *mainWindow();
|
|
|
|
|
2014-02-11 19:14:46 +01:00
|
|
|
#endif // MAINWINDOW_H
|