Adding alarm to quick settings.

- Cleaning up some code

Change-Id: Iaea2077084ba16b4fb4d47c8b2df5da6983ceb91
This commit is contained in:
Winson Chung
2012-09-10 17:30:27 -07:00
parent e1f02ef080
commit e641b6a99c
5 changed files with 389 additions and 304 deletions

View File

@@ -32,4 +32,12 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
/>
<TextView
android:textAppearance="@style/TextAppearance.QuickSettings.Alarm"
android:id="@+id/alarm_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:drawableLeft="@drawable/stat_sys_alarm"
/>
</LinearLayout>

View File

@@ -92,6 +92,11 @@
<item name="android:textSize">14dp</item>
</style>
<style name="TextAppearance.QuickSettings.Alarm" parent="@style/TextAppearance.QuickSettings.TileView">
<item name="android:textSize">13dp</item>
<item name="android:textColor">#ff3a3b39</item>
</style>
<style name="Animation" />
<style name="Animation.ShirtPocketPanel">

View File

@@ -17,9 +17,8 @@
package com.android.systemui.statusbar.phone;
import android.app.Dialog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothAdapter.BluetoothStateChangeCallback;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.CursorLoader;
import android.content.Intent;
@@ -34,7 +33,6 @@ import android.hardware.display.WifiDisplayStatus;
import android.net.Uri;
import android.os.UserHandle;
import android.provider.ContactsContract;
import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -45,290 +43,16 @@ import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Comparator;
import com.android.systemui.R;
import com.android.systemui.statusbar.phone.QuickSettingsModel.State;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
import com.android.systemui.statusbar.policy.BluetoothController;
import com.android.systemui.statusbar.policy.LocationController;
import com.android.systemui.statusbar.policy.LocationController.LocationGpsStateChangeCallback;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController.NetworkSignalChangedCallback;
class QuickSettingsModel implements BluetoothStateChangeCallback,
NetworkSignalChangedCallback,
BatteryStateChangeCallback,
LocationGpsStateChangeCallback {
import java.util.ArrayList;
import java.util.Comparator;
/** Represents the state of a given attribute. */
static class State {
int iconId;
String label;
boolean enabled;
}
static class BatteryState extends State {
int batteryLevel;
boolean pluggedIn;
}
/** The callback to update a given tile. */
interface RefreshCallback {
public void refreshView(QuickSettingsTileView view, State state);
}
private Context mContext;
private QuickSettingsTileView mUserTile;
private RefreshCallback mUserCallback;
private State mUserState = new State();
private QuickSettingsTileView mAirplaneModeTile;
private RefreshCallback mAirplaneModeCallback;
private State mAirplaneModeState = new State();
private QuickSettingsTileView mWifiTile;
private RefreshCallback mWifiCallback;
private State mWifiState = new State();
private QuickSettingsTileView mWifiDisplayTile;
private RefreshCallback mWifiDisplayCallback;
private State mWifiDisplayState = new State();
private QuickSettingsTileView mRSSITile;
private RefreshCallback mRSSICallback;
private State mRSSIState = new State();
private QuickSettingsTileView mBluetoothTile;
private RefreshCallback mBluetoothCallback;
private State mBluetoothState = new State();
private QuickSettingsTileView mBatteryTile;
private RefreshCallback mBatteryCallback;
private BatteryState mBatteryState = new BatteryState();
private QuickSettingsTileView mLocationTile;
private RefreshCallback mLocationCallback;
private State mLocationState = new State();
public QuickSettingsModel(Context context) {
mContext = context;
}
// User
void addUserTile(QuickSettingsTileView view, RefreshCallback cb) {
mUserTile = view;
mUserCallback = cb;
mUserCallback.refreshView(mUserTile, mUserState);
}
void setUserTileInfo(String name) {
mUserState.label = name;
mUserCallback.refreshView(mUserTile, mUserState);
}
// Airplane Mode
void addAirplaneModeTile(QuickSettingsTileView view, RefreshCallback cb) {
mAirplaneModeTile = view;
mAirplaneModeTile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mAirplaneModeState.enabled) {
setAirplaneModeState(false);
} else {
setAirplaneModeState(true);
}
}
});
mAirplaneModeCallback = cb;
mAirplaneModeCallback.refreshView(mAirplaneModeTile, mAirplaneModeState);
}
private void setAirplaneModeState(boolean enabled) {
// TODO: Sets the view to be "awaiting" if not already awaiting
// Change the system setting
Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON,
enabled ? 1 : 0);
// TODO: Update the UI to reflect system setting
// mCheckBoxPref.setChecked(enabled);
// Post the intent
Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state", enabled);
mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
}
// NetworkSignalChanged callback
@Override
public void onAirplaneModeChanged(boolean enabled) {
// TODO: If view is in awaiting state, disable
Resources r = mContext.getResources();
mAirplaneModeState.enabled = enabled;
mAirplaneModeState.iconId = (enabled ?
R.drawable.ic_qs_airplane_enabled :
R.drawable.ic_qs_airplane_normal);
mAirplaneModeCallback.refreshView(mAirplaneModeTile, mAirplaneModeState);
}
// Wifi
void addWifiTile(QuickSettingsTileView view, RefreshCallback cb) {
mWifiTile = view;
mWifiCallback = cb;
mWifiCallback.refreshView(mWifiTile, mWifiState);
}
// NetworkSignalChanged callback
@Override
public void onWifiSignalChanged(boolean enabled, String description) {
// TODO: If view is in awaiting state, disable
Resources r = mContext.getResources();
// TODO: Check if wifi is enabled
mWifiState.enabled = enabled;
mWifiState.iconId = (enabled ?
R.drawable.ic_qs_wifi_enabled :
R.drawable.ic_qs_wifi_normal);
mWifiState.label = (enabled ?
description :
r.getString(R.string.quick_settings_wifi_no_network));
mWifiCallback.refreshView(mWifiTile, mWifiState);
}
// RSSI
void addRSSITile(QuickSettingsTileView view, RefreshCallback cb) {
mRSSITile = view;
mRSSICallback = cb;
mRSSICallback.refreshView(mRSSITile, mRSSIState);
}
private void setRSSIState(boolean enabled) {
// TODO: Set RSSI enabled
// TODO: Sets the view to be "awaiting" if not already awaiting
}
// NetworkSignalChanged callback
@Override
public void onMobileDataSignalChanged(boolean enabled, String description) {
// TODO: If view is in awaiting state, disable
Resources r = mContext.getResources();
// TODO: Check if RSSI is enabled
mRSSIState.enabled = enabled;
mRSSIState.iconId = (enabled ?
R.drawable.ic_qs_rssi_enabled :
R.drawable.ic_qs_rssi_normal);
mRSSIState.label = (enabled ?
description :
r.getString(R.string.quick_settings_rssi_emergency_only));
mRSSICallback.refreshView(mRSSITile, mRSSIState);
}
// Bluetooth
void addBluetoothTile(QuickSettingsTileView view, RefreshCallback cb) {
mBluetoothTile = view;
mBluetoothTile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mBluetoothState.enabled) {
setBluetoothState(false);
} else {
setBluetoothState(true);
}
}
});
mBluetoothCallback = cb;
final BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
onBluetoothStateChange(adapter.isEnabled());
}
private void setBluetoothState(boolean enabled) {
// TODO: Sets the view to be "awaiting" if not already awaiting
final BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
if (adapter != null) {
if (enabled) {
adapter.enable();
} else {
adapter.disable();
}
}
}
// BluetoothController callback
@Override
public void onBluetoothStateChange(boolean on) {
// TODO: If view is in awaiting state, disable
Resources r = mContext.getResources();
mBluetoothState.enabled = on;
if (on) {
mBluetoothState.iconId = R.drawable.ic_qs_bluetooth_enabled;
} else {
mBluetoothState.iconId = R.drawable.ic_qs_bluetooth_normal;
}
mBluetoothCallback.refreshView(mBluetoothTile, mBluetoothState);
}
// Battery
void addBatteryTile(QuickSettingsTileView view, RefreshCallback cb) {
mBatteryTile = view;
mBatteryCallback = cb;
mBatteryCallback.refreshView(mBatteryTile, mBatteryState);
}
// BatteryController callback
@Override
public void onBatteryLevelChanged(int level, boolean pluggedIn) {
mBatteryState.batteryLevel = level;
mBatteryState.pluggedIn = pluggedIn;
mBatteryCallback.refreshView(mBatteryTile, mBatteryState);
}
// Location
void addLocationTile(QuickSettingsTileView view, RefreshCallback cb) {
mLocationTile = view;
mLocationCallback = cb;
mLocationCallback.refreshView(mLocationTile, mLocationState);
disableLocationTile();
}
private void enableLocationTile() {
mLocationTile.setVisibility(View.VISIBLE);
}
private void disableLocationTile() {
mLocationTile.setVisibility(View.GONE);
}
// LocationController callback
@Override
public void onLocationGpsStateChanged(boolean inUse, String description) {
if (inUse) {
mLocationState.enabled = inUse;
mLocationState.label = description;
mLocationCallback.refreshView(mLocationTile, mLocationState);
enableLocationTile();
} else {
disableLocationTile();
}
}
// Wifi Display
void addWifiDisplayTile(QuickSettingsTileView view, RefreshCallback cb) {
mWifiDisplayTile = view;
mWifiDisplayCallback = cb;
}
private void enableWifiDisplayTile() {
mWifiDisplayTile.setVisibility(View.VISIBLE);
}
private void disableWifiDisplayTile() {
mWifiDisplayTile.setVisibility(View.GONE);
}
public void onWifiDisplayStateChanged(WifiDisplayStatus status) {
if (status.isEnabled()) {
if (status.getActiveDisplay() != null) {
mWifiDisplayState.label = status.getActiveDisplay().getDeviceName();
} else {
mWifiDisplayState.label = mContext.getString(
R.string.quick_settings_wifi_display_no_connection_label);
}
mWifiDisplayCallback.refreshView(mWifiDisplayTile, mWifiDisplayState);
enableWifiDisplayTile();
} else {
disableWifiDisplayTile();
}
}
}
/**
*
@@ -431,6 +155,17 @@ class QuickSettings {
queryForUserInformation();
}
private void startSettingsActivity(String action) {
Intent intent = new Intent(action);
startSettingsActivity(intent);
}
private void startSettingsActivity(Intent intent) {
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
mBar.collapseAllPanels(true);
}
private void addUserTiles(ViewGroup parent, LayoutInflater inflater) {
QuickSettingsTileView userTile = (QuickSettingsTileView)
inflater.inflate(R.layout.quick_settings_tile, parent, false);
@@ -449,6 +184,25 @@ class QuickSettings {
QuickSettingsTileView timeTile = (QuickSettingsTileView)
inflater.inflate(R.layout.quick_settings_tile, parent, false);
timeTile.setContent(R.layout.quick_settings_tile_time, inflater);
timeTile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO: Jump into the alarm application
Intent intent = new Intent();
intent.setComponent(new ComponentName(
"com.google.android.deskclock",
"com.android.deskclock.AlarmClock"));
startSettingsActivity(intent);
}
});
mModel.addTimeTile(timeTile, new QuickSettingsModel.RefreshCallback() {
@Override
public void refreshView(QuickSettingsTileView view, State alarmState) {
TextView tv = (TextView) view.findViewById(R.id.alarm_textview);
tv.setText(alarmState.label);
tv.setVisibility(alarmState.enabled ? View.VISIBLE : View.GONE);
}
});
parent.addView(timeTile);
mDynamicSpannedTiles.add(timeTile);
@@ -459,10 +213,7 @@ class QuickSettings {
settingsTile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(android.provider.Settings.ACTION_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
mBar.collapseAllPanels(true);
startSettingsActivity(android.provider.Settings.ACTION_SETTINGS);
}
});
parent.addView(settingsTile);
@@ -477,10 +228,7 @@ class QuickSettings {
wifiTile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
mBar.collapseAllPanels(true);
startSettingsActivity(android.provider.Settings.ACTION_WIFI_SETTINGS);
}
});
mModel.addWifiTile(wifiTile, new QuickSettingsModel.RefreshCallback() {
@@ -500,10 +248,11 @@ class QuickSettings {
rssiTile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
mBar.collapseAllPanels(true);
Intent intent = new Intent();
intent.setComponent(new ComponentName(
"com.android.settings",
"com.android.settings.Settings$DataUsageSummaryActivity"));
startSettingsActivity(intent);
}
});
mModel.addRSSITile(rssiTile, new QuickSettingsModel.RefreshCallback() {
@@ -523,10 +272,7 @@ class QuickSettings {
batteryTile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_POWER_USAGE_SUMMARY);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
mBar.collapseAllPanels(true);
startSettingsActivity(Intent.ACTION_POWER_USAGE_SUMMARY);
}
});
mModel.addBatteryTile(batteryTile, new QuickSettingsModel.RefreshCallback() {
@@ -560,6 +306,12 @@ class QuickSettings {
QuickSettingsTileView bluetoothTile = (QuickSettingsTileView)
inflater.inflate(R.layout.quick_settings_tile, parent, false);
bluetoothTile.setContent(R.layout.quick_settings_tile_bluetooth, inflater);
bluetoothTile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startSettingsActivity(android.provider.Settings.ACTION_BLUETOOTH_SETTINGS);
}
});
mModel.addBluetoothTile(bluetoothTile, new QuickSettingsModel.RefreshCallback() {
@Override
public void refreshView(QuickSettingsTileView view, State state) {
@@ -576,10 +328,7 @@ class QuickSettings {
brightnessTile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(android.provider.Settings.ACTION_DISPLAY_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
mBar.collapseAllPanels(true);
startSettingsActivity(android.provider.Settings.ACTION_DISPLAY_SETTINGS);
}
});
parent.addView(brightnessTile);
@@ -593,11 +342,7 @@ class QuickSettings {
locationTile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent =
new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
mBar.collapseAllPanels(true);
startSettingsActivity(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
}
});
mModel.addLocationTile(locationTile, new QuickSettingsModel.RefreshCallback() {
@@ -605,6 +350,7 @@ class QuickSettings {
public void refreshView(QuickSettingsTileView view, State state) {
TextView tv = (TextView) view.findViewById(R.id.location_textview);
tv.setText(state.label);
view.setVisibility(state.enabled ? View.VISIBLE : View.GONE);
}
});
parent.addView(locationTile);
@@ -625,6 +371,7 @@ class QuickSettings {
public void refreshView(QuickSettingsTileView view, State state) {
TextView tv = (TextView) view.findViewById(R.id.wifi_display_textview);
tv.setText(state.label);
view.setVisibility(state.enabled ? View.VISIBLE : View.GONE);
}
});
parent.addView(wifiDisplayTile);
@@ -658,6 +405,7 @@ class QuickSettings {
mContainerView.requestLayout();
}
// Wifi Display
private void showWifiDisplayDialog() {
mDisplayManager.scanWifiDisplays();
updateWifiDisplayStatus();

View File

@@ -0,0 +1,320 @@
/*
* Copyright (C) 2012 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.phone;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothAdapter.BluetoothStateChangeCallback;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.hardware.display.WifiDisplayStatus;
import android.os.Handler;
import android.provider.Settings;
import android.view.View;
import com.android.systemui.R;
import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
import com.android.systemui.statusbar.policy.LocationController.LocationGpsStateChangeCallback;
import com.android.systemui.statusbar.policy.NetworkController.NetworkSignalChangedCallback;
class QuickSettingsModel implements BluetoothStateChangeCallback,
NetworkSignalChangedCallback,
BatteryStateChangeCallback,
LocationGpsStateChangeCallback {
/** Represents the state of a given attribute. */
static class State {
int iconId;
String label;
boolean enabled = false;
}
static class BatteryState extends State {
int batteryLevel;
boolean pluggedIn;
}
/** The callback to update a given tile. */
interface RefreshCallback {
public void refreshView(QuickSettingsTileView view, State state);
}
/** Broadcast receive to determine if there is an alarm set. */
private BroadcastReceiver mAlarmIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_ALARM_CHANGED)) {
onAlarmChanged(intent);
onNextAlarmChanged();
}
}
};
/** ContentObserver to determine the next alarm */
private class NextAlarmObserver extends ContentObserver {
public NextAlarmObserver(Handler handler) {
super(handler);
}
@Override public void onChange(boolean selfChange) {
onNextAlarmChanged();
}
public void startObserving() {
final ContentResolver cr = mContext.getContentResolver();
cr.registerContentObserver(
Settings.System.getUriFor(Settings.System.NEXT_ALARM_FORMATTED), false, this);
}
}
private Context mContext;
private Handler mHandler;
private NextAlarmObserver mNextAlarmObserver;
private QuickSettingsTileView mUserTile;
private RefreshCallback mUserCallback;
private State mUserState = new State();
private QuickSettingsTileView mTimeTile;
private RefreshCallback mTimeAlarmCallback;
private State mTimeAlarmState = new State();
private QuickSettingsTileView mAirplaneModeTile;
private RefreshCallback mAirplaneModeCallback;
private State mAirplaneModeState = new State();
private QuickSettingsTileView mWifiTile;
private RefreshCallback mWifiCallback;
private State mWifiState = new State();
private QuickSettingsTileView mWifiDisplayTile;
private RefreshCallback mWifiDisplayCallback;
private State mWifiDisplayState = new State();
private QuickSettingsTileView mRSSITile;
private RefreshCallback mRSSICallback;
private State mRSSIState = new State();
private QuickSettingsTileView mBluetoothTile;
private RefreshCallback mBluetoothCallback;
private State mBluetoothState = new State();
private QuickSettingsTileView mBatteryTile;
private RefreshCallback mBatteryCallback;
private BatteryState mBatteryState = new BatteryState();
private QuickSettingsTileView mLocationTile;
private RefreshCallback mLocationCallback;
private State mLocationState = new State();
public QuickSettingsModel(Context context) {
mContext = context;
mHandler = new Handler();
mNextAlarmObserver = new NextAlarmObserver(mHandler);
mNextAlarmObserver.startObserving();
IntentFilter alarmIntentFilter = new IntentFilter();
alarmIntentFilter.addAction(Intent.ACTION_ALARM_CHANGED);
context.registerReceiver(mAlarmIntentReceiver, alarmIntentFilter);
}
// User
void addUserTile(QuickSettingsTileView view, RefreshCallback cb) {
mUserTile = view;
mUserCallback = cb;
mUserCallback.refreshView(mUserTile, mUserState);
}
void setUserTileInfo(String name) {
mUserState.label = name;
mUserCallback.refreshView(mUserTile, mUserState);
}
// Time
void addTimeTile(QuickSettingsTileView view, RefreshCallback cb) {
mTimeTile = view;
mTimeAlarmCallback = cb;
mTimeAlarmCallback.refreshView(view, mTimeAlarmState);
}
void onAlarmChanged(Intent intent) {
mTimeAlarmState.enabled = intent.getBooleanExtra("alarmSet", false);
System.out.println("ALARM ENABLED: " + mTimeAlarmState.enabled);
mTimeAlarmCallback.refreshView(mTimeTile, mTimeAlarmState);
}
void onNextAlarmChanged() {
mTimeAlarmState.label = Settings.System.getString(mContext.getContentResolver(),
Settings.System.NEXT_ALARM_FORMATTED);
System.out.println("ALARM LABEL: " + mTimeAlarmState.label);
mTimeAlarmCallback.refreshView(mTimeTile, mTimeAlarmState);
}
// Airplane Mode
void addAirplaneModeTile(QuickSettingsTileView view, RefreshCallback cb) {
mAirplaneModeTile = view;
mAirplaneModeTile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mAirplaneModeState.enabled) {
setAirplaneModeState(false);
} else {
setAirplaneModeState(true);
}
}
});
mAirplaneModeCallback = cb;
mAirplaneModeCallback.refreshView(mAirplaneModeTile, mAirplaneModeState);
}
private void setAirplaneModeState(boolean enabled) {
// TODO: Sets the view to be "awaiting" if not already awaiting
// Change the system setting
Settings.System.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON,
enabled ? 1 : 0);
// Post the intent
Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state", enabled);
mContext.sendBroadcast(intent);
}
// NetworkSignalChanged callback
@Override
public void onAirplaneModeChanged(boolean enabled) {
// TODO: If view is in awaiting state, disable
Resources r = mContext.getResources();
mAirplaneModeState.enabled = enabled;
mAirplaneModeState.iconId = (enabled ?
R.drawable.ic_qs_airplane_enabled :
R.drawable.ic_qs_airplane_normal);
mAirplaneModeCallback.refreshView(mAirplaneModeTile, mAirplaneModeState);
}
// Wifi
void addWifiTile(QuickSettingsTileView view, RefreshCallback cb) {
mWifiTile = view;
mWifiCallback = cb;
mWifiCallback.refreshView(mWifiTile, mWifiState);
}
// NetworkSignalChanged callback
@Override
public void onWifiSignalChanged(boolean enabled, String description) {
// TODO: If view is in awaiting state, disable
Resources r = mContext.getResources();
// TODO: Check if wifi is enabled
mWifiState.enabled = enabled;
mWifiState.iconId = (enabled ?
R.drawable.ic_qs_wifi_enabled :
R.drawable.ic_qs_wifi_normal);
mWifiState.label = (enabled ?
description :
r.getString(R.string.quick_settings_wifi_no_network));
mWifiCallback.refreshView(mWifiTile, mWifiState);
}
// RSSI
void addRSSITile(QuickSettingsTileView view, RefreshCallback cb) {
mRSSITile = view;
mRSSICallback = cb;
mRSSICallback.refreshView(mRSSITile, mRSSIState);
}
// NetworkSignalChanged callback
@Override
public void onMobileDataSignalChanged(boolean enabled, String description) {
// TODO: If view is in awaiting state, disable
Resources r = mContext.getResources();
// TODO: Check if RSSI is enabled
mRSSIState.enabled = enabled;
mRSSIState.iconId = (enabled ?
R.drawable.ic_qs_rssi_enabled :
R.drawable.ic_qs_rssi_normal);
mRSSIState.label = (enabled ?
description :
r.getString(R.string.quick_settings_rssi_emergency_only));
mRSSICallback.refreshView(mRSSITile, mRSSIState);
}
// Bluetooth
void addBluetoothTile(QuickSettingsTileView view, RefreshCallback cb) {
mBluetoothTile = view;
mBluetoothCallback = cb;
final BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
onBluetoothStateChange(adapter.isEnabled());
}
// BluetoothController callback
@Override
public void onBluetoothStateChange(boolean on) {
// TODO: If view is in awaiting state, disable
Resources r = mContext.getResources();
mBluetoothState.enabled = on;
if (on) {
mBluetoothState.iconId = R.drawable.ic_qs_bluetooth_enabled;
} else {
mBluetoothState.iconId = R.drawable.ic_qs_bluetooth_normal;
}
mBluetoothCallback.refreshView(mBluetoothTile, mBluetoothState);
}
// Battery
void addBatteryTile(QuickSettingsTileView view, RefreshCallback cb) {
mBatteryTile = view;
mBatteryCallback = cb;
mBatteryCallback.refreshView(mBatteryTile, mBatteryState);
}
// BatteryController callback
@Override
public void onBatteryLevelChanged(int level, boolean pluggedIn) {
mBatteryState.batteryLevel = level;
mBatteryState.pluggedIn = pluggedIn;
mBatteryCallback.refreshView(mBatteryTile, mBatteryState);
}
// Location
void addLocationTile(QuickSettingsTileView view, RefreshCallback cb) {
mLocationTile = view;
mLocationCallback = cb;
mLocationCallback.refreshView(mLocationTile, mLocationState);
}
// LocationController callback
@Override
public void onLocationGpsStateChanged(boolean inUse, String description) {
mLocationState.enabled = inUse;
mLocationState.label = description;
mLocationCallback.refreshView(mLocationTile, mLocationState);
}
// Wifi Display
void addWifiDisplayTile(QuickSettingsTileView view, RefreshCallback cb) {
mWifiDisplayTile = view;
mWifiDisplayCallback = cb;
}
public void onWifiDisplayStateChanged(WifiDisplayStatus status) {
mWifiDisplayState.enabled = status.isEnabled();
if (status.getActiveDisplay() != null) {
mWifiDisplayState.label = status.getActiveDisplay().getDeviceName();
} else {
mWifiDisplayState.label = mContext.getString(
R.string.quick_settings_wifi_display_no_connection_label);
}
mWifiDisplayCallback.refreshView(mWifiDisplayTile, mWifiDisplayState);
}
}

View File

@@ -127,6 +127,10 @@ public class LocationController extends BroadcastReceiver {
n,
idOut,
UserHandle.USER_CURRENT);
for (LocationGpsStateChangeCallback cb : mChangeCallbacks) {
cb.onLocationGpsStateChanged(true, text);
}
} else {
mNotificationService.cancelNotificationWithTag(
mContext.getPackageName(), null,