From b65b295dd95146fd8396c570bb076ac50633f77b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 4 Feb 2012 10:16:45 +0530 Subject: [PATCH] Add entries to the welcome wizard for using the Kindle reader app on an Android device --- src/calibre/customize/ui.py | 4 ++-- src/calibre/devices/android/driver.py | 14 ++++++++++++ src/calibre/gui2/wizard/__init__.py | 33 +++++++++++++++++++++++---- src/calibre/utils/config_base.py | 3 +++ 4 files changed, 48 insertions(+), 6 deletions(-) diff --git a/src/calibre/customize/ui.py b/src/calibre/customize/ui.py index e309533235..25e85e8788 100644 --- a/src/calibre/customize/ui.py +++ b/src/calibre/customize/ui.py @@ -447,10 +447,10 @@ def plugin_for_catalog_format(fmt): # }}} -def device_plugins(): # {{{ +def device_plugins(include_disabled=False): # {{{ for plugin in _initialized_plugins: if isinstance(plugin, DevicePlugin): - if not is_disabled(plugin): + if include_disabled or not is_disabled(plugin): if platform in plugin.supported_platforms: yield plugin # }}} diff --git a/src/calibre/devices/android/driver.py b/src/calibre/devices/android/driver.py index 210b277788..eca9b2a679 100644 --- a/src/calibre/devices/android/driver.py +++ b/src/calibre/devices/android/driver.py @@ -221,6 +221,20 @@ class ANDROID(USBMS): drives['main'] = letter_a return drives + @classmethod + def configure_for_kindle_app(cls): + proxy = cls._configProxy() + proxy['format_map'] = ['mobi', 'azw', 'azw1', 'azw4', 'pdf'] + proxy['use_subdirs'] = False + proxy['extra_customization'] = ','.join(['kindle']+cls.EBOOK_DIR_MAIN) + + @classmethod + def configure_for_generic_epub_app(cls): + proxy = cls._configProxy() + del proxy['format_map'] + del proxy['use_subdirs'] + del proxy['extra_customization'] + class S60(USBMS): name = 'S60 driver' diff --git a/src/calibre/gui2/wizard/__init__.py b/src/calibre/gui2/wizard/__init__.py index 3524a9e029..dea6a89480 100644 --- a/src/calibre/gui2/wizard/__init__.py +++ b/src/calibre/gui2/wizard/__init__.py @@ -28,6 +28,7 @@ from calibre.gui2 import min_available_height, available_width from calibre.utils.config import dynamic, prefs from calibre.gui2 import NONE, choose_dir, error_dialog from calibre.gui2.dialogs.progress import ProgressDialog +from calibre.customize.ui import device_plugins # Devices {{{ @@ -251,15 +252,39 @@ class Android(Device): id = 'android' supports_color = True -class AndroidTablet(Device): + @classmethod + def commit(cls): + super(Android, cls).commit() + for plugin in device_plugins(include_disabled=True): + if plugin.name == 'Android driver': + plugin.configure_for_generic_epub_app() + +class AndroidTablet(Android): name = 'Android tablet' - output_format = 'EPUB' - manufacturer = 'Android' id = 'android_tablet' - supports_color = True output_profile = 'tablet' +class AndroidPhoneWithKindle(Android): + + name = 'Android phone with Kindle reader' + output_format = 'MOBI' + id = 'android_phone_with_kindle' + output_profile = 'kindle' + + @classmethod + def commit(cls): + super(Android, cls).commit() + for plugin in device_plugins(include_disabled=True): + if plugin.name == 'Android driver': + plugin.configure_for_kindle_app() + +class AndroidTabletWithKindle(AndroidPhoneWithKindle): + + name = 'Android tablet with Kindle reader' + id = 'android_tablet_with_kindle' + output_profile = 'kindle_fire' + class HanlinV3(Device): name = 'Hanlin V3' diff --git a/src/calibre/utils/config_base.py b/src/calibre/utils/config_base.py index 345caae384..24dc5b2cc6 100644 --- a/src/calibre/utils/config_base.py +++ b/src/calibre/utils/config_base.py @@ -351,6 +351,9 @@ class ConfigProxy(object): def __setitem__(self, key, val): return self.set(key, val) + def __delitem__(self, key): + self.set(key, self.defaults[key]) + def get(self, key): if self.__opts is None: self.refresh()