| /* |
| * Copyright (C) 2009 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.phone; |
| |
| import com.android.internal.telephony.Phone; |
| |
| import android.content.Context; |
| import android.os.AsyncResult; |
| import android.os.Handler; |
| import android.os.Message; |
| import android.preference.CheckBoxPreference; |
| import android.util.AttributeSet; |
| import android.util.Log; |
| |
| public class CdmaVoicePrivacyCheckBoxPreference extends CheckBoxPreference { |
| private static final String LOG_TAG = "CdmaVoicePrivacyCheckBoxPreference"; |
| private final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2); |
| |
| Phone phone; |
| private MyHandler mHandler = new MyHandler(); |
| |
| public CdmaVoicePrivacyCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) { |
| super(context, attrs, defStyle); |
| |
| phone = PhoneGlobals.getPhone(); |
| phone.getEnhancedVoicePrivacy(mHandler.obtainMessage(MyHandler.MESSAGE_GET_VP)); |
| } |
| |
| public CdmaVoicePrivacyCheckBoxPreference(Context context, AttributeSet attrs) { |
| this(context, attrs, com.android.internal.R.attr.checkBoxPreferenceStyle); |
| } |
| |
| public CdmaVoicePrivacyCheckBoxPreference(Context context) { |
| this(context, null); |
| } |
| |
| |
| @Override |
| protected void onClick() { |
| super.onClick(); |
| |
| phone.enableEnhancedVoicePrivacy(isChecked(), |
| mHandler.obtainMessage(MyHandler.MESSAGE_SET_VP)); |
| } |
| |
| |
| |
| private class MyHandler extends Handler { |
| static final int MESSAGE_GET_VP = 0; |
| static final int MESSAGE_SET_VP = 1; |
| |
| @Override |
| public void handleMessage(Message msg) { |
| switch (msg.what) { |
| case MESSAGE_GET_VP: |
| handleGetVPResponse(msg); |
| break; |
| case MESSAGE_SET_VP: |
| handleSetVPResponse(msg); |
| break; |
| } |
| } |
| |
| private void handleGetVPResponse(Message msg) { |
| AsyncResult ar = (AsyncResult) msg.obj; |
| |
| if (ar.exception != null) { |
| if (DBG) Log.d(LOG_TAG, "handleGetVPResponse: ar.exception=" + ar.exception); |
| setEnabled(false); |
| } else { |
| if (DBG) Log.d(LOG_TAG, "handleGetVPResponse: VP state successfully queried."); |
| final int enable = ((int[]) ar.result)[0]; |
| setChecked(enable != 0); |
| |
| android.provider.Settings.Secure.putInt(getContext().getContentResolver(), |
| android.provider.Settings.Secure.ENHANCED_VOICE_PRIVACY_ENABLED, enable); |
| } |
| } |
| |
| private void handleSetVPResponse(Message msg) { |
| AsyncResult ar = (AsyncResult) msg.obj; |
| |
| if (ar.exception != null) { |
| if (DBG) Log.d(LOG_TAG, "handleSetVPResponse: ar.exception=" + ar.exception); |
| } |
| if (DBG) Log.d(LOG_TAG, "handleSetVPResponse: re get"); |
| |
| phone.getEnhancedVoicePrivacy(obtainMessage(MESSAGE_GET_VP)); |
| } |
| } |
| } |