Merge "Make hotseat bottom a launcher config"
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index b1294b4..f572756 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -32,6 +32,14 @@
     <!-- Hotseat -->
     <dimen name="dynamic_grid_hotseat_top_padding">8dp</dimen>
     <dimen name="dynamic_grid_hotseat_bottom_padding">2dp</dimen>
+    <dimen name="dynamic_grid_hotseat_bottom_tall_padding">0dp</dimen>
+
+    <!-- Qsb -->
+    <!-- Used for adjusting the position of QSB when placed in hotseat. This is a ratio and a higher
+     number signifies that the QSB is close to the hotseat icons and a lower number signifies that
+      it is close to the bottom of the screen -->
+    <item name="qsb_center_factor" format="float" type="dimen">0.325</item>
+
     <!-- Extra bottom padding for non-tall devices. -->
     <dimen name="dynamic_grid_hotseat_bottom_non_tall_padding">0dp</dimen>
     <dimen name="dynamic_grid_hotseat_extra_vertical_size">34dp</dimen>
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 0b60b32..e29cd55 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -53,7 +53,7 @@
 
     private static final int DEFAULT_DOT_SIZE = 100;
     // Ratio of empty space, qsb should take up to appear visually centered.
-    private static final float QSB_CENTER_FACTOR = .325f;
+    private final float mQsbCenterFactor;
 
     public final InvariantDeviceProfile inv;
     private final Info mInfo;
@@ -255,7 +255,7 @@
 
         aspectRatio = ((float) Math.max(widthPx, heightPx)) / Math.min(widthPx, heightPx);
         boolean isTallDevice = Float.compare(aspectRatio, TALL_DEVICE_ASPECT_RATIO_THRESHOLD) >= 0;
-
+        mQsbCenterFactor = context.getResources().getFloat(R.dimen.qsb_center_factor);
         // Some more constants
         context = getContext(context, info, isVerticalBarLayout()
                 ? Configuration.ORIENTATION_LANDSCAPE
@@ -347,7 +347,8 @@
         hotseatBarSizeExtraSpacePx = 0;
         hotseatBarTopPaddingPx =
                 res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_top_padding);
-        hotseatBarBottomPaddingPx = (isTallDevice ? 0
+        hotseatBarBottomPaddingPx = (isTallDevice ? res.getDimensionPixelSize(
+                R.dimen.dynamic_grid_hotseat_bottom_tall_padding)
                 : res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_bottom_non_tall_padding))
                 + res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_bottom_padding);
         hotseatBarSidePaddingEndPx =
@@ -931,8 +932,8 @@
             // Note that taskbarSize = 0 unless isTaskbarPresent.
             return Math.min(qsbBottomMarginPx + taskbarSize, freeSpace);
         } else {
-            return (int) (freeSpace * QSB_CENTER_FACTOR)
-                    + (isTaskbarPresent ? taskbarSize : mInsets.bottom);
+            return (int) (freeSpace * mQsbCenterFactor)
+                + (isTaskbarPresent ? taskbarSize : mInsets.bottom);
         }
     }