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

Commit d4fc724f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add contextual card feedback email mechanism."

parents f22268c8 68f37a19
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -3044,6 +3044,9 @@

        <activity
            android:name=".wifi.dpp.WifiDppConfiguratorActivity"/>

        <activity android:name=".homepage.contextualcards.ContextualCardFeedbackDialog"
                  android:theme="@android:style/Theme.DeviceDefault.Light.Dialog.Alert" />
        <!-- This is the longest AndroidManifest.xml ever. -->
    </application>
</manifest>
+2 −0
Original line number Diff line number Diff line
@@ -160,4 +160,6 @@
        android.settings.EDIT_EMERGENCY_INFO
    </string>

    <!-- Email address for the homepage contextual cards feedback -->
    <string name="config_contextual_card_feedback_email" translatable="false"></string>
</resources>
+5 −0
Original line number Diff line number Diff line
@@ -10249,4 +10249,9 @@
    <!-- Summary for low storage slice. [CHAR LIMIT=NONE] -->
    <string name="low_storage_summary">Storage is low. <xliff:g id="percentage" example="54%">%1$s</xliff:g> used - <xliff:g id="free_space" example="32GB">%2$s</xliff:g> free</string>
    <!-- Label for button in contextual card feedback dialog for users to send feedback [CHAR LIMIT=30] -->
    <string name="contextual_card_feedback_send">Send feedback</string>
    <!-- String for contextual card feedback dialog [CHAR LIMIT=NONE] -->
    <string name="contextual_card_feedback_confirm_message">Would you like to give us feedback on this suggestion?</string>
</resources>
 No newline at end of file
+66 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 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.homepage.contextualcards;

import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;

import com.android.internal.app.AlertActivity;
import com.android.internal.app.AlertController;
import com.android.settings.R;

public class ContextualCardFeedbackDialog extends AlertActivity implements
        DialogInterface.OnClickListener {

    public static final String EXTRA_CARD_NAME = "card_name";
    public static final String EXTRA_FEEDBACK_EMAIL = "feedback_email";

    private static final String TAG = "CardFeedbackDialog";
    private static final String SUBJECT = "Settings Contextual Card Feedback - ";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final AlertController.AlertParams alertParams = mAlertParams;
        alertParams.mMessage = getText(R.string.contextual_card_feedback_confirm_message);
        alertParams.mPositiveButtonText = getText(R.string.contextual_card_feedback_send);
        alertParams.mPositiveButtonListener = this;
        alertParams.mNegativeButtonText = getText(R.string.skip_label);

        setupAlert();
    }

    @Override
    public void onClick(DialogInterface dialog, int which) {
        final String cardName = getIntent().getStringExtra(EXTRA_CARD_NAME);
        final String email = getIntent().getStringExtra(EXTRA_FEEDBACK_EMAIL);
        final Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:" + email));
        intent.putExtra(Intent.EXTRA_SUBJECT, SUBJECT + cardName);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        try {
            startActivity(intent);
        } catch (Exception e) {
            Log.e(TAG, "Send feedback failed.", e);
        }
        finish();
    }
}
+29 −3
Original line number Diff line number Diff line
@@ -17,11 +17,16 @@
package com.android.settings.homepage.contextualcards.slices;

import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;

import com.android.settings.homepage.contextualcards.CardContentProvider;
import androidx.annotation.VisibleForTesting;

import com.android.settings.R;
import com.android.settings.homepage.contextualcards.CardDatabaseHelper;
import com.android.settings.homepage.contextualcards.ContextualCard;
import com.android.settings.homepage.contextualcards.ContextualCardController;
import com.android.settings.homepage.contextualcards.ContextualCardFeedbackDialog;
import com.android.settings.homepage.contextualcards.ContextualCardUpdateListener;
import com.android.settingslib.utils.ThreadUtils;

@@ -32,7 +37,8 @@ public class SliceContextualCardController implements ContextualCardController {

    private static final String TAG = "SliceCardController";

    private Context mContext;
    private final Context mContext;

    private ContextualCardUpdateListener mCardUpdateListener;

    public SliceContextualCardController(Context context) {
@@ -51,7 +57,7 @@ public class SliceContextualCardController implements ContextualCardController {

    @Override
    public void onActionClick(ContextualCard card) {
        //TODO(b/113783548): Implement feedback mechanism

    }

    @Override
@@ -60,10 +66,30 @@ public class SliceContextualCardController implements ContextualCardController {
            final CardDatabaseHelper dbHelper = CardDatabaseHelper.getInstance(mContext);
            dbHelper.markContextualCardAsDismissed(mContext, card.getName());
        });
        showFeedbackDialog(card);
    }

    @Override
    public void setCardUpdateListener(ContextualCardUpdateListener listener) {
        mCardUpdateListener = listener;
    }

    @VisibleForTesting
    void showFeedbackDialog(ContextualCard card) {
        final String email = mContext.getString(R.string.config_contextual_card_feedback_email);
        if (TextUtils.isEmpty(email)) {
            return;
        }
        final Intent feedbackIntent = new Intent(mContext, ContextualCardFeedbackDialog.class);
        feedbackIntent.putExtra(ContextualCardFeedbackDialog.EXTRA_CARD_NAME,
                getSimpleCardName(card));
        feedbackIntent.putExtra(ContextualCardFeedbackDialog.EXTRA_FEEDBACK_EMAIL, email);
        feedbackIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        mContext.startActivity(feedbackIntent);
    }

    private String getSimpleCardName(ContextualCard card) {
        final String[] split = card.getName().split("/");
        return split[split.length - 1];
    }
}
Loading