17d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/*
27d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Copyright (C) 2010 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
17788959e2d798da2d8a34cf89779421966d200f3dSailesh Nepalpackage com.android.services.telephony.sip;
187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.content.Context;
204ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunnimport android.content.Intent;
214ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunnimport android.net.sip.SipManager;
227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.provider.Settings;
237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.provider.Settings.SettingNotFoundException;
247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.util.Log;
257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/**
27b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebinger * Wrapper for SIP's preferences.
287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */
29b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebingerpublic class SipPreferences {
30b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebinger    private static final String PREFIX = "[SipPreferences] ";
316556a09daab949853c384b385bc7618a6c75d9ddSantos Cordon    private static final boolean VERBOSE = false; /* STOP SHIP if true */
32788959e2d798da2d8a34cf89779421966d200f3dSailesh Nepal
33b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebinger    // Used to clear out old SharedPreferences file during SipProfile Database Migration
347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private static final String SIP_SHARED_PREFERENCES = "SIP_PREFERENCES";
35baee2955f596f7b79971feb12fa21031a069677dTyler Gunn
367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    private Context mContext;
377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
38b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebinger    public SipPreferences(Context context) {
397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        mContext = context;
407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    public void setSipCallOption(String option) {
437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        Settings.System.putString(mContext.getContentResolver(),
447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                Settings.System.SIP_CALL_OPTIONS, option);
454ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunn
464ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunn        // Notify SipAccountRegistry in the telephony layer that the configuration has changed.
474ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunn        // This causes the SIP PhoneAccounts to be re-registered.  This ensures the supported URI
484ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunn        // schemes for the SIP PhoneAccounts matches the new SIP_CALL_OPTIONS setting.
494ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunn        Intent intent = new Intent(SipManager.ACTION_SIP_CALL_OPTION_CHANGED);
504ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunn        mContext.sendBroadcast(intent);
517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    public String getSipCallOption() {
547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        String option = Settings.System.getString(mContext.getContentResolver(),
557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                Settings.System.SIP_CALL_OPTIONS);
567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        return (option != null) ? option
577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                                : mContext.getString(R.string.sip_address_only);
587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    public void setReceivingCallsEnabled(boolean enabled) {
617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        Settings.System.putInt(mContext.getContentResolver(),
627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                Settings.System.SIP_RECEIVE_CALLS, (enabled ? 1 : 0));
637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    public boolean isReceivingCallsEnabled() {
667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        try {
677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            return (Settings.System.getInt(mContext.getContentResolver(),
687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon                    Settings.System.SIP_RECEIVE_CALLS) != 0);
697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        } catch (SettingNotFoundException e) {
70788959e2d798da2d8a34cf89779421966d200f3dSailesh Nepal            log("isReceivingCallsEnabled, option not set; use default value, exception: " + e);
717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon            return false;
727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon        }
737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    }
747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon
75baee2955f596f7b79971feb12fa21031a069677dTyler Gunn    /**
76b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebinger     * Remove obsolete SharedPreferences File upon upgrade from M->N.
77baee2955f596f7b79971feb12fa21031a069677dTyler Gunn     */
78b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebinger    public void clearSharedPreferences() {
79b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebinger        mContext.deleteSharedPreferences(SIP_SHARED_PREFERENCES);
80baee2955f596f7b79971feb12fa21031a069677dTyler Gunn    }
81baee2955f596f7b79971feb12fa21031a069677dTyler Gunn
827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon    // TODO: back up to Android Backup
83788959e2d798da2d8a34cf89779421966d200f3dSailesh Nepal
84788959e2d798da2d8a34cf89779421966d200f3dSailesh Nepal    private static void log(String msg) {
85788959e2d798da2d8a34cf89779421966d200f3dSailesh Nepal        Log.d(SipUtil.LOG_TAG, PREFIX + msg);
86788959e2d798da2d8a34cf89779421966d200f3dSailesh Nepal    }
877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon}
88