[Windows Mobile Software Development] Chainfire:
Current implementation thoughts (June 8, '09)

Right! This is pretty half-assed attempt at structuring my thoughts.

First, see this image. I know, it ain't much to look at, what you see in this screenshot is a number of resources from tsowen and co's taskbar v2.1 lite set out against a (smaller) number of original files from the CDMA Rhodium ROM.

There are several issues worth pondering.

Full pack vs. Category pack

How to divide the icons from eachother. Do we use full "tsowen's Taskbar X" packs and then customize from there, or do we really divide into categories (better, but more work for devs?). For example "johnny's ActiveSync icon pack" and "harry's GSM icons". I would say that if the latter will be done, so should the former (but not the other way around). If we do make 'category packs' and selectors, it will take a lot of work to create these. We would need to very finely define which icon is what in which file.

If we do category, there should be careful though and research about which category to make and which icons belong to them.

Duplicates and various WM versions

Going through a lot of resource DLLs and the likes, and noticing (among others) tsowen's post about WM6.5 and various posts about different OEM packages, it seems there are many duplicates and overrides.

For example, on many HTC WM6 we have

phcanoverbmp

, which contains a lot of HTC customized images which override the

shellres

images. However in WM6.5 it seems shellres is used as primary again.

How can we best solve this? From what I have looked at myself, one could directly translate between various

shellres

icon id's and

phcanoverbmp

icon id's (this is true for multiple packages/resource DLLs IMHO). As example (these are fictional), shellres:1-10 may correspond to phcanoverbmp:41-50. So I think we should 'alias' them. If shellres:1 is changed, than we also change phcanoverbmp:41 (of course, assuming this file exists). I think that we should use

shellres

as base in this case.

Then ofcourse there is also direct file alias. Some ROMs have

shellres

, others have

shellres.dll.<language-id>.mui

. These should be defined as 'alias' also, and the application should look for whatever is actually on the device and patch that.

Now again is the question, how exactly do we do this? Would it be better to create a different 'name' for every icon? For example, wifi_on_no_network=shellres:20=phcanoverbmp:97, or could we better do phcanoverbmp:97=shellres:20 ? I personally think the former, but it will be more research and more work (but hopefully other people will help).

Some of these 'alias' will also include copying BMP or PNG files (like bluetooth icons).

Battery

Another point of thought is battery. Different packs have a different number of battery icons and require different drivers to be compatible. How do we solve this?

Saving and distributing

However we do the above, IMHO there should be a function to save your creation based on other people's 'packs' and/or your own custom icons so these can be posted on XDA (or geeks, or wherever) and then opened by Taskbar Customizer again so it will modify your device with this pack. The 'save' would then include the required data and icons and the 'load' would retrieve relevant files from your device, patch them, and put them back.

"Copyrights"

As obviously most of the customizers will release their packs to the world, royalties and such would be nonsense. However, I do think every pack should have a 'copyright' notice, and when you 'apply' your combinations of packs (or 'load' this from a pack somebody distributed) you should see a notice containing the names (and optionally donation links?) of all the people who contributed images and the final 'author' of the pack. If all the original packs for Taskbar Customizer just contain a simply one-liner about who made the icons, this can be automated.

Backup/restore

It goes without saying that any file and registry changes by the app should be backed up and able to be restored.

Notes

Please discuss and suggest about the above! But if you post please clearly describe what you are talking about, posting that you agree with my or somebody else's thoughts about it are also good, because this shows which idea has the best following. Offering detailed specifics is always welcome.