1abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler/*
2abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * Copyright (C) 2016 The Android Open Source Project
3abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler *
4abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * Licensed under the Apache License, Version 2.0 (the "License");
5abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * you may not use this file except in compliance with the License.
6abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * You may obtain a copy of the License at
7abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler *
8abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler *      http://www.apache.org/licenses/LICENSE-2.0
9abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler *
10abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * Unless required by applicable law or agreed to in writing, software
11abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * distributed under the License is distributed on an "AS IS" BASIS,
12abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * See the License for the specific language governing permissions and
14abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * limitations under the License
15abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler */
16abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler
174f78e1fa55255a261247e9a112bc4433cd1a9ab0Philip P. Moltmannpackage com.android.packageinstaller.television;
18abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler
19abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.app.Fragment;
20abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.content.Intent;
21abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.os.Bundle;
22abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.provider.Settings;
2374fa089b8c39d84b737607a3e3d2cde4d3b42d24Philip P. Moltmannimport android.support.annotation.Nullable;
24abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.util.Log;
25abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.view.LayoutInflater;
26abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.view.View;
27abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.view.ViewGroup;
28abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.widget.Button;
29abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.widget.TextView;
30abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler
31abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport com.android.packageinstaller.PackageUtil;
32abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport com.android.packageinstaller.R;
33abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler
34abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerpublic class UninstallAppProgressFragment extends Fragment implements View.OnClickListener,
35abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        UninstallAppProgress.ProgressFragment {
36abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    private static final String TAG = "UninstallAppProgressF"; // full class name is too long
37abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler
38abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    private Button mOkButton;
39abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    private Button mDeviceManagerButton;
40abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    private Button mUsersButton;
41abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler
42abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    @Override
43abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
44abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler            Bundle savedInstanceState) {
45abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        final View root = inflater.inflate(R.layout.uninstall_progress, container, false);
46abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        // Initialize views
47abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        View snippetView = root.findViewById(R.id.app_snippet);
48abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        PackageUtil.initSnippetForInstalledApp(getContext(),
49abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler                ((UninstallAppProgress)getActivity()).getAppInfo(), snippetView);
50abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        mDeviceManagerButton = (Button) root.findViewById(R.id.device_manager_button);
51abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        mUsersButton = (Button) root.findViewById(R.id.users_button);
52abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        mDeviceManagerButton.setVisibility(View.GONE);
53abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        mDeviceManagerButton.setOnClickListener(new View.OnClickListener() {
54abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler            @Override
55abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler            public void onClick(View v) {
56abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler                Intent intent = new Intent();
57abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler                intent.setClassName("com.android.settings",
58abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler                        "com.android.settings.Settings$DeviceAdminSettingsActivity");
59abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler                intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK);
60abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler                startActivity(intent);
61abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler                getActivity().finish();
62abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler            }
63abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        });
64abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        mUsersButton.setVisibility(View.GONE);
65abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        mUsersButton.setOnClickListener(new View.OnClickListener() {
66abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler            @Override
67abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler            public void onClick(View v) {
68abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler                Intent intent = new Intent(Settings.ACTION_USER_SETTINGS);
69abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler                intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK);
70abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler                startActivity(intent);
71abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler                getActivity().finish();
72abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler            }
73abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        });
74abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        // Hide button till progress is being displayed
75abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        mOkButton = (Button) root.findViewById(R.id.ok_button);
76abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        mOkButton.setOnClickListener(this);
77abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler
78abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        return root;
79abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    }
80abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler
81abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    public void onClick(View v) {
82abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        final UninstallAppProgress activity = (UninstallAppProgress) getActivity();
83abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        if(v == mOkButton && activity != null) {
84abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler            Log.i(TAG, "Finished uninstalling pkg: " +
85abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler                    activity.getAppInfo().packageName);
86abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler            activity.setResultAndFinish();
87abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        }
88abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    }
89abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler
90abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    @Override
91abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    public void setUsersButtonVisible(boolean visible) {
92abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        mUsersButton.setVisibility(visible ? View.VISIBLE : View.GONE);
93abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    }
94abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler
95abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    @Override
96abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    public void setDeviceManagerButtonVisible(boolean visible) {
97abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        mDeviceManagerButton.setVisibility(visible ? View.VISIBLE : View.GONE);
98abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    }
99abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler
100abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    @Override
101abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    public void showCompletion(CharSequence statusText) {
102abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        final View root = getView();
103abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        root.findViewById(R.id.progress_view).setVisibility(View.GONE);
104abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        root.findViewById(R.id.status_view).setVisibility(View.VISIBLE);
105abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        ((TextView) root.findViewById(R.id.status_text)).setText(statusText);
106abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler        root.findViewById(R.id.ok_panel).setVisibility(View.VISIBLE);
107abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler    }
108abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler}
109