00001
00002
00003
#include <config.h>
00004
00005
#include "kmacctfolder.h"
00006
#include "kmfoldermgr.h"
00007
#include "identitycombo.h"
00008
#include "kmfolderimap.h"
00009
#include "kmfolder.h"
00010
#include "kmkernel.h"
00011
00012
#include <klineedit.h>
00013
#include <klocale.h>
00014
#include <knuminput.h>
00015
#include <kmessagebox.h>
00016
#include <kicondialog.h>
00017
#include <kconfig.h>
00018
#include <kdebug.h>
00019
00020
#include <qcheckbox.h>
00021
#include <qlayout.h>
00022
#include <qgroupbox.h>
00023
#include <qregexp.h>
00024
#include <qlabel.h>
00025
00026
#include <assert.h>
00027
00028
#include "kmfolderdia.h"
00029
#include "kmfolderdia.moc"
00030
00031
00032
00033 KMFolderDialog::KMFolderDialog(
KMFolder *aFolder,
KMFolderDir *aFolderDir,
00034 QWidget *aParent,
const QString& aCap,
00035
const QString& aName):
00036 KDialogBase( KDialogBase::Plain,
00037 aCap, KDialogBase::Ok|KDialogBase::Cancel,
00038 KDialogBase::Ok, aParent, "
KMFolderDialog", TRUE ),
00039 mFolder( aFolder ),
00040 mFolderDir( aFolderDir )
00041 {
00042 kdDebug(5006)<<
"KMFolderDialog::KMFolderDialog()" << endl;
00043
00044 QFrame *page = plainPage();
00045
00046 QVBoxLayout *topLayout =
new QVBoxLayout( page, 0, spacingHint(),
00047
"topLayout" );
00048
00049 QGroupBox *fpGroup =
new QGroupBox( i18n(
"Folder Position"), page,
"fpGroup" );
00050 fpGroup->setColumnLayout( 0, Qt::Vertical );
00051
00052 topLayout->addWidget( fpGroup );
00053
00054 QHBoxLayout *hl =
new QHBoxLayout( fpGroup->layout() );
00055 hl->setSpacing( 6 );
00056
00057 QLabel *
label =
new QLabel( i18n(
"&Name:"), fpGroup );
00058 hl->addWidget( label );
00059
00060 mNameEdit =
new KLineEdit( fpGroup );
00061
if( !mFolder )
00062 mNameEdit->setFocus();
00063 mNameEdit->setText( mFolder ? mFolder->label() : i18n("unnamed") );
00064
if (!aName.isEmpty())
00065 mNameEdit->setText(aName);
00066 mNameEdit->setMinimumSize(mNameEdit->sizeHint());
00067 label->setBuddy( mNameEdit );
00068 hl->addWidget( mNameEdit );
00069 connect( mNameEdit, SIGNAL( textChanged(
const QString & ) ),
00070
this, SLOT( slotFolderNameChanged(
const QString & ) ) );
00071
00072 QLabel* belongsToLabel =
new QLabel( i18n(
"&Belongs to:" ), fpGroup );
00073 hl->addWidget( belongsToLabel );
00074
00075 mBelongsToComboBox =
new QComboBox(fpGroup);
00076 hl->addWidget( mBelongsToComboBox );
00077 belongsToLabel->setBuddy( mBelongsToComboBox );
00078
00079
00080 QGroupBox *iconGroup =
new QGroupBox( i18n(
"Folder Icons"), page,
"iconGroup" );
00081 iconGroup->setColumnLayout( 0, Qt::Vertical );
00082
00083 topLayout->addWidget( iconGroup );
00084
00085 QVBoxLayout *ivl =
new QVBoxLayout( iconGroup->layout() );
00086 ivl->setSpacing( 6 );
00087
00088 QHBoxLayout *ihl =
new QHBoxLayout( ivl );
00089 mIconsCheckBox =
new QCheckBox( i18n(
"Use custom &icons"), iconGroup );
00090 mIconsCheckBox->setChecked(
false );
00091 ihl->addWidget( mIconsCheckBox );
00092
00093 ihl =
new QHBoxLayout( ivl );
00094 mNormalIconLabel =
new QLabel( i18n(
"&Normal:"), iconGroup );
00095 mNormalIconLabel->setEnabled(
false );
00096 ihl->addWidget( mNormalIconLabel );
00097
00098 mNormalIconButton =
new KIconButton( iconGroup );
00099 mNormalIconLabel->setBuddy( mNormalIconButton );
00100 mNormalIconButton->setIconType( KIcon::NoGroup , KIcon::Any,
true );
00101 mNormalIconButton->setIconSize( 16 );
00102 mNormalIconButton->setStrictIconSize(
true );
00103 mNormalIconButton->setFixedSize( 28, 28 );
00104 mNormalIconButton->setIcon( QString(
"folder") );
00105 mNormalIconButton->setEnabled(
false );
00106 ihl->addWidget( mNormalIconButton );
00107 ihl->addStretch( 1 );
00108
00109 mUnreadIconLabel =
new QLabel( i18n(
"&Unread:"), iconGroup );
00110 mUnreadIconLabel->setEnabled(
false );
00111 ihl->addWidget( mUnreadIconLabel );
00112
00113 mUnreadIconButton =
new KIconButton( iconGroup );
00114 mUnreadIconLabel->setBuddy( mUnreadIconButton );
00115 mUnreadIconButton->setIconType( KIcon::NoGroup, KIcon::Any,
true );
00116 mUnreadIconButton->setIconSize( 16 );
00117 mUnreadIconButton->setStrictIconSize(
true );
00118 mUnreadIconButton->setFixedSize( 28, 28 );
00119 mUnreadIconButton->setIcon( QString(
"folder_open") );
00120 mUnreadIconButton->setEnabled(
false );
00121 ihl->addWidget( mUnreadIconButton );
00122 ihl->addStretch( 1 );
00123
00124 connect( mIconsCheckBox, SIGNAL(toggled(
bool)),
00125 mNormalIconButton, SLOT(setEnabled(
bool)) );
00126 connect( mIconsCheckBox, SIGNAL(toggled(
bool)),
00127 mUnreadIconButton, SLOT(setEnabled(
bool)) );
00128 connect( mIconsCheckBox, SIGNAL(toggled(
bool)),
00129 mNormalIconLabel, SLOT(setEnabled(
bool)) );
00130 connect( mIconsCheckBox, SIGNAL(toggled(
bool)),
00131 mUnreadIconLabel, SLOT(setEnabled(
bool)) );
00132
00133 connect( mNormalIconButton, SIGNAL(iconChanged(QString)),
00134
this, SLOT(slotChangeIcon(QString)) );
00135
00136
00137
00138 mMailboxTypeGroupBox =
new QGroupBox( i18n(
"Folder Type"), page,
"mMailboxTypeGroupBox" );
00139 mMailboxTypeGroupBox->setColumnLayout( 0, Qt::Vertical );
00140
00141 topLayout->addWidget( mMailboxTypeGroupBox );
00142
00143 QHBoxLayout *ml =
new QHBoxLayout( mMailboxTypeGroupBox->layout() );
00144 ml->setSpacing( 6 );
00145
00146 QLabel *label_type =
new QLabel( i18n(
"&Mailbox format:" ), mMailboxTypeGroupBox );
00147 ml->addWidget( label_type );
00148 mMailboxTypeComboBox =
new QComboBox(mMailboxTypeGroupBox);
00149 label_type->setBuddy( mMailboxTypeComboBox );
00150 mMailboxTypeComboBox->insertItem(
"mbox", 0);
00151 mMailboxTypeComboBox->insertItem(
"maildir", 1);
00152 mMailboxTypeComboBox->insertItem(
"search", 2);
00153 {
00154 KConfig *config = KMKernel::config();
00155 KConfigGroupSaver saver(config,
"General");
00156
int type = config->readNumEntry(
"default-mailbox-format", 1);
00157
if ( type < 0 || type > 1 ) type = 1;
00158 mMailboxTypeComboBox->setCurrentItem( type );
00159 }
00160 mMailboxTypeComboBox->setEnabled( !mFolder );
00161 ml->addWidget( mMailboxTypeComboBox );
00162 ml->addStretch( 1 );
00163
00164 QStringList str;
00165
if( !mFolder ) {
00166
00167 kmkernel->folderMgr()->createFolderList( &str, &mFolders );
00168 kmkernel->imapFolderMgr()->createI18nFolderList( &str, &mFolders );
00169 kmkernel->dimapFolderMgr()->createFolderList( &str, &mFolders );
00170 }
00171
else if( mFolder->folderType() != KMFolderTypeImap
00172 && mFolder->folderType() != KMFolderTypeCachedImap ) {
00173
00174 kmkernel->folderMgr()->createFolderList( &str, &mFolders );
00175 }
00176
else {
00177
00178
00179 kmkernel->imapFolderMgr()->createI18nFolderList( &str, &mFolders );
00180 kmkernel->dimapFolderMgr()->createFolderList( &str, &mFolders );
00181 }
00182
00183
00184
00185
if( !mFolder || ( mFolder->folderType() != KMFolderTypeImap
00186 && mFolder->folderType() != KMFolderTypeCachedImap ) ) {
00187 QGuardedPtr<KMFolder> curFolder;
00188 QValueListIterator<QGuardedPtr<KMFolder> > folderIt = mFolders.begin();
00189 QStringList::Iterator strIt = str.begin();
00190
while( folderIt != mFolders.end() ) {
00191 curFolder = *folderIt;
00192 kdDebug(5006) <<
"Looking at folder '" << curFolder->label() <<
"'"
00193 <<
" and corresponding string '" << (*strIt) <<
"'"
00194 << endl;
00195
if( curFolder->isSystemFolder()
00196 && curFolder->folderType() != KMFolderTypeImap
00197 && curFolder->folderType() != KMFolderTypeCachedImap ) {
00198 kdDebug(5006) <<
"Removing folder '" << curFolder->label() <<
"'"
00199 << endl;
00200 folderIt = mFolders.remove( folderIt );
00201 kdDebug(5006) <<
"Removing string '" << (*strIt) <<
"'"
00202 << endl;
00203 strIt = str.remove( strIt );
00204 }
00205
else {
00206 ++folderIt;
00207 ++strIt;
00208 }
00209 }
00210 }
00211
00212 str.prepend( i18n(
"Top Level" ) );
00213
00214 mBelongsToComboBox->insertStringList( str );
00215
00216 connect( mBelongsToComboBox, SIGNAL(activated(
int)), SLOT(slotUpdateItems(
int)) );
00217
00218
00219
00220 QGroupBox *mlGroup =
new QGroupBox( i18n(
"Associated Mailing List" ), page );
00221 mlGroup->setColumnLayout( 0, Qt::Vertical );
00222 QGridLayout *mlLayout =
new QGridLayout(mlGroup->layout());
00223 mlLayout->setSpacing( 6 );
00224 mHoldsMailingListCheckBox =
new QCheckBox( i18n(
"&Folder holds a mailing list"), mlGroup);
00225 topLayout->addWidget( mlGroup );
00226 mlLayout->addMultiCellWidget(mHoldsMailingListCheckBox, 0, 0, 0, 1);
00227
00228 mlLayout->setColStretch(0, 1);
00229 mlLayout->setColStretch(1, 100);
00230
00231 label =
new QLabel( i18n(
"&Post address:"), mlGroup );
00232 label->setEnabled(
false);
00233 QObject::connect( mHoldsMailingListCheckBox, SIGNAL(toggled(
bool)),
00234 label, SLOT(setEnabled(
bool)) );
00235 mlLayout->addWidget( label, 1, 0 );
00236 mMailingListPostAddressEdit =
new KLineEdit( mlGroup );
00237 label->setBuddy( mMailingListPostAddressEdit );
00238 mlLayout->addWidget( mMailingListPostAddressEdit, 1, 1 );
00239 mMailingListPostAddressEdit->setEnabled(
false);
00240
00241 connect( mHoldsMailingListCheckBox, SIGNAL(toggled(
bool)),
00242 mMailingListPostAddressEdit, SLOT(setEnabled(
bool)) );
00243
00244
00245
00246
00247 mExpireGroupBox =
new QGroupBox(i18n(
"Old Message Expiry"), page);
00248 mExpireGroupBox->setColumnLayout(0, Qt::Vertical);
00249 QGridLayout *expLayout =
new QGridLayout(mExpireGroupBox->layout());
00250 expLayout->setSpacing(6);
00251
00252
00253 mExpireFolderCheckBox =
new QCheckBox(i18n(
"E&xpire old messages in this folder"), mExpireGroupBox);
00254 QObject::connect(mExpireFolderCheckBox, SIGNAL(toggled(
bool)), SLOT(slotExpireFolder(
bool)));
00255 topLayout->addWidget(mExpireGroupBox);
00256 expLayout->addMultiCellWidget(mExpireFolderCheckBox, 0, 0, 0, 1);
00257
00258
00259 label =
new QLabel(i18n(
"Expire &read email after:"), mExpireGroupBox);
00260 label->setEnabled(
false);
00261 QObject::connect( mExpireFolderCheckBox, SIGNAL(toggled(
bool)),
00262 label, SLOT(setEnabled(
bool)) );
00263 expLayout->addWidget(label, 1, 0);
00264 mReadExpiryTimeNumInput =
new KIntNumInput(mExpireGroupBox);
00265 mReadExpiryTimeNumInput->setRange(1, 500, 1,
false);
00266 mReadExpiryTimeNumInput->setEnabled(
false);
00267 mReadExpiryTimeNumInput->setValue(7);
00268 label->setBuddy(mReadExpiryTimeNumInput);
00269 expLayout->addWidget(mReadExpiryTimeNumInput, 1, 1);
00270
00271 mReadExpiryUnitsComboBox =
new QComboBox(mExpireGroupBox);
00272 mReadExpiryUnitsComboBox->insertItem(i18n(
"Never"));
00273 mReadExpiryUnitsComboBox->insertItem(i18n(
"Day(s)"));
00274 mReadExpiryUnitsComboBox->insertItem(i18n(
"Week(s)"));
00275 mReadExpiryUnitsComboBox->insertItem(i18n(
"Month(s)"));
00276 mReadExpiryUnitsComboBox->setEnabled(
false);
00277 expLayout->addWidget(mReadExpiryUnitsComboBox, 1, 2);
00278 connect( mReadExpiryUnitsComboBox, SIGNAL( activated(
int ) ),
00279
this, SLOT( slotReadExpiryUnitChanged(
int ) ) );
00280
00281
00282 label =
new QLabel(i18n(
"Expire unr&ead email after:"), mExpireGroupBox);
00283 label->setEnabled(
false);
00284 QObject::connect( mExpireFolderCheckBox, SIGNAL(toggled(
bool)),
00285 label, SLOT(setEnabled(
bool)) );
00286 expLayout->addWidget(label, 2, 0);
00287 mUnreadExpiryTimeNumInput =
new KIntNumInput(mExpireGroupBox);
00288 mUnreadExpiryTimeNumInput->setRange(1, 500, 1,
false);
00289 mUnreadExpiryTimeNumInput->setEnabled(
false);
00290 mUnreadExpiryTimeNumInput->setValue(28);
00291 label->setBuddy(mUnreadExpiryTimeNumInput);
00292 expLayout->addWidget(mUnreadExpiryTimeNumInput, 2, 1);
00293
00294 mUnreadExpiryUnitsComboBox =
new QComboBox(mExpireGroupBox);
00295 mUnreadExpiryUnitsComboBox->insertItem(i18n(
"Never"));
00296 mUnreadExpiryUnitsComboBox->insertItem(i18n(
"Day(s)"));
00297 mUnreadExpiryUnitsComboBox->insertItem(i18n(
"Week(s)"));
00298 mUnreadExpiryUnitsComboBox->insertItem(i18n(
"Month(s)"));
00299 mUnreadExpiryUnitsComboBox->setEnabled(
false);
00300 expLayout->addWidget(mUnreadExpiryUnitsComboBox, 2, 2);
00301 connect( mUnreadExpiryUnitsComboBox, SIGNAL( activated(
int ) ),
00302
this, SLOT( slotUnreadExpiryUnitChanged(
int ) ) );
00303
00304 expLayout->setColStretch(0, 3);
00305 expLayout->setColStretch(0, 100);
00306
00307
00308 QGroupBox *idGroup =
new QGroupBox( i18n(
"Identity" ), page );
00309 idGroup->setColumnLayout( 0, Qt::Vertical );
00310 QHBoxLayout *idLayout =
new QHBoxLayout(idGroup->layout());
00311 idLayout->setSpacing( 6 );
00312 topLayout->addWidget( idGroup );
00313
00314 label =
new QLabel( i18n(
"&Sender:"), idGroup );
00315 idLayout->addWidget( label );
00316 mIdentityComboBox =
new IdentityCombo( idGroup );
00317 label->setBuddy( mIdentityComboBox );
00318 idLayout->addWidget( mIdentityComboBox, 3 );
00319
00320 QGroupBox* senderGroup =
new QGroupBox( i18n(
"Show Sender/Receiver"), page,
"senderGroup" );
00321 senderGroup->setColumnLayout( 0, Qt::Vertical );
00322
00323 topLayout->addWidget( senderGroup );
00324
00325 QHBoxLayout *sl =
new QHBoxLayout( senderGroup->layout() );
00326 sl->setSpacing( 6 );
00327
00328 QLabel *sender_label =
new QLabel( i18n(
"Sho&w:" ), senderGroup );
00329 sl->addWidget( sender_label );
00330 mShowSenderReceiverComboBox =
new QComboBox(senderGroup);
00331 sender_label->setBuddy(mShowSenderReceiverComboBox);
00332 mShowSenderReceiverComboBox->insertItem(i18n(
"Default"), 0);
00333 mShowSenderReceiverComboBox->insertItem(i18n(
"Sender"), 1);
00334 mShowSenderReceiverComboBox->insertItem(i18n(
"Receiver"), 2);
00335
00336 QString
whoField;
00337
if (mFolder) whoField = mFolder->userWhoField();
00338
if (whoField.isEmpty()) mShowSenderReceiverComboBox->setCurrentItem(0);
00339
if (whoField ==
"From") mShowSenderReceiverComboBox->setCurrentItem(1);
00340
if (whoField ==
"To") mShowSenderReceiverComboBox->setCurrentItem(2);
00341
00342 sl->addWidget( mShowSenderReceiverComboBox );
00343 sl->addStretch( 1 );
00344
00345
00346
if ( ((!mFolder) && mFolderDir->type() == KMImapDir) ||
00347 (mFolder && (mFolder->folderType() == KMFolderTypeImap)) )
00348 {
00349 KMFolderImap* imapFolder = 0;
00350
if (mFolder) imapFolder = static_cast<KMFolderImap*>((
KMFolder*)mFolder);
00351
bool checked = (imapFolder) ? imapFolder->includeInMailCheck() : true;
00352
00353 QGroupBox* newmailGroup =
new QGroupBox( i18n(
"Check for New Mail"), page,
"newmailGroup" );
00354 newmailGroup->setColumnLayout( 0, Qt::Vertical );
00355 topLayout->addWidget( newmailGroup );
00356
00357 QHBoxLayout *nml =
new QHBoxLayout( newmailGroup->layout() );
00358 nml->setSpacing( 6 );
00359 QLabel *newmailLabel =
new QLabel( i18n(
"Include in check:" ), newmailGroup );
00360 nml->addWidget( newmailLabel );
00361 mNewMailCheckBox =
new QCheckBox(newmailGroup);
00362 mNewMailCheckBox->setChecked(checked);
00363 newmailLabel->setBuddy(mNewMailCheckBox);
00364 nml->addWidget( mNewMailCheckBox );
00365 nml->addStretch( 1 );
00366 }
00367
00368
KMFolder* parentFolder = 0;
00369
00370
if( aFolderDir ) {
00371
00372 kdDebug(5006) <<
"search the parent folder of the folder" << endl;
00373 QValueListConstIterator<QGuardedPtr<KMFolder> > it;
00374
int i = 1;
00375
for( it = mFolders.begin(); it != mFolders.end(); ++it, ++i ) {
00376 kdDebug(5006) <<
"checking folder '" << (*it)->label() <<
"'" << endl;
00377
if( (*it)->child() == aFolderDir ) {
00378 parentFolder = *it;
00379 mBelongsToComboBox->setCurrentItem( i );
00380 slotUpdateItems( i );
00381
break;
00382 }
00383 }
00384 }
00385
00386
if( mFolder ) {
00387 initializeWithValuesFromFolder( mFolder );
00388
00389
00390
switch ( mFolder->folderType() ) {
00391
case KMFolderTypeSearch:
00392 mMailboxTypeComboBox->setCurrentItem( 2 );
00393 belongsToLabel->hide();
00394 mBelongsToComboBox->hide();
00395
break;
00396
case KMFolderTypeMaildir:
00397 mMailboxTypeComboBox->setCurrentItem( 1 );
00398
break;
00399
case KMFolderTypeMbox:
00400 mMailboxTypeComboBox->setCurrentItem( 0 );
00401
break;
00402
case KMFolderTypeImap:
00403
case KMFolderTypeCachedImap:
00404 belongsToLabel->setEnabled(
false );
00405 mBelongsToComboBox->setEnabled(
false );
00406
break;
00407
default: ;
00408 }
00409 }
00410
else if ( parentFolder ) {
00411 initializeWithValuesFromFolder( parentFolder );
00412 }
00413
00414
00415
00416
00417
00418
if ( mFolder ) {
00419
if ( mFolder->folderType() == KMFolderTypeImap
00420 || mFolder->folderType() == KMFolderTypeCachedImap ) {
00421 mExpireGroupBox->hide();
00422 mMailboxTypeGroupBox->hide();
00423 }
00424
else if ( mFolder->isSystemFolder() ) {
00425 fpGroup->hide();
00426 iconGroup->hide();
00427 mMailboxTypeGroupBox->hide();
00428 mlGroup->hide();
00429 idGroup->hide();
00430 }
00431 }
00432
00433 kdDebug(5006)<<
"Exiting KMFolderDialog::KMFolderDialog()\n";
00434 }
00435
00436
00437
00438
void KMFolderDialog::initializeWithValuesFromFolder(
KMFolder* folder ) {
00439
if ( !folder )
00440
return;
00441
00442
00443 mIconsCheckBox->setChecked( folder->
useCustomIcons() );
00444 mNormalIconLabel->setEnabled( folder->
useCustomIcons() );
00445 mNormalIconButton->setEnabled( folder->
useCustomIcons() );
00446 mUnreadIconLabel->setEnabled( folder->
useCustomIcons() );
00447 mUnreadIconButton->setEnabled( folder->
useCustomIcons() );
00448 QString iconPath = folder->
normalIconPath();
00449
if ( !iconPath.isEmpty() )
00450 mNormalIconButton->setIcon( iconPath );
00451 iconPath = folder->
unreadIconPath();
00452
if ( !iconPath.isEmpty() )
00453 mUnreadIconButton->setIcon( iconPath );
00454
00455
00456
00457 mMailingListPostAddressEdit->setText( folder->
mailingListPostAddress() );
00458 mMailingListPostAddressEdit->setEnabled( folder->
isMailingList() );
00459 mHoldsMailingListCheckBox->setChecked( folder->
isMailingList() );
00460
00461
00462 mIdentityComboBox->
setCurrentIdentity( folder->
identity() );
00463
00464
00465 mExpireFolderCheckBox->setChecked( folder->
isAutoExpire() );
00466
00467
00468
if( folder->
getReadExpireUnits() >= 0
00469 && folder->
getReadExpireUnits() < expireMaxUnits) {
00470 mReadExpiryUnitsComboBox->setCurrentItem( folder->
getReadExpireUnits() );
00471 }
00472
if( folder->
getUnreadExpireUnits() >= 0
00473 && folder->
getUnreadExpireUnits() < expireMaxUnits ) {
00474 mUnreadExpiryUnitsComboBox->setCurrentItem( folder->
getUnreadExpireUnits() );
00475 }
00476
int age = folder->
getReadExpireAge();
00477
if ( age >= 1 && age <= 500 ) {
00478 mReadExpiryTimeNumInput->setValue( age );
00479 }
else {
00480 mReadExpiryTimeNumInput->setValue( 7 );
00481 }
00482 age = folder->
getUnreadExpireAge();
00483
if ( age >= 1 && age <= 500 ) {
00484 mUnreadExpiryTimeNumInput->setValue( age );
00485 }
else {
00486 mUnreadExpiryTimeNumInput->setValue( 28 );
00487 }
00488
if( !folder->
isAutoExpire() ) {
00489 mReadExpiryTimeNumInput->setEnabled(
false );
00490 mReadExpiryUnitsComboBox->setEnabled(
false );
00491 mUnreadExpiryTimeNumInput->setEnabled(
false );
00492 mUnreadExpiryUnitsComboBox->setEnabled(
false );
00493 }
00494
else {
00495
00496 mReadExpiryTimeNumInput->setEnabled( mReadExpiryUnitsComboBox->currentItem() != 0 );
00497 mUnreadExpiryTimeNumInput->setEnabled( mUnreadExpiryUnitsComboBox->currentItem() != 0 );
00498 }
00499 }
00500
00501
00502
void KMFolderDialog::slotFolderNameChanged(
const QString& str )
00503 {
00504 enableButtonOK( !str.isEmpty() );
00505 }
00506
00507
00508
void KMFolderDialog::slotUpdateItems (
int current )
00509 {
00510
KMFolder* selectedFolder = 0;
00511
00512
if (current > 0) selectedFolder = *mFolders.at(current - 1);
00513
if (selectedFolder && (selectedFolder->
folderType() == KMFolderTypeImap ||
00514 selectedFolder->
folderType() == KMFolderTypeCachedImap))
00515 {
00516
00517 mMailboxTypeGroupBox->setEnabled(
false );
00518 mExpireGroupBox->setEnabled(
false );
00519 }
else {
00520
00521 mMailboxTypeGroupBox->setEnabled(
true );
00522 mExpireGroupBox->setEnabled(
true );
00523 }
00524 }
00525
00526
00527
void KMFolderDialog::slotOk()
00528 {
00529
bool bIsNewFolder = ( !mFolder );
00530
00531
if ( bIsNewFolder || !mFolder->isSystemFolder() )
00532 {
00533 QString acctName;
00534 QString fldName, oldFldName;
00535
KMFolderDir *selectedFolderDir = &(kmkernel->folderMgr()->dir());
00536
KMFolder *selectedFolder = 0;
00537
int curFolder = mBelongsToComboBox->currentItem();
00538
00539
if( !bIsNewFolder ) oldFldName = mFolder->name();
00540
if (!mNameEdit->text().isEmpty()) fldName = mNameEdit->text();
00541
else fldName = oldFldName;
00542 fldName.replace(
"/",
"");
00543 fldName.replace(QRegExp(
"^\\.*"),
"");
00544
if (fldName.isEmpty()) fldName = i18n(
"unnamed");
00545
00546
if (mMailboxTypeComboBox->currentItem() == 2) {
00547 selectedFolderDir = &(kmkernel->searchFolderMgr()->dir());
00548 }
00549
else if (curFolder != 0)
00550 {
00551 selectedFolder = *mFolders.at(curFolder - 1);
00552 selectedFolderDir = selectedFolder->
createChildFolder();
00553 }
00554
00555 QString message = i18n(
"<qt>Failed to create folder <b>%1</b>, folder already exists.</qt>" ).arg(fldName);
00556
if( selectedFolderDir->
hasNamedFolder( fldName )
00557 && ( !( mFolder
00558 && ( selectedFolderDir == mFolder->parent() )
00559 && ( mFolder->name() == fldName ) ) ) )
00560 {
00561 KMessageBox::error(
this, message );
00562
return;
00563 }
00564
00565 message = i18n(
"<qt>Cannot move folder <b>%1</b> into a subfolder below itself.</qt>" ).arg(fldName);
00566
KMFolderDir* folderDir = selectedFolderDir;
00567
00568
00569
00570
if( mFolder && mFolder->child() )
00571
while( ( folderDir != &kmkernel->folderMgr()->dir() )
00572 && ( folderDir != mFolder->parent() ) ) {
00573
if( folderDir->findRef( mFolder ) != -1 ) {
00574 KMessageBox::error(
this, message );
00575
return;
00576 }
00577 folderDir = folderDir->parent();
00578 }
00579
00580
00581
00582
if( mFolder && mFolder->child() && selectedFolderDir &&
00583 ( selectedFolderDir->
path().find( mFolder->child()->path() +
"/" ) == 0 ) ) {
00584 KMessageBox::error(
this, message );
00585
return;
00586 }
00587
00588
if( mFolder && mFolder->child()
00589 && ( selectedFolderDir == mFolder->child() ) ) {
00590 KMessageBox::error(
this, message );
00591
return;
00592 }
00593
00594
if( bIsNewFolder ) {
00595
if (selectedFolder && selectedFolder->
folderType() == KMFolderTypeImap)
00596 {
00597 mFolder = kmkernel->imapFolderMgr()->createFolder( fldName, FALSE, KMFolderTypeImap, selectedFolderDir );
00598 static_cast<KMFolderImap*>(selectedFolder)->createFolder(fldName);
00599 }
else if (selectedFolder && selectedFolder->
folderType() == KMFolderTypeCachedImap){
00600 mFolder = kmkernel->dimapFolderMgr()->createFolder( fldName, FALSE, KMFolderTypeCachedImap, selectedFolderDir );
00601 }
else if (mMailboxTypeComboBox->currentItem() == 2) {
00602 mFolder = kmkernel->searchFolderMgr()->createFolder(fldName, FALSE, KMFolderTypeSearch, &kmkernel->searchFolderMgr()->dir() );
00603 }
else if (mMailboxTypeComboBox->currentItem() == 1) {
00604 mFolder = kmkernel->folderMgr()->createFolder(fldName, FALSE, KMFolderTypeMaildir, selectedFolderDir );
00605 }
else {
00606 mFolder = kmkernel->folderMgr()->createFolder(fldName, FALSE, KMFolderTypeMbox, selectedFolderDir );
00607 }
00608 }
00609
else if( ( oldFldName != fldName )
00610 || ( mFolder->parent() != selectedFolderDir ) )
00611 {
00612
if( mFolder->parent() != selectedFolderDir ) {
00613
if( mFolder->folderType() == KMFolderTypeCachedImap ) {
00614 QString message = i18n(
"Moving IMAP folders is not supported");
00615 KMessageBox::error(
this, message );
00616 }
else
00617 mFolder->rename(fldName, selectedFolderDir );
00618 }
else
00619 mFolder->rename(fldName);
00620
00621 kmkernel->folderMgr()->contentsChanged();
00622 }
00623 }
00624
00625
if( mFolder )
00626 {
00627
00628 mFolder->setMailingList( mHoldsMailingListCheckBox->isChecked() );
00629 mFolder->setMailingListPostAddress( mMailingListPostAddressEdit->text() );
00630 mFolder->setMailingListAdminAddress( QString::null );
00631
00632 mFolder->setIdentity( mIdentityComboBox->
currentIdentity() );
00633
00634
00635 mFolder->setAutoExpire(mExpireFolderCheckBox->isChecked());
00636 mFolder->setUnreadExpireAge(mUnreadExpiryTimeNumInput->value());
00637 mFolder->setReadExpireAge(mReadExpiryTimeNumInput->value());
00638 mFolder->setUnreadExpireUnits((ExpireUnits)mUnreadExpiryUnitsComboBox->currentItem());
00639 mFolder->setReadExpireUnits((ExpireUnits)mReadExpiryUnitsComboBox->currentItem());
00640
00641
00642
if ( mFolder->useCustomIcons() != mIconsCheckBox->isChecked() ) {
00643 mFolder->setUseCustomIcons( mIconsCheckBox->isChecked() );
00644
00645
if ( !mFolder->useCustomIcons() ) {
00646 mFolder->setIconPaths(
"",
"" );
00647 }
00648 }
00649
if ( mFolder->useCustomIcons() &&
00650 (( mNormalIconButton->icon() != mFolder->normalIconPath() ) &&
00651 ( !mNormalIconButton->icon().isEmpty())) ||
00652 (( mUnreadIconButton->icon() != mFolder->unreadIconPath() ) &&
00653 ( !mUnreadIconButton->icon().isEmpty())) ) {
00654 mFolder->setIconPaths( mNormalIconButton->icon(), mUnreadIconButton->icon() );
00655 }
00656
00657
if (mShowSenderReceiverComboBox->currentItem() == 1)
00658 mFolder->setUserWhoField(
"From");
00659
else if (mShowSenderReceiverComboBox->currentItem() == 2)
00660 mFolder->setUserWhoField(
"To");
00661
else
00662 mFolder->setUserWhoField(QString::null);
00663
00664
if( bIsNewFolder )
00665 mFolder->close();
00666
00667
if( mFolder->folderType() == KMFolderTypeImap )
00668 {
00669 KMFolderImap* imapFolder = static_cast<KMFolderImap*>( (
KMFolder*) mFolder );
00670 imapFolder->setIncludeInMailCheck(
00671 mNewMailCheckBox->isChecked() );
00672 }
00673 }
00674
00675 KDialogBase::slotOk();
00676 }
00677
00678
00683 void KMFolderDialog::slotExpireFolder(
bool expire)
00684 {
00685
if (expire) {
00686
00687 mReadExpiryTimeNumInput->setEnabled( mReadExpiryUnitsComboBox->currentItem() != 0 );
00688 mReadExpiryUnitsComboBox->setEnabled(
true);
00689
00690 mUnreadExpiryTimeNumInput->setEnabled( mUnreadExpiryUnitsComboBox->currentItem() != 0 );
00691 mUnreadExpiryUnitsComboBox->setEnabled(
true);
00692 }
else {
00693 mReadExpiryTimeNumInput->setEnabled(
false);
00694 mReadExpiryUnitsComboBox->setEnabled(
false);
00695 mUnreadExpiryTimeNumInput->setEnabled(
false);
00696 mUnreadExpiryUnitsComboBox->setEnabled(
false);
00697 }
00698 }
00699
00700
00704
void
00705 KMFolderDialog::slotReadExpiryUnitChanged(
int value )
00706 {
00707
00708 mReadExpiryTimeNumInput->setEnabled( value != 0 );
00709 }
00710
00711
00715
void
00716 KMFolderDialog::slotUnreadExpiryUnitChanged(
int value )
00717 {
00718
00719 mUnreadExpiryTimeNumInput->setEnabled( value != 0 );
00720 }
00721
00722
00723
void
00724 KMFolderDialog::slotChangeIcon( QString icon )
00725 {
00726 mUnreadIconButton->setIcon( icon );
00727 }