summaryrefslogtreecommitdiffstats
path: root/certmanager/conf
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch)
tree67208f7c145782a7e90b123b982ca78d88cc2c87 /certmanager/conf
downloadtdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.tar.gz
tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'certmanager/conf')
-rw-r--r--certmanager/conf/Makefile.am26
-rw-r--r--certmanager/conf/appearanceconfigpage.cpp87
-rw-r--r--certmanager/conf/appearanceconfigpage.h60
-rw-r--r--certmanager/conf/appearanceconfigwidget.cpp358
-rw-r--r--certmanager/conf/appearanceconfigwidget.h73
-rw-r--r--certmanager/conf/appearanceconfigwidgetbase.ui215
-rw-r--r--certmanager/conf/configuredialog.cpp73
-rw-r--r--certmanager/conf/configuredialog.h52
-rw-r--r--certmanager/conf/dirservconfigpage.cpp296
-rw-r--r--certmanager/conf/dirservconfigpage.h84
-rw-r--r--certmanager/conf/dnorderconfigpage.cpp77
-rw-r--r--certmanager/conf/dnorderconfigpage.h63
-rw-r--r--certmanager/conf/kleopatra_config_appear.desktop181
-rw-r--r--certmanager/conf/kleopatra_config_dirserv.desktop169
-rw-r--r--certmanager/conf/kleopatra_config_dnorder.desktop164
15 files changed, 1978 insertions, 0 deletions
diff --git a/certmanager/conf/Makefile.am b/certmanager/conf/Makefile.am
new file mode 100644
index 000000000..f58c20c77
--- /dev/null
+++ b/certmanager/conf/Makefile.am
@@ -0,0 +1,26 @@
+AM_CPPFLAGS = -DLIBKLEOPATRA_NO_COMPAT -I$(srcdir)/../lib -I$(srcdir)/../lib/ui -I../lib/ui \
+ -I$(top_srcdir)/libkdenetwork $(GPGME_CFLAGS) $(all_includes)
+
+METASOURCES = AUTO
+
+# the stuff that gets compiled into kleopatra
+noinst_LTLIBRARIES = libconf.la
+libconf_la_SOURCES = configuredialog.cpp
+
+kde_module_LTLIBRARIES = kcm_kleopatra.la
+
+kcm_kleopatra_la_SOURCES = dirservconfigpage.cpp \
+ appearanceconfigpage.cpp \
+ appearanceconfigwidgetbase.ui \
+ appearanceconfigwidget.cpp \
+ dnorderconfigpage.cpp
+
+kcm_kleopatra_la_LDFLAGS = $(all_libraries) -module -avoid-version -no-undefined
+kcm_kleopatra_la_LIBADD = ../lib/libkleopatra.la $(LIB_KDEUI)
+
+kde_services_DATA = \
+ kleopatra_config_dirserv.desktop \
+ kleopatra_config_appear.desktop \
+ kleopatra_config_dnorder.desktop
+
+dirservconfigpage.lo: ../lib/ui/directoryserviceswidgetbase.h
diff --git a/certmanager/conf/appearanceconfigpage.cpp b/certmanager/conf/appearanceconfigpage.cpp
new file mode 100644
index 000000000..5d2a434cc
--- /dev/null
+++ b/certmanager/conf/appearanceconfigpage.cpp
@@ -0,0 +1,87 @@
+/*
+ appearanceconfigpage.cpp
+
+ This file is part of kleopatra, the KDE key manager
+ Copyright (c) 2004 Klar�lvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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 "appearanceconfigpage.h"
+#include <qlayout.h>
+#include "appearanceconfigwidget.h"
+#include <kmessagebox.h>
+#include <klocale.h>
+#include <kdebug.h>
+
+#include <kdepimmacros.h>
+
+AppearanceConfigurationPage::AppearanceConfigurationPage( QWidget * parent, const char * name )
+ : KCModule( parent, name )
+{
+ QVBoxLayout* lay = new QVBoxLayout( this );
+ mWidget = new Kleo::AppearanceConfigWidget( this );
+ lay->addWidget( mWidget );
+ connect( mWidget, SIGNAL( changed() ), this, SLOT( slotChanged() ) );
+
+#ifndef HAVE_UNBROKEN_KCMULTIDIALOG
+ load();
+#endif
+}
+
+
+void AppearanceConfigurationPage::load()
+{
+ mWidget->load();
+}
+
+void AppearanceConfigurationPage::save()
+{
+ mWidget->save();
+
+}
+
+void AppearanceConfigurationPage::defaults()
+{
+ mWidget->defaults();
+}
+
+extern "C"
+{
+ KDE_EXPORT KCModule *create_kleopatra_config_appear( QWidget *parent, const char * )
+ {
+ AppearanceConfigurationPage *page =
+ new AppearanceConfigurationPage( parent, "kleopatra_config_appear" );
+ return page;
+ }
+}
+
+// kdelibs-3.2 didn't have the changed signal in KCModule...
+void AppearanceConfigurationPage::slotChanged()
+{
+ emit changed(true);
+}
+
+#include "appearanceconfigpage.moc"
diff --git a/certmanager/conf/appearanceconfigpage.h b/certmanager/conf/appearanceconfigpage.h
new file mode 100644
index 000000000..c3acea007
--- /dev/null
+++ b/certmanager/conf/appearanceconfigpage.h
@@ -0,0 +1,60 @@
+/*
+ appearanceconfigpage.h
+
+ This file is part of kleopatra, the KDE key manager
+ Copyright (c) 2004 Klar�lvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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.
+*/
+
+#ifndef _APPEARANCE_CONFIGURE_PAGE_H_
+#define _APPEARANCE_CONFIGURE_PAGE_H_
+
+#include <kcmodule.h>
+
+namespace Kleo {
+ class AppearanceConfigWidget;
+}
+
+/**
+ * "Appearance" configuration page for kleopatra's configuration dialog
+ */
+class AppearanceConfigurationPage : public KCModule {
+ Q_OBJECT
+public:
+ AppearanceConfigurationPage( QWidget * parent=0, const char * name=0 );
+
+ virtual void load();
+ virtual void save();
+ virtual void defaults();
+
+private slots:
+ void slotChanged();
+
+private:
+ Kleo::AppearanceConfigWidget* mWidget;
+};
+
+#endif // _APPEARANCE_CONFIGURE_DIALOG_PRIVATE_H_
diff --git a/certmanager/conf/appearanceconfigwidget.cpp b/certmanager/conf/appearanceconfigwidget.cpp
new file mode 100644
index 000000000..a3d177c2a
--- /dev/null
+++ b/certmanager/conf/appearanceconfigwidget.cpp
@@ -0,0 +1,358 @@
+/*
+ appearanceconfigwidget.cpp
+
+ This file is part of kleopatra, the KDE key manager
+ Copyright (c) 2002,2004 Klar�lvdalens Datakonsult AB
+ Copyright (c) 2002,2003 Marc Mutz <[email protected]>
+
+ Libkleopatra 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.
+
+ Libkleopatra 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "appearanceconfigwidget.h"
+
+#include <kleo/cryptobackendfactory.h>
+#include <kleo/keyfiltermanager.h>
+
+#include <klistview.h>
+#include <kconfig.h>
+#include <kdialog.h>
+#include <klocale.h>
+#include <kdebug.h>
+#include <kmessagebox.h>
+#include <kfontdialog.h>
+#include <kcolordialog.h>
+
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qheader.h>
+#include <qcolor.h>
+#include <qfont.h>
+#include <qstring.h>
+#include <qpainter.h>
+#include <qregexp.h>
+#include <qcheckbox.h>
+
+#include <assert.h>
+
+using namespace Kleo;
+
+class CategoryListViewItem : public QListViewItem
+{
+public:
+ CategoryListViewItem( QListView* lv, QListViewItem* prev, const KConfigBase& config )
+ : QListViewItem( lv, prev ) {
+
+ setName( config.readEntry( "Name", i18n("<unnamed>") ) );
+ mForegroundColor = config.readColorEntry( "foreground-color" );
+ mBackgroundColor = config.readColorEntry( "background-color" );
+ mHasFont = config.hasKey( "font" );
+ if ( mHasFont ) {
+ setFont( config.readFontEntry( "font" ) ); // sets mItalic and mBold
+ }
+ else {
+ mItalic = config.readBoolEntry( "font-italic", false );
+ mBold = config.readBoolEntry( "font-bold", false );
+ }
+ mStrikeOut = config.readBoolEntry( "font-strikeout", false );
+ mIsExpired = config.readBoolEntry( "is-expired", false );
+ mDirty = false;
+ }
+
+ void save( KConfigBase& config ) {
+ config.writeEntry( "Name", text( 0 ) );
+ config.writeEntry( "foreground-color", mForegroundColor );
+ config.writeEntry( "background-color", mBackgroundColor );
+ if ( mHasFont )
+ config.writeEntry( "font", mFont );
+ else {
+ config.deleteEntry( "font" );
+ config.writeEntry( "font-italic", mItalic );
+ config.writeEntry( "font-bold", mBold );
+ }
+ config.writeEntry( "font-strikeout", mStrikeOut );
+ }
+
+ void setForegroundColor( const QColor& foreground ) { mForegroundColor = foreground; mDirty = true; }
+ void setBackgroundColor( const QColor& background ) { mBackgroundColor = background; mDirty = true; }
+ void setFont( const QFont& font ) {
+ mFont = font;
+ mHasFont = true;
+ mItalic = font.italic();
+ mBold = font.bold();
+ mDirty = true;
+ }
+
+ QColor foregroundColor() const { return mForegroundColor; }
+ QColor backgroundColor() const { return mBackgroundColor; }
+ QFont font() const { return mFont; }
+
+ void setDefaultAppearance() {
+ mForegroundColor = mIsExpired ? Qt::red : QColor();
+ mBackgroundColor = QColor();
+ mHasFont = false;
+ mFont = QFont();
+ mBold = false;
+ mItalic = false;
+ mStrikeOut = false;
+ mDirty = true;
+ }
+
+ bool isDirty() const { return mDirty; }
+ bool isItalic() const { return mItalic; }
+ bool isBold() const { return mBold; }
+ bool isStrikeout() const { return mStrikeOut; }
+ bool hasFont() const { return mHasFont; }
+
+ void toggleItalic() { mItalic = !mItalic; if ( mHasFont ) mFont.setItalic( mItalic ); mDirty = true; }
+ void toggleBold() { mBold = !mBold; if ( mHasFont ) mFont.setBold( mBold ); mDirty = true; }
+ void toggleStrikeout() { mStrikeOut = !mStrikeOut; mDirty = true; }
+
+private:
+ void setName( const QString& name ) {
+ setText( 0, name );
+ }
+
+ void paintCell( QPainter * p, const QColorGroup & cg, int column, int width, int alignment );
+
+private:
+ QColor mForegroundColor, mBackgroundColor;
+ QFont mFont;
+ bool mHasFont;
+ bool mIsExpired; // used for default settings
+ bool mItalic;
+ bool mBold;
+ bool mStrikeOut;
+ bool mDirty;
+};
+
+void CategoryListViewItem::paintCell( QPainter * p, const QColorGroup & cg, int column, int width, int alignment ) {
+ QColorGroup _cg = cg;
+ QFont font = p->font();
+ if ( mHasFont )
+ font = mFont;
+ else {
+ if ( mItalic )
+ font.setItalic( true );
+ if ( mBold )
+ font.setBold( true );
+ }
+ if ( mStrikeOut )
+ font.setStrikeOut( true );
+ p->setFont( font );
+
+ if ( mForegroundColor.isValid() )
+ _cg.setColor( QColorGroup::Text, mForegroundColor );
+ if ( mBackgroundColor.isValid() )
+ _cg.setColor( QColorGroup::Base, mBackgroundColor );
+
+ QListViewItem::paintCell( p, _cg, column, width, alignment );
+}
+
+////
+
+Kleo::AppearanceConfigWidget::AppearanceConfigWidget (
+ QWidget* parent, const char* name, WFlags fl )
+ : AppearanceConfigWidgetBase( parent, name, fl )
+{
+ categoriesLV->setSorting( -1 );
+ load();
+}
+
+
+/*
+ * Destroys the object and frees any allocated resources
+ */
+
+AppearanceConfigWidget::~AppearanceConfigWidget()
+{
+ // no need to delete child widgets, Qt does it all for us
+}
+
+
+void AppearanceConfigWidget::slotSelectionChanged( QListViewItem* item )
+{
+ bool sel = item != 0;
+ foregroundButton->setEnabled( sel );
+ backgroundButton->setEnabled( sel );
+ fontButton->setEnabled( sel );
+ italicCB->setEnabled( item );
+ boldCB->setEnabled( item );
+ strikeoutCB->setEnabled( item );
+ defaultLookPB->setEnabled( sel );
+ if ( item ) {
+ CategoryListViewItem* clvi = static_cast<CategoryListViewItem *>( item );
+ italicCB->setChecked( clvi->isItalic() );
+ boldCB->setChecked( clvi->isBold() );
+ strikeoutCB->setChecked( clvi->isStrikeout() );
+ } else {
+ italicCB->setChecked( false );
+ boldCB->setChecked( false );
+ strikeoutCB->setChecked( false );
+ }
+}
+
+/*
+ * set default appearance for selected category
+ */
+void AppearanceConfigWidget::slotDefaultClicked()
+{
+ CategoryListViewItem* item = static_cast<CategoryListViewItem*>(categoriesLV->selectedItem() );
+ if ( !item )
+ return;
+ item->setDefaultAppearance();
+ item->repaint();
+ slotSelectionChanged( item );
+ emit changed();
+}
+
+void AppearanceConfigWidget::load()
+{
+ categoriesLV->clear();
+ KConfig * config = Kleo::CryptoBackendFactory::instance()->configObject();
+ if ( !config )
+ return;
+ QStringList groups = config->groupList().grep( QRegExp( "^Key Filter #\\d+$" ) );
+ for ( QStringList::const_iterator it = groups.begin() ; it != groups.end() ; ++it ) {
+ KConfigGroup cfg( config, *it );
+ (void) new CategoryListViewItem( categoriesLV, categoriesLV->lastItem(), cfg );
+ }
+}
+
+void AppearanceConfigWidget::save()
+{
+ KConfig * config = Kleo::CryptoBackendFactory::instance()->configObject();
+ if ( !config )
+ return;
+ // We know (assume) that the groups in the config object haven't changed,
+ // so we just iterate over them and over the listviewitems, and map one-to-one.
+ QStringList groups = config->groupList().grep( QRegExp( "^Key Filter #\\d+$" ) );
+ if ( groups.isEmpty() ) {
+ // If we created the default categories ourselves just now, then we need to make up their list
+ QListViewItemIterator lvit( categoriesLV );
+ for ( ; lvit.current() ; ++lvit )
+ groups << lvit.current()->text( 0 );
+ }
+
+ QListViewItemIterator lvit( categoriesLV );
+ for ( QStringList::const_iterator it = groups.begin() ; it != groups.end() && lvit.current(); ++it, ++lvit ) {
+ CategoryListViewItem* item = static_cast<CategoryListViewItem*>(lvit.current() );
+ KConfigGroup cfg( config, *it );
+ item->save( cfg );
+ }
+ config->sync();
+ Kleo::KeyFilterManager::instance()->reload();
+}
+
+
+void AppearanceConfigWidget::slotForegroundClicked() {
+ CategoryListViewItem* item = static_cast<CategoryListViewItem*>(categoriesLV->selectedItem() );
+ Q_ASSERT( item );
+ if( !item )
+ return;
+ QColor fg = item->foregroundColor();
+ int result = KColorDialog::getColor( fg );
+ if ( result == KColorDialog::Accepted ) {
+ item->setForegroundColor( fg );
+ item->repaint();
+ emit changed();
+ }
+}
+
+void AppearanceConfigWidget::slotBackgroundClicked() {
+ CategoryListViewItem* item = static_cast<CategoryListViewItem*>(categoriesLV->selectedItem() );
+ Q_ASSERT( item );
+ if( !item )
+ return;
+ QColor bg = item->backgroundColor();
+ int result = KColorDialog::getColor( bg );
+ if ( result == KColorDialog::Accepted ) {
+ item->setBackgroundColor( bg );
+ item->repaint();
+ emit changed();
+ }
+}
+
+void AppearanceConfigWidget::slotFontClicked() {
+ CategoryListViewItem* item = static_cast<CategoryListViewItem*>(categoriesLV->selectedItem() );
+ Q_ASSERT( item );
+ if( !item )
+ return;
+ QFont font = item->font();
+ int result = KFontDialog::getFont( font );
+ if ( result == KFontDialog::Accepted ) {
+ item->setFont( font );
+ item->repaint();
+ emit changed();
+ }
+}
+
+void AppearanceConfigWidget::defaults()
+{
+ // This simply means "default look for every category"
+ QListViewItemIterator lvit( categoriesLV );
+ for ( ; lvit.current() ; ++lvit ) {
+ CategoryListViewItem* item = static_cast<CategoryListViewItem *>( lvit.current() );
+ item->setDefaultAppearance();
+ item->repaint();
+ }
+ emit changed();
+}
+
+void AppearanceConfigWidget::slotItalicClicked()
+{
+ CategoryListViewItem* item = static_cast<CategoryListViewItem*>(categoriesLV->selectedItem() );
+ if ( item ) {
+ item->toggleItalic();
+ item->repaint();
+ emit changed();
+ }
+}
+
+void AppearanceConfigWidget::slotBoldClicked()
+{
+ CategoryListViewItem* item = static_cast<CategoryListViewItem*>(categoriesLV->selectedItem() );
+ if ( item ) {
+ item->toggleBold();
+ item->repaint();
+ emit changed();
+ }
+}
+
+void AppearanceConfigWidget::slotStrikeoutClicked()
+{
+ CategoryListViewItem* item = static_cast<CategoryListViewItem*>(categoriesLV->selectedItem() );
+ if ( item ) {
+ item->toggleStrikeout();
+ item->repaint();
+ emit changed();
+ }
+}
+
+#include "appearanceconfigwidget.moc"
diff --git a/certmanager/conf/appearanceconfigwidget.h b/certmanager/conf/appearanceconfigwidget.h
new file mode 100644
index 000000000..dc5c79766
--- /dev/null
+++ b/certmanager/conf/appearanceconfigwidget.h
@@ -0,0 +1,73 @@
+/*
+ appearanceconfigwidget.h
+
+ This file is part of kleopatra, the KDE key manager
+ Copyright (c) 2002,2004 Klar�lvdalens Datakonsult AB
+ Copyright (c) 2002,2003 Marc Mutz <[email protected]>
+
+ Libkleopatra 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.
+
+ Libkleopatra 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.
+ */
+
+#ifndef APPEARANCECONFIGWIDGET_H
+#define APPEARANCECONFIGWIDGET_H
+
+#include "appearanceconfigwidgetbase.h"
+#include <qstringlist.h>
+class KConfig;
+
+namespace Kleo {
+
+ class AppearanceConfigWidget : public AppearanceConfigWidgetBase {
+ Q_OBJECT
+
+ public:
+ AppearanceConfigWidget(
+ QWidget * parent=0, const char * name=0, WFlags f=0 );
+ ~AppearanceConfigWidget();
+
+ void load();
+ void save();
+
+ public slots:
+ void defaults();
+
+ signals:
+ void changed();
+
+ protected slots:
+ // reimplemented from the base class
+ virtual void slotDefaultClicked();
+ virtual void slotSelectionChanged( QListViewItem * );
+ virtual void slotForegroundClicked();
+ virtual void slotBackgroundClicked();
+ virtual void slotFontClicked();
+ virtual void slotItalicClicked();
+ virtual void slotBoldClicked();
+ virtual void slotStrikeoutClicked();
+ };
+}
+
+#endif // APPEARANCECONFIGWIDGET_H
diff --git a/certmanager/conf/appearanceconfigwidgetbase.ui b/certmanager/conf/appearanceconfigwidgetbase.ui
new file mode 100644
index 000000000..b432ac8c6
--- /dev/null
+++ b/certmanager/conf/appearanceconfigwidgetbase.ui
@@ -0,0 +1,215 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>AppearanceConfigWidgetBase</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>AppearanceConfigWidgetBase</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>616</width>
+ <height>352</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Color &amp; Font Configuration</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QListView">
+ <column>
+ <property name="text">
+ <string>Key Categories</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <property name="name">
+ <cstring>categoriesLV</cstring>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout2</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>foregroundButton</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Set &amp;Text Color...</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>backgroundButton</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Set &amp;Background Color...</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>fontButton</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Set F&amp;ont...</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>italicCB</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Italic</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>boldCB</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Bold</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>strikeoutCB</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Strikeout</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer6</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>100</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>defaultLookPB</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Default Appearance</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ </hbox>
+</widget>
+<connections>
+ <connection>
+ <sender>foregroundButton</sender>
+ <signal>clicked()</signal>
+ <receiver>AppearanceConfigWidgetBase</receiver>
+ <slot>slotForegroundClicked()</slot>
+ </connection>
+ <connection>
+ <sender>backgroundButton</sender>
+ <signal>clicked()</signal>
+ <receiver>AppearanceConfigWidgetBase</receiver>
+ <slot>slotBackgroundClicked()</slot>
+ </connection>
+ <connection>
+ <sender>fontButton</sender>
+ <signal>clicked()</signal>
+ <receiver>AppearanceConfigWidgetBase</receiver>
+ <slot>slotFontClicked()</slot>
+ </connection>
+ <connection>
+ <sender>categoriesLV</sender>
+ <signal>selectionChanged(QListViewItem*)</signal>
+ <receiver>AppearanceConfigWidgetBase</receiver>
+ <slot>slotSelectionChanged(QListViewItem*)</slot>
+ </connection>
+ <connection>
+ <sender>defaultLookPB</sender>
+ <signal>clicked()</signal>
+ <receiver>AppearanceConfigWidgetBase</receiver>
+ <slot>slotDefaultClicked()</slot>
+ </connection>
+ <connection>
+ <sender>italicCB</sender>
+ <signal>clicked()</signal>
+ <receiver>AppearanceConfigWidgetBase</receiver>
+ <slot>slotItalicClicked()</slot>
+ </connection>
+ <connection>
+ <sender>boldCB</sender>
+ <signal>clicked()</signal>
+ <receiver>AppearanceConfigWidgetBase</receiver>
+ <slot>slotBoldClicked()</slot>
+ </connection>
+ <connection>
+ <sender>strikeoutCB</sender>
+ <signal>clicked()</signal>
+ <receiver>AppearanceConfigWidgetBase</receiver>
+ <slot>slotStrikeoutClicked()</slot>
+ </connection>
+</connections>
+<tabstops>
+ <tabstop>categoriesLV</tabstop>
+ <tabstop>foregroundButton</tabstop>
+ <tabstop>backgroundButton</tabstop>
+ <tabstop>fontButton</tabstop>
+ <tabstop>italicCB</tabstop>
+ <tabstop>boldCB</tabstop>
+ <tabstop>strikeoutCB</tabstop>
+ <tabstop>defaultLookPB</tabstop>
+</tabstops>
+<slots>
+ <slot access="protected">slotForegroundClicked()</slot>
+ <slot access="protected">slotBackgroundClicked()</slot>
+ <slot access="protected">slotFontClicked()</slot>
+ <slot access="protected">slotSelectionChanged( QListViewItem * )</slot>
+ <slot access="protected">slotDefaultClicked()</slot>
+ <slot access="protected">slotItalicClicked()</slot>
+ <slot access="protected">slotBoldClicked()</slot>
+ <slot access="protected">slotStrikeoutClicked()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/certmanager/conf/configuredialog.cpp b/certmanager/conf/configuredialog.cpp
new file mode 100644
index 000000000..87976f106
--- /dev/null
+++ b/certmanager/conf/configuredialog.cpp
@@ -0,0 +1,73 @@
+/*
+ configuredialog.cpp
+
+ This file is part of kleopatra
+ Copyright (C) 2000 Espen Sand, [email protected]
+ Copyright (C) 2001-2002 Marc Mutz <[email protected]>
+ Copyright (c) 2004 Klar�lvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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 "configuredialog.h"
+
+#include <kwin.h>
+#include <kapplication.h>
+#include <kconfig.h>
+#include <klocale.h>
+
+ConfigureDialog::ConfigureDialog( QWidget *parent, const char *name, bool modal )
+ : KCMultiDialog( KDialogBase::IconList, i18n( "Configure" ), parent, name, modal )
+{
+ KWin::setIcons( winId(), kapp->icon(), kapp->miniIcon() );
+ showButton( User1, true );
+
+ addModule( "kleopatra_config_dirserv", false );
+ addModule( "kleopatra_config_appear", false );
+ addModule( "kleopatra_config_dnorder", false );
+
+ // We store the size of the dialog on hide, because otherwise
+ // the KCMultiDialog starts with the size of the first kcm, not
+ // the largest one. This way at least after the first showing of
+ // the largest kcm the size is kept.
+ const KConfigGroup geometry( KGlobal::config(), "Geometry" );
+ const int width = geometry.readNumEntry( "ConfigureDialogWidth" );
+ const int height = geometry.readNumEntry( "ConfigureDialogHeight" );
+ if ( width != 0 && height != 0 ) {
+ setMinimumSize( width, height );
+ }
+
+}
+
+void ConfigureDialog::hideEvent( QHideEvent * ) {
+ KConfigGroup geometry( KGlobal::config(), "Geometry" );
+ geometry.writeEntry( "ConfigureDialogWidth", width() );
+ geometry.writeEntry( "ConfigureDialogHeight",height() );
+}
+
+ConfigureDialog::~ConfigureDialog() {
+}
+
+#include "configuredialog.moc"
diff --git a/certmanager/conf/configuredialog.h b/certmanager/conf/configuredialog.h
new file mode 100644
index 000000000..40b7e371b
--- /dev/null
+++ b/certmanager/conf/configuredialog.h
@@ -0,0 +1,52 @@
+/*
+ configuredialog.cpp
+
+ This file is part of kleopatra
+ Copyright (C) 2000 Espen Sand, [email protected]
+ Copyright (C) 2001-2002 Marc Mutz <[email protected]>
+ Copyright (c) 2004 Klar�lvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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.
+*/
+
+#ifndef _CONFIGURE_DIALOG_H_
+#define _CONFIGURE_DIALOG_H_
+
+#include <kcmultidialog.h>
+
+class ConfigureDialog : public KCMultiDialog
+{
+ Q_OBJECT
+
+public:
+ ConfigureDialog( QWidget *parent=0, const char *name=0, bool modal=true );
+ ~ConfigureDialog();
+
+protected:
+ void hideEvent( QHideEvent *i );
+
+};
+
+#endif
diff --git a/certmanager/conf/dirservconfigpage.cpp b/certmanager/conf/dirservconfigpage.cpp
new file mode 100644
index 000000000..7711ca2e2
--- /dev/null
+++ b/certmanager/conf/dirservconfigpage.cpp
@@ -0,0 +1,296 @@
+/*
+ dirservconfigpage.cpp
+
+ This file is part of kleopatra
+ Copyright (c) 2004 Klar�lvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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 "dirservconfigpage.h"
+#include "directoryserviceswidget.h"
+
+#include <kleo/cryptobackendfactory.h>
+
+#include <kmessagebox.h>
+#include <klocale.h>
+#include <kdebug.h>
+#include <kconfig.h>
+#include <knuminput.h>
+#include <kdialog.h>
+
+#include <qhbox.h>
+#include <qlabel.h>
+#include <qdatetimeedit.h>
+#include <qcheckbox.h>
+#include <qlayout.h>
+
+#include <kdepimmacros.h>
+
+#if 0 // disabled, since it is apparently confusing
+// For sync'ing kabldaprc
+class KABSynchronizer
+{
+public:
+ KABSynchronizer()
+ : mConfig( "kabldaprc" ) {
+ mConfig.setGroup( "LDAP" );
+ }
+
+ KURL::List readCurrentList() const {
+
+ KURL::List lst;
+ // stolen from kabc/ldapclient.cpp
+ const uint numHosts = mConfig.readUnsignedNumEntry( "NumSelectedHosts" );
+ for ( uint j = 0; j < numHosts; j++ ) {
+ const QString num = QString::number( j );
+
+ KURL url;
+ url.setProtocol( "ldap" );
+ url.setPath( "/" ); // workaround KURL parsing bug
+ const QString host = mConfig.readEntry( QString( "SelectedHost" ) + num ).stripWhiteSpace();
+ url.setHost( host );
+
+ const int port = mConfig.readUnsignedNumEntry( QString( "SelectedPort" ) + num );
+ if ( port != 0 )
+ url.setPort( port );
+
+ const QString base = mConfig.readEntry( QString( "SelectedBase" ) + num ).stripWhiteSpace();
+ url.setQuery( base );
+
+ const QString bindDN = mConfig.readEntry( QString( "SelectedBind" ) + num ).stripWhiteSpace();
+ url.setUser( bindDN );
+
+ const QString pwdBindDN = mConfig.readEntry( QString( "SelectedPwdBind" ) + num ).stripWhiteSpace();
+ url.setPass( pwdBindDN );
+ lst.append( url );
+ }
+ return lst;
+ }
+
+ void writeList( const KURL::List& lst ) {
+
+ mConfig.writeEntry( "NumSelectedHosts", lst.count() );
+
+ KURL::List::const_iterator it = lst.begin();
+ KURL::List::const_iterator end = lst.end();
+ unsigned j = 0;
+ for( ; it != end; ++it, ++j ) {
+ const QString num = QString::number( j );
+ KURL url = *it;
+
+ Q_ASSERT( url.protocol() == "ldap" );
+ mConfig.writeEntry( QString( "SelectedHost" ) + num, url.host() );
+ mConfig.writeEntry( QString( "SelectedPort" ) + num, url.port() );
+
+ // KURL automatically encoded the query (e.g. for spaces inside it),
+ // so decode it before writing it out
+ const QString base = KURL::decode_string( url.query().mid(1) );
+ mConfig.writeEntry( QString( "SelectedBase" ) + num, base );
+ mConfig.writeEntry( QString( "SelectedBind" ) + num, url.user() );
+ mConfig.writeEntry( QString( "SelectedPwdBind" ) + num, url.pass() );
+ }
+ mConfig.sync();
+ }
+
+private:
+ KConfig mConfig;
+};
+
+#endif
+
+static const char s_dirserv_componentName[] = "dirmngr";
+static const char s_dirserv_groupName[] = "LDAP";
+static const char s_dirserv_entryName[] = "LDAP Server";
+
+static const char s_timeout_componentName[] = "dirmngr";
+static const char s_timeout_groupName[] = "LDAP";
+static const char s_timeout_entryName[] = "ldaptimeout";
+
+static const char s_maxitems_componentName[] = "dirmngr";
+static const char s_maxitems_groupName[] = "LDAP";
+static const char s_maxitems_entryName[] = "max-replies";
+
+static const char s_addnewservers_componentName[] = "dirmngr";
+static const char s_addnewservers_groupName[] = "LDAP";
+static const char s_addnewservers_entryName[] = "add-servers";
+
+DirectoryServicesConfigurationPage::DirectoryServicesConfigurationPage( QWidget * parent, const char * name )
+ : KCModule( parent, name )
+{
+ mConfig = Kleo::CryptoBackendFactory::instance()->config();
+ QVBoxLayout* lay = new QVBoxLayout( this, 0, KDialog::spacingHint() );
+ Kleo::CryptoConfigEntry* entry = configEntry( s_dirserv_componentName, s_dirserv_groupName, s_dirserv_entryName,
+ Kleo::CryptoConfigEntry::ArgType_LDAPURL, true );
+ mWidget = new Kleo::DirectoryServicesWidget( entry, this );
+ lay->addWidget( mWidget );
+ connect( mWidget, SIGNAL( changed() ), this, SLOT( slotChanged() ) );
+
+ // LDAP timeout
+ QHBox* box = new QHBox( this );
+ box->setSpacing( KDialog::spacingHint() );
+ lay->addWidget( box );
+ QLabel* label = new QLabel( i18n( "LDAP &timeout (minutes:seconds)" ), box );
+ mTimeout = new QTimeEdit( box );
+ mTimeout->setDisplay( QTimeEdit::Minutes | QTimeEdit::Seconds );
+ connect( mTimeout, SIGNAL( valueChanged( const QTime& ) ), this, SLOT( slotChanged() ) );
+ label->setBuddy( mTimeout );
+ QWidget* stretch = new QWidget( box );
+ box->setStretchFactor( stretch, 2 );
+
+ // Max number of items returned by queries
+ box = new QHBox( this );
+ box->setSpacing( KDialog::spacingHint() );
+ lay->addWidget( box );
+ mMaxItems = new KIntNumInput( box );
+ mMaxItems->setLabel( i18n( "&Maximum number of items returned by query" ), Qt::AlignLeft | Qt::AlignVCenter );
+ mMaxItems->setMinValue( 0 );
+ connect( mMaxItems, SIGNAL( valueChanged(int) ), this, SLOT( slotChanged() ) );
+ stretch = new QWidget( box );
+ box->setStretchFactor( stretch, 2 );
+
+#ifdef NOT_USEFUL_CURRENTLY
+ mAddNewServersCB = new QCheckBox( i18n( "Automatically add &new servers discovered in CRL distribution points" ), this );
+ connect( mAddNewServersCB, SIGNAL( clicked() ), this, SLOT( slotChanged() ) );
+ lay->addWidget( mAddNewServersCB );
+#endif
+
+#ifndef HAVE_UNBROKEN_KCMULTIDIALOG
+ load();
+#endif
+}
+
+void DirectoryServicesConfigurationPage::load()
+{
+ mWidget->load();
+
+ mTimeoutConfigEntry = configEntry( s_timeout_componentName, s_timeout_groupName, s_timeout_entryName, Kleo::CryptoConfigEntry::ArgType_UInt, false );
+ if ( mTimeoutConfigEntry ) {
+ QTime time = QTime().addSecs( mTimeoutConfigEntry->uintValue() );
+ //kdDebug() << "timeout:" << mTimeoutConfigEntry->uintValue() << " -> " << time << endl;
+ mTimeout->setTime( time );
+ }
+
+ mMaxItemsConfigEntry = configEntry( s_maxitems_componentName, s_maxitems_groupName, s_maxitems_entryName, Kleo::CryptoConfigEntry::ArgType_UInt, false );
+ if ( mMaxItemsConfigEntry ) {
+ mMaxItems->blockSignals( true ); // KNumInput emits valueChanged from setValue!
+ mMaxItems->setValue( mMaxItemsConfigEntry->uintValue() );
+ mMaxItems->blockSignals( false );
+ }
+
+#ifdef NOT_USEFUL_CURRENTLY
+ mAddNewServersConfigEntry = configEntry( s_addnewservers_componentName, s_addnewservers_groupName, s_addnewservers_entryName, Kleo::CryptoConfigEntry::ArgType_None, false );
+ if ( mAddNewServersConfigEntry ) {
+ mAddNewServersCB->setChecked( mAddNewServersConfigEntry->boolValue() );
+ }
+#endif
+}
+
+void DirectoryServicesConfigurationPage::save()
+{
+ mWidget->save();
+
+ QTime time( mTimeout->time() );
+ unsigned int timeout = time.minute() * 60 + time.second();
+ if ( mTimeoutConfigEntry && mTimeoutConfigEntry->uintValue() != timeout )
+ mTimeoutConfigEntry->setUIntValue( timeout );
+ if ( mMaxItemsConfigEntry && mMaxItemsConfigEntry->uintValue() != (uint)mMaxItems->value() )
+ mMaxItemsConfigEntry->setUIntValue( mMaxItems->value() );
+#ifdef NOT_USEFUL_CURRENTLY
+ if ( mAddNewServersConfigEntry && mAddNewServersConfigEntry->boolValue() != mAddNewServersCB->isChecked() )
+ mAddNewServersConfigEntry->setBoolValue( mAddNewServersCB->isChecked() );
+#endif
+
+ mConfig->sync( true );
+
+#if 0
+ // Also write the LDAP URLs to kabldaprc so that they are used by kaddressbook
+ KABSynchronizer sync;
+ const KURL::List toAdd = mWidget->urlList();
+ KURL::List currentList = sync.readCurrentList();
+
+ KURL::List::const_iterator it = toAdd.begin();
+ KURL::List::const_iterator end = toAdd.end();
+ for( ; it != end; ++it ) {
+ // check if the URL is already in currentList
+ if ( currentList.find( *it ) == currentList.end() )
+ // if not, add it
+ currentList.append( *it );
+ }
+ sync.writeList( currentList );
+#endif
+}
+
+void DirectoryServicesConfigurationPage::defaults()
+{
+ mWidget->defaults();
+ if ( mTimeoutConfigEntry )
+ mTimeoutConfigEntry->resetToDefault();
+ if ( mMaxItemsConfigEntry )
+ mMaxItemsConfigEntry->resetToDefault();
+#ifdef NOT_USEFUL_CURRENTLY
+ if ( mAddNewServersConfigEntry )
+ mAddNewServersConfigEntry->resetToDefault();
+#endif
+ load();
+}
+
+extern "C"
+{
+ KDE_EXPORT KCModule *create_kleopatra_config_dirserv( QWidget *parent, const char * )
+ {
+ DirectoryServicesConfigurationPage *page =
+ new DirectoryServicesConfigurationPage( parent, "kleopatra_config_dirserv" );
+ return page;
+ }
+}
+
+// kdelibs-3.2 didn't have the changed signal in KCModule...
+void DirectoryServicesConfigurationPage::slotChanged()
+{
+ emit changed(true);
+}
+
+
+// Find config entry for ldap servers. Implements runtime checks on the configuration option.
+Kleo::CryptoConfigEntry* DirectoryServicesConfigurationPage::configEntry( const char* componentName,
+ const char* groupName,
+ const char* entryName,
+ Kleo::CryptoConfigEntry::ArgType argType,
+ bool isList )
+{
+ Kleo::CryptoConfigEntry* entry = mConfig->entry( componentName, groupName, entryName );
+ if ( !entry ) {
+ KMessageBox::error( this, i18n( "Backend error: gpgconf does not seem to know the entry for %1/%2/%3" ).arg( componentName, groupName, entryName ) );
+ return 0;
+ }
+ if( entry->argType() != argType || entry->isList() != isList ) {
+ KMessageBox::error( this, i18n( "Backend error: gpgconf has wrong type for %1/%2/%3: %4 %5" ).arg( componentName, groupName, entryName ).arg( entry->argType() ).arg( entry->isList() ) );
+ return 0;
+ }
+ return entry;
+}
+
+#include "dirservconfigpage.moc"
diff --git a/certmanager/conf/dirservconfigpage.h b/certmanager/conf/dirservconfigpage.h
new file mode 100644
index 000000000..8c7c75439
--- /dev/null
+++ b/certmanager/conf/dirservconfigpage.h
@@ -0,0 +1,84 @@
+/*
+ dirservconfigpage.h
+
+ This file is part of kleopatra
+ Copyright (c) 2004 Klar�lvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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.
+*/
+
+#ifndef DIRSERVCONFIGPAGE_H
+#define DIRSERVCONFIGPAGE_H
+
+#include <kcmodule.h>
+#include <kleo/cryptoconfig.h>
+#include <kdepimmacros.h>
+
+class QCheckBox;
+class QTimeEdit;
+class KIntNumInput;
+namespace Kleo {
+ class CryptoConfig;
+ class CryptoConfigEntry;
+ class DirectoryServicesWidget;
+}
+
+/**
+ * "Directory Services" configuration page for kleopatra's configuration dialog
+ * The user can configure LDAP servers in this page, to be used for listing/fetching
+ * remote certificates in kleopatra.
+ */
+class KDE_EXPORT DirectoryServicesConfigurationPage : public KCModule {
+ Q_OBJECT
+public:
+ DirectoryServicesConfigurationPage( QWidget * parent=0, const char * name=0 );
+
+ virtual void load();
+ virtual void save();
+ virtual void defaults();
+
+private slots:
+ void slotChanged();
+
+private:
+ Kleo::CryptoConfigEntry* configEntry( const char* componentName,
+ const char* groupName,
+ const char* entryName,
+ Kleo::CryptoConfigEntry::ArgType argType,
+ bool isList );
+
+ Kleo::DirectoryServicesWidget* mWidget;
+ QTimeEdit* mTimeout;
+ KIntNumInput* mMaxItems;
+ QCheckBox* mAddNewServersCB;
+
+ Kleo::CryptoConfigEntry* mTimeoutConfigEntry;
+ Kleo::CryptoConfigEntry* mMaxItemsConfigEntry;
+ Kleo::CryptoConfigEntry* mAddNewServersConfigEntry;
+
+ Kleo::CryptoConfig* mConfig;
+};
+
+#endif
diff --git a/certmanager/conf/dnorderconfigpage.cpp b/certmanager/conf/dnorderconfigpage.cpp
new file mode 100644
index 000000000..44b86b5b8
--- /dev/null
+++ b/certmanager/conf/dnorderconfigpage.cpp
@@ -0,0 +1,77 @@
+/*
+ dnorderconfigpage.cpp
+
+ This file is part of kleopatra, the KDE key manager
+ Copyright (c) 2004 Klar�lvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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 "dnorderconfigpage.h"
+
+#include <ui/dnattributeorderconfigwidget.h>
+#include <kleo/dn.h>
+
+#include <kdepimmacros.h>
+
+#include <qlayout.h>
+
+DNOrderConfigPage::DNOrderConfigPage( QWidget * parent, const char * name )
+ : KCModule( parent, name )
+{
+ QVBoxLayout * vlay = new QVBoxLayout( this );
+ mWidget = Kleo::DNAttributeMapper::instance()->configWidget( this, "mWidget" );
+ vlay->addWidget( mWidget );
+
+ connect( mWidget, SIGNAL(changed()), SLOT(slotChanged()) );
+
+#ifndef HAVE_UNBROKEN_KCMULTIDIALOG
+ load();
+#endif
+}
+
+
+void DNOrderConfigPage::load() {
+ mWidget->load();
+}
+
+void DNOrderConfigPage::save() {
+ mWidget->save();
+}
+
+void DNOrderConfigPage::defaults() {
+ mWidget->defaults();
+}
+
+// kdelibs-3.2 didn't have the changed signal in KCModule...
+void DNOrderConfigPage::slotChanged() {
+ emit changed(true);
+}
+
+extern "C" KDE_EXPORT KCModule * create_kleopatra_config_dnorder( QWidget * parent, const char * ) {
+ return new DNOrderConfigPage( parent, "kleopatra_config_dnorder" );
+}
+
+#include "dnorderconfigpage.moc"
diff --git a/certmanager/conf/dnorderconfigpage.h b/certmanager/conf/dnorderconfigpage.h
new file mode 100644
index 000000000..c874c7527
--- /dev/null
+++ b/certmanager/conf/dnorderconfigpage.h
@@ -0,0 +1,63 @@
+/*
+ dnorderconfigpage.h
+
+ This file is part of kleopatra, the KDE key manager
+ Copyright (c) 2004 Klar�lvdalens Datakonsult AB
+
+ Libkleopatra is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ Libkleopatra 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.
+*/
+
+#ifndef __KLEOPATRA_CONF_DNORDERCONFIGPAGE_H__
+#define __KLEOPATRA_CONF_DNORDERCONFIGPAGE_H__
+
+#include <kcmodule.h>
+
+namespace Kleo {
+ class DNAttributeOrderConfigWidget;
+}
+
+/**
+ * "DN Order" configuration page for kleopatra's configuration dialog
+ */
+class DNOrderConfigPage : public KCModule {
+ Q_OBJECT
+public:
+ DNOrderConfigPage( QWidget * parent=0, const char * name=0 );
+
+ /*! reimplementation */
+ void load();
+ /*! reimplementation */
+ void save();
+ /*! reimplementation */
+ void defaults();
+
+private slots:
+ void slotChanged();
+
+private:
+ Kleo::DNAttributeOrderConfigWidget * mWidget;
+};
+
+#endif // __KLEOPATRA_CONF_DNORDERCONFIGPAGE_H__
diff --git a/certmanager/conf/kleopatra_config_appear.desktop b/certmanager/conf/kleopatra_config_appear.desktop
new file mode 100644
index 000000000..8cbeaecf8
--- /dev/null
+++ b/certmanager/conf/kleopatra_config_appear.desktop
@@ -0,0 +1,181 @@
+[Desktop Entry]
+Icon=looknfeel
+Type=Service
+ServiceTypes=KCModule
+DocPath=kleopatra/configuration-appearance.html
+
+X-KDE-ModuleType=Library
+X-KDE-Library=kleopatra
+X-KDE-FactoryName=kleopatra_config_appear
+X-KDE-HasReadOnlyMode=false
+X-KDE-ParentApp=kleopatra
+X-KDE-ParentComponents=kleopatra
+X-KDE-CfgDlgHierarchy=Kleopatra
+
+Name=Appearance
+Name[ar]=المظهر
+Name[be]=Знешні выгляд
+Name[bg]=Външен вид
+Name[br]=Neuziadur
+Name[bs]=Izgled
+Name[ca]=Aparença
+Name[cs]=Vzhled
+Name[cy]=Golwg
+Name[da]=Udseende
+Name[de]=Erscheinungsbild
+Name[el]=Εμφάνιση
+Name[eo]=Prezentado
+Name[es]=Apariencia
+Name[et]=Välimus
+Name[eu]=Itxura
+Name[fa]=ظاهر
+Name[fi]=Ulkoasu
+Name[fr]=Apparence
+Name[fy]=Uterlik
+Name[ga]=Cuma
+Name[gl]=Apariencia
+Name[he]=מראה
+Name[hr]=Izgled
+Name[hu]=Megjelenés
+Name[is]=Útlit
+Name[it]=Aspetto
+Name[ja]=外観
+Name[ka]=იერსახე
+Name[kk]=Сыртқы көрінісі
+Name[km]=រូបរាង
+Name[ko]=모양
+Name[lt]=Išvaizda
+Name[mk]=Изглед
+Name[ms]=Rupa
+Name[nb]=Utseende
+Name[nds]=Utsehn
+Name[ne]=मोहडा
+Name[nl]=Uiterlijk
+Name[nn]=Utsjånad
+Name[pl]=Wygląd
+Name[pt]=Aparência
+Name[pt_BR]=Aparência
+Name[ru]=Внешний вид
+Name[rw]=Imigaragarire
+Name[se]=Fárda
+Name[sk]=Vzhľad
+Name[sl]=Videz
+Name[sr]=Изглед
+Name[sr@Latn]=Izgled
+Name[sv]=Uppträdande
+Name[ta]=தோற்றம்
+Name[tg]=Намуди зоҳирӣ
+Name[tr]=Görünüm
+Name[uk]=Вигляд
+Name[uz]=Koʻrinishi
+Name[uz@cyrillic]=Кўриниши
+Name[zh_CN]=外观
+Comment=Colors & Fonts Configuration
+Comment[af]=Kleur en skrif tipe opstelling
+Comment[ar]=إعدادات الألوان و المحارف
+Comment[be]=Настаўленні колераў і шрыфтоў
+Comment[bg]=Настройки на цветовете и шрифтовете
+Comment[bs]=Podešavanje boja i fontova
+Comment[ca]=Configuració de colors i lletres
+Comment[cs]=Nastavení barev a písem
+Comment[da]=Indstilling af farver & skrifttype
+Comment[de]=Farb- & Schrifteneinrichtung
+Comment[el]=Ρύθμιση χρωμάτων & γραμματοσειρών
+Comment[en_GB]=Colours & Fonts Configuration
+Comment[eo]=Kolora kaj Tipara Agordo
+Comment[es]=Configuración de colores y tipografías
+Comment[et]=Värvide ja fontide seadistamine
+Comment[eu]=Kolore eta letra-tipoen konfigurazioa
+Comment[fa]=پیکربندی رنگها و قلمها
+Comment[fi]=Värien ja kirjasinten asetukset
+Comment[fr]=Configuration des polices et des couleurs
+Comment[fy]=Kleur- en lettertype-ynstellings
+Comment[ga]=Cumraíocht na nDathanna/gClófhoirne
+Comment[gl]=Configuración de Cores e Fontes
+Comment[he]=תצורת צבעים וגופנים
+Comment[hu]=A színek és betűtípusok beállítása
+Comment[is]=Stilling lita & leturgerða
+Comment[it]=Configurazione tipi di carattere e colori
+Comment[ja]=色とフォントの設定
+Comment[ka]=ფერთა და შრიფტთა კონფიგურაცია
+Comment[kk]=Түс & Қаріп параметрлері
+Comment[km]=ការ​កំណត់​រចនាសម្ព័ន្ធ​ពណ៌ & ពុម្ពអក្សរ
+Comment[ko]=색과 글꼴 설정
+Comment[lt]=Spalvų ir šriftų konfigūravimas
+Comment[mk]=Конфигурација на бои и фонтови
+Comment[ms]=Warna & Konfigurasi fon
+Comment[nb]=Oppsett av farger og skrifttyper
+Comment[nds]=Klören un Schriftoorden instellen
+Comment[ne]=रङ र फन्ट कन्फिगरेसन
+Comment[nl]=Kleur- en lettertype-instellingen
+Comment[nn]=Oppsett av fargar og skrifter
+Comment[pl]=Konfiguracja czcionek i kolorów
+Comment[pt]=Configuração das Cores e Tipos de Letra
+Comment[pt_BR]=Configuração de Cores & Fontes
+Comment[ru]=Настройка цветов и шрифтов
+Comment[se]=Heivet ivnniid ja fonttaid
+Comment[sk]=Nastavenie písiem a farieb
+Comment[sl]=Nastavitev pisav in barv
+Comment[sr]=Подешавање боја и фонтова
+Comment[sr@Latn]=Podešavanje boja i fontova
+Comment[sv]=Inställning av färger och teckensnitt
+Comment[ta]=வண்ணங்கள்& எழுத்துருக்கள் கட்டமைப்பு
+Comment[tg]=Танзимоти ранг ва ҳуруф
+Comment[tr]=Renkler ve Yazı Tipleri Yapılandırması
+Comment[uk]=Налаштування кольорів і шрифтів
+Comment[zh_CN]=颜色和字体配置
+Comment[zh_TW]=設定顏色與字型
+Keywords=color,font, configuration
+Keywords[af]=kleur,skrif tipe,opstelling,color,font
+Keywords[ar]=لون,حرف, إعدادات,محرف,ألوان
+Keywords[be]=колер, шрыфт, канфігурацыя, color, font, configuration
+Keywords[bg]=цвят, шрифт, настройване, настройки color, font, configuration
+Keywords[br]=liv,nodrezh, kefluniadur
+Keywords[bs]=color,font, configuration,boja,boje,font,podešavanje
+Keywords[ca]=color,lletres, configuració
+Keywords[cs]=barva,písmo,nastavení
+Keywords[da]=farve,skrifttype,indstilling
+Keywords[de]=Farben,Schriftarten,Konfiguration,Einrichtung,Einstellungen
+Keywords[el]=χρώμα,γραμματοσειρά, ρύθμιση
+Keywords[en_GB]=colour,font, configuration
+Keywords[eo]=koloro,tiparo, agordo
+Keywords[es]=color, tipografía, configuración
+Keywords[et]=värv, font, seadistamine
+Keywords[eu]=kolore,letra-tipo, konfigurazioa
+Keywords[fa]=رنگ، قلم، پیکربندی
+Keywords[fi]=värit,kirjasimet,asetukset
+Keywords[fr]=couleur,police,configuration,paramètres,réglages,couleurs,polices
+Keywords[fy]=kleur,kleuren,font,lettertype,konfiguraasje,ynstellings,setup,opset
+Keywords[ga]=dath,cló,cumraíocht
+Keywords[gl]=cor,fonte, configuración
+Keywords[he]=color,font, configuration,צבע,צבעים, גופנים, גופן, תצורה, הגדרה
+Keywords[hu]=szín,betűtípus,beállítások
+Keywords[is]=litir,letur, stillingar
+Keywords[it]=colori, font, caratteri, configurazione
+Keywords[ja]=色,フォント,設定
+Keywords[ka]=ფერები,შრიფტები, კონფიგურაცია
+Keywords[km]=ពណ៌,ពុម្ពអក្សរ,ការ​កំណត់​រចនាសម្ព័ន្ធ
+Keywords[ko]=색,글꼴,설정
+Keywords[lt]=color,font, configuration, spalvų, šriftų konfigūravimas
+Keywords[mk]=color,font,configuration,боја,фонт,конфигурација
+Keywords[ms]=warna,fon, konfigurasi
+Keywords[nb]=farge,skrifttype,oppsett
+Keywords[nds]=Klöör,Schriftoort,instellen
+Keywords[ne]=रङ, फन्ट, कन्फिगरेसन
+Keywords[nl]=kleur,kleuren,font,lettertype,configuratie,instellingen,setup
+Keywords[nn]=farge,skrift,oppsett
+Keywords[pl]=kolor,czcionki,kolory,konfiguracja
+Keywords[pt]=cor,tipo de letra, configuração
+Keywords[pt_BR]=cor,fonte,configurar,configurações
+Keywords[ru]=цвета,шрифты,настройка
+Keywords[se]=ivdni,fonta,heivehus
+Keywords[sk]=farba,písmo,nastavenie
+Keywords[sl]=barva,barve,pisava,pisave,nastavi,nastavitve
+Keywords[sr]=боја,фонт,подешавања
+Keywords[sr@Latn]=boja,font,podešavanja
+Keywords[sv]=färger,teckensnitt, inställningar
+Keywords[ta]=Comment=வண்ணம்,எழுத்துரு, கட்டமைப்பு
+Keywords[tg]=рангҳо,ҳуруфҳо,танзимот
+Keywords[tr]=renk,yazı tipi, yapılandırma
+Keywords[uk]=колір, шрифт, налаштування
+Keywords[zh_CN]=color,font,configuration,颜色,字体,配置
diff --git a/certmanager/conf/kleopatra_config_dirserv.desktop b/certmanager/conf/kleopatra_config_dirserv.desktop
new file mode 100644
index 000000000..7a50a7c41
--- /dev/null
+++ b/certmanager/conf/kleopatra_config_dirserv.desktop
@@ -0,0 +1,169 @@
+[Desktop Entry]
+Icon=network
+Type=Service
+ServiceTypes=KCModule
+DocPath=kleopatra/configuration.html#configuration-directory-services
+
+X-KDE-ModuleType=Library
+X-KDE-Library=kleopatra
+X-KDE-FactoryName=kleopatra_config_dirserv
+X-KDE-HasReadOnlyMode=false
+X-KDE-ParentApp=kleopatra
+X-KDE-ParentComponents=kleopatra
+X-KDE-CfgDlgHierarchy=Kleopatra
+
+Name=Directory Services
+Name[ar]=خدمات الدليل
+Name[bg]=Директорийни услуги
+Name[bs]=Imenički servisi
+Name[ca]=Serveis de directori
+Name[cs]=Adresářové služby
+Name[da]=Opslagstjeneste
+Name[de]=Verzeichnisdienste
+Name[el]=Υπηρεσίες καταλόγου
+Name[eo]=Dosierujaj Servoj
+Name[es]=Servicios de directorio
+Name[et]=Kataloogiteenused
+Name[eu]=Direktorio zerbitzuak
+Name[fa]=خدمات فهرست راهنما
+Name[fi]=Hakemistopalvelut
+Name[fr]=Services d'annuaire
+Name[fy]=Maptsjinsten
+Name[ga]=Seirbhísí Eolaire
+Name[gl]=Servicios de Directorio
+Name[he]=שירותי ספרייה
+Name[hu]=Címtárszolgáltatások
+Name[is]=Nafnaþjónustur
+Name[it]=Servizi Directory
+Name[ja]=ディレクトリサービス
+Name[ka]=საცნობარო მომსახურება
+Name[kk]=Каталог қызметтері
+Name[km]=សេវា​ថត
+Name[ko]=디렉터리 서비스
+Name[lt]=Aplankų tarnybos
+Name[mk]=Именички сервиси
+Name[ms]=Servis Direktori
+Name[nb]=Katalogtjenere
+Name[nds]=Vertekendeensten
+Name[ne]=डाइरेक्टरी कार्य
+Name[nl]=Mapdiensten
+Name[nn]=Katalogtenester
+Name[pa]=ਡਾਇਰੈਕਟਰੀ ਸੇਵਾਵਾਂ
+Name[pl]=Usługi katalogowe
+Name[pt]=Serviços de Directório
+Name[pt_BR]=Serviços de Diretório
+Name[ru]=Службы каталогов
+Name[se]=Ohcobálvalusat
+Name[sk]=Adresárové služby
+Name[sl]=Imeniške storitve
+Name[sr]=Сервис директоријума
+Name[sr@Latn]=Servis direktorijuma
+Name[sv]=Katalogtjänster
+Name[ta]= அடைவு சேவைகள்
+Name[tg]=Кӯмакҳои каталог
+Name[tr]=Dizin Servisleri
+Name[uk]=Служби каталогів
+Name[zh_CN]=目录服务
+Name[zh_TW]=目錄服務
+Comment=Configuration of LDAP directory services
+Comment[af]=Opstelling van LDAP gids diens
+Comment[bg]=Настройки на директорийните услуги LDAP
+Comment[bs]=Podešavanje LDAP usluge imenika
+Comment[ca]=Configuració dels serveis de directori LDAP
+Comment[cs]=Nastavení adresářových služeb LDAP
+Comment[da]=Indstilling af LDAP opslagstjeneste
+Comment[de]=Einrichtung von LDAP-Verzeichnisdiensten
+Comment[el]=Ρυθμίσεις των υπηρεσιών καταλόγου LDAP
+Comment[eo]=Agordo de LDAP dosierujaj servoj
+Comment[es]=Configuración de los servicios de directorio LDAP
+Comment[et]=LDAP kataloogiteenuste seadistused
+Comment[eu]=LDAP direktorio zerbitzuen konfigurazioa
+Comment[fa]=پیکربندی خدمات فهرست راهنمای LDAP
+Comment[fi]=Hakemistopalveluiden asetukset
+Comment[fr]=Configuration des services d'annuaire LDAP
+Comment[fy]=Konfiguraasje foar LDAP-tsjinsten
+Comment[gl]=Configuración dos servicios de directorio LDAP
+Comment[he]=תצורה של שירותי ספרייה עבור LDAP
+Comment[hu]=Az LDAP címtárszolgáltatások beállításai
+Comment[is]=Stillingar LDAP uppflettingaþjónustunnar
+Comment[it]=Configurazione servizi LDAP
+Comment[ja]=LDAP ディレクトリサービスの設定
+Comment[ka]=LDAP საცნობარო მომსახურების კონფიგურაცია
+Comment[kk]=LDAP каталог қызметтер параметрлері
+Comment[km]=ការ​កំណត់​រចនាសម្ព័ន្ធ​របស់​សេវា​ថត LDAP
+Comment[ko]=LDAP 디렉터리 서비스 설정
+Comment[lt]=LDAP aplankų tarnybų konfigūravimas
+Comment[mk]=Конфигурација на LDAP-именички сервиси
+Comment[ms]=Konfigurasi LDAP servis direktori
+Comment[nb]=Oppsett av LDAP katalogtjenester
+Comment[nds]=LDAP-Vertekendeensten instellen
+Comment[ne]=LDAP डाइरेक्टरी कार्यको कन्फिगरेसन
+Comment[nl]=Configuratie voor LDAP-diensten
+Comment[nn]=Oppsett av LDAP-katalogtenester
+Comment[pl]=Konfiguracja usług katalogowych LDAP
+Comment[pt]=Configuração dos serviços de directório LDAP
+Comment[pt_BR]=Configuração dos serviços de diretório LDAP
+Comment[ru]=Настройка служб каталогов LDAP
+Comment[se]=Heivet LDAP-ohcobálvalusaid
+Comment[sk]=Nastavenie adresárových služieb LDAP
+Comment[sl]=Nastavitve imeniških storitev LDAP
+Comment[sr]= Подешавања LDAP сервиса директоријума
+Comment[sr@Latn]= Podešavanja LDAP servisa direktorijuma
+Comment[sv]=Inställning av LDAP-katalogtjänster
+Comment[ta]= LDAP அடைவு சேவைகளின் கட்டமைப்பு
+Comment[tg]=Танзимоти кӯмакҳои каталоги LDAP
+Comment[tr]=LDAP dizin servislerinin yapılandırması
+Comment[uk]=Налаштування служб каталогів LDAP
+Comment[zh_CN]=LDAP 目录服务配置
+Comment[zh_TW]=設定 LDAP 目錄服務
+Keywords=ldap,directory,services
+Keywords[af]=ldap,directory,services,gids
+Keywords[be]=каталёг,сэрвісы,ldap,directory,services
+Keywords[bg]=директорийни, услуги, ldap, directory, services
+Keywords[br]=ldap,renkell,servijeroù
+Keywords[bs]=ldap,directory,services,imenik,servis,usluga,imenički,imeničke,usluge
+Keywords[ca]=ldap,directori,serveis
+Keywords[cs]=LDAP,adresář,služby
+Keywords[da]=ldap,opslag,tjenester
+Keywords[de]=LDAP,Verzeichnis,Dienste,Verzeichnisdienst
+Keywords[el]=ldap,κατάλογος,υπηρεσίες
+Keywords[eo]=ldap,dosierujo,servoj
+Keywords[es]=ldap,directorio,servicios
+Keywords[et]=ldap,kataloog,teenused
+Keywords[eu]=Idap, direktorio, zerbitzuak
+Keywords[fa]=ldap، فهرست راهنما، خدمات
+Keywords[fi]=ldap,hakemisto,palvelut
+Keywords[fr]=ldap,annuaire,annuaires,service,services
+Keywords[fy]=ldap,directory,services,triemtafel,tsjinsten
+Keywords[ga]=ldap,eolaire,seirbhísí
+Keywords[gl]=ldap,directorio,servicios
+Keywords[he]=ldap,directory,services,ספרייה,שירותים
+Keywords[hu]=ldap,címtár,szolgáltatások
+Keywords[is]=ldap,directory,services,nafnaþjónusta
+Keywords[it]=ldap, servizi, directory
+Keywords[ja]=ldap,ディレクトリ,サービス
+Keywords[ka]=ldap,ცნობარი,მომსახურება
+Keywords[km]=ldap,ថត,សេវា
+Keywords[ko]=ldap,디렉터리,서비스
+Keywords[lt]=ldap,directory,services,aplankai,tarnybos
+Keywords[mk]=ldap,directory,services,именик,сервиси
+Keywords[ms]=ldap,direktori,servis
+Keywords[nb]=ldap,mappe,tjenester
+Keywords[nds]=LDAP,Verteken,Deensten
+Keywords[ne]=ldap,डाइरेक्टरी,कार्य
+Keywords[nn]=ldap,katalog,tenester
+Keywords[pl]=katalog,usługi katalogowe,usługi,LDAP
+Keywords[pt]=ldap,directório,serviços
+Keywords[pt_BR]=ldap,diretório,serviços
+Keywords[ru]=LDAP,службы каталогов
+Keywords[se]=ldap,ohcu,bálvalusat
+Keywords[sk]=ldap,adresár,služby
+Keywords[sl]=ldap,imenik,storitve
+Keywords[sr]=ldap,директоријум,сервиси
+Keywords[sr@Latn]=ldap,direktorijum,servisi
+Keywords[sv]=ldap,katalog,tjänster
+Keywords[ta]=ldap, அடைவு, சேவைகள்
+Keywords[tg]=ldap,кӯмакҳои каталог
+Keywords[tr]=ldap,dizin,servisler
+Keywords[uk]=ldap,служби,каталогів
+Keywords[zh_CN]=ldap,directory,services,目录,服务
diff --git a/certmanager/conf/kleopatra_config_dnorder.desktop b/certmanager/conf/kleopatra_config_dnorder.desktop
new file mode 100644
index 000000000..dc46c3314
--- /dev/null
+++ b/certmanager/conf/kleopatra_config_dnorder.desktop
@@ -0,0 +1,164 @@
+[Desktop Entry]
+Icon=looknfeel
+Type=Service
+ServiceTypes=KCModule
+DocPath=kleopatra/configuration-dn-order.html
+
+X-KDE-ModuleType=Library
+X-KDE-Library=kleopatra
+X-KDE-FactoryName=kleopatra_config_dnorder
+X-KDE-HasReadOnlyMode=false
+X-KDE-ParentApp=kleopatra
+X-KDE-ParentComponents=kleopatra
+X-KDE-CfgDlgHierarchy=Kleopatra
+
+Name=DN-Attribute Order
+Name[bg]=Подредба
+Name[bs]=Redoslijed DN atributa
+Name[ca]=Ordre d'atributs DN
+Name[cs]=Pořadí DN atributů
+Name[da]=DN-Attributrækkefølge
+Name[de]=DN-Attribut-Ordnung
+Name[el]=Σειρά ιδιότητας DN
+Name[eo]=DN-Atributa Sinsekvo
+Name[es]=Orden de atributos DN
+Name[et]=DN-atribuutide järjekord
+Name[eu]=DN-atributu ordena
+Name[fa]=ترتیب خصیصۀ DN
+Name[fi]=DN-attribuuttien järjestys
+Name[fr]=Ordre des attributs DN
+Name[fy]=DN-Attribuutoarder
+Name[gl]=Orde de DN-Attribute
+Name[he]=סדר של מאפייני DN
+Name[hu]=DN-attribútumsorrend
+Name[is]=DN eiginleikaröðun
+Name[it]=Attributi DN, ordine
+Name[ja]=DN 属性順位
+Name[ka]=DN ატრიბუტთა რიგი
+Name[kk]=DN-атрибуттер реті
+Name[km]=លំដាប់​គុណលក្ខណៈ DN
+Name[ko]=DN 분배 순서
+Name[lt]=DN-Savybių tvarka
+Name[mk]=Редослед на DN-атрибути
+Name[ms]=Tertib atribut DN
+Name[nb]=DN-Attributtrekkefølge
+Name[nds]=DN-Egenschappenreeg
+Name[ne]=डीएन विशेषता आदेश
+Name[nl]=DN-Attribuutvolgorde
+Name[nn]=DN-attributtrekkjefølgje
+Name[pl]=Porządek atrybutów DN
+Name[pt]=Ordem de Atributos DN
+Name[pt_BR]=Ordem do Atributo DN
+Name[ru]=Порядок атрибутов DN
+Name[se]=DN-attribuhttaortnet
+Name[sk]=Poradie atribútov DN
+Name[sl]=Vrstni red atributov DN
+Name[sr]=DN-Атрибут ред
+Name[sr@Latn]=DN-Atribut red
+Name[sv]=DN-egenskapsordning
+Name[ta]=DN-பண்புக்கூறு வரிசை
+Name[tg]=Тартиби мушаххасияти DN
+Name[tr]=DN-Öznitelik Sırası
+Name[uk]=Порядок атрибутів DN
+Name[zh_CN]=DN 属性顺序
+Name[zh_TW]=DN-屬性順序
+Comment=Configure the order in which DN attributes are shown
+Comment[af]=Stel die volgorde op waarin DN eienskappe vertoon word
+Comment[bg]=Настройки на подредбата на атрибутите на индекса (DN)
+Comment[bs]=Podesite redoslijed kojim će biti prikazani DN atributi
+Comment[ca]=Configura l'ordre en què es mostren els atributs DN
+Comment[cs]=Nastavení pořadí zobrazení DN atributů
+Comment[da]=Indstil rækkefølgen i hvilken DN-attributter vises
+Comment[de]=Einrichtung für die Anzeigereihenfolge der DN-Attribute
+Comment[el]=Ρύθμιση της σειράς εμφάνισης των ιδιοτήτων DN
+Comment[eo]=Agordi la sinsekvon en kiu DN-atributoj aperas
+Comment[es]=Configura el orden en el que se muestran los atributos DN
+Comment[et]=DN-atribuutide näitamise järjekorra seadistamine
+Comment[eu]=Konfiguratu DN atributuak zein ordenetan erakutsiko diren
+Comment[fa]=پیکربندی ترتیبی که خصیصه‌های DN طبق آن نمایش داده می‌شوند
+Comment[fi]=Määrittele missä järjestyksessä DN-attribuutit näytetään
+Comment[fr]=Configurer l'ordre dans lequel les attributs DN sont affichés
+Comment[fy]=De folchoarder fan de DN-atributen ynstelle
+Comment[gl]=Configurar a orde en que se amosan os atributos DN
+Comment[he]=הגדרה של הסדר שבהם מאפייני DN מוצגים
+Comment[hu]=A DN-attribútumok megjelenítési sorrendjének beállítása
+Comment[is]=Stilla röð DN eiginleikanna
+Comment[it]=Configura l'ordine in cui sono mostrati gli attributi DN
+Comment[ja]=DN 属性を表示する順位を設定
+Comment[ka]=DN ატრიბუტთა ჩვენების რიგის კონფიგურაცია
+Comment[kk]=DN атрибуттерді көрсету ретін баптау
+Comment[km]=កំណត់​រចនាសម្ព័ន្ធ​លំដាប់ ដែល​ត្រូវ​បង្ហាញ​គុណលក្ខណៈ DN
+Comment[lt]=Konfigūruoti DN savybių rodymo tvarką
+Comment[mk]=Конфигурирајте го редоследот по кој се покажуваат DN-атрибутите
+Comment[ms]=Konfigur tertib yang atribut DN dipaparkan
+Comment[nb]=Still inn rekkefølgen DN-attributtene er sortert i
+Comment[nds]=De Reeg bi't Wiesen vun DN-Egenschappen fastleggen
+Comment[ne]=डीएन विशेषता देखिने आदेश कन्फिगर गर्नुहोस्
+Comment[nl]=Stel de volgorde in van de DN-attributen
+Comment[nn]=Vel kva rekkjefølgje DN-attributtane er sorterte i
+Comment[pl]=Konfiguracja kolejności wyświetlania atrybutów DN
+Comment[pt]=Configuração da ordem em que os atributos DN são mostrados
+Comment[pt_BR]=Configura a ordem na qual os atributos DN são mostrados
+Comment[ru]=Настройка порядка показываемых атрибутов DN
+Comment[se]=Vállje makkár ortnegis DN-attribuhttat sorterejuvvojit
+Comment[sk]=Nastavenie poradia, v ktorom sú zobrazené atribúty DN
+Comment[sl]=Nastavite vrstni red, v katerem so prikazani atributi DN
+Comment[sr]=Подешава ред којим су приказани DN атрибути
+Comment[sr@Latn]=Podešava red kojim su prikazani DN atributi
+Comment[sv]=Anpassa ordningen som DN-egenskaper visas
+Comment[ta]= DN விவரங்கள் எந்த வரிசையில் உள்ளதோ அப்படியே அமை
+Comment[tg]=Танзимоти мушаххасиятҳои намоишшавандаи тартибии DN
+Comment[tr]=DN özniteliklerinin hangi sıralama ile gösterileceğini yapılandır
+Comment[uk]=Налаштування порядку показу атрибутів DN
+Comment[zh_CN]=配置 DN 属性显示的顺序
+Comment[zh_TW]=設定 DN 屬性顯示順序
+Keywords=DN,order,RDN,attribute
+Keywords[af]=DN,order,RDN,attribute,volgorde,eienskap
+Keywords[be]=парадак,атрыбут,DN,order,RDN,attribute
+Keywords[bg]=индекс, ред, подредба, атрибут DN, order, RDN, attribute
+Keywords[bs]=DN,order,RDN,attribute,redoslijed,atribut
+Keywords[ca]=DN,ordre,RDN,atribut
+Keywords[cs]=DN,pořadí,RDN,atribut
+Keywords[da]=DN,rækkefølge,RDN,attribut
+Keywords[de]=DN,Ordnung,RDN,Attribut
+Keywords[el]=DN,σειρά,RDN,ιδιότητα
+Keywords[eo]=DN,sinsekvo,ordo,RDN,atributo
+Keywords[es]=DN,orden,RDN,atributo
+Keywords[et]=DN,järjekord,RDN,atribuut
+Keywords[eu]=DN, ordena, RDN, atributua
+Keywords[fa]=DN، ترتیب، RDN، خصیصه
+Keywords[fi]=DN,järjestys,RDN,attribuutti
+Keywords[fr]=DN,ordre,RDN,attribut
+Keywords[fy]=DN,Fochoarder,RDN,attribuut
+Keywords[ga]=DN,ord,RDN,aitreabúid
+Keywords[gl]=DN,orde,RDN,atributo
+Keywords[he]=DN,order,RDN,attribute, סדר, מאפיין
+Keywords[hu]=DN,sorrend,RDN,attribútum
+Keywords[is]=DN,röð,order,RDN,attribute
+Keywords[it]=DN,ordine,RDN,attributi
+Keywords[ja]=DN,順位,RDN,属性
+Keywords[ka]=DN,რიგი,RDN,ატრიბუტი
+Keywords[km]=DN,លំដាប់,RDN,គុណលក្ខណៈ
+Keywords[lt]=DN,order,RDN,attribute,savybė,tvarka
+Keywords[mk]=DN,order,RDN,attribute,редослед,атрибут
+Keywords[ms]=DN,susunan,RDN,atribut
+Keywords[nb]=DN,orden,RDN,attributt
+Keywords[nds]=DN,Reeg,RDN,Egenschap
+Keywords[ne]=डीएन,क्रम,आरडीएन, विशेषता
+Keywords[nl]=DN,volgorde,RDN,attribuut
+Keywords[nn]=DN,rekkjefølgje,RDN,attributt
+Keywords[pl]=DN,kolejność,RDN,atrybuty
+Keywords[pt]=DN,ordem,RDN,atributo
+Keywords[pt_BR]=DN, ordem, RDN,atributo
+Keywords[ru]=DN,порядок,RDN,атрибут
+Keywords[se]=DN,ortnet,RDN,attribuhtta
+Keywords[sk]=DN,poradie,RDN,atribút
+Keywords[sl]=DN,vrstni red,RDN,atribut
+Keywords[sr]=DN,ред,RDN,атрибут
+Keywords[sr@Latn]=DN,red,RDN,atribut
+Keywords[sv]=DN,ordning,RDN,egenskap
+Keywords[ta]=DN,வரிசை,RDN,குணம்
+Keywords[tg]=DN,тартибот,RDN,мушаххасот
+Keywords[tr]=DN,sıralama,RDN,öznitelik
+Keywords[uk]=DN,порядок,RDN,атрибут
+Keywords[zh_CN]=DN,order,RDN,attribute,顺序,属性