[MOD][GUIDE][GB] WIFI & BT ON/OFF Switches on Settings ***HOT***

Search This thread

Sniper Killer

Senior Member
Dec 16, 2012
1,307
3,104
Tirana, Albania
Hey dudes!
Ace-I Team is back with a new guide.
One of the most advanced ICS Features now comes on Gingerbread! Admit it, Everyone has been attracted by this feature! That's why : THIS IS THE MOST WANTED GUIDE FOR GINGERBREAD DEVICES EVER!! :cowboy:


Wifi and bluetooth ON/OFF Switches on Settings!

Requirements :
-APK Multi Tool
-Notepad++
-Sources on the attachments
-High Smali & xml knowledge
-Brain
-Patience

Let's go!


PART I


1. Decompile Settings.apk

2. Extract the sources. Copy switch_holo_dark.xml from sources and paste it on drawable folder.

3. Copy the PNGs from the sources and paste them on drawable-mdpi folder.

4. Copy icon_checkbox_preference.xml from the sources and paste it on layout folder.

5. Go to res/values/styles.xml.
Paste this text on the end of the file before

Code:
<style name="Switch">
        <item name="android:checkboxStyle">@style/Widget.CompoundButton.CheckBox.Holo.Dark</item>
    </style>
    <style name="Widget.CompoundButton.CheckBox.Holo.Dark" parent="@android:style/Widget.CompoundButton.CheckBox">
        <item name="android:button">@drawable/switch_holo_dark</item>
    </style>

6. Go to res/values/public.xml
Paste this text on the end of he file before
Code:
<public type="layout" name="icon_checkbox_preference" id="0x7f03005a" />
</resources>

7. Go to xml/Settings.xml
Replace this :

4duk.png


With this :
Code:
<com.android.settings.IconCheckBoxPreference android:title="WIFI" android:key="toggle_wifi" settings:icon="@drawable/ic_settings_wireless" />
    <com.android.settings.IconCheckBoxPreference android:title="Bluetooth" android:key="toggle_bluetooth" settings:icon="@drawable/ic_settings_bluetooth2" />

After editing it will look like this :

8g0c.png


8. Recompile Settings.

PART II

1. Decompile Settings.apk again

2. Go to smali/com/android/settings

3. Copy icon_checkbox_preference.smali from the source on the that folder.

4. Open R$Styleable

