You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kshowmail/kshowmail/kcmconfigs/configlog.cpp

256 lines
11 KiB

//
// C++ Implementation: configlog
//
// Description:
//
//
// Author: Ulrich Weigelt <ulrich.weigelt@gmx.de>, (C) 2007
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "configlog.h"
typedef KGenericFactory<ConfigLog, TQWidget> ConfigLogFactory;
K_EXPORT_COMPONENT_FACTORY( kcm_kshowmailconfiglog, ConfigLogFactory(
"kcm_kshowmailconfiglog" ) );
ConfigLog::ConfigLog( TQWidget * parent, const char * name, const TQStringList & args )
: TDECModule( ConfigLogFactory::instance(), parent, args )
{
//set the module name
if ( !name )
setName( "configlog" );
//build GUI
//---------
//main layout
TQVBoxLayout* layMain = new TQVBoxLayout( this, 0, 10 );
//widgets for deleted mails log
TQVBoxLayout* layDelMails = new TQVBoxLayout( layMain, 10, "layDelMails" );
chkLogDeletedMails = new TQCheckBox( i18n( "Log mails deleted by filter" ), this, "chkLogDeletedMails" );
layDelMails->addWidget( chkLogDeletedMails );
TQToolTip::add( chkLogDeletedMails, i18n( "Check to activate the log of mails deleted by filter." ) );
connect( chkLogDeletedMails, SIGNAL( toggled( bool ) ), this, SLOT( slotChanged() ) );
connect( chkLogDeletedMails, SIGNAL( toggled( bool ) ), this, SLOT( slotChangeItems() ) );
TQVBoxLayout* layDelMailsConfig = new TQVBoxLayout( layDelMails, 10, "layDelMailsConfig" );
layDelMailsConfig->setMargin( 10 );
grpDelMailsRemove = new TQButtonGroup( NULL, "grpDelMailsRemove" );
connect( grpDelMailsRemove, SIGNAL( clicked( int ) ), this, SLOT( slotChanged() ) );
connect( grpDelMailsRemove, SIGNAL( clicked( int ) ), this, SLOT( slotChangeItems() ) );
btnDelMailsRemoveExit = new TQRadioButton( i18n( "Remove log entries at exit" ), this, "btnDelMailsRemoveExit" );
grpDelMailsRemove->insert( btnDelMailsRemoveExit, ID_BUTTON_REMOVE_AT_EXIT );
layDelMailsConfig->addWidget( btnDelMailsRemoveExit );
TQHBoxLayout* layDelMailsConfigDays = new TQHBoxLayout( layDelMailsConfig, 0, "layDelMailsConfigDays" );
layDelMailsConfigDays->setAlignment( TQt::AlignLeft );
btnDelMailsRemoveDays = new TQRadioButton( i18n( "Remove log entries after" ), this, "btnDelMailsRemoveDays" );
grpDelMailsRemove->insert( btnDelMailsRemoveDays, ID_BUTTON_REMOVE_AFTER_DAYS );
layDelMailsConfigDays->addWidget( btnDelMailsRemoveDays );
spbDelDays = new TQSpinBox( 1, 999999, 1, this, "spbDelDays" );
connect( spbDelDays, SIGNAL( valueChanged( int ) ), this, SLOT( slotChanged() ) );
connect( spbDelDays, SIGNAL( valueChanged( int ) ), this, SLOT( slotChangeItems() ) );
spbDelDays->setSuffix( i18n( " Days" ) );
spbDelDays->setSizePolicy( TQSizePolicy::Maximum, TQSizePolicy::Minimum );
layDelMailsConfigDays->addWidget( spbDelDays );
//widgets for moved mails log
TQVBoxLayout* layMovMails = new TQVBoxLayout( layMain, 10, "layMovMails" );
chkLogMovedMails = new TQCheckBox( i18n( "Log mails moved by filter" ), this, "chkLogMovedMails" );
layMovMails->addWidget( chkLogMovedMails );
TQToolTip::add( chkLogMovedMails, i18n( "Check to activate the log of mails moved by filter." ) );
connect( chkLogMovedMails, SIGNAL( toggled( bool ) ), this, SLOT( slotChanged() ) );
connect( chkLogMovedMails, SIGNAL( toggled( bool ) ), this, SLOT( slotChangeItems() ) );
TQVBoxLayout* layMovMailsConfig = new TQVBoxLayout( layMovMails, 10, "layMovMailsConfig" );
layMovMailsConfig->setMargin( 10 );
grpMovMailsRemove = new TQButtonGroup( NULL, "grpMovMailsRemove" );
connect( grpMovMailsRemove, SIGNAL( clicked( int ) ), this, SLOT( slotChanged() ) );
connect( grpMovMailsRemove, SIGNAL( clicked( int ) ), this, SLOT( slotChangeItems() ) );
btnMovMailsRemoveExit = new TQRadioButton( i18n( "Remove log entries at exit" ), this, "btnMovMailsRemoveExit" );
grpMovMailsRemove->insert( btnMovMailsRemoveExit, ID_BUTTON_REMOVE_AT_EXIT );
layMovMailsConfig->addWidget( btnMovMailsRemoveExit );
TQHBoxLayout* layMovMailsConfigDays = new TQHBoxLayout( layMovMailsConfig, 0, "layMovMailsConfigDays" );
layMovMailsConfigDays->setAlignment( TQt::AlignLeft );
btnMovMailsRemoveDays = new TQRadioButton( i18n( "Remove log entries after" ), this, "btnMovMailsRemoveDays" );
grpMovMailsRemove->insert( btnMovMailsRemoveDays, ID_BUTTON_REMOVE_AFTER_DAYS );
layMovMailsConfigDays->addWidget( btnMovMailsRemoveDays );
spbMovDays = new TQSpinBox( 1, 999999, 1, this, "spbMovDays" );
connect( spbMovDays, SIGNAL( valueChanged( int ) ), this, SLOT( slotChanged() ) );
connect( spbMovDays, SIGNAL( valueChanged( int ) ), this, SLOT( slotChangeItems() ) );
spbMovDays->setSuffix( i18n( " Days" ) );
spbMovDays->setSizePolicy( TQSizePolicy::Maximum, TQSizePolicy::Minimum );
layMovMailsConfigDays->addWidget( spbMovDays );
//the log of moved mails is not saved yet, maybe later...
btnMovMailsRemoveExit->setHidden( true );
btnMovMailsRemoveDays->setHidden( true );
spbMovDays->setHidden( true );
//get application config object (kshowmailrc)
config = TDEApplication::kApplication()->config();
//load configured values
load();
}
ConfigLog::~ConfigLog()
{
}
void ConfigLog::load()
{
//set group
config->setGroup( CONFIG_GROUP_LOG );
//load settings
chkLogDeletedMails->setChecked( config->readBoolEntry( CONFIG_ENTRY_LOG_LOG_DELETED_MAILS, DEFAULT_LOG_LOG_DELETED_MAILS ) );
chkLogMovedMails->setChecked( config->readBoolEntry( CONFIG_ENTRY_LOG_LOG_MOVED_MAILS, DEFAULT_LOG_LOG_MOVED_MAILS ) );
if( config->readEntry( CONFIG_ENTRY_LOG_REMOVE_DELETED_MAILS, DEFAULT_LOG_REMOVE_DELETED_MAILS ) == CONFIG_VALUE_LOG_REMOVE_MAILS_AT_EXIT )
grpDelMailsRemove->setButton( ID_BUTTON_REMOVE_AT_EXIT );
else if( config->readEntry( CONFIG_ENTRY_LOG_REMOVE_DELETED_MAILS, DEFAULT_LOG_REMOVE_DELETED_MAILS ) == CONFIG_VALUE_LOG_REMOVE_MAILS_AFTER_DAYS )
grpDelMailsRemove->setButton( ID_BUTTON_REMOVE_AFTER_DAYS );
else
if (!strcmp(DEFAULT_LOG_REMOVE_DELETED_MAILS, CONFIG_VALUE_LOG_REMOVE_MAILS_AT_EXIT))
grpDelMailsRemove->setButton( ID_BUTTON_REMOVE_AT_EXIT );
else
grpDelMailsRemove->setButton( ID_BUTTON_REMOVE_AFTER_DAYS );
if( config->readEntry( CONFIG_ENTRY_LOG_REMOVE_MOVED_MAILS, DEFAULT_LOG_REMOVE_MOVED_MAILS ) == CONFIG_VALUE_LOG_REMOVE_MAILS_AT_EXIT )
grpMovMailsRemove->setButton( ID_BUTTON_REMOVE_AT_EXIT );
else if( config->readEntry( CONFIG_ENTRY_LOG_REMOVE_MOVED_MAILS, DEFAULT_LOG_REMOVE_MOVED_MAILS ) == CONFIG_VALUE_LOG_REMOVE_MAILS_AFTER_DAYS )
grpMovMailsRemove->setButton( ID_BUTTON_REMOVE_AFTER_DAYS );
else
if (!strcmp(DEFAULT_LOG_REMOVE_MOVED_MAILS, CONFIG_VALUE_LOG_REMOVE_MAILS_AT_EXIT))
grpMovMailsRemove->setButton( ID_BUTTON_REMOVE_AT_EXIT );
else
grpMovMailsRemove->setButton( ID_BUTTON_REMOVE_AFTER_DAYS );
spbDelDays->setValue( config->readNumEntry( CONFIG_ENTRY_LOG_HOLDDAYS_DELETED_MAILS, DEFAULT_LOG_HOLDDAYS_DELETED_MAILS ) );
spbMovDays->setValue( config->readNumEntry( CONFIG_ENTRY_LOG_HOLDDAYS_MOVED_MAILS, DEFAULT_LOG_HOLDDAYS_MOVED_MAILS ) );
//enable or disable Items
slotChangeItems();
}
void ConfigLog::defaults()
{
if( DEFAULT_LOG_LOG_DELETED_MAILS )
chkLogDeletedMails->setChecked( true );
else
chkLogMovedMails->setChecked( false );
if( DEFAULT_LOG_LOG_MOVED_MAILS )
chkLogMovedMails->setChecked( true );
else
chkLogMovedMails->setChecked( false );
if (!strcmp(DEFAULT_LOG_REMOVE_DELETED_MAILS, CONFIG_VALUE_LOG_REMOVE_MAILS_AT_EXIT))
grpDelMailsRemove->setButton( ID_BUTTON_REMOVE_AT_EXIT );
else if (!strcmp(DEFAULT_LOG_REMOVE_DELETED_MAILS, CONFIG_VALUE_LOG_REMOVE_MAILS_AFTER_DAYS))
grpDelMailsRemove->setButton( ID_BUTTON_REMOVE_AFTER_DAYS );
else
grpDelMailsRemove->setButton( ID_BUTTON_REMOVE_AFTER_DAYS );
if (!strcmp(DEFAULT_LOG_REMOVE_MOVED_MAILS, CONFIG_VALUE_LOG_REMOVE_MAILS_AT_EXIT))
grpMovMailsRemove->setButton( ID_BUTTON_REMOVE_AT_EXIT );
else if (!strcmp(DEFAULT_LOG_REMOVE_MOVED_MAILS, CONFIG_VALUE_LOG_REMOVE_MAILS_AFTER_DAYS))
grpMovMailsRemove->setButton( ID_BUTTON_REMOVE_AFTER_DAYS );
else
grpMovMailsRemove->setButton( ID_BUTTON_REMOVE_AFTER_DAYS );
spbDelDays->setValue( DEFAULT_LOG_HOLDDAYS_DELETED_MAILS );
spbMovDays->setValue( DEFAULT_LOG_HOLDDAYS_MOVED_MAILS );
//enable or disable Items
slotChangeItems();
slotChanged();
}
void ConfigLog::save()
{
//set group
config->setGroup( CONFIG_GROUP_LOG );
//write settings
config->writeEntry( CONFIG_ENTRY_LOG_LOG_DELETED_MAILS, chkLogDeletedMails->isOn() );
config->writeEntry( CONFIG_ENTRY_LOG_LOG_MOVED_MAILS, chkLogMovedMails->isOn() );
switch( grpDelMailsRemove->selectedId() )
{
case ID_BUTTON_REMOVE_AT_EXIT : config->writeEntry( CONFIG_ENTRY_LOG_REMOVE_DELETED_MAILS, CONFIG_VALUE_LOG_REMOVE_MAILS_AT_EXIT ); break;
case ID_BUTTON_REMOVE_AFTER_DAYS : config->writeEntry( CONFIG_ENTRY_LOG_REMOVE_DELETED_MAILS, CONFIG_VALUE_LOG_REMOVE_MAILS_AFTER_DAYS ); break;
default : config->writeEntry( CONFIG_ENTRY_LOG_REMOVE_DELETED_MAILS, CONFIG_VALUE_LOG_REMOVE_MAILS_AFTER_DAYS ); break;
}
switch( grpMovMailsRemove->selectedId() )
{
case ID_BUTTON_REMOVE_AT_EXIT : config->writeEntry( CONFIG_ENTRY_LOG_REMOVE_MOVED_MAILS, CONFIG_VALUE_LOG_REMOVE_MAILS_AT_EXIT ); break;
case ID_BUTTON_REMOVE_AFTER_DAYS : config->writeEntry( CONFIG_ENTRY_LOG_REMOVE_MOVED_MAILS, CONFIG_VALUE_LOG_REMOVE_MAILS_AFTER_DAYS ); break;
default : config->writeEntry( CONFIG_ENTRY_LOG_REMOVE_MOVED_MAILS, CONFIG_VALUE_LOG_REMOVE_MAILS_AT_EXIT ); break;
}
config->writeEntry( CONFIG_ENTRY_LOG_HOLDDAYS_DELETED_MAILS, spbDelDays->value() );
config->writeEntry( CONFIG_ENTRY_LOG_HOLDDAYS_MOVED_MAILS, spbMovDays->value() );
}
void ConfigLog::slotChanged()
{
TDECModule::changed();
}
void ConfigLog::slotChangeItems()
{
if( chkLogDeletedMails->isChecked() )
{
btnDelMailsRemoveExit->setEnabled( true );
btnDelMailsRemoveDays->setEnabled( true );
spbDelDays->setEnabled( true );
switch( grpDelMailsRemove->selectedId() )
{
case ID_BUTTON_REMOVE_AFTER_DAYS : spbDelDays->setEnabled( true ); break;
case ID_BUTTON_REMOVE_AT_EXIT : spbDelDays->setEnabled( false ); break;
default : spbDelDays->setEnabled( true ); break;
}
}
else
{
btnDelMailsRemoveExit->setEnabled( false );
btnDelMailsRemoveDays->setEnabled( false );
spbDelDays->setEnabled( false );
}
if( chkLogMovedMails->isChecked() )
{
btnMovMailsRemoveExit->setEnabled( true );
btnMovMailsRemoveDays->setEnabled( true );
spbMovDays->setEnabled( true );
switch( grpMovMailsRemove->selectedId() )
{
case ID_BUTTON_REMOVE_AFTER_DAYS : spbMovDays->setEnabled( true ); break;
case ID_BUTTON_REMOVE_AT_EXIT : spbMovDays->setEnabled( false ); break;
default : spbMovDays->setEnabled( true ); break;
}
}
else
{
btnMovMailsRemoveExit->setEnabled( false );
btnMovMailsRemoveDays->setEnabled( false );
spbMovDays->setEnabled( false );
}
}
#include "configlog.moc"