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) |


Profile Dashboard Skins Other
Products Links Contact
Dashboard Skins Creating
Skins Other Skins
© SnoopSoft Inc. All rights reserved.
Web Design by sitesUnseen, Internet Concepts Unlimited.
|