SnoopSoft Inc
Profile Dashboard Skins Other Products Links Contact
Dashboard Skins Creating Skins Other Skins
Company Profile

Creating Skins

New Features tagged in RED

SnoopSoft Dashboard is a skinnable Today Page plug-in for your PocketPC.

If you would like more information on this product, please check out our SnoopSoft Dashboard Product Page.

Larry Allen's SkinMe program that makes creating SnoopSoft Dashboard skins a simple task that can be easily accomplished right on your desktop PC! A very special THANKS to Larry for taking the time and effort to put together this program!! Check out his DesertWare's SnoopSoft Dashboard SkinMe Site for more information and to download your copy today!

This page will help you quickly get started developing Skins for our SnoopSoft Dashboard product. With the instructions on this page and the sample skins provided on our SnoopSoft Dashboard Skins Page you should be creating your own skins in no time at all!

Also, be sure to read the comments inside the skin file. All of the SnoopSoft Skin files are completely commented.

A SnoopSoft Dashboard skin is defined as a collection of bitmaps that make up a theme. It appears that the maximum size of the bitmap is 240x270 (WxH). There are currently 5 views in the SnoopSoft Dashboard product (Agenda, Inbox, Tasks, Launcher and Personal). As a skin designer, you can choose to use one skin bitmap for all areas, use several and let the program rotate through them as the user changes views, or specify individual bitmaps for each view - giving you complete control over the user's environment.

Because SnoopSoft Dashboard has multiple views of data, the skin definition can contain multiple bitmaps. Very little robustness is coded into this version of the skin parser, so please follow the rules and examples to get the desired effects.

Naming Conventions

If you name all your skins with a prefix (i.e. snoop[nnn]) then you will avoid stomping on someone else's skin files. Also, it's a good idea to name all of the files in a single skin collection with a prefix (i.e. macimg1.jpg, macimg2.jpg, mactool1.bmp, etc...) With the subfolder support provided in the registered user release, users can place all skin files together in one folder for easy navigation and possible deletion.

Any skin produced for version 1.2.001 or higher should contain the following heading:

[SnoopSoft Dashboard Skin File v1.2]

[SkinFamily]

Example:
SkinFile = Symbian.dsh 240 320
SkinFile = SymbianLS.dsh 320 240

The SkinFamily section contains a listing of all Skins in the family. This is used to determine which skins will be used for what resolution and will allow SnoopSoft Dashboard to select another skin from the same skin family when the user changes the resolution on the fly (such as Portrait to Landscape).

It consists of one or more SkinFile tags followed by the file name for the skin and the screen resolution (Width, Height) that it is designed for. The current skin must be included in this section since you have no way of controlling which skin in the Family may be loaded initially.

[WISBar]

Example:
BackgroundImage = wis_bar.bmp
StartLogoImage = wis_startlogo.bmp
TodayIcon = wis_today.bmp
MenuIcon = THIS TAG IS OBSOLETE
VolumeIcon = wis_volume.bmp
MuteIcon = wis_mute.bmp
OKIcon = wis_OK.bmp
CloseIcon = wis_close.bmp
CloseHoldIcon = wis_closehold.bmp
TitleColor = 0,0,0
DateColor = 0,0,0
ClockColor = 0,0,0
TimeColor = 0,0,0
SmallColor = 0,0,0
MemoryColor = 0,0,0
Order = Date, Time, SmallDate, Memory, Today, Volume, OK
Display = Image, Logo, NoDate, Time, NoSmallDate, NoMemory

The WISBar section is used to reconfigure WISBar to be compatible with your skin. There's no reason to provide a WISBar section unless you're trying to provide a comprehensive skin for the device. However, as more and more users load up GigaBar and WISBar, these sections are becoming much more popular.

The most recent additions to this section are in support of the Pelmar WISBar program. Pelmar has taken over the development of WISBar and have been modifying the code to be more compatible with the new devices as well as add in some great features that really round out the program.

I've tried to pull out all of the skin-configurable settings without altering any of the main user-preference type settings. That way you get the look you're going after without screwing up the user's personal preference settings in WISBar. Let me know if you think I've missed any settings.

The only notable thing here is that if you set the remove the StartLogoImage filename but leave the line - ie:
StartLogoImage =
SnoopSoft Dashboard will instruct WISBar to remove the Start Logo image from the display.

