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

Commit 6cf35916 authored by Emily Chuang's avatar Emily Chuang
Browse files

Add dismissal mechanism for contextual cards.

In the homepage, we should allow cards to be dismissed.

- Implement card flipping upon card long pressing.

Bug: 113783548
Test: robotests, visual
Change-Id: I2ddb498321ba5c5078d6944aa2ef32f1386bdb10
parent 192c6a14
Loading
Loading
Loading
Loading
+50 −8
Original line number Diff line number Diff line
@@ -21,6 +21,11 @@
    android:layout_height="wrap_content"
    style="@style/ContextualCardStyle">

    <ViewFlipper
        android:id="@+id/viewFlipper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <androidx.slice.widget.SliceView
            android:id="@+id/slice_view"
            android:layout_width="match_parent"
@@ -30,4 +35,41 @@
            android:paddingStart="@dimen/homepage_card_padding_start"
            android:paddingEnd="@dimen/homepage_card_padding_end"/>

        <!--dismissal view-->
        <LinearLayout
            android:id="@+id/dismissal_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="@dimen/homepage_card_padding_start"
                android:layout_marginTop="@dimen/homepage_card_padding_start"
                android:text="@string/contextual_card_dismiss_confirm_message"
                style="@style/TextAppearance.ContextualCardDismissalText"/>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="bottom|end">

                <Button
                    android:id="@+id/keep"
                    style="@style/ContextualCardDismissalButton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/contextual_card_dismiss_keep"/>

                <Button
                    android:id="@+id/remove"
                    style="@style/ContextualCardDismissalButton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/contextual_card_dismiss_remove"/>

            </LinearLayout>
        </LinearLayout>
    </ViewFlipper>
</androidx.cardview.widget.CardView>
 No newline at end of file
+7 −1
Original line number Diff line number Diff line
@@ -10286,4 +10286,10 @@
    <!-- Summary for the top level Privacy Settings [CHAR LIMIT=NONE]-->
    <string name="privacy_dashboard_summary">Permission, permission usage</string>
    <!-- Label for button in contextual card for users to remove the card [CHAR LIMIT=30] -->
    <string name="contextual_card_dismiss_remove">Remove</string>
    <!-- Label for button in contextual card for users to keep the card [CHAR LIMIT=30] -->
    <string name="contextual_card_dismiss_keep">Keep</string>
    <!-- String for contextual card dismissal [CHAR LIMIT=NONE] -->
    <string name="contextual_card_dismiss_confirm_message">Remove this suggestion?</string>
</resources>
 No newline at end of file
+36 −15
Original line number Diff line number Diff line
@@ -16,7 +16,8 @@

<resources>

    <style name="Theme.ActionBar" parent="@android:style/Widget.DeviceDefault.Light.ActionBar.Solid">
    <style name="Theme.ActionBar"
           parent="@android:style/Widget.DeviceDefault.Light.ActionBar.Solid">
        <item name="android:contentInsetStart">@dimen/actionbar_contentInsetStart</item>
    </style>

@@ -78,8 +79,11 @@
        <item name="android:scrollbarStyle">outsideOverlay</item>
    </style>

    <style name="TrimmedHorizontalProgressBar" parent="android:Widget.Material.ProgressBar.Horizontal">
        <item name="android:indeterminateDrawable">@drawable/progress_indeterminate_horizontal_material_trimmed</item>
    <style name="TrimmedHorizontalProgressBar"
           parent="android:Widget.Material.ProgressBar.Horizontal">
        <item name="android:indeterminateDrawable">
            @drawable/progress_indeterminate_horizontal_material_trimmed
        </item>
        <item name="android:minHeight">3dip</item>
        <item name="android:maxHeight">3dip</item>
    </style>
@@ -162,7 +166,8 @@
        <item name="android:layout_height">wrap_content</item>
    </style>

    <style name="ConfirmDeviceCredentialsAnimationStyle" parent="@*android:style/Animation.Material.Activity">
    <style name="ConfirmDeviceCredentialsAnimationStyle"
           parent="@*android:style/Animation.Material.Activity">
        <item name="android:activityOpenEnterAnimation">@anim/confirm_credential_open_enter</item>
        <item name="android:activityOpenExitAnimation">@anim/confirm_credential_open_exit</item>
    </style>
