/******************************************************************************* ** ** smolbote: yet another qute browser ** Copyright (C) 2017 Xian Nox ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . ** ******************************************************************************/ #include "profilesdialog.h" #include "ui_profilesdialog.h" #include "browser.h" #include #include #include #include #include #include "mainwindow.h" ProfilesDialog::ProfilesDialog(MainWindow *window, QWidget *parent) : QDialog(parent), ui(new Ui::ProfilesDialog) { m_window = window; m_view = new ProfileView(0, this); // Hide the profile view because we're fancy // Give focus to the top widget because otherwise the listwidget gains focus // which causes it to select the first item in it, which in turn triggers the signal // and so the profile view gets shown even though the user hasn't selected anything // and so we get to be less fancy, defeating the point of the exercise // [on linux; other OS's not checked] m_view->hide(); this->setFocus(); ui->setupUi(this); ui->horizontalLayout->addWidget(m_view); ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Load")); connect(ui->listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(viewProfile(int))); connect(ui->new_toolButton, SIGNAL(released()), this, SLOT(newProfile())); disconnect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(ui->buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(loadSelectedProfile())); connect(ui->buttonBox->button(QDialogButtonBox::Save), SIGNAL(clicked()), m_view, SLOT(updateProfile())); loadProfiles(); } ProfilesDialog::~ProfilesDialog() { delete ui; } void ProfilesDialog::loadProfiles() { ui->listWidget->clear(); for(QString name : qApp->profiles()) { QListWidgetItem *item = new QListWidgetItem(qApp->profile(name)->name(), ui->listWidget); item->setData(Qt::UserRole, name); } } void ProfilesDialog::newProfile() { bool ok; QString name = QInputDialog::getText(this, tr("Profile Name"), tr("Profile Name:"), QLineEdit::Normal, tr("Default"), &ok); if(ok) { qApp->profile(name); loadProfiles(); } } void ProfilesDialog::loadSelectedProfile() { m_window->setProfile(qApp->profile(ui->listWidget->currentItem()->data(Qt::UserRole).toString())); } void ProfilesDialog::viewProfile(int index) { m_view->setProfile(qApp->profile(ui->listWidget->item(index)->data(Qt::UserRole).toString())); m_view->show(); }