Fri, December 29, 2006, 08:44 PM under Windows
When I introduced the SideShow gadget fundamentals
, I listed 3 types of communication between the gadget running on the PC and the SideShow-compatible device. You know how to design your SCF content
and then download it via the managed API
. Here I will introduce notifications and events.Notification
Sending a notification down to the device takes one line of code, given that you already have a ScfSideShowGadget
reference as described before
Icon ico = new Icon(@"C:\Users\Public\Pictures\SideShow\SSnotification.ico");
100, // unique content id
"some caption", // caption
"some message", // body
ico, // icon to appear on the far right of the body
TimeSpan.FromSecondss(30)); // timeout interval
Executing the above will result in the behaviour captured below on the SideShow simulator:
The notification will time out after the timeout period specified or the user can manually dismiss it with the ENTER button or, finally, you can programmatically dismiss a notification by its id e.g.
or a more brutal approach
There are 9 events that you can handle programmatically on the PC-side while the user performs actions. The following code shows hooking up to them
g.AllDevicesRemoved += new EventHandler(g_AllDevicesRemoved);
g.ContentMissing += new EventHandler <ContentMissingEventArgs> (g_ContentMissing);
g.ContentNavigate += new EventHandler <ContentNavigateEventArgs> (g_ContentNavigate);
g.ContextMenuSelect += new EventHandler <ContextMenuSelectEventArgs> (g_ContextMenuSelect);
g.DeviceAdded += new EventHandler <DeviceCapabilityEventArgs> (g_DeviceAdded);
g.DeviceRemoved += new EventHandler <DeviceCapabilityEventArgs> (g_DeviceRemoved);
g.GadgetEnter += new EventHandler(g_GadgetEnter);
g.GadgetExit += new EventHandler(g_GadgetExit);
g.MenuSelect += new EventHandler <MenuSelectEventArgs>(g_MenuSelect);
when the user navigates from the glance data page (id=0) to the SCF pages and back.
when SideShow-compatible device connect or disconnect from this gadget.
when the user selects one of your menus or opens your contextmenus.
every time the user traverses from one SCF page to another.
if a user action results in a request for a content id that is not on the device.
The event handler method signatures for these follow the standard .NET pattern of having two parameters. The first being the sender object and the second being a type that inherits from EventArgs
. The following class diagram shows the EventArgs classes with their members so you can get an idea of the information you receive with each event mentioned above:
Stay tuned on this blog for more on SideShow gadget development in the new year ;-)