/* * 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/smolbote.hg * * SPDX-License-Identifier: GPL-3.0 */ #include "window.h" #include "webengine/webprofile.h" #include "webengine/webview.h" #include "widgets/tabwidget.h" #include Window::Window(QWidget *parent, Qt::WindowFlags flags) : QMdiSubWindow(parent, flags) , tabWidget(new TabWidget(this)) { // delete this window when it closes setAttribute(Qt::WA_DeleteOnClose, true); resize(800, 600); setWidget(tabWidget); connect(tabWidget, &TabWidget::currentChanged, [this](int index) { if(index < 0) { // last tab has been closed close(); } else { auto *view = dynamic_cast(tabWidget->widget(index)); Q_CHECK_PTR(view); disconnect(titleConnection); connect(view, &WebView::titleChanged, this, &Window::setWindowTitle); setWindowTitle(view->title()); emit currentViewChanged(view); } }); } Window::~Window() { delete tabWidget; } WebView *Window::currentView() { return qobject_cast(tabWidget->currentWidget()); } int Window::addTab(WebView *view) { Q_CHECK_PTR(view); return tabWidget->addTab(view); } int Window::addTab(const QUrl &url) { auto *view = new WebView(WebProfile::defaultProfile(), this); view->load(url); return tabWidget->addTab(view); } void Window::swapToTab(int index) { tabWidget->setCurrentIndex(index); }