blob: 095a4643d0ca40df1bad21ab892d9a5d5e481e4a [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.suggestions;
import android.content.res.Resources;
import android.view.ViewGroup;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.widget.displaystyle.MarginResizer;
import org.chromium.chrome.browser.widget.displaystyle.UiConfig;
import java.util.List;
/**
* A {@link SiteSectionViewHolder} specialised in displaying sites as a simple grid of tiles,
* through
* {@link TileGridLayout}.
*/
public class TileGridViewHolder extends SiteSectionViewHolder {
private final TileGridLayout mSectionView;
private final MarginResizer mMarginResizer;
public TileGridViewHolder(ViewGroup view, int maxRows, int maxColumns, UiConfig uiConfig) {
super(view);
mSectionView = (TileGridLayout) itemView;
mSectionView.setMaxRows(maxRows);
mSectionView.setMaxColumns(maxColumns);
Resources res = itemView.getResources();
int defaultLateralMargin =
res.getDimensionPixelSize(R.dimen.tile_grid_layout_padding_start);
int wideLateralMargin = res.getDimensionPixelSize(R.dimen.ntp_wide_card_lateral_margins);
mMarginResizer =
new MarginResizer(itemView, uiConfig, defaultLateralMargin, wideLateralMargin);
}
@Override
public void refreshData() {
assert mTileGroup.getTileSections().size() == 1;
List<Tile> tiles = mTileGroup.getTileSections().get(TileSectionType.PERSONALIZED);
assert tiles != null;
mTileRenderer.renderTileSection(tiles, mSectionView, mTileGroup.getTileSetupDelegate());
mTileGroup.notifyTilesRendered();
}
@Override
public SuggestionsTileView findTileView(SiteSuggestion data) {
return mSectionView.getTileView(data);
}
@Override
public void bindDataSource(TileGroup tileGroup, TileRenderer tileRenderer) {
super.bindDataSource(tileGroup, tileRenderer);
if (mMarginResizer != null) mMarginResizer.attach();
}
@Override
public void recycle() {
super.recycle();
if (mMarginResizer != null) mMarginResizer.detach();
}
}