|
|
|
|
|
|
|
#include "expirypropertiesdialog.h"
|
|
|
|
#include "folderrequester.h"
|
|
|
|
#include "kmfolder.h"
|
|
|
|
#include "kmfoldertree.h"
|
|
|
|
|
|
|
|
#include <tqvariant.h>
|
|
|
|
#include <tqpushbutton.h>
|
|
|
|
#include <tqgroupbox.h>
|
|
|
|
#include <tqcheckbox.h>
|
|
|
|
#include <tqspinbox.h>
|
|
|
|
#include <tqlabel.h>
|
|
|
|
#include <tqradiobutton.h>
|
|
|
|
#include <tqbuttongroup.h>
|
|
|
|
#include <tqcombobox.h>
|
|
|
|
#include <tqlayout.h>
|
|
|
|
#include <tqtooltip.h>
|
|
|
|
#include <tqwhatsthis.h>
|
|
|
|
|
|
|
|
#include <klocale.h>
|
|
|
|
#include <kmessagebox.h>
|
|
|
|
|
|
|
|
using namespace KMail;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Constructs a ExpiryPropertiesDialog as a child of 'parent', with the
|
|
|
|
* name 'name'.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
ExpiryPropertiesDialog::ExpiryPropertiesDialog( KMFolderTree* tree, KMFolder* folder )
|
|
|
|
: KDialogBase( tree, "expiry_properties", false, i18n( "Mail Expiry Properties" ),
|
|
|
|
KDialogBase::Ok|KDialogBase::Cancel,
|
|
|
|
KDialogBase::Ok, true ),
|
|
|
|
mFolder( folder )
|
|
|
|
{
|
|
|
|
setWFlags( getWFlags() | WDestructiveClose );
|
|
|
|
TQWidget* privateLayoutWidget = new TQWidget( this, "globalVBox" );
|
|
|
|
setMainWidget( privateLayoutWidget );
|
|
|
|
privateLayoutWidget->setGeometry( TQRect( 10, 20, 270, 138 ) );
|
|
|
|
globalVBox = new TQVBoxLayout( privateLayoutWidget, 11, 6, "globalVBox");
|
|
|
|
globalVBox->setSpacing( 20 );
|
|
|
|
|
|
|
|
readHBox = new TQHBoxLayout( 0, 0, 6, "readHBox");
|
|
|
|
|
|
|
|
expireReadMailCB = new TQCheckBox( privateLayoutWidget, "expireReadMailCB" );
|
|
|
|
expireReadMailCB->setText( i18n( "Expire read mails after" ) );
|
|
|
|
connect( expireReadMailCB, TQT_SIGNAL( toggled( bool )),
|
|
|
|
this, TQT_SLOT( slotUpdateControls() ) );
|
|
|
|
readHBox->addWidget( expireReadMailCB );
|
|
|
|
|
|
|
|
expireReadMailSB = new TQSpinBox( privateLayoutWidget, "expireReadMailSB" );
|
|
|
|
expireReadMailSB->setMaxValue( 999999 );
|
|
|
|
expireReadMailSB->setValue( 30 );
|
|
|
|
readHBox->addWidget( expireReadMailSB );
|
|
|
|
|
|
|
|
labelDays = new TQLabel( privateLayoutWidget, "labelDays" );
|
|
|
|
labelDays->setText( i18n( "days" ) );
|
|
|
|
readHBox->addWidget( labelDays );
|
|
|
|
globalVBox->addLayout( readHBox );
|
|
|
|
|
|
|
|
unreadHBox = new TQHBoxLayout( 0, 0, 6, "unreadHBox");
|
|
|
|
|
|
|
|
expireUnreadMailCB = new TQCheckBox( privateLayoutWidget, "expireUnreadMailCB" );
|
|
|
|
expireUnreadMailCB->setText( i18n( "Expire unread mails after" ) );
|
|
|
|
connect( expireUnreadMailCB, TQT_SIGNAL( toggled( bool )),
|
|
|
|
this, TQT_SLOT( slotUpdateControls() ) );
|
|
|
|
unreadHBox->addWidget( expireUnreadMailCB );
|
|
|
|
|
|
|
|
expireUnreadMailSB = new TQSpinBox( privateLayoutWidget, "expireUnreadMailSB" );
|
|
|
|
expireUnreadMailSB->setMaxValue( 99999 );
|
|
|
|
expireUnreadMailSB->setValue( 30 );
|
|
|
|
unreadHBox->addWidget( expireUnreadMailSB );
|
|
|
|
|
|
|
|
labelDays2 = new TQLabel( privateLayoutWidget, "labelDays2" );
|
|
|
|
labelDays2->setText( i18n( "days" ) );
|
|
|
|
labelDays2->tqsetAlignment( int( TQLabel::AlignTop ) );
|
|
|
|
unreadHBox->addWidget( labelDays2 );
|
|
|
|
globalVBox->addLayout( unreadHBox );
|
|
|
|
|
|
|
|
expiryActionHBox = new TQHBoxLayout( 0, 0, 6, "expiryActionHBox");
|
|
|
|
|
|
|
|
expiryActionLabel = new TQLabel( privateLayoutWidget, "expiryActionLabel" );
|
|
|
|
expiryActionLabel->setText( i18n( "Expiry action:" ) );
|
|
|
|
expiryActionLabel->tqsetAlignment( int( TQLabel::AlignVCenter ) );
|
|
|
|
expiryActionHBox->addWidget( expiryActionLabel );
|
|
|
|
|
|
|
|
actionsHBox = new TQVBoxLayout( 0, 0, 6, "actionsHBox");
|
|
|
|
actionsGroup = new TQButtonGroup( this );
|
|
|
|
actionsGroup->hide(); // for mutual exclusion of the radio buttons
|
|
|
|
|
|
|
|
moveToHBox = new TQHBoxLayout( 0, 0, 6, "moveToHBox");
|
|
|
|
|
|
|
|
moveToRB = new TQRadioButton( privateLayoutWidget, "moveToRB" );
|
|
|
|
actionsGroup->insert( moveToRB );
|
|
|
|
connect( moveToRB, TQT_SIGNAL( toggled( bool ) ),
|
|
|
|
this, TQT_SLOT( slotUpdateControls() ) );
|
|
|
|
moveToRB->setText( i18n( "Move to:" ) );
|
|
|
|
moveToHBox->addWidget( moveToRB );
|
|
|
|
|
|
|
|
folderSelector = new KMail::FolderRequester( privateLayoutWidget, tree );
|
|
|
|
folderSelector->setMustBeReadWrite( true );
|
|
|
|
moveToHBox->addWidget( folderSelector );
|
|
|
|
actionsHBox->addLayout( moveToHBox );
|
|
|
|
|
|
|
|
deletePermanentlyRB = new TQRadioButton( privateLayoutWidget, "deletePermanentlyRB" );
|
|
|
|
actionsGroup->insert( deletePermanentlyRB );
|
|
|
|
deletePermanentlyRB->setText( i18n( "Delete permanently" ) );
|
|
|
|
actionsHBox->addWidget( deletePermanentlyRB );
|
|
|
|
expiryActionHBox->addLayout( actionsHBox );
|
|
|
|
globalVBox->addLayout( expiryActionHBox );
|
|
|
|
|
|
|
|
note = new TQLabel( privateLayoutWidget, "note" );
|
|
|
|
note->setText( i18n( "Note: Expiry action will be applied immediately after confirming settings." ) );
|
|
|
|
note->tqsetAlignment( int( TQLabel::WordBreak | TQLabel::AlignVCenter ) );
|
|
|
|
globalVBox->addWidget( note );
|
|
|
|
|
|
|
|
// Load the values from the folder
|
|
|
|
bool expiryGloballyOn = mFolder->isAutoExpire();
|
|
|
|
int daysToExpireRead, daysToExpireUnread;
|
|
|
|
mFolder->daysToExpire( daysToExpireUnread, daysToExpireRead);
|
|
|
|
|
|
|
|
if ( expiryGloballyOn
|
|
|
|
&& mFolder->getReadExpireUnits() != expireNever
|
|
|
|
&& daysToExpireRead >= 0 ) {
|
|
|
|
expireReadMailCB->setChecked( true );
|
|
|
|
expireReadMailSB->setValue( daysToExpireRead );
|
|
|
|
}
|
|
|
|
if ( expiryGloballyOn
|
|
|
|
&& mFolder->getUnreadExpireUnits() != expireNever
|
|
|
|
&& daysToExpireUnread >= 0 ) {
|
|
|
|
expireUnreadMailCB->setChecked( true );
|
|
|
|
expireUnreadMailSB->setValue( daysToExpireUnread );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( mFolder->expireAction() == KMFolder::ExpireDelete )
|
|
|
|
deletePermanentlyRB->setChecked( true );
|
|
|
|
else
|
|
|
|
moveToRB->setChecked( true );
|
|
|
|
|
|
|
|
TQString destFolderID = mFolder->expireToFolderId();
|
|
|
|
if ( !destFolderID.isEmpty() ) {
|
|
|
|
KMFolder* destFolder = kmkernel->findFolderById( destFolderID );
|
|
|
|
if ( destFolder )
|
|
|
|
folderSelector->setFolder( destFolder );
|
|
|
|
}
|
|
|
|
slotUpdateControls();
|
|
|
|
resize( TQSize(295, 204).expandedTo(tqminimumSizeHint()) );
|
|
|
|
clearWState( WState_Polished );
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Destroys the object and frees any allocated resources
|
|
|
|
*/
|
|
|
|
ExpiryPropertiesDialog::~ExpiryPropertiesDialog()
|
|
|
|
{
|
|
|
|
// no need to delete child widgets, TQt does it all for us
|
|
|
|
}
|
|
|
|
|
|
|
|
void ExpiryPropertiesDialog::slotOk()
|
|
|
|
{
|
|
|
|
bool enableGlobally = expireReadMailCB->isChecked() || expireUnreadMailCB->isChecked();
|
|
|
|
|
|
|
|
KMFolder *expireToFolder = folderSelector->folder();
|
|
|
|
if ( enableGlobally && moveToRB->isChecked() && !expireToFolder ) {
|
|
|
|
KMessageBox::error(
|
|
|
|
this,
|
|
|
|
i18n( "Please select a folder to expire messages into." ),
|
|
|
|
i18n( "No Folder Selected" ) );
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( expireToFolder ) {
|
|
|
|
if ( expireToFolder->idString() == mFolder->idString() ) {
|
|
|
|
KMessageBox::error(
|
|
|
|
this,
|
|
|
|
i18n( "Please select a different folder than the current folder "
|
|
|
|
"to expire message into." ),
|
|
|
|
i18n( "Wrong Folder Selected" ) );
|
|
|
|
return;
|
|
|
|
} else {
|
|
|
|
mFolder->setExpireToFolderId( expireToFolder->idString() );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
mFolder->setAutoExpire( enableGlobally );
|
|
|
|
// we always write out days now
|
|
|
|
mFolder->setReadExpireAge( expireReadMailSB->value() );
|
|
|
|
mFolder->setUnreadExpireAge( expireUnreadMailSB->value() );
|
|
|
|
mFolder->setReadExpireUnits( expireReadMailCB->isChecked()? expireDays : expireNever );
|
|
|
|
mFolder->setUnreadExpireUnits( expireUnreadMailCB->isChecked()? expireDays : expireNever );
|
|
|
|
|
|
|
|
if ( deletePermanentlyRB->isChecked() )
|
|
|
|
mFolder->setExpireAction( KMFolder::ExpireDelete );
|
|
|
|
else
|
|
|
|
mFolder->setExpireAction( KMFolder::ExpireMove );
|
|
|
|
|
|
|
|
// trigger immediate expiry if there is something to do
|
|
|
|
if ( enableGlobally )
|
|
|
|
mFolder->expireOldMessages( true /*immediate*/);
|
|
|
|
KDialogBase::slotOk();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ExpiryPropertiesDialog::slotUpdateControls()
|
|
|
|
{
|
|
|
|
bool showExpiryActions = expireReadMailCB->isChecked() || expireUnreadMailCB->isChecked();
|
|
|
|
moveToRB->setEnabled( showExpiryActions );
|
|
|
|
folderSelector->setEnabled( showExpiryActions && moveToRB->isChecked() );
|
|
|
|
deletePermanentlyRB->setEnabled( showExpiryActions );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#include "expirypropertiesdialog.moc"
|