Add setting page for swipe to notification.
In this change input & gesture page added 5 separate gesture preferences, each should lead to a new page to set gesture setting. For now only swipe to notification preference is wired up. Will implement the rest in later changes. Bug: 32637613 Test: make RunSettingsRoboTests -j40 Change-Id: I57ceea8fcd85f3a0ab59cbd12da50b7138f5ca0c
This commit is contained in:
@@ -27,6 +27,33 @@
|
|||||||
android:fragment="com.android.settings.inputmethod.PhysicalKeyboardFragment"/>
|
android:fragment="com.android.settings.inputmethod.PhysicalKeyboardFragment"/>
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
<PreferenceCategory
|
||||||
|
android:key="gesture_settings_category"
|
||||||
|
android:title="@string/gesture_preference_title">
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
android:key="gesture_swipe_down_fingerprint"
|
||||||
|
android:title="@string/fingerprint_swipe_for_notifications_title"
|
||||||
|
android:fragment="com.android.settings.gestures.SwipeToNotificationSettings"/>
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
android:key="gesture_double_tap_power"
|
||||||
|
android:title="@string/double_tap_power_for_camera_title"/>
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
android:key="gesture_double_twist"
|
||||||
|
android:title="@string/double_twist_for_camera_mode_title"/>
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
android:key="gesture_double_tap_screen"
|
||||||
|
android:title="@string/ambient_display_title"/>
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
android:key="gesture_pick_up"
|
||||||
|
android:title="@string/ambient_display_pickup_title"/>
|
||||||
|
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:key="pointer_settings_category"
|
android:key="pointer_settings_category"
|
||||||
android:title="@string/pointer_settings_category">
|
android:title="@string/pointer_settings_category">
|
||||||
|
25
res/xml/swipe_to_notification_settings.xml
Normal file
25
res/xml/swipe_to_notification_settings.xml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (C) 2016 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">
|
||||||
|
|
||||||
|
<SwitchPreference
|
||||||
|
android:key="gesture_swipe_down_fingerprint"
|
||||||
|
android:title="@string/fingerprint_swipe_for_notifications_title"
|
||||||
|
android:summary="@string/fingerprint_swipe_for_notifications_summary"/>
|
||||||
|
|
||||||
|
</PreferenceScreen>
|
@@ -98,6 +98,7 @@ import com.android.settings.fuelgauge.BatterySaverSettings;
|
|||||||
import com.android.settings.fuelgauge.PowerUsageDetail;
|
import com.android.settings.fuelgauge.PowerUsageDetail;
|
||||||
import com.android.settings.fuelgauge.PowerUsageSummary;
|
import com.android.settings.fuelgauge.PowerUsageSummary;
|
||||||
import com.android.settings.gestures.GestureSettings;
|
import com.android.settings.gestures.GestureSettings;
|
||||||
|
import com.android.settings.gestures.SwipeToNotificationSettings;
|
||||||
import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment;
|
import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment;
|
||||||
import com.android.settings.inputmethod.InputAndGestureSettings;
|
import com.android.settings.inputmethod.InputAndGestureSettings;
|
||||||
import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
|
import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
|
||||||
@@ -348,6 +349,7 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
AccountSyncSettings.class.getName(),
|
AccountSyncSettings.class.getName(),
|
||||||
AccountSettings.class.getName(),
|
AccountSettings.class.getName(),
|
||||||
GestureSettings.class.getName(),
|
GestureSettings.class.getName(),
|
||||||
|
SwipeToNotificationSettings.class.getName(),
|
||||||
CryptKeeperSettings.class.getName(),
|
CryptKeeperSettings.class.getName(),
|
||||||
DataUsageSummary.class.getName(),
|
DataUsageSummary.class.getName(),
|
||||||
DreamSettings.class.getName(),
|
DreamSettings.class.getName(),
|
||||||
|
@@ -42,6 +42,7 @@ public abstract class InstrumentedFragment extends ObservablePreferenceFragment
|
|||||||
protected final int APP_AND_NOTIFICATION_CATEGORY_FRAGMENT = PLACEHOLDER_METRIC + 5;
|
protected final int APP_AND_NOTIFICATION_CATEGORY_FRAGMENT = PLACEHOLDER_METRIC + 5;
|
||||||
protected final int INPUT_AND_GESTURE_CATEGORY_FRAGMENT = PLACEHOLDER_METRIC + 6;
|
protected final int INPUT_AND_GESTURE_CATEGORY_FRAGMENT = PLACEHOLDER_METRIC + 6;
|
||||||
protected final int LANGUAGE_AND_REGION_CATEGORY_FRAGMENT = PLACEHOLDER_METRIC + 7;
|
protected final int LANGUAGE_AND_REGION_CATEGORY_FRAGMENT = PLACEHOLDER_METRIC + 7;
|
||||||
|
protected final int GESTURE_SWIPE_TO_NOTIFICATION = PLACEHOLDER_METRIC + 8;
|
||||||
|
|
||||||
public InstrumentedFragment() {
|
public InstrumentedFragment() {
|
||||||
// Mixin that logs visibility change for activity.
|
// Mixin that logs visibility change for activity.
|
||||||
|
@@ -21,6 +21,7 @@ import android.provider.Settings;
|
|||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.support.v7.preference.TwoStatePreference;
|
import android.support.v7.preference.TwoStatePreference;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.PreferenceController;
|
import com.android.settings.core.PreferenceController;
|
||||||
|
|
||||||
public class SwipeToNotificationPreferenceController extends PreferenceController
|
public class SwipeToNotificationPreferenceController extends PreferenceController
|
||||||
@@ -45,8 +46,15 @@ public class SwipeToNotificationPreferenceController extends PreferenceControlle
|
|||||||
@Override
|
@Override
|
||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
super.updateState(preference);
|
super.updateState(preference);
|
||||||
if (preference != null && preference instanceof TwoStatePreference) {
|
final boolean isEnabled = isSystemUINavigationEnabled();
|
||||||
((TwoStatePreference) preference).setChecked(isSystemUINavigationEnabled());
|
if (preference != null) {
|
||||||
|
if (preference instanceof TwoStatePreference) {
|
||||||
|
((TwoStatePreference) preference).setChecked(isEnabled);
|
||||||
|
} else {
|
||||||
|
preference.setSummary(isEnabled
|
||||||
|
? R.string.gesture_setting_on
|
||||||
|
: R.string.gesture_setting_off);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -0,0 +1,58 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2016 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.gestures;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.core.PreferenceController;
|
||||||
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class SwipeToNotificationSettings extends DashboardFragment {
|
||||||
|
|
||||||
|
private static final String TAG = "SwipeToNotifSettings";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMetricsCategory() {
|
||||||
|
return GESTURE_SWIPE_TO_NOTIFICATION;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getCategoryKey() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getLogTag() {
|
||||||
|
return TAG;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getPreferenceScreenResId() {
|
||||||
|
return R.xml.swipe_to_notification_settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<PreferenceController> getPreferenceControllers(Context context) {
|
||||||
|
final List<PreferenceController> controllers = new ArrayList<>();
|
||||||
|
controllers.add(new SwipeToNotificationPreferenceController(context));
|
||||||
|
return controllers;
|
||||||
|
}
|
||||||
|
}
|
@@ -21,6 +21,7 @@ import android.content.Context;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.PreferenceController;
|
import com.android.settings.core.PreferenceController;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
|
import com.android.settings.gestures.SwipeToNotificationPreferenceController;
|
||||||
import com.android.settingslib.drawer.CategoryKey;
|
import com.android.settingslib.drawer.CategoryKey;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -58,6 +59,7 @@ public class InputAndGestureSettings extends DashboardFragment {
|
|||||||
|
|
||||||
final List<PreferenceController> controllers = new ArrayList<>();
|
final List<PreferenceController> controllers = new ArrayList<>();
|
||||||
controllers.add(gameControllerPreferenceController);
|
controllers.add(gameControllerPreferenceController);
|
||||||
|
controllers.add(new SwipeToNotificationPreferenceController(context));
|
||||||
|
|
||||||
return controllers;
|
return controllers;
|
||||||
}
|
}
|
||||||
|
@@ -22,6 +22,7 @@ import android.support.v7.preference.Preference;
|
|||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
import android.support.v7.preference.TwoStatePreference;
|
import android.support.v7.preference.TwoStatePreference;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsRobolectricTestRunner;
|
import com.android.settings.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
|
|
||||||
@@ -83,26 +84,49 @@ public class SwipeToNotificationPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateState_preferenceSetCheckedWhenSettingIsOn() {
|
public void updateState_preferenceSetCheckedWhenSettingIsOn() {
|
||||||
|
// Mock a TwoStatePreference
|
||||||
final TwoStatePreference preference = mock(TwoStatePreference.class);
|
final TwoStatePreference preference = mock(TwoStatePreference.class);
|
||||||
|
// Set the setting to be enabled.
|
||||||
final Context context = ShadowApplication.getInstance().getApplicationContext();
|
final Context context = ShadowApplication.getInstance().getApplicationContext();
|
||||||
Settings.System.putInt(context.getContentResolver(), SYSTEM_NAVIGATION_KEYS_ENABLED, 1);
|
Settings.System.putInt(context.getContentResolver(), SYSTEM_NAVIGATION_KEYS_ENABLED, 1);
|
||||||
|
|
||||||
|
// Run through updateState
|
||||||
mController = new SwipeToNotificationPreferenceController(context);
|
mController = new SwipeToNotificationPreferenceController(context);
|
||||||
mController.updateState(preference);
|
mController.updateState(preference);
|
||||||
|
|
||||||
|
// Verify pref is checked (as setting is enabled).
|
||||||
verify(preference).setChecked(true);
|
verify(preference).setChecked(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateState_preferenceSetUncheckedWhenSettingIsOff() {
|
public void updateState_preferenceSetUncheckedWhenSettingIsOff() {
|
||||||
|
// Mock a TwoStatePreference
|
||||||
final TwoStatePreference preference = mock(TwoStatePreference.class);
|
final TwoStatePreference preference = mock(TwoStatePreference.class);
|
||||||
|
// Set the setting to be disabled.
|
||||||
final Context context = ShadowApplication.getInstance().getApplicationContext();
|
final Context context = ShadowApplication.getInstance().getApplicationContext();
|
||||||
Settings.System.putInt(context.getContentResolver(), SYSTEM_NAVIGATION_KEYS_ENABLED, 0);
|
Settings.System.putInt(context.getContentResolver(), SYSTEM_NAVIGATION_KEYS_ENABLED, 0);
|
||||||
|
|
||||||
|
// Run through updateState
|
||||||
mController = new SwipeToNotificationPreferenceController(context);
|
mController = new SwipeToNotificationPreferenceController(context);
|
||||||
mController.updateState(preference);
|
mController.updateState(preference);
|
||||||
|
|
||||||
|
// Verify pref is unchecked (as setting is disabled).
|
||||||
verify(preference).setChecked(false);
|
verify(preference).setChecked(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateState_notTwoStatePreference_setSummary() {
|
||||||
|
// Mock a regular preference
|
||||||
|
final Preference preference = mock(Preference.class);
|
||||||
|
// Set the setting to be disabled.
|
||||||
|
final Context context = ShadowApplication.getInstance().getApplicationContext();
|
||||||
|
Settings.System.putInt(context.getContentResolver(), SYSTEM_NAVIGATION_KEYS_ENABLED, 0);
|
||||||
|
|
||||||
|
// Run through updateState
|
||||||
|
mController = new SwipeToNotificationPreferenceController(context);
|
||||||
|
mController.updateState(preference);
|
||||||
|
|
||||||
|
// Verify summary is set to off (as setting is disabled).
|
||||||
|
verify(preference).setSummary(R.string.gesture_setting_off);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2016 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.gestures;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.SettingsRobolectricTestRunner;
|
||||||
|
import com.android.settings.TestConfig;
|
||||||
|
import com.android.settings.core.PreferenceController;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Answers;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockitoAnnotations;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
|
public class SwipeToNotificationSettingsTest {
|
||||||
|
|
||||||
|
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||||
|
private Context mContext;
|
||||||
|
private SwipeToNotificationSettings mFragment;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
MockitoAnnotations.initMocks(this);
|
||||||
|
mFragment = new SwipeToNotificationSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetPreferenceScreenResId() {
|
||||||
|
assertThat(mFragment.getPreferenceScreenResId())
|
||||||
|
.isEqualTo(R.xml.swipe_to_notification_settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetPreferenceControllers_shouldAllBeCreated() {
|
||||||
|
final List<PreferenceController> controllers = mFragment.getPreferenceControllers(mContext);
|
||||||
|
|
||||||
|
assertThat(controllers.isEmpty()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Reference in New Issue
Block a user