<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
    <NOTE>This XML file should only be used for documentation purposes.</NOTE>
    <doclet-version-NOT-library-version>0</doclet-version-NOT-library-version>
    <class>
        <name>B4XMenuPlus</name>
        <shortname>B4XMenuPlus</shortname>
        <comment>Extension For B4XPages menu. Replacing B4XPages.AddMenuItem().
When a menu item Is selected, an event ( EventName_Tag() ) Is triggered.

New features are added:

• Add text item, checkbox, toogle or submenu on 3dot menu.
• Add separator on 3dot menu. (two consecutive separators are not allowed and automatic suppressed )
(separator are not clickable)
• Icons/Bitmaps can be displayed on the bar. Icons are created by FONTAWESOME and MATERIALICONS.
Icon/bitmaps can also be toggle elements.
• All items can be set enabled/disabled (gray out)
• All items can be set visible/hidden.
• All 3dot items can have also a icon.
• Checkbox item. When selected, the status changes and the event is called with EventName_Tag( Checked ).
• Toggle item. 1 to x rotating states possible. All elements of a toggle have the same Tag,
but can have different icons. When selected, the state rotates to the next position
and the event is called with EventName_Tag( State ). The state is 0 based.
• Submenu. Multi level submenus can be created. These can also contain checkbox And/Or toggle elements.
• All interaction based on the item Tag.

DepenseOn: XUI, BitmapCreator</comment>
        <method>
            <name>Initialize</name>
            <comment>Initialize the object.
Callback:	Callback module
Root:		B4XView that call
EventName:	Generic event name

Code Example: &lt;code&gt;
Private mp As B4XMenuPlus

mp.Initialize( Me, Root, "MenuClick" )
mp.AddNItem( "Test", "Test Menu Item" )
mp.ShowMenu

Private Sub B4XPage_MenuClick( Tag As String )
mp.MenuClick( Tag )
End Sub

Private Sub MenuClick_Test()
...
End Sub&lt;/code&gt;</comment>
            <returntype/>
            <parameter>
                <name>Callback</name>
                <type>Object</type>
            </parameter>
            <parameter>
                <name>Root</name>
                <type>B4XView</type>
            </parameter>
            <parameter>
                <name>EventName</name>
                <type>String</type>
            </parameter>
        </method>
        <method>
            <name>AddBarBmp</name>
            <comment>Add bitmap menu item. (on Bar)
The bitmap for disabled is generated. (gray out)
Tag:		Event to call. Format: EventName_Tag()
Title:		Text shown on menu item.
bmp:		Bitmap for enable, bitmap for disable is generated. (grayout)</comment>
            <returntype/>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>bmp</name>
                <type>B4XBitmap</type>
            </parameter>
        </method>
        <method>
            <name>AddBarIcon</name>
            <comment>Add icon menu item. (on Bar)
The icon for disabled is generated. (gray out)
Tag:		Event to call. Format: EventName_Tag()
Title:		Text shown on menu item.
isAwesome	True = FONTAWESOME, False = MATERIALICONS
mChar:		Icon Picker Char.
color:		Color of icon.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>isAwesome</name>
                <type>Boolean</type>
            </parameter>
            <parameter>
                <name>mChar</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>color</name>
                <type>Int</type>
            </parameter>
        </method>
        <method>
            <name>AddBarToggleBmp</name>
            <comment>Add bitmap toggle menu item. (on Bar)
All items with the same Tag are in the same toggle item. These items rotate on every selection.
Tag:		Event to call. Format: EventName_Tag( state )
Title:		Text shown on menu item.
bmp:		Bitmap for enable, bitmap for disable is generated. (grayout)
Return:		True = ok, False = see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>bmp</name>
                <type>B4XBitmap</type>
            </parameter>
        </method>
        <method>
            <name>AddBarToggleIcon</name>
            <comment>Add icon toggle menu item. (on Bar)
All items with the same Tag are in the same toggle item. These items rotate on every selection.
Tag:		Event to call. Format: EventName_Tag( state )
Title:		Text shown on menu item.
isAwesome	True = FONTAWESOME, False = MATERIALICONS
mChar:		Icon Picker Char.
color:		Color of icon.
Return:		True = ok, False = see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>isAwesome</name>
                <type>Boolean</type>
            </parameter>
            <parameter>
                <name>mChar</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>color</name>
                <type>Int</type>
            </parameter>
        </method>
        <method>
            <name>AddItem</name>
            <comment>Add text menu item. (in 3-dot menu)
