1a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav/*
2a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav * Copyright (C) 2014 The Android Open Source Project
3a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav *
4a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav * Licensed under the Apache License, Version 2.0 (the "License");
5a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav * you may not use this file except in compliance with the License.
6a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav * You may obtain a copy of the License at
7a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav *
8a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav *      http://www.apache.org/licenses/LICENSE-2.0
9a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav *
10a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav * Unless required by applicable law or agreed to in writing, software
11a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav * distributed under the License is distributed on an "AS IS" BASIS,
12a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav * See the License for the specific language governing permissions and
14a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav * limitations under the License.
15a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav */
16a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav
17a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslavpackage com.android.printspooler.ui;
18a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav
19a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslavimport android.app.Activity;
20a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslavimport android.app.Fragment;
21a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslavimport android.os.Bundle;
22a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslavimport android.text.TextUtils;
23a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslavimport android.view.LayoutInflater;
24a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslavimport android.view.View;
25a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslavimport android.view.ViewGroup;
26a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslavimport android.view.View.OnClickListener;
27a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslavimport android.widget.Button;
28a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslavimport android.widget.TextView;
29a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav
30a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslavimport com.android.printspooler.R;
31a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav
32a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav/**
33a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav * Fragment for showing an error UI.
34a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav */
35a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslavpublic final class PrintErrorFragment extends Fragment {
36a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav    public static final int ACTION_NONE = 0;
37a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav    public static final int ACTION_RETRY = 1;
38525a66b2bb5abf844aff2109bdc9ed819566beceSvet Ganov
39525a66b2bb5abf844aff2109bdc9ed819566beceSvet Ganov    private static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";
40525a66b2bb5abf844aff2109bdc9ed819566beceSvet Ganov    private static final String EXTRA_ACTION = "EXTRA_ACTION";
41a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav
42a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav    public interface OnActionListener {
43a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav        public void onActionPerformed();
44a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav    }
45a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav
46525a66b2bb5abf844aff2109bdc9ed819566beceSvet Ganov    public static PrintErrorFragment newInstance(CharSequence message, int action) {
47a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav        Bundle arguments = new Bundle();
48525a66b2bb5abf844aff2109bdc9ed819566beceSvet Ganov        arguments.putCharSequence(EXTRA_MESSAGE, message);
49a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav        arguments.putInt(EXTRA_ACTION, action);
50525a66b2bb5abf844aff2109bdc9ed819566beceSvet Ganov        PrintErrorFragment fragment = new PrintErrorFragment();
51525a66b2bb5abf844aff2109bdc9ed819566beceSvet Ganov        fragment.setArguments(arguments);
52525a66b2bb5abf844aff2109bdc9ed819566beceSvet Ganov        return fragment;
53a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav    }
54a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav
55a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav    @Override
56a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav    public View onCreateView(LayoutInflater inflater, ViewGroup root,
57a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav            Bundle savedInstanceState) {
58a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav        return inflater.inflate(R.layout.print_error_fragment, root, false);
59a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav    }
60a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav
61a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav    @Override
62a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav    public void onViewCreated(View view, Bundle savedInstanceState) {
63a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav        super.onViewCreated(view, savedInstanceState);
64a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav
65525a66b2bb5abf844aff2109bdc9ed819566beceSvet Ganov        CharSequence message = getArguments().getCharSequence(EXTRA_MESSAGE);
66a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav
67525a66b2bb5abf844aff2109bdc9ed819566beceSvet Ganov        if (!TextUtils.isEmpty(message)) {
68525a66b2bb5abf844aff2109bdc9ed819566beceSvet Ganov            TextView messageView = (TextView) view.findViewById(R.id.message);
69525a66b2bb5abf844aff2109bdc9ed819566beceSvet Ganov            messageView.setText(message);
70a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav        }
71a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav
72a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav        Button actionButton = (Button) view.findViewById(R.id.action_button);
73a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav
74a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav        final int action = getArguments().getInt(EXTRA_ACTION);
75a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav        switch (action) {
76a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav            case ACTION_RETRY: {
77a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav                actionButton.setVisibility(View.VISIBLE);
78a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav                actionButton.setText(R.string.print_error_retry);
79a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav            } break;
80a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav
81a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav            case ACTION_NONE: {
82a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav                actionButton.setVisibility(View.GONE);
83a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav            } break;
84a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav        }
85a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav
86a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav        actionButton.setOnClickListener(new OnClickListener() {
87a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav            @Override
88a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav            public void onClick(View view) {
89a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav                Activity activity = getActivity();
90a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav                if (activity instanceof OnActionListener) {
91a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav                    ((OnActionListener) getActivity()).onActionPerformed();
92a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav                }
93a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav            }
94a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav        });
95a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav    }
96a798c0a984f29f7180883a61839f68d2cbf0c6ceSvetoslav}
97