From 52bce9f719537f0a4e44c2a706e01d7cc4d0136c Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 15 Nov 2010 14:03:10 -0700 Subject: [PATCH] Add button to easy configure Hotmail as email relay. Also improve usability of easy config buttons --- resources/images/hotmail.png | Bin 0 -> 2637 bytes src/calibre/gui2/__init__.py | 1 - src/calibre/gui2/wizard/send_email.py | 89 +++++++++++++++++++++----- src/calibre/gui2/wizard/send_email.ui | 20 ++++++ 4 files changed, 94 insertions(+), 16 deletions(-) create mode 100644 resources/images/hotmail.png diff --git a/resources/images/hotmail.png b/resources/images/hotmail.png new file mode 100644 index 0000000000000000000000000000000000000000..862b59c93341989da82cbd57825f134823cd3c09 GIT binary patch literal 2637 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 literal 0 HcmV?d00001 diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index 2f39a548ef..f035c40cb4 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -223,7 +223,6 @@ class MessageBox(QMessageBox): if default_button is not None: self.setDefaultButton(default_button) - def copy_to_clipboard(self): QApplication.clipboard().setText('%s: %s\n\n%s' % (self.title, self.msg, self.det_msg)) diff --git a/src/calibre/gui2/wizard/send_email.py b/src/calibre/gui2/wizard/send_email.py index 61b9c9f934..da9c21c864 100644 --- a/src/calibre/gui2/wizard/send_email.py +++ b/src/calibre/gui2/wizard/send_email.py @@ -8,13 +8,15 @@ __docformat__ = 'restructuredtext en' import cStringIO, sys from binascii import hexlify, unhexlify +from functools import partial -from PyQt4.Qt import QWidget, pyqtSignal, QDialog, Qt +from PyQt4.Qt import QWidget, pyqtSignal, QDialog, Qt, QLabel, \ + QLineEdit, QDialogButtonBox, QGridLayout, QCheckBox from calibre.gui2.wizard.send_email_ui import Ui_Form from calibre.utils.smtp import config as smtp_prefs from calibre.gui2.dialogs.test_email_ui import Ui_Dialog as TE_Dialog -from calibre.gui2 import error_dialog, info_dialog +from calibre.gui2 import error_dialog class TestEmail(QDialog, TE_Dialog): @@ -74,8 +76,9 @@ class SendEmail(QWidget, Ui_Form): (self.relay_tls if opts.encryption == 'TLS' else self.relay_ssl).setChecked(True) self.relay_tls.toggled.connect(self.changed) - self.relay_use_gmail.clicked.connect( - self.create_gmail_relay) + for x in ('gmail', 'hotmail'): + button = getattr(self, 'relay_use_'+x) + button.clicked.connect(partial(self.create_service_relay, x)) self.relay_show_password.stateChanged.connect( lambda state : self.relay_password.setEchoMode( self.relay_password.Password if @@ -114,19 +117,75 @@ class SendEmail(QWidget, Ui_Form): sys.stdout, sys.stderr = oout, oerr return tb - def create_gmail_relay(self, *args): - self.relay_username.setText('@gmail.com') - self.relay_password.setText('') - self.relay_host.setText('smtp.gmail.com') - self.relay_port.setValue(587) + def create_service_relay(self, service, *args): + service = { + 'gmail': { + 'name': 'Gmail', + 'relay': 'smtp.gmail.com', + 'port': 587, + 'username': '@gmail.com', + 'url': 'www.gmail.com', + }, + 'hotmail': { + 'name': 'Hotmail', + 'relay': 'smtp.live.com', + 'port': 587, + 'username': '', + 'url': 'www.hotmail.com', + } + }[service] + d = QDialog(self) + l = QGridLayout() + d.setLayout(l) + bb = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel) + bb.accepted.connect(d.accept) + bb.rejected.connect(d.reject) + d.tl = QLabel('

'+_('You can sign up for a free {name} email ' + 'account at http://{url}.').format( + **service)) + l.addWidget(d.tl, 0, 0, 3, 0) + d.tl.setWordWrap(True) + d.tl.setOpenExternalLinks(True) + for name, label in ( + ['from_', _('Your %s &email address:')], + ['username', _('Your %s &username:')], + ['password', _('Your %s &password:')], + ): + la = QLabel(label%service['name']) + le = QLineEdit(d) + setattr(d, name, le) + setattr(d, name+'_label', la) + r = l.rowCount() + l.addWidget(la, r, 0) + l.addWidget(le, r, 1) + la.setBuddy(le) + if name == 'password': + d.ptoggle = QCheckBox(_('&Show password'), d) + l.addWidget(d.ptoggle, r, 2) + d.ptoggle.stateChanged.connect( + lambda s: d.password.setEchoMode(d.password.Normal if s + == Qt.Checked else d.password.Password)) + d.username.setText(service['username']) + d.password.setEchoMode(d.password.Password) + d.bl = QLabel('

' + _( + 'If you plan to use email to send books to your Kindle, remember to' + ' add the your %s email address to the allowed email addresses in your ' + 'Amazon.com Kindle management page.')%service['name']) + d.bl.setWordWrap(True) + l.addWidget(d.bl, l.rowCount(), 0, 3, 0) + l.addWidget(bb, l.rowCount(), 0, 3, 0) + d.setWindowTitle(_('Setup') + ' ' + service['name']) + d.resize(d.sizeHint()) + bb.setVisible(True) + if d.exec_() != d.Accepted: + return + self.relay_username.setText(d.username.text()) + self.relay_password.setText(d.password.text()) + self.email_from.setText(d.from_.text()) + self.relay_host.setText(service['relay']) + self.relay_port.setValue(service['port']) self.relay_tls.setChecked(True) - info_dialog(self, _('Finish gmail setup'), - _('Dont forget to enter your gmail username and password. ' - 'You can sign up for a free gmail account at http://gmail.com')).exec_() - self.relay_username.setFocus(Qt.OtherFocusReason) - self.relay_username.setCursorPosition(0) - def set_email_settings(self, to_set): from_ = unicode(self.email_from.text()).strip() if to_set and not from_: diff --git a/src/calibre/gui2/wizard/send_email.ui b/src/calibre/gui2/wizard/send_email.ui index f248b8df89..ba6b6866e2 100644 --- a/src/calibre/gui2/wizard/send_email.ui +++ b/src/calibre/gui2/wizard/send_email.ui @@ -216,6 +216,26 @@ + + + + Use Hotmail + + + + :/images/hotmail.png:/images/hotmail.png + + + + 48 + 48 + + + + Qt::ToolButtonTextUnderIcon + + +