1 /* 2 * Copyright (C) 2015 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.documentsui.ui; 18 19 import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; 20 21 import android.app.Activity; 22 import android.view.Gravity; 23 import android.view.View; 24 import android.widget.TextView; 25 26 import androidx.annotation.StringRes; 27 28 import com.android.documentsui.R; 29 import com.android.documentsui.base.Shared; 30 31 import com.google.android.material.snackbar.Snackbar; 32 33 import java.util.function.Consumer; 34 35 public final class Snackbars { 36 Snackbars()37 private Snackbars() {} 38 showDocumentsClipped(Activity activity, int docCount)39 public static final void showDocumentsClipped(Activity activity, int docCount) { 40 String msg = Shared.getQuantityString( 41 activity, R.plurals.clipboard_files_clipped, docCount); 42 Snackbars.makeSnackbar(activity, msg, Snackbar.LENGTH_LONG).show(); 43 } 44 showMove(Activity activity, int docCount)45 public static final void showMove(Activity activity, int docCount) { 46 CharSequence message = Shared.getQuantityString(activity, R.plurals.move_begin, docCount); 47 makeSnackbar(activity, message, Snackbar.LENGTH_LONG).show(); 48 } 49 showCopy(Activity activity, int docCount)50 public static final void showCopy(Activity activity, int docCount) { 51 CharSequence message = Shared.getQuantityString(activity, R.plurals.copy_begin, docCount); 52 makeSnackbar(activity, message, Snackbar.LENGTH_LONG).show(); 53 } 54 showCompress(Activity activity, int docCount)55 public static final void showCompress(Activity activity, int docCount) { 56 CharSequence message = Shared.getQuantityString(activity, R.plurals.compress_begin, docCount); 57 makeSnackbar(activity, message, Snackbar.LENGTH_LONG).show(); 58 } 59 showExtract(Activity activity, int docCount)60 public static final void showExtract(Activity activity, int docCount) { 61 CharSequence message = Shared.getQuantityString(activity, R.plurals.extract_begin, docCount); 62 makeSnackbar(activity, message, Snackbar.LENGTH_LONG).show(); 63 } 64 showDelete(Activity activity, int docCount)65 public static final void showDelete(Activity activity, int docCount) { 66 CharSequence message = Shared.getQuantityString(activity, R.plurals.deleting, docCount); 67 makeSnackbar(activity, message, Snackbar.LENGTH_LONG).show(); 68 } 69 showOperationRejected(Activity activity)70 public static final void showOperationRejected(Activity activity) { 71 makeSnackbar(activity, R.string.file_operation_rejected, Snackbar.LENGTH_LONG).show(); 72 } 73 showOperationFailed(Activity activity)74 public static final void showOperationFailed(Activity activity) { 75 makeSnackbar(activity, R.string.file_operation_error, Snackbar.LENGTH_LONG).show(); 76 } 77 showRenameFailed(Activity activity)78 public static final void showRenameFailed(Activity activity) { 79 makeSnackbar(activity, R.string.rename_error, Snackbar.LENGTH_LONG).show(); 80 } 81 showInspectorError(Activity activity)82 public static final void showInspectorError(Activity activity) { 83 //Document Inspector uses a different view from other files app activities. 84 final View view = activity.findViewById(R.id.inspector_root); 85 Snackbar.make(view, R.string.inspector_load_error, Snackbar.LENGTH_INDEFINITE).show(); 86 } 87 showCustomTextWithImage(Activity activity, String text, int imageRes)88 public static final void showCustomTextWithImage(Activity activity, String text, int imageRes) { 89 Snackbar snackbar = makeSnackbar(activity, text, Snackbar.LENGTH_LONG); 90 View snackbarLayout = snackbar.getView(); 91 TextView textView = (TextView)snackbarLayout.findViewById( 92 com.google.android.material.R.id.snackbar_text); 93 textView.setGravity(Gravity.CENTER_HORIZONTAL); 94 textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); 95 textView.setCompoundDrawablesWithIntrinsicBounds(imageRes, 0, 0, 0); 96 snackbar.show(); 97 } 98 makeSnackbarWithAction(Activity activity, int docCount, CharSequence message, int duration, CharSequence actionText, Consumer<View> action, final Snackbar.Callback callback)99 public static final Snackbar makeSnackbarWithAction(Activity activity, int docCount, 100 CharSequence message, int duration, CharSequence actionText, 101 Consumer<View> action, final Snackbar.Callback callback) { 102 return makeSnackbar(activity, message, duration) 103 .setAction(actionText, action::accept) 104 .addCallback(callback); 105 } 106 makeSnackbar(Activity activity, @StringRes int messageId, int duration)107 public static final Snackbar makeSnackbar(Activity activity, @StringRes int messageId, 108 int duration) { 109 return Snackbars.makeSnackbar( 110 activity, activity.getResources().getText(messageId), duration); 111 } 112 makeSnackbar( Activity activity, CharSequence message, int duration)113 public static final Snackbar makeSnackbar( 114 Activity activity, CharSequence message, int duration) { 115 final View view = activity.findViewById(isUseMaterial3FlagEnabled() 116 ? R.id.coordinator_layout 117 : R.id.container_save 118 ); 119 return Snackbar.make(view, message, duration); 120 } 121 } 122