File indexing completed on 2024-05-12 16:01:26

0001 /*
0002  *  SPDX-FileCopyrightText: 2007 Cyrille Berger <cberger@cberger.net>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "kis_bookmarked_configurations_editor.h"
0008 #include "ui_wdgbookmarkedconfigurationseditor.h"
0009 
0010 #include "kis_bookmarked_configurations_model.h"
0011 
0012 struct KisBookmarkedConfigurationsEditor::Private {
0013     Ui_WdgBookmarkedConfigurationsEditor editorUi;
0014     KisBookmarkedConfigurationsModel* model;
0015     KisSerializableConfigurationSP currentConfig;
0016 };
0017 
0018 
0019 KisBookmarkedConfigurationsEditor::KisBookmarkedConfigurationsEditor(QWidget* parent, KisBookmarkedConfigurationsModel* model, const KisSerializableConfigurationSP currentConfig) : QDialog(parent), d(new Private)
0020 {
0021     d->editorUi.setupUi(this);
0022     d->model = model;
0023     d->currentConfig = currentConfig;
0024     d->editorUi.listConfigurations->setModel(d->model);
0025     connect(d->editorUi.pushButtonClose, SIGNAL(pressed()), SLOT(accept()));
0026 
0027     connect(d->editorUi.listConfigurations->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
0028             this, SLOT(currentConfigChanged(QItemSelection,QItemSelection)));
0029     currentConfigChanged(d->editorUi.listConfigurations->selectionModel()->selection(),
0030                          d->editorUi.listConfigurations->selectionModel()->selection());
0031 
0032     connect(d->editorUi.pushButtonDelete, SIGNAL(pressed()), SLOT(deleteConfiguration()));
0033     connect(d->editorUi.pushButtonBookmarkCurrent, SIGNAL(pressed()), SLOT(addCurrentConfiguration()));
0034 
0035     if (!d->currentConfig) {
0036         d->editorUi.pushButtonBookmarkCurrent->setEnabled(false);
0037     }
0038 }
0039 
0040 KisBookmarkedConfigurationsEditor::~KisBookmarkedConfigurationsEditor()
0041 {
0042     delete d;
0043 }
0044 
0045 void KisBookmarkedConfigurationsEditor::currentConfigChanged(const QItemSelection& selected, const QItemSelection&)
0046 {
0047     if (d->model) {
0048         d->editorUi.pushButtonDelete->setEnabled(!(selected.indexes().isEmpty()) ?
0049                 d->model->isIndexDeletable(selected.indexes().first()) :
0050                 false);
0051     }
0052 }
0053 
0054 void KisBookmarkedConfigurationsEditor::addCurrentConfiguration()
0055 {
0056     if (d->model) {
0057         d->model->newConfiguration(ki18n("New configuration %1"), d->currentConfig);
0058     }
0059 }
0060 
0061 void KisBookmarkedConfigurationsEditor::deleteConfiguration()
0062 {
0063     if (d->model) {
0064         d->model->deleteIndex(d->editorUi.listConfigurations->currentIndex());
0065     }
0066 }
0067