diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2018-02-28 02:25:26 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-02-28 02:25:26 +0000 |
commit | 37434b495f1e53612d4279288f6fa3ac5e795615 (patch) | |
tree | f9427ee9449664e50d8974d1fba2bae06a62f08c /java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java | |
parent | 9a2265a70b2d2e46391aa37e118f8ae6e5b5dbdf (diff) | |
parent | f80d8afdb0f5ef6d24b8bb76442cab8cef38da8f (diff) |
Merge changes I9ab50a7a,I8a57b632
* changes:
Do not show the voicemail tab if the VM toggle is turned off.
Internal cleanup for the new UI's bottom sheet.
Diffstat (limited to 'java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java')
-rw-r--r-- | java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java b/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java new file mode 100644 index 000000000..47aa1003f --- /dev/null +++ b/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java @@ -0,0 +1,137 @@ +/* + * Copyright (C) 2017 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.dialer.historyitemactions; + +import android.content.Context; +import android.os.Bundle; +import android.support.design.widget.BottomSheetDialog; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; +import com.android.dialer.common.Assert; +import com.android.dialer.glidephotomanager.GlidePhotoManager; +import java.util.List; + +/** + * {@link BottomSheetDialog} used to show a list of actions in a bottom sheet menu. + * + * <p>{@link #show(Context, HistoryItemPrimaryActionInfo, List, GlidePhotoManager)} should be used + * to create and display the menu. Modules are built using {@link HistoryItemActionModule} and some + * defaults are provided by {@link IntentModule} and {@link DividerModule}. + */ +public class HistoryItemActionBottomSheet extends BottomSheetDialog implements OnClickListener { + + private final List<HistoryItemActionModule> modules; + private final HistoryItemPrimaryActionInfo historyItemPrimaryActionInfo; + private final GlidePhotoManager glidePhotoManager; + + private HistoryItemActionBottomSheet( + Context context, + HistoryItemPrimaryActionInfo historyItemPrimaryActionInfo, + List<HistoryItemActionModule> modules, + GlidePhotoManager glidePhotoManager) { + super(context); + this.modules = modules; + this.historyItemPrimaryActionInfo = historyItemPrimaryActionInfo; + this.glidePhotoManager = glidePhotoManager; + setContentView(LayoutInflater.from(context).inflate(R.layout.sheet_layout, null)); + } + + public static HistoryItemActionBottomSheet show( + Context context, + HistoryItemPrimaryActionInfo historyItemPrimaryActionInfo, + List<HistoryItemActionModule> modules, + GlidePhotoManager glidePhotoManager) { + HistoryItemActionBottomSheet sheet = + new HistoryItemActionBottomSheet( + context, historyItemPrimaryActionInfo, modules, glidePhotoManager); + sheet.show(); + return sheet; + } + + @Override + protected void onCreate(Bundle bundle) { + super.onCreate(bundle); + LinearLayout container = Assert.isNotNull(findViewById(R.id.action_container)); + container.addView(getContactView(container)); + + for (HistoryItemActionModule module : modules) { + if (module instanceof DividerModule) { + container.addView(getDividerView(container)); + } else { + container.addView(getModuleView(container, module)); + } + } + } + + private View getContactView(ViewGroup container) { + LayoutInflater inflater = LayoutInflater.from(getContext()); + View contactView = inflater.inflate(R.layout.contact_layout, container, false); + + // TODO(zachh): The contact image should be badged with a video icon if it is for a video call. + glidePhotoManager.loadQuickContactBadge( + contactView.findViewById(R.id.quick_contact_photo), + historyItemPrimaryActionInfo.photoInfo()); + + TextView primaryTextView = contactView.findViewById(R.id.primary_text); + TextView secondaryTextView = contactView.findViewById(R.id.secondary_text); + + primaryTextView.setText(historyItemPrimaryActionInfo.primaryText()); + if (!TextUtils.isEmpty(historyItemPrimaryActionInfo.secondaryText())) { + secondaryTextView.setText(historyItemPrimaryActionInfo.secondaryText()); + } else { + secondaryTextView.setVisibility(View.GONE); + secondaryTextView.setText(null); + } + if (historyItemPrimaryActionInfo.intent() != null) { + contactView.setOnClickListener( + (view) -> { + getContext().startActivity(historyItemPrimaryActionInfo.intent()); + dismiss(); + }); + } + return contactView; + } + + private View getDividerView(ViewGroup container) { + LayoutInflater inflater = LayoutInflater.from(getContext()); + return inflater.inflate(R.layout.divider_layout, container, false); + } + + private View getModuleView(ViewGroup container, HistoryItemActionModule module) { + LayoutInflater inflater = LayoutInflater.from(getContext()); + View moduleView = inflater.inflate(R.layout.module_layout, container, false); + ((TextView) moduleView.findViewById(R.id.module_text)).setText(module.getStringId()); + ((ImageView) moduleView.findViewById(R.id.module_image)) + .setImageResource(module.getDrawableId()); + moduleView.setOnClickListener(this); + moduleView.setTag(module); + return moduleView; + } + + @Override + public void onClick(View view) { + if (((HistoryItemActionModule) view.getTag()).onClick()) { + dismiss(); + } + } +} |