/* * 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 "subwindow/subwindow.h" #include #include class Browser; class AddressBar; class SearchForm; class WebView; class NavigationBar; class WebProfile; class MenuBar; class MainWindow final : public QMainWindow { friend class Browser; Q_OBJECT public: enum ActionLocation { ToolsMenu }; explicit MainWindow(QWidget *parent = nullptr); MainWindow(const MainWindow &) = delete; ~MainWindow() = default; void addDockWidget(Qt::DockWidgetArea area, QWidget *widget); void removeDockWidget(QWidget *widget); [[nodiscard]] const QVector subWindows() const { return m_subwindows; } [[nodiscard]] SubWindow *currentSubWindow() const { return qobject_cast(centralWidget()); } [[nodiscard]] WebView *currentView() const { return currentSubWindow()->currentView(); } public slots: void createTab(const QUrl &url); SubWindow *createSubWindow(WebProfile *profile = nullptr, bool openProfileNewtab = false); void setCurrentSubWindow(SubWindow *subwindow); private slots: void setView(WebView *view); protected: void closeEvent(QCloseEvent *event) override; private: QString defaultWindowTitle; MenuBar *m_menuBar = nullptr; QMenu *toolsMenu = nullptr; QMenu *pageLoadProfileMenu = nullptr; NavigationBar *navigationToolBar = nullptr; AddressBar *addressBar = nullptr; SearchForm *searchBox = nullptr; QVector m_subwindows; QMetaObject::Connection viewChangedConnection; QMetaObject::Connection statusBarConnection; }; #endif // SMOLBOTE_MAINWINDOW_H