summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/mainwindow.h
diff options
context:
space:
mode:
Diffstat (limited to 'desktop-widgets/mainwindow.h')
-rw-r--r--desktop-widgets/mainwindow.h258
1 files changed, 258 insertions, 0 deletions
diff --git a/desktop-widgets/mainwindow.h b/desktop-widgets/mainwindow.h
new file mode 100644
index 000000000..02ec2478c
--- /dev/null
+++ b/desktop-widgets/mainwindow.h
@@ -0,0 +1,258 @@
+/*
+ * mainwindow.h
+ *
+ * header file for the main window of Subsurface
+ *
+ */
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+#include <QAction>
+#include <QUrl>
+#include <QUuid>
+#include <QProgressDialog>
+
+#include "ui_mainwindow.h"
+#include "notificationwidget.h"
+#include "windowtitleupdate.h"
+
+struct DiveList;
+class QSortFilterProxyModel;
+class DiveTripModel;
+
+class DiveInfo;
+class DiveNotes;
+class Stats;
+class Equipment;
+class QItemSelection;
+class DiveListView;
+class MainTab;
+class ProfileGraphicsView;
+class QWebView;
+class QSettings;
+class UpdateManager;
+class UserManual;
+class DivePlannerWidget;
+class ProfileWidget2;
+class PlannerDetails;
+class PlannerSettingsWidget;
+class QUndoStack;
+class LocationInformationWidget;
+
+typedef std::pair<QByteArray, QVariant> WidgetProperty;
+typedef QVector<WidgetProperty> PropertyList;
+
+enum MainWindowTitleFormat {
+ MWTF_DEFAULT,
+ MWTF_FILENAME
+};
+
+class MainWindow : public QMainWindow {
+ Q_OBJECT
+public:
+ enum {
+ COLLAPSED,
+ EXPANDED
+ };
+
+ enum CurrentState {
+ VIEWALL,
+ GLOBE_MAXIMIZED,
+ INFO_MAXIMIZED,
+ PROFILE_MAXIMIZED,
+ LIST_MAXIMIZED
+ };
+
+ MainWindow();
+ virtual ~MainWindow();
+ static MainWindow *instance();
+ MainTab *information();
+ void loadRecentFiles(QSettings *s);
+ void addRecentFile(const QStringList &newFiles);
+ void removeRecentFile(QStringList failedFiles);
+ DiveListView *dive_list();
+ DivePlannerWidget *divePlannerWidget();
+ PlannerSettingsWidget *divePlannerSettingsWidget();
+ LocationInformationWidget *locationInformationWidget();
+ void setTitle(enum MainWindowTitleFormat format = MWTF_FILENAME);
+
+ // Some shortcuts like "change DC" or "copy/paste dive components"
+ // should only be enabled when the profile's visible.
+ void disableShortcuts(bool disablePaste = true);
+ void enableShortcuts();
+ void loadFiles(const QStringList files);
+ void importFiles(const QStringList importFiles);
+ void importTxtFiles(const QStringList fileNames);
+ void cleanUpEmpty();
+ void setToolButtonsEnabled(bool enabled);
+ ProfileWidget2 *graphics() const;
+ PlannerDetails *plannerDetails() const;
+ void setLoadedWithFiles(bool filesFromCommandLine);
+ bool filesFromCommandLine() const;
+ void printPlan();
+ void checkSurvey(QSettings *s);
+ void setApplicationState(const QByteArray& state);
+ void setStateProperties(const QByteArray& state, const PropertyList& tl, const PropertyList& tr, const PropertyList& bl,const PropertyList& br);
+ bool inPlanner();
+ QUndoStack *undoStack;
+ NotificationWidget *getNotificationWidget();
+ void enableDisableCloudActions();
+ void showError();
+private
+slots:
+ /* file menu action */
+ void recentFileTriggered(bool checked);
+ void on_actionNew_triggered();
+ void on_actionOpen_triggered();
+ void on_actionSave_triggered();
+ void on_actionSaveAs_triggered();
+ void on_actionClose_triggered();
+ void on_actionCloudstorageopen_triggered();
+ void on_actionCloudstoragesave_triggered();
+ void on_actionPrint_triggered();
+ void on_actionPreferences_triggered();
+ void on_actionQuit_triggered();
+ void on_actionHash_images_triggered();
+
+ /* log menu actions */
+ void on_actionDownloadDC_triggered();
+ void on_actionDownloadWeb_triggered();
+ void on_actionDivelogs_de_triggered();
+ void on_actionEditDeviceNames_triggered();
+ void on_actionAddDive_triggered();
+ void on_actionEditDive_triggered();
+ void on_actionRenumber_triggered();
+ void on_actionAutoGroup_triggered();
+ void on_actionYearlyStatistics_triggered();
+
+ /* view menu actions */
+ void on_actionViewList_triggered();
+ void on_actionViewProfile_triggered();
+ void on_actionViewInfo_triggered();
+ void on_actionViewGlobe_triggered();
+ void on_actionViewAll_triggered();
+ void on_actionPreviousDC_triggered();
+ void on_actionNextDC_triggered();
+ void on_actionFullScreen_triggered(bool checked);
+
+ /* other menu actions */
+ void on_actionAboutSubsurface_triggered();
+ void on_actionUserManual_triggered();
+ void on_actionUserSurvey_triggered();
+ void on_actionDivePlanner_triggered();
+ void on_actionReplanDive_triggered();
+ void on_action_Check_for_Updates_triggered();
+
+ void on_actionDiveSiteEdit_triggered();
+ void current_dive_changed(int divenr);
+ void initialUiSetup();
+
+ void on_actionImportDiveLog_triggered();
+
+ /* TODO: Move those slots below to it's own class */
+ void on_profCalcAllTissues_triggered(bool triggered);
+ void on_profCalcCeiling_triggered(bool triggered);
+ void on_profDcCeiling_triggered(bool triggered);
+ void on_profEad_triggered(bool triggered);
+ void on_profIncrement3m_triggered(bool triggered);
+ void on_profMod_triggered(bool triggered);
+ void on_profNdl_tts_triggered(bool triggered);
+ void on_profPO2_triggered(bool triggered);
+ void on_profPhe_triggered(bool triggered);
+ void on_profPn2_triggered(bool triggered);
+ void on_profHR_triggered(bool triggered);
+ void on_profRuler_triggered(bool triggered);
+ void on_profSAC_triggered(bool triggered);
+ void on_profScaled_triggered(bool triggered);
+ void on_profTogglePicture_triggered(bool triggered);
+ void on_profTankbar_triggered(bool triggered);
+ void on_profTissues_triggered(bool triggered);
+ void on_actionExport_triggered();
+ void on_copy_triggered();
+ void on_paste_triggered();
+ void on_actionFilterTags_triggered();
+ void on_actionConfigure_Dive_Computer_triggered();
+ void setDefaultState();
+ void setAutomaticTitle();
+ void cancelCloudStorageOperation();
+
+protected:
+ void closeEvent(QCloseEvent *);
+
+signals:
+ void startDiveSiteEdit();
+
+public
+slots:
+ void turnOffNdlTts();
+ void readSettings();
+ void refreshDisplay(bool doRecreateDiveList = true);
+ void recreateDiveList();
+ void showProfile();
+ void refreshProfile();
+ void editCurrentDive();
+ void planCanceled();
+ void planCreated();
+ void setEnabledToolbar(bool arg1);
+ void setPlanNotes();
+
+private:
+ Ui::MainWindow ui;
+ QAction *actionNextDive;
+ QAction *actionPreviousDive;
+ UserManual *helpView;
+ CurrentState state;
+ QString filter();
+ static MainWindow *m_Instance;
+ QString displayedFilename(QString fullFilename);
+ bool askSaveChanges();
+ bool okToClose(QString message);
+ void closeCurrentFile();
+ void showProgressBar();
+ void hideProgressBar();
+ void writeSettings();
+ int file_save();
+ int file_save_as();
+ void beginChangeState(CurrentState s);
+ void saveSplitterSizes();
+ QString lastUsedDir();
+ void updateLastUsedDir(const QString &s);
+ void registerApplicationState(const QByteArray& state, QWidget *topLeft, QWidget *topRight, QWidget *bottomLeft, QWidget *bottomRight);
+ bool filesAsArguments;
+ UpdateManager *updateManager;
+
+ bool plannerStateClean();
+ void setupForAddAndPlan(const char *model);
+ void configureToolbar();
+ QDialog *survey;
+ struct dive copyPasteDive;
+ struct dive_components what;
+ QList<QAction *> profileToolbarActions;
+
+ struct WidgetForQuadrant {
+ WidgetForQuadrant(QWidget *tl = 0, QWidget *tr = 0, QWidget *bl = 0, QWidget *br = 0) :
+ topLeft(tl), topRight(tr), bottomLeft(bl), bottomRight(br) {}
+ QWidget *topLeft;
+ QWidget *topRight;
+ QWidget *bottomLeft;
+ QWidget *bottomRight;
+ };
+
+ struct PropertiesForQuadrant {
+ PropertiesForQuadrant(){}
+ PropertiesForQuadrant(const PropertyList& tl, const PropertyList& tr,const PropertyList& bl,const PropertyList& br) :
+ topLeft(tl), topRight(tr), bottomLeft(bl), bottomRight(br) {}
+ PropertyList topLeft;
+ PropertyList topRight;
+ PropertyList bottomLeft;
+ PropertyList bottomRight;
+ };
+
+ QHash<QByteArray, WidgetForQuadrant> applicationState;
+ QHash<QByteArray, PropertiesForQuadrant> stateProperties;
+
+ WindowTitleUpdate *wtu;
+};
+
+#endif // MAINWINDOW_H