• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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