diff options
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java')
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java index dba70be..3803092 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java @@ -26,17 +26,20 @@ import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.graphics.Rect; +import android.net.Uri; import android.os.Build; import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; +import android.provider.Settings; import android.util.Log; import android.util.Slog; import android.view.Display; import android.view.IWindowManager; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; @@ -45,6 +48,7 @@ import android.view.WindowManager; import android.view.WindowManagerImpl; import android.widget.LinearLayout; import android.widget.RemoteViews; +import android.widget.PopupMenu; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.statusbar.StatusBarIcon; @@ -214,6 +218,39 @@ public abstract class BaseStatusBar extends SystemUI implements } } + private void startApplicationDetailsActivity(String packageName) { + Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, + Uri.fromParts("package", packageName, null)); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mContext.startActivity(intent); + } + + protected View.OnLongClickListener getNotificationLongClicker() { + return new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + final String packageNameF = (String) v.getTag(); + if (packageNameF == null) return false; + PopupMenu popup = new PopupMenu(mContext, v); + popup.getMenuInflater().inflate(R.menu.notification_popup_menu, popup.getMenu()); + popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + public boolean onMenuItemClick(MenuItem item) { + if (item.getItemId() == R.id.notification_inspect_item) { + startApplicationDetailsActivity(packageNameF); + animateCollapse(); + } else { + return false; + } + return true; + } + }); + popup.show(); + + return true; + } + }; + } + public void dismissIntruder() { // pass } @@ -355,6 +392,9 @@ public abstract class BaseStatusBar extends SystemUI implements Context.LAYOUT_INFLATER_SERVICE); View row = inflater.inflate(R.layout.status_bar_notification_row, parent, false); + // for blaming (see SwipeHelper.setLongPressListener) + row.setTag(sbn.pkg); + // XXX: temporary: while testing big notifications, auto-expand all of them ViewGroup.LayoutParams lp = row.getLayoutParams(); if (large != null) { |
