Add setting to disable assist data (2/2).

Bug: 20944446
Change-Id: I3c518176cab88ce9b5031a0241bee30240e6f896
diff --git a/res/layout/manage_assist_footer.xml b/res/layout/manage_assist_footer.xml
new file mode 100644
index 0000000..8e10d62
--- /dev/null
+++ b/res/layout/manage_assist_footer.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ~ Copyright (C) 2015 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="@android:style/TextAppearance.Material.Body1"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:textColor="?android:attr/textColorSecondary"
+    android:paddingTop="16dp"
+    android:paddingStart="16dp"
+    android:paddingEnd="16dp"
+    android:paddingBottom="16dp"
+    android:selectable="false"
+    android:clickable="false"
+    android:text="@string/assist_footer">
+</TextView>
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3bea360..e6c9bce 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6508,6 +6508,12 @@
     <!-- Title for Default Apps settings [CHAR LIMIT=30] -->
     <string name="default_apps_title">Default Apps</string>
 
+    <!-- Title for Default Assist settings [CHAR LIMIT=30] -->
+    <string name="default_assist_title">Assist</string>
+
+    <!-- Summary for No Default Assist settings [CHAR LIMIT=45] -->
+    <string name="default_assist_none">No default Assist</string>
+
     <!-- Title for Default Browser settings [CHAR LIMIT=30] -->
     <string name="default_browser_title">Browser app</string>
 
@@ -6635,4 +6641,12 @@
     <!-- Settings item summary for active app [CHAR LIMIT=100] -->
     <string name="inactive_app_active_summary">Active. Touch to toggle.</string>
 
+    <!-- Title for the "context" preference to determine whether assist can access the data currently displayed on-screen [CHAR LIMIT=40] -->
+    <string name="assist_access_context_title">Use current context</string>
+
+    <!-- Summary for the "context" preference to determine whether assist can access the data currently displayed on-screen [CHAR LIMIT=NONE] -->
+    <string name="assist_access_context_summary">When you open the assist app, let it see what you\'ve been doing on your screen</string>
+
+    <!-- Footer text in the manage assist screen. [CHAR LIMIT=NONE] -->
+    <string name="assist_footer">Assist apps help you identify and act on useful information without having to ask. Some apps support both launcher and voice input services to give you integrated assistance.</string>
 </resources>
diff --git a/res/xml/default_apps.xml b/res/xml/default_apps.xml
index 7fc32fd..ab65ac8 100644
--- a/res/xml/default_apps.xml
+++ b/res/xml/default_apps.xml
@@ -19,6 +19,12 @@
         xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
         android:key="default_apps">
 
+    <Preference
+        android:key="default_assist"
+        android:fragment="com.android.settings.applications.ManageAssist"
+        android:title="@string/default_assist_title"
+        />
+
     <com.android.settings.applications.DefaultBrowserPreference
             android:key="default_browser"
             android:title="@string/default_browser_title"
diff --git a/res/xml/manage_assist.xml b/res/xml/manage_assist.xml
new file mode 100644
index 0000000..00e86ad
--- /dev/null
+++ b/res/xml/manage_assist.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2015 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
+  -->
+
+<PreferenceScreen
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:key="manage_assist">
+
+    <SwitchPreference
+        android:key="context"
+        android:title="@string/assist_access_context_title"
+        android:summary="@string/assist_access_context_summary"
+        android:persistent="false" />
+</PreferenceScreen>
diff --git a/src/com/android/settings/applications/ManageAssist.java b/src/com/android/settings/applications/ManageAssist.java
new file mode 100644
index 0000000..e222e1c
--- /dev/null
+++ b/src/com/android/settings/applications/ManageAssist.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2015 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.settings.applications;
+
+import android.annotation.Nullable;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.SwitchPreference;
+import android.provider.Settings;
+import android.text.method.LinkMovementMethod;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.TextView;
+
+import com.android.internal.logging.MetricsLogger;
+import com.android.settings.InstrumentedFragment;
+import com.android.settings.R;
+import com.android.settings.SettingsPreferenceFragment;
+
+/**
+ * Settings screen to manage everything about assist.
+ */
+public class ManageAssist extends SettingsPreferenceFragment
+        implements Preference.OnPreferenceChangeListener {
+
+    private static final String KEY_CONTEXT = "context";
+
+    private SwitchPreference mContextPref;
+
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        addPreferencesFromResource(R.xml.manage_assist);
+        mContextPref = (SwitchPreference) findPreference(KEY_CONTEXT);
+        mContextPref.setChecked(Settings.Secure.getInt(getContentResolver(),
+                Settings.Secure.ASSIST_STRUCTURE_ENABLED, 1) != 0);
+        mContextPref.setOnPreferenceChangeListener(this);
+    }
+
+    @Override
+    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+        TextView v = (TextView) LayoutInflater.from(view.getContext()).inflate(
+                R.layout.manage_assist_footer, null);
+        getListView().addFooterView(v);
+    }
+
+    @Override
+    protected int getMetricsCategory() {
+        return MetricsLogger.APPLICATIONS_MANAGE_ASSIST;
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        if (preference == mContextPref) {
+            Settings.Secure.putInt(getContentResolver(), Settings.Secure.ASSIST_STRUCTURE_ENABLED,
+                    (boolean) newValue ? 1 : 0);
+            return true;
+        }
+        return false;
+    }
+}