package hello.dcsms.omzen;
import android.content.res.XResources;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuffXfermode;
import android.view.ViewGroup;
import android.view.Window;
import android.view.ViewGroup.LayoutParams;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import com.android.systemui.statusbar.phone.AsusQuickSettings;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_InitPackageResources.InitPackageResourcesParam;
import de.robv.android.xposed.callbacks.XC_LayoutInflated;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
public class ModStatusbarNotif {
private static String[] TOMBOLTIGA = { "asus_ep_btn_edit_hl",
"asus_ep_btn_edit_n", "asus_ep_btn_list_hl", "asus_ep_btn_list_n",
"asus_ep_btn_quicksetting_hl", "asus_ep_btn_quicksetting_n",
"asus_ep_btn_setting_hl", "asus_ep_btn_setting_n" };
private static String[] TOGGLE_ICON = { "asus_ep_statusicon_always_off",
"asus_ep_statusicon_always_on",
"asus_ep_statusicon_audio_wizard_on",
"asus_ep_statusicon_autosync_off",
"asus_ep_statusicon_autosync_on",
"asus_ep_statusicon_auto_rotate_off",
"asus_ep_statusicon_auto_rotate_on",
"asus_ep_statusicon_bluetooth_off",
"asus_ep_statusicon_bluetooth_on",
"asus_ep_statusicon_calculator_on", "asus_ep_statusicon_camera_on",
"asus_ep_statusicon_clean", "asus_ep_statusicon_data_off",
"asus_ep_statusicon_data_on", "asus_ep_statusicon_dictionary_off",
"asus_ep_statusicon_dictionary_on",
"asus_ep_statusicon_flashlight_off",
"asus_ep_statusicon_flashlight_on",
"asus_ep_statusicon_flightmode_off",
"asus_ep_statusicon_flightmode_on",
"asus_ep_statusicon_fmradio_on", "asus_ep_statusicon_gps_off",
"asus_ep_statusicon_gps_on",
"asus_ep_statusicon_miracast_setting_off",
"asus_ep_statusicon_miracast_setting_on",
"asus_ep_statusicon_nfc_off", "asus_ep_statusicon_nfc_on",
"asus_ep_statusicon_pavingnew_off",
"asus_ep_statusicon_pavingnew_on",
"asus_ep_statusicon_quickmemo_on",
"asus_ep_statusicon_reading_off", "asus_ep_statusicon_reading_on",
"asus_ep_statusicon_silent", "asus_ep_statusicon_silent_off",
"asus_ep_statusicon_sim1_off", "asus_ep_statusicon_sim1_on",
"asus_ep_statusicon_sim2_off", "asus_ep_statusicon_sim2_on",
"asus_ep_statusicon_sound", "asus_ep_statusicon_vibrate",
"asus_ep_statusicon_voice_recorder_on",
"asus_ep_statusicon_wifisharing_off",
"asus_ep_statusicon_wifisharing_on", "asus_ep_statusicon_wifi_off",
"asus_ep_statusicon_wifi_on", "battery_low_battery" };
private static String[] TOGLEBUTTON = { "asus_phone_control_autorotate_bg",
"asus_phone_control_autosync_bg",
"asus_phone_control_bluetooth_bg",
"asus_phone_control_flightmode_bg", "asus_phone_control_gps_bg",
"asus_phone_control_miracast_bg",
"asus_phone_control_mobiledata_bg",
"asus_phone_control_powersaving2_bg",
"asus_phone_control_silent_bg", "asus_phone_control_wifi_bg",
"asus_phone_control_wifisharing_bg", "vibrate", "mute", "sound",
"silent", "asus_phone_quickbox_audio",
"asus_phone_quickbox_calculator",
"asus_phone_quickbox_clean_memory_green",
"asus_phone_quickbox_clean_memory_red",
"asus_phone_quickbox_clean_memory_yellow",
"asus_phone_quickbox_soundrecord" };
private static String[] TOGLEXMLBUTTON = {
"asus_phone_control_onoff_autorotate",
"asus_phone_control_onoff_autosync",
"asus_phone_control_onoff_bluetooth",
"asus_phone_control_onoff_flightmode",
"asus_phone_control_onoff_gps",
"asus_phone_control_onoff_miracast",
"asus_phone_control_onoff_mobiledata",
"asus_phone_control_onoff_powersaving2",
"asus_phone_control_onoff_silent",
"asus_phone_control_onoff_wifi",
"asus_phone_control_onoff_wifisharing",
"asus_phone_control_onoff_vibrate",
"asus_phone_control_onoff_mute",
"asus_phone_control_onoff_volume",
"asus_phone_control_onoff_silent",
// tambahan
"asus_phone_quickbox_audio", "asus_phone_quickbox_calculator",
"asus_phone_quickbox_clean_memory_green",
"asus_phone_quickbox_clean_memory_red",
"asus_phone_quickbox_clean_memory_yellow",
"asus_phone_quickbox_soundrecord" };
//
static InitPackageResourcesParam rParam;
public static void init(final InitPackageResourcesParam resparam) {
try {
resparam.res.hookLayout("com.android.systemui", "layout",
"status_bar_quick_settings_brightness_phone",
new XC_LayoutInflated() {
@Override
public void handleLayoutInflated(
LayoutInflatedParam liparam) throws Throwable {
SeekBar sb = (SeekBar) liparam.view
.findViewById(liparam.res.getIdentifier(
"slider", "id",
"com.android.systemui"));
sb.setLayoutParams(new LayoutParams(15,
LayoutParams.MATCH_PARENT));
LayoutParams l = sb.getLayoutParams();
int w = l.width;
S.log_i(w);
}
});
rParam = resparam;
gantiwarnatogel(resparam);
HookNotifikasiKolor(resparam);
resparam.res.setReplacement("com.android.systemui", "drawable",
"asus_phone_quickbox_text_color",
DrawUtils.getColorStateList());
resparam.res.setReplacement("com.android.systemui", "drawable",
"asus_phone_control_onoff_text_color",
DrawUtils.getColorStateList());
resparam.res.setReplacement("com.android.systemui", "drawable",
"asus_phone_control_onoff_text_color2",
DrawUtils.getColorStateList());
resparam.res.setReplacement("com.android.systemui", "drawable",
"asus_phone_memory_text_color_green",
DrawUtils.getColorStateList());
resparam.res.setReplacement("com.android.systemui", "drawable",
"asus_phone_memory_text_color_red",
DrawUtils.getColorStateList());
resparam.res.setReplacement("com.android.systemui", "drawable",
"asus_phone_memory_text_color_yellow",
DrawUtils.getColorStateList());
for (int i = 0; i < TOGLEXMLBUTTON.length; i++) {
resparam.res.setReplacement("com.android.systemui", "drawable",
TOGLEXMLBUTTON[i],
DrawUtils.getToggleDrawableState(TOGLEBUTTON[i]));
}
for (int i = 0; i < TOMBOLTIGA.length; i++) {
resparam.res.setReplacement("com.android.systemui", "drawable",
TOMBOLTIGA[i], DrawUtils.getIcon(TOMBOLTIGA[i]));
}
resparam.res.setReplacement("com.android.systemui", "drawable",
"ic_notify_clear", DrawUtils.getClearButton(resparam));
XSharedPreferences pref = new XSharedPreferences(
"hello.dcsms.omzen");
pref.makeWorldReadable();
boolean blur = pref.getBoolean("BLUR_NOTIFIKASI", true);
if (blur) {
resparam.res.setReplacement("com.android.systemui", "drawable",
"system_bar_background", DrawUtils.Trans());
resparam.res.setReplacement("com.android.systemui", "drawable",
"panel_background", DrawUtils.Trans());
resparam.res
.setReplacement("com.android.systemui", "drawable",
"asus_notification_panel_background",
DrawUtils.Trans());
resparam.res.setReplacement("com.android.systemui", "drawable",
"asus_notification_header_background",
DrawUtils.Trans());
XResources.setSystemWideReplacement("android", "drawable",
"notification_bg", DrawUtils.Trans());
XResources.setSystemWideReplacement("android", "drawable",
"notification_bg_low", DrawUtils.Trans());
resparam.res.setReplacement("com.android.systemui", "drawable",
"asus_handle_bar_background", DrawUtils.Trans());
resparam.res.setReplacement("com.android.systemui", "drawable",
"status_bar_close", DrawUtils.Trans());
} else {
resparam.res.setReplacement("com.android.systemui", "drawable",
"system_bar_background", DrawUtils.getDrawableNine(
resparam, "statusbar_background.9"));
resparam.res.setReplacement("com.android.systemui", "drawable",
"panel_background",
DrawUtils.getDrawableNine(resparam, "panel_bg.9"));
resparam.res
.setReplacement("com.android.systemui", "drawable",
"asus_notification_panel_background",
DrawUtils.getDrawableNine(resparam,
"asus_notification_panel_background.9"));
resparam.res.setReplacement("com.android.systemui", "drawable",
"asus_notification_header_background",
DrawUtils.getDrawableNine(resparam,
"asus_notification_header_background.9"));
XResources.setSystemWideReplacement("android", "drawable",
"notification_bg", DrawUtils.getDrawableNine(resparam,
"notification_bg.9"));
XResources.setSystemWideReplacement("android", "drawable",
"notification_bg_low", DrawUtils.getDrawableNine(
resparam, "notification_bg_low.9"));
resparam.res
.setReplacement("com.android.systemui", "drawable",
"asus_handle_bar_background", DrawUtils
.getDrawableNine(resparam,
"panel_handle_bg.9"));
resparam.res.setReplacement("com.android.systemui", "drawable",
"status_bar_close",
DrawUtils.getIcon("asus_ep_pulldown_bar"));
}
// seekbar
resparam.res
.setReplacement("com.android.systemui", "drawable",
"asus_brightness_bg", DrawUtils.getDrawableNine(
resparam, "asus_brightness_bg.9"));
resparam.res.setReplacement("com.android.systemui", "drawable",
"asus_quicksetting_brightness_slider",
DrawUtils.getSeekbarDrawable(resparam));
UbahWarnaNOTIF();
} catch (Exception e) {
S.log(e.getMessage());
}
}
static TextView notif_clock, notif_date,CarrierText,WifiText;
static FrameLayout tognotif_parent;
static XSharedPreferences pref;
private static void HookNotifikasiKolor(InitPackageResourcesParam resparam) {
resparam.res.hookLayout("com.android.systemui", "layout",
"asus_status_bar_expanded", new XC_LayoutInflated() {
@Override
public void handleLayoutInflated(LayoutInflatedParam liparam)
throws Throwable {
CarrierText = (TextView) liparam.view.findViewById(liparam.res
.getIdentifier("asus_sim_carrier_label", "id",
"com.android.systemui"));
WifiText = (TextView) liparam.view.findViewById(liparam.res
.getIdentifier("asus_wifi_label", "id",
"com.android.systemui"));
}
});
resparam.res.hookLayout("com.android.systemui", "layout",
"asus_status_bar_expanded_header", new XC_LayoutInflated() {
@Override
public void handleLayoutInflated(LayoutInflatedParam liparam)
throws Throwable {
RelativeLayout rl = (RelativeLayout) liparam.view.findViewById(liparam.res
.getIdentifier("header", "id",
"com.android.systemui"));
notif_clock = (TextView) rl.getChildAt(0);
notif_date = (TextView) rl.getChildAt(1);
tognotif_parent = (FrameLayout) rl.getChildAt(8);
notif_clock.setTextColor(Color.WHITE);
notif_date.setTextColor(Color.WHITE);
((TextView) tognotif_parent.getChildAt(0))
.setTextColor(Color.WHITE);
((TextView) tognotif_parent.getChildAt(1))
.setTextColor(Color.WHITE);
}
});
}
public static void UbahWarnaNOTIF() {
pref = new XSharedPreferences("hello.dcsms.omzen");
pref.makeWorldReadable();
int jam = pref.getInt("WARNA_JAM_NOTIF", Color.WHITE);
int qs = pref.getInt("WARNA_QS_NOTIF", Color.WHITE);
int carrier = pref.getInt("WARNA_CARRIERNWIFI", Color.WHITE);
if (notif_clock != null && notif_date != null
&& tognotif_parent != null) {
notif_clock.setTextColor(jam);
notif_date.setTextColor(jam);
((TextView) tognotif_parent.getChildAt(0)).setTextColor(qs);
((TextView) tognotif_parent.getChildAt(1)).setTextColor(qs);
}
if(CarrierText!=null)
CarrierText.setTextColor(carrier);
if(WifiText!=null)
WifiText.setTextColor(carrier);
}
private static void gantiwarnatogel(InitPackageResourcesParam resparam) {
if (resparam == null)
return;
}
public static final String USERICON = "com.android.systemui.statusbar.policy.QuickSettingsUserInfoController";
static TextView mText;
private static ViewGroup mQuickboxContainerView;
private static ViewGroup mQuicksettingContainerView;
public static void initPaket(final LoadPackageParam lpparam) {
XposedBridge.hookAllConstructors(AsusQuickSettings.class,
new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param)
throws Throwable {
super.afterHookedMethod(param);
mQuickboxContainerView = (ViewGroup) XposedHelpers.getObjectField(
param.thisObject, "mQuickboxContainerView");
mQuicksettingContainerView = (ViewGroup) XposedHelpers.getObjectField(
param.thisObject, "mQuicksettingContainerView");
}
});
if(mQuicksettingContainerView!=null){
S.log(Integer.toString(mQuickboxContainerView.getChildCount()));
}
if(mQuicksettingContainerView!=null){
S.log(Integer.toString(mQuicksettingContainerView.getChildCount()));
}
final Class<?> userinfo = XposedHelpers.findClass(USERICON,
lpparam.classLoader);
XposedHelpers.findAndHookMethod(XposedHelpers.findClass(
"com.android.systemui.statusbar.phone.AsusControllerCheckbox",
lpparam.classLoader), "onMeasure", int.class, int.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param)
throws Throwable {
super.beforeHookedMethod(param);
}
@Override
protected void afterHookedMethod(MethodHookParam param)
throws Throwable {
super.afterHookedMethod(param);
int x = (Integer) param.args[1];
S.log("ONMESUARE " + Integer.toString(x));
}
});
XposedHelpers.findAndHookMethod(userinfo, "getRoundedCornerBitmap",
Bitmap.class, float.class, int.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param)
throws Throwable {
if (param.args[0] == null)
return;
Bitmap bx = (Bitmap) param.args[0];//
Bitmap b = Bitmap.createScaledBitmap(bx, 90, 90, true);
Bitmap ok = Bitmap.createBitmap(90, 90,
Config.ARGB_8888);
Bitmap mask = sc(BitmapFactory.decodeFile(DrawUtils
.getIconPath("toggle_btn_bg_mask")));
Bitmap top = sc(BitmapFactory.decodeFile(DrawUtils
.getIconPath("toggle_btn_bg_top")));
Canvas c = new Canvas(ok);
Paint p = new Paint();
c.drawBitmap(mask, 0, 0, p);
p.setXfermode(new PorterDuffXfermode(
android.graphics.PorterDuff.Mode.SRC_IN));
c.drawBitmap(b, 0, 0, p);
p.setXfermode(null);
c.drawBitmap(top, 0, 0, p);
param.setResult(ok);
}
});
}
private static Bitmap sc(Bitmap src) {
return Bitmap.createScaledBitmap(src, 90, 90, true);
}
}