12decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan/*
22decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan * Copyright (C) 2018 The Android Open Source Project
32decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan *
42decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan * Licensed under the Apache License, Version 2.0 (the "License");
52decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan * you may not use this file except in compliance with the License.
62decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan * You may obtain a copy of the License at
72decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan *
82decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan *      http://www.apache.org/licenses/LICENSE-2.0
92decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan *
102decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan * Unless required by applicable law or agreed to in writing, software
112decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan * distributed under the License is distributed on an "AS IS" BASIS,
122decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan * See the License for the specific language governing permissions and
142decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan * limitations under the License.
152decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan */
162decbf7ae429c67008e836960bdc40a838f4be52Michael Kwanpackage com.android.internal.globalactions;
172decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan
182decbf7ae429c67008e836960bdc40a838f4be52Michael Kwanimport android.content.Context;
192decbf7ae429c67008e836960bdc40a838f4be52Michael Kwanimport android.graphics.drawable.Drawable;
202decbf7ae429c67008e836960bdc40a838f4be52Michael Kwanimport android.text.TextUtils;
212decbf7ae429c67008e836960bdc40a838f4be52Michael Kwanimport android.view.LayoutInflater;
222decbf7ae429c67008e836960bdc40a838f4be52Michael Kwanimport android.view.View;
232decbf7ae429c67008e836960bdc40a838f4be52Michael Kwanimport android.view.ViewGroup;
242decbf7ae429c67008e836960bdc40a838f4be52Michael Kwanimport android.widget.ImageView;
252decbf7ae429c67008e836960bdc40a838f4be52Michael Kwanimport android.widget.TextView;
262decbf7ae429c67008e836960bdc40a838f4be52Michael Kwanimport com.android.internal.R;
272decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan
282decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan/** A single press action maintains no state, just responds to a press and takes an action. */
292decbf7ae429c67008e836960bdc40a838f4be52Michael Kwanpublic abstract class SinglePressAction implements Action {
302decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    private final int mIconResId;
312decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    private final Drawable mIcon;
322decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    private final int mMessageResId;
332decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    private final CharSequence mMessage;
342decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan
352decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    protected SinglePressAction(int iconResId, int messageResId) {
362decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        mIconResId = iconResId;
372decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        mMessageResId = messageResId;
382decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        mMessage = null;
392decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        mIcon = null;
402decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    }
412decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan
422decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    protected SinglePressAction(int iconResId, Drawable icon, CharSequence message) {
432decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        mIconResId = iconResId;
442decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        mMessageResId = 0;
452decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        mMessage = message;
462decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        mIcon = icon;
472decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    }
482decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan
492decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    @Override
502decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    public boolean isEnabled() {
512decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        return true;
522decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    }
532decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan
542decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    public String getStatus() {
552decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        return null;
562decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    }
572decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan
582decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    @Override
592decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    abstract public void onPress();
602decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan
612decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    @Override
622decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    public CharSequence getLabelForAccessibility(Context context) {
632decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        if (mMessage != null) {
642decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan            return mMessage;
652decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        } else {
662decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan            return context.getString(mMessageResId);
672decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        }
682decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    }
692decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan
702decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    @Override
712decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    public View create(
722decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan            Context context, View convertView, ViewGroup parent, LayoutInflater inflater) {
732decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        View v = inflater.inflate(R.layout.global_actions_item, parent, false);
742decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan
752decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        ImageView icon = v.findViewById(R.id.icon);
762decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        TextView messageView = v.findViewById(R.id.message);
772decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan
782decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        TextView statusView = v.findViewById(R.id.status);
792decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        final String status = getStatus();
8059b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan        if (statusView != null) {
8159b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan            if (!TextUtils.isEmpty(status)) {
8259b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan                statusView.setText(status);
8359b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan            } else {
8459b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan                statusView.setVisibility(View.GONE);
8559b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan            }
862decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        }
8759b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan        if (icon != null) {
8859b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan            if (mIcon != null) {
8959b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan                icon.setImageDrawable(mIcon);
9059b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan                icon.setScaleType(ImageView.ScaleType.CENTER_CROP);
9159b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan            } else if (mIconResId != 0) {
9259b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan                icon.setImageDrawable(context.getDrawable(mIconResId));
9359b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan            }
942decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        }
9559b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan        if (messageView != null) {
9659b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan            if (mMessage != null) {
9759b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan                messageView.setText(mMessage);
9859b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan            } else {
9959b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan                messageView.setText(mMessageResId);
10059b735803d94e6fdb71cab22b3731e0b1c70be8dMichael Kwan            }
1012decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        }
1022decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan
1032decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan        return v;
1042decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan    }
1052decbf7ae429c67008e836960bdc40a838f4be52Michael Kwan}
106