-rw-r--r-- | kaddressbook/kabcore.cpp | 53 | ||||
-rw-r--r-- | kaddressbook/kcmconfigs/kcmkabconfig.cpp | 20 | ||||
-rw-r--r-- | kaddressbook/kcmconfigs/kcmkabconfig.h | 10 | ||||
-rw-r--r-- | libkdepim/addresseeview.cpp | 1 | ||||
-rw-r--r-- | libkdepim/kcmconfigs/kcmkdepimconfig.cpp | 24 | ||||
-rw-r--r-- | libkdepim/kcmconfigs/kcmkdepimconfig.h | 10 | ||||
-rw-r--r-- | libkdepim/kcmconfigs/kdepimconfigwidget.cpp | 530 | ||||
-rw-r--r-- | libkdepim/kcmconfigs/kdepimconfigwidget.h | 68 | ||||
-rw-r--r-- | libkdepim/kpimprefs.cpp | 11 | ||||
-rw-r--r-- | libkdepim/kpimprefs.h | 19 | ||||
-rw-r--r-- | libkdepim/libkdepim.pro | 4 | ||||
-rw-r--r-- | libkdepim/libkdepimE.pro | 4 | ||||
-rw-r--r-- | microkde/kdeui/kcmodule.cpp | 10 | ||||
-rw-r--r-- | microkde/kdeui/kcmodule.h | 11 | ||||
-rw-r--r-- | microkde/kutils/kcmultidialog.cpp | 13 | ||||
-rw-r--r-- | microkde/kutils/kcmultidialog.h | 5 |
16 files changed, 560 insertions, 233 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp index 4303cab..fe4841a 100644 --- a/kaddressbook/kabcore.cpp +++ b/kaddressbook/kabcore.cpp @@ -91,2 +91,4 @@ #include "kcmconfigs/kcmkdepimconfig.h" +#include "kpimglobalprefs.h" +#include "externalapphandler.h" @@ -469,25 +471,3 @@ void KABCore::sendMail( const QString& email ) { -//US original kde implementation : kapp->invokeMailer( email, "" ); - -/*US original qtopia implementation - PimContact c = abList->currentEntry(); - QString name = c.fileAs(); - QString email = c.defaultEmail(); -#ifndef QT_NO_COP - QCopEnvelope e(Service::channel("Email"), "writeMail(QString,QString)"); - e << name << email; -#else -*/ - - -#ifndef QT_NO_COP - QCString channel = KABPrefs::instance()->mEmailChannel.latin1(); - qDebug("Using QCopEnvelope e(\"" + channel + "\", \"writeMail(QMap(QString,QString))\")"); - - QCopEnvelope e(channel, "writeMail(QString,QString)"); - //US we need no names in the To field. The emailadresses are enough - e << "" << email; -#else - KMessageBox::sorry( this, i18n( "This version does not support sending emails." ) ); -#endif + bool result = ExternalAppHandler::instance()->mailToContacts(email); } @@ -552,2 +532,6 @@ void KABCore::mailVCard( const QStringList& uids ) } + + bool result = ExternalAppHandler::instance()->mailAttachments(urls.join(", ")); + + /*US @@ -559,15 +543,2 @@ void KABCore::mailVCard( const QStringList& uids ) */ -#ifndef QT_NO_COP - QCString channel = KABPrefs::instance()->mEmailChannel.latin1(); - qDebug("Using QCopEnvelope e(\"" + channel + "\", \"writeMail(QMap(QString,QString))\")"); - - QMap<QString, QString> parameterMap; - parameterMap.insert("ATTACHMENT<n>", urls.join(", ")); - - QCopEnvelope e(channel, "writeMail(QMap(QString,QString))"); - e << parameterMap; -#else - KMessageBox::sorry( this, i18n( "This version does not support sending emails." ) ); -#endif - @@ -1199,7 +1170,9 @@ void KABCore::openConfigDialog() { - KABPrefs* prefs = KABPrefs::instance(); - KCMultiDialog* ConfigureDialog = new KCMultiDialog( prefs, "PIM", this ,"kabconfigdialog", true ); - KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" ); + KABPrefs* kab_prefs = KABPrefs::instance(); + KPimGlobalPrefs* kpim_prefs = KPimGlobalPrefs::instance(); + + KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true ); + KCMKabConfig* kabcfg = new KCMKabConfig( kab_prefs, ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" ); ConfigureDialog->addModule(kabcfg ); - KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Pim")) , "KCMKdeLibConfig" ); + KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( kpim_prefs, ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" ); ConfigureDialog->addModule(kdelibcfg ); diff --git a/kaddressbook/kcmconfigs/kcmkabconfig.cpp b/kaddressbook/kcmconfigs/kcmkabconfig.cpp index 26398f8..b460a81 100644 --- a/kaddressbook/kcmconfigs/kcmkabconfig.cpp +++ b/kaddressbook/kcmconfigs/kcmkabconfig.cpp @@ -41,4 +41,4 @@ extern "C" { - KCModule *create_kabconfig( QWidget *parent, const char * ) { - return new KCMKabConfig( parent, "kcmkabconfig" ); + KCModule *create_kabconfig( KABPrefs* prefs, QWidget *parent, const char * ) { + return new KCMKabConfig( prefs, parent, "kcmkabconfig" ); } @@ -46,4 +46,4 @@ extern "C" -KCMKabConfig::KCMKabConfig( QWidget *parent, const char *name ) - : KCModule( parent, name ) +KCMKabConfig::KCMKabConfig( KABPrefs* prefs, QWidget *parent, const char *name ) + : KCModule( prefs, parent, name ) { @@ -59,15 +59,15 @@ KCMKabConfig::KCMKabConfig( QWidget *parent, const char *name ) -void KCMKabConfig::load(KPrefs* prefs) +void KCMKabConfig::load() { - mConfigWidget->restoreSettings((KABPrefs*)prefs); + mConfigWidget->restoreSettings((KABPrefs*)getPreferences()); } -void KCMKabConfig::save(KPrefs* prefs) +void KCMKabConfig::save() { - mConfigWidget->saveSettings((KABPrefs*)prefs); + mConfigWidget->saveSettings((KABPrefs*)getPreferences()); } -void KCMKabConfig::defaults(KPrefs* prefs) +void KCMKabConfig::defaults() { - mConfigWidget->defaults((KABPrefs*)prefs); + mConfigWidget->defaults((KABPrefs*)getPreferences()); } diff --git a/kaddressbook/kcmconfigs/kcmkabconfig.h b/kaddressbook/kcmconfigs/kcmkabconfig.h index b4858c1..1cb6ad3 100644 --- a/kaddressbook/kcmconfigs/kcmkabconfig.h +++ b/kaddressbook/kcmconfigs/kcmkabconfig.h @@ -29,3 +29,3 @@ class KABConfigWidget; -class KPrefs; +class KABPrefs; @@ -36,7 +36,7 @@ class KCMKabConfig : public KCModule public: - KCMKabConfig( QWidget *parent = 0, const char *name = 0 ); + KCMKabConfig( KABPrefs* 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(); diff --git a/libkdepim/addresseeview.cpp b/libkdepim/addresseeview.cpp index 547441c..83aba48 100644 --- a/libkdepim/addresseeview.cpp +++ b/libkdepim/addresseeview.cpp @@ -309,2 +309,3 @@ mText = "<table width=\"100%\">\n"; setText( mText ); + } 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 @@ -41,3 +41,4 @@ $Id$ #include "kprefs.h" -#include "kpimprefs.h" +#include "kpimglobalprefs.h" + #ifndef _WIN32_ @@ -45,4 +46,4 @@ 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" ); } @@ -50,4 +51,5 @@ extern "C" #endif -KCMKdePimConfig::KCMKdePimConfig( QWidget *parent, const char *name ) - : KCModule( parent, name ) + +KCMKdePimConfig::KCMKdePimConfig( KPimGlobalPrefs* prefs, QWidget *parent, const char *name ) + : KCModule( prefs, parent, name ) { @@ -63,15 +65,15 @@ KCMKdePimConfig::KCMKdePimConfig( QWidget *parent, const char *name ) -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 @@ -36,3 +36,3 @@ $Id$ class KDEPIMConfigWidget; -class KPrefs; +class KPimGlobalPrefs; @@ -43,7 +43,7 @@ class KCMKdePimConfig : public KCModule 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(); 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 @@ -73,3 +73,3 @@ $Id$ -#include "kpimprefs.h" +#include "kpimglobalprefs.h" @@ -81,2 +81,9 @@ KDEPIMConfigWidget::KDEPIMConfigWidget( QWidget *parent, const char *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, @@ -86,97 +93,78 @@ KDEPIMConfigWidget::KDEPIMConfigWidget( QWidget *parent, const char *name ) 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" ); + - 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 ); + mClient = new QComboBox( mExternalAppGroupBox ); + boxLayout->addMultiCellWidget( mClient, 0, 0, 0, 1 ); - connect( mEmailClient, SIGNAL( activated( int ) ), - this, SLOT (emailclient_changed( int ) ) ); + connect( mClient, SIGNAL( activated( int ) ), + this, SLOT (client_changed( int ) ) ); - QLabel* lab = new QLabel( i18n("Channel:"), groupBox); - boxLayout->addWidget( lab ); - mEmailChannel = new QLineEdit(groupBox); - mEmailChannel->setReadOnly(true); - boxLayout->addWidget( mEmailChannel ); + 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 ); - layout->addWidget( groupBox ); - tabWidget->addTab( mailclientPage, i18n( "Mail" ) ); + 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 ); + + lab = new QLabel( i18n("HINT: Delimiter=; Data=%1 "), mExternalAppGroupBox); + boxLayout->addMultiCellWidget( lab, 7, 7, 0, 1 ); + + + 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( mExternalAppGroupBox ); + tabWidget->addTab( externalAppsPage, i18n( "External Apps." ) ); @@ -184,43 +172,207 @@ KDEPIMConfigWidget::KDEPIMConfigWidget( QWidget *parent, const char *name ) +void KDEPIMConfigWidget::externalapp_changed( int newApp ) +{ + // first store the current data + saveEditFieldSettings(); + // set mCurrentApp + mCurrentApp = (ExternalAppHandler::Types)newApp; -void KDEPIMConfigWidget::emailclient_changed( int newClient ) + // set mCurrentClient + switch(mCurrentApp) { - if (newClient == KPimPrefs::OTHER) - mEmailChannel->setReadOnly(false); - else - mEmailChannel->setReadOnly(true); + 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; + } - QString opiepath = QString::fromLatin1( getenv("OPIEDIR") ); - QString qtopiapath = QString::fromLatin1( getenv("QPEDIR") ); + // and at last update the widgets + updateClientWidgets(); +} - if (opiepath.isEmpty()) - opiepath = qtopiapath; - QString text = mEmailChannel->text(); - if (newClient == KPimPrefs::OPIE) +void KDEPIMConfigWidget::client_changed( int newClient ) { - if ( QFile::exists( opiepath + "/bin/opiemail" )) - text = "QPE/Application/opiemail"; - else - text = "FILENOTFOUND: " + opiepath + "/bin/opiemail"; + if (newClient == mCurrentClient) + return; + + // first store the current data + saveEditFieldSettings(); + + + //then reset the clientvariable + mCurrentClient = newClient; + + // and at last update the widgets + updateClientWidgets(); + + modified(); } - else if (newClient == KPimPrefs::QTOPIA) + +void KDEPIMConfigWidget::saveEditFieldSettings() { - if ( QFile::exists( qtopiapath + "/bin/qtmail" )) - text = "QPE/Application/qtmail"; - else - text = "FILENOTFOUND: " + qtopiapath + "/bin/qtmail"; + + switch(mCurrentApp) + { + 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; + } + + //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() { - if ( QFile::exists( qtopiapath + "/bin/ompi" )) - text = "QPE/Application/ompi"; - else if ( QFile::exists( opiepath + "/bin/ompi" )) - text = "QPE/Application/ompi"; + 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() ) + { + 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 - text = "FILENOTFOUND: " + qtopiapath + "/bin/ompi"; + { + 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; } @@ -228,8 +380,36 @@ void KDEPIMConfigWidget::emailclient_changed( int newClient ) { - //do nothing if we choosed other + enabled = true; } - mEmailChannel->setText( text ); + 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 + { + mMessage2->setText( "" ); + mParameters2->setText( "" ); + } + if (enabled == true) { + mMessage2->setEnabled(mCurrentApp == ExternalAppHandler::EMAIL); + mParameters2->setEnabled(mCurrentApp == ExternalAppHandler::EMAIL); } @@ -237,3 +417,10 @@ void KDEPIMConfigWidget::emailclient_changed( int newClient ) -void KDEPIMConfigWidget::restoreSettings(KPimPrefs* prefs) + blockSignals( blocked ); + +} + + + + +void KDEPIMConfigWidget::restoreSettings(KPimGlobalPrefs* prefs) { @@ -242,4 +429,33 @@ void KDEPIMConfigWidget::restoreSettings(KPimPrefs* prefs) - 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(); @@ -248,8 +464,35 @@ void KDEPIMConfigWidget::restoreSettings(KPimPrefs* prefs) 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; @@ -260,6 +503,42 @@ void KDEPIMConfigWidget::saveSettings(KPimPrefs* prefs) -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; @@ -273 +552,6 @@ void KDEPIMConfigWidget::modified() } + +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 @@ -34,2 +34,6 @@ $Id$ #include <qwidget.h> +#include <qmap.h> + +#include "externalapphandler.h" + @@ -43,3 +47,4 @@ class QComboBox; class QLineEdit; -class KPimPrefs; +class KPimGlobalPrefs; +class QGroupBox; @@ -52,5 +57,5 @@ class KDEPIMConfigWidget : public QWidget - void restoreSettings(KPimPrefs* prefs); - void saveSettings(KPimPrefs* prefs); - void defaults(KPimPrefs* prefs); + void restoreSettings(KPimGlobalPrefs* prefs); + void saveSettings(KPimGlobalPrefs* prefs); + void defaults(KPimGlobalPrefs* prefs); @@ -59,4 +64,6 @@ class KDEPIMConfigWidget : public QWidget + public slots: void modified(); + void textChanged( const QString& text ); @@ -68,5 +75,9 @@ class KDEPIMConfigWidget : public QWidget // 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(); @@ -79,4 +90,47 @@ class KDEPIMConfigWidget : public QWidget // 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; diff --git a/libkdepim/kpimprefs.cpp b/libkdepim/kpimprefs.cpp index 15531c7..140a286 100644 --- a/libkdepim/kpimprefs.cpp +++ b/libkdepim/kpimprefs.cpp @@ -23,2 +23,9 @@ +/* +Enhanced Version of the file for platform independent KDE tools. +Copyright (c) 2004 Ulf Schenk + +$Id$ +*/ + #include <kglobal.h> @@ -33,6 +40,2 @@ KPimPrefs::KPimPrefs( const QString &name ) : { - KPrefs::setCurrentGroup( "ExternalApplications" ); - addItemInt( "EmailChannelType", &mEmailClient, OMPI ); - addItemString( "EmailChannelOther", &mEmailChannel, "" ); - } diff --git a/libkdepim/kpimprefs.h b/libkdepim/kpimprefs.h index 5186315..9bd9466 100644 --- a/libkdepim/kpimprefs.h +++ b/libkdepim/kpimprefs.h @@ -22,2 +22,10 @@ */ + +/* +Enhanced Version of the file for platform independent KDE tools. +Copyright (c) 2004 Ulf Schenk + +$Id$ +*/ + #ifndef KPIMPREFS_H @@ -46,9 +54,2 @@ class KPimPrefs : public KPrefs - enum EMailClients { - OMPI = 0, - QTOPIA = 1, - OPIE = 2, - OTHER = 3 - }; - @@ -57,6 +58,2 @@ class KPimPrefs : public KPrefs - int mEmailClient; - QString mEmailChannel; - - diff --git a/libkdepim/libkdepim.pro b/libkdepim/libkdepim.pro index 902f049..e05e681 100644 --- a/libkdepim/libkdepim.pro +++ b/libkdepim/libkdepim.pro @@ -25,2 +25,3 @@ HEADERS = \ categoryselectdialog_base.h \ + externalapphandler.h \ kdateedit.h \ @@ -30,2 +31,3 @@ HEADERS = \ kpimprefs.h \ + kpimglobalprefs.h \ kprefsdialog.h \ @@ -42,2 +44,3 @@ SOURCES = \ categoryselectdialog_base.cpp \ + externalapphandler.cpp \ kdateedit.cpp \ @@ -47,2 +50,3 @@ SOURCES = \ kpimprefs.cpp \ + kpimglobalprefs.cpp \ kprefsdialog.cpp \ diff --git a/libkdepim/libkdepimE.pro b/libkdepim/libkdepimE.pro index fc8abe1..b322bce 100644 --- a/libkdepim/libkdepimE.pro +++ b/libkdepim/libkdepimE.pro @@ -19,2 +19,3 @@ HEADERS = \ categoryselectdialog_base.h \ + externalapphandler.h \ kdateedit.h \ @@ -24,2 +25,3 @@ HEADERS = \ kpimprefs.h \ + kpimglobalprefs.h \ kprefsdialog.h \ @@ -38,2 +40,3 @@ SOURCES = \ categoryselectdialog_base.cpp \ + externalapphandler.cpp \ kdateedit.cpp \ @@ -43,2 +46,3 @@ SOURCES = \ kpimprefs.cpp \ + kpimglobalprefs.cpp \ kprefsdialog.cpp \ diff --git a/microkde/kdeui/kcmodule.cpp b/microkde/kdeui/kcmodule.cpp index 915cd0f..f646db3 100644 --- a/microkde/kdeui/kcmodule.cpp +++ b/microkde/kdeui/kcmodule.cpp @@ -35,5 +35,6 @@ public: bool _hasOwnInstance; + KPrefs* _prefs; }; -KCModule::KCModule(QWidget *parent, const char *name, const QStringList &) +KCModule::KCModule(KPrefs* prefs, QWidget *parent, const char *name, const QStringList &) : QWidget(parent, name), _btn(Help|Default|Apply) @@ -43,2 +44,3 @@ KCModule::KCModule(QWidget *parent, const char *name, const QStringList &) d->_useRootOnlyMsg = true; + d->_prefs = prefs; /*US @@ -96,2 +98,8 @@ bool KCModule::useRootOnlyMsg() const } + +KPrefs* KCModule::getPreferences() +{ + return d->_prefs; +} + /*US diff --git a/microkde/kdeui/kcmodule.h b/microkde/kdeui/kcmodule.h index bc020bc..874958c 100644 --- a/microkde/kdeui/kcmodule.h +++ b/microkde/kdeui/kcmodule.h @@ -85,3 +85,3 @@ public: */ - KCModule(QWidget *parent=0, const char *name=0, const QStringList &args=QStringList() ); + KCModule(KPrefs* prefs, QWidget *parent=0, const char *name=0, const QStringList &args=QStringList() ); @@ -108,3 +108,3 @@ public: */ - virtual void load(KPrefs* prefs) {}; + virtual void load() {}; @@ -121,3 +121,3 @@ public: */ - virtual void save(KPrefs* prefs) {}; + virtual void save() {}; @@ -129,3 +129,3 @@ public: */ - virtual void defaults(KPrefs* prefs) {}; + virtual void defaults() {}; @@ -139,3 +139,3 @@ public: */ - virtual void sysdefaults(KPrefs* prefs) { defaults(prefs); }; + virtual void sysdefaults() { defaults(); }; @@ -195,2 +195,3 @@ public: + KPrefs* getPreferences(); diff --git a/microkde/kutils/kcmultidialog.cpp b/microkde/kutils/kcmultidialog.cpp index c2378fb..6c82e4f 100644 --- a/microkde/kutils/kcmultidialog.cpp +++ b/microkde/kutils/kcmultidialog.cpp @@ -36,3 +36,2 @@ #include "kcmultidialog.h" -#include "kprefs.h" //US #include "kcmultidialog.moc" @@ -40,5 +39,5 @@ -KCMultiDialog::KCMultiDialog(KPrefs* prefs, const QString& baseGroup, QWidget *parent, const char *name, bool modal) +KCMultiDialog::KCMultiDialog(const QString& baseGroup, QWidget *parent, const char *name, bool modal) : KDialogBase(IconList, i18n("Configure"), Default |Cancel | Apply | Ok, Ok, - parent, name, modal, true), mPrefs(prefs), d(0L) + parent, name, modal, true), d(0L) { @@ -77,3 +76,3 @@ void KCMultiDialog::slotDefault() { - (*it)->defaults(mPrefs); + (*it)->defaults(); clientChanged(true); @@ -91,3 +90,3 @@ qDebug("KCMultiDialog::slotApply clicked"); for (; it.current(); ++it) - (*it)->save(mPrefs); + (*it)->save(); clientChanged(false); @@ -105,3 +104,3 @@ qDebug("KCMultiDialog::slotOk clicked"); for (; it.current(); ++it) - (*it)->save(mPrefs); + (*it)->save(); accept(); @@ -164,3 +163,3 @@ void KCMultiDialog::addModule(KCModule* module ) //, const QString& modulename, //US - module->load(mPrefs); + module->load(); diff --git a/microkde/kutils/kcmultidialog.h b/microkde/kutils/kcmultidialog.h index a42555f..1aa66b2 100644 --- a/microkde/kutils/kcmultidialog.h +++ b/microkde/kutils/kcmultidialog.h @@ -31,4 +31,2 @@ -class KPrefs; - /** @@ -56,3 +54,3 @@ public: **/ - KCMultiDialog(KPrefs* prefs, const QString& baseGroup = QString::fromLatin1("settings"), + KCMultiDialog(const QString& baseGroup = QString::fromLatin1("settings"), QWidget *parent=0, const char *name=0, @@ -141,3 +139,2 @@ private: KJanusWidget* mMainWidget; - KPrefs* mPrefs; |