/* * 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/gitea/aqua/smolbote * * 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 WebProfile; class MenuBar; class MainWindow : public QMainWindow { friend class Browser; friend class MenuBar; Q_OBJECT public: enum ActionLocation { ToolsMenu }; explicit MainWindow(QWidget *parent = nullptr); Q_DISABLE_COPY(MainWindow) ~MainWindow() override; void addDockWidget(Qt::DockWidgetArea area, QWidget *widget); void removeDockWidget(QWidget *widget); const QVector subWindows() const; SubWindow *currentSubWindow() const; public slots: void createTab(const QUrl &url); SubWindow *createSubWindow(WebProfile *profile = nullptr, bool openProfileNewtab = false); private slots: void setView(WebView *view); protected: void closeEvent(QCloseEvent *event) override; private: MenuBar *m_menuBar = nullptr; QMenu *toolsMenu = nullptr; QMenu *pageLoadProfileMenu = nullptr; NavigationBar *navigationToolBar = nullptr; AddressBar *addressBar = nullptr; SearchForm *searchBox = nullptr; QMdiArea *mdiArea; WebView *currentView = nullptr; QMetaObject::Connection viewChangedConnection; QMetaObject::Connection searchBoxConnection; QMetaObject::Connection statusBarConnection; }; #endif // SMOLBOTE_MAINWINDOW_H