/* * 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_SUBWINDOW_H #define SMOLBOTE_SUBWINDOW_H #include #include #include class TabWidget; class WebView; class WebProfile; class SubWindow : public QMdiSubWindow { Q_OBJECT public: struct TabData { bool closeLocked = false; bool refreshLocked = false; }; explicit SubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()); ~SubWindow() override; int currentTabIndex() const; WebView *currentView(); WebView *view(int index) const; int tabCount() const; void setProfile(WebProfile *profile); WebProfile *profile() const; void setTabData(TabData &data, int index); TabData tabData(int index) const; signals: void currentViewChanged(WebView *view); void showStatusMessage(const QString &message, int timeout = 0); public slots: int addTab(const QUrl &url = QUrl(), WebProfile *profile = nullptr); void closeTab(int index); void setCurrentTab(int index); void moveTab(int from, int to); int restoreLastTab(); void restoreTabMenu(QMenu *menu); private: WebProfile *m_profile; TabWidget *tabWidget; QMetaObject::Connection titleConnection; QMetaObject::Connection linkHoveredConnection; }; Q_DECLARE_METATYPE(SubWindow::TabData) #endif // SMOLBOTE_SUBWINDOW_H