--Boundary-00=_VogL9479Az44Qfw Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hi, I've made a patch to improve the usability of the SMTP configuration page i= n=20 kscd. I'd appreciate feedback on whether you think these changes are=20 sensible. Here's what I don't like about the existing config page: 1) The page provides 4 edit boxes for you to type in your email address and= =20 SMTP server information. You can only type into 1 of these boxes - the othe= r=20 3 are read-only, even though they are not "grayed out"! The only way these= =20 read-only boxes can be filled in is to enter details into the KDE Control=20 Centre's Network->Email config page. I found this *most* confusing! 2) The "Current Email Profile" droplist is redundant because you can only s= et=20 up a single email profile in the KDE Control Centre. My patch removes the "Current Email Profile" droplist and makes all the edi= t=20 boxes editable. Default settings are taken from the KDE Control Centre if=20 they are available, but it is no longer compulsory to enter information int= o=20 the Control Centre. Let me know what you think. Cheers, Dave --Boundary-00=_VogL9479Az44Qfw Content-Type: text/x-diff; charset="us-ascii"; name="emailsettings.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="emailsettings.patch" Index: kscd.cpp =================================================================== RCS file: /home/kde/kdemultimedia/kscd/kscd.cpp,v retrieving revision 1.158 diff -u -3 -p -r1.158 kscd.cpp --- kscd.cpp 2002/07/07 10:25:07 1.158 +++ kscd.cpp 2002/07/07 22:49:06 @@ -1708,21 +1708,30 @@ KSCD::readSettings() config->setGroup("SMTP"); smtpConfigData->enabled = config->readBoolEntry("enabled", true); - smtpConfigData->mailProfile = config->readEntry("mailProfile", i18n("Default")); + smtpConfigData->serverHost = config->readEntry("serverHost"); + smtpConfigData->serverPort = config->readEntry("serverPort"); + smtpConfigData->senderAddress = config->readEntry("senderAddress"); + smtpConfigData->senderReplyTo = config->readEntry("senderReplyTo"); - // Same as follows happens in smtpconfig.cpp. Try to remove one. - KEMailSettings kes; - kes.setProfile( smtpConfigData->mailProfile ); - smtpConfigData->serverHost = kes.getSetting( KEMailSettings::OutServer ); - smtpConfigData->serverPort = "25"; - smtpConfigData->senderAddress = kes.getSetting( KEMailSettings::EmailAddress ); - smtpConfigData->senderReplyTo = kes.getSetting( KEMailSettings::ReplyToAddress ); - // Don't accept obviously bogus settings. - if( (smtpConfigData->serverHost == "") || (!smtpConfigData->senderAddress.contains("@")) ) + if( smtpConfigData->serverHost.isNull() && smtpConfigData->serverPort.isNull() && + smtpConfigData->senderAddress.isNull() && smtpConfigData->senderReplyTo.isNull() ) { - smtpConfigData->enabled = false; + // Support for legacy mailProfile option + QString mailProfile = config->readEntry("mailProfile", i18n("Default")); + + // Attempt to pull default settings from Control Centre + KEMailSettings kes; + kes.setProfile( mailProfile ); + smtpConfigData->serverHost = kes.getSetting( KEMailSettings::OutServer ); + smtpConfigData->serverPort = "25"; + smtpConfigData->senderAddress = kes.getSetting( KEMailSettings::EmailAddress ); + smtpConfigData->senderReplyTo = kes.getSetting( KEMailSettings::ReplyToAddress ); } + // Don't accept obviously bogus settings. + if(!smtpConfigData->isValid()) + smtpConfigData->enabled = false; + config->setGroup("CDDB"); cddb.setTimeout(config->readNumEntry("CDDBTimeout",60)); @@ -1828,7 +1837,12 @@ KSCD::writeSettings() config->setGroup("SMTP"); config->writeEntry("enabled", smtpConfigData->enabled); - config->writeEntry("mailProfile", smtpConfigData->mailProfile); + config->writeEntry("serverHost", smtpConfigData->serverHost); + config->writeEntry("serverPort", smtpConfigData->serverPort); + config->writeEntry("senderAddress", smtpConfigData->senderAddress); + config->writeEntry("senderReplyTo", smtpConfigData->senderReplyTo); + // delete legacy mailProfile option + config->deleteEntry("mailProfile"); config->setGroup("CDDB"); config->writeEntry("CDDBRemoteEnabled",cddb_remote_enabled); Index: smtpconfig.h =================================================================== RCS file: /home/kde/kdemultimedia/kscd/smtpconfig.h,v retrieving revision 1.6 diff -u -3 -p -r1.6 smtpconfig.h --- smtpconfig.h 2002/01/11 03:27:02 1.6 +++ smtpconfig.h 2002/07/07 22:49:06 @@ -41,7 +41,14 @@ struct SMTPConfigData QString serverPort; QString senderAddress; QString senderReplyTo; - QString mailProfile; + + bool isValid() const + { + // simple validation + return !serverHost.isEmpty() && !serverPort.isEmpty() && + senderAddress.contains("@") && + (senderReplyTo.contains("@") || senderReplyTo.isEmpty()); + } }; class SMTPConfig:public QWidget @@ -55,15 +62,12 @@ public: public slots: void commitData(); void enableClicked(); - void mailProfileChanged(const QString &name); signals: protected: QGroupBox *mainBox; QCheckBox *enableCB; - QLabel *mailProfileLabel; - KComboBox *mailProfileCombo; QLabel *serverHostLabel; QLineEdit *serverHostEdit; QLabel *serverPortLabel; @@ -72,7 +76,8 @@ protected: QLineEdit *senderAddressEdit; QLabel *senderReplyToLabel; QLineEdit *senderReplyToEdit; - KEMailSettings *kes; + + void enableWidgets(bool enable = true); private: SMTPConfigData *configData; Index: smtpconfig.cpp =================================================================== RCS file: /home/kde/kdemultimedia/kscd/smtpconfig.cpp,v retrieving revision 1.17 diff -u -3 -p -r1.17 smtpconfig.cpp --- smtpconfig.cpp 2002/07/07 21:02:28 1.17 +++ smtpconfig.cpp 2002/07/07 22:49:06 @@ -29,6 +29,7 @@ #include #include +#include #include #include @@ -38,20 +39,7 @@ SMTPConfig::SMTPConfig(QWidget *parent, { configData = _configData; QFontMetrics fm ( font() ); - kes = new KEMailSettings(); - kes->setProfile( configData->mailProfile ); - configData->serverHost = kes->getSetting( KEMailSettings::OutServer ); - configData->serverPort = "25"; - configData->senderAddress = kes->getSetting( KEMailSettings::EmailAddress ); - configData->senderReplyTo = kes->getSetting( KEMailSettings::ReplyToAddress ); - // Don't accept obviously bogus settings. - if( (configData->serverHost == "") || (!configData->senderAddress.contains("@"))) - { - configData->enabled = false; - } - - QBoxLayout * lay1 = new QVBoxLayout ( this ); mainBox = new QGroupBox(this, "mainBox"); lay1->addWidget ( mainBox ); @@ -65,99 +53,68 @@ SMTPConfig::SMTPConfig(QWidget *parent, QGridLayout * glay = new QGridLayout ( lay2, 2, 4, 5 ); glay->setColStretch ( 1, 1 ); - mailProfileLabel = new QLabel(i18n("Current email profile:"), mainBox, "mailProfileLabel"); - glay->addWidget ( mailProfileLabel, 0, 0 ); - mailProfileCombo = new KComboBox( FALSE, mainBox, "mailProfileCombo" ); - glay->addMultiCellWidget( mailProfileCombo, 0,0, 1,3); - mailProfileCombo->insertStringList(kes->profiles()); - mailProfileCombo->setEnabled(configData->enabled); - connect(mailProfileCombo, SIGNAL(activated(const QString &)), this, SLOT(mailProfileChanged(const QString &))); - // *yuck* - int i = 0; - for( i=0; i < mailProfileCombo->count(); i++ ) - { - if( configData->mailProfile == mailProfileCombo->text(i) ) - { - mailProfileCombo->setCurrentItem( i ); - } - } - serverHostLabel = new QLabel(i18n("SMTP address:port :"), mainBox, "serverHostLabel"); glay->addWidget ( serverHostLabel, 1, 0 ); serverHostEdit = new QLineEdit(mainBox, "serverHostEdit"); glay->addWidget ( serverHostEdit, 1, 1 ); serverHostEdit->setText(configData->serverHost); - serverHostEdit->setEnabled(configData->enabled); serverPortLabel = new QLabel(":", mainBox, "serverPortLabel"); glay->addWidget ( serverPortLabel, 1, 2 ); serverPortEdit = new QLineEdit(mainBox, "serverPortEdit"); serverPortEdit->setFixedWidth ( 5 * fm.maxWidth() ); + serverPortEdit->setValidator( new QIntValidator(this) ); glay->addWidget ( serverPortEdit, 1, 3 ); serverPortEdit->setGeometry(475, 40, 45, 25); serverPortEdit->setText(configData->serverPort); - serverPortEdit->setEnabled(configData->enabled); - serverPortEdit->setReadOnly( true ); senderAddressLabel = new QLabel(i18n("Your email address:"), mainBox, "senderAddressLabel"); glay->addWidget ( senderAddressLabel, 2, 0 ); senderAddressEdit = new QLineEdit(mainBox, "senderAddressEdit"); glay->addMultiCellWidget ( senderAddressEdit, 2,2, 1,3 ); senderAddressEdit->setText(configData->senderAddress); - senderAddressEdit->setEnabled(configData->enabled); - senderAddressEdit->setReadOnly( true ); senderReplyToLabel = new QLabel(i18n("Your reply address:"), mainBox, "senderReplyToLabel"); glay->addWidget ( senderReplyToLabel, 3, 0 ); senderReplyToEdit = new QLineEdit(mainBox, "senderReplyToEdit"); glay->addMultiCellWidget ( senderReplyToEdit, 3,3, 1,3 ); senderReplyToEdit->setText(configData->senderReplyTo); - senderReplyToEdit->setEnabled(configData->enabled); - senderReplyToEdit->setReadOnly( true ); lay1->addStretch ( 1 ); + + enableWidgets(configData->enabled); } void SMTPConfig::commitData(void) { configData->enabled = enableCB->isChecked(); configData->serverHost = serverHostEdit->text(); - kes->setSetting( KEMailSettings::OutServer, serverHostEdit->text() ); configData->serverPort = serverPortEdit->text(); configData->senderAddress = senderAddressEdit->text(); configData->senderReplyTo = senderReplyToEdit->text(); - configData->mailProfile = mailProfileCombo->currentText(); - if( configData->enabled && ( (configData->serverHost == "") || - (!configData->senderAddress.contains("@")) ) ) + if( configData->enabled && !configData->isValid() ) { KMessageBox::sorry(this, i18n("freedb submissions via SMTP have been disabled\n" - "because the email profile you selected is\n" + "because the email details you have entered are\n" "incomplete. Please review your email settings\n" "and try again."), i18n("Freedb Submissions Disabled")); configData->enabled = false; + enableCB->setChecked(false); + enableWidgets(false); } } // commitData void SMTPConfig::enableClicked(void) { - bool c; - - c = enableCB->isChecked(); - mailProfileCombo->setEnabled(c); - serverHostEdit->setEnabled(c); - serverPortEdit->setEnabled(c); - senderAddressEdit->setEnabled(c); - senderReplyToEdit->setEnabled(c); + enableWidgets(enableCB->isChecked()); } // enableClicked + -void SMTPConfig::mailProfileChanged( const QString &name ) +void SMTPConfig::enableWidgets(bool enable) { - kes->setProfile( name ); - configData->serverHost = kes->getSetting( KEMailSettings::OutServer ); - configData->senderAddress = kes->getSetting( KEMailSettings::EmailAddress ); - configData->senderReplyTo = kes->getSetting( KEMailSettings::ReplyToAddress ); - serverHostEdit->setText( configData->serverHost ); - senderAddressEdit->setText( configData->senderAddress ); - senderReplyToEdit->setText( configData->senderReplyTo ); -} // mailProfileChanged + serverHostEdit->setEnabled(enable); + serverPortEdit->setEnabled(enable); + senderAddressEdit->setEnabled(enable); + senderReplyToEdit->setEnabled(enable); +} // enableWidgets #include --Boundary-00=_VogL9479Az44Qfw-- _______________________________________________ kde-usability mailing list kde-usability@mail.kde.org http://mail.kde.org/mailman/listinfo/kde-usability