Proof-reading - fixed one usage of the i18n plural form (it wasn't doing before,...
[kdeadmin.git] / kuser / ku_configdlg.cpp
blob745542dcfec83ff4bcf8da124d8ead6516d7a596
1 /*
2 * Copyright (c) 1998 Denis Perchine <dyp@perchine.com>
3 * Copyright (c) 2004 Szombathelyi György <gyurco@freemail.hu>
4 * Former maintainer: Adriaan de Groot <groot@kde.org>
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
16 * You should have received a copy of the GNU Library General Public License
17 * along with this library; see the file COPYING.LIB. If not, write to
18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 * Boston, MA 02110-1301, USA.
20 **/
22 #include <kdebug.h>
24 #include <kcombobox.h>
25 #include <kmessagebox.h>
26 #include <klineedit.h>
27 #include <knuminput.h>
28 #include <kpushbutton.h>
29 #include <ktabwidget.h>
30 #include <kldap/ldapconfigwidget.h>
31 #include <kldap/ldapurl.h>
32 #include <klocale.h>
34 #include "ku_configdlg.h"
35 #include "ku_misc.h"
37 #include "ui_ku_generalsettings.h"
38 #include "ui_ku_filessettings.h"
39 #include "ui_ku_ldapsettings.h"
40 #include "ui_ku_ldapsamba.h"
41 #include "ui_ku_passwordpolicy.h"
43 KU_ConfigDlg::KU_ConfigDlg( KConfigSkeleton *config, QWidget *parent, const char *name ) :
44 KConfigDialog( parent, name, config),sambaui(0)
46 setFaceType(List);
47 setButtons(Default|Ok|Apply|Cancel|Help);
48 setDefaultButton(Ok);
49 setModal(true);
50 KTabWidget *page1 = new KTabWidget( this );
52 Ui::KU_GeneralSettings ui;
53 QFrame *frame = new QFrame ( page1 );
54 ui.setupUi( frame );
55 ui.kcfg_shell->addItem( i18n("<Empty>" ) );
56 ui.kcfg_shell->addItems( readShells() );
57 page1->addTab( frame, i18n("Connection") );
60 Ui::KU_PasswordPolicy ui;
61 QFrame *frame = new QFrame ( page1 );
62 ui.setupUi( frame );
63 page1->addTab( frame, i18n("Password Policy") );
65 addPage( page1, i18n("General"), "kuser", i18n("General Settings") );
68 QFrame *page2 = new QFrame( this );
69 Ui::KU_FilesSettings *ui = new Ui::KU_FilesSettings();
70 ui->setupUi( page2 );
71 addPage( page2, i18n("Files"), "document-properties", i18n("File Source Settings") );
74 KTabWidget *page3 = new KTabWidget( this );
76 ldconf =
77 new KLDAP::LdapConfigWidget(
78 KLDAP::LdapConfigWidget::W_USER |
79 KLDAP::LdapConfigWidget::W_PASS |
80 KLDAP::LdapConfigWidget::W_BINDDN |
81 KLDAP::LdapConfigWidget::W_REALM |
82 KLDAP::LdapConfigWidget::W_HOST |
83 KLDAP::LdapConfigWidget::W_PORT |
84 KLDAP::LdapConfigWidget::W_VER |
85 KLDAP::LdapConfigWidget::W_DN |
86 KLDAP::LdapConfigWidget::W_SECBOX |
87 KLDAP::LdapConfigWidget::W_AUTHBOX |
88 KLDAP::LdapConfigWidget::W_TIMELIMIT |
89 KLDAP::LdapConfigWidget::W_SIZELIMIT |
90 KLDAP::LdapConfigWidget::W_PAGESIZE,
91 0 );
93 page3->addTab( ldconf, i18n("Connection") );
96 QFrame *page3b = new QFrame( 0 );
97 Ui::KU_LdapSettings *ui = new Ui::KU_LdapSettings();
98 ui->setupUi( page3b );
99 page3->addTab( page3b, i18n("Settings") );
102 QFrame *page3c = new QFrame( 0 );
103 sambaui = new Ui::KU_LdapSamba();
104 sambaui->setupUi( page3c );
105 connect( sambaui->domQuery, SIGNAL(clicked()), SLOT(slotQueryClicked()) );
106 page3->addTab( page3c, i18n("Samba") );
108 addPage( page3, i18n("LDAP"), "network-server-database", i18n("LDAP Source Settings") );
109 setHelp(QString(),"kuser");
112 KU_ConfigDlg::~KU_ConfigDlg()
114 delete sambaui;
117 void KU_ConfigDlg::slotQueryClicked()
120 KLDAP::LdapUrl _url = ldconf->url();
122 mResult.clear();
123 mDomain.name = "";
124 mDomain.sid = "";
125 mDomain.ridbase = 1000;
127 QStringList attrs;
128 QString filter = "(objectClass=sambaDomain)";
129 QString dom = sambaui->kcfg_samdomain->text();
130 if ( !dom.isEmpty() ) filter = "(&(sambaDomainName=" + dom + ')' + filter + ')';
131 attrs.append("sambaDomainName");
132 attrs.append("sambaSID");
133 attrs.append("sambaAlgorithmicRidBase");
134 _url.setAttributes( attrs );
135 _url.setScope( KLDAP::LdapUrl::One );
136 _url.setExtension( "x-dir", "base" );
137 _url.setFilter( filter );
139 kDebug() << "sendQuery url: " << _url.prettyUrl();
140 mLdif.startParsing();
141 KIO::Job *job = KIO::get( _url, KIO::Reload, KIO::HideProgressInfo );
142 // job->addMetaData("no-auth-prompt","true");
143 connect( job, SIGNAL( data( KIO::Job*, const QByteArray& ) ),
144 this, SLOT( loadData( KIO::Job*, const QByteArray& ) ) );
145 connect( job, SIGNAL( result( KJob* ) ),
146 this, SLOT( loadResult( KJob* ) ) );
148 mProg = new QProgressDialog( 0 );
149 mProg->setLabel( new QLabel(_url.prettyUrl()) );
150 mProg->setValue( 0 );
151 mProg->setMaximum( 1 );
152 mProg->setAutoClose( false );
153 mProg->setAutoReset( false );
154 mProg->exec();
155 if ( mProg->wasCanceled() ) {
156 kDebug() << "query cancelled!";
157 job->kill( KJob::Quietly );
158 } else {
159 if ( !mErrorMsg.isEmpty() )
160 KMessageBox::error( this, mErrorMsg );
161 else {
162 if ( !mResult.isEmpty() ) {
163 mDomain = mResult.first();
164 if ( !mDomain.name.isEmpty() && !mDomain.sid.isEmpty() ) {
165 sambaui->kcfg_samdomain->setText( mDomain.name );
166 sambaui->kcfg_samdomsid->setText( mDomain.sid );
167 sambaui->kcfg_samridbase->setValue( mDomain.ridbase );
172 delete mProg;
173 kDebug() << "domQueryx";
177 void KU_ConfigDlg::loadData( KIO::Job*, const QByteArray& d )
179 KLDAP::Ldif::ParseValue ret;
181 if ( d.size() ) {
182 mLdif.setLdif( d );
183 } else {
184 mLdif.endLdif();
186 do {
187 ret = mLdif.nextItem();
188 switch ( ret ) {
189 case KLDAP::Ldif::Item:
190 if ( mLdif.attr() == "sambaDomainName" )
191 mDomain.name = QString::fromUtf8( mLdif.value(), mLdif.value().size() );
192 else if ( mLdif.attr() == "sambaSID" )
193 mDomain.sid = QString::fromUtf8( mLdif.value(), mLdif.value().size() );
194 else if ( mLdif.attr() == "sambaAlgorithmicRidBase" )
195 mDomain.ridbase = QString::fromUtf8( mLdif.value(), mLdif.value().size() ).toUInt();
196 break;
197 case KLDAP::Ldif::EndEntry:
198 mProg->setValue( 1 );
199 if ( !mDomain.name.isEmpty() && !mDomain.sid.isEmpty() )
200 mResult.push_back( mDomain );
201 mDomain.sid = "";
202 mDomain.name = "";
203 mDomain.ridbase = 1000;
204 default:
205 break;
207 } while ( ret != KLDAP::Ldif::MoreData );
210 void KU_ConfigDlg::loadResult( KJob* job)
212 int error = job->error();
213 if ( error && error != KIO::ERR_USER_CANCELED )
214 mErrorMsg = job->errorString();
215 else
216 mErrorMsg = "";
218 mProg->hide();
221 #include "ku_configdlg.moc"