• XDA Forums have been migrated to XenForo. We are aware of several issues including missing threads, logins not working, and more. To discuss, use this thread.

[in dev.] Taskbar Customizer - call for help

Chainfire

Moderator Emeritus / Senior Recognized Developer -
Oct 2, 2007
11,421
87,559
0
www.chainfire.eu
What is this?

This is Taskbar Customizer! I have been watching several threads on customizing the taskbar icons and the end-results can be awesome. However, I keep running into several snags:

  • We have to replace DLLs with different versions which can potentially raise hell and may not work well on our different WM versions. Inconsistencies, incompatibilities, etc.
  • It's always one custom taskbar or the other, unless you manually customize, and I always want these icons from A, and those from B!
  • Manually customizing is a very tiresome job
  • There are no handy tools available for this specific purpose: "Nemo vir est qui mundum non reddat meliorem" (What man is a man who does not make the world better?)

And thus, I have decided such an application must be made. This is however easier said than done, and the primary problem is the best way to go at it and the information we need for it. Some icons are stored in resource DLLs, some are stored in BMPs, one resource DLL overrules the other, one image overrules the other, one package overrides the other. Different versions for different DPI's, etc.

What we need, is to figure out a proper system. I have thoughts about this, they are discussed further below.

Note that retrieving the right files from the device, patching them, un/resigning, putting them back, etc, is not an issue. Combinations of my own various tools do all this, and it will all be in Taskbar Customizer when done.

Who am I looking for?

Right now, I am mostly looking for the following people to join the discussion in this 'design phase' of Taskbar Customizer:

  • People with a lot of knowledge (and thus experience) in customizing the taskbar (tsowen and 12aon have already offered their full support, yay!)
  • People who may not be as knowledgeable but have multiple devices with different versions of WM and are willing to test and help research (and read well!)

Who we will need in the future (don't bother to post yet, just bookmark):

  • "Shredders" - people who can take the current taskbar packs, divide them into 'icon packs', and attribute the images to the right people
  • Testers

Who we definitely don't need at this stage:

  • Those who don't know what they are talking about meddling, asking questions we haven't arrived at yet, and generally be annoying
  • Anyone who can't call himself a dev and get away with it

My current thoughts on implementation

See next post.

Reference threads

These threads contain a wealth of useful information on the subject:

http://forum.xda-developers.com/showthread.php?t=424926 - FInixNOver (part 1/2)
http://forum.xda-developers.com/showthread.php?t=437307 - FInixNOver (part 2/2)

http://forum.xda-developers.com/showthread.php?p=3746654 - tsowen (the collection!)
http://forum.ppcgeeks.com/showthread.php?t=54514 - tsowen

http://forum.xda-developers.com/showthread.php?t=457173 - 12aon

http://forum.xda-developers.com/showthread.php?t=441829 - rickou26 (QVGA)

... and many more ... if you have some must-reads to suggest, please post them.

Notes

This is a full community project. It will never be a commercial thing. Full credit to all people involved. Let's make this **** happen!

Gotta say however, that the time I will have to spend on this project will be "hobby". As some of you may know I have many projects here on XDA, and also commercial projects that pay my rent. I will of course try to make the most of it with the time I have. However, a good functional release may be some time away.

Also, I've never started a 'design phase' thread before. I am complete unsure how well that work, or if the discussion will likely still be mostly in PM's, MSN, or through e-mail. Bare with us :)
 
Last edited:

Chainfire

Moderator Emeritus / Senior Recognized Developer -
Oct 2, 2007
11,421
87,559
0
www.chainfire.eu
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.
 
Last edited:

tsowen

Retired Senior Moderator
Jan 4, 2008
477
91
0
Texas
Reporting for duty! Okay I am in guys as well and will try to drag my bro 12aon as well, also maybe see if Crazylilboy, Darklord69, bilbobrian and FInixNOver just to name a few if they might want to help. Also I have a sperate Wm 6.5 taskbar thread as well http://forum.ppcgeeks.com/showthread.php?t=65911 for the one here I just combined the two and call them the collection which you have linked.

As I see it the process might be challenging due to ROM differences. Right now I find that WM 6.5 is be cooked many different ways and this is what is causing many conflicts with some of the custom icons.

Edit: Forgot my main guys from ppcgeeks Brock and gadgetfreak. I invited them, both have mad taskbar skills.
 
Last edited:

GadgetFreak

New member
Jan 27, 2008
657
363
0
Waco
I could never turn down a good challenge. Fair warning, while I can blast my way through a dll, It's been a long, long time since I have done any coding, and that was Unix based GIS stuff. So with my backside sore from Tsowen's not so subtle kick in the pants to head over here, cound me in too! :D

AKA: Gadgetfreak
 

Chainfire

Moderator Emeritus / Senior Recognized Developer -
Oct 2, 2007
11,421
87,559
0
www.chainfire.eu
Good to see you guys here (seems our timezones are not very compatible, though ;))

Don't worry Gadgetfreak, I can do the coding, it's more the 'how do we pull it off part' that is the question. Obviously we want it to work for everybody regardless of ROMs and packages :)

Perhaps we should start with creating a breakdown of exactly which icon is what, so we can match the various locations they may be up with eachother? Also what are the exact differences between GSM and CDMA? So far as I see now that instead of phcanoverbmp cdma_rssi_ppc is used for connection icons... and in WM6.5 both go back to shellres again?

