mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-28 07:46:55 +00:00
Merge "[Foldable] Apply max width to AllApps in unfolded state." into sc-v2-dev
This commit is contained in:
@@ -282,8 +282,7 @@ public class AppsDividerView extends View implements StateListener<LauncherState
|
||||
|
||||
@Override
|
||||
public void setInsets(Rect insets, DeviceProfile grid) {
|
||||
int leftRightPadding = grid.desiredWorkspaceLeftRightMarginPx
|
||||
+ grid.cellLayoutPaddingLeftRightPx;
|
||||
int leftRightPadding = grid.allAppsLeftRightPadding;
|
||||
setPadding(leftRightPadding, getPaddingTop(), leftRightPadding, getPaddingBottom());
|
||||
}
|
||||
|
||||
|
||||
@@ -249,8 +249,7 @@ public class PredictionRowView extends LinearLayout implements
|
||||
|
||||
@Override
|
||||
public void setInsets(Rect insets, DeviceProfile grid) {
|
||||
int leftRightPadding = grid.desiredWorkspaceLeftRightMarginPx
|
||||
+ grid.cellLayoutPaddingLeftRightPx;
|
||||
int leftRightPadding = grid.allAppsLeftRightPadding;
|
||||
setPadding(leftRightPadding, getPaddingTop(), leftRightPadding, getPaddingBottom());
|
||||
}
|
||||
|
||||
|
||||
@@ -193,6 +193,8 @@
|
||||
|
||||
<attr name="borderSpacingDps" format="float" />
|
||||
|
||||
<attr name="allAppsCellSpacingDps" format="float" />
|
||||
|
||||
<attr name="iconImageSize" format="float" />
|
||||
<!-- landscapeIconSize defaults to iconImageSize, if not specified -->
|
||||
<attr name="landscapeIconSize" format="float" />
|
||||
|
||||
@@ -168,11 +168,13 @@ public class DeviceProfile {
|
||||
public int qsbBottomMarginPx;
|
||||
|
||||
// All apps
|
||||
public int allAppsCellSpacingPx;
|
||||
public int allAppsOpenVerticalTranslate;
|
||||
public int allAppsCellHeightPx;
|
||||
public int allAppsCellWidthPx;
|
||||
public int allAppsIconSizePx;
|
||||
public int allAppsIconDrawablePaddingPx;
|
||||
public int allAppsLeftRightPadding;
|
||||
public final int numShownAllAppsColumns;
|
||||
public float allAppsIconTextSizePx;
|
||||
|
||||
@@ -283,6 +285,7 @@ public class DeviceProfile {
|
||||
folderContentPaddingTop = res.getDimensionPixelSize(R.dimen.folder_content_padding_top);
|
||||
|
||||
setCellLayoutBorderSpacing(pxFromDp(inv.borderSpacing, mMetrics, 1f));
|
||||
allAppsCellSpacingPx = pxFromDp(inv.allAppsCellSpacing, mMetrics, 1f);
|
||||
cellLayoutBorderSpacingOriginalPx = cellLayoutBorderSpacingPx;
|
||||
folderCellLayoutBorderSpacingPx = cellLayoutBorderSpacingPx;
|
||||
|
||||
@@ -547,6 +550,17 @@ public class DeviceProfile {
|
||||
+ textHeight + (topBottomPadding * 2);
|
||||
}
|
||||
|
||||
private void updateAllAppsWidth() {
|
||||
if (isTwoPanels) {
|
||||
int usedWidth = (allAppsCellWidthPx * numShownAllAppsColumns)
|
||||
+ (allAppsCellSpacingPx * (numShownAllAppsColumns + 1));
|
||||
allAppsLeftRightPadding = Math.max(1, (availableWidthPx - usedWidth) / 2);
|
||||
} else {
|
||||
allAppsLeftRightPadding =
|
||||
desiredWorkspaceLeftRightMarginPx + cellLayoutPaddingLeftRightPx;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the amount of extra (or unused) vertical space.
|
||||
*/
|
||||
@@ -666,6 +680,7 @@ public class DeviceProfile {
|
||||
allAppsCellHeightPx = getCellSize().y;
|
||||
}
|
||||
allAppsCellWidthPx = allAppsIconSizePx + allAppsIconDrawablePaddingPx;
|
||||
updateAllAppsWidth();
|
||||
|
||||
if (isVerticalLayout) {
|
||||
hideWorkspaceLabelsIfNotEnoughSpace();
|
||||
|
||||
@@ -108,6 +108,7 @@ public class InvariantDeviceProfile {
|
||||
public float iconTextSize;
|
||||
public float allAppsIconSize;
|
||||
public float allAppsIconTextSize;
|
||||
public float allAppsCellSpacing;
|
||||
public boolean isSplitDisplay;
|
||||
|
||||
public float minCellHeight;
|
||||
@@ -153,7 +154,8 @@ public class InvariantDeviceProfile {
|
||||
*/
|
||||
public List<DeviceProfile> supportedProfiles = Collections.EMPTY_LIST;
|
||||
|
||||
@Nullable public DevicePaddings devicePaddings;
|
||||
@Nullable
|
||||
public DevicePaddings devicePaddings;
|
||||
|
||||
public Point defaultWallpaperSize;
|
||||
public Rect defaultWidgetPadding;
|
||||
@@ -161,7 +163,8 @@ public class InvariantDeviceProfile {
|
||||
private final ArrayList<OnIDPChangeListener> mChangeListeners = new ArrayList<>();
|
||||
|
||||
@VisibleForTesting
|
||||
public InvariantDeviceProfile() {}
|
||||
public InvariantDeviceProfile() {
|
||||
}
|
||||
|
||||
@TargetApi(23)
|
||||
private InvariantDeviceProfile(Context context) {
|
||||
@@ -219,6 +222,7 @@ public class InvariantDeviceProfile {
|
||||
result.minCellHeight = defaultDisplayOption.minCellHeight;
|
||||
result.minCellWidth = defaultDisplayOption.minCellWidth;
|
||||
result.borderSpacing = defaultDisplayOption.borderSpacing;
|
||||
result.allAppsCellSpacing = defaultDisplayOption.allAppsCellSpacing;
|
||||
|
||||
initGrid(context, myInfo, result, false);
|
||||
}
|
||||
@@ -283,6 +287,7 @@ public class InvariantDeviceProfile {
|
||||
twoPanelLandscapeMinCellHeightDps = displayOption.twoPanelLandscapeMinCellHeightDps;
|
||||
twoPanelLandscapeMinCellWidthDps = displayOption.twoPanelLandscapeMinCellWidthDps;
|
||||
borderSpacing = displayOption.borderSpacing;
|
||||
allAppsCellSpacing = displayOption.allAppsCellSpacing;
|
||||
|
||||
numShownHotseatIcons = closestProfile.numHotseatIcons;
|
||||
numDatabaseHotseatIcons = isSplitDisplay
|
||||
@@ -356,7 +361,7 @@ public class InvariantDeviceProfile {
|
||||
}
|
||||
|
||||
private Object[] toModelState() {
|
||||
return new Object[] {
|
||||
return new Object[]{
|
||||
numColumns, numRows, numDatabaseHotseatIcons, iconBitmapSize, fillResIconDpi,
|
||||
numDatabaseAllAppsColumns, dbFile};
|
||||
}
|
||||
@@ -402,7 +407,7 @@ public class InvariantDeviceProfile {
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException|XmlPullParserException e) {
|
||||
} catch (IOException | XmlPullParserException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
@@ -456,7 +461,7 @@ public class InvariantDeviceProfile {
|
||||
|
||||
private int getLauncherIconDensity(int requiredSize) {
|
||||
// Densities typically defined by an app.
|
||||
int[] densityBuckets = new int[] {
|
||||
int[] densityBuckets = new int[]{
|
||||
DisplayMetrics.DENSITY_LOW,
|
||||
DisplayMetrics.DENSITY_MEDIUM,
|
||||
DisplayMetrics.DENSITY_TV,
|
||||
@@ -596,8 +601,8 @@ public class InvariantDeviceProfile {
|
||||
// We will use these two data points to extrapolate how much the wallpaper parallax effect
|
||||
// to span (ie travel) at any aspect ratio:
|
||||
|
||||
final float ASPECT_RATIO_LANDSCAPE = 16/10f;
|
||||
final float ASPECT_RATIO_PORTRAIT = 10/16f;
|
||||
final float ASPECT_RATIO_LANDSCAPE = 16 / 10f;
|
||||
final float ASPECT_RATIO_PORTRAIT = 10 / 16f;
|
||||
final float WALLPAPER_WIDTH_TO_SCREEN_RATIO_LANDSCAPE = 1.5f;
|
||||
final float WALLPAPER_WIDTH_TO_SCREEN_RATIO_PORTRAIT = 1.2f;
|
||||
|
||||
@@ -607,7 +612,8 @@ public class InvariantDeviceProfile {
|
||||
// (10/16)x + y = 1.2
|
||||
// We solve for x and y and end up with a final formula:
|
||||
final float x =
|
||||
(WALLPAPER_WIDTH_TO_SCREEN_RATIO_LANDSCAPE - WALLPAPER_WIDTH_TO_SCREEN_RATIO_PORTRAIT) /
|
||||
(WALLPAPER_WIDTH_TO_SCREEN_RATIO_LANDSCAPE
|
||||
- WALLPAPER_WIDTH_TO_SCREEN_RATIO_PORTRAIT) /
|
||||
(ASPECT_RATIO_LANDSCAPE - ASPECT_RATIO_PORTRAIT);
|
||||
final float y = WALLPAPER_WIDTH_TO_SCREEN_RATIO_PORTRAIT - x * ASPECT_RATIO_PORTRAIT;
|
||||
return x * aspectRatio + y;
|
||||
@@ -719,6 +725,7 @@ public class InvariantDeviceProfile {
|
||||
private float twoPanelPortraitMinCellWidthDps;
|
||||
private float twoPanelLandscapeMinCellHeightDps;
|
||||
private float twoPanelLandscapeMinCellWidthDps;
|
||||
private float allAppsCellSpacing;
|
||||
private float borderSpacing;
|
||||
|
||||
private final float[] iconSizes = new float[COUNT_TOTAL];
|
||||
@@ -750,6 +757,8 @@ public class InvariantDeviceProfile {
|
||||
R.styleable.ProfileDisplayOption_twoPanelLandscapeMinCellWidthDps,
|
||||
twoPanelPortraitMinCellWidthDps);
|
||||
borderSpacing = a.getFloat(R.styleable.ProfileDisplayOption_borderSpacingDps, 0);
|
||||
allAppsCellSpacing = a.getFloat(R.styleable.ProfileDisplayOption_allAppsCellSpacingDps,
|
||||
borderSpacing);
|
||||
|
||||
iconSizes[INDEX_DEFAULT] =
|
||||
a.getFloat(R.styleable.ProfileDisplayOption_iconImageSize, 0);
|
||||
@@ -810,6 +819,7 @@ public class InvariantDeviceProfile {
|
||||
twoPanelLandscapeMinCellHeightDps *= w;
|
||||
twoPanelLandscapeMinCellWidthDps *= w;
|
||||
borderSpacing *= w;
|
||||
allAppsCellSpacing *= w;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -825,6 +835,7 @@ public class InvariantDeviceProfile {
|
||||
twoPanelLandscapeMinCellHeightDps += p.twoPanelLandscapeMinCellHeightDps;
|
||||
twoPanelLandscapeMinCellWidthDps += p.twoPanelLandscapeMinCellWidthDps;
|
||||
borderSpacing += p.borderSpacing;
|
||||
allAppsCellSpacing += p.allAppsCellSpacing;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -382,12 +382,10 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo
|
||||
public void setInsets(Rect insets) {
|
||||
mInsets.set(insets);
|
||||
DeviceProfile grid = mLauncher.getDeviceProfile();
|
||||
int leftRightPadding = grid.desiredWorkspaceLeftRightMarginPx
|
||||
+ grid.cellLayoutPaddingLeftRightPx;
|
||||
|
||||
for (int i = 0; i < mAH.length; i++) {
|
||||
mAH[i].padding.bottom = insets.bottom;
|
||||
mAH[i].padding.left = mAH[i].padding.right = leftRightPadding;
|
||||
mAH[i].padding.left = mAH[i].padding.right = grid.allAppsLeftRightPadding;
|
||||
mAH[i].applyPadding();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user