1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.systemui.hdmi;
18 
19 import android.hardware.hdmi.HdmiControlManager;
20 import android.os.Bundle;
21 import android.view.View;
22 import android.view.WindowManager;
23 import android.widget.Button;
24 import android.widget.ImageView;
25 import android.widget.TextView;
26 
27 import com.android.systemui.R;
28 import com.android.systemui.tv.TvBottomSheetActivity;
29 
30 import javax.inject.Inject;
31 
32 /**
33  * Confirmation dialog shown when Set Menu Language CEC message was received.
34  */
35 public class HdmiCecSetMenuLanguageActivity extends TvBottomSheetActivity
36         implements View.OnClickListener {
37     private static final String TAG = HdmiCecSetMenuLanguageActivity.class.getSimpleName();
38 
39     private final HdmiCecSetMenuLanguageHelper mHdmiCecSetMenuLanguageHelper;
40 
41     @Inject
HdmiCecSetMenuLanguageActivity( HdmiCecSetMenuLanguageHelper hdmiCecSetMenuLanguageHelper)42     public HdmiCecSetMenuLanguageActivity(
43             HdmiCecSetMenuLanguageHelper hdmiCecSetMenuLanguageHelper) {
44         mHdmiCecSetMenuLanguageHelper = hdmiCecSetMenuLanguageHelper;
45     }
46 
47     @Override
onCreate(Bundle b)48     public final void onCreate(Bundle b) {
49         super.onCreate(b);
50         getWindow().addPrivateFlags(
51                 WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
52         String languageTag = getIntent().getStringExtra(HdmiControlManager.EXTRA_LOCALE);
53         mHdmiCecSetMenuLanguageHelper.setLocale(languageTag);
54         if (mHdmiCecSetMenuLanguageHelper.isLocaleDenylisted()) {
55             finish();
56         }
57     }
58 
59     @Override
onResume()60     public void onResume() {
61         super.onResume();
62         CharSequence title = getString(R.string.hdmi_cec_set_menu_language_title,
63                 mHdmiCecSetMenuLanguageHelper.getLocale().getDisplayLanguage());
64         CharSequence text = getString(R.string.hdmi_cec_set_menu_language_description);
65         initUI(title, text);
66     }
67 
68     @Override
onClick(View v)69     public void onClick(View v) {
70         if (v.getId() == R.id.bottom_sheet_positive_button) {
71             mHdmiCecSetMenuLanguageHelper.acceptLocale();
72         } else {
73             mHdmiCecSetMenuLanguageHelper.declineLocale();
74         }
75         finish();
76     }
77 
initUI(CharSequence title, CharSequence text)78     void initUI(CharSequence title, CharSequence text) {
79         TextView titleTextView = findViewById(R.id.bottom_sheet_title);
80         TextView contentTextView = findViewById(R.id.bottom_sheet_body);
81         ImageView icon = findViewById(R.id.bottom_sheet_icon);
82         ImageView secondIcon = findViewById(R.id.bottom_sheet_second_icon);
83         Button okButton = findViewById(R.id.bottom_sheet_positive_button);
84         Button cancelButton = findViewById(R.id.bottom_sheet_negative_button);
85 
86         titleTextView.setText(title);
87         contentTextView.setText(text);
88         icon.setImageResource(com.android.internal.R.drawable.ic_settings_language);
89         secondIcon.setVisibility(View.GONE);
90 
91         okButton.setText(R.string.hdmi_cec_set_menu_language_accept);
92         okButton.setOnClickListener(this);
93 
94         cancelButton.setText(R.string.hdmi_cec_set_menu_language_decline);
95         cancelButton.setOnClickListener(this);
96         cancelButton.requestFocus();
97     }
98 }
99