/* * 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 */ #include "profilemanagerdialog.h" #include "profileview.h" #include #include #include "ui_profilemanagerdialog.h" ProfileManagerDialog::ProfileManagerDialog(QWidget *parent) : ProfileDialog(parent) , ui(new Ui::ProfileManagerDialog) { ui->setupUi(this); connect(ui->listWidget, &QListWidget::itemPressed, this, &ProfileManagerDialog::showItem); } ProfileManagerDialog::~ProfileManagerDialog() { delete ui; } int ProfileManagerDialog::addProfile(const QString &id, const QString name, QWebEngineProfile *profile, QSettings *settings) { Q_CHECK_PTR(profile); auto *item = new QListWidgetItem(id, ui->listWidget); item->setData(Qt::UserRole, name); item->setData(Qt::UserRole+1, QVariant::fromValue(QPointer(profile))); item->setData(Qt::UserRole+2, QVariant::fromValue(QPointer(settings))); return ui->listWidget->count() - 1; } void ProfileManagerDialog::showProfile(int index) { auto *item = ui->listWidget->item(index); showItem(item); } void ProfileManagerDialog::showItem(QListWidgetItem *item) { // clear out groupbox layout QLayoutItem *i; while((i = ui->groupBox->layout()->takeAt(0)) != nullptr) { delete i->widget(); delete i; } if(item == nullptr) { ui->groupBox->setVisible(false); return; } ui->groupBox->setVisible(true); const auto name = item->data(Qt::UserRole).value(); auto profile = item->data(Qt::UserRole+1).value>(); auto settings = item->data(Qt::UserRole+2).value>(); auto *v = new ProfileView(name, profile.data(), settings.data(), this); ui->groupBox->layout()->addWidget(v); v->adjustSize(); }