".exe-wrapper" for today plugin? - Windows Mobile Development and Hacking General

hi,
i am about to start my first developing project as i am looking for a way to either replace the complete today screen by startup with "cprog.exe" (which is the builtin phone-app) or embed the phone app's dialpad (3g kaiser style) as a plugin in the today screen.
before starting i was thinking as to why to develop a today-plugin and somehow rewriting the whole phone-app.
as the phone-app already exists i am thinking about kind of wrapping the exe so that it can be used as a plugin. or in other words, to write a plugin which runs the app in a specified frame within the today screen.
do you think that this would work?
do you have some more thoughts or other ideas on this?
does there already exists such a wrapper?
do you have a good source to start from as this would be my first project?
galaxys already sent me this link http://forum.xda-developers.com/showthread.php?t=332800
but maybe there is for my purposes a more specific one.
thanksfor your help
oliver

Related

Interfacing into Today plugins

Does anyone know how I can host Today plugins in my own programs like PPX and WDA do?
What kind of code would be required?
EDIT: I don't need to know how to write today plugins, but how to host the plugin component within my own applications, emulating the Today screen.
V
Not sure if this is what you want. You can write it in either of the embedded languages, but if you want to use C# and the .Net Compact Framework this tells you how
I haven't used it because I haven't got around to reinstalling eVb which is needed to build the supplied code.
kevino - thanks for the link (although you might want to edit the URL, it has an extra / on the end).
But, I don't need to know how to write a today plugin, but to host them like the Today screen does, eg SideX, WDA and PPX do.
Thanks for taking the time tho!
V
Yes I noticed later who I was replying to and that you already knew all that stuff. I thought I'd leave it there because it took me ages to find it myself.
:wink:
No problem at all.
Working on so many today plugins right now, I've found I'm >literally< thinking about them in my sleep. Frankly, even I'm getting worried!
But, the question still stands, anyone know how to host a today plugin in my own window? I think I need to interface into them etc (are they COM objects?), but I've no idea where to start looking to learn that kind of hackery...
V

Today screen replacement

Hey everybody, I've got a HTC Wizard phone running Wm5 and I would like to write a different today screen application (not a new plugin, but replace entirely the today app - plugins host).
I search the net for informations about the application, but I could only find out that is called host.exe.
Does any one know what kind of restrictions are for this type of application?
Does it need to respond to some specific things?
And how can I replace it with my exe?
Or at least where can I find such information?
Thanks
It seems to me that the today app doesn't need to meet any special requirements. You can replace it with any app. However you will lose the start menu and the clock bar if the new application doesn't provide such functionality.
There is one thing I could not find: how can you specify the application that will be started as today screen.. I assume this would be a reg key but i could not find it yet.

[New release] Registry display plugin