(edit) Also, where are the signal bars in GSM ?

(btw tsowen I just noticed in your v2.1 lite one of the 3G icons says E instead of 3G ;))
 
Last edited:

Chainfire

Moderator Emeritus / Senior Recognized Developer -
Oct 2, 2007
11,421
87,559
0
www.chainfire.eu
Example definitions file:

Code:
[alias]
shellres=shellres.%DPI%.dll,shellres.%DPI%.dll.%LANG%.mui
outres=outres.%DPI%.dll
tapres=tapres.%DPI%.dll
tshres=tshres.%DPI%.dll
notify=notify.dll.%LANG%.mui

[shellres]
4609=start:icon

4677=wifi:connected
4712=wifi:ani_connecting_01
4713=wifi:ani_connecting_02
4714=wifi:ani_connecting_03
4715=wifi:ani_connecting_04
4716=wifi:ani_connecting_05
4717=wifi:ani_connecting_06
4718=wifi:ani_connecting_07
4719=wifi:ani_connecting_08
4720=wifi:ani_connecting_09
4721=wifi:ani_connecting_10

5071=speaker:bluetooth_headphones
5072=speaker:on
5073=speaker:vibrate
5074=speaker:off

[HTCVolumeControl.dll]
129=speaker:on
130=speaker:off
131=speaker:vibrate

[phcanOverbmp.dll]
80=wifi:connected
81=wifi:ani_connecting_01
82=wifi:ani_connecting_02
83=wifi:ani_connecting_03
84=wifi:ani_connecting_04
85=wifi:ani_connecting_05
86=wifi:ani_connecting_06
87=wifi:ani_connecting_07
88=wifi:ani_connecting_08
89=wifi:ani_connecting_09
90=wifi:ani_connecting_10

160=speaker:on
161=speaker:vibrate
162=speaker:off
This is an example of how it could be done. Multiple values in multiple files have the same definition, so the program can detect if you override one, it will also have to do the others (obviously there will also have to be something for the bmp/png files occasionally used).

However, obviously it will take a lot of work to get every icon 'defined' like this (however I do think it is the best way), and careful examination of these icons actually belong together.

The test app I'm working on may help a little in this - see screenshot here - it's what I used to figure out the 'code' above.

Thoughts?
 

Wiggz

New member
Aug 1, 2006
591
21
0
Impressed

I have to say I'm impressed that such an ambitious project is being undertaken. Whilst we all know developers on this site do an excellent job, their focus seems to be sometimes limited to new ROMS, or different Rom version etc......

I have recently posted something similar asking for some new apps and the like which are compatible with "any HTC Tocuh HD" configuration regardless of ROM, which I believe is exactly what you are intending to do.

I applaud each and every one of you for attempting this...if only I had some developmental skills to offer but sadly my only claim to fame is that I can use a Touch HD :)
 

uniqueboy

New member
Apr 11, 2006
1,421
5
0
Maybe there is an easier way to do this, ie in a complete taskbar replacement app, rather than an app to swap out the icons. I'm thinking that wisbar advanced does not swap any icons but replaces the entire taskbar. Just a thougt. no signing unsigning problem and all the images could just be jpg or png rather than .ico.:) You might just say "just use wisbar" but wisbar does all kinds of other things aswell, so an app that just replaced the taskbar would be much lighter on the system. It would hide the origional taskbar and draw in a whole new one. This would actually allow far more scope for much greater customisation.
 
Last edited:

tsowen

Retired Senior Moderator
Jan 4, 2008
477
91
0
Texas
As uniqueboy stated the application will have to be able to sign/unsign the dll's and some are in use such as the shellres so I am not sure how the program will temporary override this. Also another thing is the Diamond used the shellres.192.dll.0409.mui and the Touch pro uses the shellres.192.dll so the program would have to detect which one is being used. A list of all the icons is not hard and I can help work on the list the major dll's we are looking at are:

Code:
BT Discoverable.bmp
BT On Mode.bmp
BT Stereo Headset.bmp
CDMA_RSS_PPC.dll
GPS-icon.bmp
GPS-icon Mask.bmp
HTCVolumeControl.dll   
notify.dll.0409.mui
outres.192.dll
pchanOvermbmp.dll
PictureMailRes.dll
shellres.192.dll
Stereo Headset.bmp
tapres.192.dll
tshers.192.dll
VoiceCmdRes.dll
WLMMessengerResources.192.dll
There are a few others for the Large Title Bar

Code:
LargeTitleBar.dll
HTCLTB.png
HTCLTB_320x240.png
notify.dll.0409.mui
NotificationManager.dll
MMSRes480x640.Dll
htcStartMenuService.dll
 

uniqueboy

New member
Apr 11, 2006
1,421
5
0
I would definitely not call that an easier way to do it ;)
You definitely know best, but why not? I am thinking of a comparison with marshall's wait cursor app, the origional windows wait cursor images can just be replaced but it offers little scope compared to marshall's solution.:) Pre 6.5 roms could have transparent taskbars at last and some of the things which can't be customised such as the signal strength meter on gsm taskbars could be made nice and colourful, the X/OK button could also be changed and other indicators added such as memory or cpu activity.:)