The 'Order' tag *MUST* contain all seven (7) items or the settings will not be sent to WISBar. It doesn't matter if some are turned on or off - they must all be present in some order on this line. The order the items appear on this line is the same order that WISBar will use to display them.

The 'Display' tag can contain the following values separated by commas:

Image enables background image
NoImage disables background image
Logo enables Windows Logo image
NoLogo disables Windows Logo image
Date enables the date display
NoDate disables the date display
Time enables the Time display
NoTime disables the Time display
SmallDate enables the Small Date/Time display (and disables the Date and Time if enabled)
NoSmallDate disables the Small Date/Time display
Memory enables the Memory/Battery display
NoMemory disables the Memory/Battery display

[GigaBar]

Example:
SkinFile = iMac

The GigaBar section is used to reconfigure GigaBar to be compatible with your skin. There's no reason to provide a GigaBar section unless you're trying to provide a comprehensive skin for the device. However, as more and more users load up GigaBar and WISBar, these sections are becoming much more popular.

All you need to provide is the name of the GigaBar file for your skin. SnoopSoft Dashboard will automatically append the .GIF extension to file filename and attempt to copy the file from the current location of the skin into the GigaBar Skins folder on the device.

[Bitmaps]

Example:
NbrBackgroundAll = 1 240 320
BackgroundAll = Symbian.jpg
TodayFile = SymbianToday.TSK
BackgroundMiniLaunch = SymbianMini.jpg
ImagesToolbar = Symb_T1.bmp 42 27
ImagesSecondBar = Symb_T2.bmp 50 16
ImagesPOOM = Symb_Poom.bmp 11 11
ImagesPageSelect = Symb_Page.bmp 16 16
ImagesOption = Symb_Option.bmp
ImagesHelp = Symb_Help.bmp
ImagesSepToday = sep_today.bmp
ImagesSepLine = sep_line.bmp

The Bitmaps section is where you define all of the images that will be used by the skin. You must start this section with a count of the number of BackgroundAll tags that will follow by using the NbrBackgroundAll tag.

The NbrBackgroundAll tag has been enhanced to accept a width and height that applies to all backgrounds in the skin. If these values are left blank, then the default 240 (W) and 320 (H) values will be substituted for backwards compatibility. If your skin is intended for an alternate resolution (such as landscape) then you must enter the intended screen resolution (not bitmap size) here. For instance, for a skin intended for Landscape mode on a PocketPC, this line would look something like this:

NbrBackgroundAll = 2 320 240

Each BackgroundAll tag indicates an image that will be used for any view in the program. You can optionally lock down an any image for any view with the following tags:

TodayFile If a Today File is specified in the skin, you do not need to specify a background image for your skin. Just set the NbrBackgroundAll tag to zero (0) and the program will use the Today image wallpaper from the Today Theme (.TSK) file.
BackgroundAgenda specifies image file that is always used by the Agenda view
BackgroundEmail specifies image file that is always used by the Mail view
BackgroundTasks specifies image file that is always used by the Tasks view
BackgroundLaunch specifies image file that is always used by the Launcher view
BackgroundMyDash specifies image file that is always used by the MyDash view
BackgroundMiniLaunch specifies image file that is used by the MiniLauncher (must be width of main view and height of 20). Keep in mind that the user can position the MiniLauncher at the top of the main view or at the bottom of the main view and you should create the image to accomodate either setting.

However, please note that if you don't want to lock down a specific image to a specific view, placing all the bitmaps into BackgroundAll tags will allow them to rotate between views. I only say this because I've seen several skin submissions that contain about 8 different image files, yet the skin designer locked down a specific image to each view - thereby forcing SnoopSoft Dashboard to use only those images and the remaining images would never appear.

Following the Background image tags are the toolbar and other assorted icon files that can be defined as part of the skin. These files must not be JPG files due to the transparancy issues that arise - they must be Windows Bitmap files. If you are not replacing one of these sets of images, just use the Default[nnn] filename and the default images will be used. After each filename specify the width and height of one image in the file. To space out the main Toolbar images on the screen around other graphics, then space them out in the image file by the width that you entered into the skin definition. The program will use this width setting literally, so don't assume that the program will artificially space out the toolbar images for you automatically.

Image icons (toolbars, Pocket Outlook (POOM), Page Select Icons and Power) are defined using the following tags in the Bitmaps section of the file (again, these images must be normal bitmap files):

