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

Commit b18d58bd authored by Amith Yamasani's avatar Amith Yamasani Committed by Android (Google) Code Review
Browse files

Merge "Simplify User management settings to bare minimum" into jb-mr1-dev

parents 9e0fdfec 8e79d3ec
Loading
Loading
Loading
Loading
+0 −37
Original line number Diff line number Diff line
@@ -33,41 +33,4 @@
                />
    </PreferenceCategory>

    <PreferenceCategory
            android:key="restrictions_category"
            android:title="@string/user_restrictions_heading">
        <Preference
                android:key="associated_account"
                android:title="@string/user_account_title"
                android:enabled="false"
                android:persistent="false"
                />
        <CheckBoxPreference
                android:key="market_requires_pin"
                android:title="@string/user_market_requires_pin"
                android:persistent="false"
                android:enabled="false"
                />
        <ListPreference
                android:key="content_rating"
                android:title="@string/user_max_content_rating"
                android:entries="@array/user_content_ratings_entries"
                android:entryValues="@array/user_content_ratings_values"
                android:persistent="false"
                android:enabled="false"
                />
    </PreferenceCategory>

    <PreferenceCategory
            android:key="system_apps_category"
            android:title="@string/user_system_apps_heading">
        <!-- Dynamically added content -->
    </PreferenceCategory>

    <PreferenceCategory
            android:key="market_apps_category"
            android:title="@string/user_market_apps_heading">
        <!-- Dynamically added content -->
    </PreferenceCategory>

</PreferenceScreen>
+1 −89
Original line number Diff line number Diff line
@@ -65,31 +65,14 @@ public class UserDetailsSettings extends SettingsPreferenceFragment

    private static final String KEY_USER_NAME = "user_name";
    private static final String KEY_USER_PICTURE = "user_picture";
    private static final String KEY_INSTALLED_APPS = "market_apps_category";
    private static final String KEY_SYSTEM_APPS = "system_apps_category";
    private static final String KEY_ACCOUNT = "associated_account";
    private static final String KEY_RESTRICTIONS = "restrictions_category";

    public static final String EXTRA_USER_ID = "user_id";

    private static final int RESULT_PICK_IMAGE = 1;
    private static final int RESULT_CROP_IMAGE = 2;

    static class AppState {
        boolean dirty;
        boolean enabled;

        AppState(boolean enabled) {
            this.enabled = enabled;
        }
    }

    private HashMap<String, AppState> mAppStates = new HashMap<String, AppState>();
    private PreferenceGroup mSystemAppGroup;
    private PreferenceGroup mInstalledAppGroup;
    private EditTextPreference mNamePref;
    private Preference mPicturePref;
    private Preference mAccountPref;

    private IPackageManager mIPm;
    private PackageManager mPm;
@@ -110,20 +93,10 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
        if (mUserId == -1) {
            mUserId = mUm.createUser(getString(R.string.user_new_user_name), 0).id;
        }
        mSystemAppGroup = (PreferenceGroup) findPreference(KEY_SYSTEM_APPS);
        mInstalledAppGroup = (PreferenceGroup) findPreference(KEY_INSTALLED_APPS);
        mNamePref = (EditTextPreference) findPreference(KEY_USER_NAME);
        mNamePref.setOnPreferenceChangeListener(this);
        mPicturePref = findPreference(KEY_USER_PICTURE);
        mPicturePref.setOnPreferenceClickListener(this);
        mAccountPref = findPreference(KEY_ACCOUNT);
        mAccountPref.setOnPreferenceClickListener(this);

        if (mUserId == 0) {
            getPreferenceScreen().removePreference(mSystemAppGroup);
            getPreferenceScreen().removePreference(mInstalledAppGroup);
            getPreferenceScreen().removePreference(findPreference(KEY_RESTRICTIONS));
        }
        setHasOptionsMenu(true);
    }

@@ -136,7 +109,6 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
        } else {
            initNewUser();
        }
        refreshApps();
    }

    @Override
@@ -198,63 +170,6 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
        finish();
    }

    private void insertAppInfo(PreferenceGroup group, HashMap<String, AppState> appStateMap,
            PackageInfo info, boolean defaultState) {
        if (info != null) {
            String pkgName = info.packageName;
            String name = info.applicationInfo.loadLabel(mPm).toString();
            Drawable icon = info.applicationInfo.loadIcon(mPm);
            AppState appState = appStateMap.get(info.packageName);
            boolean enabled = appState == null ? defaultState : appState.enabled;
            CheckBoxPreference appPref = new CheckBoxPreference(getActivity());
            appPref.setTitle(name != null ? name : pkgName);
            appPref.setIcon(icon);
            appPref.setChecked(enabled);
            appPref.setKey(pkgName);
            appPref.setPersistent(false);
            appPref.setOnPreferenceChangeListener(this);
            group.addPreference(appPref);
        }
    }

    private void refreshApps() {
        if (mUserId == 0) return;
        mSystemAppGroup.removeAll();
        mInstalledAppGroup.removeAll();

        boolean firstTime = mAppStates.isEmpty();

        final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        List<ResolveInfo> apps = mPm.queryIntentActivities(mainIntent, 0);

        for (ResolveInfo resolveInfo : apps) {
            PackageInfo info;
            try {
                info = mIPm.getPackageInfo(resolveInfo.activityInfo.packageName,
                        0 /* flags */,
                    mUserId < 0 ? 0 : mUserId);
            } catch (RemoteException re) {
                continue;
            }
            if (firstTime) {
                mAppStates.put(resolveInfo.activityInfo.packageName,
                        new AppState(info.applicationInfo.enabled));
            }
            if ((info.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
                if (mSystemAppGroup.findPreference(info.packageName) != null) {
                    continue;
                }
                insertAppInfo(mSystemAppGroup, mAppStates, info, false);
            } else {
                if (mInstalledAppGroup.findPreference(info.packageName) != null) {
                    continue;
                }
                insertAppInfo(mInstalledAppGroup, mAppStates, info, false);
            }
        }
    }

    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        if (preference instanceof CheckBoxPreference) {
@@ -300,10 +215,7 @@ public class UserDetailsSettings extends SettingsPreferenceFragment

    @Override
    public boolean onPreferenceClick(Preference preference) {
        if (preference == mAccountPref) {
//            Intent launch = AccountManager.newChooseAccountsIntent(null, null, new String[]{"com.google"}, false, null,
//                    null, null, null);
        } else if (preference == mPicturePref) {
        if (preference == mPicturePref) {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);