13b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa/* 23b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * Copyright (C) 2015 The Android Open Source Project 33b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * 43b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * Licensed under the Apache License, Version 2.0 (the "License"); 53b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * you may not use this file except in compliance with the License. 63b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * You may obtain a copy of the License at 73b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * 83b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * http://www.apache.org/licenses/LICENSE-2.0 93b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * 103b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * Unless required by applicable law or agreed to in writing, software 113b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * distributed under the License is distributed on an "AS IS" BASIS, 123b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * See the License for the specific language governing permissions and 143b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * limitations under the License. 153b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa */ 163b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 173b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwapackage com.android.documentsui; 183b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 193b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwaimport android.annotation.Nullable; 203b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwaimport android.app.Fragment; 213b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwaimport android.app.FragmentManager; 223b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwaimport android.app.FragmentTransaction; 233b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwaimport android.os.Bundle; 243b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwaimport android.view.LayoutInflater; 253b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwaimport android.view.View; 263b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwaimport android.view.ViewGroup; 273b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwaimport android.widget.Button; 283b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwaimport android.widget.ImageView; 293b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwaimport android.widget.TextView; 303b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 313b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa/** 323b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * A message bar displaying some info/error messages and a Dismiss button. 333b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa */ 343b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwapublic class MessageBar extends Fragment { 353b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa private View mView; 363b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa private ViewGroup mContainer; 373b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 383b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa /** 393b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * Creates an instance of a MessageBar. Note that the new MessagBar is not visible by default, 403b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * and has to be shown by calling MessageBar.show. 413b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa */ 423b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa public static MessageBar create(FragmentManager fm) { 433b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa final MessageBar fragment = new MessageBar(); 443b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 453b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa final FragmentTransaction ft = fm.beginTransaction(); 463b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa ft.replace(R.id.container_message_bar, fragment); 473b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa ft.commitAllowingStateLoss(); 483b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 493b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa return fragment; 503b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa } 513b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 523b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa /** 533b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * Sets the info message. Can be null, in which case no info message will be displayed. The 543b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * message bar layout will be adjusted accordingly. 553b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa */ 563b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa public void setInfo(@Nullable String info) { 573b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa View infoContainer = mView.findViewById(R.id.container_info); 583b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa if (info != null) { 593b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa TextView infoText = (TextView) mView.findViewById(R.id.textview_info); 603b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa infoText.setText(info); 613b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa infoContainer.setVisibility(View.VISIBLE); 623b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa } else { 633b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa infoContainer.setVisibility(View.GONE); 643b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa } 653b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa } 663b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 673b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa /** 683b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * Sets the error message. Can be null, in which case no error message will be displayed. The 693b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa * message bar layout will be adjusted accordingly. 703b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa */ 713b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa public void setError(@Nullable String error) { 7291caed80b178e5f9cda84a2535d27d67710a5647Ben Kwa View errorView = mView.findViewById(R.id.container_error); 733b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa if (error != null) { 743b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa TextView errorText = (TextView) mView.findViewById(R.id.textview_error); 753b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa errorText.setText(error); 763b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa errorView.setVisibility(View.VISIBLE); 773b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa } else { 783b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa errorView.setVisibility(View.GONE); 793b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa } 803b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa } 813b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 823b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa @Override 833b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa public View onCreateView( 843b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 853b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 863b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa mView = inflater.inflate(R.layout.fragment_message_bar, container, false); 873b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 883b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa ImageView infoIcon = (ImageView) mView.findViewById(R.id.icon_info); 893b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa infoIcon.setImageResource(R.drawable.ic_dialog_info); 903b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 913b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa ImageView errorIcon = (ImageView) mView.findViewById(R.id.icon_error); 923b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa errorIcon.setImageResource(R.drawable.ic_dialog_alert); 933b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 943b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa Button dismiss = (Button) mView.findViewById(R.id.button_dismiss); 953b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa dismiss.setOnClickListener( 963b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa new View.OnClickListener() { 973b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa @Override 983b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa public void onClick(View v) { 993b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa hide(); 1003b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa } 1013b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa }); 1023b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 1033b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa mContainer = container; 1043b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 1053b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa return mView; 1063b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa } 1073b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 108f862155e3476f8d9644d57072a6d92375bde628eSteve McKay public void hide() { 1093b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa // The container view is used to show/hide the error bar. If a container is not provided, 1103b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa // fall back to showing/hiding the error bar View, which also works, but does not provide 1113b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa // the same animated transition. 1123b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa if (mContainer != null) { 1133b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa mContainer.setVisibility(View.GONE); 1143b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa } else { 1153b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa mView.setVisibility(View.GONE); 1163b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa } 1173b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa } 1183b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa 119f862155e3476f8d9644d57072a6d92375bde628eSteve McKay public void show() { 1203b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa // The container view is used to show/hide the error bar. If a container is not provided, 1213b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa // fall back to showing/hiding the error bar View, which also works, but does not provide 1223b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa // the same animated transition. 1233b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa if (mContainer != null) { 1243b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa mContainer.setVisibility(View.VISIBLE); 1253b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa } else { 1263b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa mView.setVisibility(View.VISIBLE); 1273b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa } 1283b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa } 1293b19e31e18ab89acb22eefa8925f90ce6d63f7f7Ben Kwa} 130