Diffstat (limited to 'libkdepim/kcmconfigs/kdepimconfigwidget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libkdepim/kcmconfigs/kdepimconfigwidget.cpp | 313 |
1 files changed, 240 insertions, 73 deletions
diff --git a/libkdepim/kcmconfigs/kdepimconfigwidget.cpp b/libkdepim/kcmconfigs/kdepimconfigwidget.cpp index 703aeb1..00a07d9 100644 --- a/libkdepim/kcmconfigs/kdepimconfigwidget.cpp +++ b/libkdepim/kcmconfigs/kdepimconfigwidget.cpp @@ -31,17 +31,19 @@ $Id$ #include <qlayout.h> #include <qtabwidget.h> #include <qcombobox.h> #include <qgroupbox.h> #include <qlabel.h> #include <qlineedit.h> +#include <qbuttongroup.h> #include <qfile.h> #include <kdialog.h> #include <klocale.h> - +#include <kdateedit.h> +#include <kglobal.h> #include <stdlib.h> /*US #include <qcheckbox.h> #include <qframe.h> #include <qpushbutton.h> @@ -68,37 +70,46 @@ $Id$ #include "addresseewidget.h" #include "extensionconfigdialog.h" #include "extensionwidget.h" */ +#include "qapplication.h" + #include "kpimglobalprefs.h" #include "kdepimconfigwidget.h" -KDEPIMConfigWidget::KDEPIMConfigWidget( QWidget *parent, const char *name ) - : QWidget( parent, name ) +KDEPIMConfigWidget::KDEPIMConfigWidget(KPimGlobalPrefs *prefs, QWidget *parent, const char *name ) + : KPrefsWidget(prefs, parent, name ) { mExternalAppsMap.insert(ExternalAppHandler::EMAIL, i18n("Email")); mExternalAppsMap.insert(ExternalAppHandler::PHONE, i18n("Phone")); mExternalAppsMap.insert(ExternalAppHandler::SMS, i18n("SMS")); mExternalAppsMap.insert(ExternalAppHandler::FAX, i18n("Fax")); mExternalAppsMap.insert(ExternalAppHandler::PAGER, i18n("Pager")); mExternalAppsMap.insert(ExternalAppHandler::SIP, i18n("SIP")); QVBoxLayout *topLayout = new QVBoxLayout( this, 0, KDialog::spacingHint() ); - QTabWidget *tabWidget = new QTabWidget( this ); + tabWidget = new QTabWidget( this ); topLayout->addWidget( tabWidget ); + setupLocaleTab(); + setupLocaleDateTab(); + setupTimeZoneTab(); + setupExternalAppTab(); + +} - // mailclient page +void KDEPIMConfigWidget::setupExternalAppTab() +{ QWidget *externalAppsPage = new QWidget( this ); QVBoxLayout* layout = new QVBoxLayout( externalAppsPage, KDialog::marginHintSmall(), KDialog::spacingHintSmall() ); mExternalApps = new QComboBox( externalAppsPage ); @@ -109,14 +120,12 @@ KDEPIMConfigWidget::KDEPIMConfigWidget( QWidget *parent, const char *name ) layout->addWidget( mExternalApps ); connect( mExternalApps, SIGNAL( activated( int ) ), this, SLOT (externalapp_changed( int ) ) ); - - mExternalAppGroupBox = new QGroupBox( 0, Qt::Vertical, i18n( "Used Mail Client" ), externalAppsPage ); QGridLayout *boxLayout = new QGridLayout( mExternalAppGroupBox->layout(), 4, 2, -1, "gridlayout" ); mClient = new QComboBox( mExternalAppGroupBox ); boxLayout->addMultiCellWidget( mClient, 0, 0, 0, 1 ); @@ -165,18 +174,188 @@ KDEPIMConfigWidget::KDEPIMConfigWidget( QWidget *parent, const char *name ) connect( mMessage, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) ); connect( mParameters, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) ); connect( mMessage2, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) ); connect( mParameters2, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) ); - layout->addWidget( mExternalAppGroupBox ); tabWidget->addTab( externalAppsPage, i18n( "External Apps." ) ); } + +void KDEPIMConfigWidget::setupLocaleDateTab() +{ + QWidget *topFrame = new QWidget( this ); + QGridLayout *topLayout = new QGridLayout( topFrame, 3, 2); + + topLayout->setSpacing(KDialog::spacingHint()); + topLayout->setMargin(KDialog::marginHint()); + int iii = 0; + + + KPrefsWidRadios *syncPrefsGroup = + addWidRadios(i18n("Date Format:"),&(KPimGlobalPrefs::instance()->mPreferredDate),topFrame); + QString format; + if ( QApplication::desktop()->width() < 480 ) + format = "(%d.%m.%Y)"; + else + format = "(%d.%m.%Y|%A %d %B %Y)"; + syncPrefsGroup->addRadio(i18n("24.03.2004 "+format)); + if ( QApplication::desktop()->width() < 480 ) + format = "(%m.%d.%Y)"; + else + format = "(%m.%d.%Y|%A %B %d %Y)"; + syncPrefsGroup->addRadio(i18n("03.24.2004 "+format)); + if ( QApplication::desktop()->width() < 480 ) + format = "(%Y-%m-%d)"; + else + format = "(%Y-%m-%d|%A %Y %B %d)"; + syncPrefsGroup->addRadio(i18n("2004-03-24 "+format)); + syncPrefsGroup->addRadio(i18n("User defined")); + topLayout->addMultiCellWidget( (QWidget*)syncPrefsGroup->groupBox(),iii,iii,0,1); + ++iii; + ++iii; + QLabel * lab; + mUserDateFormatLong = new QLineEdit(topFrame); + lab = new QLabel(mUserDateFormatLong, i18n("User long date:"), topFrame); + topLayout->addWidget(lab ,iii,0); + topLayout->addWidget(mUserDateFormatLong,iii,1); + ++iii; + mUserDateFormatShort = new QLineEdit(topFrame); + lab = new QLabel(mUserDateFormatShort, i18n("User short date:"), topFrame); + topLayout->addWidget(lab ,iii,0); + topLayout->addWidget(mUserDateFormatShort,iii,1); + ++iii; + lab = new QLabel( i18n("Monday 19 April 2004: %A %d %B %Y"), topFrame); + topLayout->addMultiCellWidget(lab ,iii,iii,0,1); + ++iii; + lab = new QLabel( i18n("Mon 19.04.04: %a %d.%m.%y"), topFrame); + topLayout->addMultiCellWidget(lab ,iii,iii,0,1); + ++iii; + lab = new QLabel( i18n("Mon, 19.Apr.04: %a, %d.%b.%y"), topFrame); + topLayout->addMultiCellWidget(lab ,iii,iii,0,1); + ++iii; + + connect( mUserDateFormatLong, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) ); + connect( mUserDateFormatShort, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) ); + + + tabWidget->addTab( topFrame, i18n( "Date Format" ) ); +} + +void KDEPIMConfigWidget::setupLocaleTab() +{ + + QWidget *topFrame = new QWidget( this ); + QGridLayout *topLayout = new QGridLayout(topFrame,4,2); + + topLayout->setSpacing(KDialog::spacingHint()); + topLayout->setMargin(KDialog::marginHint()); + int iii = 0; + KPrefsWidRadios *syncPrefsGroup = + addWidRadios(i18n("Language:(needs restart)"),&(KPimGlobalPrefs::instance()->mPreferredLanguage),topFrame); + syncPrefsGroup->addRadio(i18n("English")); + syncPrefsGroup->addRadio(i18n("German")); + syncPrefsGroup->addRadio(i18n("French")); + syncPrefsGroup->addRadio(i18n("User defined (usertranslation.txt)")); + if ( QApplication::desktop()->width() < 300 ) + ;// syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical); + topLayout->addMultiCellWidget( (QWidget*)syncPrefsGroup->groupBox(),iii,iii,0,1); + ++iii; + + syncPrefsGroup = + addWidRadios(i18n("Time Format(nr):"),&(KPimGlobalPrefs::instance()->mPreferredTime),topFrame); + if ( QApplication::desktop()->width() > 300 ) + syncPrefsGroup->groupBox()->setOrientation (Qt::Vertical); + syncPrefsGroup->addRadio(i18n("24:00")); + syncPrefsGroup->addRadio(i18n("12:00am")); + syncPrefsGroup->groupBox()->setOrientation (Qt::Vertical); + topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); + ++iii; + + KPrefsWidBool *sb = addWidBool(i18n("Week starts on Sunday"), + &(KPimGlobalPrefs::instance()->mWeekStartsOnSunday),topFrame); + topLayout->addMultiCellWidget((QWidget*)sb->checkBox(), iii,iii,0,1); + ++iii; + + + tabWidget->addTab( topFrame, i18n( "Locale" ) ); + +} + + +void KDEPIMConfigWidget::setupTimeZoneTab() +{ + QWidget *topFrame = new QWidget( this ); + QGridLayout *topLayout = new QGridLayout( topFrame, 5, 2); + topLayout->setSpacing(KDialog::spacingHint()); + topLayout->setMargin(KDialog::marginHint()); + + QHBox *timeZoneBox = new QHBox( topFrame ); + topLayout->addMultiCellWidget( timeZoneBox, 0, 0, 0, 1 ); + + new QLabel( i18n("Timezone:"), timeZoneBox ); + mTimeZoneCombo = new QComboBox( timeZoneBox ); + if ( QApplication::desktop()->width() < 300 ) { + mTimeZoneCombo->setMaximumWidth(150); + } + + QStringList list; + list = KGlobal::locale()->timeZoneList(); + mTimeZoneCombo->insertStringList(list); + + // find the currently set time zone and select it + QString sCurrentlySet = KPimGlobalPrefs::instance()->mTimeZoneId; + int nCurrentlySet = 11; + for (int i = 0; i < mTimeZoneCombo->count(); i++) + { + if (mTimeZoneCombo->text(i) == sCurrentlySet) + { + nCurrentlySet = i; + break; + } + } + mTimeZoneCombo->setCurrentItem(nCurrentlySet); + int iii = 1; + KPrefsWidBool *sb = + addWidBool(i18n("Timezone has daylight saving"), + &(KPimGlobalPrefs::instance()->mUseDaylightsaving),topFrame); + topLayout->addMultiCellWidget((QWidget*)sb->checkBox(), iii,iii,0,1); + ++iii; + QLabel* lab = new QLabel( i18n("Actual start and end is the\nsunday before this date."), topFrame ); + topLayout->addMultiCellWidget(lab, iii,iii,0,1); + ++iii; + lab = new QLabel( i18n("The year in the date is ignored."), topFrame ); + topLayout->addMultiCellWidget(lab, iii,iii,0,1); + ++iii; + lab = new QLabel( i18n("Daylight start:"), topFrame ); + topLayout->addWidget(lab, iii,0); + mStartDateSavingEdit = new KDateEdit(topFrame); + topLayout->addWidget(mStartDateSavingEdit, iii,1); + ++iii; + + lab = new QLabel( i18n("Daylight end:"), topFrame ); + topLayout->addWidget(lab, iii,0); + mEndDateSavingEdit = new KDateEdit(topFrame); + topLayout->addWidget(mEndDateSavingEdit, iii,1); + ++iii; + QDate current ( 2001, 1,1); + mStartDateSavingEdit->setDate(current.addDays(KPimGlobalPrefs::instance()->mDaylightsavingStart-1)); + mEndDateSavingEdit->setDate(current.addDays(KPimGlobalPrefs::instance()->mDaylightsavingEnd-1)); + + connect( mStartDateSavingEdit, SIGNAL( dateChanged(QDate)), this, SLOT( modified()) ); + connect( mEndDateSavingEdit, SIGNAL( dateChanged(QDate)), this, SLOT( modified()) ); + connect( mTimeZoneCombo, SIGNAL( activated( int ) ), this, SLOT (modified() ) ); + + + + tabWidget->addTab( topFrame, i18n( "Time Zone" ) ); + +} + void KDEPIMConfigWidget::externalapp_changed( int newApp ) { // first store the current data saveEditFieldSettings(); // set mCurrentApp @@ -225,13 +404,13 @@ void KDEPIMConfigWidget::client_changed( int newClient ) //then reset the clientvariable mCurrentClient = newClient; // and at last update the widgets updateClientWidgets(); - modified(); + KPrefsWidget::modified(); } void KDEPIMConfigWidget::saveEditFieldSettings() { switch(mCurrentApp) @@ -441,20 +620,32 @@ void KDEPIMConfigWidget::updateClientWidgets() blockSignals( blocked ); } - - - -void KDEPIMConfigWidget::restoreSettings(KPimGlobalPrefs* prefs) +void KDEPIMConfigWidget::usrReadConfig() { + KPimGlobalPrefs* prefs = KPimGlobalPrefs::instance(); + bool blocked = signalsBlocked(); blockSignals( true ); + QString dummy = prefs->mUserDateFormatLong; + mUserDateFormatLong->setText(dummy.replace( QRegExp("K"), QString(",") )); + dummy = prefs->mUserDateFormatShort; + mUserDateFormatShort->setText(dummy.replace( QRegExp("K"), QString(",") )); + + QDate current ( 2001, 1,1); + mStartDateSavingEdit->setDate(current.addDays(prefs->mDaylightsavingStart-1)); + mEndDateSavingEdit->setDate(current.addDays(prefs->mDaylightsavingEnd-1)); + setCombo(mTimeZoneCombo,i18n(prefs->mTimeZoneId)); + + + + mEmailClient = prefs->mEmailClient; mEmailOtherChannel = prefs->mEmailOtherChannel; mEmailOtherMessage = prefs->mEmailOtherMessage; mEmailOtherMessageParameters = prefs->mEmailOtherMessageParameters; mEmailOtherMessage2 = prefs->mEmailOtherMessage2; mEmailOtherMessageParameters2 = prefs->mEmailOtherMessageParameters2; @@ -488,20 +679,39 @@ void KDEPIMConfigWidget::restoreSettings(KPimGlobalPrefs* prefs) mCurrentClient = mEmailClient; updateClientWidgets(); blockSignals( blocked ); - emit changed( false ); - } -void KDEPIMConfigWidget::saveSettings(KPimGlobalPrefs* prefs) +void KDEPIMConfigWidget::usrWriteConfig() { + KPimGlobalPrefs* prefs = KPimGlobalPrefs::instance(); + saveEditFieldSettings(); + + prefs->mUserDateFormatShort = mUserDateFormatShort->text().replace( QRegExp(","), QString("K") ); + prefs->mUserDateFormatLong = mUserDateFormatLong->text().replace( QRegExp(","), QString("K") ); + + prefs->mTimeZoneId = mTimeZoneCombo->currentText(); + QDate date; + date = mStartDateSavingEdit->date(); + int sub = 0; + if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 ) + sub = 1; + prefs->mDaylightsavingStart = date.dayOfYear()-sub; + date = mEndDateSavingEdit->date(); + if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 ) + sub = 1; + else + sub = 0; + prefs->mDaylightsavingEnd = date.dayOfYear()-sub; + + prefs->mEmailClient = mEmailClient; prefs->mEmailOtherChannel = mEmailOtherChannel; prefs->mEmailOtherMessage = mEmailOtherMessage; prefs->mEmailOtherMessageParameters = mEmailOtherMessageParameters; prefs->mEmailOtherMessage2 = mEmailOtherMessage2; prefs->mEmailOtherMessageParameters2 = mEmailOtherMessageParameters2; @@ -529,76 +739,33 @@ void KDEPIMConfigWidget::saveSettings(KPimGlobalPrefs* prefs) prefs->mSipClient = mSipClient; prefs->mSipOtherChannel = mSipOtherChannel; prefs->mSipOtherMessage = mSipOtherMessage; prefs->mSipOtherMessageParameters = mSipOtherMessageParameters; - prefs->writeConfig(); - //release the cache that other views can access the changed values instantanious ExternalAppHandler::instance()->loadConfig(); - emit changed( false ); } -void KDEPIMConfigWidget::defaults(KPimGlobalPrefs* prefs) -{ - - DefaultAppItem* dai = ExternalAppHandler::instance()->getDefaultItem(ExternalAppHandler::EMAIL, KPimGlobalPrefs::NONE_EMC); - - mEmailClient = dai->_id; - mEmailOtherChannel = dai->_channel; - mEmailOtherMessage = dai->_message; - mEmailOtherMessageParameters = dai->_parameters; - mEmailOtherMessage2 = dai->_message2; - mEmailOtherMessageParameters2 = dai->_parameters2; - - - dai = ExternalAppHandler::instance()->getDefaultItem(ExternalAppHandler::PHONE, KPimGlobalPrefs::NONE_PHC); - - mPhoneClient = dai->_id; - mPhoneOtherChannel = dai->_channel; - mPhoneOtherMessage = dai->_message; - mPhoneOtherMessageParameters = dai->_parameters; - - dai = ExternalAppHandler::instance()->getDefaultItem(ExternalAppHandler::FAX, KPimGlobalPrefs::NONE_FAC); - - mFaxClient = dai->_id; - mFaxOtherChannel = dai->_channel; - mFaxOtherMessage = dai->_message; - mFaxOtherMessageParameters = dai->_parameters; - dai = ExternalAppHandler::instance()->getDefaultItem(ExternalAppHandler::SMS, KPimGlobalPrefs::NONE_SMC); - - mSMSClient = dai->_id; - mSMSOtherChannel = dai->_channel; - mSMSOtherMessage = dai->_message; - mSMSOtherMessageParameters = dai->_parameters; - - dai = ExternalAppHandler::instance()->getDefaultItem(ExternalAppHandler::PAGER, KPimGlobalPrefs::NONE_PAC); - - mPagerClient = dai->_id; - mPagerOtherChannel = dai->_channel; - mPagerOtherMessage = dai->_message; - mPagerOtherMessageParameters = dai->_parameters; - - - dai = ExternalAppHandler::instance()->getDefaultItem(ExternalAppHandler::SIP, KPimGlobalPrefs::NONE_SIC); - - mSipClient = dai->_id; - mSipOtherChannel = dai->_channel; - mSipOtherMessage = dai->_message; - mSipOtherMessageParameters = dai->_parameters; - - - emit changed( true ); -} - -void KDEPIMConfigWidget::modified() +void KDEPIMConfigWidget::setCombo(QComboBox *combo, const QString & text, + const QStringList *tags) { - emit changed( true ); + if (tags) { + int i = tags->findIndex(text); + if (i > 0) combo->setCurrentItem(i); + } else { + for(int i=0;i<combo->count();++i) { + if (combo->text(i) == text) { + combo->setCurrentItem(i); + break; + } + } + } } + void KDEPIMConfigWidget::textChanged( const QString& text ) { emit changed( true ); } |