File indexing completed on 2024-05-05 05:00:08
0001 /* 0002 "Misc Options" Tab for KFM configuration 0003 0004 SPDX-FileCopyrightText: 1998 Sven Radej 0005 SPDX-FileCopyrightText: 1998 David Faure 0006 SPDX-FileCopyrightText: 2001 Waldo Bastian <bastian@kde.org> 0007 */ 0008 0009 // Own 0010 #include "htmlopts.h" 0011 0012 // Qt 0013 #include <QGroupBox> 0014 #include <QFormLayout> 0015 #include <QVBoxLayout> 0016 #include <QPushButton> 0017 #include <QDBusMessage> 0018 #include <QDBusConnection> 0019 #include <QSpinBox> 0020 0021 // KDE 0022 #include <KLocalizedString> 0023 #include <KConfigGroup> 0024 #include <KPluginFactory> 0025 #include <KSharedConfig> 0026 0027 //----------------------------------------------------------------------------- 0028 0029 KMiscHTMLOptions::KMiscHTMLOptions(QObject *parent, const KPluginMetaData &md, const QVariantList &) 0030 : KCModule(parent, md), m_groupname(QStringLiteral("HTML Settings")) 0031 { 0032 m_pConfig = KSharedConfig::openConfig(QStringLiteral("konquerorrc"), KConfig::NoGlobals); 0033 QVBoxLayout *lay = new QVBoxLayout(widget()); 0034 0035 QGroupBox *bgBookmarks = new QGroupBox(i18n("Boo&kmarks")); 0036 QVBoxLayout *laygroup1 = new QVBoxLayout; 0037 0038 m_pAdvancedAddBookmarkCheckBox = new QCheckBox(i18n("Ask for name and folder when adding bookmarks")); 0039 laygroup1->addWidget(m_pAdvancedAddBookmarkCheckBox); 0040 0041 m_pAdvancedAddBookmarkCheckBox->setToolTip(i18n("If this box is checked, Konqueror will allow you to" 0042 " change the title of the bookmark and choose a folder" 0043 " in which to store it when you add a new bookmark.")); 0044 connect(m_pAdvancedAddBookmarkCheckBox, QOverload<bool>::of(&QAbstractButton::toggled), this, &KMiscHTMLOptions::markAsChanged); 0045 bgBookmarks->setLayout(laygroup1); 0046 0047 m_pOnlyMarkedBookmarksCheckBox = new QCheckBox(i18n("Show only marked bookmarks in bookmark toolbar"), bgBookmarks); 0048 laygroup1->addWidget(m_pOnlyMarkedBookmarksCheckBox); 0049 m_pOnlyMarkedBookmarksCheckBox->setToolTip(i18n("If this box is checked, Konqueror will show only those" 0050 " bookmarks in the bookmark toolbar which you have marked to do so in the bookmark editor.")); 0051 connect(m_pOnlyMarkedBookmarksCheckBox, QOverload<bool>::of(&QAbstractButton::toggled), this, &KMiscHTMLOptions::markAsChanged); 0052 0053 lay->addWidget(bgBookmarks); 0054 0055 // Form completion 0056 m_pFormCompletionCheckBox = new QGroupBox(i18n("Form Com&pletion"), widget()); 0057 m_pFormCompletionCheckBox->setCheckable(true); 0058 QFormLayout *laygroup2 = new QFormLayout(m_pFormCompletionCheckBox); 0059 0060 m_pFormCompletionCheckBox->setToolTip(i18n("If this box is checked, Konqueror will remember" 0061 " the data you enter in web forms and suggest it in similar fields for all forms.")); 0062 connect(m_pFormCompletionCheckBox, &QGroupBox::toggled, this, &KMiscHTMLOptions::markAsChanged); 0063 0064 m_pMaxFormCompletionItems = new QSpinBox(widget()); 0065 m_pMaxFormCompletionItems->setRange(0, 100); 0066 laygroup2->addRow(i18n("&Maximum completions:"), m_pMaxFormCompletionItems); 0067 m_pMaxFormCompletionItems->setToolTip( 0068 i18n("Here you can select how many values Konqueror will remember for a form field.")); 0069 connect(m_pMaxFormCompletionItems, QOverload<int>::of(&QSpinBox::valueChanged), this, &KMiscHTMLOptions::markAsChanged); 0070 connect(m_pFormCompletionCheckBox, &QGroupBox::toggled, m_pMaxFormCompletionItems, &QWidget::setEnabled); 0071 0072 lay->addWidget(m_pFormCompletionCheckBox); 0073 0074 // Mouse behavior 0075 QGroupBox *bgMouse = new QGroupBox(i18n("Mouse Beha&vior")); 0076 QVBoxLayout *laygroup3 = new QVBoxLayout(bgMouse); 0077 0078 m_cbCursor = new QCheckBox(i18n("Chan&ge cursor over links")); 0079 laygroup3->addWidget(m_cbCursor); 0080 m_cbCursor->setToolTip(i18n("If this option is set, the shape of the cursor will change " 0081 "(usually to a hand) if it is moved over a hyperlink.")); 0082 connect(m_cbCursor, QOverload<bool>::of(&QAbstractButton::toggled), this, &KMiscHTMLOptions::markAsChanged); 0083 0084 m_pOpenMiddleClick = new QCheckBox(i18n("M&iddle click opens URL in selection"), bgMouse); 0085 laygroup3->addWidget(m_pOpenMiddleClick); 0086 m_pOpenMiddleClick->setToolTip(i18n( 0087 "If this box is checked, you can open the URL in the selection by middle clicking on a " 0088 "Konqueror view.")); 0089 connect(m_pOpenMiddleClick, QOverload<bool>::of(&QAbstractButton::toggled), this, &KMiscHTMLOptions::markAsChanged); 0090 0091 m_pBackRightClick = new QCheckBox(i18n("Right click goes &back in history"), bgMouse); 0092 laygroup3->addWidget(m_pBackRightClick); 0093 m_pBackRightClick->setToolTip(i18n( 0094 "If this box is checked, you can go back in history by right clicking on a Konqueror view. " 0095 "To access the context menu, press the right mouse button and move.")); 0096 connect(m_pBackRightClick, QOverload<bool>::of(&QAbstractButton::toggled), this, &KMiscHTMLOptions::markAsChanged); 0097 0098 lay->addWidget(bgMouse); 0099 0100 // Misc 0101 QGroupBox *bgMisc = new QGroupBox(i18nc("@title:group", "Miscellaneous")); 0102 QFormLayout *fl = new QFormLayout(bgMisc); 0103 0104 m_pAutoRedirectCheckBox = new QCheckBox(i18n("Allow automatic delayed &reloading/redirecting"), widget()); 0105 m_pAutoRedirectCheckBox->setToolTip(i18n("Some web pages request an automatic reload or redirection after" 0106 " a certain period of time. By unchecking this box Konqueror will ignore these requests.")); 0107 connect(m_pAutoRedirectCheckBox, QOverload<bool>::of(&QAbstractButton::toggled), this, &KMiscHTMLOptions::markAsChanged); 0108 fl->addRow(m_pAutoRedirectCheckBox); 0109 0110 // Checkbox to enable/disable Access Key activation through the Ctrl key. 0111 m_pAccessKeys = new QCheckBox(i18n("Enable Access Ke&y activation with Ctrl key"), widget()); 0112 m_pAccessKeys->setToolTip(i18n("Pressing the Ctrl key when viewing webpages activates Access Keys. Unchecking this box will disable this accessibility feature. (Konqueror needs to be restarted for this change to take effect.)")); 0113 connect(m_pAccessKeys, QOverload<bool>::of(&QAbstractButton::toggled), this, &KMiscHTMLOptions::markAsChanged); 0114 fl->addRow(m_pAccessKeys); 0115 0116 m_pDoNotTrack = new QCheckBox(i18n("Send the DNT header to tell web sites you do not want to be tracked"), widget()); 0117 m_pDoNotTrack->setToolTip(i18n("Check this box if you want to inform a web site that you do not want your web browsing habits tracked.")); 0118 connect(m_pDoNotTrack, QOverload<bool>::of(&QAbstractButton::toggled), this, &KMiscHTMLOptions::markAsChanged); 0119 fl->addRow(m_pDoNotTrack); 0120 0121 m_pOfferToSaveWebsitePassword = new QCheckBox(i18n("Offer to save website passwords"), widget()); 0122 m_pOfferToSaveWebsitePassword->setToolTip(i18n("Uncheck this box to prevent being prompted to save website passwords")); 0123 connect(m_pOfferToSaveWebsitePassword, QOverload<bool>::of(&QAbstractButton::toggled), this, &KMiscHTMLOptions::markAsChanged); 0124 fl->addRow(m_pOfferToSaveWebsitePassword); 0125 0126 m_pdfViewer = new QCheckBox(i18n("Display online PDF files using WebEngine")); 0127 m_pdfViewer->setToolTip(i18n("Uncheck this box to display online PDF files as configured in System Settings")); 0128 fl->addRow(m_pdfViewer); 0129 connect(m_pdfViewer, &QCheckBox::toggled, this, &KMiscHTMLOptions::markAsChanged); 0130 0131 lay->addWidget(bgMisc); 0132 lay->addStretch(5); 0133 0134 setNeedsSave(false); 0135 } 0136 0137 KMiscHTMLOptions::~KMiscHTMLOptions() 0138 { 0139 } 0140 0141 void KMiscHTMLOptions::load() 0142 { 0143 KSharedConfigPtr khtmlrcConfig = KSharedConfig::openConfig(QStringLiteral("khtmlrc"), KConfig::NoGlobals); 0144 0145 // Read the configuration from konquerorrc with khtmlrc as fall back. 0146 KConfigGroup cg(m_pConfig, "MainView Settings"); 0147 KConfigGroup cg2(khtmlrcConfig, "MainView Settings"); 0148 m_pOpenMiddleClick->setChecked(cg.readEntry("OpenMiddleClick", cg2.readEntry("OpenMiddleClick", true))); 0149 m_pBackRightClick->setChecked(cg.readEntry("BackRightClick", cg2.readEntry("BackRightClick", false))); 0150 0151 cg = KConfigGroup(m_pConfig, "HTML Settings"); 0152 cg2 = KConfigGroup(khtmlrcConfig, "HTML Settings"); 0153 m_cbCursor->setChecked(cg.readEntry("ChangeCursor", cg2.readEntry("ChangeCursor", true))); 0154 m_pAutoRedirectCheckBox->setChecked(cg.readEntry("AutoDelayedActions", true)); 0155 m_pFormCompletionCheckBox->setChecked(cg.readEntry("FormCompletion", true)); 0156 m_pMaxFormCompletionItems->setValue(cg.readEntry("MaxFormCompletionItems", 10)); 0157 m_pMaxFormCompletionItems->setEnabled(m_pFormCompletionCheckBox->isChecked()); 0158 m_pOfferToSaveWebsitePassword->setChecked(cg.readEntry("OfferToSaveWebsitePassword", true)); 0159 0160 m_pdfViewer->setChecked(cg.readEntry("InternalPdfViewer", false)); 0161 0162 cg2 = KConfigGroup(khtmlrcConfig, "Access Keys"); 0163 m_pAccessKeys->setChecked(cg2.readEntry("Enabled", true)); 0164 0165 cg = KConfigGroup(KSharedConfig::openConfig(QStringLiteral("kbookmarkrc"), KConfig::NoGlobals), "Bookmarks"); 0166 m_pAdvancedAddBookmarkCheckBox->setChecked(cg.readEntry("AdvancedAddBookmarkDialog", false)); 0167 m_pOnlyMarkedBookmarksCheckBox->setChecked(cg.readEntry("FilteredToolbar", false)); 0168 0169 cg = KConfigGroup(KSharedConfig::openConfig(QStringLiteral("kioslaverc"), KConfig::NoGlobals), QString()); 0170 m_pDoNotTrack->setChecked(cg.readEntry("DoNotTrack", false)); 0171 0172 KCModule::load(); 0173 } 0174 0175 void KMiscHTMLOptions::defaults() 0176 { 0177 bool old = m_pConfig->readDefaults(); 0178 m_pConfig->setReadDefaults(true); 0179 load(); 0180 m_pConfig->setReadDefaults(old); 0181 m_pAdvancedAddBookmarkCheckBox->setChecked(false); 0182 m_pOnlyMarkedBookmarksCheckBox->setChecked(false); 0183 m_pDoNotTrack->setChecked(false); 0184 m_pOfferToSaveWebsitePassword->setChecked(true); 0185 0186 m_pdfViewer->setChecked(false); 0187 0188 #if QT_VERSION_MAJOR > 5 0189 setRepresentsDefaults(true); 0190 #endif 0191 } 0192 0193 void KMiscHTMLOptions::save() 0194 { 0195 KConfigGroup cg(m_pConfig, "MainView Settings"); 0196 cg.writeEntry("OpenMiddleClick", m_pOpenMiddleClick->isChecked()); 0197 cg.writeEntry("BackRightClick", m_pBackRightClick->isChecked()); 0198 0199 cg = KConfigGroup(m_pConfig, "HTML Settings"); 0200 cg.writeEntry("ChangeCursor", m_cbCursor->isChecked()); 0201 cg.writeEntry("AutoDelayedActions", m_pAutoRedirectCheckBox->isChecked()); 0202 cg.writeEntry("FormCompletion", m_pFormCompletionCheckBox->isChecked()); 0203 cg.writeEntry("MaxFormCompletionItems", m_pMaxFormCompletionItems->value()); 0204 cg.writeEntry("OfferToSaveWebsitePassword", m_pOfferToSaveWebsitePassword->isChecked()); 0205 cg.writeEntry("InternalPdfViewer", m_pdfViewer->isChecked()); 0206 cg.sync(); 0207 0208 // Writes the value of m_pAccessKeys into khtmlrc to affect all applications using KHTML 0209 cg = KConfigGroup(KSharedConfig::openConfig(QStringLiteral("khtmlrc"), KConfig::NoGlobals), "Access Keys"); 0210 cg.writeEntry("Enabled", m_pAccessKeys->isChecked()); 0211 cg.sync(); 0212 0213 cg = KConfigGroup(KSharedConfig::openConfig(QStringLiteral("kbookmarkrc"), KConfig::NoGlobals), "Bookmarks"); 0214 cg.writeEntry("AdvancedAddBookmarkDialog", m_pAdvancedAddBookmarkCheckBox->isChecked()); 0215 cg.writeEntry("FilteredToolbar", m_pOnlyMarkedBookmarksCheckBox->isChecked()); 0216 cg.sync(); 0217 0218 cg = KConfigGroup(KSharedConfig::openConfig(QStringLiteral("kioslaverc"), KConfig::NoGlobals), QString()); 0219 cg.writeEntry("DoNotTrack", m_pDoNotTrack->isChecked()); 0220 cg.sync(); 0221 0222 // Send signal to all konqueror instances 0223 QDBusConnection sessionBus(QDBusConnection::sessionBus()); 0224 sessionBus.send(QDBusMessage::createSignal(QStringLiteral("/KonqMain"), QStringLiteral("org.kde.Konqueror.Main"), QStringLiteral("reparseConfiguration"))); 0225 sessionBus.send(QDBusMessage::createSignal(QStringLiteral("/KBookmarkManager/konqueror"), QStringLiteral("org.kde.KIO.KBookmarkManager"), QStringLiteral("bookmarkConfigChanged"))); 0226 sessionBus.send(QDBusMessage::createSignal(QStringLiteral("/KIO/Scheduler"), QStringLiteral("org.kde.KIO.Scheduler"), QStringLiteral("reparseSlaveConfiguration"))); 0227 0228 KCModule::save(); 0229 }