/*
* Copyright (C) 2008 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.systemui.statusbar.toggles;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.ContentObserver;
import android.os.Handler;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.telephony.TelephonyManager;
import com.android.internal.telephony.Phone;
import com.android.systemui.R;
public class TwoGToggle extends Toggle {
private int mNetworkMode = -1;
public TwoGToggle(Context c) {
super(c);
SettingsObserver obs = new SettingsObserver(new Handler());
obs.observe();
setLabel(R.string.toggle_2g);
updateState();
}
@Override
protected void onCheckChanged(boolean isChecked) {
TelephonyManager tm = (TelephonyManager) mView.getContext()
.getSystemService(Context.TELEPHONY_SERVICE);
tm.toggle2G(isChecked);
updateState();
}
class SettingsObserver extends ContentObserver {
SettingsObserver(Handler handler) {
super(handler);
}
void observe() {
ContentResolver resolver = mContext.getContentResolver();
resolver.registerContentObserver(Settings.Secure
.getUriFor(Settings.Secure.PREFERRED_NETWORK_MODE), false,
this);
updateState();
}
@Override
public void onChange(boolean selfChange) {
mNetworkMode = getCurrentPreferredNetworkMode(mContext);
updateState();
}
}
private static int getCurrentPreferredNetworkMode(Context context) {
int network = -1;
try {
network = Settings.Secure.getInt(context.getContentResolver(),
Settings.Secure.PREFERRED_NETWORK_MODE);
} catch (SettingNotFoundException e) {
e.printStackTrace();
}
return network;
}
@Override
protected boolean updateInternalToggleState() {
mNetworkMode = getCurrentPreferredNetworkMode(mContext);
if (mToggle != null)
mToggle.setChecked(mNetworkMode == Phone.NT_MODE_GSM_ONLY);
if (mToggle.isChecked())
setIcon(R.drawable.toggle_2g_1);
else
setIcon(R.drawable.toggle_2g_1_off);
return mToggle.isChecked();
}
@Override
protected boolean onLongPress() {
Intent intent = new Intent(
android.provider.Settings.ACTION_WIRELESS_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
return true;
}
}