Sharing by email: Add an option to insert the comments from the book metadata as text into the email. Useful to allow the recipient to see a summary of the book before opening it. The option is in Preferences->Sharing by email

This commit is contained in:
Kovid Goyal 2014-02-07 21:56:59 +05:30
parent 75f7fc5f0a
commit e95c878293
4 changed files with 21 additions and 3 deletions

View File

@ -122,6 +122,7 @@ defs['cover_grid_show_title'] = False
defs['cover_grid_texture'] = None defs['cover_grid_texture'] = None
defs['show_vl_tabs'] = False defs['show_vl_tabs'] = False
defs['show_highlight_toggle_button'] = False defs['show_highlight_toggle_button'] = False
defs['add_comments_to_email'] = False
del defs del defs
# }}} # }}}

View File

@ -6,7 +6,7 @@ __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import os, socket, time import os, socket, time, textwrap
from binascii import unhexlify from binascii import unhexlify
from functools import partial from functools import partial
from threading import Thread from threading import Thread
@ -23,7 +23,7 @@ from calibre.utils.filenames import ascii_filename
from calibre.customize.ui import available_input_formats, available_output_formats from calibre.customize.ui import available_input_formats, available_output_formats
from calibre.ebooks.metadata import authors_to_string from calibre.ebooks.metadata import authors_to_string
from calibre.constants import preferred_encoding from calibre.constants import preferred_encoding
from calibre.gui2 import config, Dispatcher, warning_dialog, error_dialog from calibre.gui2 import config, Dispatcher, warning_dialog, error_dialog, gprefs
from calibre.library.save_to_disk import get_components from calibre.library.save_to_disk import get_components
from calibre.utils.config import tweaks, prefs from calibre.utils.config import tweaks, prefs
from calibre.utils.icu import sort_key from calibre.utils.icu import sort_key
@ -382,6 +382,9 @@ class EmailMixin(object): # {{{
'\n\n' + t + '\n\t' + _('by') + ' ' + a + '\n\n' + '\n\n' + t + '\n\t' + _('by') + ' ' + a + '\n\n' +
_('in the %s format.') % _('in the %s format.') %
os.path.splitext(f)[1][1:].upper()) os.path.splitext(f)[1][1:].upper())
if mi.comments and gprefs['add_comments_to_email']:
from calibre.utils.html2text import html2text
texts[-1] += '\n\n' + _('About this book:') + '\n\n' + textwrap.fill(html2text(mi.comments))
prefix = ascii_filename(t+' - '+a) prefix = ascii_filename(t+' - '+a)
if not isinstance(prefix, unicode): if not isinstance(prefix, unicode):
prefix = prefix.decode(preferred_encoding, 'replace') prefix = prefix.decode(preferred_encoding, 'replace')

View File

@ -92,6 +92,18 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<widget class="QCheckBox" name="opt_add_comments_to_email">
<property name="toolTip">
<string>Add the comments from the book metadata to the email.
Useful to allow the recipient to see a summary of the
book before opening it.</string>
</property>
<property name="text">
<string>Add &amp;comments metadata as text to the email</string>
</property>
</widget>
</item>
<item> <item>
<widget class="SendEmail" name="send_email_widget" native="true"/> <widget class="SendEmail" name="send_email_widget" native="true"/>
</item> </item>

View File

@ -14,7 +14,7 @@ from calibre.gui2.preferences import ConfigWidgetBase, test_widget, \
AbortCommit AbortCommit
from calibre.gui2.preferences.email_ui import Ui_Form from calibre.gui2.preferences.email_ui import Ui_Form
from calibre.utils.config import ConfigProxy from calibre.utils.config import ConfigProxy
from calibre.gui2 import NONE from calibre.gui2 import NONE, gprefs
from calibre.utils.smtp import config as smtp_prefs from calibre.utils.smtp import config as smtp_prefs
class EmailAccounts(QAbstractTableModel): # {{{ class EmailAccounts(QAbstractTableModel): # {{{
@ -163,6 +163,8 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
def genesis(self, gui): def genesis(self, gui):
self.gui = gui self.gui = gui
self.proxy = ConfigProxy(smtp_prefs()) self.proxy = ConfigProxy(smtp_prefs())
r = self.register
r('add_comments_to_email', gprefs)
self.send_email_widget.initialize(self.preferred_to_address) self.send_email_widget.initialize(self.preferred_to_address)
self.send_email_widget.changed_signal.connect(self.changed_signal.emit) self.send_email_widget.changed_signal.connect(self.changed_signal.emit)