Tag:		Event to call. Format: EventName_Tag()
Title:		Text shown on menu item.</comment>
            <returntype/>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
        </method>
        <method>
            <name>AddItemIcon</name>
            <comment>Add text menu item with icon. (in 3-dot menu)
Tag:		Event to call. Format: EventName_Tag()
Title:		Text shown on menu item.
isAwesome	True = FONTAWESOME, False = MATERIALICONS
mChar:		Icon Picker Char.
color:		Color of icon.</comment>
            <returntype/>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>isAwesome</name>
                <type>Boolean</type>
            </parameter>
            <parameter>
                <name>mChar</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>color</name>
                <type>Int</type>
            </parameter>
        </method>
        <method>
            <name>AddCheckbox</name>
            <comment>Add checkbox menu item. (in 3-dot menu)
Tag:		Event to call. Format: EventName_Tag( checked )
Title:		Text shown on menu item.
checked:	Checked or unchecked.</comment>
            <returntype/>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>checked</name>
                <type>Boolean</type>
            </parameter>
        </method>
        <method>
            <name>AddToggle</name>
            <comment>Add toggle menu item. (in 3-dot menu)
All items with the same Tag are in the same toggle item. These items rotate on every selection.
Tag:		Event to call. Format: EventName_Tag( state )
Title:		Text shown on menu item.
Return:		True = ok, False = see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
        </method>
        <method>
            <name>AddToggleIcon</name>
            <comment>Add toggle menu item with icon. (in 3-dot menu)
All items with the same Tag are in the same toggle item. These items rotate on every selection.
Tag:		Event to call. Format: EventName_Tag( state )
Title:		Text shown on menu item.
isAwesome	True = FONTAWESOME, False = MATERIALICONS
mChar:		Icon Picker Char.
color:		Color of icon.
Return:		True = ok, False = see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>isAwesome</name>
                <type>Boolean</type>
            </parameter>
            <parameter>
                <name>mChar</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>color</name>
                <type>Int</type>
            </parameter>
        </method>
        <method>
            <name>AddSeparator</name>
            <comment>Add separator menu item. (in 3-dot menu)</comment>
            <returntype/>
        </method>
        <method>
            <name>AddSubMenu</name>
            <comment>Creata a new submenu item. (in 3-dot menu)
This item is the parentTag for items inside the sub.
The submenu can be composed of text, checkbox or toggle items.
Tag:		ParentTag. (no event called)
Title:		Text shown on menu item.
Return:		True = ok, False = see Error for details.

For all instances using submenu, add this lines in Main.&lt;code&gt;
Sub Activity_WindowFocusChanged (Focused As Boolean)
If B4XPages.[page].[B4XMenuPlus].IsInitialized Then B4XPages.[page].[B4XMenuPlus].WindowFocusChanged( Focused )
End Sub&lt;/code&gt;</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
        </method>
        <method>
            <name>AddSubSubMenu</name>
            <comment>Creata a new submenu item in submenu. (in 3-dot menu)
This item is the parentTag for items inside the sub.
The submenu can be composed of text, checkbox or toggle items.
parentTag:	Tag of the submenu.
Tag:		ParentTag. (no event called)
Title:		Text shown on menu item.
Return:		True = ok, False = see Error for details.

For all instances using submenu, add this lines in Main.&lt;code&gt;
Sub Activity_WindowFocusChanged (Focused As Boolean)
If B4XPages.[page].[B4XMenuPlus].IsInitialized Then B4XPages.[page].[B4XMenuPlus].WindowFocusChanged( Focused )
End Sub&lt;/code&gt;</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>parentTag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
        </method>
        <method>
            <name>AddSubItem</name>
            <comment>Add text menu item to a submenu. (in 3-dot menu)
parentTag:	Tag of the submenu.
Tag:		Event to call. Format: EventName_Tag()
Title:		Text shown on menu item.
Return:		True = ok, False = see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>parentTag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
        </method>
        <method>
            <name>AddSubItemIcon</name>
            <comment>Add text menu item to a submenu with icon. (in 3-dot menu)
parentTag:	Tag of the submenu.
Title:		Text shown on menu item.
isAwesome	True = FONTAWESOME, False = MATERIALICONS
mChar:		Icon Picker Char.
color:		Color of icon.
Return:		True = ok, False = see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>parentTag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>isAwesome</name>
                <type>Boolean</type>
            </parameter>
            <parameter>
                <name>mChar</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>color</name>
                <type>Int</type>
            </parameter>
        </method>
        <method>
            <name>AddSubCheckbox</name>
            <comment>Add checkbox menu item to a submenu. (in 3-dot menu)
