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