summaryrefslogtreecommitdiff
path: root/java/com/android
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android')
-rw-r--r--java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java31
-rw-r--r--java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java9
-rw-r--r--java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml3
3 files changed, 37 insertions, 6 deletions
diff --git a/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java b/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
index d5e61354a..5d10720b5 100644
--- a/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
+++ b/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
@@ -20,6 +20,9 @@ import android.content.AsyncQueryHandler;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
+import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+import java.util.concurrent.atomic.AtomicInteger;
/**
* An {@AsyncQueryHandler} that will never return a null cursor.
@@ -27,6 +30,8 @@ import android.net.Uri;
* <p>Instead, will return a {@link Cursor} with 0 records.
*/
public abstract class NoNullCursorAsyncQueryHandler extends AsyncQueryHandler {
+ private static final AtomicInteger pendingQueryCount = new AtomicInteger();
+ @Nullable private static PendingQueryCountChangedListener pendingQueryCountChangedListener;
public NoNullCursorAsyncQueryHandler(ContentResolver cr) {
super(cr);
@@ -41,6 +46,11 @@ public abstract class NoNullCursorAsyncQueryHandler extends AsyncQueryHandler {
String selection,
String[] selectionArgs,
String orderBy) {
+ pendingQueryCount.getAndIncrement();
+ if (pendingQueryCountChangedListener != null) {
+ pendingQueryCountChangedListener.onPendingQueryCountChanged();
+ }
+
final CookieWithProjection projectionCookie = new CookieWithProjection(cookie, projection);
super.startQuery(token, projectionCookie, uri, projection, selection, selectionArgs, orderBy);
}
@@ -55,10 +65,31 @@ public abstract class NoNullCursorAsyncQueryHandler extends AsyncQueryHandler {
cursor = new EmptyCursor(projectionCookie.projection);
}
onNotNullableQueryComplete(token, projectionCookie.originalCookie, cursor);
+
+ pendingQueryCount.getAndDecrement();
+ if (pendingQueryCountChangedListener != null) {
+ pendingQueryCountChangedListener.onPendingQueryCountChanged();
+ }
}
protected abstract void onNotNullableQueryComplete(int token, Object cookie, Cursor cursor);
+ @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+ public static void setPendingQueryCountChangedListener(
+ @Nullable PendingQueryCountChangedListener listener) {
+ pendingQueryCountChangedListener = listener;
+ }
+
+ @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+ public static int getPendingQueryCount() {
+ return pendingQueryCount.get();
+ }
+
+ /** Callback to listen for changes in the number of queries that have not completed. */
+ public interface PendingQueryCountChangedListener {
+ void onPendingQueryCountChanged();
+ }
+
/** Class to add projection to an existing cookie. */
private static class CookieWithProjection {
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index 884d07d50..6b97bd694 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -581,12 +581,16 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
return;
}
+ TextView callTypeOrLocationView =
+ ((TextView) callButtonView.findViewById(R.id.call_type_or_location_text));
+
if (canPlaceCallToNumber) {
// Set up the call button but hide it by default (the primary action is to call so it is
// redundant). We then set it to be visible when appropriate below. This saves us having to
// remember to set it to GONE in multiple places.
callButtonView.setTag(IntentProvider.getReturnCallIntentProvider(number));
callButtonView.setVisibility(View.GONE);
+ callTypeOrLocationView.setVisibility(View.GONE);
}
if (!TextUtils.isEmpty(voicemailUri) && canPlaceCallToNumber) {
@@ -595,13 +599,10 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
TextUtils.expandTemplate(
mContext.getString(R.string.call_log_action_call),
nameOrNumber == null ? "" : nameOrNumber));
- TextView callTypeOrLocationView =
- ((TextView) callButtonView.findViewById(R.id.call_type_or_location_text));
+
if (callType == Calls.VOICEMAIL_TYPE && !TextUtils.isEmpty(callTypeOrLocation)) {
callTypeOrLocationView.setText(callTypeOrLocation);
callTypeOrLocationView.setVisibility(View.VISIBLE);
- } else {
- callTypeOrLocationView.setVisibility(View.GONE);
}
callButtonView.setVisibility(View.VISIBLE);
}
diff --git a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
index 504638348..ec9e5a00e 100644
--- a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
@@ -35,8 +35,7 @@
<LinearLayout
android:id="@+id/call_action"
- style="@style/CallLogActionStyle"
- android:paddingTop="@dimen/call_log_actions_top_padding">
+ style="@style/CallLogActionStyle">
<ImageView
style="@style/CallLogActionIconStyle"