/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: https://neueland.iserlohn-fortress.net/smolbote.hg * * SPDX-License-Identifier: GPL-3.0 */ #ifndef SMOLBOTE_MAINWINDOW_H #define SMOLBOTE_MAINWINDOW_H #include #include #include class Browser; class QMdiArea; class Configuration; class SubWindow; class AddressBar; class SearchForm; class WebView; class NavigationBar; class MainWindow : public QMainWindow { friend class Browser; Q_OBJECT public: enum ActionLocation { ToolsMenu }; explicit MainWindow(std::shared_ptr &config, QWidget *parent = nullptr); Q_DISABLE_COPY(MainWindow) ~MainWindow() override; void createMenuBar(); void addAction(ActionLocation where, QAction *action); void addDockWidget(Qt::DockWidgetArea area, QWidget *widget); void removeDockWidget(QWidget *widget); SubWindow *currentSubWindow() const; public slots: void createTab(const QUrl &url); SubWindow *createSubWindow(const QString &url = QString()); void setView(WebView *view); protected: void closeEvent(QCloseEvent *event) override; private: QAction *subWindowAction = nullptr; QMenu *toolsMenu = nullptr; NavigationBar *navigationToolBar = nullptr; AddressBar *addressBar = nullptr; SearchForm *searchBox = nullptr; QMdiArea *mdiArea; std::shared_ptr m_config; QMetaObject::Connection viewChangedConnection; QMetaObject::Connection searchConnection, searchBoxConnection; QMetaObject::Connection statusBarConnection; }; #endif // SMOLBOTE_MAINWINDOW_H