diff --git a/manage_series/book.py b/manage_series/book.py index dc84d0e..1b1295e 100644 --- a/manage_series/book.py +++ b/manage_series/book.py @@ -5,6 +5,7 @@ from calibre.ebooks.metadata.book.base import Metadata from calibre.utils.date import format_date +from calibre.utils.icu import sort_key def get_indent_for_index(series_index): if not series_index: @@ -159,11 +160,13 @@ def is_valid(self): def set_is_valid(self, is_valid_index): self._is_valid_index = is_valid_index - def sort_key(self, sort_by_pubdate=False, sort_by_name=False): + def sort_key(self, sort_by_pubdate=False, sort_by_name=False, sort_by_title=False): if sort_by_pubdate: pub_date = self.pubdate() if pub_date is not None and pub_date.year > 101: return format_date(pub_date, 'yyyyMMdd') + elif sort_by_title: + return sort_key(self.title()) else: series = self.orig_series_name() if series: diff --git a/manage_series/dialogs.py b/manage_series/dialogs.py index 1aec2d2..ddd7e04 100644 --- a/manage_series/dialogs.py +++ b/manage_series/dialogs.py @@ -201,7 +201,7 @@ def create_context_menu(self): sep2 = QAction(self) sep2.setSeparator(True) self.addAction(sep2) - for name in [_('PubDate'), _('Original Series Index'), _('Original Series Name')]: + for name in [_('PubDate'), _('Original Series Index'), _('Original Series Name'), _('Title')]: sort_action = QAction(_('Sort by')+' '+name, self) sort_action.setIcon(get_icon('images/sort.png')) sort_action.triggered.connect(partial(self.parent().sort_by, name)) @@ -741,6 +741,8 @@ def sort_by(self, name): self.books = sorted(self.books, key=lambda k: k.sort_key(sort_by_pubdate=True)) elif name == 'Original Series Name': self.books = sorted(self.books, key=lambda k: k.sort_key(sort_by_name=True)) + elif name == _('Title'): + self.books = sorted(self.books, key=lambda k: k.sort_key(sort_by_title=True)) else: self.books = sorted(self.books, key=lambda k: k.sort_key()) self.renumber_series()