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