Flipswitch: Difference between revisions

From iPhone Development Wiki
(Bundle description)
(Explanation on how layers work)
Line 10: Line 10:
Save [https://github.com/a3tweaks/Flipswitch/raw/master/NIC%20Template/iphone_flipswitch_switch.nic.tar this NIC template] to the <code>$THEOS/templates/iphone</code> directory and call <code>$THEOS/bin/nic.pl</code> to get a premade switch.
Save [https://github.com/a3tweaks/Flipswitch/raw/master/NIC%20Template/iphone_flipswitch_switch.nic.tar this NIC template] to the <code>$THEOS/templates/iphone</code> directory and call <code>$THEOS/bin/nic.pl</code> to get a premade switch.


''Add instructions about writing code.''
''Add instructions about writing code and creating glyphs.''


== Secondary action ==
== Secondary action ==
Line 67: Line 67:
|}
|}


<code>Layers</code> array can contain dictionaries with the following keys:
<code>layers</code> array can contain dictionaries with the following keys:
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 98: Line 98:
| color || string || Hex color for current layer. || "#000000" to "#ffffff" || "#000000" || ''type'' = "glyph" && ''filename'' = nil
| color || string || Hex color for current layer. || "#000000" to "#ffffff" || "#000000" || ''type'' = "glyph" && ''filename'' = nil
|}
|}
<code>layers</code> are applied to the button one over the other.
If <code>type</code> is "image", the current layer will draw the image found in <code>filename</code>. Best use of this layer could be as a background.
If <code>type</code> is "glyph", the current layer will use the switch glyph as a mask. When <code>state</code> is present, the <code>layer</code> will select the glyph for said state. If <code>cutout</code> is true, the layer will be composed of only the glyph's borders.
It is possible to use a <code>layer</code> for each state by creating new <code>layers</code> arrays named <code>layers-on</code>, <code>layers-off</code> or <code>layers-indeterminate</code>.


''For more information, see [https://github.com/a3tweaks/Flipswitch/blob/master/FSSwitchPanel.m#L307 here]''
''For more information, see [https://github.com/a3tweaks/Flipswitch/blob/master/FSSwitchPanel.m#L307 here]''

Revision as of 04:53, 18 January 2014

Flipswitch
Cydia Package
Developer Ryan Petrich, Jack Willis
Package ID libflipswitch
Latest Version 1.0.2


libflipswitch is a library used to implement a centralized toggle system.

How to make a new switch

Save this NIC template to the $THEOS/templates/iphone directory and call $THEOS/bin/nic.pl to get a premade switch.

Add instructions about writing code and creating glyphs.

Secondary action

In the file Resources/Info.plist you can find the key "alternate-action-url", which will enable you to open a URI when the secondary action of the switch is invoked, in case it is not implemented in code. The default value is "prefs:".

How to make a template bundle

These bundles contain information about how a switch glyph (the image that the user sees for a given switch) is rendered when it is used in a button returned by the appropriate method of the FlipSwitch panel. Bundles contain an Info.plist file and optionally image files. Here is an example of an Info.plist, taken from SwitchIcons:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>CFBundleDevelopmentRegion</key>
        <string>English</string>
        <key>CFBundleIdentifier</key>
        <string>com.rpetrich.switchicon.icon-template</string>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundlePackageType</key>
        <string>BNDL</string>
        <key>CFBundleShortVersionString</key>
        <string>1.0.0</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
        <string>1.0</string>
        <key>DTPlatformName</key>
        <string>iphoneos</string>
        <key>MinimumOSVersion</key>
        <string>2.0</string>
        <key>width</key>
        <integer>59</integer>
        <key>height</key>
        <integer>60</integer>
        <key>layers</key>
        <array>
            <...>
        </array>
</dict>
</plist>

Keys not specified in the following table can use the same values as the example given.

key type meaning
CFBundleIdentifier string Template bundle identifier.
width integer Width of the icon.
height integer Height of the icon.
layers array ... of dictionaries Change visuals of switch glyph.

layers array can contain dictionaries with the following keys:

key type meaning range of values default value depends
type string Layer type. "image", "glyph" - -
opacity float Alpha value for current layer. 0.0 to 1.0 1.0 -
x float X value for offset position. - 0.0 -
y float Y value for offset position. - 0.0 -
fileName string Image filename without extension. - - -
blur float Blur value for current layer. 0.0 to 1.0 0.0 type = "glyph"
size float Glyph size. - 0 type = "glyph"
state string Switch state filter. "on", "off", "indeterminate" - type = "glyph"
cutout BOOL Cutout mask flag. - NO type = "glyph"
cutoutX float X offset for cutout mask. - 0.0 type = "glyph" && cutout = YES
cutoutY float Y offset for cutout mask. - 0.0 type = "glyph" && cutout = YES
cutoutBlur float Blur for cutout mask. 0.0 to 1.0 0.0 type = "glyph" && cutout = YES
color string Hex color for current layer. "#000000" to "#ffffff" "#000000" type = "glyph" && filename = nil

layers are applied to the button one over the other. If type is "image", the current layer will draw the image found in filename. Best use of this layer could be as a background. If type is "glyph", the current layer will use the switch glyph as a mask. When state is present, the layer will select the glyph for said state. If cutout is true, the layer will be composed of only the glyph's borders.

It is possible to use a layer for each state by creating new layers arrays named layers-on, layers-off or layers-indeterminate.

For more information, see here

External links