File indexing completed on 2024-04-14 05:34:15
0001 /* 0002 SPDX-FileCopyrightText: 2011 Vishesh Yadav <vishesh3y@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "pulldialog.h" 0008 #include "hgwrapper.h" 0009 #include "hgconfig.h" 0010 #include "pathselector.h" 0011 #include "fileviewhgpluginsettings.h" 0012 0013 #include <QStringList> 0014 #include <QTextCodec> 0015 #include <QHeaderView> 0016 #include <QCheckBox> 0017 #include <QGroupBox> 0018 #include <QTableWidget> 0019 #include <QString> 0020 #include <KTextEdit> 0021 #include <KLocalizedString> 0022 #include <KMessageBox> 0023 0024 0025 HgPullDialog::HgPullDialog(QWidget *parent): 0026 HgSyncBaseDialog(HgSyncBaseDialog::PullDialog, parent) 0027 { 0028 // dialog properties 0029 this->setWindowTitle(xi18nc("@title:window", 0030 "<application>Hg</application> Pull Repository")); 0031 setup(); 0032 0033 } 0034 0035 void HgPullDialog::setOptions() 0036 { 0037 m_optUpdate = new QCheckBox(xi18nc("@label:checkbox", 0038 "Update to new branch head if changesets were pulled")); 0039 m_optInsecure = new QCheckBox(xi18nc("@label:checkbox", 0040 "Do not verify server certificate")); 0041 m_optForce = new QCheckBox(xi18nc("@label:checkbox", 0042 "Force Pull")); 0043 m_optionGroup = new QGroupBox(xi18nc("@label:group", 0044 "Options")); 0045 0046 m_options << m_optForce; 0047 m_options << m_optUpdate; 0048 m_options << m_optInsecure; 0049 } 0050 0051 void HgPullDialog::createChangesGroup() 0052 { 0053 m_changesGroup = new QGroupBox(xi18nc("@label:group", 0054 "Incoming Changes")); 0055 QHBoxLayout *hbox = new QHBoxLayout; 0056 m_changesList = new QTableWidget; 0057 0058 m_changesList->setColumnCount(4); 0059 m_changesList->verticalHeader()->hide(); 0060 m_changesList->horizontalHeader()->hide(); 0061 m_changesList->setSelectionBehavior(QAbstractItemView::SelectRows); 0062 m_changesList->setEditTriggers(QAbstractItemView::NoEditTriggers); 0063 0064 hbox->addWidget(m_changesList); 0065 0066 m_changesGroup->setLayout(hbox); 0067 m_changesGroup->setVisible(false); 0068 0069 connect(this, &HgSyncBaseDialog::changeListAvailable, 0070 this, &HgPullDialog::slotUpdateChangesGeometry); 0071 } 0072 0073 void HgPullDialog::getHgChangesArguments(QStringList &args) 0074 { 0075 args << QStringLiteral("incoming"); 0076 args << m_pathSelector->remote(); 0077 args << QStringLiteral("--config"); 0078 args << QStringLiteral("ui.verbose=False"); 0079 args << QStringLiteral("--template"); 0080 args << QStringLiteral("Commit: {rev}:{node|short} " 0081 "{author} " 0082 "{date|isodate} {desc|firstline}\n"); 0083 } 0084 0085 void HgPullDialog::parseUpdateChanges(const QString &input) 0086 { 0087 QStringList list = input.split(QLatin1String(" "), Qt::SkipEmptyParts); 0088 QTableWidgetItem *author = new QTableWidgetItem; 0089 QTableWidgetItem *changeset = new QTableWidgetItem; 0090 QTableWidgetItem *date = new QTableWidgetItem; 0091 QTableWidgetItem *summary = new QTableWidgetItem; 0092 0093 author->setForeground(Qt::darkRed); 0094 changeset->setForeground(Qt::red); 0095 date->setForeground(Qt::blue); 0096 0097 author->setText(list.takeFirst()); 0098 changeset->setText(list.takeFirst()); 0099 date->setText(list.takeFirst()); 0100 summary->setText(list.takeFirst()); 0101 0102 int rowCount = m_changesList->rowCount(); 0103 m_changesList->insertRow(rowCount); 0104 m_changesList->setItem(rowCount, 0, author); 0105 m_changesList->setItem(rowCount, 1, changeset); 0106 m_changesList->setItem(rowCount, 2, date); 0107 m_changesList->setItem(rowCount, 3, summary); 0108 } 0109 0110 void HgPullDialog::appendOptionArguments(QStringList &args) 0111 { 0112 if (m_optForce->isChecked()) { 0113 args << QStringLiteral("--force"); 0114 } 0115 if (m_optUpdate->isChecked()) { 0116 args << QStringLiteral("--update"); 0117 } 0118 if (m_optInsecure->isChecked()) { 0119 args << QStringLiteral("--insecure"); 0120 } 0121 } 0122 0123 void HgPullDialog::slotUpdateChangesGeometry() 0124 { 0125 m_changesList->resizeColumnsToContents(); 0126 m_changesList->resizeRowsToContents(); 0127 m_changesList->horizontalHeader()->setStretchLastSection(true); 0128 } 0129 0130 void HgPullDialog::readBigSize() 0131 { 0132 FileViewHgPluginSettings *settings = FileViewHgPluginSettings::self(); 0133 m_bigSize = QSize(settings->pullDialogBigWidth(), settings->pushDialogBigHeight()); 0134 } 0135 0136 void HgPullDialog::writeBigSize() 0137 { 0138 qDebug() << "Saving geometry"; 0139 FileViewHgPluginSettings *settings = FileViewHgPluginSettings::self(); 0140 settings->setPullDialogBigWidth(m_bigSize.width()); 0141 settings->setPullDialogBigHeight(m_bigSize.height()); 0142 settings->save(); 0143 } 0144 0145 void HgPullDialog::noChangesMessage() 0146 { 0147 KMessageBox::information(this, xi18nc("@message:info", 0148 "No incoming changes!")); 0149 } 0150 0151 0152 0153 #include "moc_pulldialog.cpp"