Make Nearby Places Display as "Nearby Places"
Rather than "Directory Nearby Place"
Change-Id: I91cbbed3c6005b91885a5bb2f3067c9c19b97e79
diff --git a/src/com/android/contacts/common/list/ContactEntryListAdapter.java b/src/com/android/contacts/common/list/ContactEntryListAdapter.java
index a99d7b4..34ff2e8 100644
--- a/src/com/android/contacts/common/list/ContactEntryListAdapter.java
+++ b/src/com/android/contacts/common/list/ContactEntryListAdapter.java
@@ -382,6 +382,11 @@
if (getPartitionByDirectoryId(id) == -1) {
DirectoryPartition partition = new DirectoryPartition(false, true);
partition.setDirectoryId(id);
+ if (isRemoteDirectory(id)) {
+ partition.setLabel(mContext.getString(R.string.directory_search_label));
+ } else {
+ partition.setLabel(mDefaultFilterHeaderText.toString());
+ }
partition.setDirectoryType(cursor.getString(directoryTypeColumnIndex));
partition.setDisplayName(cursor.getString(displayNameColumnIndex));
int photoSupport = cursor.getInt(photoSupportColumnIndex);
@@ -550,11 +555,10 @@
long directoryId = directoryPartition.getDirectoryId();
TextView labelTextView = (TextView)view.findViewById(R.id.label);
TextView displayNameTextView = (TextView)view.findViewById(R.id.display_name);
- if (directoryId == Directory.DEFAULT || directoryId == Directory.LOCAL_INVISIBLE) {
- labelTextView.setText(mDefaultFilterHeaderText);
+ labelTextView.setText(directoryPartition.getLabel());
+ if (!isRemoteDirectory(directoryId)) {
displayNameTextView.setText(null);
} else {
- labelTextView.setText(R.string.directory_search_label);
String directoryName = directoryPartition.getDisplayName();
String displayName = !TextUtils.isEmpty(directoryName)
? directoryName
@@ -693,4 +697,9 @@
public String getContactsCount() {
return mContactsCount;
}
+
+ public static boolean isRemoteDirectory(long directoryId) {
+ return directoryId != Directory.DEFAULT
+ && directoryId != Directory.LOCAL_INVISIBLE;
+ }
}
diff --git a/src/com/android/contacts/common/list/DirectoryPartition.java b/src/com/android/contacts/common/list/DirectoryPartition.java
index 9a8d4cc..1340af4 100644
--- a/src/com/android/contacts/common/list/DirectoryPartition.java
+++ b/src/com/android/contacts/common/list/DirectoryPartition.java
@@ -31,6 +31,7 @@
public static final int RESULT_LIMIT_DEFAULT = -1;
private long mDirectoryId;
+ private String mContentUri;
private String mDirectoryType;
private String mDisplayName;
private int mStatus;
@@ -38,6 +39,8 @@
private boolean mPhotoSupported;
private int mResultLimit = RESULT_LIMIT_DEFAULT;
+ private String mLabel;
+
public DirectoryPartition(boolean showIfEmpty, boolean hasHeader) {
super(showIfEmpty, hasHeader);
}
@@ -122,4 +125,42 @@
public void setResultLimit(int resultLimit) {
mResultLimit = resultLimit;
}
+
+ /**
+ * Used by extended directories to specify a custom content URI. Extended directories MUST have
+ * a content URI
+ */
+ public String getContentUri() {
+ return mContentUri;
+ }
+
+ public void setContentUri(String contentUri) {
+ mContentUri = contentUri;
+ }
+
+ /**
+ * A label to display in the header next to the display name.
+ */
+ public String getLabel() {
+ return mLabel;
+ }
+
+ public void setLabel(String label) {
+ mLabel = label;
+ }
+
+ @Override
+ public String toString() {
+ return "DirectoryPartition{" +
+ "mDirectoryId=" + mDirectoryId +
+ ", mContentUri='" + mContentUri + '\'' +
+ ", mDirectoryType='" + mDirectoryType + '\'' +
+ ", mDisplayName='" + mDisplayName + '\'' +
+ ", mStatus=" + mStatus +
+ ", mPriorityDirectory=" + mPriorityDirectory +
+ ", mPhotoSupported=" + mPhotoSupported +
+ ", mResultLimit=" + mResultLimit +
+ ", mLabel='" + mLabel + '\'' +
+ '}';
+ }
}
diff --git a/src/com/android/contacts/common/list/PhoneNumberListAdapter.java b/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
index c85c4e5..93b60d7 100644
--- a/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
+++ b/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
@@ -120,11 +120,6 @@
return mUnknownNameText;
}
- private static boolean isRemoteDirectory(long directoryId) {
- return directoryId != Directory.DEFAULT
- && directoryId != Directory.LOCAL_INVISIBLE;
- }
-
@Override
public void configureLoader(CursorLoader loader, long directoryId) {
String query = getQueryString();
@@ -133,7 +128,12 @@
}
if (isExtendedDirectory(directoryId)) {
final DirectoryPartition directory = getExtendedDirectoryFromId(directoryId);
- final Builder builder = Uri.parse(directory.getDirectoryType()).buildUpon();
+ final String contentUri = directory.getContentUri();
+ if (contentUri == null) {
+ throw new IllegalStateException("Extended directory must have a content URL: "
+ + directory);
+ }
+ final Builder builder = Uri.parse(contentUri).buildUpon();
builder.appendPath(query);
builder.appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY,
String.valueOf(getDirectoryResultLimit(directory)));