Add plugin options to mark success/failed/chapter error individually.

This commit is contained in:
Jim Miller 2021-01-18 11:05:30 -06:00
parent 4b8392bb22
commit d9ae30cfe3
3 changed files with 55 additions and 16 deletions

View file

@ -5,7 +5,7 @@ from __future__ import (unicode_literals, division, absolute_import,
import six
__license__ = 'GPL v3'
__copyright__ = '2020, Jim Miller'
__copyright__ = '2021, Jim Miller'
__docformat__ = 'restructuredtext en'
import logging
@ -284,6 +284,9 @@ class ConfigWidget(QWidget):
prefs['updateepubcover'] = self.basic_tab.updateepubcover.isChecked()
prefs['keeptags'] = self.basic_tab.keeptags.isChecked()
prefs['mark'] = self.basic_tab.mark.isChecked()
prefs['mark_success'] = self.basic_tab.mark_success.isChecked()
prefs['mark_failed'] = self.basic_tab.mark_failed.isChecked()
prefs['mark_chapter_error'] = self.basic_tab.mark_chapter_error.isChecked()
prefs['showmarked'] = self.basic_tab.showmarked.isChecked()
prefs['autoconvert'] = self.basic_tab.autoconvert.isChecked()
prefs['show_est_time'] = self.basic_tab.show_est_time.isChecked()
@ -541,6 +544,35 @@ class BasicTab(QWidget):
self.mark.setChecked(prefs['mark'])
self.l.addWidget(self.mark)
horz = QHBoxLayout()
horz.addItem(QtGui.QSpacerItem(20, 1))
self.l.addLayout(horz)
self.mark_success = QCheckBox(_("Success"),self)
self.mark_success.setToolTip(_("Mark successfully downloaded or updated books."))
self.mark_success.setChecked(prefs['mark_success'])
self.mark_success.setEnabled(self.checkforseriesurlid.isChecked())
horz.addWidget(self.mark_success)
self.mark_failed = QCheckBox(_("Failed"),self)
self.mark_failed.setToolTip(_("Mark failed downloaded or updated books."))
self.mark_failed.setChecked(prefs['mark_failed'])
self.mark_failed.setEnabled(self.checkforseriesurlid.isChecked())
horz.addWidget(self.mark_failed)
self.mark_chapter_error = QCheckBox(_("Chapter Error"),self)
self.mark_chapter_error.setToolTip(_("Mark downloaded or updated books with chapter errors (only when <i>continue_on_chapter_error:true</i>)."))
self.mark_chapter_error.setChecked(prefs['mark_chapter_error'])
self.mark_chapter_error.setEnabled(self.checkforseriesurlid.isChecked())
horz.addWidget(self.mark_chapter_error)
def mark_state():
self.mark_success.setEnabled(self.mark.isChecked())
self.mark_failed.setEnabled(self.mark.isChecked())
self.mark_chapter_error.setEnabled(self.mark.isChecked())
self.mark.stateChanged.connect(mark_state)
mark_state()
self.showmarked = QCheckBox(_("Show Marked books when finished?"),self)
self.showmarked.setToolTip(_("Show Marked added/updated books only when finished.\nYou can also manually search for 'marked:fff_success'.\n'marked:fff_failed' and 'marked:fff_chapter_error' are also available, or search 'marked:fff' for all."))
self.showmarked.setChecked(prefs['showmarked'])

View file

@ -6,7 +6,7 @@ import six
from six.moves import range
__license__ = 'GPL v3'
__copyright__ = '2020, Jim Miller'
__copyright__ = '2021, Jim Miller'
__docformat__ = 'restructuredtext en'
from .fanficfare.six import ensure_text, string_types, text_type as unicode
@ -1800,20 +1800,24 @@ class FanFicFarePlugin(InterfaceAction):
db = self.gui.current_db
marked_ids = dict()
marked_text = "fff"
for index, book_id in enumerate(all_ids):
marked_ids[book_id] = '%s_success_%04d' % (marked_text, index)
for index, book_id in enumerate(failed_ids):
marked_ids[book_id] = '%s_failed_%04d' % (marked_text, index)
for index, book_id in enumerate(chapter_error_ids):
marked_ids[book_id] = '%s_chapter_error_%04d' % (marked_text, index)
# Mark the results in our database
db.set_marked_ids(marked_ids)
if prefs['mark_success']:
for index, book_id in enumerate(all_ids):
marked_ids[book_id] = '%s_success_%04d' % (marked_text, index)
if prefs['mark_failed']:
for index, book_id in enumerate(failed_ids):
marked_ids[book_id] = '%s_failed_%04d' % (marked_text, index)
if prefs['mark_chapter_error']:
for index, book_id in enumerate(chapter_error_ids):
marked_ids[book_id] = '%s_chapter_error_%04d' % (marked_text, index)
if marked_ids:
# Mark the results in our database
db.set_marked_ids(marked_ids)
if prefs['showmarked']: # show add/update
# Search to display the list contents
self.gui.search.set_search_string('marked:' + marked_text)
# Sort by our marked column to display the books in order
self.gui.library_view.sort_by_named_field('marked', True)
if prefs['showmarked']: # show add/update
# Search to display the list contents
self.gui.search.set_search_string('marked:' + marked_text)
# Sort by our marked column to display the books in order
self.gui.library_view.sort_by_named_field('marked', True)
logger.debug(_('Finished Adding/Updating %d books.')%(len(update_list) + len(add_list)))
self.gui.status_bar.show_message(_('Finished Adding/Updating %d books.')%(len(update_list) + len(add_list)), 3000)

View file

@ -4,7 +4,7 @@ from __future__ import (unicode_literals, division, absolute_import,
print_function)
__license__ = 'GPL v3'
__copyright__ = '2020, Jim Miller'
__copyright__ = '2021, Jim Miller'
__docformat__ = 'restructuredtext en'
import logging
@ -132,6 +132,9 @@ default_prefs['authorcase'] = False
default_prefs['titlecase'] = False
default_prefs['setanthologyseries'] = False
default_prefs['mark'] = False
default_prefs['mark_success'] = True
default_prefs['mark_failed'] = True
default_prefs['mark_chapter_error'] = True
default_prefs['showmarked'] = False
default_prefs['autoconvert'] = False
default_prefs['urlsfromclip'] = True