summaryrefslogtreecommitdiffstats
path: root/kcontrol/konq/behaviour.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kcontrol/konq/behaviour.cpp')
-rw-r--r--kcontrol/konq/behaviour.cpp304
1 files changed, 304 insertions, 0 deletions
diff --git a/kcontrol/konq/behaviour.cpp b/kcontrol/konq/behaviour.cpp
new file mode 100644
index 000000000..4f256b71c
--- /dev/null
+++ b/kcontrol/konq/behaviour.cpp
@@ -0,0 +1,304 @@
+/**
+ * Copyright (c) 2001 David Faure <david@mandrakesoft.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+// Behaviour options for konqueror
+
+#include <tqcheckbox.h>
+#include <tqlabel.h>
+#include <tqlayout.h>
+#include <tqvbox.h>
+#include <tqvbuttongroup.h>
+#include <tqvgroupbox.h>
+#include <tqwhatsthis.h>
+
+#include <dcopclient.h>
+
+#include <tdeapplication.h>
+#include <tdeconfig.h>
+#include <tdeio/uiserver_stub.h>
+#include <tdelocale.h>
+#include <konq_defaults.h>
+#include <kstandarddirs.h>
+#include <kurlrequester.h>
+
+#include "behaviour.h"
+
+KBehaviourOptions::KBehaviourOptions(TDEConfig *config, TQString group, TQWidget *parent, const char * )
+ : TDECModule(parent, "kcmkonq"), g_pConfig(config), groupname(group)
+{
+ TQLabel * label;
+
+ setQuickHelp( i18n("<h1>Konqueror Behavior</h1> You can configure how Konqueror behaves as a file manager here."));
+
+ TQVBoxLayout *lay = new TQVBoxLayout( this, 0, KDialog::spacingHint() );
+
+ TQVGroupBox * miscGb = new TQVGroupBox(i18n("Misc Options"), this);
+ lay->addWidget( miscGb );
+ TQHBox *hbox = new TQHBox(miscGb);
+ TQVBox *vbox = new TQVBox(hbox);
+
+ // ----
+
+ winPixmap = new TQLabel(hbox);
+ winPixmap->setFrameStyle( TQFrame::StyledPanel | TQFrame::Sunken );
+ winPixmap->setPixmap(TQPixmap(locate("data",
+ "kcontrol/pics/onlyone.png")));
+ winPixmap->setFixedSize( winPixmap->sizeHint() );
+
+
+ // ----
+
+ cbNewWin = new TQCheckBox(i18n("Open folders in separate &windows"), vbox);
+ TQWhatsThis::add( cbNewWin, i18n("If this option is checked, Konqueror will open a new window when "
+ "you open a folder, rather than showing that folder's contents in the current window."));
+ connect(cbNewWin, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
+ connect(cbNewWin, TQT_SIGNAL(toggled(bool)), TQT_SLOT(updateWinPixmap(bool)));
+
+ // ----
+
+ cbListProgress = new TQCheckBox( i18n( "&Show network operations in a single window" ), vbox );
+ connect(cbListProgress, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
+
+ TQWhatsThis::add( cbListProgress, i18n("Checking this option will group the"
+ " progress information for all network file transfers into a single window"
+ " with a list. When the option is not checked, all transfers appear in a"
+ " separate window.") );
+
+
+ // ----
+
+ cbShowArchivesAsFolders = new TQCheckBox( i18n( "Show archived &files as folders" ), vbox );
+ connect(cbShowArchivesAsFolders, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
+
+ TQWhatsThis::add( cbShowArchivesAsFolders, i18n("Checking this option will list archived"
+ " files as folders when using tree view.") );
+
+
+ // --
+
+ cbShowTips = new TQCheckBox( i18n( "Show file &tips" ), vbox );
+ connect(cbShowTips, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
+
+ TQWhatsThis::add( cbShowTips, i18n("Here you can control if, when moving the mouse over a file, you want to see a "
+ "small popup window with additional information about that file."
+ "This feature requires 'Enable tooltips' in KControl, Appearance & Themes, Style."));
+
+ connect(cbShowTips, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotShowTips(bool)));
+/*
+ //connect(cbShowTips, TQT_SIGNAL(toggled(bool)), sbToolTip, TQT_SLOT(setEnabled(bool)));
+ //connect(cbShowTips, TQT_SIGNAL(toggled(bool)), fileTips, TQT_SLOT(setEnabled(bool)));
+ fileTips->setBuddy(sbToolTip);
+ TQString tipstr = i18n("If you move the mouse over a file, you usually see a small popup window that shows some "
+ "additional information about that file. Here, you can set how many items of information "
+ "are displayed");
+ TQWhatsThis::add( fileTips, tipstr );
+ TQWhatsThis::add( sbToolTip, tipstr );
+*/
+
+ TQHBox *hboxpreview = new TQHBox(vbox);
+ TQWidget* spacer = new TQWidget( hboxpreview );
+ spacer->setMinimumSize( 20, 0 );
+ spacer->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Minimum );
+
+ cbShowPreviewsInTips = new TQCheckBox( i18n( "Show &previews in file tips" ), hboxpreview );
+ connect(cbShowPreviewsInTips, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
+
+ TQWhatsThis::add( cbShowPreviewsInTips, i18n("Here you can control if you want the "
+ "popup window to contain a larger preview for the file, when moving the mouse over it."));
+
+ cbRenameDirectlyIcon = new TQCheckBox(i18n("Rename icons in&line"), vbox);
+ TQWhatsThis::add(cbRenameDirectlyIcon, i18n("Checking this option will allow files to be "
+ "renamed by clicking directly on the icon name. "));
+ connect(cbRenameDirectlyIcon, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
+
+ TQHBoxLayout *hlay = new TQHBoxLayout( lay );
+
+ label = new TQLabel(i18n("Home &URL:"), this);
+ hlay->addWidget( label );
+
+ homeURL = new KURLRequester(this);
+ homeURL->setMode(KFile::Directory);
+ homeURL->setCaption(i18n("Select Home Folder"));
+ hlay->addWidget( homeURL );
+ connect(homeURL, TQT_SIGNAL(textChanged(const TQString &)), this, TQT_SLOT(changed()));
+ label->setBuddy(homeURL);
+
+ TQString homestr = i18n("This is the URL (e.g. a folder or a web page) where "
+ "Konqueror will jump to when the \"Home\" button is pressed. "
+ "This is usually your home folder, symbolized by a 'tilde' (~).");
+ TQWhatsThis::add( label, homestr );
+ TQWhatsThis::add( homeURL, homestr );
+
+ lay->addItem(new TQSpacerItem(0,20,TQSizePolicy::Fixed,TQSizePolicy::Fixed));
+
+ cbShowDeleteCommand = new TQCheckBox( i18n( "Show 'Delete' context me&nu entries which bypass the trashcan" ), this );
+ lay->addWidget( cbShowDeleteCommand );
+ connect(cbShowDeleteCommand, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
+
+ TQWhatsThis::add( cbShowDeleteCommand, i18n("Check this if you want 'Delete' menu commands to be displayed "
+ "on the desktop and in the file manager's context menus. "
+ "You can always delete files by holding the Shift key "
+ "while calling 'Move to Trash'."));
+
+ TQButtonGroup *bg = new TQVButtonGroup( i18n("Ask Confirmation For"), this );
+ bg->layout()->setSpacing( KDialog::spacingHint() );
+ TQWhatsThis::add( bg, i18n("This option tells Konqueror whether to ask"
+ " for a confirmation when you \"delete\" a file."
+ " <ul><li><em>Move To Trash:</em> moves the file to your trash folder,"
+ " from where it can be recovered very easily.</li>"
+ " <li><em>Delete:</em> simply deletes the file.</li>"
+ " </li></ul>") );
+
+ connect(bg, TQT_SIGNAL( clicked( int ) ), TQT_SLOT( changed() ));
+
+ cbMoveToTrash = new TQCheckBox( i18n("&Move to trash"), bg );
+
+ cbDelete = new TQCheckBox( i18n("D&elete"), bg );
+
+ lay->addWidget(bg);
+
+ lay->addStretch();
+
+ load();
+}
+
+KBehaviourOptions::~KBehaviourOptions()
+{
+}
+
+void KBehaviourOptions::slotShowTips(bool b)
+{
+// sbToolTip->setEnabled( b );
+ cbShowPreviewsInTips->setEnabled( b );
+// fileTips->setEnabled( b );
+
+}
+
+void KBehaviourOptions::load()
+{
+ load( false );
+}
+
+void KBehaviourOptions::load( bool useDefaults )
+{
+ g_pConfig->setReadDefaults( useDefaults );
+
+ g_pConfig->setGroup( groupname );
+ cbNewWin->setChecked( g_pConfig->readBoolEntry("AlwaysNewWin", false) );
+ updateWinPixmap(cbNewWin->isChecked());
+
+ homeURL->setURL(g_pConfig->readPathEntry("HomeURL", "~"));
+
+ bool stips = g_pConfig->readBoolEntry( "ShowFileTips", true );
+ cbShowTips->setChecked( stips );
+ slotShowTips( stips );
+
+ bool showPreviewsIntips = g_pConfig->readBoolEntry( "ShowPreviewsInFileTips", true );
+ cbShowPreviewsInTips->setChecked( showPreviewsIntips );
+
+ cbRenameDirectlyIcon->setChecked( g_pConfig->readBoolEntry("RenameIconDirectly", DEFAULT_RENAMEICONDIRECTLY ) );
+
+ TDEConfig globalconfig("kdeglobals", true, false);
+ globalconfig.setGroup( "KDE" );
+ cbShowDeleteCommand->setChecked( globalconfig.readBoolEntry("ShowDeleteCommand", false) );
+
+// if (!stips) sbToolTip->setEnabled( false );
+ if (!stips) cbShowPreviewsInTips->setEnabled( false );
+
+// sbToolTip->setValue( g_pConfig->readNumEntry( "FileTipItems", 6 ) );
+
+ TDEConfig config("uiserverrc");
+ config.setGroup( "UIServer" );
+ cbListProgress->setChecked( config.readBoolEntry( "ShowList", false ) );
+
+ g_pConfig->setGroup( "Trash" );
+ cbMoveToTrash->setChecked( g_pConfig->readBoolEntry("ConfirmTrash", DEFAULT_CONFIRMTRASH) );
+ cbDelete->setChecked( g_pConfig->readBoolEntry("ConfirmDelete", DEFAULT_CONFIRMDELETE) );
+
+ TDEConfig sidebarconfig("konqsidebartng.rc");
+ sidebarconfig.setGroup( "" );
+ cbShowArchivesAsFolders->setChecked( sidebarconfig.readBoolEntry( "ShowArchivesAsFolders", true ) );
+
+ emit changed( useDefaults );
+}
+
+void KBehaviourOptions::defaults()
+{
+ load( true );
+}
+
+void KBehaviourOptions::save()
+{
+ g_pConfig->setGroup( groupname );
+
+ g_pConfig->writeEntry( "AlwaysNewWin", cbNewWin->isChecked() );
+ g_pConfig->writePathEntry( "HomeURL", homeURL->url().isEmpty()? TQString("~") : homeURL->url() );
+
+ g_pConfig->writeEntry( "ShowFileTips", cbShowTips->isChecked() );
+ g_pConfig->writeEntry( "ShowPreviewsInFileTips", cbShowPreviewsInTips->isChecked() );
+// g_pConfig->writeEntry( "FileTipsItems", sbToolTip->value() );
+
+ g_pConfig->writeEntry( "RenameIconDirectly", cbRenameDirectlyIcon->isChecked());
+
+ TDEConfig sidebarconfig("konqsidebartng.rc");
+ sidebarconfig.setGroup( "" );
+ sidebarconfig.writeEntry( "ShowArchivesAsFolders", cbShowArchivesAsFolders->isChecked() );
+ sidebarconfig.sync();
+
+ TDEConfig globalconfig("kdeglobals", false, false);
+ globalconfig.setGroup( "KDE" );
+ globalconfig.writeEntry( "ShowDeleteCommand", cbShowDeleteCommand->isChecked());
+ globalconfig.sync();
+
+ g_pConfig->setGroup( "Trash" );
+ g_pConfig->writeEntry( "ConfirmTrash", cbMoveToTrash->isChecked());
+ g_pConfig->writeEntry( "ConfirmDelete", cbDelete->isChecked());
+ g_pConfig->sync();
+
+ // UIServer setting
+ TDEConfig config("uiserverrc");
+ config.setGroup( "UIServer" );
+ config.writeEntry( "ShowList", cbListProgress->isChecked() );
+ config.sync();
+
+ // Tell the running server
+ if ( kapp->dcopClient()->isApplicationRegistered( "tdeio_uiserver" ) )
+ {
+ UIServer_stub uiserver( "tdeio_uiserver", "UIServer" );
+ uiserver.setListMode( cbListProgress->isChecked() );
+ }
+
+ // Send signal to konqueror
+ TQByteArray data;
+ if ( !kapp->dcopClient()->isAttached() )
+ kapp->dcopClient()->attach();
+ kapp->dcopClient()->send( "konqueror*", "KonquerorIface", "reparseConfiguration()", data );
+ kapp->dcopClient()->send( "kdesktop", "KDesktopIface", "configure()", data );
+}
+
+void KBehaviourOptions::updateWinPixmap(bool b)
+{
+ if (b)
+ winPixmap->setPixmap(TQPixmap(locate("data",
+ "kcontrol/pics/overlapping.png")));
+ else
+ winPixmap->setPixmap(TQPixmap(locate("data",
+ "kcontrol/pics/onlyone.png")));
+}
+
+#include "behaviour.moc"