parentTag:	Tag of the submenu.
Tag:		Event to call. Format: EventName_Tag()
Title:		Text shown on menu item.
checked:	Checked or unchecked.
Return:		True = ok, False = see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>parentTag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>checked</name>
                <type>Boolean</type>
            </parameter>
        </method>
        <method>
            <name>AddSubToggle</name>
            <comment>Add toggle menu item to a submenu. (in 3-dot menu)
parentTag:	Tag of the submenu.
Tag:		Event to call. Format: EventName_Tag()
Title:		Text shown on menu item.
Return:		True = ok, False = see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>parentTag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
        </method>
        <method>
            <name>AddSubToggleIcon</name>
            <comment>Add toggle menu item to a submenu with icon. (in 3-dot menu)
parentTag:	Tag of the submenu.
Tag:		Event to call. Format: EventName_Tag()
Title:		Text shown on menu item.
isAwesome	True = FONTAWESOME, False = MATERIALICONS
mChar:		Icon Picker Char.
color:		Color of icon.
Return:		True = ok, False = see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>parentTag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>isAwesome</name>
                <type>Boolean</type>
            </parameter>
            <parameter>
                <name>mChar</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>color</name>
                <type>Int</type>
            </parameter>
        </method>
        <method>
            <name>AddSubSeparator</name>
            <comment>Add separator menu item. (in 3-dot menu)
parentTag:	Tag of the submenu.
Return:		True = ok, False = see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>parentTag</name>
                <type>String</type>
            </parameter>
        </method>
        <method>
            <name>GetEnabled</name>
            <comment>Gets whether the menu item is enabled. (gray out)
Tag:		Tag to get enable.
Return:		True = enabled, False = disabled or see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
        </method>
        <method>
            <name>SetEnabled</name>
            <comment>Set enabled of the menu item. (gray out)
Tag:		Tag to enable.
enable:		True = enable, False = disable
Return:		True = ok, False = nok, see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>enabled</name>
                <type>Boolean</type>
            </parameter>
        </method>
        <method>
            <name>GetVisible</name>
            <comment>Gets whether the menu item is visible or not.
Tag:		Tag to get visible.
Return:		True = hide, False = show or see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
        </method>
        <method>
            <name>SetVisible</name>
            <comment>Set visible of the menu item.
Tag:		Tag set the visible
visible		True = visible, False = hidden
Return:		True = ok, False = nok, see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>visible</name>
                <type>Boolean</type>
            </parameter>
        </method>
        <method>
            <name>GetCheck</name>
            <comment>Gets whether the Checkbox menu item is checked or not.
Tag:		Tag to get check.
Return:		True = checked, False = unchecked or see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
        </method>
        <method>
            <name>SetCheck</name>
            <comment>CheckBox Item set check.
Tag:		Tag to get checked.
checked		True = check, False = uncheck
Return:		True = ok, False = nok, see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>checked</name>
                <type>Boolean</type>
            </parameter>
        </method>
        <method>
            <name>GetToggleState</name>
            <comment>Get the state for Toggle item. (0 based)
Tag:		Tag of the Topggle-item.
Return:		State value or -1 = error, see Error for details.</comment>
            <returntype>Int</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
        </method>
        <method>
            <name>SetToggleState</name>
            <comment>Set the state for Toggle item. (0 based)
Tag:		Tag of the Topggle-item.
state:		New state value.
Return:		True = ok, False = nok, see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>state</name>
                <type>Int</type>
            </parameter>
        </method>
        <method>
            <name>SetIconColor</name>
            <comment>Set the color of the icon. (Bar icon and 3dot item with icon)
Tag:		Tag to change color.
color:		New color.
Return:		True = ok, False = nok, see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>color</name>
                <type>Int</type>
            </parameter>
        </method>
        <method>
            <name>SetToggleIconColor</name>
            <comment>Set the color of the icon. (toggle item only)
Tag:		Tag to change color.
state		Toggle state.
color:		New color.
Return:		True = ok, False = nok, see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Tag</name>
                <type>String</type>
            </parameter>
            <parameter>
                <name>state</name>
                <type>Int</type>
            </parameter>
            <parameter>
                <name>color</name>
                <type>Int</type>
            </parameter>
        </method>
        <method>
            <name>ShowMenu</name>
            <comment>Build  and show the menu with saved data.
