Skip to content

Commit

Permalink
Pixelify 2 - Wallpapers, icons, app list
Browse files Browse the repository at this point in the history
  • Loading branch information
amirzaidi committed Jun 12, 2017
1 parent b186607 commit 2b32fb8
Show file tree
Hide file tree
Showing 5 changed files with 136 additions and 21 deletions.
6 changes: 3 additions & 3 deletions res/values/config.xml
Original file line number Diff line number Diff line change
Expand Up @@ -70,17 +70,17 @@

<!-- Name of a subclass of com.android.launcher3.AppFilter used to
filter the activities shown in the launcher. Can be empty. -->
<string name="app_filter_class" translatable="false"></string>
<string name="app_filter_class" translatable="false">com.android.launcher3.SuperNexusAppFilter</string>

<!-- List of package names that com.android.launcher3.action.LAUNCH
should be targeting. Can be empty. -->
<array name="launch_broadcast_targets" translatable="false"></array>

<!-- Name of an icon provider class. -->
<string name="icon_provider_class" translatable="false"></string>
<string name="icon_provider_class" translatable="false">com.android.launcher3.SuperDynamicIconProvider</string>

<!-- Package name of the default wallpaper picker. -->
<string name="wallpaper_picker_package" translatable="false"></string>
<string name="wallpaper_picker_package" translatable="false">com.google.android.apps.wallpaper</string>

<!-- View ID to use for QSB widget -->
<item type="id" name="qsb_widget" />
Expand Down
17 changes: 0 additions & 17 deletions res/xml/device_profiles.xml
Original file line number Diff line number Diff line change
Expand Up @@ -111,23 +111,6 @@
launcher:hotseatIconSize="58.0"
launcher:defaultLayoutId="@xml/default_workspace_5x5" />


<profile
launcher:name="Nexus 7"
launcher:minWidthDps="575"
launcher:minHeightDps="904"
launcher:numRows="5"
launcher:numColumns="6"
launcher:numFolderRows="4"
launcher:numFolderColumns="5"
launcher:minAllAppsPredictionColumns="4"
launcher:iconSize="72"
launcher:iconTextSize="14.4"
launcher:numHotseatIcons="7"
launcher:hotseatIconSize="60"
launcher:defaultLayoutId="@xml/default_workspace_5x6"
/>

<profile
launcher:name="Nexus 10"
launcher:minWidthDps="727"
Expand Down
2 changes: 1 addition & 1 deletion src/com/android/launcher3/Launcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -2659,7 +2659,7 @@ public void onClickWallpaperPicker(View v) {
}

