diff --git a/src/calibre/library/catalog.py b/src/calibre/library/catalog.py index 89917650a8..aaa6e7c8a3 100644 --- a/src/calibre/library/catalog.py +++ b/src/calibre/library/catalog.py @@ -866,16 +866,22 @@ class EPUB_MOBI(CatalogPlugin): return property(fget=fget, fset=fset) @dynamic_property - def READ_SYMBOL(self): - def fget(self): - return '' if self.generateForKindle else \ - '%s' % self.opts.read_tag - return property(fget=fget) - @dynamic_property def NOT_READ_SYMBOL(self): def fget(self): - return '' if self.generateForKindle else \ - '%s' % self.opts.read_tag + return '' if self.generateForKindle else \ + '%s' % self.opts.read_tag + return property(fget=fget) + @dynamic_property + def READING_SYMBOL(self): + def fget(self): + return '' if self.generateForKindle else \ + '%s' % self.opts.read_tag + return property(fget=fget) + @dynamic_property + def READ_SYMBOL(self): + def fget(self): + return '' if self.generateForKindle else \ + '%s' % self.opts.read_tag return property(fget=fget) @dynamic_property def FULL_RATING_SYMBOL(self): @@ -1284,7 +1290,9 @@ class EPUB_MOBI(CatalogPlugin): d.initialize(self.opts.connected_device['save_template']) bookmarks = {} for book in self.booksByTitle: - myMeta = MetaInformation(book['title'], + original_title = book['title'][book['title'].find(':') + 2:] if book['series'] \ + else book['title'] + myMeta = MetaInformation(original_title, authors=book['authors']) myMeta.author_sort = book['author_sort'] bm_found = False @@ -1304,6 +1312,8 @@ class EPUB_MOBI(CatalogPlugin): break self.bookmarked_books = bookmarks + else: + self.bookmarked_books = {} def generateHTMLDescriptions(self): # Write each title to a separate HTML file in contentdir @@ -1549,12 +1559,16 @@ class EPUB_MOBI(CatalogPlugin): pBookTag = Tag(soup, "p") ptc = 0 - # Prefix book with read/unread symbol + # book with read/reading/unread symbol if book['read']: # check mark pBookTag.insert(ptc,NavigableString(self.READ_SYMBOL)) pBookTag['class'] = "read_book" ptc += 1 + elif book['id'] in self.bookmarked_books: + pBookTag.insert(ptc,NavigableString(self.READING_SYMBOL)) + pBookTag['class'] = "read_book" + ptc += 1 else: # hidden check mark pBookTag['class'] = "unread_book" @@ -1703,12 +1717,16 @@ class EPUB_MOBI(CatalogPlugin): pBookTag = Tag(soup, "p") ptc = 0 - # book with read/unread symbol + # book with read/reading/unread symbol if book['read']: # check mark pBookTag.insert(ptc,NavigableString(self.READ_SYMBOL)) pBookTag['class'] = "read_book" ptc += 1 + elif book['id'] in self.bookmarked_books: + pBookTag.insert(ptc,NavigableString(self.READING_SYMBOL)) + pBookTag['class'] = "read_book" + ptc += 1 else: # hidden check mark pBookTag['class'] = "unread_book" @@ -1816,12 +1834,16 @@ class EPUB_MOBI(CatalogPlugin): pBookTag = Tag(soup, "p") ptc = 0 - # Prefix book with read/unread symbol + # book with read/reading/unread symbol if new_entry['read']: # check mark pBookTag.insert(ptc,NavigableString(self.READ_SYMBOL)) pBookTag['class'] = "read_book" ptc += 1 + elif new_entry['id'] in self.bookmarked_books: + pBookTag.insert(ptc,NavigableString(self.READING_SYMBOL)) + pBookTag['class'] = "read_book" + ptc += 1 else: # hidden check mark pBookTag['class'] = "unread_book" @@ -1858,12 +1880,16 @@ class EPUB_MOBI(CatalogPlugin): pBookTag = Tag(soup, "p") ptc = 0 - # Prefix book with read/unread symbol + # book with read/reading/unread symbol if new_entry['read']: # check mark pBookTag.insert(ptc,NavigableString(self.READ_SYMBOL)) pBookTag['class'] = "read_book" ptc += 1 + elif new_entry['id'] in self.bookmarked_books: + pBookTag.insert(ptc,NavigableString(self.READING_SYMBOL)) + pBookTag['class'] = "read_book" + ptc += 1 else: # hidden check mark pBookTag['class'] = "unread_book" @@ -3528,14 +3554,21 @@ class EPUB_MOBI(CatalogPlugin): pBookTag = Tag(soup, "p") ptc = 0 - # Prefix book with read/unread symbol + # book with read/reading/unread symbol if book['read']: + # check mark pBookTag.insert(ptc,NavigableString(self.READ_SYMBOL)) pBookTag['class'] = "read_book" + ptc += 1 + elif book['id'] in self.bookmarked_books: + pBookTag.insert(ptc,NavigableString(self.READING_SYMBOL)) + pBookTag['class'] = "read_book" + ptc += 1 else: + # hidden check mark pBookTag['class'] = "unread_book" pBookTag.insert(ptc,NavigableString(self.NOT_READ_SYMBOL)) - ptc += 1 + ptc += 1 # Add the book title aTag = Tag(soup, "a")