ImagesToolbar Main toolbar images (Agenda, Tasks, Mail, etc...)
ImagesSecondBar Secondary toolbar images (Font, Refresh, Execute)
ImagesPOOM Pocket Outlook images (Task boxes, alarm, recurring appt., etc...)
ImagesPageSelect Page Selection toolbar images (Page left, Page, Page Right)
ImagesPower Battery Power Images
ImagesOption Option button image. Since this image is optional, you can use the text 'DEFAULT' (without the single quote) to instruct the program to use the built-in 16x16 Option button image. Omitting this entry just means that Dashboard will not display an Option button on your skin. You can still place an Option area on the skin and put the button into the background image just like in the past.
ImagesHelp Help button image. Since this image is optional, you can use the text 'DEFAULT' (without the single quote) to instruct the program to use the built-in 16x16 Help button image. Omitting this entry just means that Dashboard will not display an Help button on your skin. You can still place an Help area on the skin and put the button into the background image just like in the past.
ImagesSepToday Defines the Separator Line image that will be used to separate Today or Dashboard modules within a view. This was added to allow the separator line to blend in and distinguish the skin.
ImagesSepLine Defines the Separator Line image used within a Dashboard module below any type of heading (such as a date or the main text "Tasks"). Instead of just drawing a solid color line, using this option in a skin allows the designer to really personalize the skin with a fading line or some other fancy graphic.

For a detailed explanation of the contents of each image file, see below.

Note: The background color for toolbar icon files must be purple - RGB(128, 0, 128) - because that is currently hardcoded as the transparancy color. In a future version I plan on removing this limitation and allowing skin developers to define whatever transparent color they want.

Toolbar1 Icons

Agenda | Email | Tasks | Launcher | Personal Page (repeat with non-selected image)

Toolbar2 Icons

FontSmall | FontMedium | FontLarge | TaskIncomplete | TaskComplete | TaskIncompleteDisabled | TaskCompleteDisabled | Refresh | Sort | Run

PageSelect Icons

Prev | PageNbrArea | Next | PrevDisabled | PageNbrArea | NextDisabled | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Calendar

POOM Icons

Blank | HighPriority | LowPriority | TaskIncomplete | TaskComplete | Recurring | Reminder | Recipients | DropDownArrow | Private | Left Arrow | Up Arrow | Unread Mail | Unread Mail w/ Attachment | Read Mail | Read Mail w/ Attachment

Power Icons

Plugged In | Charging | Battery Power Full | Battery Power 75% | Battery Power 50% | Battery Power 25% | Battery Power Empty

Help Icon

Options Icon



[Areas]

Every bitmap in a Skin must share common areas for the major parts that are listed out above. These areas are deinfed as a rectangle on the screen using left, top, right, bottom nomenclature for the exact coordinates of the rectangle.

The major areas of the bitmap are:

Toolbar1

this is the area for the large toolbar used to change between views. If an individual toolbar rect is not specified then this area is divided by 5 horizontally to accomodate all toolbar icons.

Tool1_Agenda individual toolbar rect for the Agenda icon
Tool1_Mail individual toolbar rect for the Mail icon
Tool1_Tasks individual toolbar rect for the Tasks icon
Tool1_Launcher individual toolbar rect for the Launcher icon
Tool1_MyDash individual toolbar rect for the MyDash icon
Tool1_T_Agenda tap hit recognized in this rect for the Agenda icon
Tool1_T_Mail tap hit recognized in this rect for the Mail icon
Tool1_T_Tasks tap hit recognized in this rect for the Tasks icon
Tool1_T_Launcher tap hit recognized in this rect for the Launcher icon
Tool1_T_MyDash tap hit recognized in this rect for the MyDash icon

Toolbar2

this is the view-specific toolbar (size, refresh, etc.)

Toolbar2_Icon1 individual toolbar rect for the first Toolbar2 icon (Font)
Toolbar2_Icon2 individual toolbar rect for the second Toolbar2 icon (Refresh)
Toolbar2_Icon3 individual toolbar rect for the third Toolbar2 icon (Execute)

NOTE: Even though these are all set to be (Font/Refresh/Execute) for all SnoopSoft Dashboard modules (Agenda, Mail, etc...) do not hardcode images into these areas because Module developers are not forced to 1. use a secondary toolbar or 2. use the same meanings for the secondary toolbar icons that the program currently uses. Just give them the space, don't pre-fill it with anything.

PageSelect

this is where the next/prev page buttons go

PageSelect_Icon1 individual toolbar rect for the first PageSelect icon (Left)
PageSelect_Icon2 individual toolbar rect for the second PageSelect icon (Page)
PageSelect_Icon3 individual toolbar rect for the third PageSelect icon (Right)

