summaryrefslogtreecommitdiff
path: root/java/com/android
diff options
context:
space:
mode:
authoruabdullah <uabdullah@google.com>2017-12-14 15:53:13 -0800
committerCopybara-Service <copybara-piper@google.com>2017-12-14 17:30:35 -0800
commitab499948f25899cff60c3065955ad3d0dad741a1 (patch)
tree29fbeec8016befcdbf7e8bc9634458252b3f6567 /java/com/android
parentad2003e0add27c9c9e287beba528cb669541b237 (diff)
Refactor add to contacts, send a message and copy number modules for bottom sheet
These three modules are to be shared between the voicemail and call log bottom sheets. This CL refactors it such that the functions take in generic parameters instead of coalesced annotated call log row so that they can be used by the voicemail tab. Bug: 64882313,70682949 Test: Existing tests PiperOrigin-RevId: 179110882 Change-Id: I2e8edafbf50e51d2299bfbcb95957e40c1b366ec
Diffstat (limited to 'java/com/android')
-rw-r--r--java/com/android/dialer/calllog/ui/menu/Modules.java106
-rw-r--r--java/com/android/dialer/calllog/ui/menu/res/values/strings.xml11
-rw-r--r--java/com/android/dialer/contactactions/SharedModules.java123
-rw-r--r--java/com/android/dialer/contactactions/res/values/strings.xml29
4 files changed, 161 insertions, 108 deletions
diff --git a/java/com/android/dialer/calllog/ui/menu/Modules.java b/java/com/android/dialer/calllog/ui/menu/Modules.java
index cccaa731d..97b0483b0 100644
--- a/java/com/android/dialer/calllog/ui/menu/Modules.java
+++ b/java/com/android/dialer/calllog/ui/menu/Modules.java
@@ -17,24 +17,19 @@
package com.android.dialer.calllog.ui.menu;
import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
import android.provider.CallLog.Calls;
-import android.provider.ContactsContract;
import android.telecom.PhoneAccountHandle;
import android.text.TextUtils;
import com.android.dialer.calldetails.CallDetailsActivity;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.calllog.model.CoalescedRow;
import com.android.dialer.calllogutils.PhoneAccountUtils;
-import com.android.dialer.clipboard.ClipboardUtils;
import com.android.dialer.contactactions.ContactActionModule;
import com.android.dialer.contactactions.DividerModule;
import com.android.dialer.contactactions.IntentModule;
+import com.android.dialer.contactactions.SharedModules;
import com.android.dialer.dialercontact.DialerContact;
import com.android.dialer.lettertile.LetterTileDrawable;
-import com.android.dialer.util.IntentUtil;
-import com.android.dialer.util.UriUtils;
import java.util.ArrayList;
import java.util.List;
@@ -48,11 +43,12 @@ final class Modules {
// Conditionally add each module, which are items in the bottom sheet's menu.
List<ContactActionModule> modules = new ArrayList<>();
- maybeAddModuleForVideoOrAudioCall(context, row, modules);
- maybeAddModuleForAddingToContacts(context, row, modules);
+ maybeAddModuleForVideoOrAudioCall(context, modules, row);
+ SharedModules.maybeAddModuleForAddingToContacts(
+ context, modules, row.number(), row.name(), row.lookupUri());
String originalNumber = row.number().getRawInput().getNumber();
- maybeAddModuleForSendingTextMessage(context, originalNumber, modules);
+ SharedModules.maybeAddModuleForSendingTextMessage(context, modules, originalNumber);
if (!modules.isEmpty()) {
modules.add(new DividerModule());
@@ -60,17 +56,17 @@ final class Modules {
// TODO(zachh): Module for blocking/unblocking spam.
// TODO(zachh): Module for CallComposer.
- maybeAddModuleForCopyingNumber(context, originalNumber, modules);
+ SharedModules.maybeAddModuleForCopyingNumber(context, modules, originalNumber);
// TODO(zachh): Revisit if DialerContact is the best thing to pass to CallDetails; could
// it use a ContactPrimaryActionInfo instead?
- addModuleForAccessingCallDetails(context, row, modules);
+ addModuleForAccessingCallDetails(context, modules, row);
return modules;
}
private static void maybeAddModuleForVideoOrAudioCall(
- Context context, CoalescedRow row, List<ContactActionModule> modules) {
+ Context context, List<ContactActionModule> modules, CoalescedRow row) {
String originalNumber = row.number().getRawInput().getNumber();
if (TextUtils.isEmpty(originalNumber)) {
// Skip adding the menu item if the phone number is unknown.
@@ -96,92 +92,8 @@ final class Modules {
}
}
- private static void maybeAddModuleForAddingToContacts(
- Context context, CoalescedRow row, List<ContactActionModule> modules) {
- // TODO(zachh): Only show this for non-spam/blocked numbers.
-
- // Skip showing the menu item for existing contacts.
- if (isExistingContact(row)) {
- return;
- }
-
- // Skip showing the menu item if there is no number.
- String originalNumber = row.number().getRawInput().getNumber();
- if (TextUtils.isEmpty(originalNumber)) {
- return;
- }
-
- Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
- intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
- intent.putExtra(ContactsContract.Intents.Insert.PHONE, originalNumber);
-
- if (!TextUtils.isEmpty(row.name())) {
- intent.putExtra(ContactsContract.Intents.Insert.NAME, row.name());
- }
- modules.add(
- new IntentModule(
- context,
- intent,
- R.string.add_to_contacts,
- R.drawable.quantum_ic_person_add_vd_theme_24));
- }
-
- /**
- * Lookup URIs are currently fetched from the cached column of the system call log. This URI
- * contains encoded information for non-contacts for the purposes of populating contact cards.
- *
- * <p>We infer whether a contact is existing or not by checking if the lookup URI is "encoded" or
- * not.
- *
- * <p>TODO(zachh): We should revisit this once the contact URI is no longer being read from the
- * cached column in the system database, in case we decide not to overload the column.
- */
- private static boolean isExistingContact(CoalescedRow row) {
- return !TextUtils.isEmpty(row.lookupUri())
- && !UriUtils.isEncodedContactUri(Uri.parse(row.lookupUri()));
- }
-
- private static void maybeAddModuleForSendingTextMessage(
- Context context, String originalNumber, List<ContactActionModule> modules) {
- // TODO(zachh): There are some conditions where this module should not be shown; consider
- // voicemail, business numbers, blocked numbers, spam numbers, etc.
- if (!TextUtils.isEmpty(originalNumber)) {
- modules.add(
- new IntentModule(
- context,
- IntentUtil.getSendSmsIntent(originalNumber),
- R.string.send_a_message,
- R.drawable.quantum_ic_message_vd_theme_24));
- }
- }
-
- private static void maybeAddModuleForCopyingNumber(
- Context context, String originalNumber, List<ContactActionModule> modules) {
- if (TextUtils.isEmpty(originalNumber)) {
- return;
- }
- modules.add(
- new ContactActionModule() {
- @Override
- public int getStringId() {
- return R.string.copy_number;
- }
-
- @Override
- public int getDrawableId() {
- return R.drawable.quantum_ic_content_copy_vd_theme_24;
- }
-
- @Override
- public boolean onClick() {
- ClipboardUtils.copyText(context, null, originalNumber, true);
- return false;
- }
- });
- }
-
private static void addModuleForAccessingCallDetails(
- Context context, CoalescedRow row, List<ContactActionModule> modules) {
+ Context context, List<ContactActionModule> modules, CoalescedRow row) {
// TODO(zachh): Load canReportInaccurateNumber in CallDetailsActivity
// (see also isPeopleApiSource(sourceType)).
boolean canReportInaccurateNumber = false;
diff --git a/java/com/android/dialer/calllog/ui/menu/res/values/strings.xml b/java/com/android/dialer/calllog/ui/menu/res/values/strings.xml
index cea1f3877..46fbae3bc 100644
--- a/java/com/android/dialer/calllog/ui/menu/res/values/strings.xml
+++ b/java/com/android/dialer/calllog/ui/menu/res/values/strings.xml
@@ -17,17 +17,6 @@
<resources>
- <!-- Option shown in call log menu to add the phone number from an entry to an existing contact
- (also provides option to create a new contact from the number). [CHAR LIMIT=30] -->
- <string name="add_to_contacts">Add to contacts</string>
-
- <!-- Option displayed in call log menu to copy phone number. [CHAR LIMIT=30] -->
- <string name="copy_number">Copy number</string>
-
- <!-- Options shown in call log menu to send a SMS to the number represented by the call log entry.
- [CHAR LIMIT=30] -->
- <string name="send_a_message">Send a message</string>
-
<!-- Option shown in call log menu to navigate the user to the call details screen where the user
can view details for the call log entry. [CHAR LIMIT=30] -->
<string name="call_details_menu_label">Call details</string>
diff --git a/java/com/android/dialer/contactactions/SharedModules.java b/java/com/android/dialer/contactactions/SharedModules.java
new file mode 100644
index 000000000..6c6f6b238
--- /dev/null
+++ b/java/com/android/dialer/contactactions/SharedModules.java
@@ -0,0 +1,123 @@
+/*
+ * 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.contactactions;
+
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.text.TextUtils;
+import com.android.dialer.DialerPhoneNumber;
+import com.android.dialer.clipboard.ClipboardUtils;
+import com.android.dialer.util.IntentUtil;
+import com.android.dialer.util.UriUtils;
+import java.util.List;
+
+/**
+ * Modules for the bottom sheet that are shared between NewVoicemailFragment and NewCallLogFragment
+ */
+public class SharedModules {
+
+ public static void maybeAddModuleForAddingToContacts(
+ Context context,
+ List<ContactActionModule> modules,
+ @NonNull DialerPhoneNumber number,
+ @Nullable String name,
+ @Nullable String lookupUri) {
+ // TODO(zachh): Only show this for non-spam/blocked numbers.
+
+ // Skip showing the menu item for existing contacts.
+ if (isExistingContact(lookupUri)) {
+ return;
+ }
+
+ // Skip showing the menu item if there is no number.
+ String originalNumber = number.getRawInput().getNumber();
+ if (TextUtils.isEmpty(originalNumber)) {
+ return;
+ }
+
+ Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
+ intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
+ intent.putExtra(ContactsContract.Intents.Insert.PHONE, originalNumber);
+
+ if (!TextUtils.isEmpty(name)) {
+ intent.putExtra(ContactsContract.Intents.Insert.NAME, name);
+ }
+ modules.add(
+ new IntentModule(
+ context,
+ intent,
+ R.string.add_to_contacts,
+ R.drawable.quantum_ic_person_add_vd_theme_24));
+ }
+
+ /**
+ * Lookup URIs are currently fetched from the cached column of the system call log. This URI
+ * contains encoded information for non-contacts for the purposes of populating contact cards.
+ *
+ * <p>We infer whether a contact is existing or not by checking if the lookup URI is "encoded" or
+ * not.
+ *
+ * <p>TODO(zachh): We should revisit this once the contact URI is no longer being read from the
+ * cached column in the system database, in case we decide not to overload the column.
+ */
+ public static boolean isExistingContact(@Nullable String lookupUri) {
+ return !TextUtils.isEmpty(lookupUri) && !UriUtils.isEncodedContactUri(Uri.parse(lookupUri));
+ }
+
+ public static void maybeAddModuleForSendingTextMessage(
+ Context context, List<ContactActionModule> modules, String originalNumber) {
+ // TODO(zachh): There are some conditions where this module should not be shown; consider
+ // voicemail, business numbers, blocked numbers, spam numbers, etc.
+ if (!TextUtils.isEmpty(originalNumber)) {
+ modules.add(
+ new IntentModule(
+ context,
+ IntentUtil.getSendSmsIntent(originalNumber),
+ R.string.send_a_message,
+ R.drawable.quantum_ic_message_vd_theme_24));
+ }
+ }
+
+ public static void maybeAddModuleForCopyingNumber(
+ Context context, List<ContactActionModule> modules, String originalNumber) {
+ if (TextUtils.isEmpty(originalNumber)) {
+ return;
+ }
+ modules.add(
+ new ContactActionModule() {
+ @Override
+ public int getStringId() {
+ return R.string.copy_number;
+ }
+
+ @Override
+ public int getDrawableId() {
+ return R.drawable.quantum_ic_content_copy_vd_theme_24;
+ }
+
+ @Override
+ public boolean onClick() {
+ ClipboardUtils.copyText(context, null, originalNumber, true);
+ return false;
+ }
+ });
+ }
+}
diff --git a/java/com/android/dialer/contactactions/res/values/strings.xml b/java/com/android/dialer/contactactions/res/values/strings.xml
new file mode 100644
index 000000000..0e953a56d
--- /dev/null
+++ b/java/com/android/dialer/contactactions/res/values/strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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
+ -->
+
+<resources>
+ <!-- Option shown in call log menu/voicemail to add the phone number from an entry to an existing contact
+ (also provides option to create a new contact from the number). [CHAR LIMIT=30] -->
+ <string name="add_to_contacts">Add to contacts</string>
+
+ <!-- Options shown in call log/voicemail menu to send a SMS to the number represented by the call log/voicemailentry.
+ [CHAR LIMIT=30] -->
+ <string name="send_a_message">Send a message</string>
+
+ <!-- Option displayed in call log/voicemail menu to copy phone number. [CHAR LIMIT=30] -->
+ <string name="copy_number">Copy number</string>
+</resources> \ No newline at end of file