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"