mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Bug 1635909: Migration of very old KoboTouch settings broken
If the KoboTouch driver or subclasses had settings saved from a very long time ago, they did not migrate to the new configuration properly. This fixes the migration if the last or the last two options are missing.
This commit is contained in:
parent
f317b05c84
commit
3ecbe26d15
@ -65,7 +65,7 @@ class KOBO(USBMS):
|
|||||||
gui_name = 'Kobo Reader'
|
gui_name = 'Kobo Reader'
|
||||||
description = _('Communicate with the Kobo Reader')
|
description = _('Communicate with the Kobo Reader')
|
||||||
author = 'Timothy Legge and David Forrester'
|
author = 'Timothy Legge and David Forrester'
|
||||||
version = (2, 3, 1)
|
version = (2, 3, 2)
|
||||||
|
|
||||||
dbversion = 0
|
dbversion = 0
|
||||||
fwversion = (0,0,0)
|
fwversion = (0,0,0)
|
||||||
@ -3098,6 +3098,7 @@ class KOBOTOUCH(KOBO):
|
|||||||
def migrate_old_settings(cls, settings):
|
def migrate_old_settings(cls, settings):
|
||||||
debug_print("KoboTouch::migrate_old_settings - start")
|
debug_print("KoboTouch::migrate_old_settings - start")
|
||||||
debug_print("KoboTouch::migrate_old_settings - settings.extra_customization=", settings.extra_customization)
|
debug_print("KoboTouch::migrate_old_settings - settings.extra_customization=", settings.extra_customization)
|
||||||
|
debug_print("KoboTouch::migrate_old_settings - For class=", cls.name)
|
||||||
|
|
||||||
count_options = 0
|
count_options = 0
|
||||||
OPT_COLLECTIONS = count_options
|
OPT_COLLECTIONS = count_options
|
||||||
@ -3126,7 +3127,10 @@ class KOBOTOUCH(KOBO):
|
|||||||
count_options += 1
|
count_options += 1
|
||||||
OPT_DEBUGGING_TITLE = count_options
|
OPT_DEBUGGING_TITLE = count_options
|
||||||
|
|
||||||
if len(settings.extra_customization) >= count_options:
|
# Always migrate options if for the KoboTouch class.
|
||||||
|
# For a subclass, only migrate the KoboTouch options if they haven't already been migrated. This is based on
|
||||||
|
# the total number of options.
|
||||||
|
if cls == KOBOTOUCH or len(settings.extra_customization) >= count_options:
|
||||||
config = cls._config()
|
config = cls._config()
|
||||||
debug_print("KoboTouch::migrate_old_settings - config.preferences=", config.preferences)
|
debug_print("KoboTouch::migrate_old_settings - config.preferences=", config.preferences)
|
||||||
debug_print("KoboTouch::migrate_old_settings - settings need to be migrated")
|
debug_print("KoboTouch::migrate_old_settings - settings need to be migrated")
|
||||||
@ -3144,20 +3148,37 @@ class KOBOTOUCH(KOBO):
|
|||||||
settings.show_previews = settings.extra_customization[OPT_SHOW_PREVIEWS]
|
settings.show_previews = settings.extra_customization[OPT_SHOW_PREVIEWS]
|
||||||
settings.show_recommendations = settings.extra_customization[OPT_SHOW_RECOMMENDATIONS]
|
settings.show_recommendations = settings.extra_customization[OPT_SHOW_RECOMMENDATIONS]
|
||||||
|
|
||||||
settings.update_series = settings.extra_customization[OPT_UPDATE_SERIES_DETAILS]
|
# If the configuration hasn't been change for a long time, the last few option will be out
|
||||||
settings.update_metadata = settings.update_series
|
# of sync. The last two options aare always the support newer firmware and the debugging
|
||||||
|
# title. Set seties and Modify CSS were the last two new options. The debugging title is
|
||||||
# Check if these are very old settings.
|
# a string, so looking for that.
|
||||||
if len(settings.extra_customization) == count_options:
|
start_subclass_extra_options = OPT_MODIFY_CSS
|
||||||
config = cls._config()
|
debugging_title = ''
|
||||||
settings.modify_css = config.get_option('modify_css')
|
if isinstance(settings.extra_customization[OPT_MODIFY_CSS], basestring):
|
||||||
settings.support_newer_firmware = settings.extra_customization[OPT_SUPPORT_NEWER_FIRMWARE - 1]
|
debug_print("KoboTouch::migrate_old_settings - Don't have update_series option")
|
||||||
settings.debugging_title = settings.extra_customization[OPT_DEBUGGING_TITLE - 1]
|
settings.update_series = config.get_option('update_series').default
|
||||||
|
settings.modify_css = config.get_option('modify_css').default
|
||||||
|
settings.support_newer_firmware = settings.extra_customization[OPT_UPDATE_SERIES_DETAILS]
|
||||||
|
debugging_title = settings.extra_customization[OPT_MODIFY_CSS]
|
||||||
|
start_subclass_extra_options = OPT_MODIFY_CSS + 1
|
||||||
|
elif isinstance(settings.extra_customization[OPT_SUPPORT_NEWER_FIRMWARE], basestring):
|
||||||
|
debug_print("KoboTouch::migrate_old_settings - Don't have modify_css option")
|
||||||
|
settings.update_series = settings.extra_customization[OPT_UPDATE_SERIES_DETAILS]
|
||||||
|
settings.modify_css = config.get_option('modify_css').default
|
||||||
|
settings.support_newer_firmware = settings.extra_customization[OPT_MODIFY_CSS]
|
||||||
|
debugging_title = settings.extra_customization[OPT_SUPPORT_NEWER_FIRMWARE]
|
||||||
|
start_subclass_extra_options = OPT_SUPPORT_NEWER_FIRMWARE + 1
|
||||||
else:
|
else:
|
||||||
|
debug_print("KoboTouch::migrate_old_settings - Have all options")
|
||||||
|
settings.update_series = settings.extra_customization[OPT_UPDATE_SERIES_DETAILS]
|
||||||
settings.modify_css = settings.extra_customization[OPT_MODIFY_CSS]
|
settings.modify_css = settings.extra_customization[OPT_MODIFY_CSS]
|
||||||
settings.support_newer_firmware = settings.extra_customization[OPT_SUPPORT_NEWER_FIRMWARE]
|
settings.support_newer_firmware = settings.extra_customization[OPT_SUPPORT_NEWER_FIRMWARE]
|
||||||
settings.debugging_title = settings.extra_customization[OPT_DEBUGGING_TITLE]
|
debugging_title = settings.extra_customization[OPT_DEBUGGING_TITLE]
|
||||||
settings.extra_customization = settings.extra_customization[count_options + 1:]
|
start_subclass_extra_options = OPT_DEBUGGING_TITLE + 1
|
||||||
|
|
||||||
|
settings.debugging_title = debugging_title if isinstance(debugging_title, basestring) else ''
|
||||||
|
settings.update_device_metadata = settings.update_series
|
||||||
|
settings.extra_customization = settings.extra_customization[start_subclass_extra_options:]
|
||||||
|
|
||||||
return settings
|
return settings
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user