HomeScreen PlusPlus UI – Customization Manual – formerly BatteryStatus

A battery plugin for the ToDay-Screen
Manual for Creating Themes

Table of Contents – Customization
whats here and where to go
  • 1. Main Page
  • 2. Manual Free Edition (How To)
  • 3. Manual Advanced Edition (How To)

    Support in Deutsch: http://www.ppc-welt.info/community/showthread.php?p=1173010

    3.3. Customization
    needs 1.04.202 and higher versions

    With advanced version you can customize the position, size, font, trayicons and images by means of an xml-file. The xsd-schema (http://www.chi-tai.net/HomeScreen.xsd) can tell you exactly what is allowed and whats not (preconditioned you know a bit about xsd).

    Recommended steps for customization :

    • Download an editor, e.g. Komodo Edit (Freeware/Open Source)
    • Download mytheme.xml to your desktop-computer or copy the default.xml deployed with installation.
      \\Program Files\\HomeScreen PlusPlus\\default.xml
    • open mytheme.xml e.g. with Wordpad, better use a validating xml-editor like XMLSpy
    • modify the content
    • upload your mytheme.xml to http://www.w3.org/2001/03/webdata/xsv in order to validate against the schema ( http://www.chi-tai.info/HomeScreen )
    • in case its valid and 100% okay, then copy your mytheme.xml back to your device, e.g.
      \\Program Files\\HomeScreen PlusPlus\\mytheme.xml
    • select your mytheme.xml in “Tools”-Tab (Options)

    If mytheme.xml is not well-formed or valid against the schema, then the inbuild default will be used !!!

    The xml-parser is some kind of tolerant and uses default values for error cases, but your xml-customization will work 100% perfectly only if it passes the schema-validator successfuly.

    You can define:

    • A HomeScreen PlusPlus-Window contains 1..x Rows and can have 0..x images
    • each Row contains 1..x Views and can have 0..x images
    • each View contains 1..x Items and can have 0..x images
    • each Item contains 0..1 image and/or 0..1 label
    • an Item must contain 1 class, which refers to the reading-content
    • an image can have a path to a bmp/png/gif/jpeg, so you can build your own vga-theme
    • there are much more things you can define and the best is to have a look at the examples and into the XML-Schema !!!

    How does it work?

    The concept behind customization is similar to the object-orientation paradigm:
    If you use a class for an Item
    -> then the Item is an instance of that class.

    The instance (Item) has default-values for all attributes
    -> and you can change almost any of these attributes.

    A Short Introduction to the Syntax of Xml
    the most important things for customization
    • Xml is case sensitive, that is <Window> and <window> does NOT mean the same!!!
    • An xml-document is build and structured hierarchically like a tree using Markups which marks nodes, that is a node can have child-nodes and so on, but there is only one root-node. In our case the root-node is marked as <Window>.
    • Each node must be closed, that is in case the node contains child-nodes:
      <Window> …. </Window>
      In case the node does not contain child-nodes you can use the short form:
      <Window … />
    • Nodes can have attributes whereas its value MUST be enclosed with quotes, e.g. <Window version=”1″>

    A Short Description of the Concept
    short intro

    In the following sketch, you can see an outline of the default.xml (Click on the picture to enlarge).

    Example 1

    There is one Row which contains one View. The View consists of 4 Items. As you may guess the order of Rows from top to bottom is the same as in the plugin and the order of Items from top to bottom is directly connected to left-right in the plugin.

    An Item needs at least a class, which specifies the reading and a function.

    Actually the Item contains an image and lable with height, width, left and all the attributes, but they all get default-values, so you don’t have to specify them. If you’re building your own theme and e.g. want a smaller width or another font, then you have to specify what you want with the attributes. Lets consider the next sketch.

    Example 1

    Here you can see two Rows, which are ordered top to bottom as in the plugin.

    Example 1

    Here you can see a Row which contains three Views as with the calltimes-row. You can toggle between the Views and specify the Items you want for any View.

    Example 1

    Here you can see where the Item in the first View is placed into the plugin.

    Example 1

    In this sketch you can see that some attributes for the Item was adapted. The image correlates to the image of the calltimes-view and the label correclates to the label. Each Item consists of an image and/or a label by default. The image was resized to 100% in the sketch, which actually does nothing because 100% is the normal size of the image. The width of the label is limited to 180px by specifying the width-attribute.

    Example 1

    Each Item is of a specific type, e.g. lefticon, lefticonvalue, icon, iconvalue and so on. The type controls how the painting machine works and what it draws. If the type is icon, then only an image and no label will be drawn. If the type is value, then only a labe will be drawn.
    In the sketch you can see in the upper section an Item of type lefticonvalue, which is special. A lefticon will draw an image starting at the leftmost-position. In the lower section you can see the class battery_ac_icons which has only an image to draw at the leftmost position. There is also a the class battery_meter, which is of type iconvalue means that is consists of an image and label.

    Examples
    some examples how to use the classes
    Download: Simple text/label - 2,857 Hits
    Version: 0.1
    Updated: May 12, 2008
    Size: 606 bytes
    Download: Application Launcher - 3,019 Hits
    Version: 0.1
    Updated: May 12, 2008
    Size: 1.35 KB
    Download: Sliding Application Launcher - 3,667 Hits
    Version: 0.1
    Updated: May 12, 2008
    Size: 733 bytes
    Download: Integrate Background Images - 2,289 Hits
    Version: 0.1
    Updated: May 12, 2008
    Size: 14.11 KB
    Download: Simple Digit Clock - 2,876 Hits
    Version: 0.1
    Updated: May 12, 2008
    Size: 32.43 KB
    Download: Digit Clock with Seconds - 2,551 Hits
    Version: 0.1
    Updated: May 12, 2008
    Size: 32.8 KB
    Download: Digit Clock with extra Images for Seconds - 2,684 Hits
    Version: 0.1
    Updated: May 12, 2008
    Size: 60.71 KB
    Download: Using alternate images - 2,018 Hits
    Version: 0.1
    Updated: May 12, 2008
    Size: 15.18 KB
    Download: Registry Tracker - 1,981 Hits
    Version: 0.1
    Updated: May 12, 2008
    Size: 794 bytes
    Download: Selection Mode (selmode) - 1,868 Hits
    Version: 0.1
    Updated: May 12, 2008
    Size: 994 bytes
    Download: Switching Views - 2,204 Hits
    Version: 0.1
    Updated: May 12, 2008
    Size: 15.19 KB
    Download: Switching two Views with TinyBatch - 2,037 Hits
    Version: 0.1
    Updated: May 21, 2008
    Size: 21.15 KB

    You can set fonts
    for label, specifies how to render text

    for Window/Row/View/Item-Tags, which will be bequeathed to sub-tags. Use the following attributes:

    Optional Font Attributes

    Name Value Description
    fontsize x Fixed fontsize x.
    -x/+x Relative fontsize depending on the fontsize set by enclosing tags.
    fontfamily Fontfamily e.g. Tahoma.
    You can use custom ttf-fonts as well: Copy the ttf-font to \Windows\Fonts and supply the name in fontfamily-attribute, font will then be used after reboot!

    Note that the fontfamily/fontsize is used for any subsequent tags enclosed by, but you can specify a different fontfamily/fontsize for subsequent tags though.

    Window
    Root of the document

    Lets consider the Window-Tag at first. The Window-Tag contains anything which can be shown on clientarea of BattteryStatus-window. The attributes in Window-Tag determines global parameters for each subtag.

    Only classes contained in the theme can be shown, that is classes not included in the theme are disabled and can not be enabled even if it is checked in options. e.g. if no calltimes-class is included, then no code for counting calltimes (e.g. sms) will be executed. But almost any class contained in window can be disabled/enabled in options.
    Furthermore there are classes (DigitClock, Registrytracker, etc.) and actions (MenuPhone, ToggleA2DP, etc.) which can only be enabled/disabled by including them into the window.

    A Window can have several image-tags specifying background-images, which are painted before any contained items are painted. An image-tag can make use of any attributes allowed and described for image-tag.

    Required Attributes

    Name Description
    xmlns This is used as the schema-location for schema-validation. You should always supply this attribute and validate each xml-file.
    imagesrc This is the relative path starting from “\Program Files\HomeScreen PlusPlus\” for any image-filename in image-tags. If you create your custom theme, then create a new directory, e.g. “\Program Files\HomeScreen PlusPlus\MyTheme” and set imagesrc=”MyTheme”.
    Note: A custom image-directory is recommended, otherwise your images will get lost with an update to a newer version.
    version obsolete – will be ignored

    Optional Attributes

    Name Description
    absolute This attribute controls how to position the image/label. The left-attribute (if given) is added to that position. see absolute explanation.
    animate Add 100 to the animation-value for dynamically adapting left / right animation, e.g. animate=”101″ means that if the next View is left from the current one, then animation 1 will be used. If the next View is right from the current one, then animation 2 will be used.
    The 100-option can be used for any of the animation with the option for left or right.

    • 0 = no animation for switching Views.
    • 1 = (default) left slide in animation.
    • 2 = right slide in animation.
    • 3 = top down slide in animation.
    • 4 = bottom up slide in animation.
    • 5 = left page flip animation
    • 6 = right page flip animation
    • 9 = left in cube
    • 10 = right in cube
    • 14 = zoom in
    • 15 = zoom in with left leave
    • 16 = zoom in with right leave
    • 20 = alpha blend in
    • 21 = alpha blend in with left leave
    • 22 = alpha blend in with right leave
    animatebg This attribute allows for a different color for the background, while the animation performs.

    • missing attribute = the theme-background (watermark) is used for drawing the background.
    • 0xFF000000 = use background of default todayscreen for drawing the background.
    • BGR-Color = Filled rectangle with color in BGR-Colorformat

    animatebg=”0″ -> black color is used (0x000000): BGR -> Black = 00, Green = 00, Red = 00
    animatebg=”0xFFFFFF” -> white color is used: BGR -> Black = FF, Green = FF, Red = FF (whereas 0xFF is hexadecimal and is 255 in decimal).

    custombg -1 = use alpha-channel-rendered background for Items only if it has no selection-effect
    0 = use system default background for any Items
    1 = use alpha-channel-rendered background for any Items
    fontsize see fontsize explanation.
    fontfamily see fontfamily explanation.
    itemselect specifies the granularity of items to select for One-Hand-Navigation.

    0: (default) By default each Row is selected en bloc.
    1: Each contained Item can be selected using navigation-keys.
    2: Keep selected state even if Row is not visible.
    3: Execute Action as soon as Item gets selected.

    Use negative values for preventing the action of rightmost item to be executed if dpad-right is pressed, e.g. itemselect=”-1″

    gesture 1 (default) = allow left/right/top/down-gesture for switching Views
    0 = disable gestures
    mode 0 = coordinates are qvga, 1 = coordinates are vga, 2 = no adaption to resolution
    selmode specifies how the contained Items are transformed/moved if selected.

    -x: Item will be moved to lower-right by x-pixel.
    0: (default) No selection-effect but drawing background.
    x: Item will be streched by x-pixels.

    Sample

    
        .
        
        .
    

    Row
    Container for Views

    A Window must contain one or more Rows and the sequence of the Rows are the same as on clientarea. A Row can have the attributes fontsize and fontfamily.

    A Row can have several image-tags specifying background-images, which are painted before any other contained items are painted. A image-tag can make use of any attributes allowed and described for image-tag.

    Optional Attributes

    Name Description
    fontsize see fontsize explanation.
    animate see animate explanation.
    fontfamily see fontfamily explanation.
    gesture see gesture explanation.
    itemselect specifies the granularity of items to select for One-Hand-Navigation.
    For details see Itemselect Details
    itemrepos Controls repositioning of Items in case an Item is disabled by options. Consider the temperature-reading (of battery). If the temperature-reading is disabled, then the Item of next View is placed there instead. For this function, the Items sizes (image and label) must be almost the same.

    0: (default) No repositioning
    1: Reposition the containing Views if required.

    name Supply a name for this row in context-menu (Show Rows).
    seperator draws a seperator/line at bottom of the row
    0 = no seperator
    1 = draw a seperator
    absolute This attribute controls how to position the image/label. The left-attribute (if given) is added to that position. see absolute explanation.
    rowtoggle this attributes determines whether the visibility of next row shall be toggled
    0 = no toggle
    1 = toggle next row (default)
    selmode specifies how the contained Items are transformed/moved if selected.

    -x: Item will be moved to lower-right by x-pixel.
    0: (default) No selection-effect but drawing background.
    x: Item will be streched by x-pixels.

    Sample

    
    		.
        
    		.
        
            .
            .
        
          .
          .
          .
    

    View
    Container for Items

    Each Row must contain one or more Views. Consider the calltimes-row which have three views for incoming, outgoing and both summed up.

    Each Views can have several image-tags specifying background-images, which are painted before any other contained items are painted. A image-tag can make use of any attributes allowed and described for image-tag.

    Optional Attributes

    Name Description
    animate see animate explanation.
    extend This attribute allows for extending “Reach”/”UpdateRegion” of a View, e.g. extend=”6″ for 6 pixels.
    This is particularly for sliding Views that have Items which are oversized if selected (or unselected),
    that is they overlap with adjacent Views. You can render such Views correctly by extending the Update-Region of that particular View.

    Note: Don’t extend a View if it’s not needed, because it could reduce render performance.

    height 1. If no height is given, then the system default (device-dependend) will be used for each View.

    2. If a height is given, then it will be used for the current View.
    2.1 Furthermore it will be used for any subsequent View of the enclosing Row too (unless a new height is given).

    fontsize see fontsize explanation.
    fontfamily see fontfamily explanation.
    gesture see gesture explanation.
    absolute This attribute controls how to position the image/label. The left-attribute (if given) is added to that position. see absolute explanation.
    itemselect specifies the granularity of items to select for One-Hand-Navigation.
    For details see Itemselect Details
    multi specifies if the contained items are placed as multiple lines.

    0: (default) View shall be handled as 1 line.
    1: Contained Items shall be handled as multiple lines

    adaptwidth If the screen-width changes, then the last Items text-box-width of each View will be adapted to fit the new width (by default).

    0: dont adpat the View to width.
    1: (default) adapt width of last item to fit new width

    selmode specifies how the contained Items are transformed/moved if selected.

    -x: Item will be moved to lower-right by x-pixel.
    0: (default) No selection-effect but drawing background.
    x: Item will be streched by x-pixels.

    slide Supports only Application-Launcher-Views. Allows to slide the View by stylus or left/right finger gesture. You can place a lot of Items in one View and slide the View similar to a ring.

    0: (default) no sliding of that View.
    1: slide the View

    Sample

    
    		.
        
    		.
        
            .
            .
        
          .
          .
          .
    

    Item
    Container for image/label, specifies what to draw and how to render it

    Most of the attributes are designated for the Item-Tag. Each Item can have a label-tag and an image-tag depending on the class and type. The sequence of Item-Tags are the same as shown from left to right. The width of each item is calculated dynamically depending on the bitmap-size and the attributes given in the subtags.

    Sample

    
        
        

    Required Attributes

    Name Value Description
    class Each Item-Tag must have a class, which determines the text to show or the function it provides. If there is only a classname given, then any other values for an instance of this class (on today-screen) will get the default.
    battery_ac_icons Leftmost icons for battery/ac in first row.
    battery_meter Batterylevel, which will be drawn and percentage as text, e.g.

    100%
    mobile_operator_homezone Mobile operator with homezone-icon.
    mobile_operator Mobile operator, where you can provide your network provider logo.
    cell_broadcast_message Cell broadcast messages limited to 160 characters.
    cpuspeed e.g.

    195 MHz
    cpu_utilization Cpu-utilization, which will be drawn and percentage as text, e.g.

    1%
    memory_program Free program memory, e.g.

    25 MB
    memory_data Free data memory, e.g.

    25 MB
    memory_sdcard Free memory on sd-card, e.g.

    4.0 GB
    temperature Battery-temperature, e.g.

    30 C
    powerdrain e.g.

    64 mA
    500 mW
    phone_signal e.g.

    90%
    calltimes_out_sms Outgoing calltimes with outgoing sms (monthly/daily), e.g.

    T: 00:00:00, M: 00:00:00, SMS 200
    calltimes_in_sms Incoming calltimes with incoming sms (monthly/daily), e.g.

    T: 00:00:00, M: 00:00:00, SMS 200
    calltimes_inout_sms Incoming + outgoing calltimes with incoming + outgoing sms (monthly/daily), e.g.

    T: 00:00:00, M: 00:00:00, SMS 200
    calltimes_out Outgoing calltimes (monthly/daily), e.g.

    T: 00:00:00, M: 00:00:00
    calltimes_in Incoming calltimes (monthly/daily), e.g.

    T: 00:00:00, M: 00:00:00
    calltimes_inout Incoming + outgoing calltimes (monthly/daily), e.g.

    T: 00:00:00, M: 00:00:00
    calltimes_out_day Daily outgoing calltimes, e.g.

    T: 00:00:00
    calltimes_in_day Daily incoming calltimes, e.g.

    T: 00:00:00
    calltimes_inout_day Daily incoming+outgoing calltimes, e.g.

    T: 00:00:00
    calltimes_out_month Monthly outgoing calltimes, e.g.

    T: 00:00:00
    calltimes_in_month Monthly incoming calltimes, e.g.

    T: 00:00:00
    calltimes_inout_month Monthly incoming+outgoing calltimes, e.g.

    T: 00:00:00
    data_summed_up Summary of data-traffic (monthly + daily traffic, monthly online duration), e.g.

    D: 200MB, M: 800MB, T:64:23.12

    Note: This class needs at least one of the calltimes-class active, as it is structued in the options!!

    data_month Monthly traffic, e.g.

    M: 800MB

    Note: This class needs at least one of the calltimes-class active, as it is structued in the options!!

    data_month_sent Monthly traffic sent, e.g.

    M: 800MB

    Note: This class needs at least one of the calltimes-class active, as it is structued in the options!!

    data_month_received Monthly traffic received, e.g.

    M: 800MB

    Note: This class needs at least one of the calltimes-class active, as it is structued in the options!!

    data_day Daily traffic, e.g.

    D: 100MB

    Note: This class needs at least one of the calltimes-class active, as it is structued in the options!!

    data_day_sent Daily traffic sent, e.g.

    D: 100MB

    Note: This class needs at least one of the calltimes-class active, as it is structued in the options!!

    data_day_received Daily traffic received, e.g.

    D: 100MB

    Note: This class needs at least one of the calltimes-class active, as it is structued in the options!!

    data_traffic_remain Remaining traffic from limit, e.g.

    Remain: 10MB, 2%

    Note: This class needs at least one of the calltimes-class active, as it is structued in the options!!

    data_conn Number of monthly established connections, e.g.

    C: 198

    Note: This class needs at least one of the calltimes-class active, as it is structued in the options!!

    data_duration_month Online duration (month), e.g.

    M: 34:23.12

    Note: This class needs at least one of the calltimes-class active, as it is structued in the options!!

    data_duration_day Online duration (day), e.g.

    D: 01:23.12

    Note: This class needs at least one of the calltimes-class active, as it is structued in the options!!

    sms_out Monthly outgoing SMS, e.g.

    SMS 450
    sms_in Monthly incoming SMS, e.g.

    SMS 450
    sms_inout Monthly incoming+outgoing SMS, e.g.

    SMS 450
    wifi_state WiFi-States, AP, +WPA2, connecting MyNetwork
    wifi_networks if version=”0″ or no version given for Window, then the given height for the enclosing View will not be adopted to the row-number set in options.

    if version=”1″ then the height supplied for (in enclosing View) is used for 5 available WiFi-Networks. If you change in options to show e.g. only 2 networks, then the new height will be calculated in the following manner: (givenHeight/5)*2.

    if version=”1″ and no height (in eclosing View) is given, then anything will be handled automatically (recommended).

    -90 dBm, 6 ch, WEP, MyNetwork
    -90 dBm, 6 ch, WEP, MyNetwork1
    -90 dBm, 6 ch, WEP, MyNetwork2
    ---
    ---
    registry_tracker This class allows to track registry values (DWORD/String) by means of Notification Broker. Supply a registry-path in the key_value-attribute of registry-Tag and each time the registry-value changes, it will be refreshed on todayscreen.
    You can supply the registry-Tag either within label-Tag or within the Item-Tag, depending on the type you want to show on todayscreen. If you want a label to have a customizeable text, then the label-tag must have a text-attribute as follows:

    If you want an images-only indicator then supply as follows:

    
      
      
    

    where:

    text must be a pattern to render the registry value. You must use %d for DWORDs and %s for Strings.
    btw. you can also use c/c++ formatstrings like “0x%.8x” for hexvalue-rendering.

    key_value must be a valid path in the registry where you can use both formats, that is HKLM as well as HKEY_LOCAL_MACHINE.

    You can also supply a mask-attribute within registry-Tag to apply to the value before displaying. The mask is applied as an binary and-operator to the value, e.g. regsitry-value & mask. Search wikipedia for binary and-operator.

    You can also supply a formatted path to the path of image (in src-attribute) to show an image depending on registry-value,
    e.g. <image src=”filename%d.ext” …> for dword-value or <image src=”filename%s.ext” …> for a string-value.
    if there is no image correlated to the registry-value, then filename-1.ext (dword) or filename_empty.ext (string) will be used, that is such an image MUST exist.

    Note: The images have to be of same type, e.g. same bitcount.
    Invalid-Characters like \,& and so on in filenames for the images will be replaced with “_”.

    see sample for registry_tracker.

    date shows the date formated according to a formststring given in text-attribute. The formatstring must fit msdn.
    e.g. text=” MMMM dd/yyyy “
    clock shows the time formated according to a formststring given in text-attribute. The formatstring must fit msdn.
    e.g. text=” hh’:’mm’:’ss tt”
    clock_digit To customize a digit-clock you must have
    four Item-tags with clock_digit
    one Item-tag with clock_seperator
    one Item-tag with clock_alarm
    one Item-tag with clock_apm

    There must be png-files for any digits, seperator, alarm and am/pm under theme-folder with following filename:
    empty.png, 0.png, 1.png, 2.png, 3.png, 4.png, 5.png, 6.png, 7.png, 8.png, 9.png, alarmon.png, alarmoff.png, am.png, pm.png, seperator.png

    Notice: Each of the digits 0,1,2,3,4,5,6,7,8,9,empty MUST be of same size!
    Any image for digit-clock must be of same type, e.g. any image must be 32bpp for using alpha-channel!!!
    Otherwise they will not be drawn !!!

    You can have only one digit-clock in a view, and only one clock can be painted for a window, that is you can have several views with a digit-clock, but only one should be visible at any time.

    see sample for digit-clock.

    clock_seconds To customize a digit-clock with seconds you must have a basic-digit clock specified! In addition to that you need:
    two Item-tags with clock_seconds
    optional one Item-tag with clock_seconds_sep

    If no images for seconds-digits are given, then the images from digit-clock will be used. For this case it is a good idea to make them smaller by resize them. This can be done by adding a resize-attribute to the first seconds-class.

    If you want to supply images for second-digits, they must be png-files for any digits, seperator under theme-folder with following filename:
    emptys.png, 0s.png, 1s.png, 2s.png, 3s.png, 4s.png, 5s.png, 6s.png, 7s.png, 8s.png, 9s.png, seperators.png

    Notice: Each of the digits 0,1,2,3,4,5,6,7,8,9,empty MUST be of same size !!! Otherwise the will not be drawn !!!

    see sample for digit-clock with seconds.

    clock_seperator places the seperator-png for clock_digits, e.g. 01:00
    clock_alarm places the alarmon/alarmoff-pngs
    clock_apm places the am/pm-pngs
    start_app This class shows the application-icon of the program given in path-attribute and starts the program on tap.
    Note: path is mandatory for the class start_app!

    A second program can be specified with path1-attribute which opens on hold (tap and hold) on the icon.

    Relative or Absolute: The path-attribute can have either an absolute path with the full pathname to the program or a relative pathname.

    Absolute pathnames begin with the character ‘\’, e.g.

    • \Windows\Calc.exe
    • \Program Files\HomeScreen PlusPlus\tinybatch.exe

    Relative pathnames are anchored to the theme-folder and addresses files within the theme-folder. Given that the name of your theme is “MyTheme” and the theme-folder is “\Program Files\HomeScreen PlusPlus\MyTheme”:

    • “Calc.exe” – points to the file “\Program Files\HomeScreen PlusPlus\MyTheme\Calc.exe”
    • “tinybatch.exe” – points to the file “\Program Files\HomeScreen PlusPlus\MyTheme\tinybatch.exe”
    • “..\tinybatch.exe” – points to the file “\Program Files\HomeScreen PlusPlus\tinybatch.exe”
    • “..\..\totalcmd\cecmd.exe” – points to the file “\Program Files\totalcmd\cecmd.exe”

    A title to render for the icon can be specified with title-attribute.
    A title to be displayed can be given in title-attribute.

    You can add arguments for the programs to start by seperate them with double-colon, e.g.
    \Program Files\MemMaid\MemMaid.exe ::-Free

    see sample for start_app!

    space implements a placeholder, which can be customized with an image, label and actions. The default-type of a space is type=”icon”!

    A space supports the text-attribute as follows, e.g. drawing a custom text:

    
          
    tPlug set a regular today-plugin.

    • The name of the plugin must be given in title-attribute.
    • (Optional) Position can be specified with label-tag (left/top/height/width), if height-attribute or width-attribute is 0 then they will be handled automatically
    • (Optional) using left/right-gesture for view-switching can be specified with gesture-attribute in Item-tag.
    • (Optional) unload plugin if the surrounding View is not visible: Use unload-attribute in Item-tag.
      unload=”1″ (unload plugin), unload=”0″ (default, don’t unload plugin )
    • (Optional) caching of background-image / watermark for plugin: Use cachebg-attribute in Item-tag. Use cachebg-attribute in Item-tag.
      cachebg=”1″ (default, cache background-image for plugins / reduces system load for drawing background-image), cachebg=”0″ (don’t cache background-image)
    • e.g. placing PocketMSN-Plugin in one Row:

      
        
          
            
        
      

      e.g. placing PocketMSN and Messaging-Plugin in one Row:

      
        
          
            
          
            
        
      

    Sample clock_digit

    
      
        
          
        
        
        
          
        
        
        
    
        
          
        
        
          
        
      
    

    Sample clock_digit with seconds

    
      
    	
    	  
    	
    
    	
    	
    	  
    	
    
    	
    	
    
    	
    	  
    	
    
    	
    	  
    	
    
    	
    	  
    	
    
    	
    	  
    	
    
    	
    	  
    	
      
    

    Sample start_app

    
    
      
    	
    	  
    	
    
    	
    	  
    	  
    
    	
    	  
    	  
    
    	
    	  
    	  
      
    
      
    	
    	  
    	
    
    	
    
    	
    
    	
    
    	
    
    	
    
    	
      
    
      
    	
    	  
    	
    
    	
    
    	
    
    	
    
    	
    
    	
    	  
    	
    
    	
      
    
      
    	
    	  
    	
    
    	
    	  
    	  
    
    	
    	  
    	  
    
    	
    	  
    	  
    
    	
    	  
    	  
    
    	
    	  
    	  
    
      
    
    

    Sample registry_tracker

    
      
        
        
          
          
        
    
        
          
        
    
        
          
          
        
    
        
          
        
      
    

    Optional Attributes

    .

    Name Value Description
    vga 0 Coordinates are qvga.
    1 Coordinates are vga.
    left -x Item-Tag will be shifted left by x pixel.
    x/+x Item-Tag will be shifted right by x pixel.
    fontsize see fontsize explanation.
    fontfamily see fontfamily explanation.
    type The type attribute specifies what to render, that is e.g. if an image should be rendered or not.
    lefticon This type has only an icon and is intended for the leftmost icon which should not cover more than 28pixel in width. You can add an image-tag for this type. e.g. the ac/battery-icon
    icon This type has only an icon (image-tag)
    iconvalue This type has an icon (image-tag) and a text (label). e.g. memory-reading
    value This type has only a text (label). e.g. CpuSpeed-reading
    lefticonvalue This type has an leftmost icon (image-tag) and a text (label). e.g. calltimes-row
    iconbattery This is a special type having an icon (image-tag) and a text (label). The batterylevel will be drawn to the bitmap, thus the image must be in form of batterymeter-bitmap.
    iconcpuutil This type has an icon (image-tag) and a text (label). The cpu-utilization will be drawn to the bitmap, thus the image must be in form of cpu-bitmap.
    ontap / onhold You can set actions for tap or tap and hold for Item-Tags and use of attributes ontap (for tap) and onhold (for tap and hold).
    DoN Do nothing. No Action.
    DoNothing Do nothing. No Action.
    SoftReset Invokes a softreset.
    ToggleBold Toggle bold/normal fontweight
    ToggleView Toggle View
    CommMgrApp Start comm-manager application
    ToggleCpuSpeed Toggle cpu-speed (original/overclocked)
    TogglePowerMode Toggle powerdrain between mA/mW
    ToggleTemperature Toggle battery temperature between degree celsius and degree fahrenheit
    OpenOptions Open context-menu with options
    ToggleCpuWakeup Toggle overclocking on device wakeup option
    TerminateCommMgrApp Terminates comm-manager application
    ToggleNextRow Toggle visibility of next row
    MenuDataConnections Open the contextmenu for data-connections
    Phone Open phone application
    PhoneMissed Open the phones callhistory for missed calls.
    InboxSms Open messaging application for sms
    InboxMms Open messaging application for mms
    InboxMail Open messaging application for ActiveSync-Email
    StartApp starts the program given in path/path1-attribute (see class start_app)

    Relative or Absolute: The path-attribute can have either an absolute path with the full pathname to the program or a relative pathname.

    Absolute pathnames begin with the character ‘\’, e.g.

    • \Windows\Calc.exe
    • \Program Files\HomeScreen PlusPlus\tinybatch.exe

    Relative pathnames are anchored to the theme-folder and addresses files within the theme-folder. Given that the name of your theme is “MyTheme” and the theme-folder is “\Program Files\HomeScreen PlusPlus\MyTheme”:

    • “Calc.exe” – points to the file “\Program Files\HomeScreen PlusPlus\MyTheme\Calc.exe”
    • “tinybatch.exe” – points to the file “\Program Files\HomeScreen PlusPlus\MyTheme\tinybatch.exe”
    • “..\tinybatch.exe” – points to the file “\Program Files\HomeScreen PlusPlus\tinybatch.exe”
    • “..\..\totalcmd\cecmd.exe” – points to the file “\Program Files\totalcmd\cecmd.exe”

    e.g. if you want to open the inbox of a particular email-account use
    ontap=”StartApp”

    and
    path=”\Windows\tmail.exe ::-service Name_of_Email_Account -open inbox”

    e.g. if you want make a call to 123456 use
    path=”\Windows\cprog.exe ::-url tel: 123456″

    e.g. if you want to open tasks use
    path=”\Windows\tasks.exe”

    Note: you must use xml-entities within quotes, e.g. use ” instead of ” !!!

    CtlPnl For this action you must specify attributes index/subindex (ontap) respectively index1/subindex1 (onhold).

    These indexes specify which tab of system-settings-panel to open. The action opens ctlpnl.cpl with the given indexes.
    e.g. to open time-settings ontap=”CtlPnl” index=”16″

    Search for ctlpnl.cpl or cplmain.exe for lists of available tabs.
    e.g. pocketpcdn.com, xs4all.nl, asusmobile.ru

    DeviceLock Invokes DeviceLock of windows mobile (if it is enabled in options)
    DisplayOff Turn off Display. Keep in mind, that the device is NOT in standby, just display is off!
    MenuBlueTooth Opens context menu for BlueTooth
    MenuPhone Opens context menu for Phone
    MenuWiFi Opens context menu for WiFi
    Message Send a message (by means of PostMessage()) to a Window.

    • param: path-attribute (the windows’ class name)
    • param: title-attribute (the windows’ title (Optional))
    • param: msg-attribute (the numeric window message)
    • param: index-attribute (the numeric wParam)
    • param: subindex-attribute (the numeric lParam (Optional))

    e.g.

    • ontap=”Message” path=”HHTaskBar” msg=”1156″ index=”2″ (Send msg=1156 to Taskbar-Window with wParam=2 – Set Vibra Mode)
    • ontap=”Message” path=”HHTaskBar” msg=”1156″ index=”0″ (Set Normal Sound Mode)
    • ontap=”Message” path=”HHTaskBar” msg=”1156″ index=”3″ (Set Silent Mode)
    TaskList Opens TaskList (if TaskManager is enabled in options)
    ToggleA2DP Toggles A2DP (Wireless Stereo Audio BlueTooth) connection.
    ToggleBluetooth Toggles BlueTooth status, that is disable/enable.
    TogglePhone Toggles Phone status, that is disable/enable.
    ToggleWiFi Toggles WiFi status, that is disable/enable.
    ToggleFlight Toggles Flight mode, that is disable/enable.
    View Show a specific View, whereas for the Item-Attributes: index=”RowNumber” (Row) specifies the Row-number starting at 0..n and subindex=”ViewNumber” (View) is the View-number starting at 0..m
    You can switch up to five Views simultaneously by using

    • index/subindex for the first Row/View
    • index_1/subindex_1 for the second Row/View
    • index_2/subindex_2 for the third Row/View
    • index_3/subindex_3 for the third Row/View
    • index_4/subindex_4 for the third Row/View

    If switching several Views, then the Row-number for index to index_2 must be ascending order.

    
       ...
    
    text depends on class

    class date: formatstring for date according to msdn

    itemselect specifies the granularity of items to select for One-Hand-Navigation.
    For details see Itemselect Details
    index index of CtlPnl for ontap
    subindex subindex of CtlPnl for ontap
    index1 index of CtlPnl for onhold
    subindex1 subindex of CtlPnl for onhold
    absolute This attribute controls how to position the image/label. The left-attribute (if given) is added to that position.
    0 (default) Place image after the previous item. Place label after image. This is a so called relative positioning where the position depends on the previous entity.
    1 Use 0 as start-position for image and add left-attribute, that is left-attribute is a fixed distance. Place label relative to previous image.
    –> Place image absolute, place label relative
    2 Use 0 as start-position for image and add left-attribute. Use the new position as start-position for label.
    –> Place image absolute, use image-left for label too
    3 Use 0 as start-position for image/label and add left-attribute, that is use absolute values for both.
    –> Place image abslute, place label absolute
    multi 0 (default) next item is placed same line.
    1 next items are placed as multiple lines.
    path Used for start_app to specify a program to start ontap.
    path1 Used for start_app to specify a program to start onhold.
    title Used for start_app to specify a title to render for the icon.
    selmode specifies how the contained Items are transformed/moved if selected.
    -x Item will be moved to lower-right by x-pixel.
    0 (default) No selection-effect but drawing background.
    x Item will be streched by x-pixels.

    image / imagealt
    specifies how to render images (bmp/png/gif/jpeg)

    The image-tag gives you the chance to modify attributes of the instance of class given in Item-Tag. Most of the times, you will provide a filename for the image (bmp/png/gif/jpeg) to be used.

    By means of the imagealt-tag you can specify an alternate image for showing in case the Item is selected. In principle any not-class-specific attributes of image-tag are allowed for the imagealt-tag.

    Required Attributes

    Name Description
    src Filename of the image in bmp/png/gif/jpeg-format. The image must be located in the directory specified in src-attribute by Window-Tag.
    bmp/gif supports transparent-color by transparent-attribute and png supports alpha-channels!

    Optional Attributes

    Name Value Description
    vga 0 Bitmap is a qvga-bitmap and will be stretched for vga-themes.
    1 Bitmap is a vga-bitmap and will be downscaled for qvga-themes.
    transparent bbggrr defines the color in bitmap, which is drawn transparent.
    The format is as follows: bbggrr, where r=red, g=gree, b=blue
    left A relative value to be added to the right-position of the previous item.
    top A relative value to be added to the top-position of the item.
    width Resizes the image and sets width of resulting image to given value.
    height Resizes the image and sets height of resulting image to given value.
    resize Resizes the image, that is 50 means 50 percentage and results in half the size. 200 means 200 percentage and results in double the size.
    smallicon Used for start_app and forces to load a smallicon if set to 1.
    color A color for filling of classes battery_meter and cpu_utilization. Formated as hexvalues for BBGGRR (where R=Red, G=Green, B=Blue and range is 0..F)

    When using this attribute, the given image should be a png/jpeg/gif.
    If you are using a bmp, then the color will be used for transparent-color as well.

    Sample

    
        
    
        
    

    For the class battery_ac_icons you must provide two image-tags, where the first image-tag modifies the ac-icon and the second one modifies the battery-icon.

    
        
        
    

    label
    specifies how to render text

    The label-tag gives you the chance to modify attributes of the instance of class given in Item-Tag.

    Optional Attributes

    Name Value Description
    align Aligns the text horizontally
    left Aligns text to the left.
    center Centers text.
    right Aligns text to the right.
    bold Render text using bold-font.
    valign Aligns the text vertically
    top Topaligns text.
    middle Aligns text to the middle.
    bottom Bottomaligns.
    format singleline Default, No workbreak, render to single line
    wordbreak Breaks words, can use more than one line. This needs the label to vertical align to top, i.e. valign=”top” (required for wordbreak)
    left A relative value to be added to the right-position of the previous item or bitmap.
    top A relative value to be added to the top-position of the item.
    height A height for the text-label.

    If the multi-attribute of the surrounding View is 1 (multi=”1″), then the default height of a label is 16. If your label is larger than 16 pixel, then you must adapt this attribute to the desired height in pixel.

    If the multi-attribute of the surrounding View is 0 (multi=”0″), then the height of the label is the same as the height of the surrounding View.

    width A width for the text-label.
    fontsize See fontsize explanation.
    fontfamily See fontfamily explanation.
    color A color for the text. Formated as hexvalues for BBGGRR (where R=Red, G=Green, B=Blue and range is 0..F)
    toggleSmallFont 0 Do NOT use the small-font if it is checked in the options.
    1 Use the small-font if it is checked in the options.
    toggleBoldFont 0 Don NOT use the bold-font if it is checked in the options.
    1 Use the bold-font if it is checked in the options.
    prefixed 0 (default) affects underscores
    prefixed 1 affects underscores
    mask 0xFFFFFFFF (only registry_tracker) provides a mask to apply to the dword-registry-value for registry-tracker
    shift 0 (default) (only registry_tracker) no shift of value
    – x binary left-shift of value by x bits
    x binary right-shift of value by x bits
    suppress0 0 (default) (only registry_tracker) dont supporess showing of zero value
    1 registry-tracker: supporess showing of value if dword is zero

    Sample

    TrayIcons / Icon
    specifies icons for TrayIcons

    The TrayIcons-tag gives you the chance to supply a custom icon (.ico) for the inbuild tray-functions. The TrayIcons-tag must have at least one Icon-Tag which has following attributes.

    Required Attributes

    Name Value Description
    name icon.ico Filename of the icon (in .ico-format), which must be located in the directory specified by Window-Tag.
    id phone_on Icon for phone turned on.
    phone_off Icon for phone turned off.
    wifi_on Icon for wifi turned on.
    wifi_off Icon for wifi turned off.
    bluetooth_on Icon for bluetooth turned on.
    bluetooth_off Icon for bluetooth turned off.
    devicelock Icon for devicelock.
    display_off Icon for turn off display.
    context_menu Icon for HomeScreen PlusPlus context menu.

    Sample

    
        .
        .
      
        
        
      
    

One Thought on “HomeScreen PlusPlus UI – Customization Manual – formerly BatteryStatus

  1. Pingback: Homescreen++ i900 Omnia - Seite 14