summaryrefslogtreecommitdiffstats
path: root/certmanager/kwatchgnupg/kwatchgnupgconfig.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'certmanager/kwatchgnupg/kwatchgnupgconfig.cpp')
-rw-r--r--certmanager/kwatchgnupg/kwatchgnupgconfig.cpp206
1 files changed, 206 insertions, 0 deletions
diff --git a/certmanager/kwatchgnupg/kwatchgnupgconfig.cpp b/certmanager/kwatchgnupg/kwatchgnupgconfig.cpp
new file mode 100644
index 00000000..b621e92b
--- /dev/null
+++ b/certmanager/kwatchgnupg/kwatchgnupgconfig.cpp
@@ -0,0 +1,206 @@
+/*
+ kwatchgnupgconfig.cpp
+
+ This file is part of Kleopatra, the KDE keymanager
+ Copyright (c) 2001,2002,2004 Klarälvdalens Datakonsult AB
+
+ Kleopatra 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.
+
+ Kleopatra 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
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#include "kwatchgnupgconfig.h"
+
+#include <klocale.h>
+#include <kurlrequester.h>
+#include <kconfig.h>
+#include <kapplication.h>
+
+#include <qframe.h>
+#include <qlayout.h>
+#include <qlabel.h>
+#include <qspinbox.h>
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qdir.h>
+#include <qvgroupbox.h>
+
+static const char* log_levels[] = { "none", "basic", "advanced", "expert", "guru" };
+
+static int log_level_to_int( const QString& loglevel )
+{
+ if( loglevel == "none" ) {
+ return 0;
+ } else if( loglevel == "basic" ) {
+ return 1;
+ } else if( loglevel == "advanced" ) {
+ return 2;
+ } else if( loglevel == "expert" ) {
+ return 3;
+ } else if( loglevel == "guru" ) {
+ return 4;
+ } else {
+ // default
+ return 1;
+ }
+}
+
+KWatchGnuPGConfig::KWatchGnuPGConfig( QWidget* parent, const char* name )
+ : KDialogBase( Plain, i18n("Configure KWatchGnuPG"),
+ Ok|Cancel, Ok, parent, name )
+{
+ // tmp vars:
+ QWidget * w;
+ QGridLayout * glay;
+ QGroupBox * group;
+
+ QWidget * top = plainPage();
+
+ QVBoxLayout * vlay = new QVBoxLayout( top, 0, spacingHint() );
+
+ group = new QVGroupBox( i18n("WatchGnuPG"), top );
+ group->layout()->setSpacing( spacingHint() );
+
+ w = new QWidget( group );
+
+ glay = new QGridLayout( w, 3, 2, 0, spacingHint() );
+ glay->setColStretch( 1, 1 );
+
+ int row = -1;
+
+ ++row;
+ mExeED = new KURLRequester( w );
+ glay->addWidget( new QLabel( mExeED, i18n("&Executable:"), w ), row, 0 );
+ glay->addWidget( mExeED, row, 1 );
+ connect( mExeED, SIGNAL(textChanged(const QString&)), SLOT(slotChanged()) );
+
+ ++row;
+ mSocketED = new KURLRequester( w );
+ glay->addWidget( new QLabel( mSocketED, i18n("&Socket:"), w ), row, 0 );
+ glay->addWidget( mSocketED, row, 1 );
+ connect( mSocketED, SIGNAL(textChanged(const QString&)), SLOT(slotChanged()) );
+
+ ++row;
+ mLogLevelCB = new QComboBox( false, w );
+ mLogLevelCB->insertItem( i18n("None") );
+ mLogLevelCB->insertItem( i18n("Basic") );
+ mLogLevelCB->insertItem( i18n("Advanced") );
+ mLogLevelCB->insertItem( i18n("Expert") );
+ mLogLevelCB->insertItem( i18n("Guru") );
+ glay->addWidget( new QLabel( mLogLevelCB, i18n("Default &log level:"), w ), row, 0 );
+ glay->addWidget( mLogLevelCB, row, 1 );
+ connect( mLogLevelCB, SIGNAL(activated(int)), SLOT(slotChanged()) );
+
+ vlay->addWidget( group );
+
+ /******************* Log Window group *******************/
+ group = new QVGroupBox( i18n("Log Window"), top );
+ group->layout()->setSpacing( spacingHint() );
+
+ w = new QWidget( group );
+
+ glay = new QGridLayout( w, 2, 3, 0, spacingHint() );
+ glay->setColStretch( 1, 1 );
+
+ row = -1;
+
+ ++row;
+ mLoglenSB = new QSpinBox( 0, 1000000, 100, w );
+ mLoglenSB->setSuffix( i18n("history size spinbox suffix"," lines") );
+ mLoglenSB->setSpecialValueText( i18n("unlimited") );
+ glay->addWidget( new QLabel( mLoglenSB, i18n("&History size:"), w ), row, 0 );
+ glay->addWidget( mLoglenSB, row, 1 );
+ QPushButton * button = new QPushButton( i18n("Set &Unlimited"), w );
+ glay->addWidget( button, row, 2 );
+
+ connect( mLoglenSB, SIGNAL(valueChanged(int)), SLOT(slotChanged()) );
+ connect( button, SIGNAL(clicked()), SLOT(slotSetHistorySizeUnlimited()) );
+
+ ++row;
+ mWordWrapCB = new QCheckBox( i18n("Enable &word wrapping"), w );
+ mWordWrapCB->hide(); // QTextEdit doesn't support word wrapping in LogText mode
+ glay->addMultiCellWidget( mWordWrapCB, row, row, 0, 2 );
+
+ connect( mWordWrapCB, SIGNAL(clicked()), SLOT(slotChanged()) );
+
+ vlay->addWidget( group );
+ vlay->addStretch( 1 );
+
+ connect( this, SIGNAL(applyClicked()), SLOT(slotSave()) );
+ connect( this, SIGNAL(okClicked()), SLOT(slotSave()) );
+}
+
+void KWatchGnuPGConfig::slotSetHistorySizeUnlimited() {
+ mLoglenSB->setValue( 0 );
+}
+
+void KWatchGnuPGConfig::loadConfig()
+{
+ KConfig* config = kapp->config();
+ config->setGroup("WatchGnuPG");
+ mExeED->setURL( config->readEntry( "Executable", "watchgnupg" ) );
+ mSocketED->setURL( config->readEntry( "Socket", QDir::home().canonicalPath()
+ + "/.gnupg/log-socket") );
+ mLogLevelCB->setCurrentItem( log_level_to_int( config->readEntry( "LogLevel", "basic" ) ) );
+
+ config->setGroup("LogWindow");
+ mLoglenSB->setValue( config->readNumEntry( "MaxLogLen", 10000 ) );
+ mWordWrapCB->setChecked( config->readBoolEntry("WordWrap", false ) );
+
+ config->setGroup( QString::null );
+ enableButtonOK( false );
+ enableButtonApply( false );
+}
+
+void KWatchGnuPGConfig::saveConfig()
+{
+ KConfig* config = kapp->config();
+ config->setGroup("WatchGnuPG");
+ config->writeEntry( "Executable", mExeED->url() );
+ config->writeEntry( "Socket", mSocketED->url() );
+ config->writeEntry( "LogLevel", log_levels[mLogLevelCB->currentItem()] );
+
+ config->setGroup("LogWindow");
+ config->writeEntry( "MaxLogLen", mLoglenSB->value() );
+ config->writeEntry( "WordWrap", mWordWrapCB->isChecked() );
+
+ config->setGroup( QString::null );
+ config->sync();
+ enableButtonOK( false );
+ enableButtonApply( false );
+}
+
+void KWatchGnuPGConfig::slotChanged()
+{
+ enableButtonOK( true );
+ enableButtonApply( true );
+}
+
+void KWatchGnuPGConfig::slotSave()
+{
+ saveConfig();
+ emit reconfigure();
+}
+
+#include "kwatchgnupgconfig.moc"