You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
366 lines
16 KiB
366 lines
16 KiB
////
|
|
// "Misc Options" Tab for KFM configuration
|
|
//
|
|
// (c) Sven Radej 1998
|
|
// (c) David Faure 1998
|
|
// (c) 2001 Waldo Bastian <bastian@kde.org>
|
|
|
|
#include <tqlayout.h>//CT - 12Nov1998
|
|
#include <tqwhatsthis.h>
|
|
#include <tqvgroupbox.h>
|
|
#include <tqlabel.h>
|
|
#include <tqpushbutton.h>
|
|
|
|
#include "htmlopts.h"
|
|
#include "advancedTabDialog.h"
|
|
|
|
#include <konq_defaults.h> // include default values directly from konqueror
|
|
#include <kglobalsettings.h> // get default for DEFAULT_CHANGECURSOR
|
|
#include <klocale.h>
|
|
#include <kdialog.h>
|
|
#include <knuminput.h>
|
|
#include <kseparator.h>
|
|
|
|
#include <kapplication.h>
|
|
#include <dcopclient.h>
|
|
|
|
|
|
#include "htmlopts.moc"
|
|
|
|
enum UnderlineLinkType { UnderlineAlways=0, UnderlineNever=1, UnderlineHover=2 };
|
|
enum AnimationsType { AnimationsAlways=0, AnimationsNever=1, AnimationsLoopOnce=2 };
|
|
//-----------------------------------------------------------------------------
|
|
|
|
KMiscHTMLOptions::KMiscHTMLOptions(KConfig *config, TQString group, TQWidget *parent, const char *)
|
|
: KCModule( 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 completion 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++;
|
|
|
|
// Tabbed Browsing
|
|
|
|
TQGroupBox *bgTabbedBrowsing = new TQGroupBox( 0, Qt::Vertical, i18n("Tabbed Browsing"), this );
|
|
TQVBoxLayout *laygroup = new TQVBoxLayout(bgTabbedBrowsing->tqlayout(), KDialog::spacingHint() );
|
|
|
|
m_pShowMMBInTabs = new TQCheckBox( i18n( "Open &links in new tab instead of in new window" ), bgTabbedBrowsing );
|
|
TQWhatsThis::add( m_pShowMMBInTabs, i18n("This will open a new tab instead of a new window in various situations, "
|
|
"such as choosing a link or a folder with the middle mouse button.") );
|
|
connect(m_pShowMMBInTabs, TQT_SIGNAL(clicked()), TQT_SLOT(slotChanged()));
|
|
laygroup->addWidget(m_pShowMMBInTabs);
|
|
|
|
m_pDynamicTabbarHide = new TQCheckBox( i18n( "Hide the tab bar when only one tab is open" ), bgTabbedBrowsing );
|
|
TQWhatsThis::add( m_pDynamicTabbarHide, i18n("This will display the tab bar only if there are two or more tabs. Otherwise it will always be displayed.") );
|
|
connect(m_pDynamicTabbarHide, TQT_SIGNAL(clicked()), TQT_SLOT(slotChanged()));
|
|
laygroup->addWidget(m_pDynamicTabbarHide);
|
|
|
|
TQHBoxLayout *laytab = new TQHBoxLayout(laygroup, KDialog::spacingHint());
|
|
TQPushButton *advancedTabButton = new TQPushButton( i18n( "Advanced Options"), bgTabbedBrowsing );
|
|
laytab->addWidget(advancedTabButton);
|
|
laytab->addStretch();
|
|
connect(advancedTabButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(launchAdvancedTabDialog()));
|
|
|
|
lay->addMultiCellWidget( bgTabbedBrowsing, 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 tqshape 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_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>");
|
|
TQWhatsThis::add( label, whatsThis);
|
|
TQWhatsThis::add( m_pAnimationsCombo, whatsThis);
|
|
connect(m_pAnimationsCombo, 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 )
|
|
{
|
|
KConfig khtmlrc("khtmlrc", true, false);
|
|
khtmlrc.setReadDefaults( useDefaults );
|
|
m_pConfig->setReadDefaults( useDefaults );
|
|
|
|
#define SET_GROUP(x) m_pConfig->setGroup(x); khtmlrc.setGroup(x)
|
|
#define READ_BOOL(x,y) m_pConfig->readBoolEntry(x, khtmlrc.readBoolEntry(x, y))
|
|
#define READ_ENTRY(x) m_pConfig->readEntry(x, khtmlrc.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 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_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() );
|
|
|
|
m_pConfig->setGroup("FMSettings");
|
|
m_pShowMMBInTabs->setChecked( m_pConfig->readBoolEntry( "MMBOpensTab", false ) );
|
|
m_pDynamicTabbarHide->setChecked( ! (m_pConfig->readBoolEntry( "AlwaysTabbedMode", false )) );
|
|
|
|
KConfig config("kbookmarkrc", true, false);
|
|
config.setReadDefaults( useDefaults );
|
|
config.setGroup("Bookmarks");
|
|
m_pAdvancedAddBookmarkCheckBox->setChecked( config.readBoolEntry("AdvancedAddBookmarkDialog", false) );
|
|
m_pOnlyMarkedBookmarksCheckBox->setChecked( config.readBoolEntry("FilteredToolbar", false) );
|
|
|
|
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( "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->setGroup("FMSettings");
|
|
m_pConfig->writeEntry( "MMBOpensTab", m_pShowMMBInTabs->isChecked() );
|
|
m_pConfig->writeEntry( "AlwaysTabbedMode", !(m_pDynamicTabbarHide->isChecked()) );
|
|
m_pConfig->sync();
|
|
|
|
KConfig config("kbookmarkrc", false, false);
|
|
config.setGroup("Bookmarks");
|
|
config.writeEntry("AdvancedAddBookmarkDialog", m_pAdvancedAddBookmarkCheckBox->isChecked());
|
|
config.writeEntry("FilteredToolbar", m_pOnlyMarkedBookmarksCheckBox->isChecked());
|
|
config.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);
|
|
}
|
|
|
|
|
|
void KMiscHTMLOptions::launchAdvancedTabDialog()
|
|
{
|
|
advancedTabDialog* dialog = new advancedTabDialog(this, m_pConfig, "advancedTabDialog");
|
|
dialog->exec();
|
|
}
|
|
|
|
|