summaryrefslogtreecommitdiff
path: root/java/com
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2017-12-15 01:34:52 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-12-15 01:34:52 +0000
commit77217824a09b4c93d0103c57acfa13368a7b8807 (patch)
tree29fbeec8016befcdbf7e8bc9634458252b3f6567 /java/com
parentad2003e0add27c9c9e287beba528cb669541b237 (diff)
parentab499948f25899cff60c3065955ad3d0dad741a1 (diff)
Merge "Refactor add to contacts, send a message and copy number modules for bottom sheet"
Diffstat (limited to 'java/com')
-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