Migration of QtMvvm from github
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

415 lines
87 KiB

<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>QtMvvm: The XML settings format</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0" style="display: inline;">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">QtMvvm
&#160;<span id="projectnumber">1.1.0</span>
</div>
<div id="projectbrief">A mvvm oriented library for Qt, to create Projects for Widgets and Quick in parallel</div>
</td>
</tr>
</tbody>
</table>
<a style="float: right;" target="_blank" href="https://github.com/Skycoder42/QtMvvm">
<img style="padding: 10px;" src="GitHub_Logo.png"/>
</a>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">The XML settings format </div> </div>
</div><!--header-->
<div class="contents">
<div class="toc"><h3>Table of Contents</h3>
<ul><li class="level1"><a href="#settings_xml_translator">Translations</a></li>
<li class="level1"><a href="#settings_xml_elements">Elements</a><ul><li class="level2"><a href="#settings_xml_elements_config">SettingsConfig</a><ul><li class="level3"><a href="#settings_xml_elements_config_attribs">Attributes</a></li>
<li class="level3"><a href="#settings_xml_elements_config_elements">Content</a></li>
</ul>
</li>
<li class="level2"><a href="#settings_xml_elements_category">Category</a><ul><li class="level3"><a href="#settings_xml_elements_category_attribs">Attributes</a></li>
<li class="level3"><a href="#settings_xml_elements_category_elements">Content</a></li>
</ul>
</li>
<li class="level2"><a href="#settings_xml_elements_section">Section</a><ul><li class="level3"><a href="#settings_xml_elements_section_attribs">Attributes</a></li>
<li class="level3"><a href="#settings_xml_elements_section_elements">Content</a></li>
</ul>
</li>
<li class="level2"><a href="#settings_xml_elements_group">Group</a><ul><li class="level3"><a href="#settings_xml_elements_group_attribs">Attributes</a></li>
<li class="level3"><a href="#settings_xml_elements_group_elements">Content</a></li>
</ul>
</li>
<li class="level2"><a href="#settings_xml_elements_entry">Entry</a><ul><li class="level3"><a href="#settings_xml_elements_entry_attribs">Attributes</a></li>
<li class="level3"><a href="#settings_xml_elements_entry_elements">Content</a></li>
</ul>
</li>
<li class="level2"><a href="#settings_xml_elements_searchkey">SearchKey</a></li>
<li class="level2"><a href="#settings_xml_elements_property">Property</a><ul><li class="level3"><a href="#settings_xml_elements_property_attribs">Attributes</a></li>
<li class="level3"><a href="#settings_xml_elements_property_elements">Content</a></li>
</ul>
</li>
<li class="level2"><a href="#settings_xml_elements_element">Element</a><ul><li class="level3"><a href="#settings_xml_elements_element_attribs">Attributes</a></li>
<li class="level3"><a href="#settings_xml_elements_element_elements">Content</a></li>
</ul>
</li>
<li class="level2"><a href="#settings_xml_elements_include">Include</a><ul><li class="level3"><a href="#settings_xml_elements_include_attribs">Attributes</a></li>
<li class="level3"><a href="#settings_xml_elements_include_elements">Content</a></li>
</ul>
</li>
</ul>
</li>
<li class="level1"><a href="#settings_xml_types">Attribute and Value types</a><ul><li class="level2"><a href="#settings_xml_types_basic">Basic Types</a></li>
<li class="level2"><a href="#settings_xml_types_type">type</a></li>
<li class="level2"><a href="#settings_xml_types_descriptor">descriptor</a><ul><li class="level3"><a href="#settings_xml_types_descriptor_frontend">frontend descriptor</a></li>
<li class="level3"><a href="#settings_xml_types_descriptor_selectors">selectors descriptor</a></li>
</ul>
</li>
<li class="level2"><a href="#settings_xml_types_action">action</a></li>
</ul>
</li>
<li class="level1"><a href="#settings_xml_sample">Sample settings XML file</a></li>
</ul>
</div>
<div class="textblock"><p>Documentation of the XML format used to create settings uis</p>
<p>This format is used to create settings.xml files to be read by the default XML <a class="el" href="class_qt_mvvm_1_1_i_settings_setup_loader.html" title="An interface for a generic settings setup loader. ">QtMvvm::ISettingsSetupLoader</a>. The files are read via that service and mapped to <a class="el" href="namespace_qt_mvvm_1_1_settings_elements.html#struct_qt_mvvm_1_1_settings_elements_1_1_setup" title="The whole settings setup. ">QtMvvm::SettingsElements::Setup</a>.</p>
<h1><a class="anchor" id="settings_xml_translator"></a>
Translations</h1>
<p>All the settings files you have can be easily translated via a standard ts/qm file. The following explains how exactly.</p>
<p>The mvvm core module comes with a special make taget, called <code>lupdate</code> that will automatically run lupdate when your sources change to update the TRANSLATIONS files. To not run this automatically, call qmake with <code>qmake CONFIG+=no_auto_lupdate ...</code>. In both cases, you can always run <code>make lupdate</code> to explicitly update the dependencies.</p>
<p>With this step enabled, the only thing left to do is to add the settings xml file to the translation targets so it gets included as a source when running the lupdate target. To do so, simply add it to the <code>SETTINGS_TRANSLATIONS</code> qmake variable:</p>
<div class="fragment"><div class="line">SETTINGS_TRANSLATIONS += settings.xml</div></div><!-- fragment --><p>This will internally generate a cpp file that is parsed and included in lupdate when running it via the builtin lupdate target.</p>
<h1><a class="anchor" id="settings_xml_elements"></a>
Elements</h1>
<p>The possible elements of such a file</p>
<h2><a class="anchor" id="settings_xml_elements_config"></a>
SettingsConfig</h2>
<p>The whole settings setup.</p>
<p>The <code>&lt;SettingsConfig&gt;</code> element must be the root Element of the XML document and is mapped to the <a class="el" href="namespace_qt_mvvm_1_1_settings_elements.html#struct_qt_mvvm_1_1_settings_elements_1_1_setup" title="The whole settings setup. ">QtMvvm::SettingsElements::Setup</a>.</p>
<h3><a class="anchor" id="settings_xml_elements_config_attribs"></a>
Attributes</h3>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Name </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Default </th><th class="markdownTableHeadNone">Translated </th><th class="markdownTableHeadNone">Description </th></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">allowSearch </td><td class="markdownTableBodyNone">bool </td><td class="markdownTableBodyNone"><code>true</code> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone">Specifies if the user is allowed to search in the settings. </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">allowRestore </td><td class="markdownTableBodyNone">bool </td><td class="markdownTableBodyNone"><code>true</code> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone">Specifies if the user is allowed to restore the factory defaults. </td></tr>
</table>
<h3><a class="anchor" id="settings_xml_elements_config_elements"></a>
Content</h3>
<p>Can be an arbitrary number of Elements from the following list. However, only one type of element is allowed. If you for example use <code>&lt;Entry&gt;</code> as first child, all other children must be of the same type as well:</p>
<ul>
<li>(Primary:) <a class="el" href="settings_xml.html#settings_xml_elements_category">Category</a></li>
<li><a class="el" href="settings_xml.html#settings_xml_elements_section">Section</a></li>
<li><a class="el" href="settings_xml.html#settings_xml_elements_group">Group</a></li>
<li><a class="el" href="settings_xml.html#settings_xml_elements_entry">Entry</a></li>
<li><a class="el" href="settings_xml.html#settings_xml_elements_include">Include</a></li>
</ul>
<h2><a class="anchor" id="settings_xml_elements_category"></a>
Category</h2>
<p>A top level category to organize sections in.</p>
<p>The <code>&lt;Category&gt;</code> element is mapped to the <a class="el" href="namespace_qt_mvvm_1_1_settings_elements.html#struct_qt_mvvm_1_1_settings_elements_1_1_category" title="A top level category to organize sections in. ">QtMvvm::SettingsElements::Category</a>.</p>
<h3><a class="anchor" id="settings_xml_elements_category_attribs"></a>
Attributes</h3>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Name </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Default </th><th class="markdownTableHeadNone">Translated </th><th class="markdownTableHeadNone">Description </th></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">title </td><td class="markdownTableBodyNone">string </td><td class="markdownTableBodyNone"><code>"General Settings"</code> </td><td class="markdownTableBodyNone">yes </td><td class="markdownTableBodyNone">The categories title. </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">icon </td><td class="markdownTableBodyNone">url </td><td class="markdownTableBodyNone"><code>"qrc:/de/skycoder42/qtmvvm/icons/settings.svg"</code> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone">An icon for the category. </td></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">tooltip </td><td class="markdownTableBodyNone">string </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">yes </td><td class="markdownTableBodyNone">A tooltip to describe what the category is about. </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">frontends </td><td class="markdownTableBodyNone"><a class="el" href="settings_xml.html#settings_xml_types_descriptor">descriptor</a> </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone"><em>[Internal]</em> A logical string describing the allowed frontends </td></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">selectors </td><td class="markdownTableBodyNone"><a class="el" href="settings_xml.html#settings_xml_types_descriptor">descriptor</a> </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone"><em>[Internal]</em> A logical string describing the allowed selectors </td></tr>
</table>
<h3><a class="anchor" id="settings_xml_elements_category_elements"></a>
Content</h3>
<p>Can be an arbitrary number of Elements from the following list. However, only one type of element is allowed. If you for example use <code>&lt;Entry&gt;</code> as first child, all other children must be of the same type as well:</p>
<ul>
<li>(Primary:) <a class="el" href="settings_xml.html#settings_xml_elements_section">Section</a></li>
<li><a class="el" href="settings_xml.html#settings_xml_elements_group">Group</a></li>
<li><a class="el" href="settings_xml.html#settings_xml_elements_entry">Entry</a></li>
<li><a class="el" href="settings_xml.html#settings_xml_elements_include">Include</a></li>
</ul>
<h2><a class="anchor" id="settings_xml_elements_section"></a>
Section</h2>
<p>A bigger section for different entries and groups.</p>
<p>The <code>&lt;Section&gt;</code> element is mapped to the <a class="el" href="namespace_qt_mvvm_1_1_settings_elements.html#struct_qt_mvvm_1_1_settings_elements_1_1_section" title="A bigger section for different entries and groups. ">QtMvvm::SettingsElements::Section</a>.</p>
<h3><a class="anchor" id="settings_xml_elements_section_attribs"></a>
Attributes</h3>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Name </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Default </th><th class="markdownTableHeadNone">Translated </th><th class="markdownTableHeadNone">Description </th></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">title </td><td class="markdownTableBodyNone">string </td><td class="markdownTableBodyNone"><code>"General"</code> </td><td class="markdownTableBodyNone">yes </td><td class="markdownTableBodyNone">The sections title. </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">icon </td><td class="markdownTableBodyNone">url </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone">An icon for the section. </td></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">tooltip </td><td class="markdownTableBodyNone">string </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">yes </td><td class="markdownTableBodyNone">A tooltip to describe what the section is about. </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">frontends </td><td class="markdownTableBodyNone"><a class="el" href="settings_xml.html#settings_xml_types_descriptor">descriptor</a> </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone"><em>[Internal]</em> A logical string describing the allowed frontends </td></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">selectors </td><td class="markdownTableBodyNone"><a class="el" href="settings_xml.html#settings_xml_types_descriptor">descriptor</a> </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone"><em>[Internal]</em> A logical string describing the allowed selectors </td></tr>
</table>
<h3><a class="anchor" id="settings_xml_elements_section_elements"></a>
Content</h3>
<p>Can be an arbitrary number of Elements from the following list. However, only one type of element is allowed. If you for example use <code>&lt;Entry&gt;</code> as first child, all other children must be of the same type as well:</p>
<ul>
<li>(Primary:) <a class="el" href="settings_xml.html#settings_xml_elements_group">Group</a></li>
<li><a class="el" href="settings_xml.html#settings_xml_elements_entry">Entry</a></li>
<li><a class="el" href="settings_xml.html#settings_xml_elements_include">Include</a></li>
</ul>
<h2><a class="anchor" id="settings_xml_elements_group"></a>
Group</h2>
<p>A logical group of settings entries.</p>
<p>The <code>&lt;Group&gt;</code> element is mapped to the <a class="el" href="namespace_qt_mvvm_1_1_settings_elements.html#struct_qt_mvvm_1_1_settings_elements_1_1_group" title="A logical group of settings entries. ">QtMvvm::SettingsElements::Group</a>. A special property of the group is, that when the <code>title</code> is not set, the group becomes hidden and instead all entries that are part of the group are simply shown as normal elements in the section, instead of organizing them into subgroups. If the title is empty, the tooltip is ignored, even if set. The descriptors however still apply.</p>
<h3><a class="anchor" id="settings_xml_elements_group_attribs"></a>
Attributes</h3>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Name </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Default </th><th class="markdownTableHeadNone">Translated </th><th class="markdownTableHeadNone">Description </th></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">title </td><td class="markdownTableBodyNone">string </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">yes </td><td class="markdownTableBodyNone">The groups title. </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">tooltip </td><td class="markdownTableBodyNone">string </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">yes </td><td class="markdownTableBodyNone">A tooltip to describe what the group is about. </td></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">frontends </td><td class="markdownTableBodyNone"><a class="el" href="settings_xml.html#settings_xml_types_descriptor">descriptor</a> </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone"><em>[Internal]</em> A logical string describing the allowed frontends </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">selectors </td><td class="markdownTableBodyNone"><a class="el" href="settings_xml.html#settings_xml_types_descriptor">descriptor</a> </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone"><em>[Internal]</em> A logical string describing the allowed selectors </td></tr>
</table>
<h3><a class="anchor" id="settings_xml_elements_group_elements"></a>
Content</h3>
<p>Can be an arbitrary number of Elements from the following list. However, only one type of element is allowed. If you for example use <code>&lt;Entry&gt;</code> as first child, all other children must be of the same type as well:</p>
<ul>
<li>(Primary:) <a class="el" href="settings_xml.html#settings_xml_elements_entry">Entry</a></li>
<li><a class="el" href="settings_xml.html#settings_xml_elements_include">Include</a></li>
</ul>
<h2><a class="anchor" id="settings_xml_elements_entry"></a>
Entry</h2>
<p>An entry in the settings to display and edit a value.</p>
<p>The <code>&lt;Entry&gt;</code> element is mapped to the <a class="el" href="namespace_qt_mvvm_1_1_settings_elements.html#struct_qt_mvvm_1_1_settings_elements_1_1_entry" title="An entry in the settings to display and edit a value. ">QtMvvm::SettingsElements::Entry</a>.</p>
<h3><a class="anchor" id="settings_xml_elements_entry_attribs"></a>
Attributes</h3>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Name </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Default </th><th class="markdownTableHeadNone">Translated </th><th class="markdownTableHeadNone">Description </th></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">key </td><td class="markdownTableBodyNone">string </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone">The <a class="elRef" target="_blank" doxygen="/home/sky/Qt/Docs/Qt-5.11.1/qtcore/qtcore.tags:https://doc.qt.io/qt-5/" href="https://doc.qt.io/qt-5/qsettings.html">QSettings</a> key this entry should handle. </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">type </td><td class="markdownTableBodyNone"><a class="el" href="settings_xml.html#settings_xml_types_type">type</a> </td><td class="markdownTableBodyNone"><code>"QString"</code> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone">The input view type (typically the actual data type) to show. </td></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">title </td><td class="markdownTableBodyNone">string </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">yes </td><td class="markdownTableBodyNone">A short title/label of the entry to give it a name. </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">tooltip </td><td class="markdownTableBodyNone">string </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">yes </td><td class="markdownTableBodyNone">A tooltip with more detailed information about the entry. </td></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">default </td><td class="markdownTableBodyNone">variant </td><td class="markdownTableBodyNone"><em>Invalid</em> </td><td class="markdownTableBodyNone"><code>trdefault</code> </td><td class="markdownTableBodyNone">A default value to display in case no value is in the settings yet. </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">trdefault </td><td class="markdownTableBodyNone">bool </td><td class="markdownTableBodyNone"><code>false</code> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone">If set to true, <code>default</code> will be translated. If not set or set to false, it will not be </td></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">frontends </td><td class="markdownTableBodyNone"><a class="el" href="settings_xml.html#settings_xml_types_descriptor">descriptor</a> </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone"><em>[Internal]</em> A logical string describing the allowed frontends </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">selectors </td><td class="markdownTableBodyNone"><a class="el" href="settings_xml.html#settings_xml_types_descriptor">descriptor</a> </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone"><em>[Internal]</em> A logical string describing the allowed selectors </td></tr>
</table>
<h3><a class="anchor" id="settings_xml_elements_entry_elements"></a>
Content</h3>
<p>Can be an arbitrary number of Elements from the following list. They can be mixed and in any order</p>
<ul>
<li><a class="el" href="settings_xml.html#settings_xml_elements_searchkey">SearchKey</a></li>
<li><a class="el" href="settings_xml.html#settings_xml_elements_property">Property</a></li>
</ul>
<h2><a class="anchor" id="settings_xml_elements_searchkey"></a>
SearchKey</h2>
<p>The <code>&lt;SearchKey&gt;</code> Element is converted to a string added to the <a class="el" href="namespace_qt_mvvm_1_1_settings_elements.html#ae02581cca1a57472c9d7303617410377" title="A list of keys to find this entry by when searching. ">QtMvvm::SettingsElements::Entry::searchKeys</a> property. A searchkey can only be a child of an Entry, and all the keys are merged to a list. It's a leaf element and must contain the string that becomes the search key. The contens of the search key will be translated.</p>
<h2><a class="anchor" id="settings_xml_elements_property"></a>
Property</h2>
<p>The <code>&lt;Property&gt;</code> Element is an XML description of a generic <a class="elRef" target="_blank" doxygen="/home/sky/Qt/Docs/Qt-5.11.1/qtcore/qtcore.tags:https://doc.qt.io/qt-5/" href="https://doc.qt.io/qt-5/qvariant.html">QVariant</a> property. Each property gets converted to a <a class="elRef" target="_blank" doxygen="/home/sky/Qt/Docs/Qt-5.11.1/qtcore/qtcore.tags:https://doc.qt.io/qt-5/" href="https://doc.qt.io/qt-5/qstring.html">QString</a> key and a <a class="elRef" target="_blank" doxygen="/home/sky/Qt/Docs/Qt-5.11.1/qtcore/qtcore.tags:https://doc.qt.io/qt-5/" href="https://doc.qt.io/qt-5/qvariant.html">QVariant</a> value that then becomes a property of the parent element. Properties can be children of entries, as well as properties and elements, as long as for the last two their type is <code>object</code></p>
<h3><a class="anchor" id="settings_xml_elements_property_attribs"></a>
Attributes</h3>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Name </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Default </th><th class="markdownTableHeadNone">Translated </th><th class="markdownTableHeadNone">Description </th></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">key </td><td class="markdownTableBodyNone">string </td><td class="markdownTableBodyNone"><em>Required</em> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone">The key of the property </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">type </td><td class="markdownTableBodyNone"><a class="el" href="settings_xml.html#settings_xml_types_type">type</a> </td><td class="markdownTableBodyNone"><em>Required</em> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone">The type of the properties value </td></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">tr </td><td class="markdownTableBodyNone">bool </td><td class="markdownTableBodyNone"><code>false</code> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone">Specify whether the properties value (content) should be translated. Does not apply to <code>list</code> or <code>object</code> types </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">ztr </td><td class="markdownTableBodyNone">bool </td><td class="markdownTableBodyNone"><code>false</code> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone">Like tr, but does not translate the text, only generate the translation in the ts file </td></tr>
</table>
<h3><a class="anchor" id="settings_xml_elements_property_elements"></a>
Content</h3>
<p>The content depend on the <code>type</code> attribute. The following tables shows which type leads to which kind of child element:</p>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Child Element </th></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">list </td><td class="markdownTableBodyNone">An arbitrary number of <a class="el" href="settings_xml.html#settings_xml_elements_element">Element</a> elements </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">object </td><td class="markdownTableBodyNone">An arbitrary number of <a class="el" href="settings_xml.html#settings_xml_elements_property">Property</a> elements </td></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><em>Others</em> </td><td class="markdownTableBodyNone">Has text content. The text content is interpreted as a value of the given type </td></tr>
</table>
<h2><a class="anchor" id="settings_xml_elements_element"></a>
Element</h2>
<p>The <code>&lt;Element&gt;</code> Element is an XML description of a generic <a class="elRef" target="_blank" doxygen="/home/sky/Qt/Docs/Qt-5.11.1/qtcore/qtcore.tags:https://doc.qt.io/qt-5/" href="https://doc.qt.io/qt-5/qvariant.html">QVariant</a> list value. A property of type <code>list</code> will have a number of elements as children that are converted to a list of <a class="elRef" target="_blank" doxygen="/home/sky/Qt/Docs/Qt-5.11.1/qtcore/qtcore.tags:https://doc.qt.io/qt-5/" href="https://doc.qt.io/qt-5/qvariant.html">QVariant</a> values. Each element can be of a different type, but typically they all are of the same.</p>
<h3><a class="anchor" id="settings_xml_elements_element_attribs"></a>
Attributes</h3>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Name </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Default </th><th class="markdownTableHeadNone">Translated </th><th class="markdownTableHeadNone">Description </th></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">type </td><td class="markdownTableBodyNone"><a class="el" href="settings_xml.html#settings_xml_types_type">type</a> </td><td class="markdownTableBodyNone"><em>Required</em> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone">The type of the list element </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">tr </td><td class="markdownTableBodyNone">bool </td><td class="markdownTableBodyNone"><code>false</code> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone">Specify whether the element value (content) should be translated. Does not apply to <code>list</code> or <code>object</code> types </td></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">ztr </td><td class="markdownTableBodyNone">bool </td><td class="markdownTableBodyNone"><code>false</code> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone">Like tr, but does not translate the text, only generate the translation in the ts file </td></tr>
</table>
<h3><a class="anchor" id="settings_xml_elements_element_elements"></a>
Content</h3>
<p>The content depend on the <code>type</code> attribute. The following tables shows which type leads to which kind of child element:</p>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Child Element </th></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">list </td><td class="markdownTableBodyNone">An arbitrary number of <a class="el" href="settings_xml.html#settings_xml_elements_element">Element</a> elements </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">object </td><td class="markdownTableBodyNone">An arbitrary number of <a class="el" href="settings_xml.html#settings_xml_elements_property">Property</a> elements </td></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><em>Others</em> </td><td class="markdownTableBodyNone">Has text content. The text content is interpreted as a value of the given type </td></tr>
</table>
<h2><a class="anchor" id="settings_xml_elements_include"></a>
Include</h2>
<p>An <code>&lt;Include&gt;</code> element is a reference to a different file to be included at that point. When the parser reaches an include, it continues to read the included file as if it was a part of the original XML document. Because of that the root element of an included settings file must not be <code>&lt;SettingsConfig&gt;</code>, but instead the expected primary child of the current parent element. For example, if the include element is a child of a <code>&lt;Section&gt;</code>, then the root element must be a <code>&lt;Group&gt;</code> element (Each element that support includes as one child type marked as primary). It is possible to specify an include element in another included document.</p>
<h3><a class="anchor" id="settings_xml_elements_include_attribs"></a>
Attributes</h3>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Name </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Default </th><th class="markdownTableHeadNone">Translated </th><th class="markdownTableHeadNone">Description </th></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">optional </td><td class="markdownTableBodyNone">bool </td><td class="markdownTableBodyNone"><code>false</code> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone">An optional include. If the file cannot be found it is skipped instead of aborting with an error </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">frontends </td><td class="markdownTableBodyNone"><a class="el" href="settings_xml.html#settings_xml_types_descriptor">descriptor</a> </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone"><em>[Internal]</em> A logical string describing the allowed frontends </td></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">selectors </td><td class="markdownTableBodyNone"><a class="el" href="settings_xml.html#settings_xml_types_descriptor">descriptor</a> </td><td class="markdownTableBodyNone"><em>Empty</em> </td><td class="markdownTableBodyNone">no </td><td class="markdownTableBodyNone"><em>[Internal]</em> A logical string describing the allowed selectors </td></tr>
</table>
<h3><a class="anchor" id="settings_xml_elements_include_elements"></a>
Content</h3>
<p>The content of the include element must be a path to an XML file to be read as include. If the path is relative, it is resolved relative to the directory of the current file (the one that contains the include directive). It is possible to use a path with file selectors. If the file could not be found, the parser will fail, unless the include is marked as optional.</p>
<h1><a class="anchor" id="settings_xml_types"></a>
Attribute and Value types</h1>
<p>In the above element descriptions a number of types are specified. Most are very basic types, but some need some more explanation to them.</p>
<h2><a class="anchor" id="settings_xml_types_basic"></a>
Basic Types</h2>
<p>The following table lists all basic types that don't need much explanation:</p>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">string </td><td class="markdownTableBodyNone">A simple string </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">bool </td><td class="markdownTableBodyNone">A boolean value. Allowed values are <code>true</code> and <code>false</code> </td></tr>
<tr class="markdownTableBody" class="markdownTableRowOdd">
<td class="markdownTableBodyNone">url </td><td class="markdownTableBodyNone">A standard XML encoded URL </td></tr>
<tr class="markdownTableBody" class="markdownTableRowEven">
<td class="markdownTableBodyNone">variant </td><td class="markdownTableBodyNone">A string that is read by C++ as string and then stored as <a class="elRef" target="_blank" doxygen="/home/sky/Qt/Docs/Qt-5.11.1/qtcore/qtcore.tags:https://doc.qt.io/qt-5/" href="https://doc.qt.io/qt-5/qvariant.html">QVariant</a>. It thus must be a string convertible to the desired type via <a class="elRef" target="_blank" doxygen="/home/sky/Qt/Docs/Qt-5.11.1/qtcore/qtcore.tags:https://doc.qt.io/qt-5/" href="https://doc.qt.io/qt-5/qvariant.html">QVariant</a> </td></tr>
</table>
<h2><a class="anchor" id="settings_xml_types_type"></a>
type</h2>
<p>The <code>type</code> type must be a simple string that corresponds to a C++ type name (or special ui type, for entry elements). It defines the actual type of for example the default of the <code>&lt;Entry&gt;</code> element or the contents of a <code>&lt;Property&gt;</code> element. Typical values would be:</p>
<ul>
<li><a class="elRef" target="_blank" doxygen="/home/sky/Qt/Docs/Qt-5.11.1/qtcore/qtcore.tags:https://doc.qt.io/qt-5/" href="https://doc.qt.io/qt-5/qstring.html">QString</a> or string</li>
<li><a class="elRef" target="_blank" doxygen="/home/sky/Qt/Docs/Qt-5.11.1/qtcore/qtcore.tags:https://doc.qt.io/qt-5/" href="https://doc.qt.io/qt-5/qurl.html">QUrl</a> or url</li>
<li>int</li>
<li>double or number</li>
<li>bool</li>
<li><a class="elRef" target="_blank" doxygen="/home/sky/Qt/Docs/Qt-5.11.1/qtcore/qtcore.tags:https://doc.qt.io/qt-5/" href="https://doc.qt.io/qt-5/qdatetime.html">QDateTime</a> or datetime</li>
<li><a class="el" href="settings_xml.html#settings_xml_types_action">action</a></li>
<li>list or selection</li>
<li>radiolist</li>
<li>...</li>
</ul>
<p>The type you need depends on what kind of data you want to represent via the XML elements. But remember that all types you use must be convertible from a simple string.</p>
<h2><a class="anchor" id="settings_xml_types_descriptor"></a>
descriptor</h2>
<p>A descripter is a simplified string of a boolean logic statement. It us used for the <code>frontend</code> and <code>selectors</code> attributes of various elements. The general idea is that these descriptors serve as "filters". This allows you to create one xml file for all platforms and frontends, by excluding specific elements for specific configurations. See <a class="el" href="class_qt_mvvm_1_1_i_settings_setup_loader.html#a75b197a1c259e4a7a23498f594a9ec0c" title="Loads the settings setup from the given file. ">QtMvvm::ISettingsSetupLoader::loadSetup</a>.</p>
<p>The allowed symbols and syntax depend on the attribute the descriptor is used for:</p>
<h3><a class="anchor" id="settings_xml_types_descriptor_frontend"></a>
frontend descriptor</h3>
<p>The frontend is the name of the GUI implementation beeing used (For example <code>widgest</code> for the QWidgets based gui, and <code>quick</code> for the <a class="elRef" target="_blank" doxygen="/home/sky/Qt/Docs/Qt-5.11.1/qtcore/qtcore.tags:https://doc.qt.io/qt-5/" href="https://doc.qt.io/qt-5/qt.html">Qt</a> Quick Controls 2 gui). Must be a string of the following format:</p>
<div class="fragment"><div class="line">&lt;frontend&gt;[|&lt;frontend&gt;...]</div></div><!-- fragment --><p>With <code>&lt;frontend&gt;</code> beeing the name of the frontend the element should be visible for. It's basically a list of allowed frontend as simple string. If the attribute is not specified, the element is visible on all frontends.</p>
<h3><a class="anchor" id="settings_xml_types_descriptor_selectors"></a>
selectors descriptor</h3>
<p>The selectors are active file selectors (of the <a class="elRef" target="_blank" doxygen="/home/sky/Qt/Docs/Qt-5.11.1/qtcore/qtcore.tags:https://doc.qt.io/qt-5/" href="https://doc.qt.io/qt-5/qfileselector.html">QFileSelector</a> class). By specifiying this attribute you can set selectors that must be active for the element to be visible. This can for example be used to show a specific element on one platform only. Must be a string of the following format:</p>
<div class="fragment"><div class="line">&lt;selector&gt;[&amp;&lt;selector&gt;...][|&lt;frontend&gt;[&amp;&lt;selector&gt;...]...]</div></div><!-- fragment --><p>With <code>&lt;selector&gt;</code> beeing the names of the selectors that must be set. It's basically a bunch of or condiditions around and conditions. This is a very reduced boolean logic, but it should be enough to create the desired filters. For example, you may want to show an element only on windows or on android when the material design is used. The resulting string would be: <code>windows|android&amp;material</code>.</p>
<h2><a class="anchor" id="settings_xml_types_action"></a>
action</h2>
<p>The action type is meant as a placeholder for a pressable button. An action edit will simply display a button or similar, and instead of representing a value in the settings, pressing it will trigger <a class="el" href="class_qt_mvvm_1_1_settings_view_model.html#a3da983a9fab974d1428f757dde675945" title="Is called when an action type edit is pressed. ">QtMvvm::SettingsViewModel::callAction</a>. The Entries <code>key</code> attribute is passed as the first parameter to the method. The parameters can be specified by adding a <code>&lt;Property&gt;</code> to the entry with the key <code>args</code> and the type <code>object</code>. The property of this object are the elements of the map passed as the second parameter.</p>
<h1><a class="anchor" id="settings_xml_sample"></a>
Sample settings XML file</h1>
<p>The following code block is a sample settings XML file. It is the same that is beeing used in the example application.</p>
<div class="fragment"><div class="line">&lt;?<span class="keyword">xml</span> <span class="keyword">version</span>=<span class="stringliteral">&quot;1.0&quot;</span> <span class="keyword">encoding</span>=<span class="stringliteral">&quot;UTF-8&quot;</span>?&gt;</div><div class="line">&lt;<span class="keywordtype">SettingsConfig</span> <span class="keyword">allowSearch</span>=<span class="stringliteral">&quot;true&quot;</span> <span class="keyword">allowRestore</span>=<span class="stringliteral">&quot;true&quot;</span>&gt;</div><div class="line"> <span class="comment">&lt;!--Include optional=&quot;true&quot;&gt;/absolute/include/path.xml&lt;/Include--&gt;</span></div><div class="line"> &lt;<span class="keywordtype">Category</span>&gt;</div><div class="line"> &lt;<span class="keywordtype">Section</span>&gt;</div><div class="line"> &lt;<span class="keywordtype">Group</span>&gt;</div><div class="line"> &lt;<span class="keywordtype">Entry</span> <span class="keyword">key</span>=<span class="stringliteral">&quot;prop1&quot;</span></div><div class="line"> <span class="keyword">type</span>=<span class="stringliteral">&quot;bool&quot;</span></div><div class="line"> <span class="keyword">title</span>=&quot;&amp;<span class="keyword">amp</span>;<span class="keyword">Check</span> <span class="keyword">me</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> tooltip=&quot;</span><span class="keyword">I</span> <span class="keyword">am</span> <span class="keyword">a</span> <span class="keyword">checkbox</span>!<span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> default=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;SearchKey&gt;property&lt;/SearchKey&gt;</span></div><div class="line"><span class="stringliteral"> &lt;SearchKey&gt;bool&lt;/SearchKey&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">qtmvvm_preview</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">bool</span><span class="stringliteral">&quot;&gt;true&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Entry&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Entry key=&quot;</span><span class="keyword">prop2</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> title=&quot;</span><span class="keyword">Enter</span> <span class="keyword">a</span> &amp;<span class="keyword">amp</span>;<span class="keyword">name</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;SearchKey&gt;property&lt;/SearchKey&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">placeholderText</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Enter a nice name&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">qtmvvm_preview</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Your current name: %1&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Entry&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Group&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Group title=&quot;</span><span class="keyword">Sub-Group</span><span class="stringliteral">&quot; tooltip=&quot;</span><span class="keyword">This</span> <span class="keyword">is</span> <span class="keyword">a</span> <span class="keyword">tooltip</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Entry key=&quot;</span><span class="keyword">prop3</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> type=&quot;</span><span class="keyword">action</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> title=&quot;</span><span class="keyword">Open</span> &amp;<span class="keyword">amp</span>;<span class="keyword">system</span> <span class="keyword">settings</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> tooltip=&quot;</span><span class="keyword">Pressing</span> <span class="keyword">this</span> <span class="keyword">action</span> <span class="keyword">will</span> <span class="keyword">open</span> <span class="keyword">the</span> <span class="keyword">system</span> <span class="keyword">settings</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">text</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot;&gt;Trigger Action&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">args</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">object</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">hint</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;You can use this to trigger whatever kind of action you need&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Entry&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Entry key=&quot;</span><span class="keyword">prop4</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> type=&quot;</span><span class="keyword">selection</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> title=&quot;</span><span class="keyword">Select</span> <span class="keyword">a</span> &amp;<span class="keyword">amp</span>;<span class="keyword">mode</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> default=&quot;</span><span class="keyword">Variant</span> <span class="keyword">B</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> trdefault=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">listElements</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">list</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Element type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Variant A&lt;/Element&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Element type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Variant B&lt;/Element&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Element type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Variant C&lt;/Element&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">qtmvvm_preview</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Current value: %1&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Entry&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Group&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Section&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Section title=&quot;</span><span class="keyword">Another</span> <span class="keyword">Section</span><span class="stringliteral">&quot; icon=&quot;</span><span class="stringliteral">&quot; tooltip=&quot;</span><span class="keyword">This</span> <span class="keyword">is</span> <span class="keyword">another</span> <span class="keyword">section</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Entry key=&quot;</span><span class="keyword">prop5</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> type=&quot;</span><span class="keyword">double</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> title=&quot;</span><span class="keyword">Enter</span> <span class="keyword">a</span> &amp;<span class="keyword">amp</span>;<span class="keyword">value</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> tooltip=&quot;</span><span class="keyword">The</span> <span class="keyword">value</span> <span class="keyword">must</span> <span class="keyword">be</span> <span class="keyword">between</span> 0 <span class="keyword">and</span> 1<span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> default=&quot;</span>0.0<span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">minimum</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">double</span><span class="stringliteral">&quot;&gt;0.0&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">maximum</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">double</span><span class="stringliteral">&quot;&gt;1.0&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">qtmvvm_preview</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Current value: %L1&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Entry&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Entry key=&quot;</span><span class="keyword">prop6</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> type=&quot;</span><span class="keyword">selection</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> title=&quot;</span><span class="keyword">Select</span> <span class="keyword">a</span> &amp;<span class="keyword">amp</span>;<span class="keyword">mode</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> default=&quot;</span>3<span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">listElements</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">list</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Element type=&quot;</span><span class="keyword">object</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">name</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Value A&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">value</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">int</span><span class="stringliteral">&quot;&gt;1&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Element&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Element type=&quot;</span><span class="keyword">object</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">name</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Value B&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">value</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">int</span><span class="stringliteral">&quot;&gt;2&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Element&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Element type=&quot;</span><span class="keyword">object</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">name</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Value C&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">value</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">int</span><span class="stringliteral">&quot;&gt;4&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Element&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Element type=&quot;</span><span class="keyword">object</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">name</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Value A+B&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">value</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">int</span><span class="stringliteral">&quot;&gt;3&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Element&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Element type=&quot;</span><span class="keyword">object</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">name</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Value A+C&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">value</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">int</span><span class="stringliteral">&quot;&gt;5&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Element&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Element type=&quot;</span><span class="keyword">object</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">name</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Value B+C&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">value</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">int</span><span class="stringliteral">&quot;&gt;6&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Element&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Element type=&quot;</span><span class="keyword">object</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">name</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Value A+B+C&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">value</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">int</span><span class="stringliteral">&quot;&gt;7&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Element&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">qtmvvm_preview</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Current value: %1&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Entry&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Section&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Category&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Category title=&quot;</span><span class="keyword">Another</span> <span class="keyword">main</span> <span class="keyword">category</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Entry key=&quot;</span><span class="keyword">prop7</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> type=&quot;</span><span class="keyword">int</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> title=&quot;</span><span class="keyword">Enter</span> <span class="keyword">a</span> &amp;<span class="keyword">amp</span>;<span class="keyword">number</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> default=&quot;</span>42<span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">qtmvvm_preview</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; ztr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Is set to %n unit(s)&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Entry&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Entry key=&quot;</span><span class="keyword">prop8</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> type=&quot;</span><span class="keyword">selection</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> title=&quot;</span><span class="keyword">Select</span> <span class="keyword">a</span> &amp;<span class="keyword">amp</span>;<span class="keyword">mode</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> default=&quot;</span><span class="keyword">Text</span> 2<span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> trdefault=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">editable</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">bool</span><span class="stringliteral">&quot;&gt;true&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">listElements</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">list</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Element type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Text 1&lt;/Element&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Element type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;Text 2&lt;/Element&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Entry&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Entry key=&quot;</span><span class="keyword">prop9</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> type=&quot;</span><span class="keyword">url</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> title=&quot;</span><span class="keyword">Enter</span> <span class="keyword">a</span> &amp;<span class="keyword">amp</span>;<span class="keyword">website</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">placeholderText</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot; tr=&quot;</span><span class="keyword">true</span><span class="stringliteral">&quot;&gt;https://example.org/test&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Entry&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Entry key=&quot;</span><span class="keyword">prop10</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> type=&quot;</span><span class="keyword">QFont</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> title=&quot;</span><span class="keyword">Choose</span> <span class="keyword">a</span> &amp;<span class="keyword">amp</span>;<span class="keyword">font</span><span class="stringliteral">&quot; /&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Entry key=&quot;</span><span class="keyword">prop12</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> type=&quot;</span><span class="keyword">range</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> title=&quot;</span>&amp;<span class="keyword">amp</span>;<span class="keyword">Volume</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> default=&quot;</span>50<span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">minimum</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">int</span><span class="stringliteral">&quot;&gt;0&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">maximum</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">int</span><span class="stringliteral">&quot;&gt;100&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">valueFormat</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot;&gt;%1 %&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Entry&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Entry key=&quot;</span><span class="keyword">prop13</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> type=&quot;</span><span class="keyword">QTime</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> title=&quot;</span><span class="keyword">Choose</span> <span class="keyword">a</span> <span class="keyword">time</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> default=&quot;</span>14:30<span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">qtmvvm_preview</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot;&gt;Selected time: %1&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">qtmvvm_dateformat</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">int</span><span class="stringliteral">&quot;&gt;1&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Entry&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Entry key=&quot;</span><span class="keyword">prop14</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> type=&quot;</span><span class="keyword">QDate</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> title=&quot;</span><span class="keyword">Choose</span> <span class="keyword">a</span> <span class="keyword">date</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> default=&quot;</span>2018-10-10<span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">qtmvvm_preview</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot;&gt;Selected date: %1&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">qtmvvm_dateformat</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot;&gt;dd. MMMM yyyy&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Entry&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Entry key=&quot;</span><span class="keyword">prop15</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> type=&quot;</span><span class="keyword">QDateTime</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> title=&quot;</span><span class="keyword">Choose</span> <span class="keyword">a</span> <span class="keyword">date</span> <span class="keyword">and</span> <span class="keyword">time</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> default=&quot;</span>2018-10-10<span class="keyword">T14:30</span><span class="stringliteral">&quot;&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Property key=&quot;</span><span class="keyword">qtmvvm_preview</span><span class="stringliteral">&quot; type=&quot;</span><span class="keyword">string</span><span class="stringliteral">&quot;&gt;Selected date and time: %1&lt;/Property&gt;</span></div><div class="line"><span class="stringliteral"> &lt;/Entry&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Entry key=&quot;</span><span class="keyword">prop16</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> type=&quot;</span><span class="keyword">QColor</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> title=&quot;</span><span class="keyword">Choose</span> <span class="keyword">a</span> <span class="keyword">color</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> default=&quot;</span>#<span class="keyword">AA00FF</span><span class="stringliteral">&quot; /&gt;</span></div><div class="line"><span class="stringliteral"> &lt;Entry key=&quot;</span><span class="keyword">propErr</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> type=&quot;</span><span class="keyword">non-existant-type</span><span class="stringliteral">&quot;</span></div><div class="line"><span class="stringliteral"> title=&quot;</span><span class="keyword">Non</span> <span class="keyword">existing</span> <span class="keyword">type</span>&quot; /&gt;</div><div class="line"> &lt;/<span class="keywordtype">Category</span>&gt;</div><div class="line">&lt;/<span class="keywordtype">SettingsConfig</span>&gt;</div></div><!-- fragment --><h1><a class="anchor" id="settings_xml_xsd"></a>
The XSD for the settings files</h1>
<p>The following file is the XSD the parser operates on. You can use it to verify your settings xml files.</p>
<div class="fragment"><div class="line">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</div><div class="line">&lt;xs:schema xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot;</div><div class="line"> xmlns:qxg=&quot;https://skycoder42.de/xml/schemas/QXmlCodeGen&quot;&gt;</div><div class="line"> &lt;!-- QXG Definitions --&gt;</div><div class="line"> &lt;qxg:config class=&quot;SettingsConfigBase&quot;</div><div class="line"> prefix=&quot;Q_MVVMCORE_EXPORT&quot;</div><div class="line"> stdcompat=&quot;true&quot;</div><div class="line"> schemaUrl=&quot;qrc:/schemas/settingsconfig.xsd&quot;</div><div class="line"> visibility=&quot;public&quot;&gt;</div><div class="line"> &lt;qxg:include&gt;QtCore/QHash&lt;/qxg:include&gt;</div><div class="line"> &lt;qxg:include local=&quot;true&quot;&gt;prefix_p.h&lt;/qxg:include&gt;</div><div class="line"> &lt;/qxg:config&gt;</div><div class="line"> &lt;qxg:method name=&quot;finish_group_content&quot; type=&quot;GroupContentGroup&quot; asGroup=&quot;true&quot;/&gt;</div><div class="line"> &lt;qxg:method name=&quot;finish_section_content&quot; type=&quot;SectionContentGroup&quot; asGroup=&quot;true&quot;/&gt;</div><div class="line"> &lt;qxg:method name=&quot;finish_category_content&quot; type=&quot;CategoryContentGroup&quot; asGroup=&quot;true&quot;/&gt;</div><div class="line"> &lt;qxg:method name=&quot;finish_settings_config_content&quot; type=&quot;SettingsConfigContentGroup&quot; asGroup=&quot;true&quot;/&gt;</div><div class="line"></div><div class="line"></div><div class="line"> &lt;!-- Basic property-like elements definitions --&gt;</div><div class="line"> &lt;xs:complexType name=&quot;ElementType&quot; mixed=&quot;true&quot; qxg:declare=&quot;true&quot; qxg:member=&quot;content&quot;&gt;</div><div class="line"> &lt;xs:sequence&gt;</div><div class="line"> &lt;xs:element maxOccurs=&quot;unbounded&quot; minOccurs=&quot;0&quot; type=&quot;PropertyType&quot; name=&quot;Property&quot; qxg:member=&quot;properties&quot;/&gt;</div><div class="line"> &lt;xs:element maxOccurs=&quot;unbounded&quot; minOccurs=&quot;0&quot; type=&quot;ElementType&quot; name=&quot;Element&quot; qxg:member=&quot;elements&quot;/&gt;</div><div class="line"> &lt;/xs:sequence&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:string&quot; name=&quot;type&quot; use=&quot;required&quot;/&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:boolean&quot; name=&quot;tr&quot; use=&quot;optional&quot; default=&quot;false&quot;/&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:boolean&quot; name=&quot;ztr&quot; use=&quot;optional&quot; default=&quot;false&quot;/&gt;</div><div class="line"> &lt;/xs:complexType&gt;</div><div class="line"></div><div class="line"> &lt;xs:complexType name=&quot;PropertyType&quot; qxg:declare=&quot;true&quot;&gt;</div><div class="line"> &lt;xs:complexContent&gt;</div><div class="line"> &lt;xs:extension base=&quot;ElementType&quot;&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:string&quot; name=&quot;key&quot; use=&quot;required&quot;/&gt;</div><div class="line"> &lt;/xs:extension&gt;</div><div class="line"> &lt;/xs:complexContent&gt;</div><div class="line"> &lt;/xs:complexType&gt;</div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"> &lt;!-- Group Definitions to build the elements from --&gt;</div><div class="line"> &lt;xs:attributeGroup name=&quot;SelectableContrainerInfo&quot;&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:string&quot; name=&quot;frontends&quot; use=&quot;optional&quot;/&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:string&quot; name=&quot;selectors&quot; use=&quot;optional&quot;/&gt;</div><div class="line"> &lt;/xs:attributeGroup&gt;</div><div class="line"></div><div class="line"> &lt;xs:attributeGroup name=&quot;BasicContainerInfo&quot;&gt;</div><div class="line"> &lt;xs:attributeGroup ref=&quot;SelectableContrainerInfo&quot; qxg:inherit=&quot;true&quot;/&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:string&quot; name=&quot;title&quot; use=&quot;optional&quot;/&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:string&quot; name=&quot;tooltip&quot; use=&quot;optional&quot;/&gt;</div><div class="line"> &lt;/xs:attributeGroup&gt;</div><div class="line"></div><div class="line"> &lt;xs:attributeGroup name=&quot;ExtendedContainerInfo&quot;&gt;</div><div class="line"> &lt;xs:attributeGroup ref=&quot;BasicContainerInfo&quot; qxg:inherit=&quot;true&quot;/&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:string&quot; name=&quot;icon&quot; use=&quot;optional&quot;/&gt;</div><div class="line"> &lt;/xs:attributeGroup&gt;</div><div class="line"></div><div class="line"> &lt;xs:group name=&quot;GroupContentGroup&quot;&gt;</div><div class="line"> &lt;xs:sequence&gt;</div><div class="line"> &lt;xs:choice maxOccurs=&quot;unbounded&quot; minOccurs=&quot;0&quot; qxg:member=&quot;content&quot;&gt;</div><div class="line"> &lt;xs:element type=&quot;IncludeType&quot; name=&quot;Include&quot;/&gt;</div><div class="line"> &lt;xs:element type=&quot;EntryType&quot; name=&quot;Entry&quot;/&gt;</div><div class="line"> &lt;/xs:choice&gt;</div><div class="line"> &lt;/xs:sequence&gt;</div><div class="line"> &lt;/xs:group&gt;</div><div class="line"></div><div class="line"> &lt;xs:group name=&quot;SectionContentGroup&quot;&gt;</div><div class="line"> &lt;xs:sequence&gt;</div><div class="line"> &lt;xs:choice maxOccurs=&quot;unbounded&quot; minOccurs=&quot;0&quot; qxg:member=&quot;content&quot;&gt;</div><div class="line"> &lt;xs:element type=&quot;IncludeType&quot; name=&quot;Include&quot;/&gt;</div><div class="line"> &lt;xs:element type=&quot;GroupType&quot; name=&quot;Group&quot;/&gt;</div><div class="line"> &lt;xs:element type=&quot;EntryType&quot; name=&quot;Entry&quot;/&gt;</div><div class="line"> &lt;/xs:choice&gt;</div><div class="line"> &lt;/xs:sequence&gt;</div><div class="line"> &lt;/xs:group&gt;</div><div class="line"></div><div class="line"> &lt;xs:group name=&quot;CategoryContentGroup&quot;&gt;</div><div class="line"> &lt;xs:sequence&gt;</div><div class="line"> &lt;xs:choice maxOccurs=&quot;unbounded&quot; minOccurs=&quot;0&quot; qxg:member=&quot;content&quot;&gt;</div><div class="line"> &lt;xs:element type=&quot;IncludeType&quot; name=&quot;Include&quot;/&gt;</div><div class="line"> &lt;xs:element type=&quot;SectionType&quot; name=&quot;Section&quot;/&gt;</div><div class="line"> &lt;xs:element type=&quot;GroupType&quot; name=&quot;Group&quot;/&gt;</div><div class="line"> &lt;xs:element type=&quot;EntryType&quot; name=&quot;Entry&quot;/&gt;</div><div class="line"> &lt;/xs:choice&gt;</div><div class="line"> &lt;/xs:sequence&gt;</div><div class="line"> &lt;/xs:group&gt;</div><div class="line"></div><div class="line"> &lt;xs:group name=&quot;SettingsConfigContentGroup&quot;&gt;</div><div class="line"> &lt;xs:sequence&gt;</div><div class="line"> &lt;xs:choice maxOccurs=&quot;unbounded&quot; minOccurs=&quot;0&quot; qxg:member=&quot;content&quot;&gt;</div><div class="line"> &lt;xs:element type=&quot;IncludeType&quot; name=&quot;Include&quot;/&gt;</div><div class="line"> &lt;xs:element type=&quot;CategoryType&quot; name=&quot;Category&quot;/&gt;</div><div class="line"> &lt;xs:element type=&quot;SectionType&quot; name=&quot;Section&quot;/&gt;</div><div class="line"> &lt;xs:element type=&quot;GroupType&quot; name=&quot;Group&quot;/&gt;</div><div class="line"> &lt;xs:element type=&quot;EntryType&quot; name=&quot;Entry&quot;/&gt;</div><div class="line"> &lt;/xs:choice&gt;</div><div class="line"> &lt;/xs:sequence&gt;</div><div class="line"> &lt;/xs:group&gt;</div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"> &lt;!-- Element definitions --&gt;</div><div class="line"> &lt;xs:complexType name=&quot;IncludeType&quot; qxg:declare=&quot;true&quot;&gt;</div><div class="line"> &lt;xs:simpleContent&gt;</div><div class="line"> &lt;xs:extension base=&quot;xs:string&quot; qxg:member=&quot;includePath&quot;&gt;</div><div class="line"> &lt;xs:attributeGroup ref=&quot;SelectableContrainerInfo&quot; qxg:inherit=&quot;true&quot;/&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:boolean&quot; name=&quot;optional&quot; default=&quot;false&quot; use=&quot;optional&quot;/&gt;</div><div class="line"> &lt;/xs:extension&gt;</div><div class="line"> &lt;/xs:simpleContent&gt;</div><div class="line"> &lt;/xs:complexType&gt;</div><div class="line"></div><div class="line"> &lt;xs:complexType name=&quot;EntryType&quot; qxg:declare=&quot;true&quot;&gt;</div><div class="line"> &lt;xs:sequence&gt;</div><div class="line"> &lt;xs:choice maxOccurs=&quot;unbounded&quot; minOccurs=&quot;0&quot; qxg:unordered=&quot;true&quot;&gt;</div><div class="line"> &lt;xs:element type=&quot;xs:string&quot; name=&quot;SearchKey&quot; qxg:member=&quot;searchKeys&quot;/&gt;</div><div class="line"> &lt;xs:element type=&quot;PropertyType&quot; name=&quot;Property&quot; qxg:member=&quot;properties&quot;/&gt;</div><div class="line"> &lt;/xs:choice&gt;</div><div class="line"> &lt;/xs:sequence&gt;</div><div class="line"> &lt;xs:attributeGroup ref=&quot;BasicContainerInfo&quot; qxg:inherit=&quot;true&quot;/&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:string&quot; name=&quot;key&quot; use=&quot;required&quot;/&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:string&quot; name=&quot;type&quot; use=&quot;required&quot;/&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:string&quot; name=&quot;default&quot; use=&quot;optional&quot; qxg:member=&quot;defaultValue&quot;/&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:boolean&quot; name=&quot;trdefault&quot; use=&quot;optional&quot; default=&quot;false&quot;/&gt;</div><div class="line"> &lt;/xs:complexType&gt;</div><div class="line"></div><div class="line"> &lt;xs:complexType name=&quot;GroupType&quot; qxg:declare=&quot;true&quot;&gt;</div><div class="line"> &lt;xs:group ref=&quot;GroupContentGroup&quot; qxg:inherit=&quot;true&quot; qxg:method=&quot;finish_group_content&quot;/&gt;</div><div class="line"> &lt;xs:attributeGroup ref=&quot;BasicContainerInfo&quot; qxg:inherit=&quot;true&quot;/&gt;</div><div class="line"> &lt;/xs:complexType&gt;</div><div class="line"></div><div class="line"> &lt;xs:complexType name=&quot;SectionType&quot; qxg:declare=&quot;true&quot;&gt;</div><div class="line"> &lt;xs:group ref=&quot;SectionContentGroup&quot; qxg:inherit=&quot;true&quot; qxg:method=&quot;finish_section_content&quot;/&gt;</div><div class="line"> &lt;xs:attributeGroup ref=&quot;ExtendedContainerInfo&quot; qxg:inherit=&quot;true&quot;/&gt;</div><div class="line"> &lt;/xs:complexType&gt;</div><div class="line"></div><div class="line"> &lt;xs:complexType name=&quot;CategoryType&quot; qxg:declare=&quot;true&quot;&gt;</div><div class="line"> &lt;xs:group ref=&quot;CategoryContentGroup&quot; qxg:inherit=&quot;true&quot; qxg:method=&quot;finish_category_content&quot;/&gt;</div><div class="line"> &lt;xs:attributeGroup ref=&quot;ExtendedContainerInfo&quot; qxg:inherit=&quot;true&quot;/&gt;</div><div class="line"> &lt;/xs:complexType&gt;</div><div class="line"></div><div class="line"> &lt;xs:complexType name=&quot;SettingsConfigType&quot; qxg:declare=&quot;true&quot;&gt;</div><div class="line"> &lt;xs:group ref=&quot;SettingsConfigContentGroup&quot; qxg:inherit=&quot;true&quot; qxg:method=&quot;finish_settings_config_content&quot;/&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:boolean&quot; name=&quot;allowSearch&quot; use=&quot;optional&quot; default=&quot;true&quot;/&gt;</div><div class="line"> &lt;xs:attribute type=&quot;xs:boolean&quot; name=&quot;allowRestore&quot; use=&quot;optional&quot; default=&quot;true&quot;/&gt;</div><div class="line"> &lt;/xs:complexType&gt;</div><div class="line"></div><div class="line"> &lt;!-- root elements--&gt;</div><div class="line"> &lt;xs:element name=&quot;SettingsConfig&quot; type=&quot;SettingsConfigType&quot;/&gt;</div><div class="line"> &lt;xs:element name=&quot;Category&quot; type=&quot;CategoryType&quot;/&gt;</div><div class="line"> &lt;xs:element name=&quot;Section&quot; type=&quot;SectionType&quot;/&gt;</div><div class="line"> &lt;xs:element name=&quot;Group&quot; type=&quot;GroupType&quot;/&gt;</div><div class="line"> &lt;xs:element name=&quot;Entry&quot; type=&quot;EntryType&quot;/&gt;</div><div class="line">&lt;/xs:schema&gt;</div></div><!-- fragment --> </div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Aug 8 2018 19:15:45 for QtMvvm by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>