12d531653595344ed7e61c093dca308b9ba7ec185Svetoslav/*
22d531653595344ed7e61c093dca308b9ba7ec185Svetoslav * Copyright (C) 2013 The Android Open Source Project
32d531653595344ed7e61c093dca308b9ba7ec185Svetoslav *
42d531653595344ed7e61c093dca308b9ba7ec185Svetoslav * Licensed under the Apache License, Version 2.0 (the "License");
52d531653595344ed7e61c093dca308b9ba7ec185Svetoslav * you may not use this file except in compliance with the License.
62d531653595344ed7e61c093dca308b9ba7ec185Svetoslav * You may obtain a copy of the License at
72d531653595344ed7e61c093dca308b9ba7ec185Svetoslav *
82d531653595344ed7e61c093dca308b9ba7ec185Svetoslav *      http://www.apache.org/licenses/LICENSE-2.0
92d531653595344ed7e61c093dca308b9ba7ec185Svetoslav *
102d531653595344ed7e61c093dca308b9ba7ec185Svetoslav * Unless required by applicable law or agreed to in writing, software
112d531653595344ed7e61c093dca308b9ba7ec185Svetoslav * distributed under the License is distributed on an "AS IS" BASIS,
122d531653595344ed7e61c093dca308b9ba7ec185Svetoslav * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132d531653595344ed7e61c093dca308b9ba7ec185Svetoslav * See the License for the specific language governing permissions and
142d531653595344ed7e61c093dca308b9ba7ec185Svetoslav * limitations under the License.
152d531653595344ed7e61c093dca308b9ba7ec185Svetoslav */
162d531653595344ed7e61c093dca308b9ba7ec185Svetoslav
172d531653595344ed7e61c093dca308b9ba7ec185Svetoslavpackage com.android.settings.print;
182d531653595344ed7e61c093dca308b9ba7ec185Svetoslav
192d531653595344ed7e61c093dca308b9ba7ec185Svetoslavimport android.content.ComponentName;
202d531653595344ed7e61c093dca308b9ba7ec185Svetoslavimport android.content.Context;
212d531653595344ed7e61c093dca308b9ba7ec185Svetoslavimport android.provider.Settings;
222d531653595344ed7e61c093dca308b9ba7ec185Svetoslavimport android.text.TextUtils.SimpleStringSplitter;
232d531653595344ed7e61c093dca308b9ba7ec185Svetoslav
242d531653595344ed7e61c093dca308b9ba7ec185Svetoslavimport java.util.ArrayList;import java.util.List;
252d531653595344ed7e61c093dca308b9ba7ec185Svetoslav
262d531653595344ed7e61c093dca308b9ba7ec185Svetoslav/**
272d531653595344ed7e61c093dca308b9ba7ec185Svetoslav * Helper methods for reading and writing to print settings.
282d531653595344ed7e61c093dca308b9ba7ec185Svetoslav */
292d531653595344ed7e61c093dca308b9ba7ec185Svetoslavpublic class SettingsUtils {
302d531653595344ed7e61c093dca308b9ba7ec185Svetoslav
312d531653595344ed7e61c093dca308b9ba7ec185Svetoslav    private static final char ENABLED_PRINT_SERVICES_SEPARATOR = ':';
322d531653595344ed7e61c093dca308b9ba7ec185Svetoslav
332d531653595344ed7e61c093dca308b9ba7ec185Svetoslav    private SettingsUtils() {
342d531653595344ed7e61c093dca308b9ba7ec185Svetoslav        /* do nothing */
352d531653595344ed7e61c093dca308b9ba7ec185Svetoslav    }
362d531653595344ed7e61c093dca308b9ba7ec185Svetoslav
372d531653595344ed7e61c093dca308b9ba7ec185Svetoslav    public static List<ComponentName> readEnabledPrintServices(Context context) {
382d531653595344ed7e61c093dca308b9ba7ec185Svetoslav        List<ComponentName> enabledServices = new ArrayList<ComponentName>();
392d531653595344ed7e61c093dca308b9ba7ec185Svetoslav
402d531653595344ed7e61c093dca308b9ba7ec185Svetoslav        String enabledServicesSetting = Settings.Secure.getString(context
412d531653595344ed7e61c093dca308b9ba7ec185Svetoslav                .getContentResolver(), Settings.Secure.ENABLED_PRINT_SERVICES);
422d531653595344ed7e61c093dca308b9ba7ec185Svetoslav        if (enabledServicesSetting == null) {
432d531653595344ed7e61c093dca308b9ba7ec185Svetoslav            return enabledServices;
442d531653595344ed7e61c093dca308b9ba7ec185Svetoslav        }
452d531653595344ed7e61c093dca308b9ba7ec185Svetoslav
462d531653595344ed7e61c093dca308b9ba7ec185Svetoslav        SimpleStringSplitter colonSplitter = new SimpleStringSplitter(
472d531653595344ed7e61c093dca308b9ba7ec185Svetoslav                ENABLED_PRINT_SERVICES_SEPARATOR);
482d531653595344ed7e61c093dca308b9ba7ec185Svetoslav        colonSplitter.setString(enabledServicesSetting);
492d531653595344ed7e61c093dca308b9ba7ec185Svetoslav
502d531653595344ed7e61c093dca308b9ba7ec185Svetoslav        while (colonSplitter.hasNext()) {
512d531653595344ed7e61c093dca308b9ba7ec185Svetoslav            String componentNameString = colonSplitter.next();
522d531653595344ed7e61c093dca308b9ba7ec185Svetoslav            ComponentName enabledService = ComponentName.unflattenFromString(
532d531653595344ed7e61c093dca308b9ba7ec185Svetoslav                    componentNameString);
542d531653595344ed7e61c093dca308b9ba7ec185Svetoslav            enabledServices.add(enabledService);
552d531653595344ed7e61c093dca308b9ba7ec185Svetoslav        }
562d531653595344ed7e61c093dca308b9ba7ec185Svetoslav
572d531653595344ed7e61c093dca308b9ba7ec185Svetoslav        return enabledServices;
582d531653595344ed7e61c093dca308b9ba7ec185Svetoslav    }
592d531653595344ed7e61c093dca308b9ba7ec185Svetoslav
602d531653595344ed7e61c093dca308b9ba7ec185Svetoslav    public static void writeEnabledPrintServices(Context context,
612d531653595344ed7e61c093dca308b9ba7ec185Svetoslav            List<ComponentName> services) {
622d531653595344ed7e61c093dca308b9ba7ec185Svetoslav        StringBuilder builder = new StringBuilder();
632d531653595344ed7e61c093dca308b9ba7ec185Svetoslav        final int serviceCount = services.size();
642d531653595344ed7e61c093dca308b9ba7ec185Svetoslav        for (int i = 0; i < serviceCount; i++) {
652d531653595344ed7e61c093dca308b9ba7ec185Svetoslav            ComponentName service = services.get(i);
662d531653595344ed7e61c093dca308b9ba7ec185Svetoslav            if (builder.length() > 0) {
672d531653595344ed7e61c093dca308b9ba7ec185Svetoslav                builder.append(ENABLED_PRINT_SERVICES_SEPARATOR);
682d531653595344ed7e61c093dca308b9ba7ec185Svetoslav            }
692d531653595344ed7e61c093dca308b9ba7ec185Svetoslav            builder.append(service.flattenToString());
702d531653595344ed7e61c093dca308b9ba7ec185Svetoslav        }
712d531653595344ed7e61c093dca308b9ba7ec185Svetoslav        Settings.Secure.putString(context.getContentResolver(),
722d531653595344ed7e61c093dca308b9ba7ec185Svetoslav                Settings.Secure.ENABLED_PRINT_SERVICES,
732d531653595344ed7e61c093dca308b9ba7ec185Svetoslav                builder.toString());
742d531653595344ed7e61c093dca308b9ba7ec185Svetoslav    }
752d531653595344ed7e61c093dca308b9ba7ec185Svetoslav}
76