Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/GetIABooksActivity.py
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@sugarlabs.org>2011-03-29 19:36:16 (GMT)
committer Gonzalo Odiard <godiard@sugarlabs.org>2011-03-29 19:36:16 (GMT)
commit23925f5ad457918abde1272855108ffe90a909cf (patch)
treecd679a60787292c8f9d7884c4bf0e6d3dcc0fe89 /GetIABooksActivity.py
parent515c850541c06fb9e482cef99a91aaec43bd2007 (diff)
Initial support to see the list of books in the journal
See properties and cover is not implemented.
Diffstat (limited to 'GetIABooksActivity.py')
-rwxr-xr-xGetIABooksActivity.py103
1 files changed, 85 insertions, 18 deletions
diff --git a/GetIABooksActivity.py b/GetIABooksActivity.py
index abbf6fe..380633f 100755
--- a/GetIABooksActivity.py
+++ b/GetIABooksActivity.py
@@ -286,6 +286,13 @@ class GetIABooksActivity(activity.Activity):
for key in _SOURCES.keys():
toolbar.source_combo.append_item(_SOURCES[key], key)
+ # Add menu for local books
+ if len(_SOURCES) > 0:
+ toolbar.source_combo.append_separator()
+ toolbar.source_combo.append_item('local_books', _('My books'),
+ icon_name='computer-xo')
+
+ # TODO: I don't know how work the devices section
devices = self._device_manager.get_devices()
if len(devices):
@@ -437,15 +444,18 @@ class GetIABooksActivity(activity.Activity):
self.msg_label.hide()
def show_book_data(self):
+ self.selected_source = self._books_toolbar.source_combo.props.value
self.selected_title = self.selected_book.get_title()
book_data = _('Title:\t\t') + self.selected_title + '\n\n'
self.selected_author = self.selected_book.get_author()
book_data += _('Author:\t\t') + self.selected_author + '\n\n'
self.selected_publisher = self.selected_book.get_publisher()
book_data += _('Publisher:\t') + self.selected_publisher + '\n\n'
- book_data += _('Language:\t') + \
- self._lang_code_handler.get_full_language_name(
- self.selected_book.get_language()) + '\n\n'
+ self.selected_language_code = self.selected_book.get_language()
+ self.selected_language = \
+ self._lang_code_handler.get_full_language_name(
+ self.selected_book.get_language())
+ book_data += _('Language:\t') + self.selected_language + '\n\n'
self.download_url = self.selected_book.get_download_links()[\
self.format_combo.props.value]
book_data += _('Link:\t\t') + self.download_url
@@ -552,24 +562,29 @@ class GetIABooksActivity(activity.Activity):
self.queryresults.cancel()
self.queryresults = None
- if search_text is None:
- return
- elif len(search_text) < 3:
- self.show_message(_('You must enter at least 3 letters.'))
- self._books_toolbar.search_entry.grab_focus()
- return
-
- if source in _SOURCES_CONFIG:
- repo_configuration = _SOURCES_CONFIG[source]
- self.queryresults = opds.RemoteQueryResult(repo_configuration,
- search_text, query_language, self.window)
+ logging.error('find books source = %s', source)
+ if source == 'local_books':
+ self.listview.populate_with_books(
+ self.get_entrys_info(search_text))
else:
- self.queryresults = opds.LocalVolumeQueryResult( \
- source, search_text, self.window)
+ if search_text is None:
+ return
+ elif len(search_text) < 3:
+ self.show_message(_('You must enter at least 3 letters.'))
+ self._books_toolbar.search_entry.grab_focus()
+ return
+
+ if source in _SOURCES_CONFIG:
+ repo_configuration = _SOURCES_CONFIG[source]
+ self.queryresults = opds.RemoteQueryResult(repo_configuration,
+ search_text, query_language, self.window)
+ else:
+ self.queryresults = opds.LocalVolumeQueryResult( \
+ source, search_text, self.window)
- self.show_message(_('Performing lookup, please wait...'))
+ self.show_message(_('Performing lookup, please wait...'))
- self.queryresults.connect('updated', self.__query_updated_cb)
+ self.queryresults.connect('updated', self.__query_updated_cb)
def __query_updated_cb(self, query, midway):
self.listview.populate(self.queryresults)
@@ -714,6 +729,14 @@ class GetIABooksActivity(activity.Activity):
textbuffer.get_end_iter())
if self.exist_cover_image:
journal_entry.metadata['preview'] = self._get_preview_image()
+ journal_entry.metadata['cover_image'] = self._get_preview_image()
+ else:
+ journal_entry.metadata['cover_image'] = ""
+
+ journal_entry.metadata['tags'] = self.selected_source
+ journal_entry.metadata['author'] = self.selected_author
+ journal_entry.metadata['publisher'] = self.selected_publisher
+ journal_entry.metadata['language'] = self.selected_language_code
journal_entry.file_path = tempfile
datastore.write(journal_entry)
@@ -774,3 +797,47 @@ class GetIABooksActivity(activity.Activity):
def _alert_cancel_cb(self, alert, response_id):
self.remove_alert(alert)
self.textview.grab_focus()
+
+ def get_entrys_info(self, query):
+ books_pdf = self.get_entry_info_format(query, _MIMETYPES['PDF'])
+ books_epub = self.get_entry_info_format(query, _MIMETYPES['EPUB'])
+ return books_pdf + books_epub
+
+ def get_entry_info_format(self, query, format):
+ books = []
+ if query is not None:
+ ds_objects, num_objects = datastore.find(
+ {'mime_type': '%s' % format,
+ 'query': '*%s*' % query})
+ else:
+ ds_objects, num_objects = datastore.find(
+ {'mime_type': '%s' % format})
+
+ logging.error('Local search %d books found', num_objects)
+ for i in range(0, num_objects):
+ entry = {}
+ logging.error('title %s', ds_objects[i].metadata['title'])
+ logging.error('mime %s', ds_objects[i].metadata['mime_type'])
+ entry['title'] = ds_objects[i].metadata['title']
+ entry['mime'] = ds_objects[i].metadata['mime_type']
+ entry['object_id'] = ds_objects[i].object_id
+
+ if 'author' in ds_objects[i].metadata:
+ entry['author'] = ds_objects[i].metadata['author']
+ else:
+ entry['author'] = ''
+
+ if 'publisher' in ds_objects[i].metadata:
+ entry['dcterms_publisher'] = \
+ ds_objects[i].metadata['publisher']
+ else:
+ entry['dcterms_publisher'] = ''
+
+ if 'language' in ds_objects[i].metadata:
+ entry['dcterms_language'] = \
+ ds_objects[i].metadata['language']
+ else:
+ entry['dcterms_language'] = ''
+
+ books.append(opds.Book(None, entry, ''))
+ return books