summaryrefslogtreecommitdiffstats
path: root/kcontrol/konqhtml/htmlopts.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kcontrol/konqhtml/htmlopts.cpp')
-rw-r--r--kcontrol/konqhtml/htmlopts.cpp381
1 files changed, 381 insertions, 0 deletions
diff --git a/kcontrol/konqhtml/htmlopts.cpp b/kcontrol/konqhtml/htmlopts.cpp
new file mode 100644
index 000000000..99bdb25a4
--- /dev/null
+++ b/kcontrol/konqhtml/htmlopts.cpp
@@ -0,0 +1,381 @@
+////
+// "Misc Options" Tab for KFM configuration
+//
+// (c) Sven Radej 1998
+// (c) David Faure 1998
+// (c) 2001 Waldo Bastian <bastian@kde.org>
+//
+// --------------------------------------------------------------
+// - 2013/10/16 Michele Calgaro
+// Move some options to the 'advancedTabDialog' dialog
+
+#include <tqlayout.h>//CT - 12Nov1998
+#include <tqwhatsthis.h>
+#include <tqvgroupbox.h>
+#include <tqlabel.h>
+#include <tqpushbutton.h>
+
+#include "htmlopts.h"
+
+#include <konq_defaults.h> // include default values directly from konqueror
+#include <tdeglobalsettings.h> // get default for DEFAULT_CHANGECURSOR
+#include <tdelocale.h>
+#include <kdialog.h>
+#include <knuminput.h>
+#include <kseparator.h>
+
+#include <tdeapplication.h>
+#include <dcopclient.h>
+
+
+#include "htmlopts.moc"
+
+enum UnderlineLinkType { UnderlineAlways=0, UnderlineNever=1, UnderlineHover=2 };
+enum AnimationsType { AnimationsAlways=0, AnimationsNever=1, AnimationsLoopOnce=2 };
+enum SmoothScrollingType { SmoothScrollingAlways=0, SmoothScrollingNever=1, SmoothScrollingWhenEfficient=2 };
+//-----------------------------------------------------------------------------
+
+KMiscHTMLOptions::KMiscHTMLOptions(TDEConfig *config, TQString group, TQWidget *parent, const char *)
+ : TDECModule( parent, "kcmkonqhtml" ), m_pConfig(config), m_groupname(group)
+{
+ int row = 0;
+ TQGridLayout *lay = new TQGridLayout(this, 10, 2, 0, KDialog::spacingHint());
+
+ // Bookmarks
+ setQuickHelp( i18n("<h1>Konqueror Browser</h1> Here you can configure Konqueror's browser "
+ "functionality. Please note that the file manager "
+ "functionality has to be configured using the \"File Manager\" "
+ "configuration module. You can make some "
+ "settings how Konqueror should handle the HTML code in "
+ "the web pages it loads. It is usually not necessary to "
+ "change anything here."));
+
+ TQVGroupBox *bgBookmarks = new TQVGroupBox( i18n("Boo&kmarks"), this );
+ m_pAdvancedAddBookmarkCheckBox = new TQCheckBox(i18n( "Ask for name and folder when adding bookmarks" ), bgBookmarks);
+ TQWhatsThis::add( m_pAdvancedAddBookmarkCheckBox, i18n( "If this box is checked, Konqueror will allow you to"
+ " change the title of the bookmark and choose a folder in which to store it when you add a new bookmark." ) );
+ connect(m_pAdvancedAddBookmarkCheckBox, TQT_SIGNAL(clicked()), TQT_SLOT(slotChanged()));
+
+ m_pOnlyMarkedBookmarksCheckBox = new TQCheckBox(i18n( "Show only marked bookmarks in bookmark toolbar" ), bgBookmarks);
+ TQWhatsThis::add( m_pOnlyMarkedBookmarksCheckBox, i18n( "If this box is checked, Konqueror will show only those"
+ " bookmarks in the bookmark toolbar which you have marked to do so in the bookmark editor." ) );
+ connect(m_pOnlyMarkedBookmarksCheckBox, TQT_SIGNAL(clicked()), TQT_SLOT(slotChanged()));
+
+ lay->addMultiCellWidget( bgBookmarks, row, row, 0, 1 );
+ row++;
+
+ // Form completion
+
+ TQVGroupBox *bgForm = new TQVGroupBox( i18n("Form Com&pletion"), this );
+ m_pFormCompletionCheckBox = new TQCheckBox(i18n( "Enable com&pletion of forms" ), bgForm);
+ TQWhatsThis::add( m_pFormCompletionCheckBox, i18n( "If this box is checked, Konqueror will remember"
+ " the data you enter in web forms and suggest it in similar fields for all forms." ) );
+ connect(m_pFormCompletionCheckBox, TQT_SIGNAL(clicked()), TQT_SLOT(slotChanged()));
+
+ m_pMaxFormCompletionItems = new KIntNumInput( bgForm );
+ m_pMaxFormCompletionItems->setLabel( i18n( "&Maximum completions:" ) );
+ m_pMaxFormCompletionItems->setRange( 0, 100 );
+ TQWhatsThis::add( m_pMaxFormCompletionItems,
+ i18n( "Here you can select how many values Konqueror will remember for a form field." ) );
+ connect(m_pMaxFormCompletionItems, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(slotChanged()));
+
+ lay->addMultiCellWidget( bgForm, row, row, 0, 1 );
+ row++;
+
+ // Mouse behavior
+
+ TQVGroupBox *bgMouse = new TQVGroupBox( i18n("Mouse Beha&vior"), this );
+
+ m_cbCursor = new TQCheckBox(i18n("Chan&ge cursor over links"), bgMouse );
+ TQWhatsThis::add( m_cbCursor, i18n("If this option is set, the shape of the cursor will change "
+ "(usually to a hand) if it is moved over a hyperlink.") );
+ connect(m_cbCursor, TQT_SIGNAL(clicked()), TQT_SLOT(slotChanged()));
+
+ m_pOpenMiddleClick = new TQCheckBox( i18n ("M&iddle click opens URL in selection" ), bgMouse );
+ TQWhatsThis::add( m_pOpenMiddleClick, i18n (
+ "If this box is checked, you can open the URL in the selection by middle clicking on a "
+ "Konqueror view." ) );
+ connect(m_pOpenMiddleClick, TQT_SIGNAL(clicked()), TQT_SLOT(slotChanged()));
+
+ m_pBackRightClick = new TQCheckBox( i18n( "Right click goes &back in history" ), bgMouse );
+ TQWhatsThis::add( m_pBackRightClick, i18n(
+ "If this box is checked, you can go back in history by right clicking on a Konqueror view. "
+ "To access the context menu, press the right mouse button and move." ) );
+ connect(m_pBackRightClick, TQT_SIGNAL(clicked()), TQT_SLOT(slotChanged()));
+
+ lay->addMultiCellWidget( bgMouse, row, row, 0, 1 );
+ row++;
+
+ // Misc
+
+ m_pAutoLoadImagesCheckBox = new TQCheckBox( i18n( "A&utomatically load images"), this );
+ TQWhatsThis::add( m_pAutoLoadImagesCheckBox, i18n( "If this box is checked, Konqueror will automatically load any images that are embedded in a web page. Otherwise, it will display placeholders for the images, and you can then manually load the images by clicking on the image button.<br>Unless you have a very slow network connection, you will probably want to check this box to enhance your browsing experience." ) );
+ connect(m_pAutoLoadImagesCheckBox, TQT_SIGNAL(clicked()), TQT_SLOT(slotChanged()));
+ lay->addMultiCellWidget( m_pAutoLoadImagesCheckBox, row, row, 0, 1 );
+ row++;
+
+ m_pEnableFavIconCheckBox = new TQCheckBox( i18n( "Enable &favicons"), this );
+ TQWhatsThis::add( m_pEnableFavIconCheckBox, i18n( "If this box is checked, Konqueror will automatically load and display favicon images that are associated with a web page. These images appear in the Location bar. Otherwise a generic image will appear." ) );
+ connect(m_pEnableFavIconCheckBox, TQT_SIGNAL(clicked()), TQT_SLOT(slotChanged()));
+ lay->addMultiCellWidget( m_pEnableFavIconCheckBox, row, row, 0, 1 );
+ row++;
+
+ m_pUnfinishedImageFrameCheckBox = new TQCheckBox( i18n( "Dra&w frame around not completely loaded images"), this );
+ TQWhatsThis::add( m_pUnfinishedImageFrameCheckBox, i18n( "If this box is checked, Konqueror will draw a frame as placeholder around not yet fully loaded images that are embedded in a web page.<br>Especially if you have a slow network connection, you will probably want to check this box to enhance your browsing experience." ) );
+ connect(m_pUnfinishedImageFrameCheckBox, TQT_SIGNAL(clicked()), TQT_SLOT(slotChanged()));
+ lay->addMultiCellWidget( m_pUnfinishedImageFrameCheckBox, row, row, 0, 1 );
+ row++;
+
+ m_pAutoRedirectCheckBox = new TQCheckBox( i18n( "Allow automatic delayed &reloading/redirecting"), this );
+ TQWhatsThis::add( m_pAutoRedirectCheckBox,
+ i18n( "Some web pages request an automatic reload or redirection after a certain period of time. By unchecking this box Konqueror will ignore these requests." ) );
+ connect(m_pAutoRedirectCheckBox, TQT_SIGNAL(clicked()), TQT_SLOT(slotChanged()));
+ lay->addMultiCellWidget( m_pAutoRedirectCheckBox, row, row, 0, 1 );
+ row++;
+
+
+ // More misc
+
+ KSeparator *sep = new KSeparator(this);
+ lay->addMultiCellWidget(sep, row, row, 0, 1);
+ row++;
+
+ TQLabel *label = new TQLabel( i18n("Und&erline links:"), this);
+ m_pUnderlineCombo = new TQComboBox( false, this );
+ label->setBuddy(m_pUnderlineCombo);
+ m_pUnderlineCombo->insertItem(i18n("underline","Enabled"), UnderlineAlways);
+ m_pUnderlineCombo->insertItem(i18n("underline","Disabled"), UnderlineNever);
+ m_pUnderlineCombo->insertItem(i18n("Only on Hover"), UnderlineHover);
+ lay->addWidget(label, row, 0);
+ lay->addWidget(m_pUnderlineCombo, row, 1);
+ row++;
+ TQString whatsThis = i18n("Controls how Konqueror handles underlining hyperlinks:<br>"
+ "<ul><li><b>Enabled</b>: Always underline links</li>"
+ "<li><b>Disabled</b>: Never underline links</li>"
+ "<li><b>Only on Hover</b>: Underline when the mouse is moved over the link</li>"
+ "</ul><br><i>Note: The site's CSS definitions can override this value</i>");
+ TQWhatsThis::add( label, whatsThis);
+ TQWhatsThis::add( m_pUnderlineCombo, whatsThis);
+ connect(m_pUnderlineCombo, TQT_SIGNAL(activated(int)), TQT_SLOT(slotChanged()));
+
+
+
+ label = new TQLabel( i18n("A&nimations:"), this);
+ m_pAnimationsCombo = new TQComboBox( false, this );
+ label->setBuddy(m_pAnimationsCombo);
+ m_pAnimationsCombo->insertItem(i18n("animations","Enabled"), AnimationsAlways);
+ m_pAnimationsCombo->insertItem(i18n("animations","Disabled"), AnimationsNever);
+ m_pAnimationsCombo->insertItem(i18n("Show Only Once"), AnimationsLoopOnce);
+ lay->addWidget(label, row, 0);
+ lay->addWidget(m_pAnimationsCombo, row, 1);
+ row++;
+ whatsThis = i18n("Controls how Konqueror shows animated images:<br>"
+ "<ul><li><b>Enabled</b>: Show all animations completely.</li>"
+ "<li><b>Disabled</b>: Never show animations, show the start image only.</li>"
+ "<li><b>Show only once</b>: Show all animations completely but do not repeat them.</li></ul>");
+ TQWhatsThis::add( label, whatsThis);
+ TQWhatsThis::add( m_pAnimationsCombo, whatsThis);
+ connect(m_pAnimationsCombo, TQT_SIGNAL(activated(int)), TQT_SLOT(slotChanged()));
+
+ label = new TQLabel( i18n("Sm&ooth scrolling"), this);
+ m_pSmoothScrollingCombo = new TQComboBox( false, this );
+ label->setBuddy(m_pSmoothScrollingCombo);
+ m_pSmoothScrollingCombo->insertItem(i18n("SmoothScrolling","Enabled"), SmoothScrollingAlways);
+ m_pSmoothScrollingCombo->insertItem(i18n("SmoothScrolling","Disabled"), SmoothScrollingNever);
+ // not implemented: m_pSmoothScrollingCombo->insertItem(i18n("SmoothScrolling","WhenEfficient"), SmoothScrollingWhenEfficient);
+ lay->addWidget(label, row, 0);
+ lay->addWidget(m_pSmoothScrollingCombo, row, 1);
+ row++;
+ whatsThis = i18n("Determines whether Konqueror should use smooth steps to scroll HTML pages, or whole steps:<br>"
+ "<ul><li><b>Always</b>: Always use smooth steps when scrolling.</li>"
+ "<li><b>Never</b>: Never use smooth scrolling, scroll with whole steps instead.</li>"
+ // not implemented: "<li><b>When Efficient</b>: Only use smooth scrolling on pages where it can be achieved with moderate usage of system resources.</li>"
+ "</ul>");
+ TQWhatsThis::add( label, whatsThis);
+ TQWhatsThis::add( m_pSmoothScrollingCombo, whatsThis);
+ connect(m_pSmoothScrollingCombo, TQT_SIGNAL(activated(int)), TQT_SLOT(slotChanged()));
+
+
+ lay->setRowStretch(row, 1);
+
+ load();
+ emit changed(false);
+}
+
+KMiscHTMLOptions::~KMiscHTMLOptions()
+{
+ delete m_pConfig;
+}
+
+void KMiscHTMLOptions::load()
+{
+ load( false );
+}
+
+void KMiscHTMLOptions::load( bool useDefaults )
+{
+ TDEConfig tdehtmlrc("tdehtmlrc", true, false);
+ tdehtmlrc.setReadDefaults( useDefaults );
+ m_pConfig->setReadDefaults( useDefaults );
+
+#define SET_GROUP(x) m_pConfig->setGroup(x); tdehtmlrc.setGroup(x)
+#define READ_BOOL(x,y) m_pConfig->readBoolEntry(x, tdehtmlrc.readBoolEntry(x, y))
+#define READ_ENTRY(x) m_pConfig->readEntry(x, tdehtmlrc.readEntry(x))
+
+
+ // *** load ***
+ SET_GROUP( "MainView Settings" );
+ bool bOpenMiddleClick = READ_BOOL( "OpenMiddleClick", true );
+ bool bBackRightClick = READ_BOOL( "BackRightClick", false );
+ SET_GROUP( "HTML Settings" );
+ bool changeCursor = READ_BOOL("ChangeCursor", KDE_DEFAULT_CHANGECURSOR);
+ bool underlineLinks = READ_BOOL("UnderlineLinks", DEFAULT_UNDERLINELINKS);
+ bool hoverLinks = READ_BOOL("HoverLinks", true);
+ bool bAutoLoadImages = READ_BOOL( "AutoLoadImages", true );
+ bool bEnableFavIcon = READ_BOOL( "EnableFavicon", true );
+ bool bUnfinishedImageFrame = READ_BOOL( "UnfinishedImageFrame", true );
+ TQString strAnimations = READ_ENTRY( "ShowAnimations" ).lower();
+
+ bool bAutoRedirect = m_pConfig->readBoolEntry( "AutoDelayedActions", true );
+
+ // *** apply to GUI ***
+ m_cbCursor->setChecked( changeCursor );
+ m_pAutoLoadImagesCheckBox->setChecked( bAutoLoadImages );
+ m_pEnableFavIconCheckBox->setChecked( bEnableFavIcon );
+ m_pUnfinishedImageFrameCheckBox->setChecked( bUnfinishedImageFrame );
+ m_pAutoRedirectCheckBox->setChecked( bAutoRedirect );
+ m_pOpenMiddleClick->setChecked( bOpenMiddleClick );
+ m_pBackRightClick->setChecked( bBackRightClick );
+
+ // we use two keys for link underlining so that this config file
+ // is backwards compatible with KDE 2.0. the HoverLink setting
+ // has precedence over the UnderlineLinks setting
+ if (hoverLinks)
+ {
+ m_pUnderlineCombo->setCurrentItem( UnderlineHover );
+ }
+ else
+ {
+ if (underlineLinks)
+ m_pUnderlineCombo->setCurrentItem( UnderlineAlways );
+ else
+ m_pUnderlineCombo->setCurrentItem( UnderlineNever );
+ }
+ if (strAnimations == "disabled")
+ m_pAnimationsCombo->setCurrentItem( AnimationsNever );
+ else if (strAnimations == "looponce")
+ m_pAnimationsCombo->setCurrentItem( AnimationsLoopOnce );
+ else
+ m_pAnimationsCombo->setCurrentItem( AnimationsAlways );
+
+ m_pFormCompletionCheckBox->setChecked( m_pConfig->readBoolEntry( "FormCompletion", true ) );
+ m_pMaxFormCompletionItems->setValue( m_pConfig->readNumEntry( "MaxFormCompletionItems", 10 ) );
+ m_pMaxFormCompletionItems->setEnabled( m_pFormCompletionCheckBox->isChecked() );
+
+ TDEConfig config("kbookmarkrc", true, false);
+ config.setReadDefaults( useDefaults );
+ config.setGroup("Bookmarks");
+ m_pAdvancedAddBookmarkCheckBox->setChecked( config.readBoolEntry("AdvancedAddBookmarkDialog", false) );
+ m_pOnlyMarkedBookmarksCheckBox->setChecked( config.readBoolEntry("FilteredToolbar", false) );
+
+ TDEConfig kdeglobals("kdeglobals", true, false);
+ kdeglobals.setReadDefaults( useDefaults );
+ kdeglobals.setGroup("KDE");
+ bool smoothScrolling = kdeglobals.readBoolEntry("SmoothScrolling", DEFAULT_SMOOTHSCROLL);
+ if (smoothScrolling)
+ m_pSmoothScrollingCombo->setCurrentItem( SmoothScrollingAlways );
+ else
+ m_pSmoothScrollingCombo->setCurrentItem( SmoothScrollingNever );
+
+ emit changed( useDefaults );
+
+#undef READ_ENTRY
+#undef READ_BOOL
+#undef SET_GROUP
+}
+
+void KMiscHTMLOptions::defaults()
+{
+ load( true );
+}
+
+void KMiscHTMLOptions::save()
+{
+ m_pConfig->setGroup( "MainView Settings" );
+ m_pConfig->writeEntry( "OpenMiddleClick", m_pOpenMiddleClick->isChecked() );
+ m_pConfig->writeEntry( "BackRightClick", m_pBackRightClick->isChecked() );
+ m_pConfig->setGroup( "HTML Settings" );
+ m_pConfig->writeEntry( "ChangeCursor", m_cbCursor->isChecked() );
+ m_pConfig->writeEntry( "AutoLoadImages", m_pAutoLoadImagesCheckBox->isChecked() );
+ m_pConfig->writeEntry( "EnableFavicon", m_pEnableFavIconCheckBox->isChecked() );
+ m_pConfig->writeEntry( "UnfinishedImageFrame", m_pUnfinishedImageFrameCheckBox->isChecked() );
+ m_pConfig->writeEntry( "AutoDelayedActions", m_pAutoRedirectCheckBox->isChecked() );
+ switch(m_pUnderlineCombo->currentItem())
+ {
+ case UnderlineAlways:
+ m_pConfig->writeEntry( "UnderlineLinks", true );
+ m_pConfig->writeEntry( "HoverLinks", false );
+ break;
+ case UnderlineNever:
+ m_pConfig->writeEntry( "UnderlineLinks", false );
+ m_pConfig->writeEntry( "HoverLinks", false );
+ break;
+ case UnderlineHover:
+ m_pConfig->writeEntry( "UnderlineLinks", false );
+ m_pConfig->writeEntry( "HoverLinks", true );
+ break;
+ }
+ switch(m_pAnimationsCombo->currentItem())
+ {
+ case AnimationsAlways:
+ m_pConfig->writeEntry( "ShowAnimations", "Enabled" );
+ break;
+ case AnimationsNever:
+ m_pConfig->writeEntry( "ShowAnimations", "Disabled" );
+ break;
+ case AnimationsLoopOnce:
+ m_pConfig->writeEntry( "ShowAnimations", "LoopOnce" );
+ break;
+ }
+
+ m_pConfig->writeEntry( "FormCompletion", m_pFormCompletionCheckBox->isChecked() );
+ m_pConfig->writeEntry( "MaxFormCompletionItems", m_pMaxFormCompletionItems->value() );
+ m_pConfig->sync();
+
+ TDEConfig config("kbookmarkrc", false, false);
+ config.setGroup("Bookmarks");
+ config.writeEntry("AdvancedAddBookmarkDialog", m_pAdvancedAddBookmarkCheckBox->isChecked());
+ config.writeEntry("FilteredToolbar", m_pOnlyMarkedBookmarksCheckBox->isChecked());
+ config.sync();
+
+ TDEConfig kdeglobals("kdeglobals", false, false);
+ kdeglobals.setGroup("KDE");
+ switch(m_pSmoothScrollingCombo->currentItem())
+ {
+ case SmoothScrollingAlways:
+ kdeglobals.writeEntry( "SmoothScrolling", true );
+ break;
+ case SmoothScrollingNever:
+ kdeglobals.writeEntry( "SmoothScrolling", false );
+ break;
+ // case SmoothScrollingWhenEfficient:
+ // kdeglobals.writeEntry( "SmoothScrolling", somethingelse );
+ // break;
+ }
+ kdeglobals.sync();
+
+ TQByteArray data;
+ if ( !kapp->dcopClient()->isAttached() )
+ kapp->dcopClient()->attach();
+ kapp->dcopClient()->send( "konqueror*", "KonquerorIface", "reparseConfiguration()", data );
+
+ emit changed(false);
+}
+
+void KMiscHTMLOptions::slotChanged()
+{
+ m_pMaxFormCompletionItems->setEnabled( m_pFormCompletionCheckBox->isChecked() );
+ emit changed(true);
+}
+
+