File indexing completed on 2024-05-12 09:46:21
0001 /* 0002 SPDX-FileCopyrightText: 2011 Vishesh Yadav <vishesh3y@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "pluginsettings.h" 0008 #include "hgconfig.h" 0009 #include <QDir> 0010 #include <QLabel> 0011 #include <QGridLayout> 0012 #include <QPushButton> 0013 #include <QLineEdit> 0014 #include <QFileDialog> 0015 #include <KConfig> 0016 #include <KConfigGroup> 0017 #include <KLocalizedString> 0018 0019 HgPluginSettingsWidget::HgPluginSettingsWidget(QWidget *parent) : 0020 QWidget(parent), 0021 m_config(nullptr) 0022 { 0023 setupUI(); 0024 loadConfig(); 0025 0026 connect(m_diffBrowseButton, SIGNAL(clicked()), 0027 this, SLOT(browse_diff())); 0028 } 0029 0030 HgPluginSettingsWidget::~HgPluginSettingsWidget() 0031 { 0032 delete m_config; 0033 } 0034 0035 void HgPluginSettingsWidget::saveConfig() 0036 { 0037 KConfigGroup group(m_config, QStringLiteral("diff")); 0038 group.writeEntry(QLatin1String("exec"), m_diffProg->text()); 0039 group.config()->sync(); 0040 } 0041 0042 void HgPluginSettingsWidget::loadConfig() 0043 { 0044 QString oldPath = QDir::homePath() + QLatin1String("/.dolphin-hg"); 0045 if (QFile::exists(oldPath)) { 0046 // Copy old config file into user .config directory 0047 QFile::copy(oldPath, 0048 QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) 0049 + QLatin1String("/dolphin-hg")); 0050 QFile::remove(oldPath); 0051 } 0052 m_config = new KConfig(QLatin1String("dolphin-hg"), KConfig::SimpleConfig, 0053 QStandardPaths::GenericConfigLocation); 0054 0055 KConfigGroup group(m_config, QStringLiteral("diff")); 0056 QString diffExec = group.readEntry(QLatin1String("exec"), QString()).trimmed(); 0057 m_diffProg->setText(diffExec); 0058 } 0059 0060 void HgPluginSettingsWidget::setupUI() 0061 { 0062 m_diffProg = new QLineEdit; 0063 m_diffBrowseButton = new QPushButton(xi18nc("@label", "Browse")); 0064 QLabel *diffProgLabel = new QLabel(xi18nc("@label", 0065 "Visual Diff Executable")); 0066 0067 QGridLayout *layout = new QGridLayout; 0068 layout->addWidget(diffProgLabel, 0, 0); 0069 layout->addWidget(m_diffProg, 0, 1); 0070 layout->addWidget(m_diffBrowseButton, 0, 2); 0071 layout->setRowStretch(layout->rowCount(), 1); 0072 0073 setLayout(layout); 0074 } 0075 0076 void HgPluginSettingsWidget::browse_diff() 0077 { 0078 QString path = QFileDialog::getOpenFileName(); 0079 if (path.isEmpty()) { 0080 return; 0081 } 0082 0083 m_diffProg->setText(path); 0084 } 0085 0086 0087 0088 #include "moc_pluginsettings.cpp"