Make contextual card count configurable.
Decide how many card we should show at once on the homepage based on the value in Settings Global for more flexibility. Fall back to the default value if there is nothing set up. Bug: 138754406 Test: robotests Change-Id: I8d31d98eafb636a5e72af76ffec7e3dae0be3cbc
This commit is contained in:
@@ -27,6 +27,7 @@ import android.database.Cursor;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
|
import android.provider.Settings;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@@ -50,6 +51,8 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>
|
|||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static final int DEFAULT_CARD_COUNT = 3;
|
static final int DEFAULT_CARD_COUNT = 3;
|
||||||
|
@VisibleForTesting
|
||||||
|
static final String CONTEXTUAL_CARD_COUNT = "contextual_card_count";
|
||||||
static final int CARD_CONTENT_LOADER_ID = 1;
|
static final int CARD_CONTENT_LOADER_ID = 1;
|
||||||
|
|
||||||
private static final String TAG = "ContextualCardLoader";
|
private static final String TAG = "ContextualCardLoader";
|
||||||
@@ -130,8 +133,9 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>
|
|||||||
final List<ContextualCard> hiddenCards = new ArrayList<>();
|
final List<ContextualCard> hiddenCards = new ArrayList<>();
|
||||||
|
|
||||||
final int size = eligibleCards.size();
|
final int size = eligibleCards.size();
|
||||||
|
final int cardCount = getCardCount();
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
if (i < DEFAULT_CARD_COUNT) {
|
if (i < cardCount) {
|
||||||
visibleCards.add(eligibleCards.get(i));
|
visibleCards.add(eligibleCards.get(i));
|
||||||
} else {
|
} else {
|
||||||
hiddenCards.add(eligibleCards.get(i));
|
hiddenCards.add(eligibleCards.get(i));
|
||||||
@@ -149,6 +153,14 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>
|
|||||||
return visibleCards;
|
return visibleCards;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
int getCardCount() {
|
||||||
|
// Return the card count if Settings.Global has KEY_CONTEXTUAL_CARD_COUNT key,
|
||||||
|
// otherwise return the default one.
|
||||||
|
return Settings.Global.getInt(mContext.getContentResolver(),
|
||||||
|
CONTEXTUAL_CARD_COUNT, DEFAULT_CARD_COUNT);
|
||||||
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
Cursor getContextualCardsFromProvider() {
|
Cursor getContextualCardsFromProvider() {
|
||||||
return CardDatabaseHelper.getInstance(mContext).getContextualCards();
|
return CardDatabaseHelper.getInstance(mContext).getContextualCards();
|
||||||
|
@@ -31,6 +31,7 @@ import static org.mockito.Mockito.verify;
|
|||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import android.provider.Settings;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.slices.CustomSliceRegistry;
|
import com.android.settings.slices.CustomSliceRegistry;
|
||||||
@@ -110,6 +111,20 @@ public class ContextualCardLoaderTest {
|
|||||||
eq(SettingsEnums.ACTION_CONTEXTUAL_CARD_NOT_SHOW), any(String.class));
|
eq(SettingsEnums.ACTION_CONTEXTUAL_CARD_NOT_SHOW), any(String.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getCardCount_noConfiguredCardCount_returnDefaultCardCount() {
|
||||||
|
assertThat(mContextualCardLoader.getCardCount()).isEqualTo(DEFAULT_CARD_COUNT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getCardCount_hasConfiguredCardCount_returnConfiguredCardCount() {
|
||||||
|
int configCount = 4;
|
||||||
|
Settings.Global.putLong(mContext.getContentResolver(),
|
||||||
|
ContextualCardLoader.CONTEXTUAL_CARD_COUNT, configCount);
|
||||||
|
|
||||||
|
assertThat(mContextualCardLoader.getCardCount()).isEqualTo(configCount);
|
||||||
|
}
|
||||||
|
|
||||||
private List<ContextualCard> getContextualCardList() {
|
private List<ContextualCard> getContextualCardList() {
|
||||||
final List<ContextualCard> cards = new ArrayList<>();
|
final List<ContextualCard> cards = new ArrayList<>();
|
||||||
cards.add(new ContextualCard.Builder()
|
cards.add(new ContextualCard.Builder()
|
||||||
|
Reference in New Issue
Block a user