String pickerPackage = getString(R.string.wallpaper_picker_package);
if (TextUtils.isEmpty(pickerPackage)) {
if (TextUtils.isEmpty(pickerPackage) || !PackageManagerHelper.isAppEnabled(getPackageManager(), pickerPackage)) {
pickerPackage = PackageManagerHelper.getWallpaperPickerPackage(getPackageManager());
}

Expand Down
113 changes: 113 additions & 0 deletions src/com/android/launcher3/SuperDynamicIconProvider.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
package com.android.launcher3;

import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.graphics.drawable.Drawable;
import com.android.launcher3.compat.LauncherActivityInfoCompat;
import com.android.launcher3.compat.UserHandleCompat;
import com.android.launcher3.compat.UserManagerCompat;

import android.content.res.TypedArray;
import android.content.res.Resources;
import android.os.Bundle;
import java.util.Calendar;
import java.util.List;

import android.os.Handler;
import android.content.IntentFilter;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.BroadcastReceiver;

public class SuperDynamicIconProvider extends IconProvider
{
private BroadcastReceiver mBroadcastReceiver;
protected PackageManager mPackageManager;

public SuperDynamicIconProvider(Context context) {
mBroadcastReceiver = new DynamicIconProviderReceiver(this);
IntentFilter intentFilter = new IntentFilter("android.intent.action.DATE_CHANGED");
intentFilter.addAction("android.intent.action.TIME_SET");
intentFilter.addAction("android.intent.action.TIMEZONE_CHANGED");
context.registerReceiver(mBroadcastReceiver, intentFilter, null, new Handler(LauncherModel.getWorkerLooper()));
mPackageManager = context.getPackageManager();
}

private int dayOfMonth() {
return Calendar.getInstance().get(Calendar.DAY_OF_MONTH) - 1;
}

private int getCorrectShape(Bundle bundle, Resources resources) {
if (bundle != null) {
int roundIcons = bundle.getInt("com.google.android.calendar.dynamic_icons_nexus_round", 0);
if (roundIcons != 0) {
try {
TypedArray obtainTypedArray = resources.obtainTypedArray(roundIcons);
int resourceId = obtainTypedArray.getResourceId(dayOfMonth(), 0);
obtainTypedArray.recycle();
return resourceId;
}
catch (Resources.NotFoundException ex) {
}
}
}

return 0;
}

private boolean isCalendar(final String s) {
return "com.google.android.calendar".equals(s);
}

@Override
public Drawable getIcon(final LauncherActivityInfoCompat launcherActivityInfoCompat, int iconDpi) {
Drawable drawable = null;
String packageName = launcherActivityInfoCompat.getApplicationInfo().packageName;

if (isCalendar(packageName)) {
try {
ActivityInfo activityInfo = mPackageManager.getActivityInfo(launcherActivityInfoCompat.getComponentName(), PackageManager.GET_META_DATA | PackageManager.MATCH_UNINSTALLED_PACKAGES);
Bundle metaData = activityInfo.metaData;
Resources resourcesForApplication = mPackageManager.getResourcesForApplication(packageName);
int shape = getCorrectShape(metaData, resourcesForApplication);
if (shape != 0) {
drawable = resourcesForApplication.getDrawableForDensity(shape, iconDpi);
}
}
catch (PackageManager.NameNotFoundException ex3) {}
}

if (drawable == null) {
drawable = super.getIcon(launcherActivityInfoCompat, iconDpi);
}

return drawable;
}

public String getIconSystemState(String s) {
if (isCalendar(s)) {
return mSystemState + " " + dayOfMonth();
}
return mSystemState;
}

class DynamicIconProviderReceiver extends BroadcastReceiver
{
SuperDynamicIconProvider mDynamicIconProvider;

DynamicIconProviderReceiver(final SuperDynamicIconProvider dynamicIconProvider) {
mDynamicIconProvider = dynamicIconProvider;
}

public void onReceive(final Context context, final Intent intent) {
for (UserHandleCompat userHandleCompat : UserManagerCompat.getInstance(context).getUserProfiles()) {
LauncherAppState instance = LauncherAppState.getInstance();
instance.getModel().onPackageChanged("com.google.android.calendar", userHandleCompat);
List queryForPinnedShortcuts = instance.getShortcutManager().queryForPinnedShortcuts("com.google.android.calendar", userHandleCompat);
if (!queryForPinnedShortcuts.isEmpty()) {
instance.getModel().updatePinnedShortcuts("com.google.android.calendar", queryForPinnedShortcuts, userHandleCompat);
}
}
}
}
}
19 changes: 19 additions & 0 deletions src/com/android/launcher3/SuperNexusAppFilter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.android.launcher3;

import android.content.ComponentName;
import java.util.HashSet;

public class SuperNexusAppFilter extends AppFilter
{
private final HashSet mHide;

public SuperNexusAppFilter() {
mHide = new HashSet();
mHide.add(ComponentName.unflattenFromString("com.google.android.googlequicksearchbox/.VoiceSearchActivity"));
mHide.add(ComponentName.unflattenFromString("com.google.android.apps.wallpaper/.picker.CategoryPickerActivity"));
}

public boolean shouldShowApp(final ComponentName componentName) {
return !mHide.contains(componentName);
}
}

0 comments on commit 2b32fb8

Please sign in to comment.