00001
00002 #include "expirypropertiesdialog.h"
00003 #include "folderrequester.h"
00004 #include "kmfolder.h"
00005 #include "kmfoldertree.h"
00006
00007 #include <tqvariant.h>
00008 #include <tqpushbutton.h>
00009 #include <tqgroupbox.h>
00010 #include <tqcheckbox.h>
00011 #include <tqspinbox.h>
00012 #include <tqlabel.h>
00013 #include <tqradiobutton.h>
00014 #include <tqbuttongroup.h>
00015 #include <tqcombobox.h>
00016 #include <tqlayout.h>
00017 #include <tqtooltip.h>
00018 #include <tqwhatsthis.h>
00019
00020 #include <tdelocale.h>
00021 #include <tdemessagebox.h>
00022
00023 using namespace KMail;
00024
00025
00026
00027
00028
00029
00030 ExpiryPropertiesDialog::ExpiryPropertiesDialog( KMFolderTree* tree, KMFolder* folder )
00031 : KDialogBase( tree, "expiry_properties", false, i18n( "Mail Expiry Properties" ),
00032 KDialogBase::Ok|KDialogBase::Cancel,
00033 KDialogBase::Ok, true ),
00034 mFolder( folder )
00035 {
00036 setWFlags( getWFlags() | WDestructiveClose );
00037 TQWidget* privateLayoutWidget = new TQWidget( this, "globalVBox" );
00038 setMainWidget( privateLayoutWidget );
00039 privateLayoutWidget->setGeometry( TQRect( 10, 20, 270, 138 ) );
00040 globalVBox = new TQVBoxLayout( privateLayoutWidget, 11, 6, "globalVBox");
00041 globalVBox->setSpacing( 20 );
00042
00043 readHBox = new TQHBoxLayout( 0, 0, 6, "readHBox");
00044
00045 expireReadMailCB = new TQCheckBox( privateLayoutWidget, "expireReadMailCB" );
00046 expireReadMailCB->setText( i18n( "Expire read mails after" ) );
00047 connect( expireReadMailCB, TQT_SIGNAL( toggled( bool )),
00048 this, TQT_SLOT( slotUpdateControls() ) );
00049 readHBox->addWidget( expireReadMailCB );
00050
00051 expireReadMailSB = new TQSpinBox( privateLayoutWidget, "expireReadMailSB" );
00052 expireReadMailSB->setMaxValue( 999999 );
00053 expireReadMailSB->setValue( 30 );
00054 readHBox->addWidget( expireReadMailSB );
00055
00056 labelDays = new TQLabel( privateLayoutWidget, "labelDays" );
00057 labelDays->setText( i18n( "days" ) );
00058 readHBox->addWidget( labelDays );
00059 globalVBox->addLayout( readHBox );
00060
00061 unreadHBox = new TQHBoxLayout( 0, 0, 6, "unreadHBox");
00062
00063 expireUnreadMailCB = new TQCheckBox( privateLayoutWidget, "expireUnreadMailCB" );
00064 expireUnreadMailCB->setText( i18n( "Expire unread mails after" ) );
00065 connect( expireUnreadMailCB, TQT_SIGNAL( toggled( bool )),
00066 this, TQT_SLOT( slotUpdateControls() ) );
00067 unreadHBox->addWidget( expireUnreadMailCB );
00068
00069 expireUnreadMailSB = new TQSpinBox( privateLayoutWidget, "expireUnreadMailSB" );
00070 expireUnreadMailSB->setMaxValue( 99999 );
00071 expireUnreadMailSB->setValue( 30 );
00072 unreadHBox->addWidget( expireUnreadMailSB );
00073
00074 labelDays2 = new TQLabel( privateLayoutWidget, "labelDays2" );
00075 labelDays2->setText( i18n( "days" ) );
00076 labelDays2->setAlignment( int( TQLabel::AlignTop ) );
00077 unreadHBox->addWidget( labelDays2 );
00078 globalVBox->addLayout( unreadHBox );
00079
00080 expiryActionHBox = new TQHBoxLayout( 0, 0, 6, "expiryActionHBox");
00081
00082 expiryActionLabel = new TQLabel( privateLayoutWidget, "expiryActionLabel" );
00083 expiryActionLabel->setText( i18n( "Expiry action:" ) );
00084 expiryActionLabel->setAlignment( int( TQLabel::AlignVCenter ) );
00085 expiryActionHBox->addWidget( expiryActionLabel );
00086
00087 actionsHBox = new TQVBoxLayout( 0, 0, 6, "actionsHBox");
00088 actionsGroup = new TQButtonGroup( this );
00089 actionsGroup->hide();
00090
00091 moveToHBox = new TQHBoxLayout( 0, 0, 6, "moveToHBox");
00092
00093 moveToRB = new TQRadioButton( privateLayoutWidget, "moveToRB" );
00094 actionsGroup->insert( moveToRB );
00095 connect( moveToRB, TQT_SIGNAL( toggled( bool ) ),
00096 this, TQT_SLOT( slotUpdateControls() ) );
00097 moveToRB->setText( i18n( "Move to:" ) );
00098 moveToHBox->addWidget( moveToRB );
00099
00100 folderSelector = new KMail::FolderRequester( privateLayoutWidget, tree );
00101 folderSelector->setMustBeReadWrite( true );
00102 moveToHBox->addWidget( folderSelector );
00103 actionsHBox->addLayout( moveToHBox );
00104
00105 deletePermanentlyRB = new TQRadioButton( privateLayoutWidget, "deletePermanentlyRB" );
00106 actionsGroup->insert( deletePermanentlyRB );
00107 deletePermanentlyRB->setText( i18n( "Delete permanently" ) );
00108 actionsHBox->addWidget( deletePermanentlyRB );
00109 expiryActionHBox->addLayout( actionsHBox );
00110 globalVBox->addLayout( expiryActionHBox );
00111
00112 note = new TQLabel( privateLayoutWidget, "note" );
00113 note->setText( i18n( "Note: Expiry action will be applied immediately after confirming settings." ) );
00114 note->setAlignment( int( TQLabel::WordBreak | TQLabel::AlignVCenter ) );
00115 globalVBox->addWidget( note );
00116
00117
00118 bool expiryGloballyOn = mFolder->isAutoExpire();
00119 int daysToExpireRead, daysToExpireUnread;
00120 mFolder->daysToExpire( daysToExpireUnread, daysToExpireRead);
00121
00122 if ( expiryGloballyOn
00123 && mFolder->getReadExpireUnits() != expireNever
00124 && daysToExpireRead >= 0 ) {
00125 expireReadMailCB->setChecked( true );
00126 expireReadMailSB->setValue( daysToExpireRead );
00127 }
00128 if ( expiryGloballyOn
00129 && mFolder->getUnreadExpireUnits() != expireNever
00130 && daysToExpireUnread >= 0 ) {
00131 expireUnreadMailCB->setChecked( true );
00132 expireUnreadMailSB->setValue( daysToExpireUnread );
00133 }
00134
00135 if ( mFolder->expireAction() == KMFolder::ExpireDelete )
00136 deletePermanentlyRB->setChecked( true );
00137 else
00138 moveToRB->setChecked( true );
00139
00140 TQString destFolderID = mFolder->expireToFolderId();
00141 if ( !destFolderID.isEmpty() ) {
00142 KMFolder* destFolder = kmkernel->findFolderById( destFolderID );
00143 if ( destFolder )
00144 folderSelector->setFolder( destFolder );
00145 }
00146 slotUpdateControls();
00147 resize( TQSize(295, 204).expandedTo(minimumSizeHint()) );
00148 clearWState( WState_Polished );
00149 }
00150
00151
00152
00153
00154 ExpiryPropertiesDialog::~ExpiryPropertiesDialog()
00155 {
00156
00157 }
00158
00159 void ExpiryPropertiesDialog::slotOk()
00160 {
00161 bool enableGlobally = expireReadMailCB->isChecked() || expireUnreadMailCB->isChecked();
00162
00163 KMFolder *expireToFolder = folderSelector->folder();
00164 if ( enableGlobally && moveToRB->isChecked() && !expireToFolder ) {
00165 KMessageBox::error(
00166 this,
00167 i18n( "Please select a folder to expire messages into." ),
00168 i18n( "No Folder Selected" ) );
00169 return;
00170 }
00171
00172 if ( expireToFolder ) {
00173 if ( expireToFolder->idString() == mFolder->idString() ) {
00174 KMessageBox::error(
00175 this,
00176 i18n( "Please select a different folder than the current folder "
00177 "to expire message into." ),
00178 i18n( "Wrong Folder Selected" ) );
00179 return;
00180 } else {
00181 mFolder->setExpireToFolderId( expireToFolder->idString() );
00182 }
00183 }
00184
00185 mFolder->setAutoExpire( enableGlobally );
00186
00187 mFolder->setReadExpireAge( expireReadMailSB->value() );
00188 mFolder->setUnreadExpireAge( expireUnreadMailSB->value() );
00189 mFolder->setReadExpireUnits( expireReadMailCB->isChecked()? expireDays : expireNever );
00190 mFolder->setUnreadExpireUnits( expireUnreadMailCB->isChecked()? expireDays : expireNever );
00191
00192 if ( deletePermanentlyRB->isChecked() )
00193 mFolder->setExpireAction( KMFolder::ExpireDelete );
00194 else
00195 mFolder->setExpireAction( KMFolder::ExpireMove );
00196
00197
00198 if ( enableGlobally )
00199 mFolder->expireOldMessages( true );
00200 KDialogBase::slotOk();
00201 }
00202
00203 void ExpiryPropertiesDialog::slotUpdateControls()
00204 {
00205 bool showExpiryActions = expireReadMailCB->isChecked() || expireUnreadMailCB->isChecked();
00206 moveToRB->setEnabled( showExpiryActions );
00207 folderSelector->setEnabled( showExpiryActions && moveToRB->isChecked() );
00208 deletePermanentlyRB->setEnabled( showExpiryActions );
00209 }
00210
00211
00212 #include "expirypropertiesdialog.moc"