From 719deb83a0ac84422b68605f4d5c782865766aef Mon Sep 17 00:00:00 2001 From: Tyson Miller Date: Tue, 10 Nov 2015 08:59:15 -0800 Subject: Trebuchet: dynamic folder type added Issue-Id: CYNGNOS-1328 Change-Id: I09bf7bec119307f54836fedee8a1532627035d9a --- Android.mk | 25 +- AndroidManifest.xml | 22 ++ RemoteFolder/Android.mk | 1 + .../RemoteFolderUpdater.java | 64 +++++ proguard.flags | 28 +++ res/layout/remote_folder.xml | 123 ++++++++++ res/values/cm_strings.xml | 6 + res/values/version.xml | 4 + res/xml/default_workspace_4x4.xml | 4 + res/xml/default_workspace_5x5.xml | 4 + res/xml/default_workspace_5x6.xml | 4 + src/com/android/launcher3/AutoInstallsLayout.java | 47 ++++ src/com/android/launcher3/DefaultLayoutParser.java | 32 +++ src/com/android/launcher3/Folder.java | 134 ++++++++--- src/com/android/launcher3/FolderIcon.java | 19 +- src/com/android/launcher3/FolderInfo.java | 3 +- src/com/android/launcher3/Launcher.java | 19 +- src/com/android/launcher3/LauncherModel.java | 70 +++++- src/com/android/launcher3/RemoteFolder.java | 260 +++++++++++++++++++++ src/com/android/launcher3/Workspace.java | 2 + 20 files changed, 819 insertions(+), 52 deletions(-) create mode 100644 RemoteFolder/Android.mk create mode 100644 RemoteFolder/src/com.cyngn.RemoteFolder/RemoteFolderUpdater.java create mode 100644 res/layout/remote_folder.xml create mode 100644 res/values/version.xml create mode 100644 src/com/android/launcher3/RemoteFolder.java diff --git a/Android.mk b/Android.mk index af967ac5a..f93af5b89 100644 --- a/Android.mk +++ b/Android.mk @@ -27,13 +27,22 @@ LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13 \ android-support-v7-recyclerview \ guava +<<<<<<< HEAD +REMOTE_FOLDER_UPDATER ?= $(LOCAL_PATH)/RemoteFolder + + LOCAL_SRC_FILES := $(call all-java-files-under, src) \ + $(call all-java-files-under, $(REMOTE_FOLDER_UPDATER)/src) \ +======= +LOCAL_SRC_FILES := $(call all-java-files-under, src) \ +>>>>>>> 861f6e8... Trebuchet: Remote Folder hooks setup. Updater call still needs to be moved from Folder to LauncherModel $(call all-java-files-under, WallpaperPicker/src) \ $(call all-renderscript-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 +LOCAL_AAPT_FLAGS := --auto-add-overlay \ + --extra-packages com.cyngn.RemoteFolder LOCAL_PROTOC_OPTIMIZE_TYPE := nano LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)/protos/ @@ -49,10 +58,16 @@ LOCAL_AAPT_FLAGS += --rename-manifest-package com.cyanogenmod.trebuchet LOCAL_OVERRIDES_PACKAGES := Launcher3 LOCAL_PROGUARD_FLAG_FILES := proguard.flags -LOCAL_PROGUARD_ENABLED := disabled +LOCAL_PROGUARD_ENABLED := full + +REMOTE_FOLDER_UPDATER ?= $(LOCAL_PATH)/RemoteFolder +include $(REMOTE_FOLDER_UPDATER)/Android.mk include $(BUILD_PACKAGE) +include $(CLEAR_VARS) +include $(REMOTE_FOLDER_UPDATER)/Android.mk +include $(BUILD_MULTI_PREBUILT) # # Protocol Buffer Debug Utility in Java @@ -72,6 +87,7 @@ LOCAL_JAR_MANIFEST := util/etc/manifest.txt include $(BUILD_HOST_JAVA_LIBRARY) + # # Protocol Buffer Debug Utility Wrapper Script # @@ -89,4 +105,9 @@ $(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/util/etc/launcher_protoutil | $(ACP) $(copy-file-to-new-target) $(hide) chmod 755 $@ +<<<<<<< HEAD +include $(REMOTE_FOLDER_UPDATER)/Android.mk + +======= +>>>>>>> 861f6e8... Trebuchet: Remote Folder hooks setup. Updater call still needs to be moved from Folder to LauncherModel include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index f3425fe44..b6ae5a2c2 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -76,6 +76,8 @@ + + + + + + + diff --git a/RemoteFolder/Android.mk b/RemoteFolder/Android.mk new file mode 100644 index 000000000..0857902d9 --- /dev/null +++ b/RemoteFolder/Android.mk @@ -0,0 +1 @@ +LOCAL_SRC_FILES += (call all-java-files-under, RemoteFolder/src) \ No newline at end of file diff --git a/RemoteFolder/src/com.cyngn.RemoteFolder/RemoteFolderUpdater.java b/RemoteFolder/src/com.cyngn.RemoteFolder/RemoteFolderUpdater.java new file mode 100644 index 000000000..909154c2c --- /dev/null +++ b/RemoteFolder/src/com.cyngn.RemoteFolder/RemoteFolderUpdater.java @@ -0,0 +1,64 @@ +package com.cyngn.RemoteFolder; + +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.view.View; +import java.util.List; + +public class RemoteFolderUpdater { + + public interface RemoteFolderUpdateListener { + void onSuccess(List remoteFolderInfoList); + void onFailure(String error); + } + + /** + * 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; + } + } +} \ No newline at end of file diff --git a/proguard.flags b/proguard.flags index 0b28c0ef4..5eef9074c 100644 --- a/proguard.flags +++ b/proguard.flags @@ -1,3 +1,8 @@ +-keepattributes SourceFile,LineNumberTable,InnerClasses +-keep class com.inmobi.** { *; } +-dontwarn com.inmobi.** +-dontwarn com.google.android.gms** + -keep class com.android.launcher3.Launcher { public void previousScreen(android.view.View); public void nextScreen(android.view.View); @@ -57,3 +62,26 @@ public float getAnimationProgress(); public void setAnimationProgress(float); } + +-keep class * extends java.util.ListResourceBundle { + protected Object[][] getContents(); +} + +-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { + public static final *** NULL; +} + +-keepnames @com.google.android.gms.common.annotation.KeepName class * +-keepclassmembernames class * { + @com.google.android.gms.common.annotation.KeepName *; +} + +-keepnames class * implements android.os.Parcelable { + public static final ** CREATOR; +} + +-keep class android.content.res.** { *; } +-dontwarn android.content.res.* + +-keep class android.view.inputmethod.** { *; } +-dontwarn android.view.inputmethod.* diff --git a/res/layout/remote_folder.xml b/res/layout/remote_folder.xml new file mode 100644 index 000000000..b185a2109 --- /dev/null +++ b/res/layout/remote_folder.xml @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + +