13c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock/* 23c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock * Copyright (C) 2013 The Android Open Source Project 33c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock * 43c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock * Licensed under the Apache License, Version 2.0 (the "License"); 53c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock * you may not use this file except in compliance with the License. 63c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock * You may obtain a copy of the License at 73c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock * 83c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock * http://www.apache.org/licenses/LICENSE-2.0 93c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock * 103c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock * Unless required by applicable law or agreed to in writing, software 113c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock * distributed under the License is distributed on an "AS IS" BASIS, 123c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock * See the License for the specific language governing permissions and 143c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock * limitations under the License. 153c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock */ 163c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock 173c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlockpackage com.android.systemui.statusbar.phone; 183c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock 193c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlockimport android.os.Bundle; 203c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlockimport android.os.UserHandle; 213c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlockimport android.view.Gravity; 223c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlockimport android.view.View; 233c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlockimport android.view.ViewGroup; 243c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlockimport android.widget.LinearLayout; 253c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock 263c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlockimport com.android.internal.statusbar.StatusBarIcon; 273c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlockimport com.android.systemui.DemoMode; 283c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlockimport com.android.systemui.R; 293c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlockimport com.android.systemui.statusbar.StatusBarIconView; 303c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlockimport com.android.systemui.statusbar.policy.LocationController; 313c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock 323c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlockpublic class DemoStatusIcons extends LinearLayout implements DemoMode { 333c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock private final LinearLayout mStatusIcons; 343c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock private final int mIconSize; 353c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock 363c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock private boolean mDemoMode; 373c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock 383c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock public DemoStatusIcons(LinearLayout statusIcons, int iconSize) { 393c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock super(statusIcons.getContext()); 403c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock mStatusIcons = statusIcons; 413c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock mIconSize = iconSize; 423c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock 433c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock setLayoutParams(mStatusIcons.getLayoutParams()); 443c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock setOrientation(mStatusIcons.getOrientation()); 453c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock setGravity(Gravity.CENTER_VERTICAL); // no LL.getGravity() 463c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock ViewGroup p = (ViewGroup) mStatusIcons.getParent(); 473c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock p.addView(this, p.indexOfChild(mStatusIcons)); 483c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 493c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock 503c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock @Override 513c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock public void dispatchDemoCommand(String command, Bundle args) { 523c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock if (!mDemoMode && command.equals(COMMAND_ENTER)) { 533c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock mDemoMode = true; 543c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock mStatusIcons.setVisibility(View.GONE); 553c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock setVisibility(View.VISIBLE); 563c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } else if (mDemoMode && command.equals(COMMAND_EXIT)) { 573c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock mDemoMode = false; 583c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock mStatusIcons.setVisibility(View.VISIBLE); 593c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock setVisibility(View.GONE); 603c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } else if (mDemoMode && command.equals(COMMAND_STATUS)) { 613c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock String volume = args.getString("volume"); 623c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock if (volume != null) { 633c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock int iconId = volume.equals("silent") ? R.drawable.stat_sys_ringer_silent 643c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock : volume.equals("vibrate") ? R.drawable.stat_sys_ringer_vibrate 653c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock : 0; 663c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock updateSlot("volume", null, iconId); 673c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 683c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock String bt = args.getString("bluetooth"); 693c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock if (bt != null) { 703c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock int iconId = bt.equals("disconnected") ? R.drawable.stat_sys_data_bluetooth 713c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock : bt.equals("connected") ? R.drawable.stat_sys_data_bluetooth_connected 723c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock : 0; 733c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock updateSlot("bluetooth", null, iconId); 743c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 753c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock String location = args.getString("location"); 763c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock if (location != null) { 773c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock int iconId = location.equals("show") ? LocationController.LOCATION_STATUS_ICON_ID 783c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock : 0; 793c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock updateSlot(LocationController.LOCATION_STATUS_ICON_PLACEHOLDER, null, iconId); 803c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 813c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock String alarm = args.getString("alarm"); 823c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock if (alarm != null) { 833c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock int iconId = alarm.equals("show") ? R.drawable.stat_sys_alarm 843c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock : 0; 853c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock updateSlot("alarm_clock", null, iconId); 863c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 873c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock String sync = args.getString("sync"); 883c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock if (sync != null) { 893c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock int iconId = sync.equals("show") ? R.drawable.stat_sys_sync 903c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock : 0; 913c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock updateSlot("sync_active", null, iconId); 923c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 933c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock String tty = args.getString("tty"); 943c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock if (tty != null) { 953c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock int iconId = tty.equals("show") ? R.drawable.stat_sys_tty_mode 963c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock : 0; 973c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock updateSlot("tty", null, iconId); 983c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 993c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock String eri = args.getString("eri"); 1003c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock if (eri != null) { 1013c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock int iconId = eri.equals("show") ? R.drawable.stat_sys_roaming_cdma_0 1023c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock : 0; 1033c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock updateSlot("cdma_eri", null, iconId); 1043c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 1053c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock String mute = args.getString("mute"); 1063c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock if (mute != null) { 1073c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock int iconId = mute.equals("show") ? android.R.drawable.stat_notify_call_mute 1083c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock : 0; 1093c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock updateSlot("mute", null, iconId); 1103c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 1113c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock String speakerphone = args.getString("speakerphone"); 1123c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock if (speakerphone != null) { 1133c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock int iconId = speakerphone.equals("show") ? android.R.drawable.stat_sys_speakerphone 1143c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock : 0; 1153c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock updateSlot("speakerphone", null, iconId); 1163c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 1173c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 1183c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 1193c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock 1203c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock private void updateSlot(String slot, String iconPkg, int iconId) { 1213c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock if (!mDemoMode) return; 1223c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock int removeIndex = -1; 1233c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock for (int i = 0; i < getChildCount(); i++) { 1243c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock StatusBarIconView v = (StatusBarIconView) getChildAt(i); 1253c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock if (slot.equals(v.getTag())) { 1263c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock if (iconId == 0) { 1273c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock removeIndex = i; 1283c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock break; 1293c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } else { 1303c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock StatusBarIcon icon = v.getStatusBarIcon(); 1313c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock icon.iconPackage = iconPkg; 1323c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock icon.iconId = iconId; 1333c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock v.set(icon); 1343c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock v.updateDrawable(); 1353c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock return; 1363c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 1373c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 1383c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 1393c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock if (iconId == 0) { 1403c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock if (removeIndex != -1) { 1413c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock removeViewAt(removeIndex); 1423c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock return; 1433c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 1443c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 1453c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock StatusBarIcon icon = new StatusBarIcon(iconPkg, UserHandle.CURRENT, iconId, 0, 0, "Demo"); 1463c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock StatusBarIconView v = new StatusBarIconView(mContext, null); 1473c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock v.setTag(slot); 1483c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock v.set(icon); 1493c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock addView(v, 0, new LinearLayout.LayoutParams(mIconSize, mIconSize)); 1503c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock } 1513c87566c115e1fce3fdc09a6fe40488bcdc04cdeJohn Spurlock}