-rw-r--r-- | libkdepim/kcmconfigs/kcmkdepimconfig.cpp | 17 | ||||
-rw-r--r-- | libkdepim/kcmconfigs/kcmkdepimconfig.h | 2 | ||||
-rw-r--r-- | libkdepim/kcmconfigs/kdepimconfigwidget.cpp | 313 | ||||
-rw-r--r-- | libkdepim/kcmconfigs/kdepimconfigwidget.h | 45 |
4 files changed, 277 insertions, 100 deletions
diff --git a/libkdepim/kcmconfigs/kcmkdepimconfig.cpp b/libkdepim/kcmconfigs/kcmkdepimconfig.cpp index f26efe0..e77c5ab 100644 --- a/libkdepim/kcmconfigs/kcmkdepimconfig.cpp +++ b/libkdepim/kcmconfigs/kcmkdepimconfig.cpp @@ -44,18 +44,18 @@ $Id$ #ifndef _WIN32_ extern "C" { - KCModule *create_kabconfig( KPimGlobalPrefs* prefs, QWidget *parent, const char * ) { - return new KCMKdePimConfig( prefs, parent, "kcmkdepimconfig" ); + KCModule *create_kabconfig(QWidget *parent, const char * ) { + return new KCMKdePimConfig(parent, "kcmkdepimconfig" ); } } #endif -KCMKdePimConfig::KCMKdePimConfig( KPimGlobalPrefs* prefs, QWidget *parent, const char *name ) - : KCModule( prefs, parent, name ) +KCMKdePimConfig::KCMKdePimConfig(QWidget *parent, const char *name ) + : KCModule( KPimGlobalPrefs::instance(), parent, name ) { //abort(); QVBoxLayout *layout = new QVBoxLayout( this ); - mConfigWidget = new KDEPIMConfigWidget( this, "mConfigWidget" ); + mConfigWidget = new KDEPIMConfigWidget( (KPimGlobalPrefs*)getPreferences(), this, "KDEPIMConfigWidget" ); layout->addWidget( mConfigWidget ); layout->setSpacing( 0 ); layout->setMargin( 0 ); @@ -65,15 +65,16 @@ KCMKdePimConfig::KCMKdePimConfig( KPimGlobalPrefs* prefs, QWidget *parent, const void KCMKdePimConfig::load() { - mConfigWidget->restoreSettings((KPimGlobalPrefs*)getPreferences()); + mConfigWidget->readConfig(); } void KCMKdePimConfig::save() { - mConfigWidget->saveSettings((KPimGlobalPrefs*)getPreferences()); + mConfigWidget->writeConfig(); } void KCMKdePimConfig::defaults() { - mConfigWidget->defaults((KPimGlobalPrefs*)getPreferences()); + qDebug("KCMKdePimConfig::defaults()"); + mConfigWidget->setDefaults(); } diff --git a/libkdepim/kcmconfigs/kcmkdepimconfig.h b/libkdepim/kcmconfigs/kcmkdepimconfig.h index fa96eda..b471e53 100644 --- a/libkdepim/kcmconfigs/kcmkdepimconfig.h +++ b/libkdepim/kcmconfigs/kcmkdepimconfig.h @@ -41,7 +41,7 @@ class KCMKdePimConfig : public KCModule Q_OBJECT public: - KCMKdePimConfig( KPimGlobalPrefs* prefs, QWidget *parent = 0, const char *name = 0 ); + KCMKdePimConfig( QWidget *parent = 0, const char *name = 0 ); virtual void load(); virtual void save(); 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 @@ -34,11 +34,13 @@ $Id$ #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 @@ -71,13 +73,15 @@ $Id$ #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")); @@ -90,12 +94,19 @@ KDEPIMConfigWidget::KDEPIMConfigWidget( QWidget *parent, const char *name ) 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() ); @@ -112,8 +123,6 @@ KDEPIMConfigWidget::KDEPIMConfigWidget( QWidget *parent, const char *name ) 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" ); @@ -168,12 +177,182 @@ KDEPIMConfigWidget::KDEPIMConfigWidget( QWidget *parent, const char *name ) 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 @@ -228,7 +407,7 @@ void KDEPIMConfigWidget::client_changed( int newClient ) // and at last update the widgets updateClientWidgets(); - modified(); + KPrefsWidget::modified(); } void KDEPIMConfigWidget::saveEditFieldSettings() @@ -444,14 +623,26 @@ void KDEPIMConfigWidget::updateClientWidgets() } - - - -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; @@ -491,14 +682,33 @@ void KDEPIMConfigWidget::restoreSettings(KPimGlobalPrefs* prefs) 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; @@ -532,72 +742,29 @@ void KDEPIMConfigWidget::saveSettings(KPimGlobalPrefs* prefs) 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 ); diff --git a/libkdepim/kcmconfigs/kdepimconfigwidget.h b/libkdepim/kcmconfigs/kdepimconfigwidget.h index e3cfd81..6f26513 100644 --- a/libkdepim/kcmconfigs/kdepimconfigwidget.h +++ b/libkdepim/kcmconfigs/kdepimconfigwidget.h @@ -31,42 +31,34 @@ $Id$ #ifndef KDEPIMCONFIGWIDGET_H #define KDEPIMCONFIGWIDGET_H -#include <qwidget.h> +#include <kprefswidget.h> #include <qmap.h> #include "externalapphandler.h" -/* -class QCheckBox; -class QListViewItem; -class QPushButton; -class KListView; -*/ class QComboBox; class QLineEdit; class KPimGlobalPrefs; class QGroupBox; +class QTabWidget; +class KDateEdit; -class KDEPIMConfigWidget : public QWidget +class KDEPIMConfigWidget : public KPrefsWidget { Q_OBJECT public: - KDEPIMConfigWidget( QWidget *parent, const char *name = 0 ); - - void restoreSettings(KPimGlobalPrefs* prefs); - void saveSettings(KPimGlobalPrefs* prefs); - void defaults(KPimGlobalPrefs* prefs); - - signals: - void changed( bool ); - + KDEPIMConfigWidget(KPimGlobalPrefs *prefs, QWidget *parent, const char *name = 0 ); public slots: - void modified(); void textChanged( const QString& text ); + protected: + /** Implement this to read custom configuration widgets. */ + virtual void usrReadConfig(); + /** Implement this to write custom configuration widgets. */ + virtual void usrWriteConfig(); private slots: @@ -77,9 +69,26 @@ class KDEPIMConfigWidget : public QWidget void externalapp_changed( int newApp ); private: + void setupExternalAppTab(); + void setupLocaleDateTab(); + void setupLocaleTab(); + void setupTimeZoneTab(); + + void setCombo(QComboBox *combo,const QString & text, const QStringList *tags = 0); + + void saveEditFieldSettings(); void updateClientWidgets(); + QTabWidget *tabWidget; + + + QLineEdit* mUserDateFormatShort; + QLineEdit* mUserDateFormatLong; + QComboBox* mTimeZoneCombo; + KDateEdit* mStartDateSavingEdit; + KDateEdit* mEndDateSavingEdit; + // void restoreExtensionSettings(); // void saveExtensionSettings(); |