/* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.internal.globalactions; import android.content.Context; import android.graphics.drawable.Drawable; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.android.internal.R; /** A single press action maintains no state, just responds to a press and takes an action. */ public abstract class SinglePressAction implements Action { private final int mIconResId; private final Drawable mIcon; private final int mMessageResId; private final CharSequence mMessage; protected SinglePressAction(int iconResId, int messageResId) { mIconResId = iconResId; mMessageResId = messageResId; mMessage = null; mIcon = null; } protected SinglePressAction(int iconResId, Drawable icon, CharSequence message) { mIconResId = iconResId; mMessageResId = 0; mMessage = message; mIcon = icon; } @Override public boolean isEnabled() { return true; } public String getStatus() { return null; } @Override abstract public void onPress(); @Override public CharSequence getLabelForAccessibility(Context context) { if (mMessage != null) { return mMessage; } else { return context.getString(mMessageResId); } } @Override public View create( Context context, View convertView, ViewGroup parent, LayoutInflater inflater) { View v = inflater.inflate(R.layout.global_actions_item, parent, false); ImageView icon = v.findViewById(R.id.icon); TextView messageView = v.findViewById(R.id.message); TextView statusView = v.findViewById(R.id.status); final String status = getStatus(); if (statusView != null) { if (!TextUtils.isEmpty(status)) { statusView.setText(status); } else { statusView.setVisibility(View.GONE); } } if (icon != null) { if (mIcon != null) { icon.setImageDrawable(mIcon); icon.setScaleType(ImageView.ScaleType.CENTER_CROP); } else if (mIconResId != 0) { icon.setImageDrawable(context.getDrawable(mIconResId)); } } if (messageView != null) { if (mMessage != null) { messageView.setText(mMessage); } else { messageView.setText(mMessageResId); } } return v; } }