Merge "Bugreport in Quick Settings (if you turn it on)." into jb-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
1227233b6f
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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.
|
||||
-->
|
||||
<TextView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/TextAppearance.QuickSettings.TileView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:drawableTop="@*android:drawable/stat_sys_adb"
|
||||
android:text="@*android:string/bugreport_title"
|
||||
/>
|
||||
@@ -16,14 +16,17 @@
|
||||
|
||||
package com.android.systemui.statusbar.phone;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.app.PendingIntent;
|
||||
import android.app.AlertDialog.Builder;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.CursorLoader;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.DialogInterface.OnClickListener;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.Loader;
|
||||
@@ -37,6 +40,7 @@ import android.hardware.display.WifiDisplay;
|
||||
import android.hardware.display.WifiDisplayStatus;
|
||||
import android.net.Uri;
|
||||
import android.os.Debug;
|
||||
import android.os.SystemProperties;
|
||||
import android.provider.ContactsContract;
|
||||
import android.provider.Settings;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -521,6 +525,24 @@ class QuickSettings {
|
||||
});
|
||||
parent.addView(imeTile);
|
||||
|
||||
// Bug reports
|
||||
QuickSettingsTileView bugreportTile = (QuickSettingsTileView)
|
||||
inflater.inflate(R.layout.quick_settings_tile, parent, false);
|
||||
bugreportTile.setContent(R.layout.quick_settings_tile_bugreport, inflater);
|
||||
bugreportTile.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mBar.collapseAllPanels(true);
|
||||
showBugreportDialog();
|
||||
}
|
||||
});
|
||||
mModel.addBugreportTile(bugreportTile, new QuickSettingsModel.RefreshCallback() {
|
||||
@Override
|
||||
public void refreshView(QuickSettingsTileView view, State state) {
|
||||
view.setVisibility(state.enabled ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
});
|
||||
parent.addView(bugreportTile);
|
||||
/*
|
||||
QuickSettingsTileView mediaTile = (QuickSettingsTileView)
|
||||
inflater.inflate(R.layout.quick_settings_tile, parent, false);
|
||||
@@ -575,6 +597,24 @@ class QuickSettings {
|
||||
}
|
||||
}
|
||||
|
||||
private void showBugreportDialog() {
|
||||
final AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
|
||||
builder.setPositiveButton(com.android.internal.R.string.report, new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (which == DialogInterface.BUTTON_POSITIVE) {
|
||||
SystemProperties.set("ctl.start", "bugreport");
|
||||
}
|
||||
}
|
||||
});
|
||||
builder.setMessage(com.android.internal.R.string.bugreport_message);
|
||||
builder.setTitle(com.android.internal.R.string.bugreport_title);
|
||||
builder.setCancelable(true);
|
||||
final Dialog dialog = builder.create();
|
||||
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
private void updateWifiDisplayStatus() {
|
||||
mWifiDisplayStatus = mDisplayManager.getWifiDisplayStatus();
|
||||
applyWifiDisplayStatus();
|
||||
@@ -595,4 +635,4 @@ class QuickSettings {
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ import android.graphics.drawable.Drawable;
|
||||
import android.hardware.display.WifiDisplayStatus;
|
||||
import android.os.Handler;
|
||||
import android.provider.Settings;
|
||||
import android.provider.Settings.SettingNotFoundException;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.InputMethodInfo;
|
||||
@@ -107,9 +108,26 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
|
||||
}
|
||||
}
|
||||
|
||||
/** ContentObserver to watch adb */
|
||||
private class BugreportObserver extends ContentObserver {
|
||||
public BugreportObserver(Handler handler) {
|
||||
super(handler);
|
||||
}
|
||||
|
||||
@Override public void onChange(boolean selfChange) {
|
||||
onBugreportChanged();
|
||||
}
|
||||
|
||||
public void startObserving() {
|
||||
final ContentResolver cr = mContext.getContentResolver();
|
||||
cr.registerContentObserver(
|
||||
Settings.Secure.getUriFor(Settings.Secure.BUGREPORT_IN_POWER_MENU), false, this);
|
||||
}
|
||||
}
|
||||
private Context mContext;
|
||||
private Handler mHandler;
|
||||
private NextAlarmObserver mNextAlarmObserver;
|
||||
private BugreportObserver mBugreportObserver;
|
||||
|
||||
private QuickSettingsTileView mUserTile;
|
||||
private RefreshCallback mUserCallback;
|
||||
@@ -159,11 +177,17 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
|
||||
private RefreshCallback mBrightnessCallback;
|
||||
private BrightnessState mBrightnessState = new BrightnessState();
|
||||
|
||||
private QuickSettingsTileView mBugreportTile;
|
||||
private RefreshCallback mBugreportCallback;
|
||||
private State mBugreportState = new State();
|
||||
|
||||
public QuickSettingsModel(Context context) {
|
||||
mContext = context;
|
||||
mHandler = new Handler();
|
||||
mNextAlarmObserver = new NextAlarmObserver(mHandler);
|
||||
mNextAlarmObserver.startObserving();
|
||||
mBugreportObserver = new BugreportObserver(mHandler);
|
||||
mBugreportObserver.startObserving();
|
||||
|
||||
IntentFilter alarmIntentFilter = new IntentFilter();
|
||||
alarmIntentFilter.addAction(Intent.ACTION_ALARM_CHANGED);
|
||||
@@ -341,6 +365,25 @@ class QuickSettingsModel implements BluetoothStateChangeCallback,
|
||||
mLocationCallback.refreshView(mLocationTile, mLocationState);
|
||||
}
|
||||
|
||||
// Bug report
|
||||
void addBugreportTile(QuickSettingsTileView view, RefreshCallback cb) {
|
||||
mBugreportTile = view;
|
||||
mBugreportCallback = cb;
|
||||
onBugreportChanged();
|
||||
}
|
||||
// SettingsObserver callback
|
||||
public void onBugreportChanged() {
|
||||
final ContentResolver cr = mContext.getContentResolver();
|
||||
boolean enabled = false;
|
||||
try {
|
||||
enabled = (Settings.Secure.getInt(cr, Settings.Secure.BUGREPORT_IN_POWER_MENU) != 0);
|
||||
} catch (SettingNotFoundException e) {
|
||||
}
|
||||
|
||||
mBugreportState.enabled = enabled;
|
||||
mBugreportCallback.refreshView(mBugreportTile, mBugreportState);
|
||||
}
|
||||
|
||||
// Wifi Display
|
||||
void addWifiDisplayTile(QuickSettingsTileView view, RefreshCallback cb) {
|
||||
mWifiDisplayTile = view;
|
||||
|
||||
Reference in New Issue
Block a user