00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
#ifdef HAVE_CONFIG_H
00024
#include <config.h>
00025
#endif
00026
00027
#include "startupwizard.h"
00028
00029
#include "kmfoldercombobox.h"
00030
#include "configuredialog_p.h"
00031
#include "kmacctmgr.h"
00032
#include "kmcomposewin.h"
00033
#include "kmfoldermgr.h"
00034
#include "kmacctcachedimap.h"
00035
#include "kmfoldercachedimap.h"
00036
#include "kmidentity.h"
00037
#include "identitymanager.h"
00038
#include "kmtransport.h"
00039
#include "kmsender.h"
00040
#include "kmgroupware.h"
00041
#include "kmkernel.h"
00042
#include "kmailicalifaceimpl.h"
00043
00044
#include <kdebug.h>
00045
#include <klocale.h>
00046
#include <knuminput.h>
00047
#include <kapplication.h>
00048
#include <kconfig.h>
00049
00050
#include <qvbox.h>
00051
#include <qvbuttongroup.h>
00052
#include <qtextbrowser.h>
00053
#include <qwhatsthis.h>
00054
#include <qvalidator.h>
00055
00056 WizardIdentityPage::WizardIdentityPage( QWidget * parent,
const char * name )
00057 : QWidget( parent, name )
00058 {
00059
00060
IdentityManager *im = kmkernel->identityManager();
00061
if( im->
identities().count() > 0 )
00062 mIdentity = im->
defaultIdentity().
uoid();
00063
else {
00064 mIdentity = im->
newFromScratch(
"Kolab Identity" ).
uoid();
00065 im->
setAsDefault( mIdentity );
00066 }
00067
00068
KMIdentity & ident = im->
identityForUoid( mIdentity );
00069
00070 QGridLayout *grid =
new QGridLayout(
this, 3, 2, KDialog::marginHint(),
00071 KDialog::spacingHint() );
00072 grid->addColSpacing( 1, fontMetrics().maxWidth()*15 );
00073 grid->setRowStretch( 15, 10 );
00074 grid->setColStretch( 1, 10 );
00075
00076 QLabel *label =
new QLabel( i18n(
"&Your name:"),
this );
00077 QWhatsThis::add( label, i18n(
"Write your name here.") );
00078 grid->addWidget( label, 0, 0 );
00079 nameEdit =
new QLineEdit( ident.
fullName(),
this );
00080 nameEdit->setFocus();
00081 label->setBuddy( nameEdit );
00082 grid->addWidget( nameEdit, 0, 1 );
00083
00084 label =
new QLabel( i18n(
"Organi&zation:"),
this );
00085 QWhatsThis::add( label, i18n(
"You can write the company or organization you work for.") );
00086 grid->addWidget( label, 1, 0 );
00087 orgEdit =
new QLineEdit( ident.
organization(),
this );
00088 label->setBuddy( orgEdit );
00089 grid->addWidget( orgEdit, 1, 1 );
00090
00091 label =
new QLabel( i18n(
"&Email address:"),
this );
00092 grid->addWidget( label, 2, 0 );
00093 emailEdit =
new QLineEdit( ident.
emailAddr(),
this );
00094 label->setBuddy( emailEdit );
00095 grid->addWidget( emailEdit, 2, 1 );
00096 }
00097
00098
void WizardIdentityPage::apply()
const {
00099
00100
KMIdentity & ident = identity();
00101 ident.
setFullName( nameEdit->text().stripWhiteSpace() );
00102 ident.
setOrganization( orgEdit->text().stripWhiteSpace() );
00103 ident.
setEmailAddr( emailEdit->text().stripWhiteSpace() );
00104 kmkernel->identityManager()->sort();
00105 kmkernel->identityManager()->commit();
00106 }
00107
00108
KMIdentity & WizardIdentityPage::identity()
const {
00109
return kmkernel->identityManager()->identityForUoid( mIdentity );
00110 }
00111
00112 WizardKolabPage::WizardKolabPage( QWidget * parent,
const char * name )
00113 : QWidget( parent, name ), mFolder(0), mAccount(0), mTransport( 0 )
00114 {
00115 QGridLayout *grid =
new QGridLayout(
this, 7, 2, KDialog::marginHint(),
00116 KDialog::spacingHint() );
00117 grid->addColSpacing( 1, fontMetrics().maxWidth()*15 );
00118 grid->setRowStretch( 15, 10 );
00119 grid->setColStretch( 1, 10 );
00120
00121 QLabel *label =
new QLabel( i18n(
"&Login:"),
this );
00122 QWhatsThis::add( label, i18n(
"Your Internet Service Provider gave you a <em>user name</em> which is used to authenticate you with their servers. It usually is the first part of your email address (the part before <em>@</em>).") );
00123 grid->addWidget( label, 0, 0 );
00124 loginEdit =
new QLineEdit(
this );
00125 label->setBuddy( loginEdit );
00126 grid->addWidget( loginEdit, 0, 1 );
00127
00128 label =
new QLabel( i18n(
"P&assword:"),
this );
00129 grid->addWidget( label, 1, 0 );
00130 passwordEdit =
new QLineEdit(
this );
00131 passwordEdit->setEchoMode( QLineEdit::Password );
00132 label->setBuddy( passwordEdit );
00133 grid->addWidget( passwordEdit, 1, 1 );
00134
00135 label =
new QLabel( i18n(
"Ho&st:"),
this );
00136 grid->addWidget( label, 2, 0 );
00137 hostEdit =
new QLineEdit(
this );
00138
00139
00140 hostEdit->setValidator(
new QRegExpValidator( QRegExp(
"[A-Za-z0-9-_:.]*" ), 0 ) );
00141 label->setBuddy( hostEdit );
00142 grid->addWidget( hostEdit, 2, 1 );
00143
00144 storePasswordCheck =
00145
new QCheckBox( i18n(
"Sto&re IMAP password in configuration file"),
this );
00146 storePasswordCheck->setChecked(
true );
00147 grid->addMultiCellWidget( storePasswordCheck, 3, 3, 0, 1 );
00148
00149 excludeCheck =
new QCheckBox( i18n(
"E&xclude from \"Check Mail\""),
this );
00150 grid->addMultiCellWidget( excludeCheck, 4, 4, 0, 1 );
00151
00152 intervalCheck =
new QCheckBox( i18n(
"Enable &interval mail checking"),
this );
00153 intervalCheck->setChecked(
true );
00154 grid->addMultiCellWidget( intervalCheck, 5, 5, 0, 2 );
00155 intervalLabel =
new QLabel( i18n(
"Check inter&val:"),
this );
00156 grid->addWidget( intervalLabel, 6, 0 );
00157 intervalSpin =
new KIntNumInput(
this );
00158 intervalSpin->setRange( 1, 60, 1, FALSE );
00159 intervalSpin->setValue( 1 );
00160 intervalSpin->setSuffix( i18n(
" min" ) );
00161 intervalLabel->setBuddy( intervalSpin );
00162 connect( intervalCheck, SIGNAL(toggled(
bool)), intervalSpin, SLOT(setEnabled(
bool)) );
00163 grid->addWidget( intervalSpin, 6, 1 );
00164 }
00165
00166
void WizardKolabPage::init(
const QString &email )
00167 {
00168
static bool first =
true;
00169
if( !first )
return;
00170 first =
false;
00171
00172
00173 loginEdit->setFocus();
00174
00175
int at = email.find(
'@');
00176
if( at > 1 && email.length() > (uint)at ) {
00177
00178 loginEdit->setText( email );
00179 hostEdit->setText( email.mid( at + 1 ) );
00180 }
00181 }
00182
00183
void WizardKolabPage::apply()
00184 {
00185
00186
if( mAccount == 0 ) {
00187
00188 mAccount = static_cast<KMAcctCachedImap*>
00189 ( kmkernel->acctMgr()->create( QString(
"cachedimap"),
"Kolab" ) );
00190 mAccount->init();
00191 kmkernel->acctMgr()->add(mAccount);
00192
00193
00194
00195 mAccount->setAuth(
"PLAIN" );
00196 mAccount->setPrefix(
"/" );
00197 mAccount->setUseSSL(
false );
00198 mAccount->setUseTLS(
true );
00199 mAccount->setSieveConfig( KMail::SieveConfig(
true ) );
00200 kmkernel->cleanupImapFolders();
00201 assert( mAccount->folder() );
00202
00203
00204 mAccount->setAutoExpunge(
false );
00205 }
00206
00207 mAccount->setLogin( loginEdit->text().stripWhiteSpace() );
00208 mAccount->setPasswd( passwordEdit->text() );
00209 mAccount->setHost( hostEdit->text().stripWhiteSpace() );
00210 mAccount->setStorePasswd( storePasswordCheck->isChecked() );
00211 mAccount->setCheckExclude( excludeCheck->isChecked() );
00212
00213 kmkernel->acctMgr()->writeConfig(
false );
00214
00215
00216 kdDebug(5006) << mAccount->folder()->name() << endl;
00217
00218
if( mFolder == 0 ) {
00219
KMFolderDir *child = mAccount->folder()->child();
00220
if( child == 0 )
00221 child = mAccount->folder()->createChildFolder();
00222
00223 mFolder = kmkernel->dimapFolderMgr()->
00224 createFolder(
"INBOX",
false, KMFolderTypeCachedImap, child );
00225 static_cast<KMFolderCachedImap*>(mFolder)->setSilentUpload(
true );
00226 }
00227 mAccount->processNewMail(
false);
00228
00229
00230
if( mTransport == 0 ) {
00231 mTransport =
new KMTransportInfo();
00232 mTransport->type =
"smtp";
00233 mTransport->name =
"Kolab";
00234 mTransport->port =
"25";
00235 mTransport->encryption =
"TLS";
00236 mTransport->authType =
"PLAIN";
00237 mTransport->auth =
true;
00238 mTransport->precommand =
"";
00239 }
00240
00241 mTransport->host = hostEdit->text().stripWhiteSpace();
00242 mTransport->user = loginEdit->text().stripWhiteSpace();
00243 mTransport->pass = passwordEdit->text();
00244 mTransport->storePass = storePasswordCheck->isChecked();
00245
00246
00247 KConfigGroup general( KMKernel::config(),
"General" );
00248 KConfigGroup composer( KMKernel::config(),
"Composer" );
00249
00250 general.writeEntry(
"transports", 1 );
00251
00252
00253
00254 mTransport->writeConfig(1);
00255
00256
00257 general.writeEntry(
"sendOnCheck",
false );
00258 kmkernel->msgSender()->setSendImmediate(
true );
00259 }
00260
00261
00262 StartupWizard::StartupWizard( QWidget* parent,
const char* name,
bool modal )
00263 : QWizard( parent, name, modal ), mGroupwareEnabled(true)
00264 {
00265 addPage( mIntroPage = createIntroPage(), i18n(
"Groupware Functionality for KMail") );
00266 addPage( mIdentityPage = createIdentityPage(), i18n(
"Your Identity") );
00267 addPage( mKolabPage = createKolabPage(), i18n(
"Kolab Groupware Settings") );
00268 addPage( mAccountPage = createAccountPage(), i18n(
"Accounts") );
00269 addPage( mFolderSelectionPage = createFolderSelectionPage(), i18n(
"Folder Selection") );
00270 addPage( mLanguagePage = createLanguagePage(), i18n(
"Folder Language") );
00271 addPage( mFolderCreationPage = createFolderCreationPage(), i18n(
"Folder Creation") );
00272 addPage( mOutroPage = createOutroPage(), i18n(
"Done") );
00273 }
00274
00275
int StartupWizard::language()
const
00276
{
00277
return mLanguageCombo->currentItem();
00278 }
00279
00280
KMFolder* StartupWizard::folder()
const
00281
{
00282
if( groupwareEnabled() && useDefaultKolabSettings() )
00283
return mKolabWidget->folder();
00284
else
00285
return mFolderCombo->getFolder();
00286 }
00287
00288
void StartupWizard::setAppropriatePages()
00289 {
00290 setAppropriate( mKolabPage, groupwareEnabled() && useDefaultKolabSettings() );
00291 setAppropriate( mAccountPage, !groupwareEnabled() || !useDefaultKolabSettings() );
00292 setAppropriate( mLanguagePage, groupwareEnabled() );
00293 setAppropriate( mFolderSelectionPage, groupwareEnabled() && !useDefaultKolabSettings() );
00294 setAppropriate( mFolderCreationPage, groupwareEnabled() );
00295 setAppropriate( mOutroPage, !groupwareEnabled() );
00296 setNextEnabled( mOutroPage,
false);
00297 setFinishEnabled( mOutroPage,
true );
00298 setFinishEnabled( mFolderCreationPage,
true );
00299 }
00300
00301
void StartupWizard::slotGroupwareEnabled(
int i )
00302 {
00303 mGroupwareEnabled = (i == 0);
00304 serverSettings->setEnabled( mGroupwareEnabled );
00305 }
00306
00307
void StartupWizard::slotServerSettings(
int i )
00308 {
00309 mUseDefaultKolabSettings = (i == 0);
00310 }
00311
00312 QWidget* StartupWizard::createIntroPage()
00313 {
00314 QWidget* page =
new QWidget(
this,
"intro_page");
00315 QBoxLayout* top =
new QHBoxLayout( page );
00316 QTextBrowser* text =
new QTextBrowser( page );
00317 text->setText( i18n(
"<b>You don't seem to have any groupware folders "
00318
"configured in KMail.</b><br>"
00319
"This is probably because you are running KMail for the first time, or "
00320
"because you have enabled the groupware functionality for the first time.<br>"
00321
"You now have the choice between disabling the groupware functionality, "
00322
"or leaving it enabled and going through this wizard.<br>"
00323
"If you disable the groupware functionality for now, you can always enable it again from "
00324
"the KMail config dialog."));
00325 top->addWidget( text );
00326
00327 QVBox* rightSide =
new QVBox( page );
00328 top->addWidget( rightSide, 1 );
00329
00330 QButtonGroup* bg =
new QVButtonGroup( i18n(
"Groupware Functions"), rightSide );
00331
00332 (
new QRadioButton( i18n(
"Enable groupware functions"), bg ))->setChecked( TRUE );
00333 (
void)
new QRadioButton( i18n(
"Disable groupware functions"), bg );
00334 connect( bg, SIGNAL( clicked(
int) ),
this, SLOT( slotGroupwareEnabled(
int) ) );
00335
00336 bg = serverSettings =
new QVButtonGroup( i18n(
"Groupware Server Setup"), rightSide );
00337 (
new QRadioButton( i18n(
"Use standard groupware server settings"), bg ))->setChecked(TRUE);
00338 (
void)
new QRadioButton( i18n(
"Advanced server setup"), bg );
00339 connect( bg, SIGNAL( clicked(
int) ),
this, SLOT(slotServerSettings(
int) ) );
00340
00341
00342 slotGroupwareEnabled( 0 );
00343 slotServerSettings( 0 );
00344 setHelpEnabled( page,
false );
00345 setBackEnabled( page,
false );
00346
return page;
00347 }
00348
00349 QWidget* StartupWizard::createIdentityPage()
00350 {
00351 QWidget* page =
new QWidget(
this,
"identity_page" );
00352 QBoxLayout* top =
new QHBoxLayout( page );
00353 QTextBrowser* text =
new QTextBrowser( page );
00354 text->setText( i18n(
"Please set at least your name and email address.") );
00355 top->addWidget( text );
00356
00357 mIdentityWidget =
new WizardIdentityPage( page,
"identity_page" );
00358 top->addWidget( mIdentityWidget, 1 );
00359 setHelpEnabled( page,
false );
00360
return page;
00361 }
00362
00363 QWidget* StartupWizard::createKolabPage()
00364 {
00365 QWidget* page =
new QWidget(
this,
"kolabserver_page" );
00366 QBoxLayout* top =
new QHBoxLayout( page );
00367 QTextBrowser* text =
new QTextBrowser( page );
00368 text->setText( i18n(
"If the groupware server is a kolab server with default"
00369
" settings, you only need to set these settings.") );
00370 top->addWidget( text );
00371
00372 mKolabWidget =
new WizardKolabPage( page,
"kolabserver_page" );
00373 top->addWidget( mKolabWidget, 1 );
00374 setHelpEnabled( page,
false );
00375
return page;
00376 }
00377
00378 QWidget* StartupWizard::createAccountPage()
00379 {
00380 QWidget* page =
new QWidget(
this,
"account_page");
00381 QBoxLayout* top =
new QHBoxLayout( page );
00382 QTextBrowser* text =
new QTextBrowser( page );
00383 text->setText(i18n(
"If you want, you can create new accounts before going on with"
00384
" groupware configuration."));
00385 top->addWidget( text );
00386
00387 mAccountWidget =
new NetworkPage( page,
"account_page" );
00388 mAccountWidget->setup();
00389 top->addWidget( mAccountWidget, 1 );
00390 setHelpEnabled( page,
false );
00391
return page;
00392 }
00393
00394 QWidget* StartupWizard::createLanguagePage()
00395 {
00396 QWidget* page =
new QWidget(
this,
"language_page");
00397 QBoxLayout* top =
new QHBoxLayout( page );
00398 QTextBrowser* text =
new QTextBrowser( page );
00399 text->setText( i18n(
"If you want to make your groupware folders work with other "
00400
"applications, you might want to select a different language "
00401
"than English.<br>"
00402
"If this is not an issue, leave the language as is."));
00403 top->addWidget( text );
00404
00405 QVBox* rightSide =
new QVBox( page );
00406 top->addWidget( rightSide, 1 );
00407
00408 mLanguageLabel =
new QLabel( rightSide );
00409
00410 mLanguageCombo =
new QComboBox(
false, rightSide );
00411
00412 QStringList lst;
00413 lst << i18n(
"English") << i18n(
"German") << i18n(
"French") << i18n(
"Dutch");
00414 mLanguageCombo->insertStringList( lst );
00415
00416 setLanguage( 0,
false );
00417 setHelpEnabled( page,
false );
00418
return page;
00419 }
00420
00421 QWidget* StartupWizard::createFolderSelectionPage()
00422 {
00423 QWidget* page =
new QWidget(
this,
"foldersel_page");
00424 QBoxLayout* top =
new QHBoxLayout( page );
00425 QTextBrowser* text =
new QTextBrowser( page );
00426 text->setText(i18n(
"The groupware functionality needs some special folders to store "
00427
"the contents of the calendar, contacts, tasks etc.<br>"
00428
"Please select the folder that the groupware folders should "
00429
"be subfolders of."));
00430 top->addWidget( text );
00431 mFolderCombo =
new KMFolderComboBox( page );
00432 top->addWidget( mFolderCombo, 1 );
00433 connect( mFolderCombo, SIGNAL( activated(
int) ),
00434
this, SLOT( slotUpdateParentFolderName() ) );
00435 setHelpEnabled( page,
false );
00436
return page;
00437 }
00438
00439
void StartupWizard::slotUpdateParentFolderName()
00440 {
00441
KMFolder* folder = mFolderCombo->getFolder();
00442 QString fldrName = i18n(
"<unnamed>");
00443
if( folder ) fldrName = folder->name();
00444 mFolderCreationText
00445 ->setText( i18n(
"You have chosen the folder <b>%1</b> as parent of the "
00446
"groupware folders. When pressing the Finish button, "
00447
"those folders will be created if "
00448
"they do not already exist").arg( fldrName ));
00449 }
00450
00451
void StartupWizard::setLanguage(
int language,
bool guessed )
00452 {
00453 mLanguageCombo->setCurrentItem( language );
00454
if( guessed ) {
00455 mLanguageLabel->setText( i18n(
"The folders present indicates that you want to use the selected folder language"));
00456 }
else {
00457 mLanguageLabel->setText( i18n(
"The folder language can't be guessed, please select a language:"));
00458 }
00459 }
00460
00461 QWidget* StartupWizard::createFolderCreationPage()
00462 {
00463 QHBox* page =
new QHBox(
this,
"foldercre_page");
00464 mFolderCreationText =
new QTextBrowser( page );
00465 slotUpdateParentFolderName();
00466 setFinishEnabled( page,
true );
00467 setNextEnabled( page,
false);
00468 setHelpEnabled( page,
false );
00469
return page;
00470 }
00471
00472 QWidget* StartupWizard::createOutroPage()
00473 {
00474 QHBox* page =
new QHBox(
this,
"outtro_page");
00475 QTextBrowser* text =
new QTextBrowser( page );
00476 text->setText( i18n(
"The groupware functionality has been disabled.") );
00477 setFinishEnabled( page,
true );
00478 setNextEnabled( page,
false);
00479 setHelpEnabled( page,
false );
00480
return page;
00481 }
00482
00483
void StartupWizard::back()
00484 {
00485 QWizard::back();
00486 }
00487
00488
void StartupWizard::next()
00489 {
00490
if( currentPage() == mAccountPage ) {
00491 kdDebug(5006) <<
"AccountPage appropriate: " << appropriate(mAccountPage) << endl;
00492 mAccountWidget->apply();
00493 }
else if( currentPage() == mFolderSelectionPage ) {
00494
00495 guessExistingFolderLanguage();
00496 }
else if( currentPage() == mKolabPage ) {
00497
00498 mKolabWidget->apply();
00499
00500
00501
00502
00503 mFolderCreationText->setText( i18n(
"You have chosen to use standard kolab settings.\nPress Finish to proceed.") );
00504
00505 }
else if( currentPage() == mIdentityPage ) {
00506 mIdentityWidget->apply();
00507 mKolabWidget->init( userIdentity().emailAddr() );
00508 }
00509
00510
00511 setAppropriatePages();
00512
00513 QWizard::next();
00514 }
00515
00516
static bool checkSubfolders(
KMFolderDir* dir,
int language )
00517 {
00518 KMailICalIfaceImpl& ical = kmkernel->iCalIface();
00519
return dir->
hasNamedFolder( ical.folderName( KFolderTreeItem::Inbox, language ) ) &&
00520 dir->
hasNamedFolder( ical.folderName( KFolderTreeItem::Calendar, language ) ) &&
00521 dir->
hasNamedFolder( ical.folderName( KFolderTreeItem::Contacts, language ) ) &&
00522 dir->
hasNamedFolder( ical.folderName( KFolderTreeItem::Notes, language ) ) &&
00523 dir->
hasNamedFolder( ical.folderName( KFolderTreeItem::Tasks, language ) );
00524 }
00525
00526
void StartupWizard::guessExistingFolderLanguage()
00527 {
00528
KMFolderDir* dir = folder()->
child();
00529
00530
if( checkSubfolders( dir, 0 ) ) {
00531
00532 setLanguage( 0,
true );
00533 }
else if( checkSubfolders( dir, 1 ) ) {
00534
00535 setLanguage( 1,
true );
00536 }
else {
00537 setLanguage( 0,
false );
00538 }
00539 }
00540
00541
KMIdentity &StartupWizard::userIdentity()
00542 {
00543
return mIdentityWidget->identity();
00544 }
00545
00546
const KMIdentity &StartupWizard::userIdentity()
const
00547
{
00548
return mIdentityWidget->identity();
00549 }
00550
00551 QString StartupWizard::name()
const
00552
{
00553
return userIdentity().fullName();
00554 }
00555
00556 QString StartupWizard::login()
const
00557
{
00558
return mKolabWidget->loginEdit->text().stripWhiteSpace();
00559 }
00560
00561 QString StartupWizard::host()
const
00562
{
00563
return mKolabWidget->hostEdit->text().stripWhiteSpace();
00564 }
00565
00566 QString StartupWizard::email()
const
00567
{
00568
return userIdentity().emailAddr();
00569 }
00570
00571 QString StartupWizard::passwd()
const
00572
{
00573
return KMAccount::encryptStr( mKolabWidget->passwordEdit->text() );
00574 }
00575
00576
bool StartupWizard::storePasswd()
const
00577
{
00578
return mKolabWidget->storePasswordCheck->isChecked();
00579 }
00580
00581
00582
void StartupWizard::run()
00583 {
00584 KConfigGroup options( KMKernel::config(),
"Groupware" );
00585
00586
00587
if( options.readEntry(
"Enabled",
"notset" ) !=
"notset" )
00588
return;
00589
00590 StartupWizard wiz(0,
"groupware wizard", TRUE );
00591
int rc = wiz.exec();
00592
00593 options.writeEntry(
"Enabled", rc == QDialog::Accepted && wiz.groupwareEnabled() );
00594
if( rc == QDialog::Accepted ) {
00595 options.writeEntry(
"FolderLanguage", wiz.language() );
00596 options.writeEntry(
"GroupwareFolder", wiz.folder()->idString() );
00597
00598 kmkernel->groupware().readConfig();
00599
00600
if( wiz.groupwareEnabled() && wiz.useDefaultKolabSettings() ) {
00601
00602 writeKOrganizerConfig( wiz );
00603 writeKAbcConfig();
00604 writeKAddressbookConfig( wiz );
00605 }
00606 }
00607 }
00608
00609
00610
00611
void StartupWizard::writeKOrganizerConfig(
const StartupWizard& wiz ) {
00612 KConfig config(
"korganizerrc" );
00613
00614 KConfigGroup optionsKOrgGeneral( &config,
"Personal Settings" );
00615 optionsKOrgGeneral.writeEntry(
"user_name", wiz.name() );
00616 optionsKOrgGeneral.writeEntry(
"user_email", wiz.email() );
00617
00618 KConfigGroup optionsKOrgGroupware( &config,
"Groupware" );
00619 optionsKOrgGroupware.writeEntry(
"Publish FreeBusy lists",
true );
00620 optionsKOrgGroupware.writeEntry(
"Publish FreeBusy days", 60 );
00621 optionsKOrgGroupware.writeEntry(
"Publish to Kolab server",
true );
00622 optionsKOrgGroupware.writeEntry(
"Publish to Kolab server name", wiz.host() );
00623 optionsKOrgGroupware.writeEntry(
"Publish user name", wiz.login() );
00624 optionsKOrgGroupware.writeEntry(
"Remember publish password", wiz.storePasswd() );
00625
if( wiz.storePasswd() ) {
00626 optionsKOrgGroupware.writeEntry(
"Publish Server Password", wiz.passwd() );
00627 optionsKOrgGroupware.writeEntry(
"Retrieve Server Password", wiz.passwd() );
00628 }
00629 optionsKOrgGroupware.writeEntry(
"Retrieve FreeBusy lists",
true );
00630 optionsKOrgGroupware.writeEntry(
"Retrieve from Kolab server",
true );
00631 optionsKOrgGroupware.writeEntry(
"Retrieve from Kolab server name", wiz.host() );
00632 optionsKOrgGroupware.writeEntry(
"Retrieve user name", wiz.login() );
00633 optionsKOrgGroupware.writeEntry(
"Remember retrieve password", wiz.storePasswd() );
00634
00635 config.sync();
00636 }
00637
00638
00639
00640
void StartupWizard::writeKAbcConfig() {
00641 KConfig config(
"kabcrc" );
00642 KConfigGroup optionsKAbcGeneral( &config,
"General" );
00643 QString standardKey = optionsKAbcGeneral.readEntry(
"Standard" );
00644 QString newStandardKey;
00645
00646 QStringList activeKeys = optionsKAbcGeneral.readListEntry(
"ResourceKeys" );
00647 QStringList passiveKeys = optionsKAbcGeneral.readListEntry(
"PassiveResourceKeys" );
00648 QStringList keys = activeKeys + passiveKeys;
00649
for ( QStringList::Iterator it = keys.begin(); it != keys.end(); ++it ) {
00650 KConfigGroup entry( &config,
"Resource_" + (*it) );
00651
if( entry.readEntry(
"ResourceType" ) ==
"imap" && newStandardKey.isNull() ) {
00652
00653 newStandardKey = *it;
00654
00655
00656 entry.writeEntry(
"ResourceIsReadOnly",
false );
00657 }
else
00658
00659 entry.writeEntry(
"ResourceIsReadOnly",
true );
00660 }
00661
00662
if( newStandardKey.isNull() ) {
00663
00664 newStandardKey = KApplication::randomString( 10 );
00665 KConfigGroup entry( &config,
"Resource_" + newStandardKey );
00666 entry.writeEntry(
"ResourceName",
"imap-resource" );
00667 entry.writeEntry(
"ResourceType",
"imap" );
00668 entry.writeEntry(
"ResourceIsReadOnly",
false );
00669 entry.writeEntry(
"ResourceIsFast",
true );
00670 activeKeys += newStandardKey;
00671 }
else if( passiveKeys.remove( newStandardKey ) > 0 )
00672
00673 activeKeys += newStandardKey;
00674
00675
00676 optionsKAbcGeneral.writeEntry(
"ResourceKeys", activeKeys );
00677 optionsKAbcGeneral.writeEntry(
"PassiveResourceKeys", passiveKeys );
00678 optionsKAbcGeneral.writeEntry(
"Standard", newStandardKey );
00679
00680 config.sync();
00681 }
00682
00683
00684
00685
void StartupWizard::writeKAddressbookConfig(
const StartupWizard& wiz ) {
00686 KConfig config(
"kaddressbookrc" );
00687 KConfigGroup options( &config,
"LDAP" );
00688
00689 QString hostBase = QString(
"dc=" ) + wiz.host();
00690 hostBase.replace(
'.',
",dc=" );
00691
00692
00693 uint count = options.readUnsignedNumEntry(
"NumSelectedHosts");
00694
for ( uint i = 0; i < count; ++i ) {
00695 QString host = options.readEntry( QString(
"SelectedHost%1").arg( i ) );
00696
int port = options.readUnsignedNumEntry( QString(
"SelectedPort%1" ).arg( i ) );
00697 QString base = options.readEntry( QString(
"SelectedBase%1" ).arg( i ) );
00698
00699
if( host == wiz.host() && port == 389 && base == hostBase )
00700
00701
return;
00702 }
00703
00704
00705 count = options.readUnsignedNumEntry(
"NumHosts" );
00706
for ( uint i = 0; i < count; ++i ) {
00707 QString host = options.readEntry( QString(
"SelectedHost%1").arg( i ) );
00708
int port = options.readUnsignedNumEntry( QString(
"SelectedPort%1" ).arg( i ) );
00709 QString base = options.readEntry( QString(
"SelectedBase%1" ).arg( i ) );
00710
00711
if( host == wiz.host() && port == 389 && base == hostBase ) {
00712
00713
for( ++i; i < count; ++i ) {
00714 host = options.readEntry( QString(
"Host%1" ).arg( i ) );
00715 port = options.readUnsignedNumEntry( QString(
"Port%1" ).arg( i ) );
00716 base = options.readEntry( QString(
"Base%1" ).arg( i ) );
00717 options.writeEntry( QString(
"Host%1" ).arg( i-1 ), host );
00718 options.writeEntry( QString(
"Port%1" ).arg( i-1 ), port );
00719 options.writeEntry( QString(
"Base%1" ).arg( i-1 ), base );
00720 }
00721
00722
00723 --count;
00724 options.deleteEntry( QString(
"Host%1" ).arg( count ) );
00725 options.deleteEntry( QString(
"Port%1" ).arg( count ) );
00726 options.deleteEntry( QString(
"Base%1" ).arg( count ) );
00727 options.writeEntry(
"NumHosts", count );
00728
break;
00729 }
00730 }
00731
00732
00733 count = options.readUnsignedNumEntry(
"NumSelectedHosts");
00734 options.writeEntry( QString(
"SelectedHost%1" ).arg( count ), wiz.host() );
00735 options.writeEntry( QString(
"SelectedPort%1" ).arg( count ), 389 );
00736 options.writeEntry( QString(
"SelectedBase%1" ).arg( count ), hostBase );
00737 options.writeEntry(
"NumSelectedHosts", count+1 );
00738 }
00739
00740
00741
#include "startupwizard.moc"