package de.theknut.xposedgelsettings.hooks.homescreen; import android.graphics.Rect; import de.theknut.xposedgelsettings.hooks.Common; import de.theknut.xposedgelsettings.hooks.ObfuscationHelper.Fields; import de.theknut.xposedgelsettings.hooks.PreferencesHelper; import de.theknut.xposedgelsettings.hooks.common.XGELSCallback; import static de.robv.android.xposed.XposedHelpers.getIntField; import static de.robv.android.xposed.XposedHelpers.getObjectField; import static de.robv.android.xposed.XposedHelpers.setIntField; public class GetWorkspacePaddingHook extends XGELSCallback { // http://androidxref.com/4.4.2_r1/xref/packages/apps/Launcher3/src/com/android/launcher3/DynamicGrid.java#301 // Rect getWorkspacePadding(int orientation) @Override public void onBeforeHookedMethod(MethodHookParam param) throws Throwable { if (PreferencesHelper.appdockSettingsSwitch && PreferencesHelper.hideAppDock) { int tmp = getIntField(param.thisObject, Fields.dpHotseatBarHeightPx); if (tmp != 0) { Common.HOTSEAT_BAR_HEIGHT = tmp; setIntField(param.thisObject, Fields.dpHotseatBarHeightPx, 0); } } } @Override public void onAfterHookedMethod(MethodHookParam param) throws Throwable { // 0 = landscape // 1 = portrait int orientation; if (param.args.length == 0) { orientation = 1; } else if (param.args[0] instanceof Boolean) { orientation = (!(Boolean) getObjectField(param.thisObject, "isLandscape")) ? 1 : 0; } else { orientation = (Integer) param.args[0]; } if (PreferencesHelper.changeGridSizeHome && orientation == 1) { Rect padding = (Rect) param.getResult(); int multiplier = PreferencesHelper.workspaceRect; if (padding.left == 0 || padding.right == 0) { // give them something if they are 0 padding.left = padding.right = 16; } padding.set(padding.left * multiplier, padding.top, padding.right * multiplier, padding.bottom); param.setResult(padding); } } }