- Find :
Code:
# static fields
.field public static final BatteryHistoryChart:[I

Below that paste :
Code:
.field public static final IconPreference:[I
.field public static final IconPreference_icon:I

- Find :
Code:
    const v1, 0x7f010001

    aput v1, v0, v2

Below that paste :
Code:
    sput-object v0, Lcom/android/settings/R$styleable;->IconPreference:[I

    .line 6450
    new-array v0, v3, [I

    const v1, 0x7f010001

    aput v1, v0, v2

After the edit it will look like this :
Code:
    const v1, 0x7f010001

    aput v1, v0, v2

    sput-object v0, Lcom/android/settings/R$styleable;->IconPreference:[I

    .line 6450
    new-array v0, v3, [I

    const v1, 0x7f010001

    aput v1, v0, v2

    sput-object v0, Lcom/android/settings/R$styleable;->IconPreferenceScreen:[I

5. Open Settings.smali

Below # instance fields paste this text :

Code:
.field private mBtEnabler:Lcom/android/settings/bluetooth/BluetoothEnabler;

.field private mWifiEnabler:Lcom/android/settings/wifi/WifiEnabler;

2 Lines Above # instance fields paste this text :

Code:
# static fields
.field private static final KEY_TOGGLE_BLUETOOTH:Ljava/lang/String; = "toggle_bluetooth"

.field private static final KEY_TOGGLE_WIFI:Ljava/lang/String; = "toggle_wifi"

After edition it will look like this :

Code:
# static fields
.field private static final KEY_TOGGLE_BLUETOOTH:Ljava/lang/String; = "toggle_bluetooth"

.field private static final KEY_TOGGLE_WIFI:Ljava/lang/String; = "toggle_wifi"


# instance fields

.field private mBtEnabler:Lcom/android/settings/bluetooth/BluetoothEnabler;

.field private mWifiEnabler:Lcom/android/settings/wifi/WifiEnabler;

.field private mIntentReceiver:Landroid/content/BroadcastReceiver
;

- Find :
Code:
invoke-virtual {p0, v4}, Lcom/android/settings/Settings;->addPreferencesFromResource(I)V

- Below that paste this text :
Code:
    const-string v0, "toggle_wifi"

    invoke-virtual {p0, v0}, Lcom/android/settings/Settings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

    move-result-object v0

    check-cast v0, Landroid/preference/CheckBoxPreference;

    new-instance v1, Lcom/android/settings/wifi/WifiEnabler;

    invoke-direct {v1, p0, v0}, Lcom/android/settings/wifi/WifiEnabler;->(Landroid/content/Context;Landroid/preference/CheckBoxPreference;)V

    iput-object v1, p0, Lcom/android/settings/Settings;->mWifiEnabler:Lcom/android/settings/wifi/WifiEnabler;

    const-string v0, "toggle_bluetooth"

    invoke-virtual {p0, v0}, Lcom/android/settings/Settings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

    move-result-object v0

    check-cast v0, Landroid/preference/CheckBoxPreference;

    new-instance v1, Lcom/android/settings/bluetooth/BluetoothEnabler;

    invoke-direct {v1, p0, v0}, Lcom/android/settings/bluetooth/BluetoothEnabler;->(Landroid/content/Context;Landroid/preference/CheckBoxPreference;)V

    iput-object v1, p0, Lcom/android/settings/Settings;->mBtEnabler:Lcom/android/settings/bluetooth/BluetoothEnabler;

- Find :
Code:
.method protected onPause()V

- Replace the whole method with this method :

Code:
.method protected onPause()V
    .locals 1

    invoke-super {p0}, Landroid/preference/PreferenceActivity;->onPause()V

    iget-object v0, p0, Lcom/android/settings/Settings;->mWifiEnabler:Lcom/android/settings/wifi/WifiEnabler;

    invoke-virtual {v0}, Lcom/android/settings/wifi/WifiEnabler;->pause()V

    iget-object v0, p0, Lcom/android/settings/Settings;->mBtEnabler:Lcom/android/settings/bluetooth/BluetoothEnabler;

    invoke-virtual {v0}, Lcom/android/settings/bluetooth/BluetoothEnabler;->pause()V

    iget-object v0, p0, Lcom/android/settings/Settings;->mIntentReceiver:Landroid/content/BroadcastReceiver;

    invoke-virtual {p0, v0}, Lcom/android/settings/Settings;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V

    .line 78
    return-void
.end method

- Find :
Code:
   .line 65
    invoke-super {p0}, Landroid/preference/PreferenceActivity;->onResume()V

- Below that paste this text :
Code:
    iget-object v1, p0, Lcom/android/settings/Settings;->mWifiEnabler:Lcom/android/settings/wifi/WifiEnabler;

    invoke-virtual {v1}, Lcom/android/settings/wifi/WifiEnabler;->resume()V

    iget-object v1, p0, Lcom/android/settings/Settings;->mBtEnabler:Lcom/android/settings/bluetooth/BluetoothEnabler;

    invoke-virtual {v1}, Lcom/android/settings/bluetooth/BluetoothEnabler;->resume()V

8. Follow Part III by iamareebjamal
 

Attachments

  • Unchanged.jpg
    Unchanged.jpg
    12.1 KB · Views: 1,908
Last edited:

iamareebjamal

Senior Member
Aug 7, 2012
3,703
5,127
27
Batcave
www.facebook.com
Part III : Adding switched and disabling signature check

Adding Buttons in Settings.apk by custom style and Disabling Signature Verification


If you were successful in accomplishing the above procedure. Be happy, but not too much because the key part is left, and that is - Adding those custom ICS Buttons in Settings by overriding the default GB tickview. Or else, you will get checkboxes instead of Switches. You don't wanna do that? Do you? ;)

Enough talking let's roll

Part III (a)

1. Open AndroidManifest.xml located in decompiled Settings.apk

2. Find this:

Code:
<activity android:label="@string/settings_label_launcher" android:name="Settings"

3. Modify it like this:

Code:
<activity android:theme="@style/Switch" android:label="@string/settings_label_launcher" android:name="Settings"

It means you have to add android:theme="@style/Switch" between <activity and android:label="@string/settings_label_launcher"

4. Save the file.

5. Now, as you have edited the AndroidManifest.xml . Android system won't accept your app and refuse to load it as its signature should be changed.

So, sign the recompile the apk and sign it

6. But again, there's one little problem. Android doesn't load system apps with modified signatures for stability of OS, so your app will disappear from app drawer and if you try to open it from any other source, it will say "App isn't installed"

So?

So, sign ALL system apps and framework apps with same key :(

...OR...

Follow the workaround in (b) part




You may have accomplished the above thing but still something needs to be done to complete the procedure. Believe me, it's the last thing :)
Android System doesn't accept the apks that are signed by default. So we, here, will render that option obsolete by editing some files.

Let's start


Part III (b)

1. Pull services.jar from /system/framework/

2. Extract it's classes.dex and decompile it via my ROM Tolls :p :cool:

3. Go to com/android/server/PackageManagerService.smali

4. Open it and search for

Code:
.method checkSignaturesLP([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I

5. Look below it, you should see something like this

Code:
    .prologue
    .line 1936

    if-nez p1, :cond_1

6. Add this below .line 1936

Code:
    const/4 v6, 0x0
    return v6

Finally, it should look like this:

Code:
.method checkSignaturesLP([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
    .locals 7
    .parameter "s1"
    .parameter "s2"

    .prologue
    .line 1936
    const/4 v6, 0x0

    return v6

    if-nez p1, :cond_1

7. Save the file and recompile classes.dex and then add it to services.jar

8. Now push services.jar and Settings.apk in their respective places and reboot the phone so that signature check changes are affected

9. Enjoy
 
Last edited:

Sniper Killer

Senior Member
Dec 16, 2012
1,307
3,104
Tirana, Albania
Sources

The source : http://www.mediafire.com/download.php?bvcj2fa8r1lv0h7

PNG source only :

- SGS3 : Adding ASAP
-JellyBean/Holo : Adding ASAP

F.A.Q

Q: SGS3 Switches are small even if the image is large enough?

Solution :

1. Go to Res/layout/icon_check box_preference.xml
2. Find android:layout_width="68.0 px"
3. Change it to "85.0 px"
4. Find android:layout_height="20.0px"
5. Change it to "40.0 px"

Actually changing those pixels will not resize the switch pngs. It will make height's and width's available space larger, therefore switches can be strechted easily on their original size.

Q: On Part II, when editing .method onPause()V, should I delete only the title "method on pause()V" or from method on pause to .end method?

Solution :

You must replace whole method. Delete the on pause()V method then place the code I have written on the same place.
 
Last edited:

iamareebjamal

Senior Member
Aug 7, 2012
3,703
5,127
27
Batcave
www.facebook.com
Screenshots:


SGS3

w8b0.png


Jelly Bean

rsdm.png











Credits:



Biggest biggest thanks and full credits to b16h22 for making this awesome mod and his open source heart to share it with us and guiding us through on how to accomplish it and giving us permissions to make this thread
loSconosciuto for Signature Verification Disabling Guide

Sniper Killer for starting this initiative
iamareebjamal for fixing the AndroidManifest to display the switches in Settings and applying idea of signature verification

Ace-i Team for bringing this to you
 
Last edited:

misha1996

Senior Member
Jan 9, 2013
383
172
Voskresensk
If we edit AndroidManifest.xml we must resign all apk of the rom.
If we not do it, app be work before first wipe. And it will work, if we install it from stokk app(settings for example) if we install it for clean system it will say "not installed"

Sent from my GT-S5830i using xda premium
 

misha1996

Senior Member
Jan 9, 2013
383
172
Voskresensk
Oh....im noob noob noobest in english:D:banghead:
And i understand only part A:D

Else....is it be work with stock settings.apk??

Sent from my GT-S5830i using xda premium

---------- Post added at 06:53 PM ---------- Previous post was at 06:50 PM ----------

Also....can try do update-script with textkey, which be resign all apk, what install:D

Sent from my GT-S5830i using xda premium
 

amogh420

Senior Member
If we edit AndroidManifest.xml we must resign all apk of the rom.
If we not do it, app be work before first wipe. And it will work, if we install it from stokk app(settings for example) if we install it for clean system it will say "not installed"

Sent from my GT-S5830i using xda premium

As @iamareebjamal has already mentioned,

iamareebjamal said:
Android System doesn't accept the apks that are signed by default. So we, here, will render that option obsolete by editing some files.

I'd suggest you to read Part III (b) of the guide.

Hope you got your answers. :)
 
  • Like
Reactions: iamareebjamal

Top Liked Posts

  • There are no posts matching your filters.
  • 41
    Hey dudes!
    Ace-I Team is back with a new guide.
    One of the most advanced ICS Features now comes on Gingerbread! Admit it, Everyone has been attracted by this feature! That's why : THIS IS THE MOST WANTED GUIDE FOR GINGERBREAD DEVICES EVER!! :cowboy:


    Wifi and bluetooth ON/OFF Switches on Settings!

    Requirements :
    -APK Multi Tool
    -Notepad++
    -Sources on the attachments
    -High Smali & xml knowledge
    -Brain
    -Patience

    Let's go!


    PART I


    1. Decompile Settings.apk

    2. Extract the sources. Copy switch_holo_dark.xml from sources and paste it on drawable folder.

    3. Copy the PNGs from the sources and paste them on drawable-mdpi folder.

    4. Copy icon_checkbox_preference.xml from the sources and paste it on layout folder.

    5. Go to res/values/styles.xml.
    Paste this text on the end of the file before

    Code:
    <style name="Switch">
            <item name="android:checkboxStyle">@style/Widget.CompoundButton.CheckBox.Holo.Dark</item>
        </style>
        <style name="Widget.CompoundButton.CheckBox.Holo.Dark" parent="@android:style/Widget.CompoundButton.CheckBox">
            <item name="android:button">@drawable/switch_holo_dark</item>
        </style>

    6. Go to res/values/public.xml
    Paste this text on the end of he file before
    Code:
    <public type="layout" name="icon_checkbox_preference" id="0x7f03005a" />
    </resources>

    7. Go to xml/Settings.xml
    Replace this :

    4duk.png


    With this :
    Code:
    <com.android.settings.IconCheckBoxPreference android:title="WIFI" android:key="toggle_wifi" settings:icon="@drawable/ic_settings_wireless" />
        <com.android.settings.IconCheckBoxPreference android:title="Bluetooth" android:key="toggle_bluetooth" settings:icon="@drawable/ic_settings_bluetooth2" />

    After editing it will look like this :

    8g0c.png


    8. Recompile Settings.

    PART II

    1. Decompile Settings.apk again

    2. Go to smali/com/android/settings

    3. Copy icon_checkbox_preference.smali from the source on the that folder.

    4. Open R$Styleable

    - Find :
    Code:
    # static fields
    .field public static final BatteryHistoryChart:[I

    Below that paste :
    Code:
    .field public static final IconPreference:[I
    .field public static final IconPreference_icon:I

    - Find :
    Code:
        const v1, 0x7f010001
    
        aput v1, v0, v2

    Below that paste :
    Code:
        sput-object v0, Lcom/android/settings/R$styleable;->IconPreference:[I
    
        .line 6450
        new-array v0, v3, [I
    
        const v1, 0x7f010001
    
        aput v1, v0, v2

    After the edit it will look like this :
    Code:
        const v1, 0x7f010001
    
        aput v1, v0, v2
    
        sput-object v0, Lcom/android/settings/R$styleable;->IconPreference:[I
    
        .line 6450
        new-array v0, v3, [I
    
        const v1, 0x7f010001
    
        aput v1, v0, v2
    
        sput-object v0, Lcom/android/settings/R$styleable;->IconPreferenceScreen:[I

    5. Open Settings.smali

    Below # instance fields paste this text :

    Code:
    .field private mBtEnabler:Lcom/android/settings/bluetooth/BluetoothEnabler;
    
    .field private mWifiEnabler:Lcom/android/settings/wifi/WifiEnabler;

    2 Lines Above # instance fields paste this text :

    Code:
    # static fields
    .field private static final KEY_TOGGLE_BLUETOOTH:Ljava/lang/String; = "toggle_bluetooth"
    
    .field private static final KEY_TOGGLE_WIFI:Ljava/lang/String; = "toggle_wifi"

    After edition it will look like this :

    Code:
    # static fields
    .field private static final KEY_TOGGLE_BLUETOOTH:Ljava/lang/String; = "toggle_bluetooth"
    
    .field private static final KEY_TOGGLE_WIFI:Ljava/lang/String; = "toggle_wifi"
    
    
    # instance fields
    
    .field private mBtEnabler:Lcom/android/settings/bluetooth/BluetoothEnabler;
    
    .field private mWifiEnabler:Lcom/android/settings/wifi/WifiEnabler;
    
    .field private mIntentReceiver:Landroid/content/BroadcastReceiver
    ;

    - Find :
    Code:
    invoke-virtual {p0, v4}, Lcom/android/settings/Settings;->addPreferencesFromResource(I)V

    - Below that paste this text :
    Code:
        const-string v0, "toggle_wifi"
    
        invoke-virtual {p0, v0}, Lcom/android/settings/Settings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
    
        move-result-object v0
    
        check-cast v0, Landroid/preference/CheckBoxPreference;
    
        new-instance v1, Lcom/android/settings/wifi/WifiEnabler;
    
        invoke-direct {v1, p0, v0}, Lcom/android/settings/wifi/WifiEnabler;->(Landroid/content/Context;Landroid/preference/CheckBoxPreference;)V
    
        iput-object v1, p0, Lcom/android/settings/Settings;->mWifiEnabler:Lcom/android/settings/wifi/WifiEnabler;
    
        const-string v0, "toggle_bluetooth"
    
        invoke-virtual {p0, v0}, Lcom/android/settings/Settings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
    
        move-result-object v0
    
        check-cast v0, Landroid/preference/CheckBoxPreference;
    
        new-instance v1, Lcom/android/settings/bluetooth/BluetoothEnabler;
    
        invoke-direct {v1, p0, v0}, Lcom/android/settings/bluetooth/BluetoothEnabler;->(Landroid/content/Context;Landroid/preference/CheckBoxPreference;)V
    
        iput-object v1, p0, Lcom/android/settings/Settings;->mBtEnabler:Lcom/android/settings/bluetooth/BluetoothEnabler;

    - Find :
    Code:
    .method protected onPause()V

    - Replace the whole method with this method :

    Code:
    .method protected onPause()V
        .locals 1
    
        invoke-super {p0}, Landroid/preference/PreferenceActivity;->onPause()V
    
        iget-object v0, p0, Lcom/android/settings/Settings;->mWifiEnabler:Lcom/android/settings/wifi/WifiEnabler;
    
        invoke-virtual {v0}, Lcom/android/settings/wifi/WifiEnabler;->pause()V
    
        iget-object v0, p0, Lcom/android/settings/Settings;->mBtEnabler:Lcom/android/settings/bluetooth/BluetoothEnabler;
    
        invoke-virtual {v0}, Lcom/android/settings/bluetooth/BluetoothEnabler;->pause()V
    
        iget-object v0, p0, Lcom/android/settings/Settings;->mIntentReceiver:Landroid/content/BroadcastReceiver;
    
        invoke-virtual {p0, v0}, Lcom/android/settings/Settings;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V
    
        .line 78
        return-void
    .end method

    - Find :
    Code:
       .line 65
        invoke-super {p0}, Landroid/preference/PreferenceActivity;->onResume()V

    - Below that paste this text :
    Code:
        iget-object v1, p0, Lcom/android/settings/Settings;->mWifiEnabler:Lcom/android/settings/wifi/WifiEnabler;
    
        invoke-virtual {v1}, Lcom/android/settings/wifi/WifiEnabler;->resume()V
    
        iget-object v1, p0, Lcom/android/settings/Settings;->mBtEnabler:Lcom/android/settings/bluetooth/BluetoothEnabler;
    
        invoke-virtual {v1}, Lcom/android/settings/bluetooth/BluetoothEnabler;->resume()V

    8. Follow Part III by iamareebjamal
    30
    Part III : Adding switched and disabling signature check

    Adding Buttons in Settings.apk by custom style and Disabling Signature Verification


    If you were successful in accomplishing the above procedure. Be happy, but not too much because the key part is left, and that is - Adding those custom ICS Buttons in Settings by overriding the default GB tickview. Or else, you will get checkboxes instead of Switches. You don't wanna do that? Do you? ;)

    Enough talking let's roll

    Part III (a)

    1. Open AndroidManifest.xml located in decompiled Settings.apk

    2. Find this:

    Code:
    <activity android:label="@string/settings_label_launcher" android:name="Settings"

    3. Modify it like this:

    Code:
    <activity android:theme="@style/Switch" android:label="@string/settings_label_launcher" android:name="Settings"

    It means you have to add android:theme="@style/Switch" between <activity and android:label="@string/settings_label_launcher"

    4. Save the file.

    5. Now, as you have edited the AndroidManifest.xml . Android system won't accept your app and refuse to load it as its signature should be changed.

    So, sign the recompile the apk and sign it

    6. But again, there's one little problem. Android doesn't load system apps with modified signatures for stability of OS, so your app will disappear from app drawer and if you try to open it from any other source, it will say "App isn't installed"

    So?

    So, sign ALL system apps and framework apps with same key :(

    ...OR...

    Follow the workaround in (b) part




    You may have accomplished the above thing but still something needs to be done to complete the procedure. Believe me, it's the last thing :)
    Android System doesn't accept the apks that are signed by default. So we, here, will render that option obsolete by editing some files.

    Let's start


    Part III (b)

    1. Pull services.jar from /system/framework/

    2. Extract it's classes.dex and decompile it via my ROM Tolls :p :cool:

    3. Go to com/android/server/PackageManagerService.smali

    4. Open it and search for

    Code:
    .method checkSignaturesLP([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I

    5. Look below it, you should see something like this

    Code:
        .prologue
        .line 1936
    
        if-nez p1, :cond_1

    6. Add this below .line 1936

    Code:
        const/4 v6, 0x0
        return v6

    Finally, it should look like this:

    Code:
    .method checkSignaturesLP([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
        .locals 7
        .parameter "s1"
        .parameter "s2"
    
        .prologue
        .line 1936
        const/4 v6, 0x0
    
        return v6
    
        if-nez p1, :cond_1

    7. Save the file and recompile classes.dex and then add it to services.jar

    8. Now push services.jar and Settings.apk in their respective places and reboot the phone so that signature check changes are affected

    9. Enjoy
    18
    Screenshots:


    SGS3

    w8b0.png


    Jelly Bean

    rsdm.png











    Credits:



    Biggest biggest thanks and full credits to b16h22 for making this awesome mod and his open source heart to share it with us and guiding us through on how to accomplish it and giving us permissions to make this thread
    loSconosciuto for Signature Verification Disabling Guide

    Sniper Killer for starting this initiative
    iamareebjamal for fixing the AndroidManifest to display the switches in Settings and applying idea of signature verification

    Ace-i Team for bringing this to you
    17
    Sources

    The source : http://www.mediafire.com/download.php?bvcj2fa8r1lv0h7

    PNG source only :

    - SGS3 : Adding ASAP
    -JellyBean/Holo : Adding ASAP

    F.A.Q

    Q: SGS3 Switches are small even if the image is large enough?

    Solution :

    1. Go to Res/layout/icon_check box_preference.xml
    2. Find android:layout_width="68.0 px"
    3. Change it to "85.0 px"
    4. Find android:layout_height="20.0px"
    5. Change it to "40.0 px"

    Actually changing those pixels will not resize the switch pngs. It will make height's and width's available space larger, therefore switches can be strechted easily on their original size.

    Q: On Part II, when editing .method onPause()V, should I delete only the title "method on pause()V" or from method on pause to .end method?

    Solution :

    You must replace whole method. Delete the on pause()V method then place the code I have written on the same place.
    7
    More UI Changes for Ace-i... Thanks @Sniper Killer :good:
    .....
    Give a screenshot of those Wifi & BT ON/OFF Switches on Settings in the OP... :fingers-crossed:

    Y u only Thank him :p

    Wait till the guide is complete