/* * 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 "lib/navigation/navigationbutton.h" #include "webengine/webengineprofile.h" #include "widgets/loadingbar.h" #include "widgets/mainwindowtabbar.h" #include #include #include #include namespace Ui { class MainWindow; } class SearchForm; class Configuration; class BookmarksWidget; class DownloadsWidget; class MainWindowMenuBar; class UrlLineEdit; class MainWindow : public QMainWindow { Q_OBJECT friend class WebView; friend class SearchForm; friend class MainWindowMenuBar; public: explicit MainWindow(std::shared_ptr config, QWidget *parent = nullptr); Q_DISABLE_COPY(MainWindow) ~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 addPlugins(QVector &plugins); void toggleFullscreen(); protected: void closeEvent(QCloseEvent *event) override; private slots: void handleTabChanged(WebView *view); void handleTitleUpdated(const QString &title); private: Ui::MainWindow *ui; SearchForm *m_searchBox; 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