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