diff --git a/res/drawable-nodpi/gesture_prevent_ringing b/res/drawable-nodpi/gesture_prevent_ringing new file mode 100644 index 00000000000..e69de29bb2d diff --git a/res/raw/gesture_prevent_ringing.mp4 b/res/raw/gesture_prevent_ringing.mp4 new file mode 100644 index 00000000000..e69de29bb2d diff --git a/res/values/strings.xml b/res/values/strings.xml index 0562ba7c3dd..fc1b039323c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -9867,6 +9867,8 @@ Prevent ringing Press Power & Volume Up together + + Shortcut to prevent ringing Vibrate @@ -9874,11 +9876,11 @@ Do nothing - Vibrate all calls and notifications + On (vibrate) - Mute all calls and notifications + On (mute) - Do nothing + Off Network details diff --git a/res/xml/gestures.xml b/res/xml/gestures.xml index 0eaa2a6b505..aec933a33f0 100644 --- a/res/xml/gestures.xml +++ b/res/xml/gestures.xml @@ -60,6 +60,7 @@ + android:fragment="com.android.settings.gestures.PreventRingingGestureSettings" + settings:controller="com.android.settings.gestures.PreventRingingPreferenceController" /> diff --git a/res/xml/prevent_ringing_gesture_settings.xml b/res/xml/prevent_ringing_gesture_settings.xml index 10732fce884..08146e4fbfc 100644 --- a/res/xml/prevent_ringing_gesture_settings.xml +++ b/res/xml/prevent_ringing_gesture_settings.xml @@ -21,15 +21,17 @@ android:key="gesture_prevent_ringing_screen" android:title="@string/gesture_prevent_ringing_screen_title"> - + android:key="gesture_prevent_ringing_video" + app:animation="@raw/gesture_prevent_ringing" + app:preview="@drawable/gesture_prevent_ringing" /> \ No newline at end of file diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml index 7fd3709e3df..9772fa2bd65 100644 --- a/res/xml/sound_settings.xml +++ b/res/xml/sound_settings.xml @@ -20,7 +20,7 @@ android:title="@string/sound_settings" android:key="sound_settings" settings:keywords="@string/keywords_sounds" - settings:initialExpandedChildrenCount="7"> + settings:initialExpandedChildrenCount="8"> + + createPreferenceControllers(Context context) { - return buildPreferenceControllers(context, getLifecycle()); - } - - static List buildPreferenceControllers( - @NonNull Context context, @Nullable Lifecycle lifecycle) { - final List controllers = new ArrayList<>(); - controllers.add(new PreventRingingPreferenceController( - context, lifecycle, UserHandle.myUserId(), KEY_PREVENT_RINGING)); - return controllers; - } - @Override public void onAttach(Context context) { super.onAttach(context); @@ -103,12 +90,6 @@ public class GestureSettings extends DashboardFragment { return Arrays.asList(sir); } - @Override - public List createPreferenceControllers( - Context context) { - return buildPreferenceControllers(context, null); - } - @Override public List getNonIndexableKeys(Context context) { List keys = super.getNonIndexableKeys(context); @@ -119,6 +100,7 @@ public class GestureSettings extends DashboardFragment { keys.add(KEY_DOUBLE_TWIST); keys.add(KEY_DOUBLE_TAP_SCREEN); keys.add(KEY_PICK_UP); + keys.add(KEY_PREVENT_RINGING); return keys; } diff --git a/src/com/android/settings/gestures/GesturesSettingPreferenceController.java b/src/com/android/settings/gestures/GesturesSettingPreferenceController.java index e4e24d85bb2..1eb188a6b0f 100644 --- a/src/com/android/settings/gestures/GesturesSettingPreferenceController.java +++ b/src/com/android/settings/gestures/GesturesSettingPreferenceController.java @@ -27,6 +27,7 @@ import com.android.settings.core.BasePreferenceController; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.AbstractPreferenceController; +import java.util.ArrayList; import java.util.List; public class GesturesSettingPreferenceController extends BasePreferenceController { @@ -63,8 +64,7 @@ public class GesturesSettingPreferenceController extends BasePreferenceControlle @NonNull Context context) { final AmbientDisplayConfiguration ambientDisplayConfiguration = new AmbientDisplayConfiguration(context); - final List controllers = - GestureSettings.buildPreferenceControllers(context, null); + final List controllers = new ArrayList<>(); controllers.add(new AssistGestureSettingsPreferenceController(context, FAKE_PREF_KEY) .setAssistOnly(false)); @@ -75,6 +75,7 @@ public class GesturesSettingPreferenceController extends BasePreferenceControlle .setConfig(ambientDisplayConfiguration)); controllers.add(new DoubleTapScreenPreferenceController(context, FAKE_PREF_KEY) .setConfig(ambientDisplayConfiguration)); + controllers.add(new PreventRingingPreferenceController(context, FAKE_PREF_KEY)); return controllers; } diff --git a/src/com/android/settings/gestures/PreventRingingGestureSettings.java b/src/com/android/settings/gestures/PreventRingingGestureSettings.java index bde677b36b5..58ff5fa660b 100644 --- a/src/com/android/settings/gestures/PreventRingingGestureSettings.java +++ b/src/com/android/settings/gestures/PreventRingingGestureSettings.java @@ -63,19 +63,6 @@ public class PreventRingingGestureSettings extends DashboardFragment { return 0; } - @Override - protected List createPreferenceControllers(Context context) { - return buildPreferenceControllers(context, getLifecycle()); - } - - private static List buildPreferenceControllers(Context context, - Lifecycle lifecycle) { - final List controllers = new ArrayList<>(); - controllers.add(new PreventRingingPreferenceController(context, lifecycle, - UserHandle.myUserId(), KEY_PREVENT_RINGING)); - return controllers; - } - public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider() { @Override @@ -85,12 +72,6 @@ public class PreventRingingGestureSettings extends DashboardFragment { sir.xmlResId = R.xml.prevent_ringing_gesture_settings; return Arrays.asList(sir); } - - @Override - public List createPreferenceControllers( - Context context) { - return buildPreferenceControllers(context, null /* lifecycle */); - } }; } diff --git a/src/com/android/settings/gestures/PreventRingingPreferenceController.java b/src/com/android/settings/gestures/PreventRingingPreferenceController.java index 3255c9262d9..493755f00ee 100644 --- a/src/com/android/settings/gestures/PreventRingingPreferenceController.java +++ b/src/com/android/settings/gestures/PreventRingingPreferenceController.java @@ -21,7 +21,6 @@ import static android.provider.Settings.Secure.VOLUME_HUSH_MUTE; import static android.provider.Settings.Secure.VOLUME_HUSH_OFF; import static android.provider.Settings.Secure.VOLUME_HUSH_VIBRATE; -import android.annotation.UserIdInt; import android.content.Context; import android.os.Bundle; import android.provider.Settings; @@ -31,22 +30,20 @@ import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.widget.VideoPreference; -import com.android.settingslib.core.AbstractPreferenceController; -import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnCreate; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; -public class PreventRingingPreferenceController extends AbstractPreferenceController +public class PreventRingingPreferenceController extends BasePreferenceController implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause, OnCreate, OnSaveInstanceState { private static final String PREF_KEY_VIDEO = "gesture_prevent_ringing_video"; - private final String mPrefKey; @VisibleForTesting static final String KEY_VIDEO_PAUSED = "key_video_paused"; @@ -56,17 +53,15 @@ public class PreventRingingPreferenceController extends AbstractPreferenceContro private final String SECURE_KEY = VOLUME_HUSH_GESTURE; - @UserIdInt - private final int mUserId; + public PreventRingingPreferenceController(Context context, String key) { + super(context, key); + } - public PreventRingingPreferenceController(Context context, Lifecycle lifecycle, - @UserIdInt int userId, String key) { - super(context); - if (lifecycle != null) { - lifecycle.addObserver(this); - } - mUserId = userId; - mPrefKey = key; + @Override + public int getAvailabilityStatus() { + return mContext.getResources().getBoolean( + com.android.internal.R.bool.config_volumeHushGestureEnabled) + ? AVAILABLE : DISABLED_UNSUPPORTED; } @Override @@ -144,21 +139,10 @@ public class PreventRingingPreferenceController extends AbstractPreferenceContro } } - @Override - public boolean isAvailable() { - return mContext.getResources() - .getBoolean(com.android.internal.R.bool.config_volumeHushGestureEnabled); - } - protected String getVideoPrefKey() { return PREF_KEY_VIDEO; } - @Override - public String getPreferenceKey() { - return mPrefKey; - } - @Override public boolean onPreferenceChange(Preference preference, Object newValue) { int value = Integer.parseInt((String) newValue); diff --git a/tests/robotests/src/com/android/settings/gestures/PreventRingingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/PreventRingingPreferenceControllerTest.java index d92e0e05d1c..b687b46ea61 100644 --- a/tests/robotests/src/com/android/settings/gestures/PreventRingingPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/gestures/PreventRingingPreferenceControllerTest.java @@ -68,8 +68,7 @@ public class PreventRingingPreferenceControllerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); - mController = new PreventRingingPreferenceController( - mContext, null, 0, KEY_PICK_UP); + mController = new PreventRingingPreferenceController(mContext, KEY_PICK_UP); } @Test