[Nexus S Themes and Apps] dreamsforgotten:
I'm editing this thread to now be a guide on how I was able port the QP from the i9000.

Here's how it was ported:

First I downloaded the i9000's (SGS) stock deodexed Systemui.apk and decompiled

Next I decompiled the SystemUI.apk from the Nexus S in apk manager 4.7 (4.9 gave me issues when attempting to recompile)

Once you decompile the SystemUI.apk from the i9000, navigate to out/smali/com/android/systemui/statusbar

You'll notice a folder in there called quickpanel. Open the same folder on the decompiled Nexus systemui.apk and copy the entire quickpanel folder to the Nexus. Now you have to edit all the xmls in the res folder, start with status bar expanded.xml in the res/layout. Then ids.xml, then strings.xml, then public.xml in your res/values folder. Basically your going to add in every value from the i9000 that starts with "quickpanel". The public is a doozy, you have to assign the new values their own unique hex value. You should really be familiar with the hex naming scheme in public before attempting this, it's easy to screw up but worse case scenario is it won't compile for you. The status_bar_expanded in the layout folder, you only want to add the top line to your file don't overwrite any of the xml files from the i9000, only merge the pieces of code that call the widget into display.

Next you have to move on to the smali code. Navigate to the decompiled folder res/values/ from both phones and open public.xml. After, navigate to /out/smali/com/android/systemui/statusbar/quickpanel/ from both phones, and open the autorotationsettingbutton.smali. What your going to be looking for first, is the hex codes that appear in public.xml.

.line 67
.local v2, rootView:Landroid/view/View;
const v5, 0x7f090023

.line 68
.local v0, icon:Landroid/widget/ImageView;
const v5, 0x7f090025

.line 82
return-void

.line 72
:pswitch_0
const v1, 0x7f020087

.line 73
const v4, 0x7f020085

.line 74
goto :goto_0

.line 76
:pswitch_1
const v1, 0x7f020086

.line 77
const v4, 0x7f020084

goto :goto_0

Each of these hex codes "0x7f0200xx" match up to a drawable in publix.xml. Start with the i9000 systemui.apk and see what picture it's pointing to by searching the number in the public.xml, then move over to the Nexus S systemui.apk and open the public (That you already modded and added the values in for the quickpanel items) and match to the name of the drawable in the i9000, to the name in public from Nexus, then copy the New hex code from the Nexus public to the autorotationsettingbutton.smali. This way your new smali file will be pointing to the correct drawable in the Nexus systemui.apk. Note all the way at the bottom of the smali file in both phones is 1 more hex value to change. Just scroll down to almost the bottom and look for another number that looks like the previous ones. Change that final hex and save your work. Now open all the other files ie bluetoothsettingsbutton gpssettingsbutton soundsettingsbutton, wifisettingsbutoon. Repeat the same steps for changing the hex values for picture display.

Now open the wifisettingsbutton.smali and we have to mod the code since our phones don't access the wifi the same.

.line 63
nop

:pswitch_data_0
.packed-switch 0x0
:pswitch_2
:pswitch_1
:pswitch_2
:pswitch_0
[B]:pswitch_1[/B]
.end packed-switch
.end method

In this code in wifisettingsbutton, the final line :pswitch_1 is added, it's not present in the original. You must adjust this value.

.line 123
iget-object v1, p0, Lcom/android/systemui/statusbar/quickpanel/WifiSettingButton;->mWifiManager:Landroid/net/wifi/WifiManager;

const/4 v2, 0x1

invoke-virtual {v1, v2}, Landroid/net/wifi/WifiManager;->setWifiEnabledDialog(Z)Z

goto :goto_0
.end method

.line 123
iget-object v1, p0, Lcom/android/systemui/statusbar/quickpanel/WifiSettingButton;->mWifiManager:Landroid/net/wifi/WifiManager;

const/4 v2, 0x1

invoke-virtual {v1, v2}, Landroid/net/wifi/WifiManager;->setWifiEnabled(Z)Z

goto :goto_0
.end method

In the above two codes, the first is the i9000 wifisettingsbutton, notice the line >setWifiEnabledDialogue(Z)Z and under it the >setWifiEnabled(Z)Z, you must edit out the dialogue to keep it from erroing on the Nexus.

Up to now you have the code in place for this all to work, but you don't have the code in place to actually display the widget. Back out of the /quickpanel/ folder in file explorer and you should be in the /statusbar/ folder. Look for the smali file statusbarservice.smali

Search for the line .method private makeStatusBarView(Landroid/content/Context;)V.

Mod the first line to look like this:

.locals 12
.parameter "context"

.prologue
const/4 v11, 0x0

const v10, 0x7f09000d

const/4 v9, 0x0

const/16 v8, 0x8

then your going to scroll down if your using notepad++ you'll look for line #776, you need to add in this line of code from the i9000

.line 371
const v6, 0x7f030006

invoke-static {p1, v6, v9}, Landroid/view/View;->inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View;

move-result-object v5

check-cast v5, Lcom/android/systemui/statusbar/quickpanel/QuickSettingsView;

.line 373
.local v5, qsv:Lcom/android/systemui/statusbar/quickpanel/QuickSettingsView;
iget-object v6, p0, Lcom/android/systemui/statusbar/StatusBarService;->mExpandedView:Lcom/android/systemui/statusbar/ExpandedView;

invoke-virtual {v6, v5, v11}, Lcom/android/systemui/statusbar/ExpandedView;->addView(Landroid/view/View;I)V

.line 386
return-void
.end method

search for the same code inside the statusbarservice.smali from the i9000 source and you'll notice some changes like the last line invoke-virtual{v6, v5, v11} we can't use the same values as the i9000 because there is more code in that file than we need at the moment in the Nexus, so I had to figure out what numbers were compatible to both the phones. Also take note of this line

.line 371

const v6, 0x7f030006

This is calling an XML file into view that controls how the quickpanel looks on your phone. The number 0x7f03006 may very it depends on when you added the quickpanel items into public.xml, what value you gave the item quickpanelsettings. Quick panel settings is an xml file that can be found in the res/layout/ of the i9000 source systemui.apk and must be transferred over to the Nexus S systemui.apk res/layout/ as well.

This is all a broad guide to get you started, if you need more assistance, don't PM me, post here so everyone can learn together.

Here are all the source files from the i9000 and the properly modded files of the Nexus Systemui.apk

QuickPanel.zip