1 /*
2  * Copyright 2016, 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.managedprovisioning.common;
18 
19 import android.annotation.Nullable;
20 import android.content.res.ColorStateList;
21 import android.content.res.Resources.Theme;
22 import android.os.Bundle;
23 import android.sysprop.SetupWizardProperties;
24 
25 import androidx.annotation.VisibleForTesting;
26 
27 import com.android.managedprovisioning.R;
28 import com.android.managedprovisioning.model.CustomizationParams;
29 import com.google.android.setupdesign.GlifLayout;
30 import com.google.android.setupdesign.util.ThemeResolver;
31 
32 
33 /**
34  * Base class for setting up the layout.
35  */
36 public abstract class SetupGlifLayoutActivity extends SetupLayoutActivity {
SetupGlifLayoutActivity()37     public SetupGlifLayoutActivity() {
38         super();
39     }
40 
41     @Override
onCreate(Bundle savedInstanceState)42     protected void onCreate(Bundle savedInstanceState) {
43         super.onCreate(savedInstanceState);
44         setDefaultTheme();
45     }
46 
47     @VisibleForTesting
SetupGlifLayoutActivity(Utils utils)48     protected SetupGlifLayoutActivity(Utils utils) {
49         super(utils);
50     }
51 
52     @Override
onApplyThemeResource(Theme theme, int resid, boolean first)53     protected void onApplyThemeResource(Theme theme, int resid, boolean first) {
54         theme.applyStyle(R.style.SetupWizardPartnerResource, true);
55         super.onApplyThemeResource(theme, resid, first);
56     }
57 
initializeLayoutParams(int layoutResourceId, @Nullable Integer headerResourceId, CustomizationParams params)58     protected void initializeLayoutParams(int layoutResourceId, @Nullable Integer headerResourceId,
59             CustomizationParams params) {
60         setContentView(layoutResourceId);
61         GlifLayout layout = findViewById(R.id.setup_wizard_layout);
62 
63         // ManagedProvisioning's customization has prioritization than stencil theme currently. If
64         // there is no status bar color customized by ManagedProvisioning, it can apply status bar
65         // color from stencil theme.
66         if (!params.useSetupStatusBarColor) {
67             setStatusBarColor(params.statusBarColor);
68         }
69         layout.setPrimaryColor(ColorStateList.valueOf(params.mainColor));
70 
71         if (headerResourceId != null) {
72             layout.setHeaderText(headerResourceId);
73             layout.setHeaderColor(
74                     getResources().getColorStateList(R.color.header_text_color, getTheme()));
75         }
76 
77         layout.setIcon(LogoUtils.getOrganisationLogo(this, params.mainColor));
78     }
79 
setDefaultTheme()80     private void setDefaultTheme() {
81         setTheme(new ThemeResolver.Builder(ThemeResolver.getDefault())
82             .setDefaultTheme(R.style.SudThemeGlifV3_Light)
83             .setUseDayNight(false)
84             .build()
85             .resolve(SetupWizardProperties.theme().orElse("")));
86     }
87 
88 }
89