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

0001 /*
0002     SPDX-FileCopyrightText: 2001-2005, 2009 Otto Bruggeman <bruggie@gmail.com>
0003     SPDX-FileCopyrightText: 2001-2003 John Firebaugh <jfirebaugh@kde.org>
0004     SPDX-FileCopyrightText: 2007 Kevin Kofler <kevin.kofler@chello.at>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "kompareurldialog.h"
0010 #include <QShowEvent>
0011 
0012 #include <QGroupBox>
0013 
0014 #include <KLocalizedString>
0015 #include <KMessageBox>
0016 #include <KSharedConfig>
0017 #include <KUrlComboBox>
0018 #include <KUrlRequester>
0019 
0020 #include <KompareDiff2/DiffSettings>
0021 
0022 #include <kompareshelldebug.h>
0023 #include "diffpage.h"
0024 #include "filespage.h"
0025 #include "filessettings.h"
0026 #include "viewpage.h"
0027 #include "viewsettings.h"
0028 
0029 
0030 KompareURLDialog::KompareURLDialog(QWidget* parent)
0031     : KPageDialog(parent)
0032     , m_diffSettings(new KompareDiff2::DiffSettings())
0033 {
0034     setFaceType(List);
0035     KSharedConfig::Ptr cfg = KSharedConfig::openConfig();
0036 
0037     m_filesPage = new FilesPage();
0038     KPageWidgetItem* filesItem = addPage(m_filesPage, i18nc("@title:tab", "Files"));
0039     filesItem->setIcon(QIcon::fromTheme(QStringLiteral("text-plain")));
0040     filesItem->setHeader(i18n("Here you can enter the files you want to compare."));
0041     m_filesSettings = new FilesSettings(this);
0042     m_filesSettings->loadSettings(cfg.data());
0043     m_filesPage->setSettings(m_filesSettings);
0044 
0045     m_diffPage = new DiffPage();
0046     KPageWidgetItem* diffItem = addPage(m_diffPage, i18nc("@title:tab", "Diff"));
0047     diffItem->setIcon(QIcon::fromTheme(QStringLiteral("text-x-patch")));
0048     diffItem->setHeader(i18n("Here you can change the options for comparing the files."));
0049     m_diffSettings->loadSettings(cfg.data());
0050     m_diffPage->setSettings(m_diffSettings.get());
0051 
0052     m_viewPage = new ViewPage();
0053     KPageWidgetItem* viewItem = addPage(m_viewPage, i18nc("@title:tab", "Appearance"));
0054     viewItem->setIcon(QIcon::fromTheme(QStringLiteral("preferences-desktop-theme")));
0055     viewItem->setHeader(i18n("Here you can change the options for the view."));
0056     m_viewSettings = new ViewSettings(this);
0057     m_viewSettings->loadSettings(cfg.data());
0058     m_viewPage->setSettings(m_viewSettings);
0059 
0060     adjustSize();
0061 
0062     connect(m_filesPage->firstURLRequester(), &KUrlRequester::textChanged,
0063             this, &KompareURLDialog::slotEnableOk);
0064     connect(m_filesPage->secondURLRequester(), &KUrlRequester::textChanged,
0065             this, &KompareURLDialog::slotEnableOk);
0066     connect(m_filesPage, &FilesPage::urlChanged,
0067             this, &KompareURLDialog::slotEnableOk);
0068 }
0069 
0070 KompareURLDialog::~KompareURLDialog()
0071 {
0072 }
0073 
0074 void KompareURLDialog::showEvent(QShowEvent* event)
0075 {
0076     if (!event->spontaneous())
0077     {
0078         slotEnableOk();
0079     }
0080 }
0081 
0082 void KompareURLDialog::reject()
0083 {
0084     m_filesPage->restore();
0085     m_diffPage->restore();
0086     m_viewPage->restore();
0087 
0088     QDialog::reject();
0089 }
0090 
0091 void KompareURLDialog::accept()
0092 {
0093     // BUG: 124121 File with filenames to be excluded does not exist so diff complains and no diffs are generated
0094     qCDebug(KOMPARESHELL) << "Test to see if the file is an actual file that is given in the file with filenames to exclude field" ;
0095     if (m_diffPage->m_excludeFileNameGroupBox->isChecked())
0096     {
0097         qCDebug(KOMPARESHELL) << "Ok the checkbox is active..." ;
0098         if (QFileInfo(m_diffPage->m_excludeFileURLComboBox->currentText()).isDir())
0099         {
0100             qCDebug(KOMPARESHELL) << "Don't enter directory names where filenames are expected..." ;
0101             KMessageBox::error(this, i18n("File used for excluding files cannot be found, please specify another file."));
0102             reject();
0103             return;
0104         }
0105     }
0106     // Room for more checks for invalid input
0107 
0108     m_filesPage->setURLsInComboBoxes();
0109 
0110     KSharedConfig::Ptr cfg = KSharedConfig::openConfig();
0111 
0112     m_filesPage->apply();
0113     m_diffPage->apply();
0114     m_viewPage->apply();
0115 
0116     m_filesSettings->saveSettings(cfg.data());
0117     m_diffSettings->saveSettings(cfg.data());
0118     m_viewSettings->saveSettings(cfg.data());
0119 
0120     cfg->sync();
0121 
0122     QDialog::accept();
0123 }
0124 
0125 void KompareURLDialog::slotEnableOk()
0126 {
0127     button(QDialogButtonBox::Ok)->setEnabled(!m_filesPage->firstURLRequester()->url().isEmpty() &&
0128             !m_filesPage->secondURLRequester()->url().isEmpty());
0129 }
0130 
0131 /**
0132  * Returns the first URL, which was entered.
0133  * @return first URL
0134  */
0135 QUrl KompareURLDialog::getFirstURL() const
0136 {
0137     return m_filesPage->firstURLRequester()->url();
0138 }
0139 
0140 /**
0141  * Returns the second URL, which was entered.
0142  * @return second URL
0143  */
0144 QUrl KompareURLDialog::getSecondURL() const
0145 {
0146     return m_filesPage->secondURLRequester()->url();
0147 }
0148 
0149 /**
0150  * Returns the encoding.
0151  * @return encoding
0152  */
0153 QString KompareURLDialog::encoding() const
0154 {
0155     return m_filesPage->encoding();
0156 }
0157 
0158 void KompareURLDialog::setFirstGroupBoxTitle(const QString& title)
0159 {
0160     m_filesPage->setFirstGroupBoxTitle(title);
0161 }
0162 
0163 void KompareURLDialog::setSecondGroupBoxTitle(const QString& title)
0164 {
0165     m_filesPage->setSecondGroupBoxTitle(title);
0166 }
0167 
0168 void KompareURLDialog::setGroup(const QString& groupName)
0169 {
0170     m_filesSettings->setGroup(groupName);
0171     m_filesSettings->loadSettings(KSharedConfig::openConfig().data());
0172     m_filesPage->setSettings(m_filesSettings);
0173 }
0174 
0175 void KompareURLDialog::setFirstURLRequesterMode(unsigned int mode)
0176 {
0177     m_filesPage->setFirstURLRequesterMode(mode);
0178 }
0179 
0180 void KompareURLDialog::setSecondURLRequesterMode(unsigned int mode)
0181 {
0182     m_filesPage->setSecondURLRequesterMode(mode);
0183 }
0184 
0185 #include "moc_kompareurldialog.cpp"