| 
									
										
										
										
											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
 |