Ok, most of you may find this totally useless as a plugin, but it was a combination of a request by user Treo_newb and a desire to create a sample plugin project that could be used as a base / example for plugin writers (I plan on doing an article on codeproject.com and this will be the source for it).
What does it do?
This plugin displays a string stored in registry.
The path is:
HKEY_CURRENT_USER\Software\RegDispPlugin
Value name: DisplayString
It checks if this string has changed several times per second when today screen is shown (as the system sends refresh message to all plugins) and displays the updated message if a change occurred.
What is it good for?
First, if you write apps using mortscript or similar like the user who requested this it will let your script display stuff on today screen.
Alternatively it could be used to mark your device today with a string that isn't as easily changed as user info.
The source is basically a skeleton plugin you can use to build your own plugin on (no license / copyright to limit you) and it already has several tricks needed for the plugin to display correctly:
VGA compatibility
Text size matching system settings
Proper header in settings dialog (like on system plugins)
Proper text color when selected (according to theme)
No blinking all today screen on change
Proper resize when switching between landscape and portrait
When I was writing my first plugin I could not find all these little fixes concentrated in a single article so I had to fish for each one as the bug reports came in.
Hope you will find this little project useful.
The plugin:View attachment RegDisplay.CAB
The source (eVC 4 project): View attachment RegDisplay.zip
Thanks for this!
Thank You Lev.
Thanks, Thanks, Thanks,
You are a legend.
I was almost through with my today plugin and was trying to figure out reading registry values and all of a sudden I get a PM from u about the plugin !!!
Very Cool !!!
OK a few questions,
1. I know that WM_TODAYCUSTOM_QUERYREFRESHCACHE is called for refreshing the today plugin, any ideas about when is it called.
I read somewhere that it was 2 seconds. Is it true?
2. I saw ur code and u have exposed CustomItemOptionsDlgProc in RegDisplay.def, but when I installed the cab file the 'options' is not enabled.
I manually changed the resistry and changed options to dword = 1 and saw ur name and email address.
u might want to enable that by default so that people can notice ur work.
I am planing a commercial release of a new project on basis of this.
Thanks again,
Shailesh
First, you're welcome.
shaileshashar:
1) I ran a debug print on this message once on an iPaq 1710 and it seems to be sent several times per second. This could differ from OS to OS or even from device to device, I am not sure.
If you need specifically timed refresh, or you have an event triggered on new data, I suggest using a timer or maybe a thread that will wait on an event. You can refresh your plugin from anywhere in code by calling InvalidateRect with your window handle.
2) I messed up the cab at first, forgetting to add the Options reg value. Then when I went to upload the fix, I couldn't access the site for about an hour (no idea why, I even rebooted the PC to Ubuntu). Should be fixed now, but I will check it later again (I have to go back to XP for that).
Good luck with your program.
Suggestion
levenum said:
First, you're welcome.
shaileshashar:
1) I ran a debug print on this message once on an iPaq 1710 and it seems to be sent several times per second. This could differ from OS to OS or even from device to device, I am not sure.
If you need specifically timed refresh, or you have an event triggered on new data, I suggest using a timer or maybe a thread that will wait on an event. You can refresh your plugin from anywhere in code by calling InvalidateRect with your window handle.
2) I messed up the cab at first, forgetting to add the Options reg value. Then when I went to upload the fix, I couldn't access the site for about an hour (no idea why, I even rebooted the PC to Ubuntu). Should be fixed now, but I will check it later again (I have to go back to XP for that).
Good luck with your program.
Click to expand...
Click to collapse
Thanks for the help, will check the fixed cab.
Also a suggestion:
A custom icon could also be incorporated. You can give a option to load a custom icon next to the text in the today plugin.
I know anybody can modify ur code and do it but still.
Actually, I probably should have mentioned this in the original post but I have no intention of adding options to this thing.
This would only complicate the code and turn it in to an actual app instead of a sample project.
But by all means feel free to make suggestions. If this thing does become popular, when I am done with my other projects (like LVMTopBat) which won't be any time soon (unfortunately) I will release a separate version of this plugin with all kinds of options that can be controlled both by user (form the options dialog) and by other apps through registry.
Maybe things like text alignment, size, bold / Italic / underlined.
P.S.
The reason I put the string this plugin loads under HKEY_CURRENT_USER instead of the HKLM where the rest of the plugin registry resides is because by default the HKEY_LOCAL_MACHINE on WM 5 and higher has a security restriction. For example you can not write to it using RAPI, only by authorized (or signed) app on the device. The HKEY_CURRENT_USER on the other hand is open for all.
levenum said:
P.S.
The reason I put the string this plugin loads under HKEY_CURRENT_USER instead of the HKLM where the rest of the plugin registry resides is because by default the HKEY_LOCAL_MACHINE on WM 5 and higher has a security restriction. For example you can not write to it using RAPI, only by authorized (or signed) app on the device. The HKEY_CURRENT_USER on the other hand is open for all.
Click to expand...
Click to collapse
Thanks for the info, I never knew that.
Thank you so much! This was exactly what I was looking for!
levenum said:
...But by all means feel free to make suggestions.
Click to expand...
Click to collapse
As a frequent mortscript user I think, this great app might be even more usefull, if the string was shown in an "allways on top" message box instead of the today screen. The Today screen might be obscured by other active windows during the scripts runtime and the plugin eats precious today screen estate also while being unused, doesn't it?
In that case (of a standalone application) I would furthermore introduce some kind of termination string (or reg. value) to end the display application.
Code:
- start mortscript
- writes first string to registry
- starts display application (run)
- updates string in registry whenever appropriate
- ...
- writes termination string to registry
-> display applications self-terminates
- ...
- end of mortscript
Honestly, I already do use something comparable with mortscript (employing a conditioned sleepmessage loop and reading from the registry too), but this could be much nicer and more elegant.
Just my 2 cents... What do you think?
I think something like that would be better implemented by the mortsrit program it self.
It could be a function like MessageBox API in windows which you could then command on and off. Having it built in would save precious resources on the device that would be wasted by having an extra app run constantly in background.
This is just my thought though.
I'd suggest contacting the developer of mortscript and discussing it with him.
levenum said:
I think something like that would be better implemented by the mortsrit program it self.
...
I'd suggest contacting the developer of mortscript and discussing it with him.
Click to expand...
Click to collapse
Mort knew about that request and by chance just announced to so.
Thanks anyway.
Hello levenum,
I just joined the community. Reason being, I found your RegDisplay plug-in
You call it a sample project, but the impact is that of an awesome solution.
Great for MortScript, but equally useful in BASIC applications that write
messages to the registry which is show upon screen minimization.
I regret not being a C programmer (mainly BASIC), else I'd love to further
develop this jewel.
Your plug-in runs flawlessly in an iPAQ 210 under WM6 Classic.
Cheers and Respectful Greetings
Robert
CLSID for registry display plugin
What is the CLSID for the Registry Display Plugin? I am going to have to edit the XML file that defines my home screen in order to get the plugin to show up. I am using Facade to control my home screen, and the only plugins that it will show in its list are those currently in use in one of the XML files in the Application Data\Home folder. All other new plugins require editing the XML. Thanks for your help.
levenum said:
Ok, most of you may find this totally useless as a plugin, but it was a combination of a request by user Treo_newb and a desire to create a sample plugin project that could be used as a base / example for plugin writers (I plan on doing an article on codeproject.com and this will be the source for it).
What does it do?
This plugin displays a string stored in registry.
The path is:
HKEY_CURRENT_USER\Software\RegDispPlugin
Value name: DisplayString
It checks if this string has changed several times per second when today screen is shown (as the system sends refresh message to all plugins) and displays the updated message if a change occurred.
What is it good for?
First, if you write apps using mortscript or similar like the user who requested this it will let your script display stuff on today screen.
Alternatively it could be used to mark your device today with a string that isn't as easily changed as user info.
The source is basically a skeleton plugin you can use to build your own plugin on (no license / copyright to limit you) and it already has several tricks needed for the plugin to display correctly:
VGA compatibility
Text size matching system settings
Proper header in settings dialog (like on system plugins)
Proper text color when selected (according to theme)
No blinking all today screen on change
Proper resize when switching between landscape and portrait
When I was writing my first plugin I could not find all these little fixes concentrated in a single article so I had to fish for each one as the bug reports came in.
Hope you will find this little project useful.
The plugin:View attachment 41592
The source (eVC 4 project): View attachment 41583
Click to expand...
Click to collapse
This is great! I was asked if I could write a today screen plug-in for my weather application (http://forum.xda-developers.com/showthread.php?t=445576) - I couldn't since I don't have the skills and I'm writing .NET code - but this is exactly what I needed.
I'm adding support for this plug-in and will of course give credits to you.

HTC TouchFLO Cube Ctrl - !BETA V1.1.0 AVAILABLE! - *Full* cube control with gestures

Summary:
I'm starting this thread as a dedicated effort to enhancing the integration of the HTC TouchFLO Cube onto non-"HTC Touch" devices, without requiring a different version of touch.dll to be installed on the device via a new ROM.
Current Status:
WHAT'S DONE
Much research in learning how the cube works
Development of some theories
Development of a testing app to test theories
Proof of concept app built to prove the theories
Using FTouchFlo, I have all 4 motions assigned to the correct cube task ... and it's all working!
Slide up - open
Slide down - close
Slide right - spin right
Slide left - spin left​
Added new feature, where LR, RL, and UD finger swipes can execute other tasks if you perform them when you're not on one of the cube faces. Read Project Status 11-12 entry for details
Added an option to allow LR, RL gestures to open & spin the cube even when biotouch is not running. Not sure if this is actually the way the Elf works, but some people want it
Conversations have been started with efrost about integrating our work here directly into FTouchFlo. Talk about a speed enhancement!
Raven_coda has cracked the final piece of the puzzle!
I have implemented Raven_coda's changes, and my C# version works great ... StartUp items are sorted out now!
C++ version created ... speed is definitely improved
A few bugs fixed, a few issues addressed, and a few new features added
Beta release v1.1.0 available here:
http://rapidshare.com/files/72589345/TFloCubeCtrl_-_v1.1.0.zip -or-
Use the attachment at the bottom of this post
NOTE: This file is a zip archive, suitable for situations where you already have the HTC TouchFLO cube installed. If you have never installed TFloCubeCtrl before, then follow the TFloCubeCtrl - Installation instructions. If you're upgrading from v1.0.4, then use the TFloCubeCtrl - Upgrade instructions. You do *not* need to uninstall TFloCubeCtrl or the HTC TouchFLO cube in order to upgrade. For a complete cube installation, please check with duttythroy on his thread here: http://forum.xda-developers.com/showthread.php?t=336482.
Newer cab built by xplode available here:
http://rapidshare.com/files/75947199/HTCCube_FTouchFlo_TFloCubeCtrlv110_Config-xplode.cab
Includes HTCCube + FTouchFlo v1.4.1 + TFloCubeCtrl v1.1.0 + TouchSettings v1.22 + FTouchFloConfig. This should also include all of the patches and fixes from the attachment list. However, if you installed the previous version of xplode's cab and are experiencing issues, try the following:
If you experience 2 apps launching from the MediaHubMini using Xplode's latest cab ... then replace the MediaHubMini.exe with the "patched" version below in the attachments. Either terminate the MediaHubMini process first then overwrite, or delete the MediaHubMini (preload) link from Windows\Startup, soft reset, then overwrite the file.
If you are having issues with QuickDial not functioning properly ... then replace the QD_Bar_NoBar_HL.png image file with the replacement version in the attachments. Also you can try replacing the version of QuickDial with the patched version in attachments below. Either terminate the QuickDial process first then overwrite, or delete the QuickDial (preload) link from Windows\Startup, soft reset, then overwrite the file.
WHAT'S LEFT
The black screen issues seemed to have all but disappeared. I believe we have determined the reason they were occurring, and have solved at least a vast majority of them.
Solve any remaining beta release bugs/issues
Once the beta seems good to people, get the code to efrost for him to integrate into FTouchFlo!
Rules:
For now, this thread is intended for people who already have a working version of the TouchFLO Cube on their system.
I'd prefer to keep this thread research & development oriented. I don't want this to turn into another thread of a million posts by people who are getting cube black screens and want help.
The cube still has a few unknown nuances/dependencies ... so this thread will be most suited for people familiar with alpha version software.
This thread is about integrating the original HTC TouchFLO Cube. I don't think we need a bunch of posts about how some 3rd party app is better, or how a Flash cube turns faster. There are other alternatives, yes ... this thread is about just one of those alternatives.
More as I think of them
Structure:
Post #1 is for general info
Post #2 will be project updates
Post #3 will be announcements / additional updates
Post #4 is some project background info
Post #5 we'll reserve for a hint/tips section
The rest is up to you guys ​
Donations
Thank you to all who have donated! Every donation makes me realize that other people are also interested in this project, and helps keep me motivated to continue expanding the functionality, and answering questions!​
Props
JasonStern for his tireless research as to why QuickDial was failing on certain devices (see QD replacement image an new version attachments)
Musicman247 for providing me with files and sharing the work he has done with a true 6-sided cube
Zyphlin for pointing me to the work that Musicman247 was doing
Raven_coda, who despite being my mortal enemy at first , ended up discovering the key to breaking our dependency on the original biolauncher app!
duttythroy for creating his cab installer that started me down this path
efrost for creating FTouchFlo which makes the cube work with finger control
xplode for creating cab installers for me (even though he "hates" the cube )
techmonkie for responding to my RFI, and straightening me out re: launching/exiting
funman and Biffert for also helping me out with reference information from an actual HTC Touch users
jasjamming & Bepe for the original work on Touchflo Alpha
others ... I'm sure
Project Status
11-10-2007: Proof of concept app in C# is completed, and the four finger control functions are working! One major issue, is how to get back into the cube when biotouch is still running, but no cube app is in the foreground (like after you launch and close an app). So far, I can only get the startup animation when I start biotouch from scratch ... so the downswipe action runs the close animation, and then closes biotouch. It really seems like I should be able to call something to get a running instance of biotouch to re-execute the startup animation ... but I'll be darned if I can find it as of yet.
I'd like to get some input from users of an actual Elf or Touch Dual device. Ideally, someone who can run a process viewer app to see the processes behind the screen ... and even better if they have a tool like Remote Spy that comes with Visual Studio 2005. I think it would help me ... because right now I'm just guessing at what should be happening.
I need to figure out what pieces need to be in startup for my app to work. Basically, I've written my own version of BioLauncher ... which doesn't require biotouch to be running at all (it starts it on an upswipe). But so far, removing the ns script call from startup (bio.lnk) didn't seem to allow the biotouch animations to run. Need to do more research in this area. Everything works fine if I use my normal Touchflo Alpha install ... use the hardware button to loop through things (pre-loads all the cube apps probably), and then use my new app mapped to FTouchFlo. If none of this makes any sense to you ... read "How the TouchFLO Cube works" in Post #4.
11-10-2007 (after some sleep): I posted a message over on the Elf forum asking for some information about the behavior of the cube in certain situations. We'll see if I get any help. If anyone reading this knows of anyone with an Elf or Touch Dual (are they out?) ... then send them over to that forum, or check it out yourself and borrow their device for a bit
11-11-2007: I actually got an answer from the Elf forum techmonkie is indicating that biotouch doesn't really terminate on cube close, thereby indicating that there *has* to be a way to trigger the startup animation from a running biotouch instance. I was really starting to suspect that this was the case ... but this was the evidence I needed. Figuring this out will solve my startup woes ... and that should complete the interactivity with the cube. At that point ... I may consider a controlled alpha release, just to confirm that things are working as design on other devices. We'll have to see how things go. I'm going to refocus my investigation on triggering the open animation from a running biotouch ... but I may need some detailed analysis from an Elf ... we'll see.
11-11-2007 (update): Did I mention how much sleep this thing is causing me to lose?! Anyways, OK ... must have been the inspiration of knowing how it was actually working on an HTC Touch device, because with the info in techmonkie's response, and a little more digging into the assembly code of touch.dll to confirm, I've got the startup issues sorted out. In fact, biotouch.exe does indeed remain memory resident. There is a way to get the startup anim to run ... although I swear I tried this before, and it didn't work. The open and close animations even do a little screen fade-in. It's working quite well for me in fact! This is so sweet ... I went and downloaded a few other animations from the Elf Cube customization thread ... just to see then animate in my new fully-functional cube!
There's a few cleanup things to do for tomorrow ... and then it's on to sorting out the correct startup sequence. I'm still considering the controlled alpha release. Right now, you need to add it on top of a working cube ... which may not be bad for those that have working cubes!
11-12-2007: I had this thought earlier today ... I never really want a RL or LR swipe to bring up the cube and spin it, if the cube wasn't open before. You don't really know what page you'll land on ... unless you know where you left off last. I'm not exactly sure of the Elf's behavior on this point ... but I decided to add the ability for my cube interface to execute cube functions when the cube is open, or execute other apps if the cube is not open. For instance, I can have a RL swipe spin the cube when the cube is open, but the same gesture will launch Total Commander when I'm on the home screen I think it's pretty cool ... retains the cube interaction abilities, and still retains the "quick launch" nature of FTouchFlo gestures! Doesn't appear to slow it down much ... I'm hoping the C++ version is better anyways.
11-16-2007 (Announcement): New Announcements ... see Post #3 below.
11-20-2007: Hints, Bugs, & Issues section updated to include at least a start (prompted after yet another post about missing contacts tab in HTC Home . Development work on fixing the screen lock bug continues.
11-21-2007: Version 1.1 is under way with a few new commands available. Detect for screen lock and rotation seems to be working, and I'm hoping to fix a few of the other bugs. Also, use of link files for <App_2> parameter now work!
11-24-2007: Version 1.1 development continues. I removed the error message when using the openSpin<Direction> command and running in landscape mode. Also, I think I've fixed the "rainbow effect". Finally, I've adding another new command option: lock, which will execute the standard device lock. So some of the new commands are: minimizeAll, lock, lock-home, and somehow I'm going to work in a command to lock and suspend. Tossing around the idea of allowing screen rotation through gestures as well. So I think bugs 1 & 2, & possibly 3 are fixed, and issues 1 & 2 are adressed. A release is probably due, maybe by the end of this weekend.
11-25-2007: Version 1.1 seems complete. I've added screen rotation as well ... so the final list of new options is: lock (sub options of "home" and "suspend"), rotateDisplay (left and right), minimizeAll. I'll try to package it up in a new archive by tomorrow, after a bit more testing.
12-05-2007: Remaining issues still seem mostly centered around some devices having issues with QuickDial. I've gotten my hands on some new versions of the required apps, and am currently evaluating them. For the most part ... it looks promising that these will extend our cube functionality!
Announcements
11-12-2007: Limited Alpha Release
With this latest feature added ... and everything seeming to work perfectly on my device, I've decided to go ahead with a limited release alpha. It's just so cool ... and I know there are "Cube People" out there that wanted this just as much as me Basically, here's how it works.
You are not eligible for the alpha unless you already have the TouchFLO cube software installed and spinning to the right via FTouchFlo. Reason is that I was focused on rewriting the biotouch interface app first ... as that's the key component. There are lingering nuances to getting the TouchFLO cube apps themselves working ... but I'll be addressing that once I get past this phase. Don't worry ... I have plans on making this a simple cab installation for the whole enchilada ...
If you're interested in trying out the alpha version ... PM me, because I'd rather not have a bunch of one-line posts for people asking to test.
I'll give you the location of the zip file to download. This is alpha-ware ... so not fancy installers yet, but I guess I'll throw in a readme.txt file or something. It's pretty simple really ... assuming that you have a working cube.
Once you get things installed ... try it out. If you're having problems that seem like they might be installation/configuration issues ... then PM me about them first. I'd rather keep the posts as relevant to "general design/development" as possible.
Along the sames lines ... no need to post messages saying it works and whatnot, just PM me. Since it's not publicly available ... we don't really need pages of posts from people saying it works.
11-14-2007: Limited Alpha Release - ON HOLD
Alpha is on hold until I work through some issues ... and clear out some PM's Thank you all for your interest and feedback.
11-15-2007: Startup items are sorted out ... first beta version is on its way ... although apparently no luck in finishing that night
11-16-2007: First revision ported to C++. Need to do some testing and tweaking ... hopefully will finish tonight!
11-16-2007 (Update): Beta release v1.0.4 available here: http://rapidshare.com/files/70299288/TFloCubeCtrl_-_v1.0.4.zip. Currently just a zip archive, I may build a cab installer over the weekend, just for my app (for you that already have the cube installed). For a complete cube installation, please check with duttythroy on his thread here: http://forum.xda-developers.com/showthread.php?t=336482
11-27-2007: Beta release v1.1.0 available here: http://rapidshare.com/files/72589345/TFloCubeCtrl_-_v1.1.0.zip. This file is a zip archive, suitable for situations where you already have the HTC TouchFLO cube installed. If you have never installed TFloCubeCtrl before, then follow the TFloCubeCtrl - Installation instructions. If you're upgrading from v1.0.4, then use the TFloCubeCtrl - Upgrade instructions. You do *not* need to uninstall TFloCubeCtrl or the HTC TouchFLO cube in order to upgrade.
Background
Background:
A few weeks back, I was inspired by the work of a couple of fellows who were working on a project to get the HTC TouchFLO Cube working on other HTC devices. You've probably seen the installation cab floating around in a couple of different threads. Like many of you, I quickly became enamored with the cube ... and jumped through all of the hoops to get it working (and I was one of the lucky ones who got it working).
The original work by jasjamming and bepe provided a cube that could spin to the right via a hardware button. Then, with the release of efrost's FTouchFlo ... you could get the cube to spin right with a finger motion. It was all great, but I wanted more! Two things bothered me greatly ... you could not spin the cube left, and once you launched a program ... the only way to return to the cube would be to spin it again.
So began a intensive week-long, late-night effort to learn as much as I could about the TouchFLO Cube, and if/how we could get it do more. I am very happy to report that much progress has been made ... and it is definitely feasible that we can have finger controlled spin left, right, open, and close.
How the HTC TouchFLO Cube works
The HTC TouchFLO Cube is really the collaboration of four separate executables, and an "interface". The four executables consist of one app per each each face of the cube (ApLauncher.exe = App Launcher; MediaHubMini.exe = Music, Photos, Video; QuickDial.exe = Contacts), and an application that facilitates the animation sequences for the cube (Biotouch.exe). Now, at this point I guess I'll point out that "cube" is really a bit of a misnomer. Since there are only 3 faces to this object + top and bottom, it's really more of a pentahedron, or a triangular prism if you like the sound of that better. The "interface" part is where things get interesting. On an HTC Touch (Elf) or Touch Dual ... the "interface" that detects finger swipes and translates them into calls to the biotouch application is the main touchscreen library: touch.dll. This is where we start running into problems trying to run the cube on other devices. Without modifying the touch.dll on a given device ... there will be nothing to interpret finger swipes and communicate to biotouch. This is the point the original work by jasjamming and bepe went down the path of attempting to map a hardware button to be used to spin the cube. An executable needed to be created that would interact with biotouch in the same manner that the touch.dll file would, and trigger it to run the spin right animation. I'm not exactly sure what process these guys went through to figure this out ... but they did. From there ... it was efrosts creation of FTouchFlo that brought the next revolution. FTouchFlo is an app that allows you to map a file to be called when it detects one of the four finger swipe motions (up-down, down-up, left-right, right-left). With this, you could now map that same executable that was assigned to the hardware button to the left-right swipe action in FTouchFlo ... and now your cube spins with a finger swipe.
That's pretty much where the development stopped. I did a lot of research on this ... but pretty much all I could find from that point on was various people's input about it not working on this device, sort of working on another, etc. I simply couldn't believe that no one was pushing to enable the other cube interactions! It frustrated me to no end to know that I had a cube that was capable of spinning left, but no way to tell it to do so. So I rolled up my sleeves, read through countless pages of posts about what had been done so far, downloaded a disassembler, performed a lot analysis and theorizing ... and here we are today.
Hints, Bugs, and Issues
Hints
Problem: I installed the cube, and now my Contacts tab in HTC Home is gone!
Resolution: Delete the registry key: HKLM\Software\OEM\MASD\QuickDial
Problem: I installed the latest cab, and now I have trouble completing a gesture
Resolution: Try changing the GestureWaitingDelay in FTouchFloConfig.txt to a higher value (i.e. 50000)
Problem: I can't figure out what/how to map the cube to my hardware buttons
Resolution: Download my zip archive from post #1, and read the TFloCubeCtrl - Readme.txt file
Problem: I don't know/understand the TFloCubeCtrl options in the FTouchFloConfig.txt file
Resolution: Download the TFloCubeCtrl - Readme.txt file from the attachments in this post
Problem: I'm not very technical, and I don't know what to do
Resolution: Be patient and wait for there to be a final release. This is a beta, and is therefore not polished to the point of a one-click install
Problem: I end up activating the cube when I try to unlock in Slide2Unlock
Resolution: Add s2u2.exe to the exclude list in FTouchFloConfig.txt
Problem: My Touch Settings application has no icons for the APLauncher
Resolution: Be sure to add the AL_xxx.png icons to your Windows directory
Problem: Editing the FTouchFloConfig.txt file is confusing/difficult
Resolution: Check out the FTouchFlo Configuration Tool by schaps here: http://forum.xda-developers.com/showthread.php?t=345568
Problem: I installed the latest Xplode cab, and MediaHubMini is launching multiple apps
Resolution: It's a known issue ... try replacing your MediaHubMini.exe file with the one from the attachments in Post #1. Be sure to terminate the MediaHubMini process first, or remove the MediaHubMini (preload) link from Windows\Startup and soft-reset
Problem: I installed the latest Xplode cab, and QuickDial is not working
Resolution: It's a known issue ... try replacing your QuickDial.exe file with the "DeviceCheckPatched" one from the attachments in Post #1. Be sure to terminate the QuickDial process first, or remove the QuickDial (preload) link from Windows\Startup and soft-reset
More to follow ...
Bugs (for TFloCubeCtrl only)
When the device is locked, but the screen is still "active", an up-down gesture in FTouchFlo will still bring up the cube ... although you then can't do anything with it. (Fixed in v1.1.0)
Link files (.lnk) do not appear to work when specified as the <Command_2> parameter. (Fixed in v1.1.0)
In some non-HTC devices (Eten M600), TFloCubeCtrl is unable to detect that the QuickDial cube app is running (related to QuickDial issue listed below)
A DeviceLock issue detailed here: http://forum.xda-developers.com/showpost.php?p=1730847&postcount=453
ICE (Infinite Cube Effect) issue as detailed here: http://forum.xda-developers.com/showpost.php?p=1732668&postcount=460
PM me to report other items you think are bugs
Other Issues
When launching the cube using a RL or LR gesture, and the cube isn't already in the foreground (aka using the openSpin<Direction> command), exiting the cube using the close command causes some interesting "rainbow" effects on the today screen as the cube app closes. The rainbow colors then disappear ... but it's very strange for a split second. (Seems better to some in v1.1.0, but not solved completely)
When you have openSpin<Direction> set up in FTouchFlo and you perform a RL/LR gesture when in Landscape mode, you receive an error message indicating that Biotouch is not running. (Fixed in v1.1.0)
QuickDial app is running slow on some devices, sometimes taking 3-4 seconds to display the actual contact name/photos. Although it was never that slow for me, v2.0 of QuickDial loads even faster. Xplode's cab installer linked to on Post #1 has QuickDial v2.0
On non-HTC devices, the QuickDial app does not seem to load. For QuickDial v2.0, this is due in part to validation that the program is running on an HTC device (I'm not sure if QD v1.0 does this). JasonStern has made some progress on the QuickDial issues ... see Problem/Resolution above
Great job!
this looks great, cant wait to see the results.
Hope this helps...
Hey Kona...that darn cube is addicting!! Im one of the few also that has the cube running flawlessly on my 8525..buttonflow that is! After alot of trial and error and lots of hard resets...i got it working. First thing to do is get the cube running after a hard reset. Second I installed gullum activate cube cab..View attachment activate_cube.CAB. Not sure what it did but the only time I have to launch biotouch is after opening keyboard....not even after a SR!!! I guess it keeps biotouch running or somehow launches it automatically. Just my 2cents...
niterdr said:
Second I installed gullum activate cube cab..View attachment 57648. Not sure what it did but the only time I have to launch biotouch is after opening keyboard....not even after a SR!!! I guess it keeps biotouch running or somehow launches it automatically. Just my 2cents...
Click to expand...
Click to collapse
Just so you know ... typically a Windows Mobile cab file contains a _setup.xml file. This file is what tells the OS what steps to perform in order to install the cab file. This particular cab file puts four shortcuts into the Windows/StartUp folder. It also inputs the typical TFLOSettings into the registry ... most of which don't really apply to us, because it's touch.dll that's looking at these registry entries, and unless you've got an HTC Touch version of touch.dll, nothing is looking at those. The exception would be the Kaiser, where it does use some of those entries for the integrated TouchFlo scrolling.
I can't say specifically why this works for you ... it's a little counter to my experience, where I was finding that links to pre-load the cube apps in the startup folder were actually contributing to my black screens.
Regardless ... I can say a couple of things about this: 1) this also seems to support the fact that biotouch normally remains in memory. I wasn't sure that was the case, because the only way I could see the startup animation was running biotouch from scratch. I got response from my RFI in the Elf forums that confirms this. 2) I suspected also that the Elf pre-loads all of the cube apps, so they don't lag on the first cube rotation. I'm not really sure why this didn't seem to work on my device ... and I'll definitely be revisiting this concept when I do the analysis to determine the correct configuration for loading the cube with my new software.
Thanks for the input!
hey, i dont understand, AJE has ported the whole Biotouch on the HTC P3300..
Then what do you want to reinvent ?
Can't you see with him directly ?
Kona, you're not the only one who wants this working on a Kaiser.
My girlfriend got herself a touch and now I'm all jealous about her cube
I'm a programmer myself and I've been looking at the touch.dll from the kaiser. But I can't find the dll from the HTC Touch. Could you maybe attach it here so I can have a look at that one too. (Or link to it) I don't have the biotouch cube installed yet.
Do you have any idea if the cube should run in windows mobile emulator in visual studio ? I think i'm going to try that... less messing with my kaiser.
cAnArdtichAud said:
hey, i dont understand, AJE has ported the whole Biotouch on the HTC P3300..
Then what do you want to reinvent ?
Can't you see with him directly ?
Click to expand...
Click to collapse
To the best of my knowledge ... some people have indeed successfully created ROMs with a functioning Biotouch Cube interface (Artemis, Charmer, Wizard to name a few). But to do this, they actually replace the version of touch.dll that normally comes on the device with the version that comes with the Elf. While this is obviously a viable and functioning approach ... it can only be done through flashing a new ROM.
I wanted to pursue an option that could be installed via a cab. I also heard that trying to flash the Elf touch.dll on a Hermes was not working. Finally ... I haven't seen/heard of anyone trying to put an Elf touch.dll on a Kaiser, and writing my own biotouch interface application seemed a lot easier than learning how to cook my own ROMs.
Damn..it could be grat !!! xD
Denhomer said:
Kona, you're not the only one who wants this working on a Kaiser.
My girlfriend got herself a touch and now I'm all jealous about her cube
I'm a programmer myself and I've been looking at the touch.dll from the kaiser. But I can't find the dll from the HTC Touch. Could you maybe attach it here so I can have a look at that one too. (Or link to it) I don't have the biotouch cube installed yet.
Do you have any idea if the cube should run in windows mobile emulator in visual studio ? I think i'm going to try that... less messing with my kaiser.
Click to expand...
Click to collapse
No need to be jealous ... if you've already got the cube running, then try out my alpha release! Will run just as good as the Touch!
I sent you a PM re: the touch.dll
As for running the cube in the Windows Mobile 5 emulator ... I'm not sure. I never really tried ... and I'm not exactly sure how it works. I guess you'd have to able to install apps into the emulator environment (4 TouchFLO cube apps plus their graphics and registry entries). Anyone care to chime in about trying to do something like this in the Visual Studio device emulator?
I think i'm lucky !
i've just download your alpha and tested it.
it works great on my french kaiser .
no bug till now.i've tested it till 30 minutes.
perhaps a bit slow at the first seconds and then everythings went smoothly !!!
i don't see what could be improved !
btw, just wanted to point that i've duttythroy alpha2 installed at first and it worked on my kaiser with some modification :
i deldted apl - biotouch - hub fom windows\start up
and deleted a key in registry: quickdial
nice work !
one more question : why the time limit ?
Kona, just one suggestion. Would be great if the Cube can be rotated L-R and R-F using the D-Pad as well. I think that is far more reliable and quicker than using the finger.
Thanks for continue to work on the TouchCube as I thought it was an unfinished business.
Kona_Mtbkr said:
No need to be jealous ... if you've already got the cube running, then try out my alpha release! Will run just as good as the Touch!
I sent you a PM re: the touch.dll
As for running the cube in the Windows Mobile 5 emulator ... I'm not sure. I never really tried ... and I'm not exactly sure how it works. I guess you'd have to able to install apps into the emulator environment (4 TouchFLO cube apps plus their graphics and registry entries). Anyone care to chime in about trying to do something like this in the Visual Studio device emulator?
Click to expand...
Click to collapse
@Kona,
Do you think that this would work in the Blue Angel running WM6? I am asking simply because I do not feel like re-flashing my device.... again
Thanks!!!
megaman said:
I think i'm lucky !
i've just download your alpha and tested it.
it works great on my french kaiser .
no bug till now.i've tested it till 30 minutes.
perhaps a bit slow at the first seconds and then everythings went smoothly !!!
i don't see what could be improved !
btw, just wanted to point that i've duttythroy alpha2 installed at first and it worked on my kaiser with some modification :
i deldted apl - biotouch - hub fom windows\start up
and deleted a key in registry: quickdial
nice work !
one more question : why the time limit ?
Click to expand...
Click to collapse
Good to hear ... I hope you mean that even after the 30 mins, you still haven't had any problems.
The slowness in the first few spins of the cube is likely due to the fact that the individual apps for each cube face are not yet running, so they have to start up on the first spin. After that, it's much quicker to redisplay the cube face because those app stay memory-resident. In the installations that I've seen that use the ns script and Touchflo in the startup do not respond well when you try to "pre-init" the cube face apps in startup as well. I'm suspicious that it has something to do with this touchflo app, because in my mind, outside of preloading the cube apps, I don't know why anything other than FTouchFlo should need to be in startup. We'll see though ... I'll be working on getting a solid install from scratch soon.
And I agree ... I think dutty's alpha 2 install is a good base for me to start from (pending his approval). I'm hoping that I'll be able to rip the old parts out, and sub in my new app, and everything will work out great.
bchau said:
Kona, just one suggestion. Would be great if the Cube can be rotated L-R and R-F using the D-Pad as well. I think that is far more reliable and quicker than using the finger.
Thanks for continue to work on the TouchCube as I thought it was an unfinished business.
Click to expand...
Click to collapse
I was just thinking about what else I could try to add to my cube controller ... and spinning via dpad did cross my mind. This doesn't end up being exactly trivial, because I haven't made any mods to the actual biotouch.exe or any of the cube apps. When you're on a given face of an app ... it's that HTC app that is the foreground window. But I'm wondering if I can't register a listener for dpad events, and trigger the cube based on that. I'll put it on the wish list.
What can be done even sooner though ... is you will be able to assign any of the cube functions (open, close, left, right) to any hardware button you can assign a shortcut to. Actually, if you're familiar with link files, you can do it now ... but I'll be adding them in my next release probably too.
megaman said:
one more question : why the time limit ?
Click to expand...
Click to collapse
Oops, forgot to answer this. I added an expiration date simply because this is a very early alpha release. It hadn't yet been tested on anything other than my device ... and I didn't want someone to go crazy and burn it into their ROM.
Fear not ... I will remove the expiration date when I feel that the software is ready for a prime-time release. Although, I could be using this alpha just to get people hooked, and then complain about the vast amount of effort I put into the project and lack of donations received ... and threaten to never release a new version
Nah ... I wouldn't do that

[APP] [HELP] Advice on writing a touch friendly UI

I am currently writing an application for my WM6.1 device (HTC TouchHD), and wondered if anyone had come across a site, or if someone could point me in the right direction for finding a nice way of writing 'finger friendly' applications. By finger friendly, i mean being able to scroll with my fingers and so on. Or if there are any open source applications that I can use as a reference?
I don't particularly want to say what application I'm writing just in case it falls to pieces, but rest assured once it's written it will be put up on here!
Thanks,
evorgevol
I have just found this page which does me for scrolling parts of my application. The main thing I'm having issues with is that I want the main menu interface to resemble windows 7 media center, see here for a video of what effect I'm trying to achieve.
I know it's quite complicated, and I'm not the best programmer in the world, but hopefully I should be able to do it??
Any help will be appreciated. Thanks,
evorgevol
If I understand, you're trying to create an UI with a scrolling list useable with fingers.
Each item in the list, once selected, let appears different choices about this item (IE : a "Appointment" item in the list, when you select it, you have the next appointment displayed....). It that right ?
Doesn't it look like the new WM6.5 today plugin ? If that's you're idea, I'm 100% on your side to develop a today plugin looking like these menus (WM6.5 / WM7 MC) !
(In fact, I'm already searching if somebody could develop something like this : http://forum.xda-developers.com/showthread.php?p=3375478)
The one I'm doing is not necessarily for a today page, more for my own application, tho it should be able to be easily used in any other application once the code has been written. I just need a push in the right direction for me to be able to write the code in the first place. I'm also deliberating what format to write my application in, and which ones are available. I will only be supporting from WM6 onwards, tho it could potentially be backwards compatible with 5. Ideal would be silverlight being able to be used, but unfortunately that hasnt been released for mobile yet (it would mean that my application should run on any platform that supports Silverlight).
Try iContact. I suppose the code is open. Also try PockeTwit from google code. Install these apps and if that is the effect you want to achieve, I suggest you grab the code and understand it (that's what I would do if I was in your position)

Categories

Resources