00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "configgeneral.h"
00019
00020 K_PLUGIN_FACTORY( ConfigGeneralFactory, registerPlugin<ConfigGeneral>(); )
00021 K_EXPORT_PLUGIN( ConfigGeneralFactory( "kcm_kshowmailconfiggeneral" ) )
00022
00023 ConfigGeneral::ConfigGeneral( QWidget * parent, const QVariantList & args )
00024 : KCModule( ConfigGeneralFactory::componentData(), parent, args )
00025 {
00026
00027
00028
00029
00030 QVBoxLayout* layMain = new QVBoxLayout( this );
00031
00032
00033 QGridLayout* layMainTop = new QGridLayout();
00034 layMainTop->setMargin( 20 );
00035 layMain->addLayout( layMainTop );
00036
00037
00038 QGroupBox* gboxAutomaticRefresh = new QGroupBox( i18n( "&Automatic Refresh" ), this );
00039 layMain->addWidget( gboxAutomaticRefresh );
00040
00041
00042 QGridLayout* layAutoRefresh = new QGridLayout();
00043 gboxAutomaticRefresh->setLayout( layAutoRefresh );
00044
00045
00046 QGroupBox* gBoxServerConnect = new QGroupBox( i18n( "Server Connect"), this );
00047 layMain->addWidget( gBoxServerConnect );
00048 QGridLayout* layServerConnect = new QGridLayout();
00049 gBoxServerConnect->setLayout( layServerConnect );
00050
00051
00052 chkConfirmClose = new QCheckBox( i18n( "Confirm Close" ), this );
00053 chkConfirmClose->setToolTip( i18n( "If checked, window close must be confirmed" ) );
00054 layMainTop->addWidget( chkConfirmClose, 0, 0 );
00055
00056 chkConfirmDelete = new QCheckBox( i18n( "Confirm delete" ), this );
00057 chkConfirmDelete->setToolTip( i18n( "If checked, message delete must be confirmed" ) );
00058 layMainTop->addWidget( chkConfirmDelete, 0, 1 );
00059
00060 chkStartMinimized = new QCheckBox( i18n( "Start Minimi&zed" ), this );
00061 chkStartMinimized->setToolTip( i18n( "Application is started as icon" ) );
00062 layMainTop->addWidget( chkStartMinimized, 1, 0 );
00063
00064 chkCloseToTray = new QCheckBox( i18n( "Close to tray" ), this );
00065 chkCloseToTray->setToolTip( i18n( "Close button leaves the application running in tray" ) );
00066 layMainTop->addWidget( chkCloseToTray, 1, 1 );
00067
00068 chkKeepNew = new QCheckBox( i18n( "&Keep mail as new" ), this );
00069 chkKeepNew->setToolTip( i18n( "Keep mail as new until termination" ) );
00070 layMainTop->addWidget( chkKeepNew, 2, 0 );
00071
00072 chkStoreHeaders = new QCheckBox( i18n( "Store fetched headers" ) );
00073 chkStoreHeaders->setToolTip( i18n( "If checked, the fetched mail headers will be stored if you exit Kshowmail.\nAt the next start these headers will be loaded and shown until the next refresh.") );
00074 layMainTop->addWidget( chkStoreHeaders, 2, 1 );
00075
00076 chkAutomaticRefresh = new QCheckBox( i18n( "Automatic refresh" ) );
00077 chkAutomaticRefresh->setToolTip( i18n( "Run refreshes of the mail list automatically") );
00078 layAutoRefresh->addWidget( chkAutomaticRefresh, 0, 0 );
00079 connect( chkAutomaticRefresh, SIGNAL( toggled( bool) ), this, SLOT( slotAutomaticRefreshChanged( bool ) ) );
00080
00081 lblTimerInitial = new QLabel( i18n( "Initial Timer:" ), gboxAutomaticRefresh );
00082 spbInitial = new QSpinBox( gboxAutomaticRefresh );
00083 spbInitial->setMinimum( 0 );
00084 spbInitial->setMaximum( 99999 );
00085 spbInitial->setSuffix( i18n( " Seconds") );
00086 spbInitial->setToolTip( i18n( "Seconds until first automatic refresh (0 = it refreshes immediately)" ) );
00087 lblTimerInitial->setToolTip( i18n( "Seconds until first automatic refresh (0 = it refreshes immediately)" ) );
00088 layAutoRefresh->addWidget( lblTimerInitial, 1, 0 );
00089 layAutoRefresh->addWidget( spbInitial, 1, 1 );
00090
00091 lblTimerInterval = new QLabel( i18n( "Interval Timer:" ), gboxAutomaticRefresh );
00092 spbInterval = new QSpinBox( gboxAutomaticRefresh );
00093 spbInterval->setMinimum( 1 );
00094 spbInterval->setMaximum( 99999 );
00095 spbInterval->setSuffix( i18n( " Minutes") );
00096 spbInterval->setToolTip( i18n( "Minutes between automatic refresh (0 = no automatic)" ) );
00097 lblTimerInterval->setToolTip( i18n( "Minutes between automatic refresh (0 = no automatic)" ) );
00098 layAutoRefresh->addWidget( lblTimerInterval, 2, 0 );
00099 layAutoRefresh->addWidget( spbInterval, 2, 1 );
00100
00101
00102 chkShowConnectionErrors = new QCheckBox( i18n( "Show Connection Errors" ), gBoxServerConnect );
00103 chkShowConnectionErrors->setToolTip( i18n( "If a connection error occurs (e.g. unknown server), an error message will be shown." ) );
00104 layServerConnect->addWidget( chkShowConnectionErrors, 0, 0 );
00105
00106
00107 QLabel* lblTimerTimeout = new QLabel( i18n( "Timeout:" ), gBoxServerConnect );
00108 spbTimeout = new QSpinBox( gBoxServerConnect );
00109 spbTimeout->setMinimum( MINIMUM_TIMEOUT_TIME );
00110 spbTimeout->setMaximum( 99999 );
00111 spbTimeout->setSuffix( i18n( " Seconds" ) );
00112 spbTimeout->setToolTip( i18n( "Seconds until a server connect will be canceled" ) );
00113 lblTimerTimeout->setToolTip( i18n( "Seconds until a server connect will be canceled" ) );
00114 layServerConnect->addWidget( lblTimerTimeout, 1, 0 );
00115 layServerConnect->addWidget( spbTimeout, 1, 1 );
00116
00117
00118
00119 connect( chkConfirmClose, SIGNAL( toggled( bool ) ), this, SLOT( slotChanged() ) );
00120 connect( chkConfirmDelete, SIGNAL( toggled( bool ) ), this, SLOT( slotChanged() ) );
00121 connect( chkStartMinimized, SIGNAL( toggled( bool ) ), this, SLOT( slotChanged() ) );
00122 connect( chkCloseToTray, SIGNAL( toggled( bool ) ), this, SLOT( slotChanged() ) );
00123 connect( chkShowConnectionErrors, SIGNAL( toggled( bool ) ), this, SLOT( slotChanged() ) );
00124 connect( chkKeepNew, SIGNAL( toggled( bool ) ), this, SLOT( slotChanged() ) );
00125 connect( chkStoreHeaders, SIGNAL( toggled( bool ) ), this, SLOT( slotChanged() ) );
00126 connect( spbInitial, SIGNAL( valueChanged( int ) ), this, SLOT( slotChanged() ) );
00127 connect( spbInterval, SIGNAL( valueChanged( int ) ), this, SLOT( slotChanged() ) );
00128 connect( spbTimeout, SIGNAL( valueChanged( int ) ), this, SLOT( slotChanged() ) );
00129 connect( chkAutomaticRefresh, SIGNAL( toggled( bool ) ), this, SLOT( slotChanged() ) );
00130
00131
00132 QGroupBox* gBoxDoubleClick = new QGroupBox( i18nc( "@title:group the standard action of a double click on a mail", "Double click on a mail list entry shows"), this );
00133 layMain->addWidget( gBoxDoubleClick );
00134 QVBoxLayout* layDoubleClick = new QVBoxLayout();
00135 gBoxDoubleClick->setLayout( layDoubleClick );
00136
00137 grpDoubleClick = new QButtonGroup( NULL );
00138 connect( grpDoubleClick, SIGNAL( buttonClicked( int ) ), this, SLOT( slotChanged() ) );
00139 btnDoubleClickShowBody = new QRadioButton( i18nc( "@option:radio the standard double click action is to show the mail body", "the mail" ), this );
00140 grpDoubleClick->addButton( btnDoubleClickShowBody, ID_BUTTON_SHOW_MAIL_BODY );
00141 layDoubleClick->addWidget( btnDoubleClickShowBody );
00142 btnDoubleClickShowHeader = new QRadioButton( i18nc( "@option:radio the standard double click action is to show the mail header", "the mail header" ), this );
00143 grpDoubleClick->addButton( btnDoubleClickShowHeader, ID_BUTTON_SHOW_MAIL_HEADER );
00144 layDoubleClick->addWidget( btnDoubleClickShowHeader );
00145
00146
00147
00148 config = KGlobal::config();
00149
00150 setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred );
00151
00152
00153 load();
00154
00155 }
00156
00157 ConfigGeneral::~ConfigGeneral()
00158 {
00159 }
00160
00161 void ConfigGeneral::load( )
00162 {
00163 KConfigGroup* configGeneral = new KConfigGroup( config, CONFIG_GROUP_GENERAL );
00164
00165 chkConfirmClose->setChecked( configGeneral->readEntry( CONFIG_ENTRY_CONFIRM_CLOSE, DEFAULT_CONFIRM_CLOSE ) );
00166 chkConfirmDelete->setChecked( configGeneral->readEntry( CONFIG_ENTRY_CONFIRM_DELETE, DEFAULT_CONFIRM_DELETE ) );
00167 chkStartMinimized->setChecked( configGeneral->readEntry( CONFIG_ENTRY_START_MINIMIZED, DEFAULT_START_MINIMIZED ) );
00168 chkCloseToTray->setChecked( configGeneral->readEntry( CONFIG_ENTRY_CLOSE_TO_TRAY, DEFAULT_CLOSE_TO_TRAY ) );
00169 chkShowConnectionErrors->setChecked( configGeneral->readEntry( CONFIG_ENTRY_SHOW_CONNECTION_ERRORS, DEFAULT_SHOW_CONNECTION_ERRORS ) );
00170 chkKeepNew->setChecked( configGeneral->readEntry( CONFIG_ENTRY_KEEP_NEW, DEFAULT_KEEP_NEW ) );
00171 chkStoreHeaders->setChecked( configGeneral->readEntry( CONFIG_ENTRY_STORE_HEADERS, DEFAULT_STORE_HEADERS ) );
00172
00173
00174 chkAutomaticRefresh->setChecked( configGeneral->readEntry( CONFIG_ENTRY_AUTO_REFRESH, DEFAULT_AUTO_REFRESH ) );
00175 slotAutomaticRefreshChanged( chkAutomaticRefresh->isChecked() );
00176 spbInitial->setValue( configGeneral->readEntry( CONFIG_ENTRY_INITIAL_TIME, DEFAULT_INITIAL_TIME ) );
00177 spbInterval->setValue( configGeneral->readEntry( CONFIG_ENTRY_INTERVAL_TIME, DEFAULT_INTERVAL_TIME) );
00178 spbTimeout->setValue( configGeneral->readEntry( CONFIG_ENTRY_TIMEOUT_TIME, DEFAULT_TIMEOUT_TIME) );
00179
00180
00181 QRadioButton* btnToCheck;
00182 if( configGeneral->readEntry( CONFIG_ENTRY_MAIL_DOUBLE_CLICK_ACTION, DEFAULT_MAIL_DOUBLE_CLICK_ACTION ) == CONFIG_VALUE_MAIL_DOUBLE_CLICK_ACTION_BODY )
00183 btnToCheck = static_cast<QRadioButton*>( grpDoubleClick->button( ID_BUTTON_SHOW_MAIL_BODY ) );
00184 else if( configGeneral->readEntry( CONFIG_ENTRY_MAIL_DOUBLE_CLICK_ACTION, DEFAULT_MAIL_DOUBLE_CLICK_ACTION ) == CONFIG_VALUE_MAIL_DOUBLE_CLICK_ACTION_HEADER )
00185 btnToCheck = static_cast<QRadioButton*>( grpDoubleClick->button( ID_BUTTON_SHOW_MAIL_HEADER ) );
00186 else
00187 if( QString( DEFAULT_MAIL_DOUBLE_CLICK_ACTION ) == QString( CONFIG_VALUE_MAIL_DOUBLE_CLICK_ACTION_BODY ) )
00188 btnToCheck = static_cast<QRadioButton*>( grpDoubleClick->button( ID_BUTTON_SHOW_MAIL_BODY ) );
00189 else
00190 btnToCheck = static_cast<QRadioButton*>( grpDoubleClick->button( ID_BUTTON_SHOW_MAIL_HEADER ) );
00191
00192 btnToCheck->setChecked( true );
00193
00194
00195 }
00196
00197 void ConfigGeneral::defaults( )
00198 {
00199 chkConfirmClose->setChecked( DEFAULT_CONFIRM_CLOSE );
00200 chkConfirmDelete->setChecked( DEFAULT_CONFIRM_DELETE );
00201 chkStartMinimized->setChecked( DEFAULT_START_MINIMIZED );
00202 chkCloseToTray->setChecked( DEFAULT_CLOSE_TO_TRAY );
00203 chkShowConnectionErrors->setChecked( DEFAULT_SHOW_CONNECTION_ERRORS );
00204 chkKeepNew->setChecked( DEFAULT_KEEP_NEW );
00205 chkStoreHeaders->setCheckable( DEFAULT_STORE_HEADERS );
00206
00207 chkAutomaticRefresh->setChecked( DEFAULT_AUTO_REFRESH );
00208 slotAutomaticRefreshChanged( chkAutomaticRefresh->isChecked() );
00209 spbInitial->setValue( DEFAULT_INITIAL_TIME );
00210 spbInterval->setValue( DEFAULT_INTERVAL_TIME );
00211 spbTimeout->setValue( DEFAULT_TIMEOUT_TIME );
00212
00213
00214 QRadioButton* btnToCheck;
00215 if( QString( DEFAULT_MAIL_DOUBLE_CLICK_ACTION ) == QString( CONFIG_VALUE_MAIL_DOUBLE_CLICK_ACTION_BODY ) )
00216 btnToCheck = static_cast<QRadioButton*>( grpDoubleClick->button( ID_BUTTON_SHOW_MAIL_BODY ) );
00217 else if( QString( DEFAULT_MAIL_DOUBLE_CLICK_ACTION ) == QString( CONFIG_VALUE_MAIL_DOUBLE_CLICK_ACTION_HEADER ) )
00218 btnToCheck = static_cast<QRadioButton*>( grpDoubleClick->button( ID_BUTTON_SHOW_MAIL_HEADER ) );
00219 else
00220 btnToCheck = static_cast<QRadioButton*>( grpDoubleClick->button( ID_BUTTON_SHOW_MAIL_BODY ) );
00221
00222 btnToCheck->setChecked( true );
00223
00224
00225 }
00226
00227 void ConfigGeneral::save( )
00228 {
00229 KConfigGroup* configGeneral = new KConfigGroup( config, CONFIG_GROUP_GENERAL );
00230
00231 configGeneral->writeEntry( CONFIG_ENTRY_CONFIRM_CLOSE, chkConfirmClose->isChecked() );
00232 configGeneral->writeEntry( CONFIG_ENTRY_CONFIRM_DELETE, chkConfirmDelete->isChecked() );
00233 configGeneral->writeEntry( CONFIG_ENTRY_START_MINIMIZED, chkStartMinimized->isChecked() );
00234 configGeneral->writeEntry( CONFIG_ENTRY_CLOSE_TO_TRAY, chkCloseToTray->isChecked() );
00235 configGeneral->writeEntry( CONFIG_ENTRY_SHOW_CONNECTION_ERRORS, chkShowConnectionErrors->isChecked() );
00236 configGeneral->writeEntry( CONFIG_ENTRY_KEEP_NEW, chkKeepNew->isChecked() );
00237 configGeneral->writeEntry( CONFIG_ENTRY_STORE_HEADERS, chkStoreHeaders->isChecked() );
00238 configGeneral->writeEntry( CONFIG_ENTRY_INITIAL_TIME, spbInitial->value() );
00239 configGeneral->writeEntry( CONFIG_ENTRY_INTERVAL_TIME, spbInterval->value() );
00240 configGeneral->writeEntry( CONFIG_ENTRY_TIMEOUT_TIME, spbTimeout->value() );
00241 configGeneral->writeEntry( CONFIG_ENTRY_AUTO_REFRESH, chkAutomaticRefresh->isChecked() );
00242
00243
00244 switch( grpDoubleClick->checkedId() )
00245 {
00246 case ID_BUTTON_SHOW_MAIL_BODY : configGeneral->writeEntry( CONFIG_ENTRY_MAIL_DOUBLE_CLICK_ACTION, CONFIG_VALUE_MAIL_DOUBLE_CLICK_ACTION_BODY ); break;
00247 case ID_BUTTON_SHOW_MAIL_HEADER : configGeneral->writeEntry( CONFIG_ENTRY_MAIL_DOUBLE_CLICK_ACTION, CONFIG_VALUE_MAIL_DOUBLE_CLICK_ACTION_HEADER ); break;
00248 default : configGeneral->writeEntry( CONFIG_ENTRY_MAIL_DOUBLE_CLICK_ACTION, CONFIG_VALUE_MAIL_DOUBLE_CLICK_ACTION_BODY ); break;
00249 }
00250
00251
00252
00253
00254 config->sync();
00255 }
00256
00257 void ConfigGeneral::slotChanged( )
00258 {
00259 KCModule::changed();
00260 }
00261
00262 void ConfigGeneral::slotAutomaticRefreshChanged( bool checked ) {
00263
00264 spbInitial->setEnabled( checked );
00265 spbInterval->setEnabled( checked );
00266 lblTimerInitial->setEnabled( checked );
00267 lblTimerInterval->setEnabled( checked );
00268 }
00269
00270 #include "configgeneral.moc"