New Today Screen Alternative : ThrottleLauncher - Mogul, XV6800 General

I don't work for these guys. I didn't write the app. I just use it and LOVE it.
http://forum.xda-developers.com/showthread.php?t=354981
It's similar to rlToday in that it uses xml files to configure how the Today screen looks. It takes some understanding of xml to configure it yourself. But once you "get it", there are many options available to you.
It's not as flexible or robust as rlToday. But, at least you can get your head around it all.
Check it out!

Related

"Wrap" a Today plugin

I have a little project in mind, but would like some input from the pros to cut research time:
Is it possible to "wrap" a Today plugin dll with another, providing a "pass through" for operations (such as screen taps, etc)?
What I'm trying to accomplish is this: Add selectability and other one-handed d-pad operation to an older plugin that is not selectable.
What do you think?
it's possible but the problem is that the plugin have to keep track on what plugins it include and which handles it have to pass to them
could end up big and slow
Rudegar said:
it's possible but the problem is that the plugin have to keep track on what plugins it include and which handles it have to pass to them
could end up big and slow
Click to expand...
Click to collapse
This is specific to a single plugin - it would only keep track of one.
Perhaps plan B would be easier - a plugin that manipulates another plugin. Such that it would "appear" the older plugin was selected, etc. I guess I'd better go study some more...
Actually its really simple.
Any plug-in DLL exports a function called InitCustomItem. In this function the plug-in does all its initialization, and creates its window. The return value is the handle to this window which you can subclass to add functionality.
as for selection, there is a value in the registry for each plug-in (HKLM\Software\Microsoft\Today\Items) which controls whether the system passes selection events to the plug-in or not.
it has three settings:
0 - non selectable, item will be skipped by the system.
1 - Automatic, the system will paint the item and handle selection on / off
2 - Manual, the system will pass the selection event to the item and the item will take care of the rest. In this mode the return value of the WM_ACTION determines whether the selection is moving on. This is good for multiline plug-ins that don't want to give up focus when arrow keys are pressed.
levenum said:
Actually its really simple.
Any plug-in DLL exports a function called InitCustomItem. In this function the plug-in does all its initialization, and creates its window. The return value is the handle to this window which you can subclass to add functionality.
as for selection, there is a value in the registry for each plug-in (HKLM\Software\Microsoft\Today\Items) which controls whether the system passes selection events to the plug-in or not.
it has three settings:
0 - non selectable, item will be skipped by the system.
1 - Automatic, the system will paint the item and handle selection on / off
2 - Manual, the system will pass the selection event to the item and the item will take care of the rest. In this mode the return value of the WM_ACTION determines whether the selection is moving on. This is good for multiline plug-ins that don't want to give up focus when arrow keys are pressed.
Click to expand...
Click to collapse
Hey, thanks for the response! I've set the Selectability registry item for the older plugin, and it's ignoring it - that's what started me on this little project.
I'm a software developer by trade, but not with C++, so I don't want to waste people's time here asking a lot of dumb questions. If you could point me in the right direction on a couple of things, I'll go off and learn:
1. If all I have is a dll and nothing else (no .defs, etc), can I determine all of the functions it exports (other than InitCustomItem)?
2. Process check: My custom plugin's InitCustomItem would call old-plugin's InitCustomItem, snagging old-plug's hwnd. New-plugin would then initialize it's own window - transparent(?) and pass that hwnd back to windows. Also, my custom plugin would pass all messages to old-plugin, etc. Theoretically, old-plug would look and operate like normal?
If this is already written, just sent me the code!
Well I am afraid it will be difficult to do all this without C++. As far as WM based devices are concerned you need to use something that translates in to native code to create system components like the plugins son ,no .NET languages, and embedded VB doesn't do well on anything never that WM 2003 (not even SE), plus I am not sure if you can make DLLs with it at all.
To your questions:
1) There is a tool which comes with VS 6 called Dependency Walker. It shows you what functions a given DLL exports, what it imports from other DLLs and what DLLs it is link to. Woks on EXE files as well.
If you can't get that, download a demo of IDA 5. It's the most powerful disassembler for WM devices out there.
2) Not sure, I never tried anything like that. The thing is, the system resizes the plugins, on initialization (it controls height) and when screen rotation changes so if you pass back HWND for a window other than the one visible, it might cause some problems.
I think what you should do is learn about subclassing. It's when you replace the procedure of an existing window with your own (just replace the function, not create new window). You then get all the messages for that window, you can do what you want and call the original function when you done.
By the way, if you want to learn about writing plugins there is an article with code samples on this site: www.pocketpcdn.com and a lot of other interesting stuff.
Good luck.
What plugin is it? It might be easiest just to rewrite the plugin if you've got the code.
V
levenum said:
Well I am afraid it will be difficult to do all this without C++.
Click to expand...
Click to collapse
I should have been more clear - I am using C++, I'm just have to learn how to program with it first!
vijay555 said:
What plugin is it? It might be easiest just to rewrite the plugin if you've got the code.
V
Click to expand...
Click to collapse
I don't have the old-plugin source code. My little project is to add some sort of d-pad operation to the WeatherPanel plugin, which you're probably familiar with.
Progress: I've written and deployed my first little plugin - based on the source code samples available in the internet.
Next step: In my InitializeCustomItem, I thought I'd try to call WeatherPanel's InitializeCustomItem (instead of creating my own window). Thing is, I don't yet know how to properly link the WeatherPanel dll to my project. As expected, it only exports two functions: InitializeCustomItem and CustomItemOptionsDlgProc (I used dumpbin.exe)
I'll keep plugging away - any input would be appreciated.
Thanks for your help!
It's real easy:
Use LoadLibrary and GetProcAddress functions to call functions in other DLLs without linking them.
levenum said:
It's real easy:
Use LoadLibrary and GetProcAddress functions to call functions in other DLLs without linking them.
Click to expand...
Click to collapse
What a coincidence! My studying led me to the same functions.
From within my plugin's InitializeCustomItem, I was able to successfully load the dll with LoadLibrayl, GepProcAddress of its InitializeCustomeItem (at ordinal 240) and call it. But it whacks the Today screen so that none of the plugins load.
Next I thought I'd try FindWindow and EnumChildWindows to find it and all it's children. Then manipulate them by sending messages...
storyr said:
What a coincidence! My studying led me to the same functions.
From within my plugin's InitializeCustomItem, I was able to successfully load the dll with LoadLibrayl, GepProcAddress of its InitializeCustomeItem (at ordinal 240) and call it. But it whacks the Today screen so that none of the plugins load.
Next I thought I'd try FindWindow and EnumChildWindows to find it and all it's children. Then manipulate them by sending messages...
Click to expand...
Click to collapse
Update: So far, so good. As it turns out, EnumChildWindows doesn't work on the PPC, so I used GetWindow to find the plugin's handle. I can successfully send messages to it and initiate various actions.
Question: I'd like to visually indicate (on the old-plugin) what's being clicked (such as drawing a box around it). Is it possible to draw things outside of my own window?
It is, but it's tricky.
You can always use the GetDC function to retrieve the DC for another window and paint on it, but the problem is that unless you subclass the window you have no way of knowing when it repaints it self and all your changes are erased.
levenum said:
It is, but it's tricky.
You can always use the GetDC function to retrieve the DC for another window and paint on it, but the problem is that unless you subclass the window you have no way of knowing when it repaints it self and all your changes are erased.
Click to expand...
Click to collapse
I tried that exact thing (GetDC) and drew a rectangle in it, but it didn't do anything. I realized the reason was the WM_Paint event wasn't firing on old-plugin, and when it did, my stuff was erased (just like you said).
Next idea - open my own dialog window than overlays old-plug. The entire window needs to be transparent - except for the visual indicators that I position where I want. When the user ok's, I close the window and send the click to old-plugin...
Thanks again for keeping tabs on my progress..
No offence, but with all these rather advanced programming tricks you are attempting just to "sup up" an old weather plugin it looks to me like you would be better off just writing the whole thing from scratch.
It you are familiar with WinInet and / or sockets this should be pretty easy and it will look and work much better than the hack you are attempting now.
Plus you can make it exactly the way you like.
levenum said:
No offence, but with all these rather advanced programming tricks you are attempting just to "sup up" an old weather plugin it looks to me like you would be better off just writing the whole thing from scratch.
It you are familiar with WinInet and / or sockets this should be pretty easy and it will look and work much better than the hack you are attempting now.
Plus you can make it exactly the way you like.
Click to expand...
Click to collapse
No offence taken. I thought of that, but I figured this would be a good way to cut my teeth a little. Once I complete this little project, I may pursue that route...
Question: Do you have a favorite forum (or forums) besides this site that you use for your research/programming questions?
This is my favorite forum
But here are couple more sites I found very valuable:
www.pocketpcdn.com - They have tips and tricks with code examples arranged in categories like how to make MFC dialogs not full screen or the one I used in LVMTime to put the clock back on the taskbar.
www.codeproject.com - It's not specific to WM development but has tons of interesting stuff including entire sources.
You should also check out www.buzdev.net If you're not familiar with the great work of buzz_lightyear you should see some of the stuff he did for this forum like grab_it - the invisible ROM dumper.
OT
Just a quick OT question:
If I would move some of the plugin-dll's from \Windows to \Storage Card, would it be enough to change the adress within the corresponding item in the registry entry HKLM/Software/Microsoft/Today/Items ?
Of course I'm not talking about plugins like tasks a.s.o but rather third party plugins
Cheers
hrb
It won't work.
The problem is that the SD card is mounted too late so if you put the plugins on it they will not be loaded when device boots up.
You can move them to the extended ROM this way or to a folder other than windows but there is no way to move start-up stuff to SD.
Thanks for the help with this "little" project. After many hours, the product is out for beta testing. When it's released, I'll post more info...
Finished!
It's finished. The app is called WP-Pilot and it provides one-handed operation of WeatherPanel. If anyone's interested, it can be found here. Here's how it ended up:
There's a plugin (WP-PilotPlugin.dll) with an options dialog, and an executable (WP-Pilot.exe).
When the plugin gets selected, it looks for Weatherpanel. If it finds it, it fires off WP-Pilot.exe
WP-Pilot.exe opens. It does this stuff:
Look for WeatherPanel, and get it's screen coordinates.
Read the registry and determine which layout file WeatherPanel is using.
Open the layout file and read it: Record the coordinates of each "clickable" item found. This was a real PITA because of Unicode.
Sort the coordinates for left-to-right, top-to-bottom order.
Select the first coordinate and position a tiny window (10x10) at that x-y position.
Draw a "pointer" in the window (the type and color depends on what's selected in the options).
Show the window and process input:
[*]Left/right pressed - selected the next/previous coordinate and move the window to that location.
[*]Up/down pressed - close WP-Pilot and tell the plugin we're done.
[*]Center button pushed:
[*]Send a mouse click to the WeatherPanel plugin at the coordinates
[*]Close WP-Pilot and tell the plugin we're done.​
Thanks again for your help!

Creating a tabbed interface in WM5\WM6

Hi
I'm trying to create a tabbed dialog for wm5\WM6 (something like BatteryStatus setttings). However I'm quite lost on how to do it. Umpteen searches on google cudnt get me anything specific. I have tried using the "Tab Control" in MFC, but coudnt figure out how to add things to tabs other than the first one..
I'm quite poor in U/I coding, so would appreciate a more wysiwyg kinda solution for adding things (After that I can manipulate them thru code no prob)..And moreover I need a solution in Native C++\MFC...
TIA
Hi shantzg,
I had use "Tab Control" in MFC App long back on PC but not in PPC.
I think it will still be similar.
The "Tab Control" only lets u define no of tabs and will also fire events on the basis of selection.
You hv to programatically show ur UI controls on the basis of these events.
you can look how they handled it in their source
https://sourceforge.net/projects/claunch/
http://www.nakka.com/soft/ptools/
Check out wxwidgets...
you can create the interface using a wysiwyg program like wxformbuilder, and you can try compiling it on windows using something like wxdevcpp. However to make it run on ppc, you'll need to install either .net professional ide, or embedded visual c++. Anyway, you'll have to spend a bit of time going through the wxwidgets wiki to get it working.
Thnx for the replies guys, I'll check out the recommended things and get back to u..
There are quite a few extras in there, but you can check out the code for LVMTime. I used tabbed dialog for its settings (using C++). Basically each tab is a separate dialog with its own handling function and I show the one needed when the parent dialog receives a message from the tab control.
Thnx for that levenum, ill take a look..havent been able to check out any of things suggested so far due to paucity of time..will do so arnd weekend..thnx a lot all u guys..

"Finger Friendly" Apps--Requests and Rundown

Despite the recent "Touch" fad, many of us have been trying to reduce our reliance on the stylus for quite a while. I'd like to use this thread to compile a list of all "finger-friendly" apps, or log requests for apps to help spur their development. Don't forget to include hints if you have to configure an app a certain way to make it finger friendly. Many of these are in development already in this forum, so I thought it a good place to host this thread...
Here's what I use/know about:
PocketCM (http://forum.xda-developers.com/showthread.php?t=320544) extremely useful for managing contacts. Active developer frequently makes updates. Good work tene!
PocketCM Keyboard (http://forum.xda-developers.com/showthread.php?t=321712) separate app from one above just for keyboard entry. Looks promising.
cLaunch--freeware today plug-in for launching apps. Hasn't been in development for a while, but still useful and free! Many options to configure the layout as big as you want.
phoneAlarm (www.pocketmax.net)--a today plug-in to handle notifications. Active skinning community keeps the look changing all the time. With certain skins this can be finger friendly.
WM5NewMenu (http://forum.xda-developers.com/showthread.php?t=255580) configurable menu application that does a whole lot more than just start new contacts/notes. With liberal use of the "separator" item to spread out your entries, this can be very useful. Excellent app by Saman-cz.
Total Commander--file explorer replacement. Still requires the stylus for all functions, but when the mode is set to Show > Large Icons you can navigate folders pretty well with your digits.
Slide2Unlock (http://forum.xda-developers.com/showthread.php?t=314703) basically a device lock. Some find this annoying, but its a quality implementation by A_C.
TouchNav (http://forum.xda-developers.com/showthread.php?t=327102&highlight=touchnav) for finger-friendly folder navigating. Looking forward to more development!
Unnamed app for quickly adding appointment or reviewing calendar (It was just a matter of time).
http://forum.xda-developers.com/showthread.php?t=326891
FreeStyl: A flash-based interface for WM5 and WM6 devices that is inspired by the iphone interface. Formerly known as whoneedsaniphone and can be found at http://www.whoneedsaniphone.com
I really find that with the Touch, I hardly ever use a stylus anymore. It really has to do with the flush screen.
This is why even if you put the ToucFLO onto a different HTC phone, you still don't get the hard and flush screen. I used the TouchFLO on a Hermes and it just wasn't the same.
mortbuttons
HButton you can map 6 apps on 1 one button
thnks
i like this, i've been trying to get a good iphone interface on my ppc for some time now, this helps! thnks alot..
SPB just re-did PocketPlus, incorporating a lot of touch-flow capabilities to explorer, PIE, contacts (I prefer PockerCM), and other apps. Costs, but looks interesting!!!!
That's right, Hbutton is a pretty powerful app, I only have Pocket Breeze on my main screen (I use WAD), cause I can launch 90% of the apps I need through the Hardware buttons.
I just installed FTouchFlo, and I like it a lot, it lets me scroll using my finger instead of the scrollbars.
Soooooo Cooool!

Feature requests - give them to me!

Hey,
I am parsing a list of feature requests for the next update on touch innovation
Basically post whatever you want to see on there to make your browsing experience easier!
Thanks
(see sig for link)
not sure if you have this already
but how about a mobile version of the site where you can
easily download the cab files to the phone
-=edit=-
Sorry you have already something similar
Keep up the good work
Yeah I do,
It will automatically re-direct you if your on your phone! But this feature is to be improved. I am also recoding the website's html to make it more cross-browser compatible!
Another feature soon to come will be "Add applications LIVE to the website" where you can add a program, choose the category and it will add it, with of course lots of security such as only cabs and zips allowed, and it will warn you when you download a "User-submitted" application, that it is liable for virus's. But each and everyone will be checked by our admin team.
Any more ideas?
Thanks
Specific descriptions of what the programs are and do. The "copy and paste" of the author's descriptions aren't always descriptive enough to figure out what the programs really do or if they're worth a try.
The names themselves are good clues, but it's limiting.
I would also suggest taking out the narrative and simply write what the programs are. For example:
HTC Home Customizer:
"Do you have a HTC phone, that has the htc today plugin? No? Ah well doesn't matter because this programs automatically downloads and installs it for you, not only that.. but it lets you customize it to the tiniest detail.
Enjoy!"
Why not just say that it "The program customizes and if needed, installs the HTC Today plugin."
One sentence that says the same thing.
Or...
iContact - Burt Edition:
"Truburt has done it again. Yet more features, including:
- Improved scroll speed
- Improved search feature
- Lots of small improvements
- Lots of bug fixes.
Enjoy!"
This should be in the features section and a description of the program (it's differences to the others) should be there.
You get the idea. There's a lot of good stuff there, but I might just be the only one that have a hard time figuring out what the new programs do. It'll be obvious to a regular user, but to someone new, it'll be hard to figure out the difference between the three... four... five? iContact programs.
On that note, I suggest removing the old versions of Burt's iContact.
And maybe put the Main Features right under the Information section.

[IDEA] Text Display - SPB Mobile Shell

I'm not sure if this exists. It's 9:09AM I haven't slept yet, and well I wanted to give out my idea before I forget.
My idea is a way to display text on the windows SPB Mobile Shell screens, an application basically. You click on it and you can modify the text, with a limit of how many characters of course, pick its color and maybe even text decoration, styling, size, etc. whatever is allowed. Then be able to place it wherever you want.
Example: John loves Suzy he wants the world to see it on his home screen. John puts "I love Suzy!" in a nice Medium sized Display Format on his home screen in red, underlined.
Now I have no problem aiding in the development of this if there is not an app with the features that I am thinking of, I need help getting started. I used to create minor apps and themes and skins and such. So I'm not cell-stupid. Plus I do web design and graphics.
So please write back and let me know!
Very good idea. Would be extremly usefull to modify the text from command line or via registry. you could then display your money Balance, system information or/and other automated info got with MortScript...
Contact the SPB Sopport ! Let them develope it!
I am looking for something like this too. I would use it for easy access to information that I always forget, but is not secret. The best I have at the moment is to make a dokument with name of the information and use an invisible link with only text.

Categories

Resources