+++ b/LINUX/android/frameworks/base/packages/SystemUI/res/layout/recents.xml
@@ -54,4 +54,16 @@
android:layout_gravity="center_horizontal|bottom"
android:scaleType="fitXY"
android:src="@drawable/recents_lower_gradient" />
+ <Button
+ android:id="@+id/clean_all_recent_apps"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="25dp"
+ android:layout_marginRight="60dp"
+ android:padding="15dp"
+ android:layout_gravity="right"
+ android:background="#00000000"
+ android:text="@string/clear_all_notifications_text"
+ android:textColor="#ffffff"
+ android:textSize="15dp" />
</FrameLayout>
b/LINUX/android/frameworks/base/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
@@ -83,6 +83,7 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
// Runnable to be executed after we paused ourselves
Runnable mAfterPauseRunnable;
+ private View mClearRecent;
/**
* A common Runnable to finish Recents either by calling finish() (with a custom animation) or
@@ -248,13 +249,16 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
mEmptyView = mEmptyViewStub.inflate();
}
mEmptyView.setVisibility(View.VISIBLE);
+ mClearRecent.setVisibility(View.GONE);
mRecentsView.setSearchBarVisibility(View.GONE);
} else {
if (mEmptyView != null) {
mEmptyView.setVisibility(View.GONE);
+ mClearRecent.setVisibility(View.VISIBLE);
}
if (mRecentsView.hasValidSearchBar()) {
mRecentsView.setSearchBarVisibility(View.VISIBLE);
+ mClearRecent.setVisibility(View.GONE);
} else {
refreshSearchWidgetView();
}
@@ -353,6 +357,15 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
// Set the Recents layout
setContentView(R.layout.recents);
+ mClearRecent = findViewById(R.id.clean_all_recent_apps);
+ if(mClearRecent != null){
+ mClearRecent.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mRecentsView.dismissAllTasksAnimated();
+ }
+ });
+ }
mRecentsView = (RecentsView) findViewById(R.id.recents_view);
mRecentsView.setCallbacks(this);
mRecentsView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
b/LINUX/android/frameworks/base/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
@@ -719,4 +719,14 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV
stackView.onPackagesChanged(monitor, packageName, userId);
}
}
+ public void dismissAllTasksAnimated() {
+ int childCount = getChildCount();
+ for (int i = 0; i < childCount; i++) {
+ View child = getChildAt(i);
+ if (child != mSearchBar) {
+ TaskStackView stackView = (TaskStackView) child;
+ stackView.dismissAllTasks();
+ }
+ }
+ }
}
b/LINUX/android/frameworks/base/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
@@ -1466,4 +1466,30 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
}
}
}
+ public void dismissAllTasks() {
+ post(new Runnable() {
+ @Override
+ public void run() {
+ ArrayList<Task> tasks = new ArrayList<Task>();
+ tasks.addAll(mStack.getTasks());
+
+ // Remove visible TaskViews
+ int childCount = getChildCount();
+ for (int i = 0; i < childCount; i++) {
+ TaskView tv = (TaskView) getChildAt(i);
+ tasks.remove(tv.getTask());
+ tv.dismissTask();
+ }
+
+ int size = tasks.size();
+ // Remove any other Tasks
+ for (int i = 0; i < size; i++) {
+ Task t = tasks.get(i);
+ if (mStack.getTasks().contains(t)) {
+ mStack.removeTask(t);
+ }
+ }
+ }
+ });
+ }
}