Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d8818a5a authored by Mehdi Alizadeh's avatar Mehdi Alizadeh Committed by android-build-merger
Browse files

Show a dialog with a slider to set the back gesture's sensitivity

am: 7d431259

Change-Id: I8db63be340f8cf465599ad76ea52f8b2453de3c0
parents ab2a2b3d 7d431259
Loading
Loading
Loading
Loading
+67 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright (C) 2019 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
  -->

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="12dp">

    <SeekBar
        android:id="@+id/back_sensitivity_seekbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:min="0"
        android:max="3"
        style="@android:style/Widget.Material.SeekBar.Discrete"
        android:theme="@*android:style/ThemeOverlay.DeviceDefault.Accent" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="2dp"
        android:layout_marginBottom="8dp">

        <TextView android:id="@+id/low_tick"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:layout_weight="1"
                  android:layout_marginBottom="2dp"
                  android:layout_marginStart="12dp"
                  android:gravity="start"
                  android:text="@string/low_label"
                  android:textAppearance="?android:attr/textAppearance"
                  android:singleLine="true"
                  android:ellipsize="marquee" />

        <TextView android:id="@+id/high_tick"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:layout_weight="1"
                  android:layout_marginBottom="2dp"
                  android:layout_marginEnd="12dp"
                  android:gravity="end"
                  android:text="@string/high_label"
                  android:textAppearance="?android:attr/textAppearance"
                  android:singleLine="true"
                  android:ellipsize="marquee" />

    </LinearLayout>
</LinearLayout>
 No newline at end of file
+3 −0
Original line number Diff line number Diff line
@@ -411,4 +411,7 @@

    <!-- Maximum height for SliceView, override on slices/view/src/main/res/values/dimens.xml -->
    <dimen name="abc_slice_large_height">480dp</dimen>

    <!-- System navigation settings illustration height -->
    <dimen name="system_navigation_illustration_height">320dp</dimen>
</resources>
+11 −0
Original line number Diff line number Diff line
@@ -10235,6 +10235,17 @@
    <!-- Content description for the Information icon [CHAR LIMIT=30] -->
    <string name="information_label">Information</string>
    <!-- Label on the left side of sensitivity adjustment slider [CHAR LIMIT=30] -->
    <string name="low_label">Low</string>
    <!-- Label on the right side of sensitivity adjustment slider [CHAR LIMIT=30] -->
    <string name="high_label">High</string>
    <!-- Message for the dialog that explains how increasing sensitivity can affect gestures along the edges. [CHAR LIMIT=NONE] -->
    <string name="back_sensitivity_dialog_message">\nHigher sensitivity may conflict with any app gestures along the edges of the screen.</string>
    <!-- Title for the dialog that is shown to adjust the back sensitivity [CHAR LIMIT=60] -->
    <string name="back_sensitivity_dialog_title">Back Sensitivity</string>
    <!-- Preference and settings suggestion title text for ambient display double tap (phone) [CHAR LIMIT=60]-->
    <string name="ambient_display_title" product="default">Double-tap to check phone</string>
    <!-- Preference and settings suggestion title text for ambient display double tap (tablet) [CHAR LIMIT=60]-->
+81 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 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.app.AlertDialog;
import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.om.IOverlayManager;
import android.os.Bundle;
import android.os.ServiceManager;
import android.view.View;
import android.widget.SeekBar;

import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;

/**
 * Dialog to set the back gesture's sensitivity in Gesture navigation mode.
 */
public class GestureNavigationBackSensitivityDialog extends InstrumentedDialogFragment {
    private static final String TAG = "GestureNavigationBackSensitivityDialog";
    private static final String KEY_BACK_SENSITIVITY = "back_sensitivity";

    public static void show(SystemNavigationGestureSettings parent, int sensitivity) {
        if (!parent.isAdded()) {
            return;
        }

        final GestureNavigationBackSensitivityDialog dialog =
                new GestureNavigationBackSensitivityDialog();
        final Bundle bundle = new Bundle();
        bundle.putInt(KEY_BACK_SENSITIVITY, sensitivity);
        dialog.setArguments(bundle);
        dialog.setTargetFragment(parent, 0);
        dialog.show(parent.getFragmentManager(), TAG);
    }

    @Override
    public int getMetricsCategory() {
        // TODO(135211145): Use a separate metrics category for this dialog.
        return SettingsEnums.SETTINGS_GESTURE_SWIPE_UP;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final View view = getActivity().getLayoutInflater().inflate(
                R.layout.dialog_back_gesture_sensitivity, null);
        final SeekBar seekBar = view.findViewById(R.id.back_sensitivity_seekbar);
        seekBar.setProgress(getArguments().getInt(KEY_BACK_SENSITIVITY));
        return new AlertDialog.Builder(getContext())
                .setTitle(R.string.back_sensitivity_dialog_title)
                .setMessage(R.string.back_sensitivity_dialog_message)
                .setView(view)
                .setPositiveButton(R.string.okay, (dialog, which) -> {
                    int sensitivity = seekBar.getProgress();
                    getArguments().putInt(KEY_BACK_SENSITIVITY, sensitivity);
                    SystemNavigationGestureSettings.setBackSensitivity(getActivity(),
                            getOverlayManager(), sensitivity);
                })
                .create();
    }

    private IOverlayManager getOverlayManager() {
        return IOverlayManager.Stub.asInterface(ServiceManager.getService(Context.OVERLAY_SERVICE));
    }
}
 No newline at end of file
+63 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 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.app.AlertDialog;
import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;

import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;

/**
 * Dialog to notify user that gesture navigation is not available because of unsupported launcher.
 */
public class GestureNavigationNotAvailableDialog extends InstrumentedDialogFragment {
    private static final String TAG = "GestureNavigationNotAvailableDialog";

    public static void show(SystemNavigationGestureSettings parent) {
        if (!parent.isAdded()) {
            return;
        }

        final GestureNavigationNotAvailableDialog dialog =
                new GestureNavigationNotAvailableDialog();
        dialog.setTargetFragment(parent, 0);
        dialog.show(parent.getFragmentManager(), TAG);
    }

    @Override
    public int getMetricsCategory() {
        // TODO(135211145): Use a separate metrics category for this dialog.
        return SettingsEnums.SETTINGS_GESTURE_SWIPE_UP;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final Context context = getActivity();
        final String defaultHomeAppName = SystemNavigationPreferenceController
                .getDefaultHomeAppName(context);
        final String message = getString(R.string.gesture_not_supported_dialog_message,
                defaultHomeAppName);
        return new AlertDialog.Builder(context)
                .setMessage(message)
                .setPositiveButton(R.string.okay, null)
                .create();
    }
}
 No newline at end of file
Loading