kontact Library API Documentation

kcmkabsummary.cpp

00001 /*
00002     This file is part of Kontact.
00003     Copyright (c) 2004 Tobias Koenig <tokoe@kde.org>
00004 
00005     This program is free software; you can redistribute it and/or modify
00006     it under the terms of the GNU General Public License as published by
00007     the Free Software Foundation; either version 2 of the License, or
00008     (at your option) any later version.
00009 
00010     This program is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00013     GNU General Public License for more details.
00014 
00015     You should have received a copy of the GNU General Public License
00016     along with this program; if not, write to the Free Software
00017     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00018 
00019     As a special exception, permission is given to link this program
00020     with any edition of Qt, and distribute the resulting executable,
00021     without including the source code for Qt in the source distribution.
00022 */
00023 
00024 #include <qbuttongroup.h>
00025 #include <qcheckbox.h>
00026 #include <qlabel.h>
00027 #include <qlayout.h>
00028 #include <qradiobutton.h>
00029 #include <qspinbox.h>
00030 
00031 #include <kaboutdata.h>
00032 #include <kapplication.h>
00033 #include <kaccelmanager.h>
00034 #include <kconfig.h>
00035 #include <kdebug.h>
00036 #include <kdialogbase.h>
00037 #include <klocale.h>
00038 
00039 #include "kcmkabsummary.h"
00040 
00041 extern "C"
00042 {
00043   KCModule *create_kabsummary( QWidget *parent, const char * )
00044   {
00045     return new KCMKABSummary( parent, "kcmkabsummary" );
00046   }
00047 }
00048 
00049 KCMKABSummary::KCMKABSummary( QWidget *parent, const char *name )
00050   : KCModule( parent, name )
00051 {
00052   initGUI();
00053 
00054   customDaysChanged( 1 );
00055 
00056   connect( mDaysGroup, SIGNAL( clicked( int ) ), SLOT( modified() ) );
00057   connect( mDaysGroup, SIGNAL( clicked( int ) ), SLOT( buttonClicked( int ) ) );
00058   connect( mShowGroup, SIGNAL( clicked( int ) ), SLOT( modified() ) );
00059   connect( mCustomDays, SIGNAL( valueChanged( int ) ), SLOT( modified() ) );
00060   connect( mCustomDays, SIGNAL( valueChanged( int ) ), SLOT( customDaysChanged( int ) ) );
00061 
00062   KAcceleratorManager::manage( this );
00063 
00064   load();
00065 }
00066 
00067 void KCMKABSummary::modified()
00068 {
00069   emit changed( true );
00070 }
00071 
00072 void KCMKABSummary::buttonClicked( int id )
00073 {
00074   mCustomDays->setEnabled( id == 4 );
00075 }
00076 
00077 void KCMKABSummary::customDaysChanged( int value )
00078 {
00079   mCustomDays->setSuffix( i18n( " day",  " days", value ) );
00080 }
00081 
00082 void KCMKABSummary::initGUI()
00083 {
00084   QVBoxLayout *layout = new QVBoxLayout( this, KDialog::marginHint(),
00085                                          KDialog::spacingHint() );
00086 
00087   mDaysGroup = new QButtonGroup( 0, Vertical, i18n( "Address Book Summary" ), this );
00088   QVBoxLayout *boxLayout = new QVBoxLayout( mDaysGroup->layout(),
00089                                             KDialog::spacingHint() );
00090 
00091   QLabel *label = new QLabel( i18n( "How many days should the address book summary display at once?" ), mDaysGroup );
00092   boxLayout->addWidget( label );
00093 
00094   QRadioButton *button = new QRadioButton( i18n( "One day" ), mDaysGroup );
00095   boxLayout->addWidget( button );
00096 
00097   button = new QRadioButton( i18n( "Five days" ), mDaysGroup );
00098   boxLayout->addWidget( button );
00099 
00100   button = new QRadioButton( i18n( "One week" ), mDaysGroup );
00101   boxLayout->addWidget( button );
00102 
00103   button = new QRadioButton( i18n( "One month" ), mDaysGroup );
00104   boxLayout->addWidget( button );
00105 
00106   QHBoxLayout *hbox = new QHBoxLayout( boxLayout, KDialog::spacingHint() );
00107 
00108   button = new QRadioButton( "", mDaysGroup );
00109   hbox->addWidget( button );
00110 
00111   mCustomDays = new QSpinBox( 1, 365, 1, mDaysGroup );
00112   mCustomDays->setEnabled( false );
00113   hbox->addWidget( mCustomDays );
00114 
00115   hbox->addStretch( 1 );
00116 
00117   layout->addWidget( mDaysGroup );
00118 
00119   mShowGroup = new QButtonGroup( 2, Horizontal, i18n( "Event Types" ), this );
00120   mShowBirthdays = new QCheckBox( i18n( "Show all birthdays" ), mShowGroup );
00121   mShowAnniversaries = new QCheckBox( i18n( "Show all anniversaries" ), mShowGroup );
00122 
00123   layout->addWidget( mShowGroup );
00124 }
00125 
00126 void KCMKABSummary::load()
00127 {
00128   KConfig config( "kcmkabsummaryrc" );
00129 
00130   config.setGroup( "Days" );
00131   int days = config.readNumEntry( "DaysToShow", 7 );
00132   if ( days == 1 )
00133     mDaysGroup->setButton( 0 );
00134   else if ( days == 5 )
00135     mDaysGroup->setButton( 1 );
00136   else if ( days == 7 )
00137     mDaysGroup->setButton( 2 );
00138   else if ( days == 31 )
00139     mDaysGroup->setButton( 3 );
00140   else {
00141     mDaysGroup->setButton( 4 );
00142     mCustomDays->setValue( days );
00143     mCustomDays->setEnabled( true );
00144   }
00145 
00146   config.setGroup( "EventTypes" );
00147   mShowBirthdays->setChecked( config.readBoolEntry( "ShowBirthdays", true ) );
00148   mShowAnniversaries->setChecked( config.readBoolEntry( "ShowAnniversaries", true ) );
00149 
00150   emit changed( false );
00151 }
00152 
00153 void KCMKABSummary::save()
00154 {
00155   KConfig config( "kcmkabsummaryrc" );
00156 
00157   config.setGroup( "Days" );
00158 
00159   int days;
00160   switch ( mDaysGroup->selectedId() ) {
00161     case 0: days = 1; break;
00162     case 1: days = 5; break;
00163     case 2: days = 7; break;
00164     case 3: days = 31; break;
00165     case 4:
00166     default: days = mCustomDays->value(); break;
00167   }
00168   config.writeEntry( "DaysToShow", days );
00169 
00170   config.setGroup( "EventTypes" );
00171   config.writeEntry( "ShowBirthdays", mShowBirthdays->isChecked() );
00172   config.writeEntry( "ShowAnniversaries", mShowAnniversaries->isChecked() );
00173 
00174   config.sync();
00175 
00176   emit changed( false );
00177 }
00178 
00179 void KCMKABSummary::defaults()
00180 {
00181   mDaysGroup->setButton( 7 );
00182   mShowBirthdays->setChecked( true );
00183   mShowAnniversaries->setChecked( true );
00184 
00185   emit changed( true );
00186 }
00187 
00188 const KAboutData* KCMKABSummary::aboutData() const
00189 {
00190   KAboutData *about = new KAboutData( I18N_NOOP( "kcmkabsummary" ),
00191                                       I18N_NOOP( "Address Book Configuration Dialog" ),
00192                                       0, 0, KAboutData::License_GPL,
00193                                       I18N_NOOP( "(c) 2004 Tobias Koenig" ) );
00194 
00195   about->addAuthor( "Tobias Koenig", 0, "tokoe@kde.org" );
00196 
00197   return about;
00198 }
00199 
00200 #include "kcmkabsummary.moc"
KDE Logo
This file is part of the documentation for kontact Library Version 3.3.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Aug 2 09:56:36 2007 by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2003