File indexing completed on 2024-05-05 05:45:47

0001 /*
0002     SPDX-FileCopyrightText: 2001-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 "kompareprefdlg.h"
0010 
0011 #include <QTabWidget>
0012 #include <QPushButton>
0013 
0014 #include <KLocalizedString>
0015 #include <KHelpClient>
0016 #include <KStandardGuiItem>
0017 
0018 #include "diffpage.h"
0019 #include "viewpage.h"
0020 
0021 // implementation
0022 
0023 KomparePrefDlg::KomparePrefDlg(ViewSettings* viewSets, KompareDiff2::DiffSettings* diffSets)
0024     : KPageDialog(nullptr)
0025 {
0026     setFaceType(KPageDialog::List);
0027     setWindowTitle(i18nc("@title:window", "Preferences"));
0028     setStandardButtons(QDialogButtonBox::Help | QDialogButtonBox::Reset | QDialogButtonBox::Ok | QDialogButtonBox::Apply | QDialogButtonBox::Cancel);
0029     setModal(true);
0030 
0031     KGuiItem::assign(button(QDialogButtonBox::Reset), KStandardGuiItem::defaults());
0032 
0033     // ok i need some stuff in that pref dlg...
0034     //setIconListAllVisible(true);
0035 
0036     m_viewPage = new ViewPage();
0037     KPageWidgetItem* item = addPage(m_viewPage, i18nc("@title:tab", "View"));
0038     item->setIcon(QIcon::fromTheme(QStringLiteral("preferences-desktop-theme")));
0039     item->setHeader(i18nc("@title", "View Settings"));
0040     m_viewPage->setSettings(viewSets);
0041 
0042     m_diffPage = new DiffPage();
0043     item = addPage(m_diffPage, i18nc("@title:tab", "Diff"));
0044     item->setIcon(QIcon::fromTheme(QStringLiteral("text-x-patch")));
0045     item->setHeader(i18nc("@title", "Diff Settings"));
0046     m_diffPage->setSettings(diffSets);
0047 
0048 //     frame = addVBoxPage(i18n(""), i18n(""), UserIcon(""));
0049 
0050     connect(button(QDialogButtonBox::Reset), &QPushButton::clicked, this, &KomparePrefDlg::slotDefault);
0051     connect(button(QDialogButtonBox::Help), &QPushButton::clicked, this, &KomparePrefDlg::slotHelp);
0052     connect(button(QDialogButtonBox::Apply), &QPushButton::clicked, this, &KomparePrefDlg::slotApply);
0053     connect(button(QDialogButtonBox::Ok), &QPushButton::clicked, this, &KomparePrefDlg::slotOk);
0054     connect(button(QDialogButtonBox::Cancel), &QPushButton::clicked, this, &KomparePrefDlg::slotCancel);
0055 
0056     adjustSize();
0057 }
0058 
0059 KomparePrefDlg::~KomparePrefDlg()
0060 {
0061 
0062 }
0063 
0064 /** No descriptions */
0065 void KomparePrefDlg::slotDefault()
0066 {
0067     // restore all defaults in the options...
0068     m_viewPage->setDefaults();
0069     m_diffPage->setDefaults();
0070 }
0071 
0072 /** No descriptions */
0073 void KomparePrefDlg::slotHelp()
0074 {
0075     // figure out the current active page
0076     QWidget* currentpage = currentPage()->widget();
0077     if (dynamic_cast<ViewPage*>(currentpage))
0078     {
0079         // figure out the active tab
0080         int currentTab = static_cast<ViewPage*>(currentpage)->m_tabWidget->currentIndex();
0081         switch (currentTab)
0082         {
0083         case 0:
0084             KHelpClient::invokeHelp(QStringLiteral("appearance"));
0085             break;
0086         case 1:
0087             KHelpClient::invokeHelp(QStringLiteral("fonts"));
0088             break;
0089         default:
0090             KHelpClient::invokeHelp(QStringLiteral("view-settings"));
0091         }
0092     }
0093     else if (dynamic_cast<DiffPage*>(currentpage))
0094     {
0095         // figure out the active tab
0096         int currentTab = static_cast<DiffPage*>(currentpage)->m_tabWidget->currentIndex();
0097         switch (currentTab)
0098         {
0099         case 0:
0100             KHelpClient::invokeHelp(QStringLiteral("diff"));
0101             break;
0102         case 1:
0103             KHelpClient::invokeHelp(QStringLiteral("diff-format"));
0104             break;
0105         case 2:
0106             KHelpClient::invokeHelp(QStringLiteral("options"));
0107             break;
0108         case 3:
0109             KHelpClient::invokeHelp(QStringLiteral("exclude"));
0110             break;
0111         default:
0112             KHelpClient::invokeHelp(QStringLiteral("diff-settings"));
0113         }
0114     }
0115     else // Fallback since we had not added the code for the page/tab or forgotten about it
0116         KHelpClient::invokeHelp(QStringLiteral("configure-preferences"));
0117 }
0118 
0119 /** No descriptions */
0120 void KomparePrefDlg::slotApply()
0121 {
0122     // well apply the settings that are currently selected
0123     m_viewPage->apply();
0124     m_diffPage->apply();
0125 
0126     Q_EMIT configChanged();
0127 }
0128 
0129 /** No descriptions */
0130 void KomparePrefDlg::slotOk()
0131 {
0132     // Apply the settings that are currently selected
0133     m_viewPage->apply();
0134     m_diffPage->apply();
0135 
0136     //accept();
0137 }
0138 
0139 /** No descriptions */
0140 void KomparePrefDlg::slotCancel()
0141 {
0142     // discard the current settings and use the present ones
0143     m_viewPage->restore();
0144     m_diffPage->restore();
0145 
0146     //reject();
0147 }
0148 
0149 #include "moc_kompareprefdlg.cpp"