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

Commit fae4a885 authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Use disabled print services instead of enabled print services in print settings.

Change-Id: I32bc8a8dda86f92b180f043a98b304fe676db98c
parent 738e6db7
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -191,13 +191,13 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment

    private void onPreferenceToggled(String preferenceKey, boolean enabled) {
        ComponentName service = ComponentName.unflattenFromString(preferenceKey);
        List<ComponentName> services = PrintSettingsUtils.readEnabledPrintServices(getActivity());
        List<ComponentName> services = PrintSettingsUtils.readDisabledPrintServices(getActivity());
        if (enabled) {
            services.add(service);
        } else {
            services.remove(service);
        } else {
            services.add(service);
        }
        PrintSettingsUtils.writeEnabledPrintServices(getActivity(), services);
        PrintSettingsUtils.writeDisabledPrintServices(getActivity(), services);
    }

    private ListView getBackupListView() {
@@ -253,8 +253,9 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
    }

    private void updateUiForServiceState() {
        List<ComponentName> services = PrintSettingsUtils.readEnabledPrintServices(getActivity());
        mServiceEnabled = services.contains(mComponentName);
        List<ComponentName> disabledServices = PrintSettingsUtils
                .readDisabledPrintServices(getActivity());
        mServiceEnabled = !disabledServices.contains(mComponentName);
        if (mServiceEnabled) {
            mSwitchBar.setCheckedInternal(true);
            mPrintersAdapter.enable();
@@ -431,7 +432,7 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment

        public void register(ContentResolver contentResolver) {
            contentResolver.registerContentObserver(android.provider.Settings.Secure.getUriFor(
                    android.provider.Settings.Secure.ENABLED_PRINT_SERVICES), false, this);
                    android.provider.Settings.Secure.DISABLED_PRINT_SERVICES), false, this);
        }

        public void unregister(ContentResolver contentResolver) {
+4 −4
Original line number Diff line number Diff line
@@ -207,8 +207,8 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment
            mPrintServicesCategory.removeAll();
        }

        List<ComponentName> enabledServices = PrintSettingsUtils
                .readEnabledPrintServices(getActivity());
        List<ComponentName> disabledServices = PrintSettingsUtils
                .readDisabledPrintServices(getActivity());

        final PackageManager pm = getActivity().getPackageManager();

@@ -236,7 +236,7 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment
            preference.setFragment(PrintServiceSettingsFragment.class.getName());
            preference.setPersistent(false);

            final boolean serviceEnabled = enabledServices.contains(componentName);
            final boolean serviceEnabled = !disabledServices.contains(componentName);
            if (serviceEnabled) {
                preference.setSummary(getString(R.string.print_feature_state_on));
            } else {
@@ -388,7 +388,7 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment

        public void register(ContentResolver contentResolver) {
            contentResolver.registerContentObserver(Settings.Secure.getUriFor(
                    Settings.Secure.ENABLED_PRINT_SERVICES), false, this);
                    Settings.Secure.DISABLED_PRINT_SERVICES), false, this);
        }

        public void unregister(ContentResolver contentResolver) {
+16 −16
Original line number Diff line number Diff line
@@ -30,50 +30,50 @@ import java.util.List;
 */
public class PrintSettingsUtils {

    private static final char ENABLED_PRINT_SERVICES_SEPARATOR = ':';
    private static final char DISABLED_PRINT_SERVICES_SEPARATOR = ':';

    private PrintSettingsUtils() {
        /* do nothing */
    }

    public static List<ComponentName> readEnabledPrintServices(Context context) {
        List<ComponentName> enabledServices = new ArrayList<ComponentName>();
    public static List<ComponentName> readDisabledPrintServices(Context context) {
        List<ComponentName> disabledServices = new ArrayList<ComponentName>();

        String enabledServicesSetting = Settings.Secure.getString(context
                .getContentResolver(), Settings.Secure.ENABLED_PRINT_SERVICES);
        if (TextUtils.isEmpty(enabledServicesSetting)) {
            return enabledServices;
        String disabledServicesSetting = Settings.Secure.getString(context
                .getContentResolver(), Settings.Secure.DISABLED_PRINT_SERVICES);
        if (TextUtils.isEmpty(disabledServicesSetting)) {
            return disabledServices;
        }

        SimpleStringSplitter colonSplitter = new SimpleStringSplitter(
                ENABLED_PRINT_SERVICES_SEPARATOR);
        colonSplitter.setString(enabledServicesSetting);
                DISABLED_PRINT_SERVICES_SEPARATOR);
        colonSplitter.setString(disabledServicesSetting);

        while (colonSplitter.hasNext()) {
            String componentNameString = colonSplitter.next();
            ComponentName enabledService = ComponentName.unflattenFromString(
            ComponentName disabledService = ComponentName.unflattenFromString(
                    componentNameString);
            if (enabledService != null) {
                enabledServices.add(enabledService);
            if (disabledService != null) {
                disabledServices.add(disabledService);
            }
        }

        return enabledServices;
        return disabledServices;
    }

    public static void writeEnabledPrintServices(Context context,
    public static void writeDisabledPrintServices(Context context,
            List<ComponentName> services) {
        StringBuilder builder = new StringBuilder();
        final int serviceCount = services.size();
        for (int i = 0; i < serviceCount; i++) {
            ComponentName service = services.get(i);
            if (builder.length() > 0) {
                builder.append(ENABLED_PRINT_SERVICES_SEPARATOR);
                builder.append(DISABLED_PRINT_SERVICES_SEPARATOR);
            }
            builder.append(service.flattenToString());
        }
        Settings.Secure.putString(context.getContentResolver(),
                Settings.Secure.ENABLED_PRINT_SERVICES,
                Settings.Secure.DISABLED_PRINT_SERVICES,
                builder.toString());
    }
}