#ifndef MAINWINDOW_H #define MAINWINDOW_H #include "framelessmainwindow/framelessmainwindowimpl.h" #include #include #include #include "dockwidgethelper.h" class QDockWidget; class QSystemTrayIcon; class QTimer; class QLabel; namespace vnotex { class ToolBox; class NotebookExplorer; class TagExplorer; class ViewArea; class Event; class OutlineViewer; class LocationList; class SearchPanel; class SnippetPanel; class HistoryPanel; class ExportDialog; enum { RESTART_EXIT_CODE = 1000 }; class MainWindow : public FramelessMainWindowImpl { Q_OBJECT public: friend class DockWidgetHelper; explicit MainWindow(QWidget *p_parent = nullptr); ~MainWindow(); MainWindow(const MainWindow &) = delete; void operator=(const MainWindow &) = delete; void kickOffOnStart(const QStringList &p_paths); void resetStateAndGeometry(); const QVector &getDocks() const; void setContentAreaExpanded(bool p_expanded); // Should be called after MainWindow is shown. bool isContentAreaExpanded() const; void focusViewArea(); void setStayOnTop(bool p_enabled); void restart(); void showMainWindow(); void quitApp(); void openFiles(const QStringList &p_files); LocationList *getLocationList() const; void setLocationListVisible(bool p_visible); void toggleLocationListVisible(); void updateDockWidgetTabBar(); signals: void mainWindowStarted(); // @m_response of @p_event: true to continue the close, false to stop the close. void mainWindowClosed(const QSharedPointer &p_event); // No user interaction is available. void mainWindowClosedOnQuit(); void layoutChanged(); protected: void closeEvent(QCloseEvent *p_event) Q_DECL_OVERRIDE; void changeEvent(QEvent *p_event) Q_DECL_OVERRIDE; private slots: void closeOnQuit(); void exportNotes(); void showTips(const QString &p_message, int p_timeoutMilliseconds); private: void setupUI(); void setupCentralWidget(); void setupOutlineViewer(); void setupSearchPanel(); void setupLocationList(); void setupSnippetPanel(); void setupHistoryPanel(); void setupNotebookExplorer(); void setupTagExplorer(); void setupDocks(); void setupStatusBar(); void setupTipsArea(); void createTipsArea(); void saveStateAndGeometry(); void loadStateAndGeometry(bool p_stateOnly = false); // Used to test widget in development. void demoWidget(); QString getViewAreaTitle() const; void setupToolBar(); void setupShortcuts(); void setupSystemTray(); void setTipsAreaVisible(bool p_visible); void setupSpellCheck(); void checkForUpdates(); void checkNotebooksFailedToLoad(); void loadWidgetsData(); DockWidgetHelper m_dockWidgetHelper; ToolBox *m_navigationToolBox = nullptr; NotebookExplorer *m_notebookExplorer = nullptr; TagExplorer *m_tagExplorer = nullptr; ViewArea *m_viewArea = nullptr; QWidget *m_viewAreaStatusWidget = nullptr; OutlineViewer *m_outlineViewer = nullptr; LocationList *m_locationList = nullptr; SearchPanel *m_searchPanel = nullptr; SnippetPanel *m_snippetPanel = nullptr; HistoryPanel *m_historyPanel = nullptr; ExportDialog *m_exportDialog = nullptr; QSystemTrayIcon *m_trayIcon = nullptr; QLabel *m_tipsLabel = nullptr; QTimer *m_tipsTimer = nullptr; bool m_layoutReset = false; // -1: do not request to quit; // 0 and above: exit code. int m_requestQuit = -1; Qt::WindowStates m_windowOldState = Qt::WindowMinimized; QStringList m_visibleDocksBeforeExpand; }; } // ns vnotex #endif // MAINWINDOW_H