[Windows Mobile Themes] Vostradamus:
I don't know if there's any tutorial around somewhere, so I'll try writing some simple explanation, please bear with me 'cause I can be quite messy when trying to explain something (not to mention my english, which is faaaaaar from being perfect) :p

To add a newly designed widget to your shell you need to:

- Add the widget definition inside qa_layouts.dat

- Create the widget dat file to be placed in mobile shell folder

- Add the registry keys needed for the shell to recognize the new widget

Let's try to see the various steps in detail

qa_layouts.dat is nothing but a zip file with the password b0fm18zq renamed to .dat

Inside it you will find many files, and some of them contains the widgets definition. The main one is "widgets.xml". Try taking a look at it and see if you get how it works, it's not too hard and I'm positive that you can do it :)

Once you get how the definitions works, you can try writing one for the new widget you want to create. You can add it to the original widgets.xml file or you can even create a new xml file only for your widget(s) and add it to qa_layouts.dat (don't forget the password!)

Second step, you need to create the dat file for your widget.

If you got how the xml definition works, by now you should now that every widget (well, almost all of them at least) rely on a dat file to set what it looks like and inside which you will also store its graphical parts.

The widgets dat file are, once again, zip files (always with the same password) renamed as .dat.

Try taking a look at some of the original ones and see if you get how they works (again, it's not too hard, I think you can do it) :)

As you will see, every graphical part is made of two bitmaps: one with the image you want to use, the other with a mask of transparency. The mask works in a quite simple way: the darker the color, the more transparent that part. White is completely opaque, black is completely transparent. But just take a look at it, I'm sure you'll get what I mean much better than reading it on here :)

Once the xml is ready and added to qa_layouts.dat, and the dat file is ready and placed in mobile shell folder, the only thing you still need to do is adding the registry keys for your new widget.

(I'm gonna explain this part with the help of some examples, mainly because you said you're quite accustomed to photoshop and xml but you didn't mention anything about registry editing)

The example below is about one of my birthday/anniversary widgets

[HKEY_LOCAL_MACHINE\Software\Spb Software House\Shared\Spb Menu\WidgetPackages\Spb.WidgetsZioGian\HolidayWidget.Line]

"Class" = "HolidayWidget.Line:WidgetsZioGian"

"Index" = dword:00000100

"PluginClass" = "Spb.LSP.HolidayWidget"

"Desc" = "Line"

Let's see it a piece at a time:

[HKEY_LOCAL_MACHINE\Software\Spb Software House\Shared\Spb Menu\WidgetPackages\Spb.WidgetsZioGian\HolidayWidget.Line]

This is the registry key where to add the new values, of course the key itself is new.

"Spb.WidgetsZioGian", as you can imagine, is not a default mobile shell registry key, I created it to store all the stuff related to my widgets, so to keep everything "clean"

HolidayWidge.Line is the actual key for the widget we're talking about

Inside the key for the widget, there have to be several values, let's see them one by one:

"Class" = "HolidayWidget.Line:WidgetsZioGian"

This one describes two things:

1) the name of the widget definition inside the xml file (holidayWidget.line)

2) the name without extension of the xml file (inside qa_layouts) containing the widget infos (WidgetsZioGian)

"Index" = dword:00000100

This value is used to determine the order in which the widgets name will appear inside the change skin menu, lower values first.

"PluginClass" = "Spb.LSP.HolidayWidget"

This value determines which plugin class will make the widget work, i.e. what kind of widget it is (digital clock, analog clock, battery, weather and so on).

To know exactly what you have to write in this one, just take a look in the registry at the default mobile shell widgets and use the same ones according to the widget you're creating.

This value also determines to which widget's change skin menu the new widget will be added, as the skins are grouped according to the pluginclass.

"Desc" = "Line"

This last one contains the string you will see in the change skin menu.

I hope I haven't been too messy with this short explanation... try playing around with it (don't forget to backup EVERYTHING you're going to modify, just in case.... or even better install an emulator on your pc and play with it instead of your device)

I still can make the widget you're asking, if you want, but seen that you would like to give it a shot on your own I'll wait and see what you can accomplish before doing anything (you never know, maybe this forum will gain a new developer soon!) ;)