Loading src/com/android/contacts/group/GroupMembersFragment.java +8 −16 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import android.os.Handler; import android.os.Message; import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; import androidx.core.content.ContextCompat; import android.text.TextUtils; import android.util.Log; import android.view.Gravity; Loading @@ -47,7 +46,7 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; import androidx.core.content.ContextCompat; import com.android.contacts.ContactSaveService; import com.android.contacts.ContactsUtils; import com.android.contacts.GroupMetaDataLoader; Loading @@ -69,7 +68,6 @@ import com.android.contacts.model.account.AccountWithDataSet; import com.android.contacts.util.ImplicitIntentsUtil; import com.android.contactsbind.FeedbackHelper; import com.google.common.primitives.Longs; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; Loading Loading @@ -316,7 +314,6 @@ public class GroupMembersFragment extends MultiSelectContactsListFragment<GroupM ContactsContract.Data.CONTACT_ID, ContactsContract.CommonDataKinds.Email._ID, ContactsContract.Data.IS_SUPER_PRIMARY, ContactsContract.Data.TIMES_USED, ContactsContract.Data.DATA1 }; Loading @@ -324,15 +321,13 @@ public class GroupMembersFragment extends MultiSelectContactsListFragment<GroupM ContactsContract.Data.CONTACT_ID, ContactsContract.CommonDataKinds.Phone._ID, ContactsContract.Data.IS_SUPER_PRIMARY, ContactsContract.Data.TIMES_USED, ContactsContract.Data.DATA1 }; public static final int CONTACT_ID = 0; public static final int ITEM_ID = 1; public static final int PRIMARY = 2; public static final int TIMES_USED = 3; public static final int DATA1 = 4; public static final int DATA1 = 3; } /** Loading @@ -341,14 +336,12 @@ public class GroupMembersFragment extends MultiSelectContactsListFragment<GroupM private class ContactDataHelperClass { private List<String> items = new ArrayList<>(); private String mostUsedItemId = null; private int mostUsedTimes; private String firstItemId = null; private String primaryItemId = null; public void addItem(String item, int timesUsed, boolean primaryFlag) { if (mostUsedItemId == null || timesUsed > mostUsedTimes) { mostUsedItemId = item; mostUsedTimes = timesUsed; public void addItem(String item, boolean primaryFlag) { if (firstItemId == null) { firstItemId = item; } if (primaryFlag) { primaryItemId = item; Loading @@ -363,7 +356,7 @@ public class GroupMembersFragment extends MultiSelectContactsListFragment<GroupM public String getDefaultSelectionItemId() { return primaryItemId != null ? primaryItemId : mostUsedItemId; : firstItemId; } } Loading Loading @@ -397,7 +390,6 @@ public class GroupMembersFragment extends MultiSelectContactsListFragment<GroupM final String contactId = cursor.getString(Query.CONTACT_ID); final String itemId = cursor.getString(Query.ITEM_ID); final boolean isPrimary = cursor.getInt(Query.PRIMARY) != 0; final int timesUsed = cursor.getInt(Query.TIMES_USED); final String data = cursor.getString(Query.DATA1); if (!TextUtils.isEmpty(data)) { Loading @@ -408,7 +400,7 @@ public class GroupMembersFragment extends MultiSelectContactsListFragment<GroupM } else { contact = contactMap.get(contactId); } contact.addItem(itemId, timesUsed, isPrimary); contact.addItem(itemId, isPrimary); itemList.add(data); } } Loading src/com/android/contacts/list/ContactListItemView.java +5 −8 Original line number Diff line number Diff line Loading @@ -30,11 +30,6 @@ import android.os.Bundle; import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.SearchSnippets; import androidx.core.content.ContextCompat; import androidx.core.content.res.ResourcesCompat; import androidx.core.graphics.drawable.DrawableCompat; import androidx.appcompat.widget.AppCompatCheckBox; import androidx.appcompat.widget.AppCompatImageButton; import android.text.Spannable; import android.text.SpannableString; import android.text.TextUtils; Loading @@ -50,7 +45,11 @@ import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.QuickContactBadge; import android.widget.TextView; import androidx.appcompat.widget.AppCompatCheckBox; import androidx.appcompat.widget.AppCompatImageButton; import androidx.core.content.ContextCompat; import androidx.core.content.res.ResourcesCompat; import androidx.core.graphics.drawable.DrawableCompat; import com.android.contacts.ContactPresenceIconUtil; import com.android.contacts.ContactStatusUtil; import com.android.contacts.R; Loading @@ -60,9 +59,7 @@ import com.android.contacts.format.TextHighlighter; import com.android.contacts.util.ContactDisplayUtils; import com.android.contacts.util.SearchUtil; import com.android.contacts.util.ViewUtil; import com.google.common.collect.Lists; import java.util.ArrayList; import java.util.List; import java.util.Locale; Loading src/com/android/contacts/list/DefaultContactListAdapter.java +1 −30 Original line number Diff line number Diff line Loading @@ -30,11 +30,9 @@ import android.provider.ContactsContract.Directory; import android.provider.ContactsContract.SearchSnippets; import android.text.TextUtils; import android.view.View; import com.android.contacts.compat.ContactsCompat; import com.android.contacts.model.account.AccountWithDataSet; import com.android.contacts.preference.ContactsPreferences; import java.util.ArrayList; import java.util.List; Loading @@ -46,33 +44,6 @@ public class DefaultContactListAdapter extends ContactListAdapter { public static final char SNIPPET_START_MATCH = '['; public static final char SNIPPET_END_MATCH = ']'; // Contacts contacted within the last 3 days (in seconds) private static final long LAST_TIME_USED_3_DAYS_SEC = 3L * 24 * 60 * 60; // Contacts contacted within the last 7 days (in seconds) private static final long LAST_TIME_USED_7_DAYS_SEC = 7L * 24 * 60 * 60; // Contacts contacted within the last 14 days (in seconds) private static final long LAST_TIME_USED_14_DAYS_SEC = 14L * 24 * 60 * 60; // Contacts contacted within the last 30 days (in seconds) private static final long LAST_TIME_USED_30_DAYS_SEC = 30L * 24 * 60 * 60; private static final String TIME_SINCE_LAST_USED_SEC = "(strftime('%s', 'now') - " + Contacts.LAST_TIME_CONTACTED + "/1000)"; private static final String STREQUENT_SORT = "(CASE WHEN " + TIME_SINCE_LAST_USED_SEC + " < " + LAST_TIME_USED_3_DAYS_SEC + " THEN 0 " + " WHEN " + TIME_SINCE_LAST_USED_SEC + " < " + LAST_TIME_USED_7_DAYS_SEC + " THEN 1 " + " WHEN " + TIME_SINCE_LAST_USED_SEC + " < " + LAST_TIME_USED_14_DAYS_SEC + " THEN 2 " + " WHEN " + TIME_SINCE_LAST_USED_SEC + " < " + LAST_TIME_USED_30_DAYS_SEC + " THEN 3 " + " ELSE 4 END), " + Contacts.TIMES_CONTACTED + " DESC, " + Contacts.STARRED + " DESC"; public DefaultContactListAdapter(Context context) { super(context); Loading Loading @@ -113,7 +84,7 @@ public class DefaultContactListAdapter extends ContactListAdapter { appendSearchParameters(builder, query, directoryId); loader.setUri(builder.build()); loader.setProjection(getProjection(true)); sortOrder = STREQUENT_SORT; sortOrder = Contacts.SORT_KEY_PRIMARY; } } else { final ContactListFilter filter = getFilter(); Loading src/com/android/contacts/model/ContactLoader.java +4 −18 Original line number Diff line number Diff line Loading @@ -37,13 +37,11 @@ import android.provider.ContactsContract.Groups; import android.provider.ContactsContract.RawContacts; import android.text.TextUtils; import android.util.Log; import com.android.contacts.GeoUtil; import com.android.contacts.GroupMetaDataLoader; import com.android.contacts.compat.CompatUtils; import com.android.contacts.group.GroupMetaData; import com.android.contacts.model.account.AccountType; import com.android.contacts.model.account.AccountTypeWithDataSet; import com.android.contacts.model.dataitem.DataItem; import com.android.contacts.model.dataitem.PhoneDataItem; import com.android.contacts.model.dataitem.PhotoDataItem; Loading @@ -51,17 +49,10 @@ import com.android.contacts.util.Constants; import com.android.contacts.util.ContactLoaderUtils; import com.android.contacts.util.DataStatus; import com.android.contacts.util.UriUtils; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; Loading @@ -70,9 +61,11 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; /** * Loads a single Contact and all it constituent RawContacts. Loading Loading @@ -187,9 +180,6 @@ public class ContactLoader extends AsyncTaskLoader<Contact> { Contacts.SEND_TO_VOICEMAIL, Contacts.CUSTOM_RINGTONE, Contacts.IS_USER_PROFILE, Data.TIMES_USED, Data.LAST_TIME_USED }; static final String[] COLUMNS; Loading Loading @@ -270,9 +260,7 @@ public class ContactLoader extends AsyncTaskLoader<Contact> { public static final int CUSTOM_RINGTONE = 60; public static final int IS_USER_PROFILE = 61; public static final int TIMES_USED = 62; public static final int LAST_TIME_USED = 63; public static final int CARRIER_PRESENCE = 64; public static final int CARRIER_PRESENCE = 62; } /** Loading Loading @@ -681,8 +669,6 @@ public class ContactLoader extends AsyncTaskLoader<Contact> { cursorColumnToContentValues(cursor, cv, ContactQuery.MIMETYPE); cursorColumnToContentValues(cursor, cv, ContactQuery.GROUP_SOURCE_ID); cursorColumnToContentValues(cursor, cv, ContactQuery.CHAT_CAPABILITY); cursorColumnToContentValues(cursor, cv, ContactQuery.TIMES_USED); cursorColumnToContentValues(cursor, cv, ContactQuery.LAST_TIME_USED); if (CompatUtils.isMarshmallowCompatible()) { cursorColumnToContentValues(cursor, cv, ContactQuery.CARRIER_PRESENCE); } Loading src/com/android/contacts/model/dataitem/DataItem.java +0 −19 Original line number Diff line number Diff line Loading @@ -34,8 +34,6 @@ import android.provider.ContactsContract.CommonDataKinds.StructuredName; import android.provider.ContactsContract.CommonDataKinds.StructuredPostal; import android.provider.ContactsContract.CommonDataKinds.Website; import android.provider.ContactsContract.Contacts.Data; import android.provider.ContactsContract.Contacts.Entity; import com.android.contacts.Collapser; import com.android.contacts.MoreContactUtils; import com.android.contacts.model.RawContactModifier; Loading Loading @@ -189,14 +187,6 @@ public class DataItem implements Collapser.Collapsible<DataItem> { return mKind; } public Integer getTimesUsed() { return mContentValues.getAsInteger(Entity.TIMES_USED); } public Long getLastTimeUsed() { return mContentValues.getAsLong(Entity.LAST_TIME_USED); } @Override public void collapseWith(DataItem that) { DataKind thisKind = getDataKind(); Loading Loading @@ -226,15 +216,6 @@ public class DataItem implements Collapser.Collapsible<DataItem> { if (isPrimary() || that.isPrimary()) { mContentValues.put(Data.IS_PRIMARY, 1); } // Add up the times used mContentValues.put(Entity.TIMES_USED, (getTimesUsed() == null ? 0 : getTimesUsed()) + (that.getTimesUsed() == null ? 0 : that.getTimesUsed())); // Use the most recent time mContentValues.put(Entity.LAST_TIME_USED, Math.max(getLastTimeUsed() == null ? 0 : getLastTimeUsed(), that.getLastTimeUsed() == null ? 0 : that.getLastTimeUsed())); } @Override Loading Loading
src/com/android/contacts/group/GroupMembersFragment.java +8 −16 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import android.os.Handler; import android.os.Message; import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; import androidx.core.content.ContextCompat; import android.text.TextUtils; import android.util.Log; import android.view.Gravity; Loading @@ -47,7 +46,7 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; import androidx.core.content.ContextCompat; import com.android.contacts.ContactSaveService; import com.android.contacts.ContactsUtils; import com.android.contacts.GroupMetaDataLoader; Loading @@ -69,7 +68,6 @@ import com.android.contacts.model.account.AccountWithDataSet; import com.android.contacts.util.ImplicitIntentsUtil; import com.android.contactsbind.FeedbackHelper; import com.google.common.primitives.Longs; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; Loading Loading @@ -316,7 +314,6 @@ public class GroupMembersFragment extends MultiSelectContactsListFragment<GroupM ContactsContract.Data.CONTACT_ID, ContactsContract.CommonDataKinds.Email._ID, ContactsContract.Data.IS_SUPER_PRIMARY, ContactsContract.Data.TIMES_USED, ContactsContract.Data.DATA1 }; Loading @@ -324,15 +321,13 @@ public class GroupMembersFragment extends MultiSelectContactsListFragment<GroupM ContactsContract.Data.CONTACT_ID, ContactsContract.CommonDataKinds.Phone._ID, ContactsContract.Data.IS_SUPER_PRIMARY, ContactsContract.Data.TIMES_USED, ContactsContract.Data.DATA1 }; public static final int CONTACT_ID = 0; public static final int ITEM_ID = 1; public static final int PRIMARY = 2; public static final int TIMES_USED = 3; public static final int DATA1 = 4; public static final int DATA1 = 3; } /** Loading @@ -341,14 +336,12 @@ public class GroupMembersFragment extends MultiSelectContactsListFragment<GroupM private class ContactDataHelperClass { private List<String> items = new ArrayList<>(); private String mostUsedItemId = null; private int mostUsedTimes; private String firstItemId = null; private String primaryItemId = null; public void addItem(String item, int timesUsed, boolean primaryFlag) { if (mostUsedItemId == null || timesUsed > mostUsedTimes) { mostUsedItemId = item; mostUsedTimes = timesUsed; public void addItem(String item, boolean primaryFlag) { if (firstItemId == null) { firstItemId = item; } if (primaryFlag) { primaryItemId = item; Loading @@ -363,7 +356,7 @@ public class GroupMembersFragment extends MultiSelectContactsListFragment<GroupM public String getDefaultSelectionItemId() { return primaryItemId != null ? primaryItemId : mostUsedItemId; : firstItemId; } } Loading Loading @@ -397,7 +390,6 @@ public class GroupMembersFragment extends MultiSelectContactsListFragment<GroupM final String contactId = cursor.getString(Query.CONTACT_ID); final String itemId = cursor.getString(Query.ITEM_ID); final boolean isPrimary = cursor.getInt(Query.PRIMARY) != 0; final int timesUsed = cursor.getInt(Query.TIMES_USED); final String data = cursor.getString(Query.DATA1); if (!TextUtils.isEmpty(data)) { Loading @@ -408,7 +400,7 @@ public class GroupMembersFragment extends MultiSelectContactsListFragment<GroupM } else { contact = contactMap.get(contactId); } contact.addItem(itemId, timesUsed, isPrimary); contact.addItem(itemId, isPrimary); itemList.add(data); } } Loading
src/com/android/contacts/list/ContactListItemView.java +5 −8 Original line number Diff line number Diff line Loading @@ -30,11 +30,6 @@ import android.os.Bundle; import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.SearchSnippets; import androidx.core.content.ContextCompat; import androidx.core.content.res.ResourcesCompat; import androidx.core.graphics.drawable.DrawableCompat; import androidx.appcompat.widget.AppCompatCheckBox; import androidx.appcompat.widget.AppCompatImageButton; import android.text.Spannable; import android.text.SpannableString; import android.text.TextUtils; Loading @@ -50,7 +45,11 @@ import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.QuickContactBadge; import android.widget.TextView; import androidx.appcompat.widget.AppCompatCheckBox; import androidx.appcompat.widget.AppCompatImageButton; import androidx.core.content.ContextCompat; import androidx.core.content.res.ResourcesCompat; import androidx.core.graphics.drawable.DrawableCompat; import com.android.contacts.ContactPresenceIconUtil; import com.android.contacts.ContactStatusUtil; import com.android.contacts.R; Loading @@ -60,9 +59,7 @@ import com.android.contacts.format.TextHighlighter; import com.android.contacts.util.ContactDisplayUtils; import com.android.contacts.util.SearchUtil; import com.android.contacts.util.ViewUtil; import com.google.common.collect.Lists; import java.util.ArrayList; import java.util.List; import java.util.Locale; Loading
src/com/android/contacts/list/DefaultContactListAdapter.java +1 −30 Original line number Diff line number Diff line Loading @@ -30,11 +30,9 @@ import android.provider.ContactsContract.Directory; import android.provider.ContactsContract.SearchSnippets; import android.text.TextUtils; import android.view.View; import com.android.contacts.compat.ContactsCompat; import com.android.contacts.model.account.AccountWithDataSet; import com.android.contacts.preference.ContactsPreferences; import java.util.ArrayList; import java.util.List; Loading @@ -46,33 +44,6 @@ public class DefaultContactListAdapter extends ContactListAdapter { public static final char SNIPPET_START_MATCH = '['; public static final char SNIPPET_END_MATCH = ']'; // Contacts contacted within the last 3 days (in seconds) private static final long LAST_TIME_USED_3_DAYS_SEC = 3L * 24 * 60 * 60; // Contacts contacted within the last 7 days (in seconds) private static final long LAST_TIME_USED_7_DAYS_SEC = 7L * 24 * 60 * 60; // Contacts contacted within the last 14 days (in seconds) private static final long LAST_TIME_USED_14_DAYS_SEC = 14L * 24 * 60 * 60; // Contacts contacted within the last 30 days (in seconds) private static final long LAST_TIME_USED_30_DAYS_SEC = 30L * 24 * 60 * 60; private static final String TIME_SINCE_LAST_USED_SEC = "(strftime('%s', 'now') - " + Contacts.LAST_TIME_CONTACTED + "/1000)"; private static final String STREQUENT_SORT = "(CASE WHEN " + TIME_SINCE_LAST_USED_SEC + " < " + LAST_TIME_USED_3_DAYS_SEC + " THEN 0 " + " WHEN " + TIME_SINCE_LAST_USED_SEC + " < " + LAST_TIME_USED_7_DAYS_SEC + " THEN 1 " + " WHEN " + TIME_SINCE_LAST_USED_SEC + " < " + LAST_TIME_USED_14_DAYS_SEC + " THEN 2 " + " WHEN " + TIME_SINCE_LAST_USED_SEC + " < " + LAST_TIME_USED_30_DAYS_SEC + " THEN 3 " + " ELSE 4 END), " + Contacts.TIMES_CONTACTED + " DESC, " + Contacts.STARRED + " DESC"; public DefaultContactListAdapter(Context context) { super(context); Loading Loading @@ -113,7 +84,7 @@ public class DefaultContactListAdapter extends ContactListAdapter { appendSearchParameters(builder, query, directoryId); loader.setUri(builder.build()); loader.setProjection(getProjection(true)); sortOrder = STREQUENT_SORT; sortOrder = Contacts.SORT_KEY_PRIMARY; } } else { final ContactListFilter filter = getFilter(); Loading
src/com/android/contacts/model/ContactLoader.java +4 −18 Original line number Diff line number Diff line Loading @@ -37,13 +37,11 @@ import android.provider.ContactsContract.Groups; import android.provider.ContactsContract.RawContacts; import android.text.TextUtils; import android.util.Log; import com.android.contacts.GeoUtil; import com.android.contacts.GroupMetaDataLoader; import com.android.contacts.compat.CompatUtils; import com.android.contacts.group.GroupMetaData; import com.android.contacts.model.account.AccountType; import com.android.contacts.model.account.AccountTypeWithDataSet; import com.android.contacts.model.dataitem.DataItem; import com.android.contacts.model.dataitem.PhoneDataItem; import com.android.contacts.model.dataitem.PhotoDataItem; Loading @@ -51,17 +49,10 @@ import com.android.contacts.util.Constants; import com.android.contacts.util.ContactLoaderUtils; import com.android.contacts.util.DataStatus; import com.android.contacts.util.UriUtils; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; Loading @@ -70,9 +61,11 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; /** * Loads a single Contact and all it constituent RawContacts. Loading Loading @@ -187,9 +180,6 @@ public class ContactLoader extends AsyncTaskLoader<Contact> { Contacts.SEND_TO_VOICEMAIL, Contacts.CUSTOM_RINGTONE, Contacts.IS_USER_PROFILE, Data.TIMES_USED, Data.LAST_TIME_USED }; static final String[] COLUMNS; Loading Loading @@ -270,9 +260,7 @@ public class ContactLoader extends AsyncTaskLoader<Contact> { public static final int CUSTOM_RINGTONE = 60; public static final int IS_USER_PROFILE = 61; public static final int TIMES_USED = 62; public static final int LAST_TIME_USED = 63; public static final int CARRIER_PRESENCE = 64; public static final int CARRIER_PRESENCE = 62; } /** Loading Loading @@ -681,8 +669,6 @@ public class ContactLoader extends AsyncTaskLoader<Contact> { cursorColumnToContentValues(cursor, cv, ContactQuery.MIMETYPE); cursorColumnToContentValues(cursor, cv, ContactQuery.GROUP_SOURCE_ID); cursorColumnToContentValues(cursor, cv, ContactQuery.CHAT_CAPABILITY); cursorColumnToContentValues(cursor, cv, ContactQuery.TIMES_USED); cursorColumnToContentValues(cursor, cv, ContactQuery.LAST_TIME_USED); if (CompatUtils.isMarshmallowCompatible()) { cursorColumnToContentValues(cursor, cv, ContactQuery.CARRIER_PRESENCE); } Loading
src/com/android/contacts/model/dataitem/DataItem.java +0 −19 Original line number Diff line number Diff line Loading @@ -34,8 +34,6 @@ import android.provider.ContactsContract.CommonDataKinds.StructuredName; import android.provider.ContactsContract.CommonDataKinds.StructuredPostal; import android.provider.ContactsContract.CommonDataKinds.Website; import android.provider.ContactsContract.Contacts.Data; import android.provider.ContactsContract.Contacts.Entity; import com.android.contacts.Collapser; import com.android.contacts.MoreContactUtils; import com.android.contacts.model.RawContactModifier; Loading Loading @@ -189,14 +187,6 @@ public class DataItem implements Collapser.Collapsible<DataItem> { return mKind; } public Integer getTimesUsed() { return mContentValues.getAsInteger(Entity.TIMES_USED); } public Long getLastTimeUsed() { return mContentValues.getAsLong(Entity.LAST_TIME_USED); } @Override public void collapseWith(DataItem that) { DataKind thisKind = getDataKind(); Loading Loading @@ -226,15 +216,6 @@ public class DataItem implements Collapser.Collapsible<DataItem> { if (isPrimary() || that.isPrimary()) { mContentValues.put(Data.IS_PRIMARY, 1); } // Add up the times used mContentValues.put(Entity.TIMES_USED, (getTimesUsed() == null ? 0 : getTimesUsed()) + (that.getTimesUsed() == null ? 0 : that.getTimesUsed())); // Use the most recent time mContentValues.put(Entity.LAST_TIME_USED, Math.max(getLastTimeUsed() == null ? 0 : getLastTimeUsed(), that.getLastTimeUsed() == null ? 0 : that.getLastTimeUsed())); } @Override Loading