blob: 89cac47983dd029bc2c11c4eac91e34ddf847edd [file] [log] [blame]
/*
* Copyright (C) 2014 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.settings;
import android.content.Context;
import android.content.Intent;
import android.os.UserHandle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.provider.Settings;
import android.telecom.TelecomManager;
import android.util.AttributeSet;
import android.util.Log;
import com.android.phone.PhoneGlobals;
import com.android.phone.R;
public class TtyModeListPreference extends ListPreference
implements Preference.OnPreferenceChangeListener {
private static final String LOG_TAG = TtyModeListPreference.class.getSimpleName();
private static final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
public TtyModeListPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void init() {
setOnPreferenceChangeListener(this);
int settingsTtyMode = Settings.Secure.getInt(getContext().getContentResolver(),
Settings.Secure.PREFERRED_TTY_MODE,
TelecomManager.TTY_MODE_OFF);
setValue(Integer.toString(settingsTtyMode));
updatePreferredTtyModeSummary(settingsTtyMode);
}
@Override
public boolean onPreferenceChange(Preference preference, Object objValue) {
if (preference == this) {
int buttonTtyMode = Integer.parseInt((String) objValue);
int settingsTtyMode = android.provider.Settings.Secure.getInt(
getContext().getContentResolver(),
Settings.Secure.PREFERRED_TTY_MODE,
TelecomManager.TTY_MODE_OFF);
if (DBG) log("handleTTYChange: requesting set TTY mode enable (TTY) to" +
Integer.toString(buttonTtyMode));
if (buttonTtyMode != settingsTtyMode) {
switch(buttonTtyMode) {
case TelecomManager.TTY_MODE_OFF:
case TelecomManager.TTY_MODE_FULL:
case TelecomManager.TTY_MODE_HCO:
case TelecomManager.TTY_MODE_VCO:
Settings.Secure.putInt(
getContext().getContentResolver(),
Settings.Secure.PREFERRED_TTY_MODE,
buttonTtyMode);
break;
default:
buttonTtyMode = TelecomManager.TTY_MODE_OFF;
}
setValue(Integer.toString(buttonTtyMode));
updatePreferredTtyModeSummary(buttonTtyMode);
Intent ttyModeChanged =
new Intent(TelecomManager.ACTION_TTY_PREFERRED_MODE_CHANGED);
ttyModeChanged.putExtra(TelecomManager.EXTRA_TTY_PREFERRED_MODE, buttonTtyMode);
getContext().sendBroadcastAsUser(ttyModeChanged, UserHandle.ALL);
}
}
return true;
}
private void updatePreferredTtyModeSummary(int TtyMode) {
String [] txts = getContext().getResources().getStringArray(R.array.tty_mode_entries);
switch(TtyMode) {
case TelecomManager.TTY_MODE_OFF:
case TelecomManager.TTY_MODE_HCO:
case TelecomManager.TTY_MODE_VCO:
case TelecomManager.TTY_MODE_FULL:
setSummary(txts[TtyMode]);
break;
default:
setEnabled(false);
setSummary(txts[TelecomManager.TTY_MODE_OFF]);
break;
}
}
private static void log(String msg) {
Log.d(LOG_TAG, msg);
}
}