@@ -171,14 +176,16 @@
        <item name="android:background">#ff000000</item>
    </style>

    <style name="SecurityPreferenceButtonContainer" parent="@android:style/Widget.Material.Light.SegmentedButton">
    <style name="SecurityPreferenceButtonContainer"
           parent="@android:style/Widget.Material.Light.SegmentedButton">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:weightSum">2</item>
        <item name="android:dividerPadding">8dip</item>
    </style>

    <style name="SecurityPreferenceButton" parent="@android:style/Widget.Material.Light.Button.Borderless">
    <style name="SecurityPreferenceButton"
           parent="@android:style/Widget.Material.Light.Button.Borderless">
        <item name="android:layout_width">0dip</item>
        <item name="android:layout_weight">1</item>
        <item name="android:layout_height">wrap_content</item>
@@ -258,7 +265,8 @@
        <item name="android:textSize">18sp</item>
    </style>

    <style name="TextAppearance.CategoryTitle" parent="@android:style/TextAppearance.Material.Body2">
    <style name="TextAppearance.CategoryTitle"
           parent="@android:style/TextAppearance.Material.Body2">
        <item name="android:textColor">?android:attr/textColorSecondary</item>
    </style>

@@ -293,12 +301,14 @@
        <item name="android:textStyle">normal</item>
    </style>

    <style name="TextAppearance.RemoveDialogContent" parent="@android:style/TextAppearance.Material">
    <style name="TextAppearance.RemoveDialogContent"
           parent="@android:style/TextAppearance.Material">
        <item name="android:textSize">16sp</item>
        <item name="android:textColor">?android:attr/textColorPrimary</item>
    </style>

    <style name="TextAppearance.SearchBar" parent="@android:style/TextAppearance.Material.Widget.Toolbar.Subtitle">
    <style name="TextAppearance.SearchBar"
           parent="@android:style/TextAppearance.Material.Widget.Toolbar.Subtitle">
        <item name="android:textSize">@dimen/search_bar_text_size</item>
    </style>

@@ -345,6 +355,12 @@
        <item name="android:padding">8dp</item>
    </style>

    <style name="TextAppearance.ContextualCardDismissalText"
           parent="@android:style/TextAppearance.Material.Body1">
        <item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item>
        <item name="android:textSize">16sp</item>
    </style>

    <style name="SuggestionCardText">
        <item name="android:textAlignment">viewStart</item>
    </style>
@@ -391,7 +407,8 @@
        <item name="android:lineSpacingMultiplier">1.2</item>
    </style>

    <style name="RingProgressBarStyle" parent="android:style/Widget.Material.ProgressBar.Horizontal">
    <style name="RingProgressBarStyle"
           parent="android:style/Widget.Material.ProgressBar.Horizontal">
        <item name="android:indeterminate">false</item>
        <item name="android:max">10000</item>
        <item name="android:mirrorForRtl">false</item>
@@ -470,7 +487,6 @@
        <item name="android:textColor">?android:attr/colorAccent</item>
        <item name="android:textSize">14sp</item>
        <item name="android:textAllCaps">false</item>
        <item name="android:fontFamily">sans-serif-medium</item>
    </style>

    <style name="ConditionHalfCardBorderlessButton"
@@ -483,4 +499,9 @@
        <item name="android:textAlignment">viewEnd</item>
    </style>

    <style name="ContextualCardDismissalButton"
           parent="android:Widget.DeviceDefault.Button.Borderless.Colored">
        <item name="android:textAllCaps">false</item>
    </style>

</resources>
+2 −0
Original line number Diff line number Diff line
@@ -28,5 +28,7 @@ public interface ContextualCardController {

    void onActionClick(ContextualCard card);

    void onDismissed(ContextualCard card);

    void setCardUpdateListener(ContextualCardUpdateListener listener);
}
+4 −4
Original line number Diff line number Diff line
@@ -146,14 +146,14 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo
        onContextualCardUpdated(cards.stream().collect(groupingBy(ContextualCard::getCardType)));
    }

    void setListener(ContextualCardUpdateListener listener) {
        mListener = listener;
    }

    public ControllerRendererPool getControllerRendererPool() {
        return mControllerRendererPool;
    }

    void setListener(ContextualCardUpdateListener listener) {
        mListener = listener;
    }

    static class CardContentLoaderCallbacks implements
            LoaderManager.LoaderCallbacks<List<ContextualCard>> {

Loading