File indexing completed on 2024-04-28 05:40:48

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"