File indexing completed on 2024-04-14 05:34:14

0001 /*
0002     SPDX-FileCopyrightText: 2011 Vishesh Yadav <vishesh3y@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "createdialog.h"
0008 #include "fileviewhgpluginsettings.h"
0009 
0010 #include <QHBoxLayout>
0011 #include <QProcess>
0012 #include <QLabel>
0013 #include <KLocalizedString>
0014 #include <QLineEdit>
0015 #include <KMessageBox>
0016 
0017 HgCreateDialog::HgCreateDialog(const QString &directory, QWidget *parent):
0018     DialogBase(QDialogButtonBox::Ok | QDialogButtonBox::Cancel ,parent),
0019     m_workingDirectory(directory)
0020 {
0021     // dialog properties
0022     this->setWindowTitle(xi18nc("@title:window",
0023                 "<application>Hg</application> Initialize Repository"));
0024     okButton()->setText(xi18nc("@action:button", "Initialize Repository"));
0025 
0026 
0027     //////////////
0028     // Setup UI //
0029     //////////////
0030     
0031     m_directory = new QLabel(QLatin1String("<b>") + m_workingDirectory + QLatin1String("</b>"));
0032     m_repoNameEdit = new QLineEdit;
0033 
0034     QHBoxLayout *mainLayout = new QHBoxLayout;
0035     mainLayout->addWidget(m_directory);
0036     mainLayout->addWidget(m_repoNameEdit);
0037 
0038     layout()->insertLayout(0, mainLayout);
0039     m_repoNameEdit->setFocus();
0040 }
0041 
0042 void HgCreateDialog::done(int r)
0043 {
0044     if (r == QDialog::Accepted) {
0045         QProcess process;
0046         QStringList args;
0047         args << QLatin1String("init");
0048         if (!m_repoNameEdit->text().isEmpty()) {
0049             args << m_repoNameEdit->text();
0050         }
0051         process.setWorkingDirectory(m_workingDirectory);
0052         process.start(QLatin1String("hg"), args);
0053         process.waitForFinished();
0054         
0055         if (process.exitCode() == 0 && process.exitStatus() == QProcess::NormalExit) {
0056             QDialog::done(r);
0057         }
0058         else {
0059             KMessageBox::error(this, xi18nc("error message", "Error creating repository!"));
0060         }
0061     }
0062     else {
0063         QDialog::done(r);
0064     }
0065 }
0066 
0067 
0068 
0069 #include "moc_createdialog.cpp"