Loading packages/SystemUI/src/com/android/systemui/statusbar/car/CarNavigationBarController.java +20 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.support.v4.util.SimpleArrayMap; import android.util.SparseBooleanArray; import android.view.View; import android.widget.LinearLayout; Loading Loading @@ -71,6 +72,7 @@ class CarNavigationBarController { private int mCurrentFacetIndex; private String mCurrentPackageName; private SparseBooleanArray mFacetHasMultipleAppsCache = new SparseBooleanArray(); public CarNavigationBarController(Context context, CarNavigationBarView navBar, Loading @@ -96,6 +98,21 @@ class CarNavigationBarController { } } public void onPackageChange(String packageName) { if (mFacetPackageMap.containsKey(packageName)) { int index = mFacetPackageMap.get(packageName); mFacetHasMultipleAppsCache.put(index, facetHasMultiplePackages(index)); // No need to check categories because we've already refreshed the cache. return; } String category = getPackageCategory(packageName); if (mFacetCategoryMap.containsKey(category)) { int index = mFacetCategoryMap.get(packageName); mFacetHasMultipleAppsCache.put(index, facetHasMultiplePackages(index)); } } private void bind() { // Read up arrays_car.xml and populate the navigation bar here. Resources r = mContext.getResources(); Loading Loading @@ -138,6 +155,7 @@ class CarNavigationBarController { initFacetFilterMaps(i, facetPackageNames.getString(i).split(FACET_FILTER_DEMILITER), facetCategories.getString(i).split(FACET_FILTER_DEMILITER)); mFacetHasMultipleAppsCache.put(i, facetHasMultiplePackages(i)); } catch (URISyntaxException e) { throw new RuntimeException("Malformed intent uri", e); } Loading Loading @@ -229,7 +247,7 @@ class CarNavigationBarController { if (mNavButtons.get(index) != null) { mNavButtons.get(index).setSelected(true /* selected */, facetHasMultiplePackages(index) /* showMoreIcon */); mFacetHasMultipleAppsCache.get(index) /* showMoreIcon */); } mCurrentFacetIndex = index; } Loading Loading @@ -268,7 +286,7 @@ class CarNavigationBarController { private void startActivity(Intent intent) { if (mActivityStarter != null && intent != null) { mActivityStarter.startActivity(intent, true); mActivityStarter.startActivity(intent, false); } } Loading packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java +24 −0 Original line number Diff line number Diff line Loading @@ -18,7 +18,10 @@ package com.android.systemui.statusbar.car; import android.app.ActivityManager; import android.app.ITaskStackListener; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.graphics.PixelFormat; import android.os.Handler; import android.os.Looper; Loading Loading @@ -52,6 +55,7 @@ public class CarStatusBar extends PhoneStatusBar { mTaskStackListener = new TaskStackListenerImpl(mHandler); mSystemServicesProxy = new SystemServicesProxy(mContext); mSystemServicesProxy.registerTaskStackListener(mTaskStackListener); registerPackageChangeReceivers(); } @Override Loading Loading @@ -81,6 +85,26 @@ public class CarStatusBar extends PhoneStatusBar { mController = new CarNavigationBarController(context, mCarNavigationBar, this /* ActivityStarter*/); mNavigationBarView = mCarNavigationBar; } private BroadcastReceiver mPackageChangeReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getData() == null || mController == null) { return; } String packageName = intent.getData().getSchemeSpecificPart(); mController.onPackageChange(packageName); } }; private void registerPackageChangeReceivers() { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_PACKAGE_ADDED); filter.addAction(Intent.ACTION_PACKAGE_REMOVED); filter.addDataScheme("package"); mContext.registerReceiver(mPackageChangeReceiver, filter); } @Override Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/car/CarNavigationBarController.java +20 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.support.v4.util.SimpleArrayMap; import android.util.SparseBooleanArray; import android.view.View; import android.widget.LinearLayout; Loading Loading @@ -71,6 +72,7 @@ class CarNavigationBarController { private int mCurrentFacetIndex; private String mCurrentPackageName; private SparseBooleanArray mFacetHasMultipleAppsCache = new SparseBooleanArray(); public CarNavigationBarController(Context context, CarNavigationBarView navBar, Loading @@ -96,6 +98,21 @@ class CarNavigationBarController { } } public void onPackageChange(String packageName) { if (mFacetPackageMap.containsKey(packageName)) { int index = mFacetPackageMap.get(packageName); mFacetHasMultipleAppsCache.put(index, facetHasMultiplePackages(index)); // No need to check categories because we've already refreshed the cache. return; } String category = getPackageCategory(packageName); if (mFacetCategoryMap.containsKey(category)) { int index = mFacetCategoryMap.get(packageName); mFacetHasMultipleAppsCache.put(index, facetHasMultiplePackages(index)); } } private void bind() { // Read up arrays_car.xml and populate the navigation bar here. Resources r = mContext.getResources(); Loading Loading @@ -138,6 +155,7 @@ class CarNavigationBarController { initFacetFilterMaps(i, facetPackageNames.getString(i).split(FACET_FILTER_DEMILITER), facetCategories.getString(i).split(FACET_FILTER_DEMILITER)); mFacetHasMultipleAppsCache.put(i, facetHasMultiplePackages(i)); } catch (URISyntaxException e) { throw new RuntimeException("Malformed intent uri", e); } Loading Loading @@ -229,7 +247,7 @@ class CarNavigationBarController { if (mNavButtons.get(index) != null) { mNavButtons.get(index).setSelected(true /* selected */, facetHasMultiplePackages(index) /* showMoreIcon */); mFacetHasMultipleAppsCache.get(index) /* showMoreIcon */); } mCurrentFacetIndex = index; } Loading Loading @@ -268,7 +286,7 @@ class CarNavigationBarController { private void startActivity(Intent intent) { if (mActivityStarter != null && intent != null) { mActivityStarter.startActivity(intent, true); mActivityStarter.startActivity(intent, false); } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java +24 −0 Original line number Diff line number Diff line Loading @@ -18,7 +18,10 @@ package com.android.systemui.statusbar.car; import android.app.ActivityManager; import android.app.ITaskStackListener; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.graphics.PixelFormat; import android.os.Handler; import android.os.Looper; Loading Loading @@ -52,6 +55,7 @@ public class CarStatusBar extends PhoneStatusBar { mTaskStackListener = new TaskStackListenerImpl(mHandler); mSystemServicesProxy = new SystemServicesProxy(mContext); mSystemServicesProxy.registerTaskStackListener(mTaskStackListener); registerPackageChangeReceivers(); } @Override Loading Loading @@ -81,6 +85,26 @@ public class CarStatusBar extends PhoneStatusBar { mController = new CarNavigationBarController(context, mCarNavigationBar, this /* ActivityStarter*/); mNavigationBarView = mCarNavigationBar; } private BroadcastReceiver mPackageChangeReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getData() == null || mController == null) { return; } String packageName = intent.getData().getSchemeSpecificPart(); mController.onPackageChange(packageName); } }; private void registerPackageChangeReceivers() { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_PACKAGE_ADDED); filter.addAction(Intent.ACTION_PACKAGE_REMOVED); filter.addDataScheme("package"); mContext.registerReceiver(mPackageChangeReceiver, filter); } @Override Loading