17d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/*
27d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Copyright (C) 2009 The Android Open Source Project
37d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon *
47d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Licensed under the Apache License, Version 2.0 (the "License");
57d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * you may not use this file except in compliance with the License.
67d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * You may obtain a copy of the License at
77d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon *
87d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon *      http://www.apache.org/licenses/LICENSE-2.0
97d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon *
107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Unless required by applicable law or agreed to in writing, software
117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * distributed under the License is distributed on an "AS IS" BASIS,
127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * See the License for the specific language governing permissions and
147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * limitations under the License.
157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */
167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpackage com.android.phone;
197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.Bundle;
217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.preference.CheckBoxPreference;
227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.preference.ListPreference;
237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.preference.Preference;
247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.preference.PreferenceScreen;
257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.preference.PreferenceActivity;
267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport com.android.internal.telephony.Phone;
277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport com.android.internal.telephony.RILConstants;
287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.AsyncResult;
307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.Handler;
317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.Message;
327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.util.Log;
337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/**
367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * List of Phone-specific settings screens.
377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */
387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpublic class CellBroadcastSms extends PreferenceActivity
397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        implements Preference.OnPreferenceChangeListener{
407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    // debug data
417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String LOG_TAG = "CellBroadcastSms";
427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final boolean DBG = false;
437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    //String keys for preference lookup
457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_ENABLE_DISABLE_BC_SMS_KEY =
467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_enable_disable_cell_bc_sms";
477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String LIST_LANGUAGE_KEY =
487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "list_language";
497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_EMERGENCY_BROADCAST_KEY =
507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_emergency_broadcast";
517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_ADMINISTRATIVE_KEY =
527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_administrative";
537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_MAINTENANCE_KEY =
547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_maintenance";
557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_LOCAL_WEATHER_KEY =
567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_local_weather";
577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_ATR_KEY =
587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_atr";
597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_LAFS_KEY =
607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_lafs";
617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_RESTAURANTS_KEY =
627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_restaurants";
637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_LODGINGS_KEY =
647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_lodgings";
657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_RETAIL_DIRECTORY_KEY =
667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_retail_directory";
677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_ADVERTISEMENTS_KEY =
687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_advertisements";
697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_STOCK_QUOTES_KEY =
707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_stock_quotes";
717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_EO_KEY =
727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_eo";
737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_MHH_KEY =
747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_mhh";
757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_TECHNOLOGY_NEWS_KEY =
767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_technology_news";
777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_MULTI_CATEGORY_KEY =
787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_multi_category";
797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_LOCAL_GENERAL_NEWS_KEY =
817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_local_general_news";
827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_REGIONAL_GENERAL_NEWS_KEY =
837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_regional_general_news";
847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_NATIONAL_GENERAL_NEWS_KEY =
857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_national_general_news";
867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_INTERNATIONAL_GENERAL_NEWS_KEY =
877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_international_general_news";
887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_LOCAL_BF_NEWS_KEY =
907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_local_bf_news";
917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_REGIONAL_BF_NEWS_KEY =
927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_regional_bf_news";
937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_NATIONAL_BF_NEWS_KEY =
947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_national_bf_news";
957d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_INTERNATIONAL_BF_NEWS_KEY =
967d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_international_bf_news";
977d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
987d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_LOCAL_SPORTS_NEWS_KEY =
997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_local_sports_news";
1007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_REGIONAL_SPORTS_NEWS_KEY =
1017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_regional_sports_news";
1027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_NATIONAL_SPORTS_NEWS_KEY =
1037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_national_sports_news";
1047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_INTERNATIONAL_SPORTS_NEWS_KEY =
1057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_international_sports_news";
1067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
1077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_LOCAL_ENTERTAINMENT_NEWS_KEY =
1087d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_local_entertainment_news";
1097d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_REGIONAL_ENTERTAINMENT_NEWS_KEY =
1107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_regional_entertainment_news";
1117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_NATIONAL_ENTERTAINMENT_NEWS_KEY =
1127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_national_entertainment_news";
1137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String BUTTON_INTERNATIONAL_ENTERTAINMENT_NEWS_KEY =
1147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        "button_international_entertainment_news";
1157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
1167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    //Class constants
1177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    //These values are related to the C structs. See the comments in  method
1187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    //setCbSmsConfig for more information.
1197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final int NO_OF_SERVICE_CATEGORIES = 31;
1207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final int NO_OF_INTS_STRUCT_1 = 3;
1217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final int MAX_LENGTH_RESULT = NO_OF_SERVICE_CATEGORIES * NO_OF_INTS_STRUCT_1 + 1;
1227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    //Handler keys
1237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final int MESSAGE_ACTIVATE_CB_SMS = 1;
1247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final int MESSAGE_GET_CB_SMS_CONFIG = 2;
1257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final int MESSAGE_SET_CB_SMS_CONFIG = 3;
1267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
1277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    //UI objects
1287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonBcSms;
1297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
1307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private ListPreference mListLanguage;
1317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
1327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonEmergencyBroadcast;
1337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonAdministrative;
1347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonMaintenance;
1357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonLocalWeather;
1367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonAtr;
1377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonLafs;
1387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonRestaurants;
1397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonLodgings;
1407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonRetailDirectory;
1417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonAdvertisements;
1427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonStockQuotes;
1437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonEo;
1447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonMhh;
1457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonTechnologyNews;
1467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonMultiCategory;
1477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
1487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonLocal1;
1497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonRegional1;
1507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonNational1;
1517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonInternational1;
1527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
1537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonLocal2;
1547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonRegional2;
1557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonNational2;
1567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonInternational2;
1577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
1587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonLocal3;
1597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonRegional3;
1607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonNational3;
1617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonInternational3;
1627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
1637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonLocal4;
1647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonRegional4;
1657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonNational4;
1667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private CheckBoxPreference mButtonInternational4;
1677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
1687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
1697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    //Member variables
1707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private Phone mPhone;
1717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private MyHandler mHandler;
1727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
1737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    /**
1747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * Invoked on each preference click in this hierarchy, overrides
1757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * PreferenceActivity's implementation.  Used to make sure we track the
1767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     * preference click events.
1777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon     */
1787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    @Override
1797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
1807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            Preference preference) {
1817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        if (preference == mButtonBcSms) {
1827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            if (DBG) Log.d(LOG_TAG, "onPreferenceTreeClick: preference == mButtonBcSms.");
1837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            if(mButtonBcSms.isChecked()) {
1847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                mPhone.activateCellBroadcastSms(RILConstants.CDMA_CELL_BROADCAST_SMS_ENABLED,
1857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                        Message.obtain(mHandler, MESSAGE_ACTIVATE_CB_SMS));
1867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
1877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                        android.provider.Settings.Global.CDMA_CELL_BROADCAST_SMS,
1887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                        RILConstants.CDMA_CELL_BROADCAST_SMS_ENABLED);
1897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                enableDisableAllCbConfigButtons(true);
1907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            } else {
1917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                mPhone.activateCellBroadcastSms(RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED,
1927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                        Message.obtain(mHandler, MESSAGE_ACTIVATE_CB_SMS));
1937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
1947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                        android.provider.Settings.Global.CDMA_CELL_BROADCAST_SMS,
1957d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                        RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED);
1967d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                enableDisableAllCbConfigButtons(false);
1977d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            }
1987d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mListLanguage) {
1997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //Do nothing here, because this click will be handled in onPreferenceChange
2007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonEmergencyBroadcast) {
2017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonEmergencyBroadcast.isChecked(), 1);
2037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(
2047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonEmergencyBroadcast.isChecked(), 1);
2057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonAdministrative) {
2067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonAdministrative.isChecked(), 2);
2087d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonAdministrative.isChecked(), 2);
2097d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonMaintenance) {
2107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonMaintenance.isChecked(), 3);
2127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonMaintenance.isChecked(), 3);
2137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonLocalWeather) {
2147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonLocalWeather.isChecked(), 20);
2167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonLocalWeather.isChecked(), 20);
2177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonAtr) {
2187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonAtr.isChecked(), 21);
2197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonAtr.isChecked(), 21);
2207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonLafs) {
2217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonLafs.isChecked(), 22);
2227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonLafs.isChecked(), 22);
2237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonRestaurants) {
2247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonRestaurants.isChecked(), 23);
2267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonRestaurants.isChecked(), 23);
2277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonLodgings) {
2287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonLodgings.isChecked(), 24);
2297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonLodgings.isChecked(), 24);
2307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonRetailDirectory) {
2317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonRetailDirectory.isChecked(), 25);
2337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonRetailDirectory.isChecked(), 25);
2347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonAdvertisements) {
2357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonAdvertisements.isChecked(), 26);
2377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonAdvertisements.isChecked(), 26);
2387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonStockQuotes) {
2397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonStockQuotes.isChecked(), 27);
2417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonStockQuotes.isChecked(), 27);
2427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonEo) {
2437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonEo.isChecked(), 28);
2447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonEo.isChecked(), 28);
2457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonMhh) {
2467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonMhh.isChecked(), 29);
2477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonMhh.isChecked(), 29);
2487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonTechnologyNews) {
2497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonTechnologyNews.isChecked(), 30);
2517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonTechnologyNews.isChecked(), 30);
2527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonMultiCategory) {
2537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonMultiCategory.isChecked(), 31);
2557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonMultiCategory.isChecked(), 31);
2567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonLocal1) {
2577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonLocal1.isChecked(), 4);
2587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonLocal1.isChecked(), 4);
2597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonRegional1) {
2607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonRegional1.isChecked(), 5);
2627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonRegional1.isChecked(), 5);
2637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonNational1) {
2647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonNational1.isChecked(), 6);
2667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonNational1.isChecked(), 6);
2677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonInternational1) {
2687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonInternational1.isChecked(), 7);
2707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonInternational1.isChecked(), 7);
2717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonLocal2) {
2727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonLocal2.isChecked(), 8);
2737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonLocal2.isChecked(), 8);
2747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonRegional2) {
2757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonRegional2.isChecked(), 9);
2777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonRegional2.isChecked(), 9);
2787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonNational2) {
2797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonNational2.isChecked(), 10);
2817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonNational2.isChecked(), 10);
2827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonInternational2) {
2837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonInternational2.isChecked(), 11);
2857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonInternational2.isChecked(), 11);
2867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonLocal3) {
2877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonLocal3.isChecked(), 12);
2887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonLocal3.isChecked(), 12);
2897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonRegional3) {
2907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonRegional3.isChecked(), 13);
2927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonRegional3.isChecked(), 13);
2937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonNational3) {
2947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2957d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonNational3.isChecked(), 14);
2967d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonNational3.isChecked(), 14);
2977d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonInternational3) {
2987d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
2997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonInternational3.isChecked(), 15);
3007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonInternational3.isChecked(), 15);
3017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonLocal4) {
3027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonLocal4.isChecked(), 16);
3037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonLocal4.isChecked(), 16);
3047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonRegional4) {
3057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
3067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonRegional4.isChecked(), 17);
3077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonRegional4.isChecked(), 17);
3087d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonNational4) {
3097d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
3107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonNational4.isChecked(), 18);
3117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonNational4.isChecked(), 18);
3127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else if (preference == mButtonInternational4) {
3137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
3147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonInternational4.isChecked(), 19);
3157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonInternational4.isChecked(), 19);
3167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else {
3177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            preferenceScreen.setEnabled(false);
3187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            return false;
3197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        }
3207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
3217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        return true;
3227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
3237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
3247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    public boolean onPreferenceChange(Preference preference, Object objValue) {
3257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        if (preference == mListLanguage) {
3267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            // set the new language to the array which will be transmitted later
3277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setConfigDataCompleteLanguage(
3287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mListLanguage.findIndexOfValue((String) objValue) + 1);
3297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        }
3307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
3317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // always let the preference setting proceed.
3327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        return true;
3337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
3347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
3357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    public void onCreate(Bundle icicle) {
3367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        super.onCreate(icicle);
3377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
3387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        addPreferencesFromResource(R.xml.cell_broadcast_sms);
3397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
3407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mPhone = PhoneGlobals.getPhone();
3417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mHandler = new MyHandler();
3427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
3437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        PreferenceScreen prefSet = getPreferenceScreen();
3447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
3457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonBcSms = (CheckBoxPreference) prefSet.findPreference(
3467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_ENABLE_DISABLE_BC_SMS_KEY);
3477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mListLanguage = (ListPreference) prefSet.findPreference(
3487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                LIST_LANGUAGE_KEY);
3497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // set the listener for the language list preference
3507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mListLanguage.setOnPreferenceChangeListener(this);
3517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonEmergencyBroadcast = (CheckBoxPreference) prefSet.findPreference(
3527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_EMERGENCY_BROADCAST_KEY);
3537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonAdministrative = (CheckBoxPreference) prefSet.findPreference(
3547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_ADMINISTRATIVE_KEY);
3557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonMaintenance = (CheckBoxPreference) prefSet.findPreference(
3567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_MAINTENANCE_KEY);
3577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLocalWeather = (CheckBoxPreference) prefSet.findPreference(
3587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_LOCAL_WEATHER_KEY);
3597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonAtr = (CheckBoxPreference) prefSet.findPreference(
3607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_ATR_KEY);
3617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLafs = (CheckBoxPreference) prefSet.findPreference(
3627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_LAFS_KEY);
3637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRestaurants = (CheckBoxPreference) prefSet.findPreference(
3647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_RESTAURANTS_KEY);
3657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLodgings = (CheckBoxPreference) prefSet.findPreference(
3667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_LODGINGS_KEY);
3677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRetailDirectory = (CheckBoxPreference) prefSet.findPreference(
3687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_RETAIL_DIRECTORY_KEY);
3697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonAdvertisements = (CheckBoxPreference) prefSet.findPreference(
3707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_ADVERTISEMENTS_KEY);
3717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonStockQuotes = (CheckBoxPreference) prefSet.findPreference(
3727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_STOCK_QUOTES_KEY);
3737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonEo = (CheckBoxPreference) prefSet.findPreference(
3747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_EO_KEY);
3757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonMhh = (CheckBoxPreference) prefSet.findPreference(
3767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_MHH_KEY);
3777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonTechnologyNews = (CheckBoxPreference) prefSet.findPreference(
3787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_TECHNOLOGY_NEWS_KEY);
3797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonMultiCategory = (CheckBoxPreference) prefSet.findPreference(
3807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_MULTI_CATEGORY_KEY);
3817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
3827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLocal1 = (CheckBoxPreference) prefSet.findPreference(
3837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_LOCAL_GENERAL_NEWS_KEY);
3847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRegional1 = (CheckBoxPreference) prefSet.findPreference(
3857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_REGIONAL_GENERAL_NEWS_KEY);
3867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonNational1 = (CheckBoxPreference) prefSet.findPreference(
3877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_NATIONAL_GENERAL_NEWS_KEY);
3887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonInternational1 = (CheckBoxPreference) prefSet.findPreference(
3897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_INTERNATIONAL_GENERAL_NEWS_KEY);
3907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
3917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLocal2 = (CheckBoxPreference) prefSet.findPreference(
3927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_LOCAL_BF_NEWS_KEY);
3937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRegional2 = (CheckBoxPreference) prefSet.findPreference(
3947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_REGIONAL_BF_NEWS_KEY);
3957d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonNational2 = (CheckBoxPreference) prefSet.findPreference(
3967d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_NATIONAL_BF_NEWS_KEY);
3977d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonInternational2 = (CheckBoxPreference) prefSet.findPreference(
3987d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_INTERNATIONAL_BF_NEWS_KEY);
3997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLocal3 = (CheckBoxPreference) prefSet.findPreference(
4017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_LOCAL_SPORTS_NEWS_KEY);
4027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRegional3 = (CheckBoxPreference) prefSet.findPreference(
4037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_REGIONAL_SPORTS_NEWS_KEY);
4047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonNational3 = (CheckBoxPreference) prefSet.findPreference(
4057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_NATIONAL_SPORTS_NEWS_KEY);
4067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonInternational3 = (CheckBoxPreference) prefSet.findPreference(
4077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_INTERNATIONAL_SPORTS_NEWS_KEY);
4087d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4097d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLocal4 = (CheckBoxPreference) prefSet.findPreference(
4107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_LOCAL_ENTERTAINMENT_NEWS_KEY);
4117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRegional4 = (CheckBoxPreference) prefSet.findPreference(
4127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_REGIONAL_ENTERTAINMENT_NEWS_KEY);
4137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonNational4 = (CheckBoxPreference) prefSet.findPreference(
4147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_NATIONAL_ENTERTAINMENT_NEWS_KEY);
4157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonInternational4 = (CheckBoxPreference) prefSet.findPreference(
4167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                BUTTON_INTERNATIONAL_ENTERTAINMENT_NEWS_KEY);
4177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
4187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    @Override
4207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    protected void onResume() {
4217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        super.onResume();
4227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        getPreferenceScreen().setEnabled(true);
4247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        int settingCbSms = android.provider.Settings.Global.getInt(
4267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                mPhone.getContext().getContentResolver(),
4277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                android.provider.Settings.Global.CDMA_CELL_BROADCAST_SMS,
4287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED);
4297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonBcSms.setChecked(settingCbSms == RILConstants.CDMA_CELL_BROADCAST_SMS_ENABLED);
4307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        if(mButtonBcSms.isChecked()) {
4327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            enableDisableAllCbConfigButtons(true);
4337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } else {
4347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            enableDisableAllCbConfigButtons(false);
4357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        }
4367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mPhone.getCellBroadcastSmsConfig(Message.obtain(mHandler, MESSAGE_GET_CB_SMS_CONFIG));
4387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
4397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    @Override
4417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    protected void onPause() {
4427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        super.onPause();
4437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            CellBroadcastSmsConfig.setCbSmsNoOfStructs(NO_OF_SERVICE_CATEGORIES);
4457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            mPhone.setCellBroadcastSmsConfig(CellBroadcastSmsConfig.getCbSmsAllValues(),
4477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    Message.obtain(mHandler, MESSAGE_SET_CB_SMS_CONFIG));
4487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        }
4497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private void enableDisableAllCbConfigButtons(boolean enable) {
4517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonEmergencyBroadcast.setEnabled(enable);
4527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mListLanguage.setEnabled(enable);
4537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonAdministrative.setEnabled(enable);
4547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonMaintenance.setEnabled(enable);
4557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLocalWeather.setEnabled(enable);
4567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonAtr.setEnabled(enable);
4577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLafs.setEnabled(enable);
4587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRestaurants.setEnabled(enable);
4597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLodgings.setEnabled(enable);
4607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRetailDirectory.setEnabled(enable);
4617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonAdvertisements.setEnabled(enable);
4627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonStockQuotes.setEnabled(enable);
4637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonEo.setEnabled(enable);
4647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonMhh.setEnabled(enable);
4657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonTechnologyNews.setEnabled(enable);
4667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonMultiCategory.setEnabled(enable);
4677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLocal1.setEnabled(enable);
4697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRegional1.setEnabled(enable);
4707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonNational1.setEnabled(enable);
4717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonInternational1.setEnabled(enable);
4727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLocal2.setEnabled(enable);
4747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRegional2.setEnabled(enable);
4757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonNational2.setEnabled(enable);
4767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonInternational2.setEnabled(enable);
4777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLocal3.setEnabled(enable);
4797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRegional3.setEnabled(enable);
4807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonNational3.setEnabled(enable);
4817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonInternational3.setEnabled(enable);
4827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLocal4.setEnabled(enable);
4847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRegional4.setEnabled(enable);
4857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonNational4.setEnabled(enable);
4867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonInternational4.setEnabled(enable);
4877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
4887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
4897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private void setAllCbConfigButtons(int[] configArray) {
4907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        //These buttons are in a well defined sequence. If you want to change it,
4917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        //be sure to map the buttons to their corresponding slot in the configArray !
4927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonEmergencyBroadcast.setChecked(configArray[1] != 0);
4937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        //subtract 1, because the values are handled in an array which starts with 0 and not with 1
4947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mListLanguage.setValueIndex(CellBroadcastSmsConfig.getConfigDataLanguage() - 1);
4957d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonAdministrative.setChecked(configArray[2] != 0);
4967d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonMaintenance.setChecked(configArray[3] != 0);
4977d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLocalWeather.setChecked(configArray[20] != 0);
4987d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonAtr.setChecked(configArray[21] != 0);
4997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLafs.setChecked(configArray[22] != 0);
5007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRestaurants.setChecked(configArray[23] != 0);
5017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLodgings.setChecked(configArray[24] != 0);
5027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRetailDirectory.setChecked(configArray[25] != 0);
5037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonAdvertisements.setChecked(configArray[26] != 0);
5047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonStockQuotes.setChecked(configArray[27] != 0);
5057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonEo.setChecked(configArray[28] != 0);
5067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonMhh.setChecked(configArray[29] != 0);
5077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonTechnologyNews.setChecked(configArray[30] != 0);
5087d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonMultiCategory.setChecked(configArray[31] != 0);
5097d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
5107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLocal1.setChecked(configArray[4] != 0);
5117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRegional1.setChecked(configArray[5] != 0);
5127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonNational1.setChecked(configArray[6] != 0);
5137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonInternational1.setChecked(configArray[7] != 0);
5147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
5157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLocal2.setChecked(configArray[8] != 0);
5167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRegional2.setChecked(configArray[9] != 0);
5177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonNational2.setChecked(configArray[10] != 0);
5187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonInternational2.setChecked(configArray[11] != 0);
5197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
5207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLocal3.setChecked(configArray[12] != 0);
5217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRegional3.setChecked(configArray[13] != 0);
5227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonNational3.setChecked(configArray[14] != 0);
5237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonInternational3.setChecked(configArray[15] != 0);
5247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
5257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonLocal4.setChecked(configArray[16] != 0);
5267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonRegional4.setChecked(configArray[17] != 0);
5277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonNational4.setChecked(configArray[18] != 0);
5287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mButtonInternational4.setChecked(configArray[19] != 0);
5297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
5307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
5317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private class MyHandler extends Handler {
5327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
5337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        @Override
5347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        public void handleMessage(Message msg) {
5357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            switch (msg.what) {
5367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            case MESSAGE_ACTIVATE_CB_SMS:
5377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                //Only a log message here, because the received response is always null
5387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                if (DBG) Log.d(LOG_TAG, "Cell Broadcast SMS enabled/disabled.");
5397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                break;
5407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            case MESSAGE_GET_CB_SMS_CONFIG:
5417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                int result[] = (int[])((AsyncResult)msg.obj).result;
5427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
5437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                // check if the actual service categoties table size on the NV is '0'
5447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                if (result[0] == 0) {
5457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    result[0] = NO_OF_SERVICE_CATEGORIES;
5467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
5477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mButtonBcSms.setChecked(false);
5487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mPhone.activateCellBroadcastSms(RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED,
5497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                            Message.obtain(mHandler, MESSAGE_ACTIVATE_CB_SMS));
5507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
5517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                            android.provider.Settings.Global.CDMA_CELL_BROADCAST_SMS,
5527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                            RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED);
5537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    enableDisableAllCbConfigButtons(false);
5547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                }
5557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
5567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                CellBroadcastSmsConfig.setCbSmsConfig(result);
5577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                setAllCbConfigButtons(CellBroadcastSmsConfig.getCbSmsBselectedValues());
5587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
5597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                break;
5607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            case MESSAGE_SET_CB_SMS_CONFIG:
5617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                //Only a log message here, because the received response is always null
5627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                if (DBG) Log.d(LOG_TAG, "Set Cell Broadcast SMS values.");
5637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                break;
5647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            default:
5657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                Log.e(LOG_TAG, "Error! Unhandled message in CellBroadcastSms.java. Message: "
5667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                        + msg.what);
5677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            break;
5687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            }
5697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        }
5707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
5717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
5727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final class CellBroadcastSmsConfig {
5737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
5747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        //The values in this array are stored in a particular order. This order
5757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        //is calculated in the setCbSmsConfig method of this class.
5767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        //For more information see comments below...
5777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        //NO_OF_SERVICE_CATEGORIES +1 is used, because we will leave the first array entry 0
5787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        private static int mBSelected[] = new int[NO_OF_SERVICE_CATEGORIES + 1];
5797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        private static int mConfigDataComplete[] = new int[MAX_LENGTH_RESULT];
5807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
5817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        private static void setCbSmsConfig(int[] configData) {
5827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            if(configData == null) {
5837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                Log.e(LOG_TAG, "Error! No cell broadcast service categories returned.");
5847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                return;
5857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            }
5867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
5877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            if(configData[0] > MAX_LENGTH_RESULT) {
5887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                Log.e(LOG_TAG, "Error! Wrong number of service categories returned from RIL");
5897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                return;
5907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            }
5917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
5927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //The required config values for broadcast SMS are stored in a C struct:
5937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //
5947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //  typedef struct {
5957d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //      int size;
5967d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //      RIL_CDMA_BcServiceInfo *entries;
5977d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //  } RIL_CDMA_BcSMSConfig;
5987d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //
5997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //  typedef struct {
6007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //      int uServiceCategory;
6017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //      int uLanguage;
6027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //      unsigned char bSelected;
6037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //  } RIL_CDMA_BcServiceInfo;
6047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //
6057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            // This means, that we have to ignore the first value and check every
6067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            // 3rd value starting with the 2nd of all. This value indicates, where we
6077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            // will store the appropriate bSelected value, which is 2 values behind it.
6087d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            for(int i = 1; i < configData.length; i += NO_OF_INTS_STRUCT_1) {
6097d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                mBSelected[configData[i]] = configData[i +2];
6107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            }
6117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
6127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //Store all values in an extra array
6137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            mConfigDataComplete = configData;
6147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        }
6157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
6167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        private static void setCbSmsBSelectedValue(boolean value, int pos) {
6177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            if(pos < mBSelected.length) {
6187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                mBSelected[pos] = (value == true ? 1 : 0);
6197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            } else {
6207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                Log.e(LOG_TAG,"Error! Invalid value position.");
6217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            }
6227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        }
6237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
6247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        private static int[] getCbSmsBselectedValues() {
6257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            return(mBSelected);
6267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        }
6277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
6287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        // TODO: Change the return value to a RIL_BroadcastSMSConfig
6297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        private static int[] getCbSmsAllValues() {
6307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            return(mConfigDataComplete);
6317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        }
6327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
6337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        private static void setCbSmsNoOfStructs(int value) {
6347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //Sets the size parameter, which contains the number of structs
6357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //that will be transmitted
6367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            mConfigDataComplete[0] = value;
6377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        }
6387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
6397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        private static void setConfigDataCompleteBSelected(boolean value, int serviceCategory) {
6407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //Sets the bSelected value for a specific serviceCategory
6417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            for(int i = 1; i < mConfigDataComplete.length; i += NO_OF_INTS_STRUCT_1) {
6427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                if(mConfigDataComplete[i] == serviceCategory) {
6437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    mConfigDataComplete[i + 2] = value == true ? 1 : 0;
6447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    break;
6457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                }
6467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            }
6477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        }
6487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
6497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        private static void setConfigDataCompleteLanguage(int language) {
6507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //It is only possible to set the same language for all entries
6517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            for(int i = 2; i < mConfigDataComplete.length; i += NO_OF_INTS_STRUCT_1) {
6527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                mConfigDataComplete[i] = language;
6537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            }
6547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        }
6557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
6567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        private static int getConfigDataLanguage() {
6577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            int language = mConfigDataComplete[2];
6587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //2 is the language value of the first entry
6597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            //It is only possible to set the same language for all entries
6607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            if (language < 1 || language > 7) {
6617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                Log.e(LOG_TAG, "Error! Wrong language returned from RIL...defaulting to 1, english");
6627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                return 1;
6637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            }
6647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            else {
6657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                return language;
6667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            }
6677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        }
6687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
6697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon}
670