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"