author | ulf69 <ulf69> | 2004-08-10 01:34:22 (UTC) |
---|---|---|
committer | ulf69 <ulf69> | 2004-08-10 01:34:22 (UTC) |
commit | c9d570427f3d5bead7bee1301514a2d4b82836ea (patch) (side-by-side diff) | |
tree | 8d25f388217c591b7dac1db6c26d0777e6459352 /libkdepim/kcmconfigs | |
parent | 4f05a9fcbb9e54184aef93883886aaf865104463 (diff) | |
download | kdepimpi-c9d570427f3d5bead7bee1301514a2d4b82836ea.zip kdepimpi-c9d570427f3d5bead7bee1301514a2d4b82836ea.tar.gz kdepimpi-c9d570427f3d5bead7bee1301514a2d4b82836ea.tar.bz2 |
enhancements to configure external apps like email and phones through a
generalized interface
-rw-r--r-- | libkdepim/kcmconfigs/kcmkdepimconfig.cpp | 24 | ||||
-rw-r--r-- | libkdepim/kcmconfigs/kcmkdepimconfig.h | 10 | ||||
-rw-r--r-- | libkdepim/kcmconfigs/kdepimconfigwidget.cpp | 534 | ||||
-rw-r--r-- | libkdepim/kcmconfigs/kdepimconfigwidget.h | 68 |
4 files changed, 488 insertions, 148 deletions
diff --git a/libkdepim/kcmconfigs/kcmkdepimconfig.cpp b/libkdepim/kcmconfigs/kcmkdepimconfig.cpp index 830d5d2..f26efe0 100644 --- a/libkdepim/kcmconfigs/kcmkdepimconfig.cpp +++ b/libkdepim/kcmconfigs/kcmkdepimconfig.cpp @@ -1,77 +1,79 @@ /* This file is part of KDEPim/Pi. Copyright (c) 2004 Ulf Schenk This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. As a special exception, permission is given to link this program with any edition of Qt, and distribute the resulting executable, without including the source code for Qt in the source distribution. */ /* Enhanced Version of the file for platform independent KDE tools. Copyright (c) 2004 Ulf Schenk $Id$ */ #include <qlayout.h> #include <kdebug.h> //#include <klocale.h> //#include <stdlib.h> #include "kdepimconfigwidget.h" #include "kcmkdepimconfig.h" #include "kprefs.h" -#include "kpimprefs.h" +#include "kpimglobalprefs.h" + #ifndef _WIN32_ extern "C" { - KCModule *create_kabconfig( QWidget *parent, const char * ) { - return new KCMKdePimConfig( parent, "kcmkdepimconfig" ); + KCModule *create_kabconfig( KPimGlobalPrefs* prefs, QWidget *parent, const char * ) { + return new KCMKdePimConfig( prefs, parent, "kcmkdepimconfig" ); } } #endif -KCMKdePimConfig::KCMKdePimConfig( QWidget *parent, const char *name ) - : KCModule( parent, name ) + +KCMKdePimConfig::KCMKdePimConfig( KPimGlobalPrefs* prefs, QWidget *parent, const char *name ) + : KCModule( prefs, parent, name ) { //abort(); QVBoxLayout *layout = new QVBoxLayout( this ); mConfigWidget = new KDEPIMConfigWidget( this, "mConfigWidget" ); layout->addWidget( mConfigWidget ); layout->setSpacing( 0 ); layout->setMargin( 0 ); connect( mConfigWidget, SIGNAL( changed( bool ) ), SIGNAL( changed( bool ) ) ); } -void KCMKdePimConfig::load(KPrefs* prefs) +void KCMKdePimConfig::load() { - mConfigWidget->restoreSettings((KPimPrefs*)prefs); + mConfigWidget->restoreSettings((KPimGlobalPrefs*)getPreferences()); } -void KCMKdePimConfig::save(KPrefs* prefs) +void KCMKdePimConfig::save() { - mConfigWidget->saveSettings((KPimPrefs*)prefs); + mConfigWidget->saveSettings((KPimGlobalPrefs*)getPreferences()); } -void KCMKdePimConfig::defaults(KPrefs* prefs) +void KCMKdePimConfig::defaults() { - mConfigWidget->defaults((KPimPrefs*)prefs); + mConfigWidget->defaults((KPimGlobalPrefs*)getPreferences()); } diff --git a/libkdepim/kcmconfigs/kcmkdepimconfig.h b/libkdepim/kcmconfigs/kcmkdepimconfig.h index 8cb74f4..fa96eda 100644 --- a/libkdepim/kcmconfigs/kcmkdepimconfig.h +++ b/libkdepim/kcmconfigs/kcmkdepimconfig.h @@ -1,54 +1,54 @@ /* This file is part of KdePim/Pi. Copyright (c) 2004 Ulf Schenk This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. As a special exception, permission is given to link this program with any edition of Qt, and distribute the resulting executable, without including the source code for Qt in the source distribution. */ /* Enhanced Version of the file for platform independent KDE tools. Copyright (c) 2004 Ulf Schenk $Id$ */ #ifndef KCMKDEPIMCONFIG_H #define KCMKDEPIMCONFIG_H #include <kcmodule.h> class KDEPIMConfigWidget; -class KPrefs; +class KPimGlobalPrefs; class KCMKdePimConfig : public KCModule { Q_OBJECT public: - KCMKdePimConfig( QWidget *parent = 0, const char *name = 0 ); + KCMKdePimConfig( KPimGlobalPrefs* prefs, QWidget *parent = 0, const char *name = 0 ); - virtual void load(KPrefs* prefs); - virtual void save(KPrefs* prefs); - virtual void defaults(KPrefs* prefs); + virtual void load(); + virtual void save(); + virtual void defaults(); private: KDEPIMConfigWidget *mConfigWidget; }; #endif diff --git a/libkdepim/kcmconfigs/kdepimconfigwidget.cpp b/libkdepim/kcmconfigs/kdepimconfigwidget.cpp index 477267c..9964eeb 100644 --- a/libkdepim/kcmconfigs/kdepimconfigwidget.cpp +++ b/libkdepim/kcmconfigs/kdepimconfigwidget.cpp @@ -1,273 +1,557 @@ /* This file is part of KdePim/Pi. Copyright (c) 2004 Ulf Schenk This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. As a special exception, permission is given to link this program with any edition of Qt, and distribute the resulting executable, without including the source code for Qt in the source distribution. */ /* Enhanced Version of the file for platform independent KDE tools. Copyright (c) 2004 Ulf Schenk $Id$ */ #include <qlayout.h> #include <qtabwidget.h> #include <qcombobox.h> #include <qgroupbox.h> #include <qlabel.h> #include <qlineedit.h> #include <qfile.h> #include <kdialog.h> #include <klocale.h> #include <stdlib.h> /*US #include <qcheckbox.h> #include <qframe.h> #include <qpushbutton.h> #include <qcombobox.h> #include <qlineedit.h> #include <qlabel.h> #include <qfile.h> #include <kconfig.h> #include <kdebug.h> #include <kdialog.h> #include <klistview.h> #include <klocale.h> #include <kglobal.h> #include <kmessagebox.h> #include <kstandarddirs.h> #ifndef KAB_EMBEDDED #include <ktrader.h> #else // KAB_EMBEDDED #include <mergewidget.h> #include <distributionlistwidget.h> #endif // KAB_EMBEDDED #include "addresseewidget.h" #include "extensionconfigdialog.h" #include "extensionwidget.h" */ -#include "kpimprefs.h" +#include "kpimglobalprefs.h" #include "kdepimconfigwidget.h" KDEPIMConfigWidget::KDEPIMConfigWidget( QWidget *parent, const char *name ) : QWidget( 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")); + + QVBoxLayout *topLayout = new QVBoxLayout( this, 0, KDialog::spacingHint() ); QTabWidget *tabWidget = new QTabWidget( this ); topLayout->addWidget( tabWidget ); -/*US - // General page - QWidget *generalPage = new QWidget( this ); - QVBoxLayout *layout = new QVBoxLayout( generalPage, KDialog::marginHintSmall(), - KDialog::spacingHintSmall() ); - //general groupbox - QGroupBox *groupBox = new QGroupBox( 0, Qt::Vertical, i18n( "General" ), generalPage ); - QVBoxLayout *boxLayout = new QVBoxLayout( groupBox->layout() ); - boxLayout->setAlignment( Qt::AlignTop ); - boxLayout->setMargin(KDialog::marginHintSmall() ); - groupBox->layout()->setMargin(KDialog::marginHintSmall()) ; - groupBox->layout()->setSpacing(KDialog::spacingHintSmall()); - boxLayout->setSpacing( KDialog::spacingHintSmall() ); - mViewsSingleClickBox = new QCheckBox( i18n( "Honor KDE single click" ), groupBox, "msingle" ); - boxLayout->addWidget( mViewsSingleClickBox ); - - mNameParsing = new QCheckBox( i18n( "Automatic name parsing for new addressees" ), groupBox, "mparse" ); - boxLayout->addWidget( mNameParsing ); - - layout->addWidget( groupBox ); - - - //extensions groupbox - - QGroupBox *groupBox = new QGroupBox( 0, Qt::Vertical, i18n( "Extensions" ), generalPage ); - QVBoxLayout *boxLayout = new QVBoxLayout( groupBox->layout() ); - boxLayout->setAlignment( Qt::AlignTop ); - boxLayout->setMargin(KDialog::marginHintSmall()); - boxLayout->setSpacing(KDialog::spacingHintSmall()); - groupBox->layout()->setMargin(1) ; - groupBox->layout()->setSpacing(0); - mExtensionView = new KListView( groupBox ); - mExtensionView->setAllColumnsShowFocus( true ); - mExtensionView->addColumn( i18n( "Name" ) ); - mExtensionView->addColumn( i18n( "Description" ) ); - mExtensionView->setMaximumHeight(80); - - boxLayout->addWidget( mExtensionView ); - - mConfigureButton = new QPushButton( i18n( "Configure..." ), groupBox ); - mConfigureButton->setEnabled( false ); - boxLayout->addWidget( mConfigureButton ); - - layout->addWidget( groupBox ); - - connect( mNameParsing, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); - connect( mViewsSingleClickBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); - connect( mExtensionView, SIGNAL( selectionChanged( QListViewItem* ) ), - SLOT( selectionChanged( QListViewItem* ) ) ); - connect( mExtensionView, SIGNAL( clicked( QListViewItem* ) ), - SLOT( itemClicked( QListViewItem* ) ) ); - connect( mConfigureButton, SIGNAL( clicked() ), - SLOT( configureExtension() ) ); - - tabWidget->addTab( generalPage, i18n( "General" ) ); - - // Addressee page - mAddresseeWidget = new AddresseeWidget( this ); - tabWidget->addTab( mAddresseeWidget, i18n( "Contact" ) ); - connect( mAddresseeWidget, SIGNAL( modified() ), SLOT( modified() ) ); -*/ + + // mailclient page - QWidget *mailclientPage = new QWidget( this ); - QVBoxLayout* layout = new QVBoxLayout( mailclientPage, KDialog::marginHintSmall(), + QWidget *externalAppsPage = new QWidget( this ); + QVBoxLayout* layout = new QVBoxLayout( externalAppsPage, KDialog::marginHintSmall(), KDialog::spacingHintSmall() ); - QGroupBox *groupBox = new QGroupBox( 0, Qt::Vertical, i18n( "Used Mail Client" ), mailclientPage ); - QVBoxLayout* boxLayout = new QVBoxLayout( groupBox->layout() ); - boxLayout->setAlignment( Qt::AlignTop ); -// boxLayout->setMargin(KDialog::marginHintSmall() ); -// groupBox->layout()->setMargin(KDialog::marginHintSmall()) ; -// groupBox->layout()->setSpacing(KDialog::spacingHintSmall()); -// boxLayout->setSpacing( KDialog::spacingHintSmall() ); + mExternalApps = new QComboBox( externalAppsPage ); + + QMap<ExternalAppHandler::Types, QString>::Iterator it; + for( it = mExternalAppsMap.begin(); it != mExternalAppsMap.end(); ++it ) + mExternalApps->insertItem( it.data(), it.key() ); + + 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 ); + + connect( mClient, SIGNAL( activated( int ) ), + this, SLOT (client_changed( int ) ) ); + + QLabel* lab = new QLabel( i18n("Channel:"), mExternalAppGroupBox); + boxLayout->addWidget( lab, 1, 0 ); + mChannel = new QLineEdit(mExternalAppGroupBox); + mChannel->setReadOnly(true); + boxLayout->addMultiCellWidget( mChannel, 2 , 2, 0, 1 ); + + lab = new QLabel( i18n("Message:"), mExternalAppGroupBox); + boxLayout->addWidget( lab, 3, 0 ); + mMessage = new QLineEdit(mExternalAppGroupBox); + mMessage->setReadOnly(true); + boxLayout->addWidget( mMessage , 4, 0); + + lab = new QLabel( i18n("Parameters:"), mExternalAppGroupBox); + boxLayout->addWidget( lab, 3, 1 ); + mParameters = new QLineEdit(mExternalAppGroupBox); + mParameters->setReadOnly(true); + boxLayout->addWidget( mParameters, 4, 1 ); + + lab = new QLabel( i18n("extra Message:"), mExternalAppGroupBox); + boxLayout->addWidget( lab, 5, 0 ); + mMessage2 = new QLineEdit(mExternalAppGroupBox); + mMessage2->setReadOnly(true); + boxLayout->addWidget( mMessage2 , 6, 0); + + lab = new QLabel( i18n("extra Parameters:"), mExternalAppGroupBox); + boxLayout->addWidget( lab, 5, 1 ); + mParameters2 = new QLineEdit(mExternalAppGroupBox); + mParameters2->setReadOnly(true); + boxLayout->addWidget( mParameters2, 6, 1 ); - mEmailClient = new QComboBox( groupBox ); - mEmailClient->insertItem( i18n("OM/Pi"), KPimPrefs::OMPI ); - mEmailClient->insertItem( i18n("Qtopia mail"), KPimPrefs::QTOPIA ); - mEmailClient->insertItem( i18n("Opie mail"), KPimPrefs::OPIE ); - mEmailClient->insertItem( i18n("Other"), KPimPrefs::OTHER ); - boxLayout->addWidget( mEmailClient ); + lab = new QLabel( i18n("HINT: Delimiter=; Data=%1 "), mExternalAppGroupBox); + boxLayout->addMultiCellWidget( lab, 7, 7, 0, 1 ); - connect( mEmailClient, SIGNAL( activated( int ) ), - this, SLOT (emailclient_changed( int ) ) ); - QLabel* lab = new QLabel( i18n("Channel:"), groupBox); - boxLayout->addWidget( lab ); - mEmailChannel = new QLineEdit(groupBox); - mEmailChannel->setReadOnly(true); - boxLayout->addWidget( mEmailChannel ); + connect( mChannel, SIGNAL( textChanged ( const QString & )), this, SLOT( textChanged ( const QString & )) ); + 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( groupBox ); - tabWidget->addTab( mailclientPage, i18n( "Mail" ) ); + layout->addWidget( mExternalAppGroupBox ); + tabWidget->addTab( externalAppsPage, i18n( "External Apps." ) ); } +void KDEPIMConfigWidget::externalapp_changed( int newApp ) +{ + // first store the current data + saveEditFieldSettings(); + + // set mCurrentApp + mCurrentApp = (ExternalAppHandler::Types)newApp; + + // set mCurrentClient + switch(mCurrentApp) + { + case(ExternalAppHandler::EMAIL): + mCurrentClient = mEmailClient; + break; + case(ExternalAppHandler::PHONE): + mCurrentClient = mPhoneClient; + break; + case(ExternalAppHandler::SMS): + mCurrentClient = mSMSClient; + break; + case(ExternalAppHandler::FAX): + mCurrentClient = mFaxClient; + break; + case(ExternalAppHandler::PAGER): + mCurrentClient = mPagerClient; + break; + default: + return; + } + // and at last update the widgets + updateClientWidgets(); +} -void KDEPIMConfigWidget::emailclient_changed( int newClient ) + + +void KDEPIMConfigWidget::client_changed( int newClient ) { - if (newClient == KPimPrefs::OTHER) - mEmailChannel->setReadOnly(false); - else - mEmailChannel->setReadOnly(true); + if (newClient == mCurrentClient) + return; - QString opiepath = QString::fromLatin1( getenv("OPIEDIR") ); - QString qtopiapath = QString::fromLatin1( getenv("QPEDIR") ); + // first store the current data + saveEditFieldSettings(); - if (opiepath.isEmpty()) - opiepath = qtopiapath; - QString text = mEmailChannel->text(); + //then reset the clientvariable + mCurrentClient = newClient; - if (newClient == KPimPrefs::OPIE) + // and at last update the widgets + updateClientWidgets(); + + modified(); +} + +void KDEPIMConfigWidget::saveEditFieldSettings() +{ + + switch(mCurrentApp) { - if ( QFile::exists( opiepath + "/bin/opiemail" )) - text = "QPE/Application/opiemail"; - else - text = "FILENOTFOUND: " + opiepath + "/bin/opiemail"; + case(ExternalAppHandler::EMAIL): + mEmailClient = mClient->currentItem(); + break; + case(ExternalAppHandler::PHONE): + mPhoneClient= mClient->currentItem(); + break; + case(ExternalAppHandler::SMS): + mSMSClient = mClient->currentItem(); + break; + case(ExternalAppHandler::FAX): + mFaxClient = mClient->currentItem(); + break; + case(ExternalAppHandler::PAGER): + mPagerClient = mClient->currentItem(); + break; + default: + return; } - else if (newClient == KPimPrefs::QTOPIA) - { - if ( QFile::exists( qtopiapath + "/bin/qtmail" )) - text = "QPE/Application/qtmail"; - else - text = "FILENOTFOUND: " + qtopiapath + "/bin/qtmail"; + //store the current data back to the apropriate membervariables if we had set it to "other" + if ((mCurrentApp == ExternalAppHandler::EMAIL) && (mCurrentClient == KPimGlobalPrefs::OTHER_EMC)) + { + mEmailOtherChannel = mChannel->text(); + mEmailOtherMessage = mMessage->text(); + mEmailOtherMessageParameters = mParameters->text(); + mEmailOtherMessage2 = mMessage2->text(); + mEmailOtherMessageParameters2 = mParameters2->text(); + } + else if ((mCurrentApp == ExternalAppHandler::PHONE) && (mCurrentClient == KPimGlobalPrefs::OTHER_PHC)) + { + mPhoneOtherChannel = mChannel->text(); + mPhoneOtherMessage = mMessage->text(); + mPhoneOtherMessageParameters = mParameters->text(); + } + else if ((mCurrentApp == ExternalAppHandler::SMS) && (mCurrentClient == KPimGlobalPrefs::OTHER_SMC)) + { + mSMSOtherChannel = mChannel->text(); + mSMSOtherMessage = mMessage->text(); + mSMSOtherMessageParameters = mParameters->text(); + } + else if ((mCurrentApp == ExternalAppHandler::FAX) && (mCurrentClient == KPimGlobalPrefs::OTHER_FAC)) + { + mFaxOtherChannel = mChannel->text(); + mFaxOtherMessage = mMessage->text(); + mFaxOtherMessageParameters = mParameters->text(); + } + else if ((mCurrentApp == ExternalAppHandler::PAGER) && (mCurrentClient == KPimGlobalPrefs::OTHER_PAC)) + { + mPagerOtherChannel = mChannel->text(); + mPagerOtherMessage = mMessage->text(); + mPagerOtherMessageParameters = mParameters->text(); } - else if (newClient == KPimPrefs::OMPI) + +} + +void KDEPIMConfigWidget::updateClientWidgets() +{ + bool blocked = signalsBlocked(); + blockSignals( true ); + + // at this point we assume, that mCurrentApp and mCurrentClient are set to the values that we want to display + QMap<ExternalAppHandler::Types, QString>::Iterator it = mExternalAppsMap.find ( mCurrentApp ); + if (it == mExternalAppsMap.end()) + return; + + // update group box + mExternalAppGroupBox->setTitle(i18n( "Used %1 Client" ).arg(it.data())); + + //update the entries in the client combobox + mClient->clear(); + + QList<DefaultAppItem> items = ExternalAppHandler::instance()->getAvailableDefaultItems(mCurrentApp); + DefaultAppItem* dai; + for ( dai=items.first(); dai != 0; dai=items.next() ) { - if ( QFile::exists( qtopiapath + "/bin/ompi" )) - text = "QPE/Application/ompi"; - else if ( QFile::exists( opiepath + "/bin/ompi" )) - text = "QPE/Application/ompi"; - else - text = "FILENOTFOUND: " + qtopiapath + "/bin/ompi"; + mClient->insertItem( i18n(dai->_label), dai->_id ); + + if (dai->_id == mCurrentClient) + { + //restore the edit fields with the data of the local membervariables if we had set it to "other". + //Otherwise take the default data from externalapphandler. + mChannel->setText(dai->_channel); + mMessage->setText(dai->_message); + mParameters->setText(dai->_parameters); + mMessage2->setText(dai->_message2); + mParameters2->setText(dai->_parameters2); + + + if ((mCurrentApp == ExternalAppHandler::EMAIL) && (mCurrentClient == KPimGlobalPrefs::OTHER_EMC)) + { + mChannel->setText(mEmailOtherChannel); + mMessage->setText(mEmailOtherMessage); + mParameters->setText(mEmailOtherMessageParameters); + mMessage2->setText(mEmailOtherMessage2); + mParameters2->setText(mEmailOtherMessageParameters2); + } + else if ((mCurrentApp == ExternalAppHandler::PHONE) && (mCurrentClient == KPimGlobalPrefs::OTHER_PHC)) + { + mChannel->setText(mPhoneOtherChannel); + mMessage->setText(mPhoneOtherMessage); + mParameters->setText(mPhoneOtherMessageParameters); + } + else if ((mCurrentApp == ExternalAppHandler::SMS) && (mCurrentClient == KPimGlobalPrefs::OTHER_SMC)) + { + mChannel->setText(mSMSOtherChannel); + mMessage->setText(mSMSOtherMessage); + mParameters->setText(mSMSOtherMessageParameters); + } + else if ((mCurrentApp == ExternalAppHandler::FAX) && (mCurrentClient == KPimGlobalPrefs::OTHER_FAC)) + { + mChannel->setText(mFaxOtherChannel); + mMessage->setText(mFaxOtherMessage); + mParameters->setText(mFaxOtherMessageParameters); + } + else if ((mCurrentApp == ExternalAppHandler::PAGER) && (mCurrentClient == KPimGlobalPrefs::OTHER_PAC)) + { + mChannel->setText(mPagerOtherChannel); + mMessage->setText(mPagerOtherMessage); + mParameters->setText(mPagerOtherMessageParameters); + } + } + + } + bool readonly; + bool enabled; + if ( ((mCurrentApp == ExternalAppHandler::EMAIL) && (mCurrentClient == KPimGlobalPrefs::OTHER_EMC)) + ||((mCurrentApp == ExternalAppHandler::PHONE) && (mCurrentClient == KPimGlobalPrefs::OTHER_PHC)) + ||((mCurrentApp == ExternalAppHandler::SMS) && (mCurrentClient == KPimGlobalPrefs::OTHER_SMC)) + ||((mCurrentApp == ExternalAppHandler::FAX) && (mCurrentClient == KPimGlobalPrefs::OTHER_FAC)) + ||((mCurrentApp == ExternalAppHandler::PAGER) && (mCurrentClient == KPimGlobalPrefs::OTHER_PAC))) + { + readonly = false; + } + else + { + readonly = true; + } + + if ( ((mCurrentApp == ExternalAppHandler::EMAIL) && (mCurrentClient == KPimGlobalPrefs::NONE_EMC)) + ||((mCurrentApp == ExternalAppHandler::PHONE) && (mCurrentClient == KPimGlobalPrefs::NONE_PHC)) + ||((mCurrentApp == ExternalAppHandler::SMS) && (mCurrentClient == KPimGlobalPrefs::NONE_SMC)) + ||((mCurrentApp == ExternalAppHandler::FAX) && (mCurrentClient == KPimGlobalPrefs::NONE_FAC)) + ||((mCurrentApp == ExternalAppHandler::PAGER) && (mCurrentClient == KPimGlobalPrefs::NONE_PAC))) + { + enabled = false; + } + else + { + enabled = true; + } + + + mChannel->setReadOnly(readonly); + mMessage->setReadOnly(readonly); + mParameters->setReadOnly(readonly); + mMessage2->setReadOnly(readonly); + mParameters2->setReadOnly(readonly); + + mChannel->setEnabled(enabled); + mMessage->setEnabled(enabled); + mParameters->setEnabled(enabled); + mMessage2->setEnabled(enabled); + mParameters2->setEnabled(enabled); + + + + mClient->setCurrentItem(mCurrentClient); + + + // enable/disable the extra message/parameter field + if (mCurrentApp == ExternalAppHandler::EMAIL) + { } else { - //do nothing if we choosed other + mMessage2->setText( "" ); + mParameters2->setText( "" ); } - mEmailChannel->setText( text ); + if (enabled == true) { + mMessage2->setEnabled(mCurrentApp == ExternalAppHandler::EMAIL); + mParameters2->setEnabled(mCurrentApp == ExternalAppHandler::EMAIL); + } + blockSignals( blocked ); + } -void KDEPIMConfigWidget::restoreSettings(KPimPrefs* prefs) + + +void KDEPIMConfigWidget::restoreSettings(KPimGlobalPrefs* prefs) { bool blocked = signalsBlocked(); blockSignals( true ); - mEmailChannel->setText( prefs->mEmailChannel ); - mEmailClient->setCurrentItem(prefs->mEmailClient); + mEmailClient = prefs->mEmailClient; + mEmailOtherChannel = prefs->mEmailOtherChannel; + mEmailOtherMessage = prefs->mEmailOtherMessage; + mEmailOtherMessageParameters = prefs->mEmailOtherMessageParameters; + mEmailOtherMessage2 = prefs->mEmailOtherMessage2; + mEmailOtherMessageParameters2 = prefs->mEmailOtherMessageParameters2; + + mPhoneClient = prefs->mPhoneClient; + mPhoneOtherChannel = prefs->mPhoneOtherChannel; + mPhoneOtherMessage = prefs->mPhoneOtherMessage; + mPhoneOtherMessageParameters = prefs->mPhoneOtherMessageParameters; + + mFaxClient = prefs->mFaxClient; + mFaxOtherChannel = prefs->mFaxOtherChannel; + mFaxOtherMessage = prefs->mFaxOtherMessage; + mFaxOtherMessageParameters = prefs->mFaxOtherMessageParameters; + + mSMSClient = prefs->mSMSClient; + mSMSOtherChannel = prefs->mSMSOtherChannel; + mSMSOtherMessage = prefs->mSMSOtherMessage; + mSMSOtherMessageParameters = prefs->mSMSOtherMessageParameters; + + mPagerClient = prefs->mPagerClient; + mPagerOtherChannel = prefs->mPagerOtherChannel; + mPagerOtherMessage = prefs->mPagerOtherMessage; + mPagerOtherMessageParameters = prefs->mPagerOtherMessageParameters; + + mCurrentApp = ExternalAppHandler::EMAIL; + mCurrentClient = mEmailClient; + + updateClientWidgets(); blockSignals( blocked ); emit changed( false ); + } -void KDEPIMConfigWidget::saveSettings(KPimPrefs* prefs) +void KDEPIMConfigWidget::saveSettings(KPimGlobalPrefs* prefs) { - prefs->mEmailClient = mEmailClient->currentItem(); - prefs->mEmailChannel = mEmailChannel->text(); + saveEditFieldSettings(); + + prefs->mEmailClient = mEmailClient; + prefs->mEmailOtherChannel = mEmailOtherChannel; + prefs->mEmailOtherMessage = mEmailOtherMessage; + prefs->mEmailOtherMessageParameters = mEmailOtherMessageParameters; + prefs->mEmailOtherMessage2 = mEmailOtherMessage2; + prefs->mEmailOtherMessageParameters2 = mEmailOtherMessageParameters2; + + prefs->mPhoneClient = mPhoneClient; + prefs->mPhoneOtherChannel = mPhoneOtherChannel; + prefs->mPhoneOtherMessage = mPhoneOtherMessage; + prefs->mPhoneOtherMessageParameters = mPhoneOtherMessageParameters; + + prefs->mFaxClient = mFaxClient; + prefs->mFaxOtherChannel = mFaxOtherChannel; + prefs->mFaxOtherMessage = mFaxOtherMessage; + prefs->mFaxOtherMessageParameters = mFaxOtherMessageParameters; + + prefs->mSMSClient = mSMSClient; + prefs->mSMSOtherChannel = mSMSOtherChannel; + prefs->mSMSOtherMessage = mSMSOtherMessage; + prefs->mSMSOtherMessageParameters = mSMSOtherMessageParameters; + + prefs->mPagerClient = mPagerClient; + prefs->mPagerOtherChannel = mPagerOtherChannel; + prefs->mPagerOtherMessage = mPagerOtherMessage; + prefs->mPagerOtherMessageParameters = mPagerOtherMessageParameters; prefs->writeConfig(); emit changed( false ); } -void KDEPIMConfigWidget::defaults(KPimPrefs* prefs) +void KDEPIMConfigWidget::defaults(KPimGlobalPrefs* prefs) { - mEmailClient->setCurrentItem(KPimPrefs::OMPI); - emailclient_changed( KPimPrefs::OMPI ); + + 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; emit changed( true ); } void KDEPIMConfigWidget::modified() { emit changed( true ); } + +void KDEPIMConfigWidget::textChanged( const QString& text ) +{ + emit changed( true ); +} diff --git a/libkdepim/kcmconfigs/kdepimconfigwidget.h b/libkdepim/kcmconfigs/kdepimconfigwidget.h index 109a847..6e02544 100644 --- a/libkdepim/kcmconfigs/kdepimconfigwidget.h +++ b/libkdepim/kcmconfigs/kdepimconfigwidget.h @@ -1,86 +1,140 @@ /* This file is part of KDEPim/Pi. Copyright (c) 2004 Ulf Schenk This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. As a special exception, permission is given to link this program with any edition of Qt, and distribute the resulting executable, without including the source code for Qt in the source distribution. */ /* Enhanced Version of the file for platform independent KDE tools. Copyright (c) 2004 Ulf Schenk $Id$ */ #ifndef KDEPIMCONFIGWIDGET_H #define KDEPIMCONFIGWIDGET_H #include <qwidget.h> +#include <qmap.h> + +#include "externalapphandler.h" + /* class QCheckBox; class QListViewItem; class QPushButton; class KListView; */ class QComboBox; class QLineEdit; -class KPimPrefs; +class KPimGlobalPrefs; +class QGroupBox; class KDEPIMConfigWidget : public QWidget { Q_OBJECT public: KDEPIMConfigWidget( QWidget *parent, const char *name = 0 ); - void restoreSettings(KPimPrefs* prefs); - void saveSettings(KPimPrefs* prefs); - void defaults(KPimPrefs* prefs); + void restoreSettings(KPimGlobalPrefs* prefs); + void saveSettings(KPimGlobalPrefs* prefs); + void defaults(KPimGlobalPrefs* prefs); signals: void changed( bool ); + public slots: void modified(); + void textChanged( const QString& text ); private slots: // void configureExtension(); // void selectionChanged( QListViewItem* ); // void itemClicked( QListViewItem* ); - void emailclient_changed( int newClient ); + void client_changed( int newClient ); + void externalapp_changed( int newApp ); private: + void saveEditFieldSettings(); + void updateClientWidgets(); + // void restoreExtensionSettings(); // void saveExtensionSettings(); // KListView *mExtensionView; // QCheckBox *mNameParsing; // QCheckBox *mViewsSingleClickBox; // QPushButton *mConfigureButton; - QComboBox* mEmailClient; - QLineEdit* mEmailChannel; + QComboBox* mExternalApps; + QGroupBox* mExternalAppGroupBox; + + + QComboBox* mClient; + QLineEdit* mChannel; + QLineEdit* mMessage; + QLineEdit* mParameters; + QLineEdit* mMessage2; + QLineEdit* mParameters2; + + ExternalAppHandler::Types mCurrentApp; + int mCurrentClient; + + + int mEmailClient; + QString mEmailOtherChannel; + QString mEmailOtherMessage; + QString mEmailOtherMessageParameters; + QString mEmailOtherMessage2; + QString mEmailOtherMessageParameters2; + + int mPhoneClient; + QString mPhoneOtherChannel; + QString mPhoneOtherMessage; + QString mPhoneOtherMessageParameters; + + int mFaxClient; + QString mFaxOtherChannel; + QString mFaxOtherMessage; + QString mFaxOtherMessageParameters; + + int mSMSClient; + QString mSMSOtherChannel; + QString mSMSOtherMessage; + QString mSMSOtherMessageParameters; + + int mPagerClient; + QString mPagerOtherChannel; + QString mPagerOtherMessage; + QString mPagerOtherMessageParameters; + + + + QMap<ExternalAppHandler::Types, QString> mExternalAppsMap; // AddresseeWidget *mAddresseeWidget; }; #endif |