File indexing completed on 2024-05-12 16:37:19
0001 /* This file is part of the KDE project 0002 * Copyright (C) 2019 Dag Andersen <danders@get2net.dk> 0003 * 0004 * This library is free software; you can redistribute it and/or 0005 * modify it under the terms of the GNU Library General Public 0006 * License as published by the Free Software Foundation; either 0007 * version 2 of the License, or (at your option) any later version. 0008 * 0009 * This library is distributed in the hope that it will be useful, 0010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0012 * Library General Public License for more details. 0013 * 0014 * You should have received a copy of the GNU Library General Public License 0015 * along with this library; see the file COPYING.LIB. If not, write to 0016 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 0017 * Boston, MA 02110-1301, USA. 0018 */ 0019 0020 // clazy:excludeall=qstring-arg 0021 #include "ConfigTaskModulesPanel.h" 0022 0023 #include "calligraplansettings.h" 0024 0025 #include <QFileDialog> 0026 #include <QDebug> 0027 0028 using namespace KPlato; 0029 0030 ConfigTaskModulesPanel::ConfigTaskModulesPanel(QWidget *parent) 0031 { 0032 setObjectName("ConfigWidget"); 0033 ui.setupUi(this); 0034 model.setStringList(KPlatoSettings::taskModulePaths()); 0035 ui.taskModulesView->setModel(&model); 0036 0037 connect(ui.insertModule, &QToolButton::clicked, this, &ConfigTaskModulesPanel::slotInsertClicked); 0038 connect(ui.removeModule, &QToolButton::clicked, this, &ConfigTaskModulesPanel::slotRemoveClicked); 0039 0040 connect(&model, &QStringListModel::dataChanged, this, &ConfigTaskModulesPanel::settingsChanged); 0041 } 0042 0043 bool ConfigTaskModulesPanel::hasChanged() const 0044 { 0045 bool changed = KPlatoSettings::taskModulePaths() != model.stringList(); 0046 return changed; 0047 } 0048 0049 void ConfigTaskModulesPanel::updateSettings() 0050 { 0051 KPlatoSettings::setTaskModulePaths(model.stringList()); 0052 } 0053 0054 void ConfigTaskModulesPanel::updateWidgets() 0055 { 0056 model.setStringList(KPlatoSettings::taskModulePaths()); 0057 } 0058 0059 void ConfigTaskModulesPanel::slotInsertClicked() 0060 { 0061 QString dirName = QFileDialog::getExistingDirectory(this, i18n("Task Modules Path")); 0062 if (!dirName.isEmpty()) { 0063 model.setStringList(model.stringList() << dirName); 0064 } 0065 emit settingsChanged(); 0066 } 0067 0068 void ConfigTaskModulesPanel::slotRemoveClicked() 0069 { 0070 QList<QModelIndex> lst = ui.taskModulesView->selectionModel()->selectedRows(); 0071 for (const QModelIndex &idx : lst) { 0072 model.removeRow(idx.row(), idx.parent()); 0073 } 0074 emit settingsChanged(); 0075 } 0076