NOTE: Even though these are all set to be (Left/Page/Right) for all SnoopSoft Dashboard modules (Agenda, Mail, etc...) do not hardcode images into these areas because Module developers are not forced to 1. use a PageSelect toolbar or 2. use the same meanings for the PageSelect toolbar icons that the program currently uses. Just give them the space, don't pre-fill it with anything.

OptionBtn This area is used to display the options button which when pressed will bring up the Options dialog.
HelpBtn This area is used to display the help button which when pressed will bring up the online help.
MiniLauncher OPTIONAL: individual rect for the Mini Launcher - overrides display of Mini Launcher inside of the Main View rect and forces the Mini Launcher to always appear at these coordinates in the skin. This rect must have a height of at least 20 pixels or the MiniLauncher will not appear. NOTE: v1.2 of the program no longer requires this rect to be padded so when designing your skin make sure that the rect goes all the way to the boundary on the graphic.
Main This is the main area that SnoopSoft Dashboard uses to display info such as Task and Appointment items.
NOTE: v1.2 of the program no longer requires this rect to be padded so when designing your skin make sure that the rect goes all the way to the boundary on the graphic.

NOTE: Currently, if individual toolbar rects are not provided then the toolbar will be drawn horizontally using the main Toolbar rectangle provided. For backwards compatibility, you should always provide the main toolbar rects even when overriding with individual toolbar rects. This will cause your skin to look weird on an older version, but at least it will still work!

[Text]

Example:
Date = 0,0,0,0 Right Tahoma,10,B 0,0,0
Toolbar = 0,0,0,0 Right Tahoma,10,B 0,0,0

The Text section of the Skin definition file lays out the Toolbar Text and Date Text areas, position (Right, Center, Left), font information (currently ignored) and color.

The Toolbar text is the description for each view that is visible on some skins as 'Agenda', 'Tasks', etc...

The Date text is used to display the current date in the device's long date format. Each of these areas can be disabled by setting their rect area to 0,0,0,0.

WARNING

Do not change the Date and Toolbar text Font - it will not be used by the program.
You can change the point size and the Bold or Normal options for these fonts in v1.5 and higher.

[MainText]

Example:
ColorNormalText = 0,0,0 0,0,0 255,0,0 0,0,192
ColorMailText = 0,0,0 128,0,0 0,0,220 0,0,0
ColorHighPriorityText = 255,0,0
ColorLowPriorityText = 0,0,192

This section is where you can define the text color for the items inside the main body area of the skin. For example, Appointment Subject and Location, Dates, etc... text colors are defined inside this portion of the skin definition file.

Valid values here are:

ColorNormalText RGB values to use for the Normal, Header, High Priority and Low Priority for all views. RGB values for each type (Normal, Header, High Priority and Low Priority) of text can all appear on one line separated by spaces or tabs. If the skin does not specify specific colors for a particular view, then these colors will be used.
ColorAgendaText RGB values to use for the Normal, Header, High Priority and Low Priority for the Agenda view. RGB values for each type (Normal, Header, High Priority and Low Priority) of text can all appear on one line separated by spaces or tabs.
ColorMailText RGB values to use for the Normal, Header, High Priority and Low Priority for the Mail view. RGB values for each type (Normal, Header, High Priority and Low Priority) of text can all appear on one line separated by spaces or tabs.
ColorTasksText RGB values to use for the Normal, Header, High Priority and Low Priority for the Tasks view. RGB values for each type (Normal, Header, High Priority and Low Priority) of text can all appear on one line separated by spaces or tabs.
ColorLauncherText RGB values to use for the Normal, Header, High Priority and Low Priority for the Launcher view. RGB values for each type (Normal, Header, High Priority and Low Priority) of text can all appear on one line separated by spaces or tabs.
ColorMyDashText RGB values to use for the Normal, Header, High Priority and Low Priority for the MyDash view. RGB values for each type (Normal, Header, High Priority and Low Priority) of text can all appear on one line separated by spaces or tabs.
ColorHighPriorityText Old - used for backward compatibilty only.
RGB values to use for High Priority or Overdue items
ColorLowPriorityText Old - used for backward compatibilty only.
RGB values to use for Low Priority items
ColorHeadingText Old - used for backward compatibilty only.
RGB values to use for the Headings displayed (i.e. Date and Task Category headings)