Loading src/com/android/settings/homepage/contextualcards/ContextualCardFeatureProvider.java +3 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,9 @@ public interface ContextualCardFeatureProvider { /** Get contextual cards from the card provider */ Cursor getContextualCards(); /** Get the default contextual card to display */ ContextualCard getDefaultContextualCard(); /** * Mark a specific {@link ContextualCard} as dismissed with dismissal signal in the database * to indicate that the card has been dismissed. Loading src/com/android/settings/homepage/contextualcards/ContextualCardFeatureProviderImpl.java +5 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,11 @@ public class ContextualCardFeatureProviderImpl implements ContextualCardFeatureP return cursor; } @Override public ContextualCard getDefaultContextualCard() { return null; } @Override public int markCardAsDismissed(Context context, String cardName) { final SQLiteDatabase db = CardDatabaseHelper.getInstance(mContext).getWritableDatabase(); Loading src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java +10 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,16 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard> SettingsEnums.ACTION_CONTEXTUAL_CARD_NOT_SHOW, ContextualCardLogUtils.buildCardListLog(hiddenCards)); } // Add a default card if no other visible cards if (visibleCards.isEmpty() && maxCardCount == 1) { final ContextualCard defaultCard = FeatureFactory.getFactory(mContext) .getContextualCardFeatureProvider(mContext).getDefaultContextualCard(); if (defaultCard != null) { Log.i(TAG, "Default card: " + defaultCard.getSliceUri()); visibleCards.add(defaultCard); } } return visibleCards; } Loading src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java +1 −2 Original line number Diff line number Diff line Loading @@ -47,7 +47,6 @@ import com.android.settings.homepage.contextualcards.CardContentProvider; import com.android.settings.homepage.contextualcards.ContextualCard; import com.android.settings.homepage.contextualcards.ContextualCardRenderer; import com.android.settings.homepage.contextualcards.ControllerRendererPool; import com.android.settings.homepage.contextualcards.slices.SliceFullCardRendererHelper.SliceViewHolder; import com.android.settingslib.utils.ThreadUtils; import java.util.Map; Loading Loading @@ -105,7 +104,7 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, Life // Show cached slice first before slice binding completed to avoid jank. if (holder.getItemViewType() != VIEW_TYPE_HALF_WIDTH) { ((SliceViewHolder) holder).sliceView.setSlice(card.getSlice()); mFullCardHelper.bindView(holder, card, card.getSlice()); } LiveData<Slice> sliceLiveData = mSliceLiveDataMap.get(uri); Loading src/com/android/settings/wifi/slice/ContextualWifiSlice.java +22 −8 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.net.NetworkInfo.State; import android.net.Uri; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.provider.Settings; import android.text.TextUtils; import androidx.annotation.VisibleForTesting; Loading @@ -44,6 +45,9 @@ import com.android.settingslib.wifi.AccessPoint; */ public class ContextualWifiSlice extends WifiSlice { @VisibleForTesting static final String CONTEXTUAL_WIFI_EXPANDABLE = "contextual_wifi_expandable"; @VisibleForTesting static final int COLLAPSED_ROW_COUNT = 0; Loading @@ -63,6 +67,7 @@ public class ContextualWifiSlice extends WifiSlice { @Override public Slice getSlice() { if (isExpandable()) { final long currentUiSession = FeatureFactory.getFactory(mContext) .getSlicesFeatureProvider().getUiSessionToken(); if (currentUiSession != sActiveUiSession) { Loading @@ -71,6 +76,9 @@ public class ContextualWifiSlice extends WifiSlice { } else if (!mWifiManager.isWifiEnabled()) { sApRowCollapsed = false; } } else { sApRowCollapsed = true; } return super.getSlice(); } Loading @@ -87,12 +95,18 @@ public class ContextualWifiSlice extends WifiSlice { protected ListBuilder.RowBuilder getHeaderRow(boolean isWifiEnabled, AccessPoint accessPoint) { final ListBuilder.RowBuilder builder = super.getHeaderRow(isWifiEnabled, accessPoint); builder.setTitleItem(getHeaderIcon(isWifiEnabled, accessPoint), ListBuilder.ICON_IMAGE); if (sApRowCollapsed) { if (sApRowCollapsed && isWifiEnabled) { builder.setSubtitle(getSubtitle(accessPoint)); } return builder; } private boolean isExpandable() { // Return whether this slice can be expandable. return Settings.Global.getInt(mContext.getContentResolver(), CONTEXTUAL_WIFI_EXPANDABLE, 0) != 0; } private IconCompat getHeaderIcon(boolean isWifiEnabled, AccessPoint accessPoint) { final Drawable drawable; final int tint; Loading Loading
src/com/android/settings/homepage/contextualcards/ContextualCardFeatureProvider.java +3 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,9 @@ public interface ContextualCardFeatureProvider { /** Get contextual cards from the card provider */ Cursor getContextualCards(); /** Get the default contextual card to display */ ContextualCard getDefaultContextualCard(); /** * Mark a specific {@link ContextualCard} as dismissed with dismissal signal in the database * to indicate that the card has been dismissed. Loading
src/com/android/settings/homepage/contextualcards/ContextualCardFeatureProviderImpl.java +5 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,11 @@ public class ContextualCardFeatureProviderImpl implements ContextualCardFeatureP return cursor; } @Override public ContextualCard getDefaultContextualCard() { return null; } @Override public int markCardAsDismissed(Context context, String cardName) { final SQLiteDatabase db = CardDatabaseHelper.getInstance(mContext).getWritableDatabase(); Loading
src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java +10 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,16 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard> SettingsEnums.ACTION_CONTEXTUAL_CARD_NOT_SHOW, ContextualCardLogUtils.buildCardListLog(hiddenCards)); } // Add a default card if no other visible cards if (visibleCards.isEmpty() && maxCardCount == 1) { final ContextualCard defaultCard = FeatureFactory.getFactory(mContext) .getContextualCardFeatureProvider(mContext).getDefaultContextualCard(); if (defaultCard != null) { Log.i(TAG, "Default card: " + defaultCard.getSliceUri()); visibleCards.add(defaultCard); } } return visibleCards; } Loading
src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java +1 −2 Original line number Diff line number Diff line Loading @@ -47,7 +47,6 @@ import com.android.settings.homepage.contextualcards.CardContentProvider; import com.android.settings.homepage.contextualcards.ContextualCard; import com.android.settings.homepage.contextualcards.ContextualCardRenderer; import com.android.settings.homepage.contextualcards.ControllerRendererPool; import com.android.settings.homepage.contextualcards.slices.SliceFullCardRendererHelper.SliceViewHolder; import com.android.settingslib.utils.ThreadUtils; import java.util.Map; Loading Loading @@ -105,7 +104,7 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, Life // Show cached slice first before slice binding completed to avoid jank. if (holder.getItemViewType() != VIEW_TYPE_HALF_WIDTH) { ((SliceViewHolder) holder).sliceView.setSlice(card.getSlice()); mFullCardHelper.bindView(holder, card, card.getSlice()); } LiveData<Slice> sliceLiveData = mSliceLiveDataMap.get(uri); Loading
src/com/android/settings/wifi/slice/ContextualWifiSlice.java +22 −8 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.net.NetworkInfo.State; import android.net.Uri; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.provider.Settings; import android.text.TextUtils; import androidx.annotation.VisibleForTesting; Loading @@ -44,6 +45,9 @@ import com.android.settingslib.wifi.AccessPoint; */ public class ContextualWifiSlice extends WifiSlice { @VisibleForTesting static final String CONTEXTUAL_WIFI_EXPANDABLE = "contextual_wifi_expandable"; @VisibleForTesting static final int COLLAPSED_ROW_COUNT = 0; Loading @@ -63,6 +67,7 @@ public class ContextualWifiSlice extends WifiSlice { @Override public Slice getSlice() { if (isExpandable()) { final long currentUiSession = FeatureFactory.getFactory(mContext) .getSlicesFeatureProvider().getUiSessionToken(); if (currentUiSession != sActiveUiSession) { Loading @@ -71,6 +76,9 @@ public class ContextualWifiSlice extends WifiSlice { } else if (!mWifiManager.isWifiEnabled()) { sApRowCollapsed = false; } } else { sApRowCollapsed = true; } return super.getSlice(); } Loading @@ -87,12 +95,18 @@ public class ContextualWifiSlice extends WifiSlice { protected ListBuilder.RowBuilder getHeaderRow(boolean isWifiEnabled, AccessPoint accessPoint) { final ListBuilder.RowBuilder builder = super.getHeaderRow(isWifiEnabled, accessPoint); builder.setTitleItem(getHeaderIcon(isWifiEnabled, accessPoint), ListBuilder.ICON_IMAGE); if (sApRowCollapsed) { if (sApRowCollapsed && isWifiEnabled) { builder.setSubtitle(getSubtitle(accessPoint)); } return builder; } private boolean isExpandable() { // Return whether this slice can be expandable. return Settings.Global.getInt(mContext.getContentResolver(), CONTEXTUAL_WIFI_EXPANDABLE, 0) != 0; } private IconCompat getHeaderIcon(boolean isWifiEnabled, AccessPoint accessPoint) { final Drawable drawable; final int tint; Loading