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 | |
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/addresseeview.cpp | 31 | ||||
-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 | ||||
-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 |
9 files changed, 527 insertions, 178 deletions
diff --git a/libkdepim/addresseeview.cpp b/libkdepim/addresseeview.cpp index 547441c..83aba48 100644 --- a/libkdepim/addresseeview.cpp +++ b/libkdepim/addresseeview.cpp @@ -32,18 +32,18 @@ #include <qfile.h> #include <qapplication.h> #include "addresseeview.h" #ifndef DESKTOP_VERSION -#include <qtopia/qcopenvelope_qws.h> -#include <qpe/qpeapplication.h> +#include <qtopia/qcopenvelope_qws.h> +#include <qpe/qpeapplication.h> #endif static int kphoneInstalled = 0; using namespace KPIM; AddresseeView::AddresseeView( QWidget *parent, const char *name ) //US : KTextBrowser( parent, name ) @@ -54,17 +54,17 @@ AddresseeView::AddresseeView( QWidget *parent, const char *name ) //US setWrapPolicy( QTextEdit::AtWordBoundary ); setLinkUnderline( false ); // setVScrollBarMode( QScrollView::AlwaysOff ); //setHScrollBarMode( QScrollView::AlwaysOff ); //US QStyleSheet *sheet = styleSheet(); //US QStyleSheetItem *link = sheet->item( "a" ); //US link->setColor( KGlobalSettings::linkColor() ); - + } void AddresseeView::setSource(const QString& n) { qDebug("********AddresseeView::setSource %s", n.latin1()); #ifndef DESKTOP_VERSION if ( n.left( 6 ) == "mailto" ) { QCopEnvelope e("QPE/Application/ompi", "newMail(QString)"); e << n.mid(7); @@ -83,24 +83,24 @@ void AddresseeView::setAddressee( const KABC::Addressee& addr ) #ifndef DESKTOP_VERSION if ( ! kphoneInstalled ) { if ( QFile::exists( QPEApplication::qpeDir() + "/bin/kppi" ) ) kphoneInstalled = 1; else kphoneInstalled = -1; } if ( kphoneInstalled > 0 ) - kphoneAvail = true; + kphoneAvail = true; #if 0 if ( kphoneAvail ) qDebug("KPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPone avail "); else qDebug("NOOOOOOOOOOOo KPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPone avail "); #endif - + #endif mAddressee = addr; // clear view setText( QString::null ); if ( mAddressee.isEmpty() ) return; @@ -139,17 +139,17 @@ void AddresseeView::setAddressee( const KABC::Addressee& addr ) dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( KABC::PhoneNumber::typeLabel( (*phoneIt).type() ) ) .arg( (*phoneIt).number() ); } } - + for ( ; emailIt != emails.end(); ++emailIt ) { dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" ) .arg( type ) .arg( name ) .arg( *emailIt ) .arg( *emailIt ); @@ -176,24 +176,24 @@ void AddresseeView::setAddressee( const KABC::Addressee& addr ) //qDebug("AddresseeView::setAddressee has to be verified."); dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( KABC::Address::typeLabel( (*addrIt).type() ) ) .arg( formattedAddress ); } else { - + dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( KABC::Address::typeLabel( (*addrIt).type() ) ) //US .arg( (*addrIt).label().replace( '\n', "<br>" ) ); .arg( (*addrIt).label() /*replace( QRegExp("\n"), "<br>" )*/ ); - + } } QString notes; if ( !mAddressee.note().isEmpty() ) { notes = QString( "<tr>" "<td align=\"right\" valign=\"top\"><b>%1</b></td>" // note label @@ -203,19 +203,19 @@ void AddresseeView::setAddressee( const KABC::Addressee& addr ) .arg( mAddressee.note().replace( QRegExp("\n"), "<br>" ) ); //qDebug("AddresseeView::setAddressee has to be verified."); } QString aRole = ""; QString aOrga = ""; if ( true /*!mAddressee.role().isEmpty()*/ ) { aRole = "<tr>" - "<td align=\"left\">" + mAddressee.role() + "</td>" + "<td align=\"left\">" + mAddressee.role() + "</td>" "</tr>"; - } + } if ( true /*!mAddressee.organization().isEmpty()*/ ) { aOrga = "<tr>" "<td align=\"left\">" + mAddressee.organization() + "</td>" ; "</tr>"; } mText = ""; QString picString = ""; KABC::Picture picture = mAddressee.photo(); @@ -263,70 +263,71 @@ void AddresseeView::setAddressee( const KABC::Addressee& addr ) .arg( aRole ) .arg( aOrga ) .arg( dynamicPart ) .arg( notes ); } else { // no picture! mText = "<table width=\"100%\">\n"; - //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; + //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; #ifdef DESKTOP_VERSION mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h1>"; #else mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h2>"; #endif - + #ifdef DESKTOP_VERSION mText += "<font color=\"#FFFFFF\"> <em>" + name+"</em></font></h1>"; #else mText += "<font color=\"#FFFFFF\"> <em>" + name +"</em></font></h2>"; #endif mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>"; mText += "<table><td colspan=\"2\"> </td>"; /* mText += QString("<tr><td align=\"right\"><b2>%1</b2></td>" "<td align=\"left\"><b>%2</b></td></tr>" ) .arg( i18n(" ") ) - .arg( name ); + .arg( name ); */ if ( ! mAddressee.role().isEmpty() ) mText += QString("<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( i18n(" ") ) .arg( mAddressee.role()); if ( ! mAddressee.organization().isEmpty() ) mText += QString("<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( i18n(" ") ) .arg( mAddressee.organization()); mText += dynamicPart; mText += notes; mText += "</table>"; - + } // at last display it... setText( mText ); + } KABC::Addressee AddresseeView::addressee() const { return mAddressee; } void AddresseeView::addTag(const QString & tag,const QString & text) { if ( text.isEmpty() ) return; int number=text.contains("\n"); QString str = "<" + tag + ">"; QString tmpText=text; QString tmpStr=str; - if(number !=-1) + if(number !=-1) { if (number > 0) { int pos=0; QString tmp; for(int i=0;i<=number;i++) { pos=tmpText.find("\n"); tmp=tmpText.left(pos); tmpText=tmpText.right(tmpText.length()-pos-1); 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 @@ -34,44 +34,46 @@ $Id$ #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 @@ -29,26 +29,26 @@ $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 @@ -66,208 +66,492 @@ $Id$ #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 @@ -27,60 +27,114 @@ 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 diff --git a/libkdepim/kpimprefs.cpp b/libkdepim/kpimprefs.cpp index 15531c7..140a286 100644 --- a/libkdepim/kpimprefs.cpp +++ b/libkdepim/kpimprefs.cpp @@ -16,30 +16,33 @@ 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 <kglobal.h> #include <kconfig.h> #include <klocale.h> #include <kdebug.h> #include "kpimprefs.h" KPimPrefs::KPimPrefs( const QString &name ) : KPrefs( name ) { - KPrefs::setCurrentGroup( "ExternalApplications" ); - addItemInt( "EmailChannelType", &mEmailClient, OMPI ); - addItemString( "EmailChannelOther", &mEmailChannel, "" ); - } KPimPrefs::~KPimPrefs() { } void KPimPrefs::usrSetDefaults() { diff --git a/libkdepim/kpimprefs.h b/libkdepim/kpimprefs.h index 5186315..9bd9466 100644 --- a/libkdepim/kpimprefs.h +++ b/libkdepim/kpimprefs.h @@ -15,16 +15,24 @@ 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 KPIMPREFS_H #define KPIMPREFS_H #include <qstringlist.h> #include "kprefs.h" class KPimPrefs : public KPrefs @@ -39,29 +47,18 @@ class KPimPrefs : public KPrefs void usrSetDefaults(); /** Read preferences from config file */ void usrReadConfig(); /** Write preferences to config file */ void usrWriteConfig(); - enum EMailClients { - OMPI = 0, - QTOPIA = 1, - OPIE = 2, - OTHER = 3 - }; - public: QStringList mCustomCategories; - int mEmailClient; - QString mEmailChannel; - - protected: virtual void setCategoryDefaults() = 0; }; #endif diff --git a/libkdepim/libkdepim.pro b/libkdepim/libkdepim.pro index 902f049..e05e681 100644 --- a/libkdepim/libkdepim.pro +++ b/libkdepim/libkdepim.pro @@ -18,38 +18,42 @@ MOC_DIR = moc/win } INTERFACES = \ HEADERS = \ categoryeditdialog.h \ categoryeditdialog_base.h \ categoryselectdialog.h \ categoryselectdialog_base.h \ + externalapphandler.h \ kdateedit.h \ kdatepicker.h \ kinputdialog.h \ kincidenceformatter.h \ kpimprefs.h \ + kpimglobalprefs.h \ kprefsdialog.h \ addresseeview.h \ ksyncprofile.h \ ksyncprefsdialog.h \ kcmconfigs/kcmkdepimconfig.h \ kcmconfigs/kdepimconfigwidget.h SOURCES = \ categoryeditdialog.cpp \ categoryeditdialog_base.cpp \ categoryselectdialog.cpp \ categoryselectdialog_base.cpp \ + externalapphandler.cpp \ kdateedit.cpp \ kdatepicker.cpp \ kinputdialog.cpp \ kincidenceformatter.cpp \ kpimprefs.cpp \ + kpimglobalprefs.cpp \ kprefsdialog.cpp \ addresseeview.cpp \ ksyncprofile.cpp \ ksyncprefsdialog.cpp \ kcmconfigs/kcmkdepimconfig.cpp \ kcmconfigs/kdepimconfigwidget.cpp diff --git a/libkdepim/libkdepimE.pro b/libkdepim/libkdepimE.pro index fc8abe1..b322bce 100644 --- a/libkdepim/libkdepimE.pro +++ b/libkdepim/libkdepimE.pro @@ -12,38 +12,42 @@ DESTDIR=$(QPEDIR)/lib INTERFACES = \ HEADERS = \ categoryeditdialog.h \ categoryeditdialog_base.h \ categoryselectdialog.h \ categoryselectdialog_base.h \ + externalapphandler.h \ kdateedit.h \ kdatepicker.h \ kinputdialog.h \ kincidenceformatter.h \ kpimprefs.h \ + kpimglobalprefs.h \ kprefsdialog.h \ addresseeview.h \ ksyncprofile.h \ ksyncprefsdialog.h \ kcmconfigs/kcmkdepimconfig.h \ kcmconfigs/kdepimconfigwidget.h SOURCES = \ categoryeditdialog.cpp \ categoryeditdialog_base.cpp \ categoryselectdialog.cpp \ categoryselectdialog_base.cpp \ + externalapphandler.cpp \ kdateedit.cpp \ kinputdialog.cpp \ kdatepicker.cpp \ kincidenceformatter.cpp \ kpimprefs.cpp \ + kpimglobalprefs.cpp \ kprefsdialog.cpp \ addresseeview.cpp \ ksyncprofile.cpp \ ksyncprefsdialog.cpp \ kcmconfigs/kcmkdepimconfig.cpp \ kcmconfigs/kdepimconfigwidget.cpp |