diff options
Diffstat (limited to 'kcontrol/konq/behaviour.cpp')
-rw-r--r-- | kcontrol/konq/behaviour.cpp | 304 |
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" |