Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6c0773ec authored by Vadim Tryshev's avatar Vadim Tryshev
Browse files

Removing profile's pinned apps upon a profile removal.

Bug: 20024603
Change-Id: I4b17bffe202d3f4cf211b3289ee021c4ec16e91f
parent 2e8c5bfd
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -87,6 +87,9 @@ class NavigationBarApps extends LinearLayout {
            if (Intent.ACTION_USER_SWITCHED.equals(action)) {
                int currentUserId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1);
                onUserSwitched(currentUserId);
            } else if (Intent.ACTION_MANAGED_PROFILE_REMOVED.equals(action)) {
                UserHandle removedProfile = intent.getParcelableExtra(Intent.EXTRA_USER);
                onManagedProfileRemoved(removedProfile);
            }
        }
    };
@@ -205,6 +208,7 @@ class NavigationBarApps extends LinearLayout {

        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_USER_SWITCHED);
        filter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED);
        mContext.registerReceiver(mBroadcastReceiver, filter);

        mAppPackageMonitor.register(mContext, null, UserHandle.ALL, true);
@@ -571,4 +575,17 @@ class NavigationBarApps extends LinearLayout {
        sAppsModel.setCurrentUser(currentUserId);
        recreateAppButtons();
    }

    private void onManagedProfileRemoved(UserHandle removedProfile) {
        boolean removedApps = false;
        for(int i = sAppsModel.getAppCount() - 1; i >= 0; --i) {
            AppInfo appInfo = sAppsModel.getApp(i);
            if (!appInfo.getUser().equals(removedProfile)) continue;

            removeViewAt(i);
            sAppsModel.removeApp(i);
            removedApps = true;
        }
        if (removedApps) sAppsModel.savePrefs();
    }
}