16accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan/* 26accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan * Copyright (C) 2010 The Android Open Source Project 36accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan * 46accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan * Licensed under the Apache License, Version 2.0 (the "License"); 56accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan * you may not use this file except in compliance with the License. 66accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan * You may obtain a copy of the License at 76accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan * 86accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan * http://www.apache.org/licenses/LICENSE-2.0 96accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan * 106accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan * Unless required by applicable law or agreed to in writing, software 116accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan * distributed under the License is distributed on an "AS IS" BASIS, 126accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan * See the License for the specific language governing permissions and 146accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan * limitations under the License. 156accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan */ 166accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan 176accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyanpackage com.android.phone.sip; 186accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan 196accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyanimport com.android.phone.R; 206accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan 216accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyanimport android.content.ContentResolver; 226accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyanimport android.content.Context; 236accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyanimport android.content.SharedPreferences; 246accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyanimport android.provider.Settings; 256accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyanimport android.provider.Settings.SettingNotFoundException; 2653c36f640cd4edf232b81d2e4c7eefb7222a279aHung-ying Tyanimport android.text.TextUtils; 276accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyanimport android.util.Log; 286accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan 296accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan/** 306accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan * Wrapper for SIP's shared preferences. 316accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan */ 326accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyanpublic class SipSharedPreferences { 336accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan private static final String SIP_SHARED_PREFERENCES = "SIP_PREFERENCES"; 346accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan private static final String KEY_PRIMARY_ACCOUNT = "primary"; 35e67c35f45f52ca59704bd4b8a639ddac045b604cChung-yih Wang private static final String KEY_NUMBER_OF_PROFILES = "profiles"; 366accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan 376accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan private SharedPreferences mPreferences; 386accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan private Context mContext; 396accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan 406accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan public SipSharedPreferences(Context context) { 416accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan mPreferences = context.getSharedPreferences( 426accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan SIP_SHARED_PREFERENCES, Context.MODE_WORLD_READABLE); 436accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan mContext = context; 446accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan } 456accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan 466accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan public void setPrimaryAccount(String accountUri) { 475afaad1ab34d77edec65afeb09c5a17ad9be51c6Hung-ying Tyan SharedPreferences.Editor editor = mPreferences.edit(); 485afaad1ab34d77edec65afeb09c5a17ad9be51c6Hung-ying Tyan editor.putString(KEY_PRIMARY_ACCOUNT, accountUri); 495afaad1ab34d77edec65afeb09c5a17ad9be51c6Hung-ying Tyan editor.apply(); 506accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan } 516accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan 5253c36f640cd4edf232b81d2e4c7eefb7222a279aHung-ying Tyan public void unsetPrimaryAccount() { 5353c36f640cd4edf232b81d2e4c7eefb7222a279aHung-ying Tyan setPrimaryAccount(null); 5453c36f640cd4edf232b81d2e4c7eefb7222a279aHung-ying Tyan } 5553c36f640cd4edf232b81d2e4c7eefb7222a279aHung-ying Tyan 566accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan /** Returns the primary account URI or null if it does not exist. */ 576accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan public String getPrimaryAccount() { 586accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan return mPreferences.getString(KEY_PRIMARY_ACCOUNT, null); 596accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan } 606accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan 6153c36f640cd4edf232b81d2e4c7eefb7222a279aHung-ying Tyan public boolean isPrimaryAccount(String accountUri) { 6253c36f640cd4edf232b81d2e4c7eefb7222a279aHung-ying Tyan return accountUri.equals( 6353c36f640cd4edf232b81d2e4c7eefb7222a279aHung-ying Tyan mPreferences.getString(KEY_PRIMARY_ACCOUNT, null)); 6453c36f640cd4edf232b81d2e4c7eefb7222a279aHung-ying Tyan } 6553c36f640cd4edf232b81d2e4c7eefb7222a279aHung-ying Tyan 6653c36f640cd4edf232b81d2e4c7eefb7222a279aHung-ying Tyan public boolean hasPrimaryAccount() { 6753c36f640cd4edf232b81d2e4c7eefb7222a279aHung-ying Tyan return !TextUtils.isEmpty( 6853c36f640cd4edf232b81d2e4c7eefb7222a279aHung-ying Tyan mPreferences.getString(KEY_PRIMARY_ACCOUNT, null)); 6953c36f640cd4edf232b81d2e4c7eefb7222a279aHung-ying Tyan } 7053c36f640cd4edf232b81d2e4c7eefb7222a279aHung-ying Tyan 71e67c35f45f52ca59704bd4b8a639ddac045b604cChung-yih Wang public void setProfilesCount(int number) { 72e67c35f45f52ca59704bd4b8a639ddac045b604cChung-yih Wang SharedPreferences.Editor editor = mPreferences.edit(); 73e67c35f45f52ca59704bd4b8a639ddac045b604cChung-yih Wang editor.putInt(KEY_NUMBER_OF_PROFILES, number); 74e67c35f45f52ca59704bd4b8a639ddac045b604cChung-yih Wang editor.apply(); 75e67c35f45f52ca59704bd4b8a639ddac045b604cChung-yih Wang } 76e67c35f45f52ca59704bd4b8a639ddac045b604cChung-yih Wang 77e67c35f45f52ca59704bd4b8a639ddac045b604cChung-yih Wang public int getProfilesCount() { 78e67c35f45f52ca59704bd4b8a639ddac045b604cChung-yih Wang return mPreferences.getInt(KEY_NUMBER_OF_PROFILES, 0); 79e67c35f45f52ca59704bd4b8a639ddac045b604cChung-yih Wang } 80e67c35f45f52ca59704bd4b8a639ddac045b604cChung-yih Wang 816accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan public void setSipCallOption(String option) { 826accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan Settings.System.putString(mContext.getContentResolver(), 836accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan Settings.System.SIP_CALL_OPTIONS, option); 846accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan } 856accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan 866accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan public String getSipCallOption() { 876accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan String option = Settings.System.getString(mContext.getContentResolver(), 886accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan Settings.System.SIP_CALL_OPTIONS); 896accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan return (option != null) ? option 906accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan : mContext.getString(R.string.sip_address_only); 916accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan } 926accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan 936accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan public void setReceivingCallsEnabled(boolean enabled) { 946accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan Settings.System.putInt(mContext.getContentResolver(), 956accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan Settings.System.SIP_RECEIVE_CALLS, (enabled ? 1 : 0)); 966accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan } 976accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan 986accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan public boolean isReceivingCallsEnabled() { 996accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan try { 1006accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan return (Settings.System.getInt(mContext.getContentResolver(), 1016accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan Settings.System.SIP_RECEIVE_CALLS) != 0); 1026accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan } catch (SettingNotFoundException e) { 10379798afcaa47f915c32204056d6a2725814e26d5Chung-yih Wang Log.d("SIP", "ReceiveCall option is not set; use default value"); 1045b917a6c4629e8f989e05fc9878ffcf2c75da984Hung-ying Tyan return false; 1056accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan } 1066accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan } 1076accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan 1086accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan // TODO: back up to Android Backup 1096accb9026338b980246eefffbfe09f3449863c09Hung-ying Tyan} 110