From acf61e0834d2c0f605a3abc6fde86f0866a8b5a2 Mon Sep 17 00:00:00 2001 From: Artem Shvadskiy Date: Mon, 14 Dec 2015 15:39:36 -0800 Subject: 1. Move RemoteFolderManager and RemoteFolderUpdater into launcher3 package and move RemoteFolderManager implementation to overlay. 2. Modify settings to hide remote folder preference on CM builds. 3. Remove remote folder from default workspace. Change-Id: I6cc3409cf0a9ada68779c41e62f46bc08f2f9ad4 issue-id: CYNGNOS-1429 --- Android.mk | 4 +- .../RemoteFolderUpdater.java | 83 ----------- .../com/android/launcher3/RemoteFolderManager.java | 27 ++++ .../com/android/launcher3/RemoteFolderUpdater.java | 83 +++++++++++ res/xml/default_workspace_4x4.xml | 4 - src/com/android/launcher3/Folder.java | 1 - src/com/android/launcher3/LauncherModel.java | 3 - .../android/launcher3/OverviewSettingsPanel.java | 46 +++--- src/com/android/launcher3/RemoteFolderManager.java | 159 --------------------- src/com/android/launcher3/Workspace.java | 6 - 10 files changed, 139 insertions(+), 277 deletions(-) delete mode 100644 RemoteFolder/src/com.cyngn.RemoteFolder/RemoteFolderUpdater.java create mode 100644 RemoteFolder/src/com/android/launcher3/RemoteFolderManager.java create mode 100644 RemoteFolder/src/com/android/launcher3/RemoteFolderUpdater.java delete mode 100644 src/com/android/launcher3/RemoteFolderManager.java diff --git a/Android.mk b/Android.mk index 70770fc8b..04d4e4e9a 100644 --- a/Android.mk +++ b/Android.mk @@ -34,8 +34,7 @@ LOCAL_SRC_FILES := $(call all-java-files-under, src) \ $(call all-proto-files-under, protos) LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/WallpaperPicker/res $(LOCAL_PATH)/res -LOCAL_AAPT_FLAGS := --auto-add-overlay \ - --extra-packages com.cyngn.RemoteFolder +LOCAL_AAPT_FLAGS := --auto-add-overlay LOCAL_PROTOC_OPTIMIZE_TYPE := nano LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)/protos/ @@ -59,7 +58,6 @@ include $(REMOTE_FOLDER_UPDATER)/Android.mk include $(BUILD_PACKAGE) include $(CLEAR_VARS) -include $(REMOTE_FOLDER_UPDATER)/Android.mk include $(BUILD_MULTI_PREBUILT) # diff --git a/RemoteFolder/src/com.cyngn.RemoteFolder/RemoteFolderUpdater.java b/RemoteFolder/src/com.cyngn.RemoteFolder/RemoteFolderUpdater.java deleted file mode 100644 index 1322c057d..000000000 --- a/RemoteFolder/src/com.cyngn.RemoteFolder/RemoteFolderUpdater.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.cyngn.RemoteFolder; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Bitmap; -import android.view.View; -import java.util.List; -import android.util.Log; - -public class RemoteFolderUpdater { - - private static final String TAG = "RemoteFolderUpdater"; - - private static final Object sLock = new Object(); - private static RemoteFolderUpdater sInstance; - - public interface RemoteFolderUpdateListener { - void onSuccess(List remoteFolderInfoList); - void onFailure(String error); - } - - public static RemoteFolderUpdater getInstance() { - synchronized (sLock) { - if (sInstance == null) { - sInstance = new RemoteFolderUpdater(); - } - - return sInstance; - } - } - - private RemoteFolderUpdater() { } - - /** - * Requests data needed by remote folders. - * @param context - * @param size - * @param listener - */ - public synchronized void requestSync(Context context, final int size, final RemoteFolderUpdateListener listener) { - if (listener != null) { - listener.onFailure("RemoteFolderUpdater may not have been properly setup"); - } - } - - /** - * Register a callback to track clicks on our individual Remote Folder items. Make sure the - * intent associated with each item has a unique ID. - * - * @param view The individual item the user may click (or just clicked) - * @param intent The intent associated with the ShortcutInfo that belongs to our view - */ - public void registerViewForInteraction(View view, Intent intent) { - Log.e(TAG, "Couldn't register view for user interaction, RemoteFolderUpdater may not have been properly setup"); - } - - /** - * Holds important information that the launcher will need for each item in the remote folder. - */ - public class RemoteFolderInfo { - - public void setRecommendationData(View view) { - return; - } - - public String getTitle() { - return null; - } - - public Bitmap getIcon() { - return null; - } - - public String getIconUrl() { - return null; - } - - public Intent getIntent() { - return null; - } - } - -} diff --git a/RemoteFolder/src/com/android/launcher3/RemoteFolderManager.java b/RemoteFolder/src/com/android/launcher3/RemoteFolderManager.java new file mode 100644 index 000000000..477f71011 --- /dev/null +++ b/RemoteFolder/src/com/android/launcher3/RemoteFolderManager.java @@ -0,0 +1,27 @@ +package com.android.launcher3; + +/** + * Manages adding and removing the remote folder from the workspace. + */ +public class RemoteFolderManager { + + public RemoteFolderManager(final Launcher launcher) { } + + public void setRemoteFolder(final FolderIcon remoteFolder) { } + + /** + * Called when Launcher finishes binding items from the model. + */ + public void bindFinished() { } + + /** + * Called when the setting for remote folder is updated. + * @param newValue the new setting for remote folder + */ + public void onSettingChanged(final boolean newValue) { } + + /** + * Called when the remote folder is dropped into the delete area on the workspace. + */ + public void onFolderDeleted() { } +} diff --git a/RemoteFolder/src/com/android/launcher3/RemoteFolderUpdater.java b/RemoteFolder/src/com/android/launcher3/RemoteFolderUpdater.java new file mode 100644 index 000000000..954595e1f --- /dev/null +++ b/RemoteFolder/src/com/android/launcher3/RemoteFolderUpdater.java @@ -0,0 +1,83 @@ +package com.android.launcher3; + +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.view.View; +import java.util.List; +import android.util.Log; + +public class RemoteFolderUpdater { + + private static final String TAG = "RemoteFolderUpdater"; + + private static final Object sLock = new Object(); + private static RemoteFolderUpdater sInstance; + + public interface RemoteFolderUpdateListener { + void onSuccess(List remoteFolderInfoList); + void onFailure(String error); + } + + public static RemoteFolderUpdater getInstance() { + synchronized (sLock) { + if (sInstance == null) { + sInstance = new RemoteFolderUpdater(); + } + + return sInstance; + } + } + + private RemoteFolderUpdater() { } + + /** + * Requests data needed by remote folders. + * @param context + * @param size + * @param listener + */ + public synchronized void requestSync(Context context, final int size, final RemoteFolderUpdateListener listener) { + if (listener != null) { + listener.onFailure("RemoteFolderUpdater may not have been properly setup"); + } + } + + /** + * Register a callback to track clicks on our individual Remote Folder items. Make sure the + * intent associated with each item has a unique ID. + * + * @param view The individual item the user may click (or just clicked) + * @param intent The intent associated with the ShortcutInfo that belongs to our view + */ + public void registerViewForInteraction(View view, Intent intent) { + Log.e(TAG, "Couldn't register view for user interaction, RemoteFolderUpdater may not have been properly setup"); + } + + /** + * Holds important information that the launcher will need for each item in the remote folder. + */ + public class RemoteFolderInfo { + + public void setRecommendationData(View view) { + return; + } + + public String getTitle() { + return null; + } + + public Bitmap getIcon() { + return null; + } + + public String getIconUrl() { + return null; + } + + public Intent getIntent() { + return null; + } + } + +} diff --git a/res/xml/default_workspace_4x4.xml b/res/xml/default_workspace_4x4.xml index 809697ebe..5970f12f4 100644 --- a/res/xml/default_workspace_4x4.xml +++ b/res/xml/default_workspace_4x4.xml @@ -29,10 +29,6 @@ launcher:spanX="4" launcher:spanY="2" /> - - - - values = new ArrayList(Arrays.asList(new String[]{ + res.getString(R.string.home_screen_search_text), + res.getString(R.string.scroll_effect_text), + res.getString(R.string.icon_labels), + res.getString(R.string.scrolling_wallpaper), + res.getString(R.string.grid_size_text)})); + + // Optionally add additional value based on setting + boolean remoteAppsEnabled = SettingsProvider.getBoolean(mLauncher, null, + R.bool.preferences_interface_homescreen_remote_folder_default); + if (remoteAppsEnabled) { + values.add(res.getString(R.string.recommendations_title)); + } + + String[] valuesArr = new String[values.size()]; + values.toArray(valuesArr); + return valuesArr; + } + // One time View setup public void initializeViews() { mOverviewPanel.setAlpha(0f); @@ -170,15 +187,8 @@ public class OverviewSettingsPanel { mSettingsAdapter.changeCursor(0, createCursor(res .getString(R.string.home_screen_settings), new String[]{})); } else { - String[] values = new String[] { - res.getString(R.string.home_screen_search_text), - res.getString(R.string.scroll_effect_text), - res.getString(R.string.icon_labels), - res.getString(R.string.scrolling_wallpaper), - res.getString(R.string.grid_size_text), - res.getString(R.string.recommendations_title)}; mSettingsAdapter.changeCursor(0, createCursor(res - .getString(R.string.home_screen_settings), values)); + .getString(R.string.home_screen_settings), getValues())); } // Make sure overview panel is drawn above apps customize and collapsed diff --git a/src/com/android/launcher3/RemoteFolderManager.java b/src/com/android/launcher3/RemoteFolderManager.java deleted file mode 100644 index efbc9159d..000000000 --- a/src/com/android/launcher3/RemoteFolderManager.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.android.launcher3; - -import android.util.Log; -import android.util.Pair; -import android.view.View; -import com.android.launcher3.settings.SettingsProvider; - -import java.util.ArrayList; - -/** - * Manages adding and removing the remote folder from the workspace. - */ -public class RemoteFolderManager { - private static final String TAG = "RemoteFolderManager"; - - private final Launcher mLauncher; - - /** View which is displayed in the workspace **/ - private FolderIcon mRemoteFolder; - /** Coordinates of the folder's position before being hidden **/ - private int[] mRemoteFolderCell; - - public RemoteFolderManager(final Launcher launcher) { - mLauncher = launcher; - mRemoteFolderCell = new int[2]; - } - - public void setRemoteFolder(final FolderIcon remoteFolder) { - mRemoteFolder = remoteFolder; - } - - /** - * Called when Launcher finishes binding items from the model. - */ - public void bindFinished() { - boolean remoteFolderEnabled = SettingsProvider.getBoolean(mLauncher, - SettingsProvider.SETTINGS_UI_HOMESCREEN_REMOTE_FOLDER, - R.bool.preferences_interface_homescreen_remote_folder_default); - if (remoteFolderEnabled && mRemoteFolder == null) { - showRemoteFolder(); - } else if (!remoteFolderEnabled) { - // We might load the remote folder on startup, but we shouldn't show it - hideRemoteFolder(); - } - } - - /** - * Called when the setting for remote folder is updated. - * @param newValue the new setting for remote folder - */ - public void onSettingChanged(final boolean newValue) { - if (newValue) { - showRemoteFolder(); - } else { - hideRemoteFolder(); - } - } - - /** - * Called when the remote folder is dropped into the delete area on the workspace. - */ - public void onFolderDeleted() { - hideRemoteFolder(); - SettingsProvider.putBoolean(mLauncher, - SettingsProvider.SETTINGS_UI_HOMESCREEN_REMOTE_FOLDER, false); - mLauncher.mOverviewSettingsPanel.notifyDataSetInvalidated(); - } - - private void showRemoteFolder() { - int[] cell; - long screen; - long container; - boolean findNewSpace = true; - FolderInfo folderInfo = null; - Workspace workspace = mLauncher.getWorkspace(); - - // Check if we can re-add at our old location - if (mRemoteFolder != null) { - folderInfo = mRemoteFolder.getFolderInfo(); - CellLayout cellLayout = mLauncher.getCellLayout( - folderInfo.container, folderInfo.screenId); - if (cellLayout != null - && !cellLayout.isOccupied(mRemoteFolderCell[0], mRemoteFolderCell[1])) { - findNewSpace = false; - } - } - if (findNewSpace) { - // Try to find a new space to add. - Pair space = LauncherModel.findNextAvailableIconSpace(mLauncher, null, - null, 0, new ArrayList(workspace.getWorkspaceScreenIds())); - - // All screens are full. Create a new screen. - if (space == null) { - workspace.addExtraEmptyScreen(); - screen = workspace.commitExtraEmptyScreen(); - cell = new int[2]; - } else { - screen = space.first; - cell = space.second; - } - - container = LauncherSettings.Favorites.CONTAINER_DESKTOP; - } else { - screen = folderInfo.screenId; - cell = mRemoteFolderCell; - container = folderInfo.container; - } - - // Create the folder if this is our first time showing it - if (mRemoteFolder == null) { - folderInfo = new FolderInfo(); - folderInfo.setTitle(mLauncher.getString(R.string.recommendations_title)); - folderInfo.setRemote(true); - - CellLayout cellLayout = mLauncher.getCellLayout(container, screen); - mRemoteFolder = mLauncher.addFolder(cellLayout, container, screen, - cell[0], cell[1], folderInfo); - - mLauncher.getModel().syncRemoteFolder(folderInfo, mLauncher); - } else { - // Folder may be hidden by drop delete animation, so force visibility. - mRemoteFolder.setVisibility(View.VISIBLE); - workspace.addInScreen(mRemoteFolder, container, screen, - cell[0], cell[1], 1, 1, mLauncher.isWorkspaceLocked()); - mLauncher.getCellLayout(container, screen) - .getShortcutsAndWidgets().measureChild(mRemoteFolder); - - // Update the model - folderInfo.cellX = cell[0]; - folderInfo.cellY = cell[1]; - folderInfo.container = container; - folderInfo.screenId = screen; - LauncherModel.updateItemInDatabase(mLauncher, folderInfo); - } - } - - private void hideRemoteFolder() { - // Remote folder does not exist - if (mRemoteFolder == null) { - Log.e(TAG, "Remote folder is null"); - return; - } - - FolderInfo info = mRemoteFolder.getFolderInfo(); - - // Store our current location so we can try to re-add in the same spot later. - mRemoteFolderCell[0] = info.cellX; - mRemoteFolderCell[1] = info.cellY; - - // Clear the spot - mLauncher.getCellLayout(info.container, info.screenId).removeView(mRemoteFolder); - info.cellX = -1; - info.cellY = -1; - LauncherModel.updateItemInDatabase(mLauncher, info); - - // We may be removing from a screen we're on alone, so remove it if necessary. - mLauncher.getWorkspace().removeExtraEmptyScreen(false, true); - } -} diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index e6087a666..e98f12f6e 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -31,10 +31,7 @@ import android.appwidget.AppWidgetHostView; import android.appwidget.AppWidgetProviderInfo; import android.content.ComponentName; import android.content.Context; -import android.content.Intent; import android.content.SharedPreferences; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Bitmap; @@ -76,14 +73,11 @@ import com.android.launcher3.compat.PackageInstallerCompat; import com.android.launcher3.compat.PackageInstallerCompat.PackageInstallInfo; import com.android.launcher3.compat.UserHandleCompat; import com.android.launcher3.settings.SettingsProvider; -import com.cyngn.RemoteFolder.RemoteFolderUpdater; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; -import java.util.List; -import java.util.Map; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; -- cgit v1.2.3