Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2117)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectableListToolbar.java

Issue 2654193002: [Android History] List item shadows and width constrained styling (Closed)
Patch Set: Changes from dgn@ and dfalcantara@ reviews Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectableListToolbar.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectableListToolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectableListToolbar.java
index dd4d18a02fad29538fe77e97e3833267087db8a2..24aababde01384522ffe6c48fe6db536f628197b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectableListToolbar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectableListToolbar.java
@@ -31,6 +31,8 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.widget.NumberRollView;
import org.chromium.chrome.browser.widget.TintedDrawable;
import org.chromium.chrome.browser.widget.TintedImageButton;
+import org.chromium.chrome.browser.widget.displaystyle.DisplayStyleObserver;
+import org.chromium.chrome.browser.widget.displaystyle.UiConfig;
import org.chromium.chrome.browser.widget.selection.SelectionDelegate.SelectionObserver;
import org.chromium.ui.UiUtils;
@@ -46,7 +48,7 @@ import javax.annotation.Nullable;
* @param <E> The type of the selectable items this toolbar interacts with.
*/
public class SelectableListToolbar<E> extends Toolbar implements SelectionObserver<E>,
- OnClickListener, OnEditorActionListener {
+ OnClickListener, OnEditorActionListener, DisplayStyleObserver {
/**
* A delegate that handles searching the list of selectable items associated with this toolbar.
@@ -99,6 +101,16 @@ public class SelectableListToolbar<E> extends Toolbar implements SelectionObserv
private int mSelectionBackgroundColor;
private int mSearchBackgroundColor;
+ private UiConfig mUiConfig;
+ private int mDefaultTitleMarginStartPx;
+ private int mWideDisplayLateralOffsetPx;
+ private int mWideDisplayEndOffsetPx;
+ private int mWideDisplayNavButtonOffsetPx;
+ private int mOriginalContentInsetStart;
+ private int mOriginalContentInsetEnd;
+ private int mOriginalContentInsetStartWithNavigation;
+ private int mOriginalContentInsetEndWithActions;
+
/**
* Constructor for inflating from XML.
*/
@@ -215,6 +227,11 @@ public class SelectableListToolbar<E> extends Toolbar implements SelectionObserv
LayoutInflater.from(getContext()).inflate(R.layout.number_roll_view, this);
mNumberRollView = (NumberRollView) findViewById(R.id.selection_mode_number);
mNumberRollView.setContentDescriptionString(R.plurals.accessibility_selected_items);
+
+ mOriginalContentInsetStart = getContentInsetStart();
+ mOriginalContentInsetEnd = getContentInsetEnd();
+ mOriginalContentInsetStartWithNavigation = getContentInsetStartWithNavigation();
+ mOriginalContentInsetEndWithActions = getContentInsetEndWithActions();
}
@Override
@@ -376,6 +393,68 @@ public class SelectableListToolbar<E> extends Toolbar implements SelectionObserv
}
/**
+ * When the toolbar has a wide display style, its contents will be width constrained to
+ * {@link UiConfig#WIDE_DISPLAY_STYLE_MIN_WIDTH_DP}. If the current screen width is greater than
+ * UiConfig#WIDE_DISPLAY_STYLE_MIN_WIDTH_DP, the toolbar contents will be visually centered by
+ * adding padding to both sides.
+ *
+ * @param wideDisplayLateralOffsetPx The offset to use for the lateral padding when in
+ * {@link UiConfig#DISPLAY_STYLE_WIDE}.
+ */
+ public void setHasWideDisplayStyle(int wideDisplayLateralOffsetPx, UiConfig uiConfig) {
+ mWideDisplayLateralOffsetPx = wideDisplayLateralOffsetPx;
+ mDefaultTitleMarginStartPx = getTitleMarginStart();
+ mWideDisplayNavButtonOffsetPx =
+ getResources().getDimensionPixelSize(R.dimen.toolbar_wide_display_nav_icon_offset);
+ mWideDisplayEndOffsetPx = getResources().getDimensionPixelSize(
+ R.dimen.toolbar_wide_display_end_offset);
+
+ mUiConfig = uiConfig;
+ mUiConfig.addObserver(this);
+
+ }
+
+ @Override
+ public void onDisplayStyleChanged(int newDisplayStyle) {
+ int padding =
+ SelectableListLayout.getPaddingForDisplayStyle(newDisplayStyle, getResources());
+ int paddingStartOffset = 0;
+ int paddingEndOffset = 0;
+ int contentInsetStart = mOriginalContentInsetStart;
+ int contentInsetStartWithNavigation = mOriginalContentInsetStartWithNavigation;
+ int contentInsetEnd = mOriginalContentInsetEnd;
+ int contentInsetEndWithActions = mOriginalContentInsetEndWithActions;
+
+ if (newDisplayStyle == UiConfig.DISPLAY_STYLE_WIDE) {
+ paddingStartOffset = mWideDisplayLateralOffsetPx;
+
+ // The title and nav buttons are inset in the normal display style. In the wide display
+ // style they should be aligned with the starting edge of the list elements.
+ if (mIsSearching || mIsSelectionEnabled) {
+ paddingStartOffset += mWideDisplayNavButtonOffsetPx;
+ } else {
+ paddingStartOffset -= mDefaultTitleMarginStartPx;
+ }
+
+ // The end button is also inset in the normal display. In the wide display it should be
+ // aligned with the ending edge of the list elements.
+ paddingEndOffset = mWideDisplayLateralOffsetPx + mWideDisplayEndOffsetPx;
+
+ contentInsetStart = 0;
+ contentInsetStartWithNavigation = 0;
+ contentInsetEnd = 0;
+ contentInsetEndWithActions = 0;
+ }
+
+ ApiCompatibilityUtils.setPaddingRelative(this,
+ padding + paddingStartOffset, this.getPaddingTop(),
+ padding + paddingEndOffset, this.getPaddingBottom());
+ setContentInsetsRelative(contentInsetStart, contentInsetEnd);
+ setContentInsetStartWithNavigation(contentInsetStartWithNavigation);
+ setContentInsetEndWithActions(contentInsetEndWithActions);
+ }
+
+ /**
* Set up ActionBarDrawerToggle, a.k.a. hamburger button.
*/
private void initActionBarDrawerToggle() {
@@ -401,6 +480,8 @@ public class SelectableListToolbar<E> extends Toolbar implements SelectionObserv
mNumberRollView.setVisibility(View.GONE);
mNumberRollView.setNumber(0, false);
+
+ updateDisplayStyleIfNecessary();
}
private void showSelectionView(List<E> selectedItems, boolean wasSelectionEnabled) {
@@ -418,6 +499,8 @@ public class SelectableListToolbar<E> extends Toolbar implements SelectionObserv
mNumberRollView.setNumber(selectedItems.size(), true);
if (mIsSearching) UiUtils.hideKeyboard(mSearchEditText);
+
+ updateDisplayStyleIfNecessary();
}
private void showSearchViewInternal() {
@@ -427,6 +510,12 @@ public class SelectableListToolbar<E> extends Toolbar implements SelectionObserv
setNavigationButton(NAVIGATION_BUTTON_BACK);
setBackgroundColor(mSearchBackgroundColor);
+
+ updateDisplayStyleIfNecessary();
+ }
+
+ private void updateDisplayStyleIfNecessary() {
+ if (mUiConfig != null) onDisplayStyleChanged(mUiConfig.getCurrentDisplayStyle());
}
@VisibleForTesting

Powered by Google App Engine
This is Rietveld 408576698