From cdc0bbdf4a7200f6af481db7fab33ea6f94be4c8 Mon Sep 17 00:00:00 2001 From: Luis Vidal Date: Thu, 25 Feb 2016 12:30:31 -0800 Subject: Show FAB when an external image or None is selected Fix to show the FAB when an external image or None is selected from the Wallpaper or Lockscreen cards. Change-Id: I911b4374ddc80186ee2699e8782d6e5ca48ee32f TICKET: CHOOSER-116 TICKET: CHOOSER-117 --- src/com/cyngn/theme/chooser/ChooserActivity.java | 2 ++ src/com/cyngn/theme/chooser/MyThemeFragment.java | 8 +++++ src/com/cyngn/theme/chooser/ThemeFragment.java | 44 ++++++++++++++++-------- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/src/com/cyngn/theme/chooser/ChooserActivity.java b/src/com/cyngn/theme/chooser/ChooserActivity.java index 75d81f9..ee6f7db 100644 --- a/src/com/cyngn/theme/chooser/ChooserActivity.java +++ b/src/com/cyngn/theme/chooser/ChooserActivity.java @@ -761,6 +761,7 @@ public class ChooserActivity extends FragmentActivity ThemeFragment f = getCurrentFragment(); if (f != null) { f.setWallpaperImageUri(uri); + showSaveApplyButton(); } } } else if (resultCode == RESULT_OK && requestCode == REQUEST_PICK_LOCKSCREEN_IMAGE) { @@ -769,6 +770,7 @@ public class ChooserActivity extends FragmentActivity ThemeFragment f = getCurrentFragment(); if (f != null) { f.setLockscreenImageUri(uri); + showSaveApplyButton(); } } } else { diff --git a/src/com/cyngn/theme/chooser/MyThemeFragment.java b/src/com/cyngn/theme/chooser/MyThemeFragment.java index 67a49d2..800faea 100644 --- a/src/com/cyngn/theme/chooser/MyThemeFragment.java +++ b/src/com/cyngn/theme/chooser/MyThemeFragment.java @@ -385,6 +385,14 @@ public class MyThemeFragment extends ThemeFragment { componentsToApply.put(component, selectedPkg); } } + if (mExternalLockscreenUri != null) { + if (mCurrentTheme.containsKey(ThemesColumns.MODIFIES_LIVE_LOCK_SCREEN)) { + componentsToApply.put(ThemesColumns.MODIFIES_LIVE_LOCK_SCREEN, LOCKSCREEN_NONE); + } + if (mCurrentTheme.containsKey(ThemesColumns.MODIFIES_LOCKSCREEN)) { + componentsToApply.put(ThemesColumns.MODIFIES_LOCKSCREEN, LOCKSCREEN_NONE); + } + } } return componentsToApply; } diff --git a/src/com/cyngn/theme/chooser/ThemeFragment.java b/src/com/cyngn/theme/chooser/ThemeFragment.java index 7cd04ff..577ffc9 100644 --- a/src/com/cyngn/theme/chooser/ThemeFragment.java +++ b/src/com/cyngn/theme/chooser/ThemeFragment.java @@ -193,6 +193,7 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb private static final int DEFAULT_CLOCK_COLOR = Color.WHITE; protected static final String WALLPAPER_NONE = ""; + protected static final String LOCKSCREEN_NONE = ""; protected static final String ARG_PACKAGE_NAME = "pkgName"; protected static final String ARG_COMPONENT_ID = "cmpntId"; @@ -652,10 +653,18 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb } }); if (isSuccess) { + if (mExternalLockscreenUri != null) { + // Handle setting an external wallpaper in a separate thread + // Need to do this AFTER ThemeMgr is done processing our change request. + // The external lock screen that we just applied would be removed when + // the change request is setting/clearing the lock screen + new Thread(mApplyExternalLockscreenRunnable).start(); + } Map appliedComponents = getComponentsToApply(); - String modLLS = appliedComponents.get(MODIFIES_LIVE_LOCK_SCREEN); - if (modLLS != null) { - if (TextUtils.equals(modLLS, "")) { + boolean modLLS = appliedComponents.containsKey(MODIFIES_LIVE_LOCK_SCREEN); + if (modLLS) { + String pkgName = appliedComponents.get(MODIFIES_LIVE_LOCK_SCREEN); + if (pkgName.equals(LOCKSCREEN_NONE)) { setLiveLockScreenAsKeyguard(false); } else { setLiveLockScreenAsKeyguard(true); @@ -707,8 +716,12 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb mExternalLockscreenUri = uri; final Point size = new Point(mLockScreenCard.getWidth(), mLockScreenCard.getHeight()); final Drawable wp = getWallpaperDrawableFromUri(uri, size); + if (mLockScreenCard.isShowingEmptyView()) { + mLockScreenCard.setEmptyViewEnabled(false); + } mLockScreenCard.setWallpaper(wp); // remove the entry from mSelectedComponentsMap + mSelectedComponentsMap.remove(ThemesColumns.MODIFIES_LIVE_LOCK_SCREEN); mSelectedComponentsMap.remove(ThemesColumns.MODIFIES_LOCKSCREEN); } @@ -983,10 +996,6 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb // Handle setting an external wallpaper in a separate thread new Thread(mApplyExternalWallpaperRunnable).start(); } - if (mExternalLockscreenUri != null) { - // Handle setting an external wallpaper in a separate thread - new Thread(mApplyExternalLockscreenRunnable).start(); - } } mExpanded = false; } @@ -1570,16 +1579,20 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb && (mBaseThemeSupportedComponents.contains(MODIFIES_LOCKSCREEN) || mBaseThemeSupportedComponents.contains(MODIFIES_LIVE_LOCK_SCREEN)))) { if (isLiveLockScreen) { - if (mSelectedComponentsMap.containsKey(MODIFIES_LOCKSCREEN)) { - mSelectedComponentsMap.put(MODIFIES_LOCKSCREEN, ""); - } mSelectedComponentsMap.put(MODIFIES_LIVE_LOCK_SCREEN, pkgName); + if (mCurrentTheme.containsKey(MODIFIES_LOCKSCREEN)) { + mSelectedComponentsMap.put(MODIFIES_LOCKSCREEN, LOCKSCREEN_NONE); + } else { + mSelectedComponentsMap.remove(MODIFIES_LOCKSCREEN); + } setCardTitle(mLockScreenCard, pkgName, getString(R.string.live_lock_screen_label)); } else { mSelectedComponentsMap.put(MODIFIES_LOCKSCREEN, pkgName); - if (mSelectedComponentsMap.containsKey(MODIFIES_LIVE_LOCK_SCREEN)) { - mSelectedComponentsMap.put(MODIFIES_LIVE_LOCK_SCREEN, ""); + if (mCurrentTheme.containsKey(MODIFIES_LIVE_LOCK_SCREEN)) { + mSelectedComponentsMap.put(MODIFIES_LIVE_LOCK_SCREEN, LOCKSCREEN_NONE); + } else { + mSelectedComponentsMap.remove(MODIFIES_LIVE_LOCK_SCREEN); } setCardTitle(mLockScreenCard, pkgName, getString(R.string.lockscreen_label)); } @@ -2065,6 +2078,7 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb mSelectedComponentsMap.put(ThemesColumns.MODIFIES_LAUNCHER, WALLPAPER_NONE); setCardTitle(mWallpaperCard, WALLPAPER_NONE, getString(R.string.wallpaper_label)); + getChooserActivity().showSaveApplyButton(); } else if (ComponentSelector.EXTERNAL_WALLPAPER.equals(pkgName)) { // Check if we have READ_EXTERNAL_STORAGE permission and if not request it, // otherwise let the user pick an image @@ -2093,15 +2107,17 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb || MODIFIES_LIVE_LOCK_SCREEN.equals(component)) { if (pkgName != null && TextUtils.isEmpty(pkgName)) { mLockScreenCard.setWallpaper(null); - mSelectedComponentsMap.put(ThemesColumns.MODIFIES_LOCKSCREEN, WALLPAPER_NONE); + mSelectedComponentsMap.put(ThemesColumns.MODIFIES_LOCKSCREEN, LOCKSCREEN_NONE); + if(mSelectedComponentsMap.containsKey(MODIFIES_LIVE_LOCK_SCREEN)) { - mSelectedComponentsMap.put(MODIFIES_LIVE_LOCK_SCREEN,WALLPAPER_NONE); + mSelectedComponentsMap.put(MODIFIES_LIVE_LOCK_SCREEN, LOCKSCREEN_NONE); } setCardTitle(mLockScreenCard, WALLPAPER_NONE, getString(R.string.lockscreen_label)); if (mLockScreenCard.isShowingEmptyView()) { mLockScreenCard.setEmptyViewEnabled(false); } + getChooserActivity().showSaveApplyButton(); } else if (ComponentSelector.EXTERNAL_WALLPAPER.equals(pkgName)) { // Check if we have READ_EXTERNAL_STORAGE permission and if not request it, // otherwise let the user pick an image -- cgit v1.1