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