/* * 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: git://neueland.iserlohn-fortress.net/smolbote.git * * SPDX-License-Identifier: GPL-3.0 */ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include "webengine/webengineprofile.h" #include #include "widgets/mainwindowtabbar.h" #include "widgets/loadingbar.h" #include "navigation/navigationbutton.h" #include namespace Ui { class MainWindow; } class Configuration; class BookmarksWidget; class DownloadsWidget; class MainWindowMenuBar; class UrlLineEdit; class MainWindow : public QMainWindow { Q_OBJECT friend class WebView; public: MainWindow(std::shared_ptr config, QWidget *parent = nullptr); ~MainWindow() override; void addTabbedDock(Qt::DockWidgetArea area, QWidget *widget); public slots: void about(); void showSettingsDialog(); void newTab(const QUrl &url = QUrl("")); MainWindow *newWindow(const QUrl &url = QUrl("")); void setProfile(std::shared_ptr profile); WebEngineProfile *profile(); void setBookmarksWidget(std::shared_ptr &widget); void setDownloadsWidget(std::shared_ptr &widget); void toggleFullscreen(); protected: void closeEvent(QCloseEvent *event) override; private slots: void focusAddress(); void handleTabChanged(WebView *view); void handleTitleUpdated(const QString &title); private: Q_DISABLE_COPY(MainWindow) Ui::MainWindow *ui; MainWindowTabBar *tabBar; WebView *m_currentView; MainWindowMenuBar *menuBar; // navigation NavigationButton *m_backButton, *m_forwardButton, *m_reloadButton; UrlLineEdit *m_addressBar; LoadingBar *m_progressBar; bool m_tabBarAdded = false; std::shared_ptr m_profile; std::shared_ptr m_config; std::shared_ptr m_bookmarksWidget; std::shared_ptr m_downloadsWidget; }; #endif // MAINWINDOW_H