package de.theknut.xposedgelsettings.hooks.homescreen; 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; import static de.robv.android.xposed.XposedHelpers.setObjectField; public final class DeviceProfileMConstructorHook extends XGELSCallback { public static Float originalIconSize; @Override public void onAfterHookedMethod(MethodHookParam param) throws Throwable { Object InvDevProf = param.args[1]; if (PreferencesHelper.changeGridSizeHome) { if (PreferencesHelper.yCountHomescreenVertical != -1) { // set custom row count setObjectField(InvDevProf, "numRows", PreferencesHelper.yCountHomescreenVertical); } if (PreferencesHelper.xCountHomescreenVertical != -1) { // set custom column count setObjectField(InvDevProf, "numColumns", PreferencesHelper.xCountHomescreenVertical); } } if (PreferencesHelper.iconSettingsSwitchHome) { // calculating custom sizes originalIconSize = (Float) getObjectField(InvDevProf, "iconSize"); float newIconSize = (float) (Math.ceil(originalIconSize * (PreferencesHelper.iconSize / 100.0))); float newIconTextSize = (float) (Math.ceil((Float) getObjectField(InvDevProf, "iconTextSize") * (PreferencesHelper.iconTextSize / 100.0))); // some validation if (newIconSize > 0.0) { setObjectField(InvDevProf, "iconSize", newIconSize); } else { log("Didn't change icon size! Value was " + newIconSize); } // some validation if (newIconTextSize > 0.0) { setObjectField(InvDevProf, "iconTextSize", newIconTextSize); } else { log("Didn't change icon text size! Value was " + newIconTextSize); } } if (PreferencesHelper.appdockSettingsSwitch) { float newHotseatIconSize = (float) (Math.ceil((Float) getObjectField(InvDevProf, "hotseatIconSize") * (PreferencesHelper.appdockIconSize / 100.0))); // some validation if (newHotseatIconSize > 0.0) { setObjectField(InvDevProf, "hotseatIconSize", newHotseatIconSize); } else { log("Didn't change hotseat icon size! Value was " + newHotseatIconSize); } int hotseatBarHeight = (Integer) getObjectField(param.thisObject, "iconSizePx") + 4 * (Integer) getObjectField(param.thisObject, "edgeMarginPx"); setIntField(param.thisObject, Fields.dpHotseatBarHeightPx, hotseatBarHeight); } if (PreferencesHelper.noAllAppsButton) { setIntField(InvDevProf, Fields.dpHotseatAllAppsRank, 50); } else { if (PreferencesHelper.homescreenAllAppsPosition != -1) { setIntField(InvDevProf, Fields.dpHotseatAllAppsRank, PreferencesHelper.homescreenAllAppsPosition - 1); } } if (PreferencesHelper.appDockCount != -1) { setIntField(InvDevProf, Fields.dpNumHotseatIcons, PreferencesHelper.appDockCount); } if (Common.APP_DRAWER_ICON_SIZE == -1) { if (PreferencesHelper.iconSettingsSwitchApps) { Common.APP_DRAWER_ICON_SIZE = (int) Math.round(getIntField(param.thisObject, Fields.dpAllAppsIconSize) * (PreferencesHelper.iconSizeAppDrawer / 100.0)); } else { Common.APP_DRAWER_ICON_SIZE = getIntField(param.thisObject, Fields.dpAllAppsIconSize); } } if (PreferencesHelper.iconSettingsSwitchApps) { setIntField(param.thisObject, Fields.dpAllAppsIconSize, Common.APP_DRAWER_ICON_SIZE); } } }