blob: 917ea569cb6b14c617b6bbe7fbea537571234d5e [file]
/*
* Copyright (C) 2020 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.managedprovisioning.provisioning;
import static java.util.Objects.requireNonNull;
import android.annotation.DrawableRes;
import android.annotation.StringRes;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.internal.annotations.VisibleForTesting;
import com.android.managedprovisioning.R;
import com.android.managedprovisioning.common.AccessibilityContextMenuMaker;
import com.android.managedprovisioning.common.SettingsFacade;
import com.android.managedprovisioning.common.SetupGlifLayoutActivity;
import com.android.managedprovisioning.common.StylerHelper;
import com.android.managedprovisioning.common.ThemeHelper;
import com.android.managedprovisioning.common.ThemeHelper.DefaultNightModeChecker;
import com.android.managedprovisioning.common.ThemeHelper.DefaultSetupWizardBridge;
import com.android.managedprovisioning.common.Utils;
import com.android.managedprovisioning.model.ProvisioningParams;
import com.google.android.setupcompat.template.FooterBarMixin;
import com.google.android.setupcompat.template.FooterButton;
import com.google.android.setupdesign.GlifLayout;
import java.util.Objects;
/**
* This is the first activity the user will see during financed device provisioning.
*/
public final class FinancedDeviceLandingActivity extends SetupGlifLayoutActivity {
private final AccessibilityContextMenuMaker mContextMenuMaker;
private final StylerHelper mStylerHelper;
public FinancedDeviceLandingActivity() {
this(new Utils(), /* contextMenuMaker= */null, new SettingsFacade(),
new ThemeHelper(new DefaultNightModeChecker(), new DefaultSetupWizardBridge()),
new StylerHelper());
}
@VisibleForTesting
FinancedDeviceLandingActivity(Utils utils, AccessibilityContextMenuMaker contextMenuMaker,
SettingsFacade settingsFacade, ThemeHelper themeHelper, StylerHelper stylerHelper) {
super(utils, settingsFacade, themeHelper);
mContextMenuMaker = contextMenuMaker != null
? contextMenuMaker
: new AccessibilityContextMenuMaker(this);
mStylerHelper = requireNonNull(stylerHelper);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ProvisioningParams params = getIntent()
.getParcelableExtra(ProvisioningParams.EXTRA_PROVISIONING_PARAMS);
initializeUi(params);
}
private void initializeUi(ProvisioningParams params) {
setContentView(R.layout.financed_device_landing_screen);
GlifLayout layout = findViewById(R.id.setup_wizard_layout);
final String headerString = getString(R.string.financed_device_screen_header,
params.organizationName);
layout.setHeaderText(headerString);
layout.setIcon(getDrawable(R.drawable.ic_info_outline_24px));
setupFooterBar(layout);
final ViewGroup item1 = layout.findViewById(R.id.item1);
final String makePaymentsSubheaderSummary = getString(
R.string.financed_make_payments_subheader_description, params.organizationName,
params.organizationName);
setupItem(item1, R.string.financed_make_payments_subheader_title,
makePaymentsSubheaderSummary, R.drawable.ic_file_download_24px,
params.organizationName);
final ViewGroup item2 = layout.findViewById(R.id.item2);
final String restrictDeviceSubheaderSummary = getString(
R.string.financed_restrict_device_subheader_description, params.organizationName);
setupItem(item2, R.string.financed_restrict_device_subheader_title,
restrictDeviceSubheaderSummary, R.drawable.ic_lock, params.organizationName);
}
private void setupFooterBar(GlifLayout layout) {
final FooterBarMixin footerBarMixin = layout.getMixin(FooterBarMixin.class);
footerBarMixin.setPrimaryButton(
new FooterButton.Builder(this)
.setText(R.string.next)
.setListener(view -> onNextButtonClicked())
.setButtonType(FooterButton.ButtonType.NEXT)
.setTheme(R.style.SudGlifButton_Primary)
.build());
}
private void setupItem(ViewGroup item, @StringRes int title, String summary,
@DrawableRes int icon, String organizationName) {
mStylerHelper.applyListItemStyling(
item, new LinearLayout.LayoutParams(item.getLayoutParams()));
final ImageView makePaymentsSubHeaderImage = item.findViewById(R.id.sud_items_icon);
makePaymentsSubHeaderImage.setImageDrawable(getDrawable(icon));
final TextView makePaymentsSubHeaderTitle = item.findViewById(R.id.sud_items_title);
makePaymentsSubHeaderTitle.setText(getString(title, organizationName));
final TextView makePaymentsSubHeaderDescription = item.findViewById(R.id.sud_items_summary);
makePaymentsSubHeaderDescription.setText(summary);
}
private void onNextButtonClicked() {
setResult(RESULT_OK);
getTransitionHelper().finishActivity(this);
}
}