isActive is set to True.</comment>
            <returntype/>
        </method>
        <method>
            <name>MenuClick</name>
            <comment>Click on Menu item.
Title:		Title clicked on
Return:		True = ok, False = nok, see Error for details.</comment>
            <returntype>Boolean</returntype>
            <parameter>
                <name>Title</name>
                <type>String</type>
            </parameter>
        </method>
        <method>
            <name>WindowFocusChanged</name>
            <comment>Activity window focus changed. Used when submenu is closed without clicking on it.
For all instances using submenu, add in this line Main.&lt;code&gt;
Sub Activity_WindowFocusChanged (Focused As Boolean)
If B4XPages.[page].[B4XMenuPlus].IsInitialized Then B4XPages.[page].[B4XMenuPlus].WindowFocusChanged( Focused )
End Sub&lt;/code&gt;</comment>
            <returntype/>
            <parameter>
                <name>Focused</name>
                <type>Boolean</type>
            </parameter>
        </method>
        <field>
            <name>ERROR_NO_ERROR</name>
            <comment/>
            <returntype>Int</returntype>
        </field>
        <field>
            <name>ERROR_TITLE_NOT_FOUND</name>
            <comment/>
            <returntype>Int</returntype>
        </field>
        <field>
            <name>ERROR_TAG_NOT_FOUND</name>
            <comment/>
            <returntype>Int</returntype>
        </field>
        <field>
            <name>ERROR_ITEM_NOT_CHECK</name>
            <comment/>
            <returntype>Int</returntype>
        </field>
        <field>
            <name>ERROR_ITEM_NOT_TOGGLE</name>
            <comment/>
            <returntype>Int</returntype>
        </field>
        <field>
            <name>ERROR_PARENTTAG_NOT_FOUND</name>
            <comment/>
            <returntype>Int</returntype>
        </field>
        <field>
            <name>ERROR_PARENTTAG_NOT_SUBMENU</name>
            <comment/>
            <returntype>Int</returntype>
        </field>
        <field>
            <name>ERROR_WRONG_MENU_TYPE</name>
            <comment/>
            <returntype>Int</returntype>
        </field>
        <field>
            <name>ERROR_ITEM_WRONG_TYPE</name>
            <comment/>
            <returntype>Int</returntype>
        </field>
        <field>
            <name>ERROR_STATE_OUT_OF_RANGE</name>
            <comment/>
            <returntype>Int</returntype>
        </field>
        <field>
            <name>ERROR_ITEM_IS_DISABLED</name>
            <comment/>
            <returntype>Int</returntype>
        </field>
        <field>
            <name>ERROR_MENU_NOT_ACTIVE</name>
            <comment/>
            <returntype>Int</returntype>
        </field>
        <field>
            <name>ERROR_CALLBACK_NOT_FOUND</name>
            <comment/>
            <returntype>Int</returntype>
        </field>
        <field>
            <name>ERROR_ITEM_WITHOUT_ICON</name>
            <comment/>
            <returntype>Int</returntype>
        </field>
        <field>
            <name>isActive</name>
            <comment>
Set B4XMenuClick active mode. Default is False, ShowMenu() set it to True.
True 	- Menu is active, Callback and ShowMenu() is called on Set_...()
False	- Menu is inactive. No Callback or ShowMenu is called on Set_...()
- MenuClick() will by return ERROR_NOT_ACTIVE.</comment>
            <returntype>Boolean</returntype>
        </field>
        <property>
            <name>Error</name>
            <comment>Get the Error of the last used function.
Return:		Error code. (ERROR_...)
ERROR_NO_ERROR = 0
ERROR_TITLE_NOT_FOUND = -1, ERROR_TAG_NOT_FOUND = -2, ERROR_ITEM_NOT_CHECK = -3
ERROR_ITEM_NOT_TOGGLE = -4, ERROR_PARENTTAG_NOT_FOUND = -5, ERROR_PARENTTAG_NOT_SUBMENU = -6
ERROR_WRONG_MENU_TYPE = -7, ERROR_ITEM_WRONG_TYPE = -8, ERROR_STATE_OUT_OF_RANGE = -9
ERROR_ITEM_IS_DISABLED = -10, ERROR_MENU_NOT_ACTIVE = -11
ERROR_CALLBACK_NOT_FOUND = -12, ERROR_ITEM_WITHOUT_ICON = -13</comment>
            <returntype>Int</returntype>
        </property>
    </class>
    <version>1.00</version>
    <author>Gfy</author>
</root>
