1 /*
2  * Copyright (C) 2023 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.provisioning;
18 
19 import android.app.Activity;
20 
21 import com.android.managedprovisioning.R;
22 import com.android.managedprovisioning.common.InitializeLayoutConsumerHandler;
23 import com.android.managedprovisioning.common.Utils;
24 
25 import com.google.android.setupdesign.GlifLayout;
26 import com.google.auto.value.AutoValue;
27 
28 @AutoValue
29 abstract class ResetDeviceActivityBridgeImpl implements ResetDeviceActivityBridge {
30 
getBridgeCallback()31     abstract ResetDeviceActivityBridgeCallback getBridgeCallback();
32 
getInitializeLayoutParamsConsumer()33     abstract InitializeLayoutConsumerHandler getInitializeLayoutParamsConsumer();
34 
35     @Override
initiateUi(Activity activity)36     public void initiateUi(Activity activity) {
37         getInitializeLayoutParamsConsumer()
38                 .initializeLayoutParams(R.layout.reset_device_screen, null);
39 
40         GlifLayout layout = activity.findViewById(R.id.setup_wizard_layout);
41         layout.setIcon(activity.getDrawable(R.drawable.ic_error_outline));
42         Utils.addResetButton(layout, v -> getBridgeCallback().onResetButtonClicked(),
43                 R.string.fully_managed_device_reset_button);
44     }
45 
builder()46     static ResetDeviceActivityBridgeImpl.Builder builder() {
47         return new AutoValue_ResetDeviceActivityBridgeImpl.Builder();
48     }
49 
50     @AutoValue.Builder
51     abstract static class Builder {
setBridgeCallback( ResetDeviceActivityBridgeCallback callback)52         abstract ResetDeviceActivityBridgeImpl.Builder setBridgeCallback(
53                 ResetDeviceActivityBridgeCallback callback);
54 
setInitializeLayoutParamsConsumer( InitializeLayoutConsumerHandler initializeLayoutParamsConsumer)55         abstract ResetDeviceActivityBridgeImpl.Builder setInitializeLayoutParamsConsumer(
56                 InitializeLayoutConsumerHandler initializeLayoutParamsConsumer);
57 
build()58         abstract ResetDeviceActivityBridgeImpl build();
59     }
60 }
61